From: adilger Date: Fri, 23 Jul 2004 20:48:21 +0000 (+0000) Subject: Land b1_2_smallfix onto b1_2 (20040723_1622) X-Git-Tag: v1_8_0_110~486^5~176 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=e210beb5875c10f783b6e692dbfef5fa83947d25;p=fs%2Flustre-release.git Land b1_2_smallfix onto b1_2 (20040723_1622) r=nic - don't close LustreDB during write_conf until it is done (3860) - fix typo in lconf for_each_profile (3821) - allow dumping logs from multiple threads at one time (3820) - don't allow multiple threads in OSC recovery(3812) - fix debug_size parameters (3864) - fix mds_postrecov to initialize import for llog ctxt (3121) - free recovery state on server during a forced cleanup (3571) - unregister_reply for resent reqs (3063) - loop back devices mounting and status check on 2.6 (3563) - fix resource-creation race that can provoke i_size == 0 (3513) - don't try to use bad inodes returned from MDS/OST fs lookup (3688) - more debugging for page-accounting assertion (3746) - return -ENOENT instead of asserting if ost getattr+unlink race (3558) - avoid deadlock after precreation failure (3758) - fix race and lock order deadlock in orphan handling (3450, 3750) - add /proc/.../recovery_status to obdfilter (3428) - lightweight CDEBUG infrastructure, debug daemon (3668) - change default OSC RPC parameters to be better on small clusters - turn off OST read cache for files smaller than 32MB - install man pages and include them in rpms (3100) - add new init script for (un)mounting lustre filesystems (2593) - run chkconfig in %post for init scripts (3701) - drop scimac NAL (unmaintained) - tune the read pipeline (3236) - provide read-ahead stats and refine rpc in flight stats (3328) --- diff --git a/lnet/archdep.m4 b/lnet/archdep.m4 index c705006..531a5bd 100644 --- a/lnet/archdep.m4 +++ b/lnet/archdep.m4 @@ -258,10 +258,12 @@ if test x$enable_modules != xno ; then AC_SUBST(LINUXRELEASE) moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel - AC_SUBST(moduledir) - modulefsdir='$(moduledir)/fs/$(PACKAGE)' + modulenetdir='$(moduledir)/net/$(PACKAGE)' + + AC_SUBST(moduledir) AC_SUBST(modulefsdir) + AC_SUBST(modulenetdir) # ------------ RELEASE -------------------------------- AC_MSG_CHECKING([for Lustre release]) @@ -402,38 +404,6 @@ if test x$enable_modules != xno ; then AC_SUBST(IBNAL) AC_SUBST(IBCPPFLAGS) - def_scamac=/opt/scali/include - AC_MSG_CHECKING([if ScaMAC support was requested]) - AC_ARG_WITH([scamac], - AC_HELP_STRING([--with-scamac=yes/no/path], - [Path to ScaMAC includes (default=/opt/scali/include)]), - [ - case $with_scamac in - yes) - AC_MSG_RESULT([yes]) - SCIMACCPPFLAGS="-I/opt/scali/include" - SCIMACNAL="scimacnal" - ;; - no) - AC_MSG_RESULT([no]) - SCIMACCPPFLAGS="" - SCIMACNAL="" - ;; - *) - AC_MSG_RESULT([yes]) - SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm" - SCIMACNAL="scimacnal" - ;; - esac - ],[ - AC_MSG_RESULT([no]) - SCIMACCPPFLAGS="" - SCIMACNAL="" - ]) - AC_SUBST(SCIMACCPPFLAGS) - AC_SUBST(SCIMACNAL) - # if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then - # ---------- Red Hat 2.4.18 has iobuf->dovary -------------- # But other kernels don't @@ -530,6 +500,7 @@ if test x$enable_modules != xno ; then ],[ AC_MSG_RESULT([no]) ]) + AC_MSG_CHECKING([if kernel defines cpumask_t]) LUSTRE_MODULE_TRY_COMPILE( [ @@ -543,6 +514,40 @@ if test x$enable_modules != xno ; then AC_MSG_RESULT([no]) ]) + # ---------- RHEL kernels define page_count in mm_inline.h + AC_MSG_CHECKING([if kernel has mm_inline.h header]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef page_count + #error mm_inline.h does not define page_count + #endif + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_MM_INLINE, 1, [mm_inline found]) + ],[ + AC_MSG_RESULT([no]) + ]) + + # ---------- inode->i_alloc_sem -------------- + AC_MSG_CHECKING([if struct inode has i_alloc_sem]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + #include + ],[ + #if defined(CONFIG_X86_64) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,24)) + #error "x86_64 down_read_trylock broken before 2.4.24" + #endif + struct inode i; + return (char *)&i.i_alloc_sem - (char *)&i; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_I_ALLOC_SEM, 1, [struct inode has i_alloc_sem]) + ],[ + AC_MSG_RESULT([no]) + ]) # ---------- modules? ------------------------ AC_MSG_CHECKING([for module support]) @@ -645,7 +650,6 @@ if test x$enable_modules != xno ; then esac # $BACKINGFS fi -AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal") AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal") AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal") AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal") diff --git a/lnet/build.m4 b/lnet/build.m4 index 93a370f..114478c 100644 --- a/lnet/build.m4 +++ b/lnet/build.m4 @@ -15,29 +15,20 @@ if test $ac_cv_sizeof_unsigned_long_long != 8 ; then fi # directories for binaries -ac_default_prefix= -bindir='${exec_prefix}/usr/bin' -sbindir='${exec_prefix}/usr/sbin' -includedir='${prefix}/usr/include' +ac_default_prefix=/usr -rootsbindir='${exec_prefix}/sbin' +# mount.lustre +rootsbindir='/sbin' AC_SUBST(rootsbindir) - # Directories for documentation and demos. -docdir='${prefix}/usr/share/doc/$(PACKAGE)' +docdir='${datadir}/doc/$(PACKAGE)' AC_SUBST(docdir) demodir='$(docdir)/demo' AC_SUBST(demodir) -pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples' +pkgexampledir='${pkglibdir}/examples' AC_SUBST(pkgexampledir) -pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre' +pymoddir='${pkglibdir}/python/Lustre' AC_SUBST(pymoddir) -# for substitution in lconf -PYMOD_DIR="/usr/lib/$PACKAGE/python" -AC_SUBST(PYMOD_DIR) -modulenetdir='$(moduledir)/net/$(PACKAGE)' -AC_SUBST(modulenetdir) - # ---------- BAD gcc? ------------ AC_PROG_RANLIB diff --git a/lnet/include/linux/kp30.h b/lnet/include/linux/kp30.h index 8f572de..69246b2 100644 --- a/lnet/include/linux/kp30.h +++ b/lnet/include/linux/kp30.h @@ -620,14 +620,14 @@ static inline int portal_ioctl_getdata(char *buf, char *end, void *arg) #define IOC_PORTAL_MIN_NR 30 #define IOC_PORTAL_PING _IOWR('e', 30, long) -#define IOC_PORTAL_GET_DEBUG _IOWR('e', 31, long) + #define IOC_PORTAL_CLEAR_DEBUG _IOWR('e', 32, long) #define IOC_PORTAL_MARK_DEBUG _IOWR('e', 33, long) #define IOC_PORTAL_PANIC _IOWR('e', 34, long) #define IOC_PORTAL_NAL_CMD _IOWR('e', 35, long) #define IOC_PORTAL_GET_NID _IOWR('e', 36, long) #define IOC_PORTAL_FAIL_NID _IOWR('e', 37, long) -#define IOC_PORTAL_SET_DAEMON _IOWR('e', 38, long) + #define IOC_PORTAL_LWT_CONTROL _IOWR('e', 39, long) #define IOC_PORTAL_LWT_SNAPSHOT _IOWR('e', 40, long) #define IOC_PORTAL_LWT_LOOKUP_STRING _IOWR('e', 41, long) diff --git a/lnet/include/linux/libcfs.h b/lnet/include/linux/libcfs.h index 6772e82..acf4045 100644 --- a/lnet/include/linux/libcfs.h +++ b/lnet/include/linux/libcfs.h @@ -20,6 +20,24 @@ extern unsigned int portal_stack; extern unsigned int portal_debug; extern unsigned int portal_printk; extern unsigned int portal_cerror; + +#include +struct ptldebug_header { + __u32 ph_len; + __u32 ph_flags; + __u32 ph_subsys; + __u32 ph_mask; + __u32 ph_cpu_id; + __u32 ph_sec; + __u64 ph_usec; + __u32 ph_stack; + __u32 ph_pid; + __u32 ph_extern_pid; + __u32 ph_line_num; +} __attribute__((packed)); + +#define PH_FLAG_FIRST_RECORD 1 + /* Debugging subsystems (32 bits, non-overlapping) */ #define S_UNDEFINED 0x00000001 #define S_MDC 0x00000002 diff --git a/lnet/klnds/Makefile.in b/lnet/klnds/Makefile.in index 12f0c24..b5ed168 100644 --- a/lnet/klnds/Makefile.in +++ b/lnet/klnds/Makefile.in @@ -1,7 +1,6 @@ @BUILD_GMNAL_TRUE@subdir-m += gmnal @BUILD_IBNAL_TRUE@subdir-m += ibnal @BUILD_QSWNAL_TRUE@subdir-m += qswnal -@BUILD_SCIMACNAL_TRUE@subdir-m += scimacnal subdir-m += socknal @INCLUDE_RULES@ diff --git a/lnet/klnds/autoMakefile.am b/lnet/klnds/autoMakefile.am index 60318ee..9d04a46 100644 --- a/lnet/klnds/autoMakefile.am +++ b/lnet/klnds/autoMakefile.am @@ -3,4 +3,4 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution -SUBDIRS = gmnal ibnal qswnal scimacnal socknal +SUBDIRS = gmnal ibnal qswnal socknal diff --git a/lnet/klnds/scimaclnd/Makefile.in b/lnet/klnds/scimaclnd/Makefile.in deleted file mode 100644 index c7eb4ac..0000000 --- a/lnet/klnds/scimaclnd/Makefile.in +++ /dev/null @@ -1,6 +0,0 @@ -MODULES := kscimacnal -kscimacnal-objs := scimacnal.o scimacnal_cb.o - -EXTRA_PRE_CFLAGS += @SCIMACCPPFLAGS@ - -@INCLUDE_RULES@ diff --git a/lnet/klnds/scimaclnd/README.scimacnal b/lnet/klnds/scimaclnd/README.scimacnal deleted file mode 100644 index e1ee3b5..0000000 --- a/lnet/klnds/scimaclnd/README.scimacnal +++ /dev/null @@ -1,42 +0,0 @@ - -scimacnal - A NAL for the Scali ScaMAC midlayer. - -The ScaMAC midlayer is a simplified API to the SCI high performance -interconnect (http://www.scali.com/, http://www.dolphinics.com/). - -In order to use this NAL you'll need to tune scimac to use larger buffers. -See scimac.conf in this directory for an example. - -You'll also need to edit portals/include/portals/lib-types.h and reduce -the MTU to 64kB (the limit of scimac), this diff should help: - -----------------------8<---------------------------------- ---- portals/include/portals/lib-types.h 27 Jul 2003 02:05:47 -0000 1.1.2.5 -+++ portals/include/portals/lib-types.h 14 Aug 2003 08:32:14 -0000 -@@ -137,8 +137,8 @@ - } lib_counters_t; - - /* temporary expedient: limit number of entries in discontiguous MDs */ --# define PTL_MTU (512<<10) --# define PTL_MD_MAX_IOV 128 -+# define PTL_MTU (64<<10) -+# define PTL_MD_MAX_IOV 16 - - struct lib_msg_t { - struct list_head msg_list; -----------------------8<---------------------------------- - -The NAL itself seems quite stable, though scimac has recovery bugs when -rebooting nodes at times (confirmed by the fact that the IP driver that -also uses scimac loses connectivity when scimacnal does). This is -solved by unloading lustre and reloading the scimac driver on the -affected nodes. - -Performance isn't great when it comes to latency, scimac seems to have -problems with per packet latencies (confirmed with the IP driver which -has similar behaviour). Bandwidth using large packets is pretty OK -(probably due to the fact that it hides the latency issues). - -TODO: -Routing isn't yet implemented. -Need some way to inform portals about our MTU. diff --git a/lnet/klnds/scimaclnd/autoMakefile.am b/lnet/klnds/scimaclnd/autoMakefile.am deleted file mode 100644 index 47433cd..0000000 --- a/lnet/klnds/scimaclnd/autoMakefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -if MODULES -if !CRAY_PORTALS -if BUILD_SCIMACNAL -modulenet_DATA = kscimacnal$(KMODEXT) -endif -endif -endif - -MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(ksimacnal-objs:%.o=%.c) scimacnal.h diff --git a/lnet/klnds/scimaclnd/scimac.conf b/lnet/klnds/scimaclnd/scimac.conf deleted file mode 100644 index bfb6d02..0000000 --- a/lnet/klnds/scimaclnd/scimac.conf +++ /dev/null @@ -1,35 +0,0 @@ -# Configuration file for the scimac driver - lustre friendly settings -# - -# The maximal number of message headers to use in the system. -scimac_max_no_hdrs = 32 - -# The maximal number of eager buffers to use in the system. -scimac_max_no_ebufs = 8 - -# The maximal size in bytes of each eager buffer. -scimac_max_ebuf_size = 65536 - -# Enable use of a kernel thread to defer reception of packets. -# Default is to use a tasklet (sw interrupt). -scimac_use_ulevel_recv = 1 - -# The maximal number of packets queued for transfer per path at any one time. -scimac_max_send_queuelen = 2000 - -# The packet retransmit time in milliseconds. -# The time elapsed since a packet was attempted sent until the packet is resent. -scimac_pkt_rexmit_time = 200 - -# The packet's maximal retransmit time in milliseconds. -# The total time that a packet will be attempted sent before it is dropped. -scimac_max_rexmit_time = 5000 - -# The lowest valid node identifier in the system. -scimac_min_nodeid_number = 0x100 - -# The largest valid node identifier in the system. -scimac_max_nodeid_number = 0xff00 - -# The incremental nodeid step in the system. -scimac_nodeid_increment = 0x100 diff --git a/lnet/klnds/scimaclnd/scimacnal.c b/lnet/klnds/scimaclnd/scimacnal.c deleted file mode 100644 index 5ffba31..0000000 --- a/lnet/klnds/scimaclnd/scimacnal.c +++ /dev/null @@ -1,247 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - - * Based on gmnal, which is based on ksocknal and qswnal - * - * This file is part of Portals, http://www.sf.net/projects/lustre/ - * - * Portals is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * Portals 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 Portals; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - - -#include "scimacnal.h" - -ptl_handle_ni_t kscimacnal_ni; -nal_t kscimacnal_api; - -kscimacnal_data_t kscimacnal_data; - -kpr_nal_interface_t kscimacnal_router_interface = { - kprni_nalid: SCIMACNAL, - kprni_arg: NULL, - kprni_fwd: kscimacnal_fwd_packet, -}; - - -int kscimacnal_cmd (struct portal_ioctl_data *data, void *private) -{ - LASSERT (data != NULL); - - switch (data->ioc_nal_cmd) { - case NAL_CMD_REGISTER_MYNID: - if(kscimacnal_lib.ni.nid == data->ioc_nid) { - break; - } - CDEBUG (D_IOCTL, "Can't change NID from "LPX64" to "LPX64")\n", kscimacnal_lib.ni.nid, data->ioc_nid); - return(-EINVAL); - default: - return(-EINVAL); - } - - return(0); -} - -static int kscimacnal_forward(nal_t *nal, - int id, - void *args, size_t args_len, - void *ret, size_t ret_len) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - lib_dispatch(nal_cb, ksci, id, args, ret); /* nal needs ksci */ - return PTL_OK; -} - - -static void kscimacnal_lock(nal_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - nal_cb->cb_cli(nal_cb,flags); -} - - -static void kscimacnal_unlock(nal_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - nal_cb->cb_sti(nal_cb,flags); -} - - -static int kscimacnal_shutdown(nal_t *nal, int ni) -{ - LASSERT (nal == &kscimacnal_api); - return 0; -} - - -static void kscimacnal_yield( nal_t *nal ) -{ - LASSERT (nal == &kscimacnal_api); - - if (current->need_resched) - schedule(); - return; -} - - -static nal_t *kscimacnal_init(int interface, ptl_pt_index_t ptl_size, - ptl_ac_index_t ac_size, ptl_pid_t requested_pid) -{ - int nnids = 512; /* FIXME: Need ScaMac funktion to get #nodes */ - - CDEBUG(D_NET, "calling lib_init with nid "LPX64" nnids %d\n", kscimacnal_data.ksci_nid, nnids); - lib_init(&kscimacnal_lib, kscimacnal_data.ksci_nid, 0, nnids,ptl_size, ac_size); - return &kscimacnal_api; -} - - -/* Called by kernel at module unload time */ -static void /*__exit*/ -kscimacnal_finalize(void) -{ - /* FIXME: How should the shutdown procedure really look? */ - kscimacnal_data.ksci_shuttingdown=1; - - PORTAL_SYMBOL_UNREGISTER(kscimacnal_ni); - - PtlNIFini(kscimacnal_ni); - lib_fini(&kscimacnal_lib); - - mac_finish(kscimacnal_data.ksci_machandle); - - CDEBUG (D_MALLOC, "done kmem %d\n", atomic_read (&portal_kmemory)); - - return; -} - - -/* Called by kernel at module insertion time */ -static int __init -kscimacnal_initialize(void) -{ - int rc; - unsigned long nid=0; - mac_handle_t *machandle = NULL; - - - CDEBUG (D_MALLOC, "start kmem %d\n", atomic_read (&portal_kmemory)); - - kscimacnal_api.forward = kscimacnal_forward; - kscimacnal_api.shutdown = kscimacnal_shutdown; - kscimacnal_api.yield = kscimacnal_yield; - kscimacnal_api.validate = NULL; /* our api validate is a NOOP */ - kscimacnal_api.lock= kscimacnal_lock; - kscimacnal_api.unlock= kscimacnal_unlock; - kscimacnal_api.nal_data = &kscimacnal_data; - - kscimacnal_lib.nal_data = &kscimacnal_data; - - memset(&kscimacnal_data, 0, sizeof(kscimacnal_data)); - - kscimacnal_data.ksci_cb = &kscimacnal_lib; - - /* We're not using this, but cli/sti callbacks does... ??? */ - spin_lock_init(&kscimacnal_data.ksci_dispatch_lock); - - /* FIXME: We only support one adapter for now */ - machandle = mac_init(0, MAC_SAPID_LUSTRE, kscimacnal_rx, - &kscimacnal_data); - - if(!machandle) { - CERROR("mac_init() failed\n"); - return -1; - } - - kscimacnal_data.ksci_machandle = machandle; - - /* Make sure the scimac MTU is tuned */ - if(mac_get_mtusize(machandle) < SCIMACNAL_MTU) { - CERROR("scimac mtu of %ld smaller than SCIMACNAL MTU of %d\n", - mac_get_mtusize(machandle), SCIMACNAL_MTU); - CERROR("Consult README.scimacnal for more information\n"); - mac_finish(machandle); - return -1; - } - - /* Get the node ID */ - /* mac_get_physaddrlen() is a function instead of define, sigh */ - LASSERT(mac_get_physaddrlen(machandle) <= sizeof(nid)); - if(mac_get_physaddr(machandle, (mac_physaddr_t *) &nid)) { - CERROR("mac_get_physaddr() failed\n"); - mac_finish(machandle); - return -1; - } - nid = ntohl(nid); - kscimacnal_data.ksci_nid = nid; - - - /* Initialize Network Interface */ - /* FIXME: What do the magic numbers mean? Documentation anyone? */ - rc = PtlNIInit(kscimacnal_init, 32, 4, 0, &kscimacnal_ni); - if (rc) { - CERROR("PtlNIInit failed %d\n", rc); - mac_finish(machandle); - return (-ENOMEM); - } - - /* Init command interface */ - rc = kportal_nal_register (SCIMACNAL, &kscimacnal_cmd, NULL); - if (rc != 0) { - CERROR ("Can't initialise command interface (rc = %d)\n", rc); - PtlNIFini(kscimacnal_ni); - mac_finish(machandle); - return (rc); - } - - - PORTAL_SYMBOL_REGISTER(kscimacnal_ni); - - /* We're done now, it's OK for the RX callback to do stuff */ - kscimacnal_data.ksci_init = 1; - - return 0; -} - - -MODULE_AUTHOR("Niklas Edmundsson "); -MODULE_DESCRIPTION("Kernel Scali ScaMAC SCI NAL v0.1"); -MODULE_LICENSE("GPL"); - -module_init (kscimacnal_initialize); -module_exit (kscimacnal_finalize); - -EXPORT_SYMBOL(kscimacnal_ni); diff --git a/lnet/klnds/scimaclnd/scimacnal.h b/lnet/klnds/scimaclnd/scimacnal.h deleted file mode 100644 index f132769..0000000 --- a/lnet/klnds/scimaclnd/scimacnal.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - */ - - -#ifndef _SCIMACNAL_H -#define _SCIMACNAL_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include /* For PAGE_SIZE */ - -#define DEBUG_SUBSYSTEM S_UNDEFINED - -#include -#include -#include -#include - -#include - -#ifndef MAC_SAPID_LUSTRE -#define MAC_SAPID_LUSTRE MAC_SAPID_TEST1 -#endif /* MAC_SAPID_LUSTRE */ - -/* scimac has an annoying MTU limit of 64k */ -#define SCIMACNAL_MTU 65536 -#if PTL_MTU > SCIMACNAL_MTU -#error Max MTU of ScaMAC is 64k, PTL_MTU is bigger. -#endif - -typedef struct { - mac_handle_t *handle; - mac_mblk_t *msg; - mac_msg_type_t type; - void *userdata; -} kscimacnal_rx_t; - - -typedef struct { - nal_cb_t *ktx_nal; - void *ktx_private; - lib_msg_t *ktx_cookie; - ptl_hdr_t ktx_hdr; - /* To be able to kunmap() kmap():ed pages */ - struct page *ktx_kpages[PTL_MD_MAX_IOV]; - int ktx_nmapped; -} kscimacnal_tx_t; - - -typedef struct { - char ksci_init; - char ksci_shuttingdown; - ptl_nid_t ksci_nid; - nal_cb_t *ksci_cb; - spinlock_t ksci_dispatch_lock; - mac_handle_t *ksci_machandle; -} kscimacnal_data_t; - -extern kscimacnal_data_t kscimacnal_data; -extern nal_t kscimacnal_api; -extern nal_cb_t kscimacnal_lib; - -void kscimacnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd); -void kscimacnal_rx(mac_handle_t *handle, mac_mblk_t *msg, mac_msg_type_t type, void *userdata); - - -#endif /* _SCIMACNAL_H */ diff --git a/lnet/klnds/scimaclnd/scimacnal_cb.c b/lnet/klnds/scimaclnd/scimacnal_cb.c deleted file mode 100644 index 52afb98..0000000 --- a/lnet/klnds/scimaclnd/scimacnal_cb.c +++ /dev/null @@ -1,601 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - - * - * This file is part of Portals, http://www.sf.net/projects/lustre/ - * - * Portals is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * Portals 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 Portals; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include "scimacnal.h" - -static int -kscimacnal_read (nal_cb_t *nal, void *private, - void *dst_addr, user_ptr src_addr, size_t len) -{ - CDEBUG(D_NET, "0x%Lx: reading %ld bytes from %p -> %p\n", - nal->ni.nid, (long)len, src_addr, dst_addr ); - memcpy( dst_addr, src_addr, len ); - return 0; -} - - -static int -kscimacnal_write(nal_cb_t *nal, void *private, - user_ptr dst_addr, void *src_addr, size_t len) -{ - CDEBUG(D_NET, "0x%Lx: writing %ld bytes from %p -> %p\n", - nal->ni.nid, (long)len, src_addr, dst_addr ); - memcpy( dst_addr, src_addr, len ); - return 0; -} - - -static void * -kscimacnal_malloc(nal_cb_t *nal, size_t len) -{ - void *buf; - - PORTAL_ALLOC(buf, len); - return buf; -} - - -static void -kscimacnal_free(nal_cb_t *nal, void *buf, size_t len) -{ - PORTAL_FREE(buf, len); -} - - -static void -kscimacnal_printf(nal_cb_t *nal, const char *fmt, ...) -{ - va_list ap; - char msg[256]; - - if (portal_debug & D_NET) { - va_start( ap, fmt ); - vsnprintf( msg, sizeof(msg), fmt, ap ); - va_end( ap ); - - printk("Lustre: CPUId: %d %s",smp_processor_id(), msg); - } -} - - -static void -kscimacnal_cli(nal_cb_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *data= nal->nal_data; - - spin_lock_irqsave(&data->ksci_dispatch_lock,*flags); -} - - -static void -kscimacnal_sti(nal_cb_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *data= nal->nal_data; - - spin_unlock_irqrestore(&data->ksci_dispatch_lock,*flags); -} - - -static int -kscimacnal_dist(nal_cb_t *nal, ptl_nid_t nid, unsigned long *dist) -{ - /* FIXME: Network distance has a meaning, but is there no easy - * way to figure it out (depends on routing) */ - - if ( nal->ni.nid == nid ) { - *dist = 0; - } else { - *dist = 1; - } - - return 0; -} - - -static -char * get_mac_error(mac_status_t status) -{ - switch(status) { - case MAC_MSG_STAT_OK: - return "MAC_MSG_STAT_OK"; - case MAC_MSG_STAT_FREED: - return "MAC_MSG_STAT_FREED"; - case MAC_MSG_STAT_ABORTED: - return "MAC_MSG_STAT_ABORTED"; - case MAC_MSG_STAT_TIMEDOUT: - return "MAC_MSG_STAT_TIMEDOUT"; - case MAC_MSG_STAT_NODEUNREACH: - return "MAC_MSG_STAT_NODEUNREACH"; - case MAC_MSG_STAT_NETDOWN: - return "MAC_MSG_STAT_NETDOWN"; - case MAC_MSG_STAT_RESET: - return "MAC_MSG_STAT_RESET"; - case MAC_MSG_STAT_INITFAILED: - return "MAC_MSG_STAT_INITFAILED"; - case MAC_MSG_STAT_SYNCFAILED: - return "MAC_MSG_STAT_SYNCFAILED"; - case MAC_MSG_STAT_BADPROTO: - return "MAC_MSG_STAT_BADPROTO"; - case MAC_MSG_STAT_NOBUFSPACE: - return "MAC_MSG_STAT_NOBUFSPACE"; - case MAC_MSG_STAT_CONGESTION: - return "MAC_MSG_STAT_CONGESTION"; - case MAC_MSG_STAT_OTHER: - return "MAC_MSG_STAT_OTHER"; - default: - return "Unknown error"; - } -} - - -/* FIXME add routing code here ? */ - -/* Called by ScaMac when transmission is complete (ie. message is released) */ -static void -kscimacnal_txrelease(mac_mblk_t *msg, mac_msg_status_t status, void *context) -{ - kscimacnal_tx_t *ktx = (kscimacnal_tx_t *)context; - int err=0, i; - - LASSERT (ktx != NULL); - /* Unmap any mapped pages */ - for(i=0; iktx_nmapped; i++) { - kunmap(ktx->ktx_kpages[i]); - } - - CDEBUG(D_NET, "kunmapped %d pages\n", ktx->ktx_nmapped); - - /* Euh, there is no feedback when transmission fails?! */ - switch(status) { - case MAC_MSG_STAT_OK: /* normal */ - break; - default: - CERROR("%s (%d):\n", get_mac_error(status), status); - err = -EIO; - break; - } - - lib_finalize(ktx->ktx_nal, ktx->ktx_private, ktx->ktx_cookie, - (err == 0) ? PTL_OK : PTL_FAIL); - - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); -} - - -/* Called by portals when it wants to send a message. - * Since ScaMAC has it's own TX thread we don't bother setting up our own. */ - -/* FIXME: Read comments in qswnal_cb.c for _sendmsg and fix return-on-error - * issues */ -static inline int -kscimacnal_sendmsg(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - struct iovec *payload_iov, - ptl_kiov_t *payload_kiov, - size_t payload_len) -{ - kscimacnal_tx_t *ktx=NULL; - kscimacnal_data_t *ksci = nal->nal_data; - int rc=0; - int buf_len = sizeof(ptl_hdr_t) + payload_len; - mac_mblk_t *msg=NULL, *lastblk, *newblk; - unsigned long physaddr; - - - CDEBUG(D_NET, "sending %d bytes from %p/%p to nid "LPX64" niov: %d\n", - payload_len, payload_iov, payload_kiov, nid, payload_niov); - - /* Basic sanity checks */ - LASSERT(ksci != NULL); - LASSERT(hdr != NULL); - LASSERT (payload_len == 0 || payload_niov > 0); - LASSERT (payload_niov <= PTL_MD_MAX_IOV); - /* It must be OK to kmap() if required */ - LASSERT (payload_kiov == NULL || !in_interrupt ()); - /* payload is either all vaddrs or all pages */ - LASSERT (!(payload_kiov != NULL && payload_iov != NULL)); - - /* Do real check if we can send this */ - if (buf_len > mac_get_mtusize(ksci->ksci_machandle)) { - CERROR("kscimacnal:request exceeds TX MTU size (%ld).\n", - mac_get_mtusize(ksci->ksci_machandle)); - return PTL_FAIL; - } - - - /* save transaction info for later finalize and cleanup */ - PORTAL_ALLOC(ktx, (sizeof(kscimacnal_tx_t))); - if (!ktx) { - return PTL_NOSPACE; - } - - ktx->ktx_nmapped = 0; /* Start with no mapped pages :) */ - - /* *SIGH* hdr is a stack variable in the calling function, so we - * need to copy it to a buffer. Zerocopy magic (or is it just - * deferred memcpy?) is annoying sometimes. */ - memcpy(&ktx->ktx_hdr, hdr, sizeof(ptl_hdr_t)); - - /* First, put the header in the main message mblk */ - msg = mac_alloc_mblk(&ktx->ktx_hdr, sizeof(ptl_hdr_t), - kscimacnal_txrelease, ktx); - if (!msg) { - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_NOSPACE; - } - mac_put_mblk(msg, sizeof(ptl_hdr_t)); - lastblk=msg; - - /* Allocate additional mblks for each iov as needed. - * Essentially lib_copy_(k)iov2buf with a twist or two */ - while (payload_len > 0) - { - ptl_size_t nob; - char *addr; - - LASSERT (payload_niov > 0); - - if(payload_iov != NULL) { - nob = MIN (payload_iov->iov_len, payload_len); - addr = payload_iov->iov_base; - } - else { - nob = MIN (payload_kiov->kiov_len, payload_len); - /* Bollocks. We need to handle paged IO for things to - * work but there is no good way to do this. We - * do it by kmap():ing all pages and keep them - * mapped until scimac is done with them. */ - /* FIXME: kunmap() on error */ - addr = kmap(payload_kiov->kiov_page); - ktx->ktx_kpages[ktx->ktx_nmapped++] = - payload_kiov->kiov_page; - } - /* We don't need a callback on the additional mblks, - * since all release callbacks seems to be called when - * the entire message has been sent */ - newblk=mac_alloc_mblk(addr, nob, NULL, NULL); - - if(!newblk) { - mac_free_msg(msg); - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_NOSPACE; - } - mac_put_mblk(newblk, nob); - mac_link_mblk(lastblk, newblk); - lastblk=newblk; - - payload_len -= nob; - payload_niov--; - if(payload_iov != NULL) { - payload_iov++; - } - else { - payload_kiov++; - } - } - - CDEBUG(D_NET, "kmapped %d pages\n", ktx->ktx_nmapped); - - ktx->ktx_nal = nal; - ktx->ktx_private = private; - ktx->ktx_cookie = cookie; - - CDEBUG(D_NET, "mac_send %d bytes to nid: 0x%Lx\n", buf_len, nid); - - physaddr = htonl(nid); - - if((rc=mac_send(ksci->ksci_machandle, msg, - (mac_physaddr_t *) &physaddr))) { - CERROR("kscimacnal: mac_send() failed, rc=%d\n", rc); - mac_free_msg(msg); - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_FAIL; - } - - return PTL_OK; -} - - -static int -kscimacnal_send (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - struct iovec *payload_iov, - size_t payload_nob) -{ - return (kscimacnal_sendmsg (nal, private, cookie, hdr, type, nid, pid, - payload_niov, payload_iov, NULL, payload_nob)); -} - -static int -kscimacnal_send_pages (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - ptl_kiov_t *payload_kiov, - size_t payload_nob) -{ - return (kscimacnal_sendmsg (nal, private, cookie, hdr, type, nid, pid, - payload_niov, NULL, payload_kiov, payload_nob)); -} - - -void -kscimacnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd) -{ - CERROR ("forwarding not implemented\n"); -} - - -/* Process a received portals packet */ -/* Called by the ScaMac RX thread when a packet is received */ -void -kscimacnal_rx(mac_handle_t *handle, mac_mblk_t *msg, mac_msg_type_t type, - void *userdata) -{ - ptl_hdr_t *hdr = NULL; - kscimacnal_rx_t krx; - mac_size_t size; - kscimacnal_data_t *ksci = userdata; - - LASSERT(ksci != NULL); - - if ( !ksci->ksci_init || ksci->ksci_shuttingdown || - type == MAC_MSG_TYPE_CTRL || type == MAC_MSG_TYPE_OTHER ) { - /* We're not interested in messages not for us, ignore */ - mac_free_msg(msg); - return; - } - - size = mac_msg_size(msg); - - CDEBUG(D_NET,"msg %p type %d, size %ld bytes (%ld mblks)\n", - msg, type, size, mac_msg_mblks(msg)); - - if( size < sizeof( ptl_hdr_t ) ) { - /* XXX what's this for? */ - if (ksci->ksci_shuttingdown) - return; - CERROR("kscimacnal: did not receive complete portal header," - "size= %ld\n", size); - /* Free the message before exiting */ - mac_free_msg(msg); - return; - } - - /* Provide everything we know */ - krx.handle = handle; - krx.msg = msg; - krx.type = type; - krx.userdata = userdata; - - /* mac_msg_next returns the next mblk with unread data */ - hdr = mac_get_mblk(mac_msg_next(msg), sizeof(ptl_hdr_t) ); - - if(!hdr) { - CERROR("kscimacnal: no data block in message %p\n", msg); - mac_free_msg(msg); - return; - } - - if ( hdr->dest_nid == kscimacnal_lib.ni.nid ) { - PROF_START(lib_parse); - /* sets wanted_len, iovs etc and calls our callback */ - lib_parse(&kscimacnal_lib, hdr, &krx); - PROF_FINISH(lib_parse); -#if 0 /* FIXME: Is it possible to detect this? */ - } else if (kgmnal_ispeer(hdr->dest_nid)) { - /* should have gone direct to peer */ - CERROR("dropping packet from 0x%llx to 0x%llx:" - "target is a peer\n", - hdr->src_nid, hdr->dest_nid); - kgmnal_requeue_rx(&krx); -#endif /* if 0 FIXME */ - } else { - /* forward to gateway */ - CERROR("forwarding not implemented, mynid=0x%llx dest=0x%llx\n", - kscimacnal_lib.ni.nid, hdr->dest_nid); - } - - mac_free_msg(msg); - - CDEBUG(D_NET, "msg %p: Done\n", msg); -} - - -/* Called by portals to process a recieved packet */ -inline static int -kscimacnal_recvmsg(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - struct iovec *iov, - ptl_kiov_t *kiov, - size_t mlen, - size_t rlen) -{ - kscimacnal_rx_t *krx = private; - mac_mblk_t *mblk; - void *src; - mac_size_t pkt_len; - ptl_size_t iovused=0; - char *base=NULL; - - LASSERT (krx != NULL); - LASSERT (krx->msg != NULL); - - CDEBUG(D_NET,"msg %p: mlen=%d, rlen=%d, niov=%d\n", - krx->msg, mlen, rlen, niov); - - /* What was actually received must be >= what sender claims to have - * sent. */ - LASSERT (mlen <= rlen); /* something is wrong if this isn't true */ - if (mac_msg_size(krx->msg) < sizeof(ptl_hdr_t)+mlen) { - /* We didn't receive everything lib thinks we did */ - CERROR("Bad message size: have %d, need %d + %d\n", - mac_msg_size(krx->msg), sizeof(ptl_hdr_t), mlen); - return (PTL_FAIL); - } - - /* It must be OK to kmap() if required */ - LASSERT (kiov == NULL || !in_interrupt ()); - /* Either all pages or all vaddrs */ - LASSERT (!(kiov != NULL && iov != NULL)); - - PROF_START(memcpy); - - /* mac_msg_next returns next mblk with unread data (ie. can - * be same mblk */ - while (mlen != 0 && (mblk = mac_msg_next(krx->msg))) { - pkt_len = mac_mblk_len(mblk); - src = mac_get_mblk(mblk, pkt_len); /* Next unread block */ - - CDEBUG(D_NET,"msg %p: mblk: %p pkt_len: %ld src: %p\n", - krx->msg, mblk, pkt_len, src); - - LASSERT(src != NULL); - - /* Essentially lib_copy_buf2(k)iov but with continuation - * support, we "gracefully" thrash the argument vars ;) */ - while (pkt_len > 0) { - ptl_size_t nob, len; - - LASSERT (niov > 0); - - if(iov != NULL) { - LASSERT(iovused < iov->iov_len); - len = iov->iov_len; - base = iov->iov_base; - } - else { - LASSERT(iovused < kiov->kiov_len); - len = kiov->kiov_len; - if(base==NULL) { - /* New page */ - base = kmap(kiov->kiov_page); - } - } - - nob = MIN (len-iovused, pkt_len); - CDEBUG(D_NET, "base: %p len: %d src: %p nob: %d " - "iovused: %d\n", - base, len, src, nob, iovused); - - memcpy (base+iovused, src, nob); - pkt_len -= nob; - src += nob; - - if(nob+iovused < len) { - /* We didn't use all of the iov */ - iovused+=nob; - } - else { - niov--; - iovused=0; - if(iov != NULL) { - iov++; - } - else { - kunmap(kiov->kiov_page); - base=NULL; - kiov++; - } - } - } - } - /* Just to make sure the last page is unmapped */ - if(kiov!=NULL && base!=NULL) { - kunmap(kiov->kiov_page); - base=NULL; - } - PROF_FINISH(memcpy); - - CDEBUG(D_NET, "Calling lib_finalize.\n"); - - PROF_START(lib_finalize); - lib_finalize(nal, private, cookie, PTL_OK); - PROF_FINISH(lib_finalize); - - CDEBUG(D_NET, "Done.\n"); - - return PTL_OK; -} - - -static int -kscimacnal_recv(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - struct iovec *iov, - size_t mlen, - size_t rlen) -{ - return (kscimacnal_recvmsg (nal, private, cookie, niov, iov, NULL, mlen, rlen)); -} - - -static int -kscimacnal_recv_pages (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - ptl_kiov_t *kiov, - size_t mlen, - size_t rlen) -{ - return (kscimacnal_recvmsg (nal, private, cookie, niov, NULL, kiov, mlen, rlen)); -} - - -nal_cb_t kscimacnal_lib = { - nal_data: &kscimacnal_data, /* NAL private data */ - cb_send: kscimacnal_send, - cb_send_pages: kscimacnal_send_pages, - cb_recv: kscimacnal_recv, - cb_recv_pages: kscimacnal_recv_pages, - cb_read: kscimacnal_read, - cb_write: kscimacnal_write, - cb_malloc: kscimacnal_malloc, - cb_free: kscimacnal_free, - cb_printf: kscimacnal_printf, - cb_cli: kscimacnal_cli, - cb_sti: kscimacnal_sti, - cb_dist: kscimacnal_dist -}; diff --git a/lnet/libcfs/Makefile.in b/lnet/libcfs/Makefile.in index 5d2688e..598adc1 100644 --- a/lnet/libcfs/Makefile.in +++ b/lnet/libcfs/Makefile.in @@ -1,5 +1,5 @@ MODULES = portals -libcfs-objs := debug.o lwt.o module.o proc.o +libcfs-objs := debug.o lwt.o module.o proc.o tracefile.o api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c) lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c) diff --git a/lnet/libcfs/Makefile.mk b/lnet/libcfs/Makefile.mk index c201429..8ecf3c9 100644 --- a/lnet/libcfs/Makefile.mk +++ b/lnet/libcfs/Makefile.mk @@ -6,4 +6,4 @@ include fs/lustre/portals/Kernelenv obj-y += libcfs.o -libcfs-objs := module.o proc.o debug.o lwt.o +libcfs-objs := module.o proc.o debug.o lwt.o tracefile.o diff --git a/lnet/libcfs/autoMakefile.am b/lnet/libcfs/autoMakefile.am index ac83541..cacd769 100644 --- a/lnet/libcfs/autoMakefile.am +++ b/lnet/libcfs/autoMakefile.am @@ -17,4 +17,4 @@ sources: MOSTLYCLEANFILES = *.o *.ko *.mod.c CLEANFILES = sources lib-*.c api-*.c -DIST_SOURCES = $(libcfs-objs:%.o=%.c) +DIST_SOURCES = $(libcfs-objs:%.o=%.c) *.h diff --git a/lnet/libcfs/debug.c b/lnet/libcfs/debug.c index 04a7496..01fbe35 100644 --- a/lnet/libcfs/debug.c +++ b/lnet/libcfs/debug.c @@ -53,6 +53,8 @@ #include #include +#include "tracefile.h" + #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) #include #endif @@ -79,368 +81,32 @@ atomic_t portal_kmemory = ATOMIC_INIT(0); EXPORT_SYMBOL(portal_kmemory); #endif -#define DEBUG_OVERFLOW 1024 -static char *debug_buf = NULL; -static unsigned long debug_size = 0; -static atomic_t debug_off_a = ATOMIC_INIT(0); -static int debug_wrapped; static DECLARE_WAIT_QUEUE_HEAD(debug_ctlwq); -#define DAEMON_SND_SIZE (64 << 10) - -/* - * used by the daemon to keep track the offset into debug_buffer for the next - * write to the file. Usually, the daemon is to write out buffer - * from debug_daemon_next_write upto debug_off - * variable usage - * Reader - portals_debug_msg() - * Writer - portals_debug_daemon() - * portals_debug_daemon_start() during daemon init time - * portals_debug_daemon_continue() to reset to debug_off - * portals_debug_clear_buffer() reset to debug_off for clear - * Note that *_start(), *_continue() & *clear_buffer() should serialized; - */ -static atomic_t debug_daemon_next_write; - -/* - * A debug_daemon can be in following states - * stopped - stopped state means there is no debug_daemon running. - * accordingly, it must be in paused state - * a daemon is in !stopped && !paused state after - * "lctl debug_daemon start" creates debug_daemon successfully - * Variable Usage - * Reader - portals_debug_daemon() - * portals_debug_set_daemon() routines - * Writer - portals_debug_set_daemon() routines - * portals_debug_daemon() on IO error - * paused - a debug_daemon state is changed from !paused into paused - * when "lctl debug_daemon paused" is issued - * "lctl debug_daemon continue" gets a daemon into !paused mode - * Reader - portals_debug_set_daemon() routines - * portals_debug_msg() - * Writer - portals_debug_set_daemon() on init - * portals_debug_daemon() - * - * Daemon state diagram. - * (stopped, paused) - * | <-- debug_daemon start - * V - * (!stopped, !paused) - * | <-- debug_daemon pause - * V - * (!stopped, paused) - * | <-- debug_daemon continue - * V - * (!stopped, !paused) - * | <-- debug_daemon stop - * V - * (stopped, paused) - * Overlapped - this is a state when CDEBUG is too fast for the daemon to - * write out the debug_bufferr. That is, debug_off is to - * overlap debug_daemon_next_write; - * Reader - portals_debug_msg() - * Writer - portals_debug_msg() - */ - -/* - * Description on Trace Daemon Synchronization - * - * Three categories of code are synchronizing between each other - * 1. lctl, portals_debug_set_daemon(), the user debug control code, - * as well as portals_debug_clear_buffer() - * 2. CDEBUG, portals_debug_msg(), the debug put messages routine - * 3. Daemon, portals_debug_daemon(), to write out debug log file - * - * - * Three different controls for synchronizations - * - * 1. debug_daemon_semaphore - * The usage of this semaphore is to serialize multiple lctl controls - * in manipulating debug daemon state. The semaphore serves as the - * gatekeeper to allow only one user control thread, at any giving time, - * to access debug daemon state and keeps the other user control requests - * in wait state until the current control request is serviced. - * - * 2. wait_queue_head_t lctl (paired with lctl_event flag) - * Lctl event is the event between portals_debug_set_daemon() and - * portals_debug_daemon(). Lctl is an indicator for portals_debug_daemon() - * to flush data out to file. portals_debug_daemon() is to use lctl event - * as signal channel to wakeup portals_debug_set_daemon() upon flush - * operation is done. - * - * Producer : - * portals_debug_daemon() uses to wake up - * portals_debug_set_daemon(), pause and stop, routines - * Consumer : - * portals_debug_set_daemon(), stop and pause operations, - * wait and sleep on the event - * - * 3. wait_queue_head_t daemon (paired with daemon_event flag) - * This is an event channel to wakeup portals_debug_daemon. Daemon - * wakes up to run whenever there is an event posted. Daemon handles - * 2 types of operations . 1. Writes data out to debug file, 2. Flushes - * file and terminates base on lctl event. - * File operation - - * Daemon is normally in a sleep state. - * Daemon is woken up through daemon event whenever CDEBUG is - * putting data over any 64K boundary. - * File flush and termination - - * On portals_debug_daemon_stop/pause() operations, lctl control - * is to wake up daemon through daemon event. - * - * We can't use sleep_on() and wake_up() to replace daemon event because - * portals_debug_daemon() must catch the wakeup operation posted by - * portals_debug_daemon_stop/pause(). Otherwise, stop and pause may - * stuck in lctl wait event. - * - * Producer : - * a. portals_debug_daemon_pause() and portals_debug_daemon_stop() - * uses the event to wake up portals_debug_daemon() - * b. portals_debug_msg() uses the event to wake up - * portals_debug_daemon() whenever the data output is acrossing - * a 64K bytes boundary. - * Consumer : - * portals_debug_daemon() wakes up upon daemon event. - * - * Sequence for portals_debug_daemon_stop() operation - * - * _Portals_debug_daemon_stop()_ _Daemon_ - * Wait_event(daemon) or running - * Paused = 1; - * Wakeup_event (daemon) - * Wait_event(lctl) - * Set force_flush flag if lctlevnt - * Flush data - * Wakeup_event (lctl) - * Wait_event(daemon) - * Stopped = 1; - * Wakeup_event (daemon) - * Wait_event(lctl) - * Exit daemon loop if (Stopped) - * Wakeup_event (lctl) - * Exit - * Return to user application - * - * - * _Portals_debug_msg()_ _Daemon_ - * Wait_event(daemon) or running - * If (WriteStart<64Kjournal_info; current->journal_info = NULL; - sprintf(debug_file_name, "%s.%ld", debug_file_path, CURRENT_SECONDS); - file = filp_open(debug_file_name, O_CREAT|O_EXCL|O_RDWR, 0644); - if (!file || IS_ERR(file)) { - CERROR("cannot open %s for dumping: %ld\n", debug_file_name, - PTR_ERR(file)); - GOTO(out, PTR_ERR(file)); - } else { - printk(KERN_ALERT "LustreError: dumping log to %s ...\n", - debug_file_name); - } + snprintf(debug_file_name, sizeof(debug_file_path) - 1, + "%s.%ld.%ld", debug_file_path, CURRENT_SECONDS, (long)arg); + tracefile_dump_all_pages(debug_file_name); - debug_off = atomic_read(&debug_off_a); - oldfs = get_fs(); - set_fs(get_ds()); - if (debug_wrapped) { - rc = file->f_op->write(file, debug_buf + debug_off + 1, - debug_size-debug_off-1, &file->f_pos); - rc += file->f_op->write(file, debug_buf, debug_off + 1, - &file->f_pos); - } else { - rc = file->f_op->write(file, debug_buf, debug_off,&file->f_pos); - } - printk("LustreError: wrote %d bytes\n", rc); - set_fs(oldfs); - - rc = file->f_op->fsync(file, file->f_dentry, 1); - if (rc) - CERROR("sync returns %d\n", rc); - filp_close(file, 0); -out: current->journal_info = journal_info; wake_up(&debug_ctlwq); return 0; } -int portals_debug_daemon(void *arg) -{ - struct file *file; - void *journal_info; - mm_segment_t oldfs; - unsigned long force_flush = 0; - unsigned long size, off, flags; - int rc; - - kportal_daemonize("ldebug_daemon"); - reparent_to_init(); - journal_info = current->journal_info; - current->journal_info = NULL; - - file = filp_open(debug_daemon_file_path, - O_CREAT|O_TRUNC|O_RDWR|O_LARGEFILE, 0644); - - if (!file || IS_ERR(file)) { - CERROR("cannot open %s for logging", debug_daemon_file_path); - GOTO(out1, PTR_ERR(file)); - } - printk(KERN_INFO "daemon dumping log to %s\n", debug_daemon_file_path); - - debug_daemon_state.overlapped = 0; - debug_daemon_state.stopped = 0; - - spin_lock_irqsave(&portals_debug_lock, flags); - off = atomic_read(&debug_off_a) + 1; - if (debug_wrapped) - off = (off >= debug_size)? 0 : off; - else - off = 0; - atomic_set(&debug_daemon_next_write, off); - atomic_set(&debug_daemon_state.paused, 0); - spin_unlock_irqrestore(&portals_debug_lock, flags); - - oldfs = get_fs(); - set_fs(KERNEL_DS); - while (1) { - unsigned long ending; - unsigned long start, tail; - long delta; - - debug_daemon_state.daemon_event = 0; - - ending = atomic_read(&debug_off_a); - start = atomic_read(&debug_daemon_next_write); - - /* check if paused is imposed by lctl ? */ - force_flush = !debug_daemon_state.lctl_event; - - delta = ending - start; - tail = debug_size - start; - size = (delta >= 0) ? delta : tail; - while (size && (force_flush || (delta < 0) || - (size >= DAEMON_SND_SIZE))) { - if (daemon_file_size_limit) { - int ssize = daemon_file_size_limit - file->f_pos; - if (size > ssize) - size = ssize; - } - - rc = file->f_op->write(file, debug_buf+start, - size, &file->f_pos); - if (rc < 0) { - printk(KERN_ALERT "LustreError: Debug_daemon " - "write error %d\n", rc); - goto out; - } - start += rc; - delta = ending - start; - tail = debug_size - start; - if (tail == 0) - start = 0; - if (delta >= 0) - size = delta; - else - size = (tail == 0) ? ending : tail; - if (daemon_file_size_limit == file->f_pos) { - // file wrapped around - file->f_pos = 0; - } - } - atomic_set(&debug_daemon_next_write, start); - if (force_flush) { - rc = file->f_op->fsync(file, file->f_dentry, 1); - if (rc < 0) { - printk(KERN_ALERT "LustreError: Debug_daemon " - "sync error %d\n", rc); - goto out; - } - if (debug_daemon_state.stopped) - break; - debug_daemon_state.lctl_event = 1; - wake_up(&debug_daemon_state.lctl); - } - wait_event(debug_daemon_state.daemon, - debug_daemon_state.daemon_event); - } -out: - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.stopped = 1; - set_fs(oldfs); - filp_close(file, 0); - current->journal_info = journal_info; -out1: - debug_daemon_state.lctl_event = 1; - wake_up(&debug_daemon_state.lctl); - return 0; -} - -void portals_debug_print(void) -{ - unsigned long dumplen = 64 * 1024; - char *start1, *start2; - char *end1, *end2; - unsigned long debug_off = atomic_read(&debug_off_a); - - start1 = debug_buf + debug_off - dumplen; - if (start1 < debug_buf) { - start1 += debug_size; - end1 = debug_buf + debug_size - 1; - start2 = debug_buf; - end2 = debug_buf + debug_off; - } else { - end1 = debug_buf + debug_off; - start2 = debug_buf + debug_off; - end2 = debug_buf + debug_off; - } - - while (start1 < end1) { - int count = MIN(1024, end1 - start1); - printk("LustreError: %*s", count, start1); - start1 += 1024; - } - while (start2 < end2) { - int count = MIN(1024, end2 - start2); - printk("LustreError: %*s", count, start2); - start2 += 1024; - } -} - void portals_debug_dumplog(void) { int rc; @@ -453,8 +119,8 @@ void portals_debug_dumplog(void) set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&debug_ctlwq, &wait); - rc = kernel_thread(portals_do_debug_dumplog, - NULL, CLONE_VM | CLONE_FS | CLONE_FILES); + rc = kernel_thread(portals_do_debug_dumplog, (void *)(long)current->pid, + CLONE_VM | CLONE_FS | CLONE_FILES); if (rc < 0) printk(KERN_ERR "LustreError: cannot start log dump thread: " "%d\n", rc); @@ -466,108 +132,6 @@ void portals_debug_dumplog(void) set_current_state(TASK_RUNNING); } -int portals_debug_daemon_start(char *file, unsigned int size) -{ - int rc; - - if (!debug_daemon_state.stopped) - return -EALREADY; - - if (file != NULL) - strncpy(debug_daemon_file_path, file, 1024); - - init_waitqueue_head(&debug_daemon_state.lctl); - init_waitqueue_head(&debug_daemon_state.daemon); - - daemon_file_size_limit = size << 20; - - debug_daemon_state.lctl_event = 0; - rc = kernel_thread(portals_debug_daemon, NULL, 0); - if (rc < 0) { - printk(KERN_ERR "LustreError: cannot start debug daemon thread\n"); - strncpy(debug_daemon_file_path, "\0", 1); - return rc; - } - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - return 0; -} - -int portals_debug_daemon_pause(void) -{ - if (atomic_read(&debug_daemon_state.paused)) - return -EALREADY; - - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.lctl_event = 0; - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - return 0; -} - -int portals_debug_daemon_continue(void) -{ - if (!atomic_read(&debug_daemon_state.paused)) - return -EINVAL; - if (debug_daemon_state.stopped) - return -EINVAL; - - debug_daemon_state.overlapped = 0; - atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a)); - atomic_set(&debug_daemon_state.paused, 0); - return 0; -} - -int portals_debug_daemon_stop(void) -{ - if (debug_daemon_state.stopped) - return -EALREADY; - - if (!atomic_read(&debug_daemon_state.paused)) - portals_debug_daemon_pause(); - - debug_daemon_state.lctl_event = 0; - debug_daemon_state.stopped = 1; - - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - - debug_daemon_file_path[0] = '\0'; - return 0; -} - -int portals_debug_set_daemon(unsigned int cmd, unsigned int length, - char *filename, unsigned int size) -{ - int rc = -EINVAL; - - down(&debug_daemon_semaphore); - switch (cmd) { - case DEBUG_DAEMON_START: - if (length && (filename[length -1] != '\0')) { - CERROR("Invalid filename for debug_daemon\n"); - rc = -EINVAL; - break; - } - rc = portals_debug_daemon_start(filename, size); - break; - case DEBUG_DAEMON_STOP: - rc = portals_debug_daemon_stop(); - break; - case DEBUG_DAEMON_PAUSE: - rc = portals_debug_daemon_pause(); - break; - case DEBUG_DAEMON_CONTINUE: - rc = portals_debug_daemon_continue(); - break; - default: - CERROR("unknown set_daemon cmd\n"); - } - up(&debug_daemon_semaphore); - return rc; -} - static int panic_dumplog(struct notifier_block *self, unsigned long unused1, void *unused2) { @@ -577,7 +141,7 @@ static int panic_dumplog(struct notifier_block *self, unsigned long unused1, handled_panic = 1; if (in_interrupt()) { - portals_debug_print(); + trace_debug_print(); return 0; } @@ -595,80 +159,29 @@ static struct notifier_block lustre_panic_notifier = { int portals_debug_init(unsigned long bufsize) { - unsigned long debug_off = atomic_read(&debug_off_a); - if (debug_buf != NULL) - return -EALREADY; - - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.stopped = 1; - - debug_buf = vmalloc(bufsize + DEBUG_OVERFLOW); - if (debug_buf == NULL) - return -ENOMEM; - memset(debug_buf, 0, bufsize + DEBUG_OVERFLOW); - debug_wrapped = 0; - - //printk(KERN_INFO "Portals: allocated %lu byte debug buffer at %p.\n", - //bufsize, debug_buf); - atomic_set(&debug_off_a, debug_off); notifier_chain_register(&panic_notifier_list, &lustre_panic_notifier); - debug_size = bufsize; - - return 0; + return tracefile_init(); } int portals_debug_cleanup(void) { + tracefile_exit(); notifier_chain_unregister(&panic_notifier_list, &lustre_panic_notifier); - if (debug_buf == NULL) - return -EINVAL; - - down(&debug_daemon_semaphore); - portals_debug_daemon_stop(); - - vfree(debug_buf); - atomic_set(&debug_off_a, 0); - up(&debug_daemon_semaphore); - return 0; } int portals_debug_clear_buffer(void) { - unsigned long flags; - unsigned long state; - - if (debug_buf == NULL) - return -EINVAL; - - down(&debug_daemon_semaphore); - state = atomic_read(&debug_daemon_state.paused); - if (!state) - portals_debug_daemon_pause(); - spin_lock_irqsave(&portals_debug_lock, flags); - atomic_set(&debug_off_a, 0); - debug_wrapped = 0; - atomic_set(&debug_daemon_next_write, 0); - debug_daemon_state.overlapped = 0; - spin_unlock_irqrestore(&portals_debug_lock, flags); - - if (!state) - atomic_set(&debug_daemon_state.paused, 0); - up(&debug_daemon_semaphore); - + trace_flush_pages(); return 0; } /* Debug markers, although printed by S_PORTALS - * should not be be marked as such. - */ + * should not be be marked as such. */ #undef DEBUG_SUBSYSTEM #define DEBUG_SUBSYSTEM S_UNDEFINED int portals_debug_mark_buffer(char *text) { - if (debug_buf == NULL) - return -EINVAL; - CDEBUG(D_TRACE,"***************************************************\n"); CWARN("DEBUG MARKER: %s\n", text); CDEBUG(D_TRACE,"***************************************************\n"); @@ -678,228 +191,6 @@ int portals_debug_mark_buffer(char *text) #undef DEBUG_SUBSYSTEM #define DEBUG_SUBSYSTEM S_PORTALS -/* this copies a snapshot of the debug buffer into an array of pages - * before doing the potentially blocking copy into userspace. it could - * be warning userspace if things wrap heavily while its off copying. */ -__s32 portals_debug_copy_to_user(char *buf, unsigned long len) -{ - int rc; - unsigned long total, debug_off, i, off, copied; - unsigned long flags; - struct page *page; - LIST_HEAD(my_pages); - struct list_head *pos, *n; - - if (len < debug_size) - return -ENOSPC; - - for (i = 0 ; i < debug_size; i += PAGE_SIZE) { - page = alloc_page(GFP_NOFS); - if (page == NULL) { - rc = -ENOMEM; - goto cleanup; - } - list_add(&PAGE_LIST(page), &my_pages); - } - - spin_lock_irqsave(&portals_debug_lock, flags); - debug_off = atomic_read(&debug_off_a); - - /* Sigh. If the buffer is empty, then skip to the end. */ - if (debug_off == 0 && !debug_wrapped) { - spin_unlock_irqrestore(&portals_debug_lock, flags); - rc = 0; - goto cleanup; - } - - if (debug_wrapped) { - off = debug_off + 1; - total = debug_size; - } else { - off = 0; - total = debug_off; - } - copied = 0; - list_for_each(pos, &my_pages) { - unsigned long to_copy; - void *addr; - - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - to_copy = min(total - off, PAGE_SIZE); - if (to_copy == 0) { - off = 0; - to_copy = min(debug_size - off, PAGE_SIZE); - } -finish_partial: - addr = kmap_atomic(page, KM_USER0); - memcpy(addr, debug_buf + off, to_copy); - kunmap_atomic(addr, KM_USER0); - copied += to_copy; - if (copied >= total) - break; - - off += to_copy; - if (off >= debug_size) { - off = 0; - if (to_copy != PAGE_SIZE) { - to_copy = PAGE_SIZE - to_copy; - goto finish_partial; - } - } - } - - spin_unlock_irqrestore(&portals_debug_lock, flags); - - off = 0; - list_for_each(pos, &my_pages) { - unsigned long to_copy; - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - - to_copy = min(copied - off, PAGE_SIZE); - rc = copy_to_user(buf + off, kmap(page), to_copy); - kunmap(page); - if (rc) { - rc = -EFAULT; - goto cleanup; - } - off += to_copy; - if (off >= copied) - break; - } - rc = copied; - -cleanup: - list_for_each_safe(pos, n, &my_pages) { - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - list_del(&PAGE_LIST(page)); - __free_page(page); - } - return rc; -} - -/* FIXME: I'm not very smart; someone smarter should make this better. */ -void -portals_debug_msg(int subsys, int mask, char *file, const char *fn, - const int line, unsigned long stack, char *format, ...) -{ - va_list ap; - unsigned long flags; - int max_nob; - int prefix_nob; - int msg_nob; - struct timeval tv; - unsigned long base_offset; - unsigned long debug_off; - - if (debug_buf == NULL) { - printk("LustreError: portals_debug_msg: debug_buf is NULL!\n"); - return; - } - - spin_lock_irqsave(&portals_debug_lock, flags); - debug_off = atomic_read(&debug_off_a); - if (!atomic_read(&debug_daemon_state.paused)) { - unsigned long available; - long delta; - long v = atomic_read(&debug_daemon_next_write); - - delta = debug_off - v; - available = (delta>=0) ? debug_size-delta : -delta; - // Check if we still have enough debug buffer for CDEBUG - if (available < DAEMON_SND_SIZE) { - /* Drop CDEBUG packets until enough debug_buffer is - * available */ - if (debug_daemon_state.overlapped) - goto out; - /* If this is the first time, leave a marker in the - * output */ - debug_daemon_state.overlapped = 1; - format = "DEBUG MARKER: Debug buffer overlapped\n"; - printk(KERN_ERR "LustreError: debug daemon buffer " - "overlapped\n"); - } else /* More space just became available */ - debug_daemon_state.overlapped = 0; - } - - max_nob = debug_size - debug_off + DEBUG_OVERFLOW; - if (max_nob <= 0) { - spin_unlock_irqrestore(&portals_debug_lock, flags); - printk("LustreError: logic error in portals_debug_msg: " - "< 0 bytes to write\n"); - return; - } - - /* NB since we pass a non-zero sized buffer (at least) on the first - * print, we can be assured that by the end of all the snprinting, - * we _do_ have a terminated buffer, even if our message got truncated. - */ - - do_gettimeofday(&tv); - - prefix_nob = snprintf(debug_buf + debug_off, max_nob, - "%06x:%06x:%d:%lu.%06lu:%lu:%d:", - subsys, mask, smp_processor_id(), - tv.tv_sec, tv.tv_usec, stack, current->pid); - max_nob -= prefix_nob; - - if(*(format + strlen(format) - 1) != '\n') - printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", - file, line, fn); - -#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->thread.extern_pid, file, line, fn); -#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->thread.mode.tt.extern_pid, file, line, fn); -#else - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->pid, file, line, fn); -#endif - - va_start(ap, format); - msg_nob += vsnprintf(debug_buf + debug_off + prefix_nob + msg_nob, - max_nob, format, ap); - max_nob -= msg_nob; - va_end(ap); - - /* Print to console, while msg is contiguous in debug_buf */ - /* NB safely terminated see above */ - if ((mask & D_EMERG) != 0) - printk(KERN_EMERG "LustreError: %s", - debug_buf + debug_off + prefix_nob); - else if ((mask & D_ERROR) != 0) - printk(KERN_ERR "LustreError: %s", - debug_buf + debug_off + prefix_nob); - else if ((mask & D_WARNING) != 0) - printk(KERN_WARNING "Lustre: %s", - debug_buf + debug_off + prefix_nob); - else if (portal_printk) - printk("<%d>Lustre: %s", portal_printk, - debug_buf+debug_off+prefix_nob); - base_offset = debug_off & 0xFFFF; - - debug_off += prefix_nob + msg_nob; - if (debug_off > debug_size) { - memcpy(debug_buf, debug_buf + debug_size, - debug_off - debug_size + 1); - debug_off -= debug_size; - debug_wrapped = 1; - } - - atomic_set(&debug_off_a, debug_off); - if (!atomic_read(&debug_daemon_state.paused) && - ((base_offset+prefix_nob+msg_nob) >= DAEMON_SND_SIZE)) { - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - } -out: - spin_unlock_irqrestore(&portals_debug_lock, flags); -} - void portals_debug_set_level(unsigned int debug_level) { printk("Lustre: Setting portals debug level to %08x\n", debug_level); @@ -1079,7 +370,6 @@ EXPORT_SYMBOL(portals_current); #endif /* __KERNEL__ */ EXPORT_SYMBOL(portals_debug_dumplog); -EXPORT_SYMBOL(portals_debug_msg); EXPORT_SYMBOL(portals_debug_set_level); EXPORT_SYMBOL(portals_run_upcall); EXPORT_SYMBOL(portals_run_lbug_upcall); diff --git a/lnet/libcfs/module.c b/lnet/libcfs/module.c index f46c855..c510aa4 100644 --- a/lnet/libcfs/module.c +++ b/lnet/libcfs/module.c @@ -526,23 +526,6 @@ static int kportal_ioctl(struct inode *inode, struct file *file, data = (struct portal_ioctl_data *)buf; switch (cmd) { - case IOC_PORTAL_SET_DAEMON: - RETURN (portals_debug_set_daemon ( - (unsigned int) data->ioc_count, - (unsigned int) data->ioc_inllen1, - (char *) data->ioc_inlbuf1, - (unsigned int) data->ioc_misc)); - case IOC_PORTAL_GET_DEBUG: { - __s32 size = portals_debug_copy_to_user(data->ioc_pbuf1, - data->ioc_plen1); - - if (size < 0) - RETURN(size); - - data->ioc_size = size; - err = copy_to_user((char *)arg, data, sizeof(*data)); - RETURN(err); - } case IOC_PORTAL_CLEAR_DEBUG: portals_debug_clear_buffer(); RETURN(0); @@ -767,7 +750,6 @@ static void exit_kportals_module(void) CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", atomic_read(&portal_kmemory)); - rc = misc_deregister(&portal_dev); if (rc) CERROR("misc_deregister error %d\n", rc); diff --git a/lnet/libcfs/proc.c b/lnet/libcfs/proc.c index c1b2aec..8565939 100644 --- a/lnet/libcfs/proc.c +++ b/lnet/libcfs/proc.c @@ -55,10 +55,10 @@ #include #include +#include "tracefile.h" static struct ctl_table_header *portals_table_header = NULL; extern char debug_file_path[1024]; -extern char debug_daemon_file_path[1024]; extern char portals_upcall[1024]; #define PSDEV_PORTALS (0x100) @@ -82,9 +82,6 @@ static struct ctl_table portals_table[PORTALS_PRIMARY_CTLCNT + 1] = { &proc_dointvec}, {PSDEV_DEBUG_PATH, "debug_path", debug_file_path, sizeof(debug_file_path), 0644, NULL, &proc_dostring, &sysctl_string}, - {PSDEV_DEBUG_DUMP_PATH, "debug_daemon_path", debug_daemon_file_path, - sizeof(debug_daemon_file_path), 0644, NULL, &proc_dostring, - &sysctl_string}, {PSDEV_PORTALS_UPCALL, "upcall", portals_upcall, sizeof(portals_upcall), 0644, NULL, &proc_dostring, &sysctl_string}, @@ -234,9 +231,9 @@ static unsigned char basedir[]="net/portals"; int insert_proc(void) { + struct proc_dir_entry *ent; #if PORTALS_PROFILING unsigned char dir[128]; - struct proc_dir_entry *ent; if (ARRAY_SIZE(prof_ents) != MAX_PROFS) { CERROR("profiling enum and array are out of sync.\n"); @@ -266,6 +263,29 @@ int insert_proc(void) portals_table_header = register_sysctl_table(top_table, 0); #endif + ent = create_proc_entry("sys/portals/dump_kernel", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register dump_kernel\n"); + return -1; + } + ent->write_proc = trace_dk; + + ent = create_proc_entry("sys/portals/daemon_file", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register daemon_file\n"); + return -1; + } + ent->write_proc = trace_write_daemon_file; + ent->read_proc = trace_read_daemon_file; + + ent = create_proc_entry("sys/portals/debug_size", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register debug_size\n"); + return -1; + } + ent->write_proc = trace_write_debug_size; + ent->read_proc = trace_read_debug_size; + return 0; } @@ -281,12 +301,16 @@ void remove_proc(void) end = strlen(dir); strcat(dir, "/cycles"); - remove_proc_entry(dir,0); + remove_proc_entry(dir, 0); dir[end] = '\0'; - remove_proc_entry(dir,0); + remove_proc_entry(dir, 0); #endif /* PORTALS_PROFILING */ + remove_proc_entry("sys/portals/dump_kernel", NULL); + remove_proc_entry("sys/portals/daemon_file", NULL); + remove_proc_entry("sys/portals/debug_size", NULL); + #ifdef CONFIG_SYSCTL if (portals_table_header) unregister_sysctl_table(portals_table_header); diff --git a/lnet/libcfs/tracefile.c b/lnet/libcfs/tracefile.c new file mode 100644 index 0000000..7d79635 --- /dev/null +++ b/lnet/libcfs/tracefile.c @@ -0,0 +1,862 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + * + * Copyright (C) 2004 Cluster File Systems, Inc. + * Author: Zach Brown + * Author: Phil Schwan + * + * This file is part of Lustre, http://www.lustre.org. + * + * Lustre is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * Lustre 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 Lustre; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_MM_INLINE +#include +#endif + +#define DEBUG_SUBSYSTEM S_PORTALS + +#include +#include +#include + +#define TCD_MAX_PAGES 1280 + +/* XXX move things up to the top, comment */ + +static union { + struct trace_cpu_data { + struct list_head tcd_pages; + unsigned long tcd_cur_pages; + + struct list_head tcd_daemon_pages; + unsigned long tcd_cur_daemon_pages; + + unsigned long tcd_max_pages; + int tcd_shutting_down; + } tcd; + char __pad[SMP_CACHE_BYTES]; +} trace_data[NR_CPUS] __cacheline_aligned; + +struct page_collection { + struct list_head pc_pages; + spinlock_t pc_lock; + int pc_want_daemon_pages; +}; + +struct tracefiled_ctl { + struct completion tctl_start; + struct completion tctl_stop; + wait_queue_head_t tctl_waitq; + pid_t tctl_pid; + atomic_t tctl_shutdown; +}; + +static DECLARE_RWSEM(tracefile_sem); +static char *tracefile = NULL; +static struct tracefiled_ctl trace_tctl; +static DECLARE_MUTEX(trace_thread_sem); +static int thread_running = 0; + +#ifndef get_cpu +#define get_cpu() smp_processor_id() +#define put_cpu() do { } while (0) +#endif + +#define trace_get_tcd(FLAGS) ({ \ + struct trace_cpu_data *__ret; \ + int __cpu = get_cpu(); \ + local_irq_save(FLAGS); \ + __ret = &trace_data[__cpu].tcd; \ + __ret; \ +}) + +#define trace_put_tcd(TCD, FLAGS) do { \ + local_irq_restore(FLAGS); \ + put_cpu(); \ +} while (0) + +static void put_pages_on_daemon_list_on_cpu(void *info); + +/* return a page that has 'len' bytes left at the end */ +static struct page *trace_get_page(struct trace_cpu_data *tcd, + unsigned long len) +{ + struct page *page = NULL; + + if (len > PAGE_SIZE) { + printk(KERN_ERR "cowardly refusing to write %lu bytes in a " + "page\n", len); + return NULL; + } + + if (!list_empty(&tcd->tcd_pages)) { + page = list_entry(tcd->tcd_pages.prev, struct page, + PAGE_LIST_ENTRY); + if (page->index + len <= PAGE_SIZE) + return page; + } + + if (tcd->tcd_cur_pages < tcd->tcd_max_pages) { + page = alloc_page(GFP_ATOMIC); + if (page == NULL) { + /* the kernel should print a message for us. fall back + * to using the last page in the ring buffer. */ + goto ring_buffer; + return NULL; + } + page->index = 0; + page->mapping = (void *)smp_processor_id(); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_pages); + tcd->tcd_cur_pages++; + + if (tcd->tcd_cur_pages > 8 && thread_running) { + struct tracefiled_ctl *tctl = &trace_tctl; + wake_up(&tctl->tctl_waitq); + } + return page; + } + + ring_buffer: + if (thread_running) { + int pgcount = tcd->tcd_cur_pages / 10; + struct page_collection pc; + struct list_head *pos, *tmp; + printk(KERN_WARNING "debug daemon buffer overflowed; discarding" + " 10%% of pages (%d)\n", pgcount + 1); + + INIT_LIST_HEAD(&pc.pc_pages); + spin_lock_init(&pc.pc_lock); + + list_for_each_safe(pos, tmp, &tcd->tcd_pages) { + struct page *page; + + if (pgcount-- == 0) + break; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &pc.pc_pages); + tcd->tcd_cur_pages--; + } + put_pages_on_daemon_list_on_cpu(&pc); + } + LASSERT(!list_empty(&tcd->tcd_pages)); + + page = list_entry(tcd->tcd_pages.next, struct page, PAGE_LIST_ENTRY); + page->index = 0; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_pages); + return page; +} + +static void print_to_console(struct ptldebug_header *hdr, int mask, char *buf, + int len, char *file, const char *fn) +{ + char *prefix = NULL, *ptype = NULL; + + if ((mask & D_EMERG) != 0) { + prefix = "LustreError"; + ptype = KERN_EMERG; + } else if ((mask & D_ERROR) != 0) { + prefix = "LustreError"; + ptype = KERN_ERR; + } else if ((mask & D_WARNING) != 0) { + prefix = "Lustre"; + ptype = KERN_WARNING; + } else if (portal_printk) { + prefix = "Lustre"; + ptype = KERN_INFO; + } + + printk("%s%s: %d:%d:(%s:%d:%s()) %*s", ptype, prefix, hdr->ph_pid, + hdr->ph_extern_pid, file, hdr->ph_line_num, fn, len, buf); +} + +void portals_debug_msg(int subsys, int mask, char *file, const char *fn, + const int line, unsigned long stack, char *format, ...) +{ + struct trace_cpu_data *tcd; + struct ptldebug_header header; + struct page *page; + char *debug_buf; + int known_size, needed, max_nob; + va_list ap; + unsigned long flags; + struct timeval tv; + + if (*(format + strlen(format) - 1) != '\n') + printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", + file, line, fn); + + tcd = trace_get_tcd(flags); + if (tcd->tcd_shutting_down) + goto out; + + do_gettimeofday(&tv); + + header.ph_subsys = subsys; + header.ph_mask = mask; + header.ph_cpu_id = smp_processor_id(); + header.ph_sec = (__u32)tv.tv_sec; + header.ph_usec = tv.tv_usec; + header.ph_stack = stack; + header.ph_pid = current->pid; + header.ph_line_num = line; + +#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) + header.ph_extern_pid = current->thread.extern_pid; +#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + header.ph_extern_pid = current->thread.mode.tt.extern_pid; +#else + header.ph_extern_pid = 0; +#endif + + known_size = sizeof(header) + strlen(file) + strlen(fn) + 2; // nulls + + page = trace_get_page(tcd, known_size + 40); /* slop */ + retry: + if (page == NULL) + goto out; + + debug_buf = page_address(page) + page->index + known_size; + + va_start(ap, format); + max_nob = PAGE_SIZE - page->index - known_size; + LASSERT(max_nob > 0); + needed = vsnprintf(debug_buf, max_nob, format, ap); + va_end(ap); + + if (needed > max_nob) { + /* overflow. oh poop. */ + page = trace_get_page(tcd, needed + known_size); + goto retry; + } + + header.ph_len = known_size + needed; + debug_buf = page_address(page) + page->index; + + memcpy(debug_buf, &header, sizeof(header)); + page->index += sizeof(header); + debug_buf += sizeof(header); + + strcpy(debug_buf, file); + page->index += strlen(file) + 1; + debug_buf += strlen(file) + 1; + + strcpy(debug_buf, fn); + page->index += strlen(fn) + 1; + debug_buf += strlen(fn) + 1; + + page->index += needed; + if (page->index > PAGE_SIZE) + printk(KERN_EMERG "page->index == %lu in portals_debug_msg\n", + page->index); + + if ((mask & (D_EMERG | D_ERROR | D_WARNING)) || portal_printk) + print_to_console(&header, mask, debug_buf, needed, file, fn); + + out: + trace_put_tcd(tcd, flags); +} +EXPORT_SYMBOL(portals_debug_msg); + +static void collect_pages_on_cpu(void *info) +{ + struct trace_cpu_data *tcd; + unsigned long flags; + struct page_collection *pc = info; + + tcd = trace_get_tcd(flags); + + spin_lock(&pc->pc_lock); + list_splice(&tcd->tcd_pages, &pc->pc_pages); + INIT_LIST_HEAD(&tcd->tcd_pages); + tcd->tcd_cur_pages = 0; + if (pc->pc_want_daemon_pages) { + list_splice(&tcd->tcd_daemon_pages, &pc->pc_pages); + INIT_LIST_HEAD(&tcd->tcd_daemon_pages); + tcd->tcd_cur_daemon_pages = 0; + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void collect_pages(struct page_collection *pc) +{ + /* needs to be fixed up for preempt */ + INIT_LIST_HEAD(&pc->pc_pages); + collect_pages_on_cpu(pc); + smp_call_function(collect_pages_on_cpu, pc, 0, 1); +} + +static void put_pages_back_on_cpu(void *info) +{ + struct page_collection *pc = info; + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp, *cur_head; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + cur_head = tcd->tcd_pages.next; + + spin_lock(&pc->pc_lock); + list_for_each_safe(pos, tmp, &pc->pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + if ((unsigned long)page->mapping != smp_processor_id()) + continue; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), cur_head); + tcd->tcd_cur_pages++; + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void put_pages_back(struct page_collection *pc) +{ + /* needs to be fixed up for preempt */ + put_pages_back_on_cpu(pc); + smp_call_function(put_pages_back_on_cpu, pc, 0, 1); +} + +/* Add pages to a per-cpu debug daemon ringbuffer. This buffer makes sure that + * we have a good amount of data at all times for dumping during an LBUG, even + * if we have been steadily writing (and otherwise discarding) pages via the + * debug daemon. */ +static void put_pages_on_daemon_list_on_cpu(void *info) +{ + struct page_collection *pc = info; + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + spin_lock(&pc->pc_lock); + list_for_each_safe(pos, tmp, &pc->pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + if ((unsigned long)page->mapping != smp_processor_id()) + continue; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_daemon_pages); + tcd->tcd_cur_daemon_pages++; + + if (tcd->tcd_cur_daemon_pages > tcd->tcd_max_pages) { + LASSERT(!list_empty(&tcd->tcd_daemon_pages)); + page = list_entry(tcd->tcd_daemon_pages.next, + struct page, PAGE_LIST_ENTRY); + + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + page->index = 0; + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + tcd->tcd_cur_daemon_pages--; + } + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void put_pages_on_daemon_list(struct page_collection *pc) +{ + put_pages_on_daemon_list_on_cpu(pc); + smp_call_function(put_pages_on_daemon_list_on_cpu, pc, 0, 1); +} + +void trace_debug_print(void) +{ + struct page_collection pc; + struct list_head *pos, *tmp; + + spin_lock_init(&pc.pc_lock); + + collect_pages(&pc); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + char *p, *file, *fn; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + p = page_address(page); + while (p < ((char *)page_address(page) + PAGE_SIZE)) { + struct ptldebug_header *hdr; + int len; + hdr = (void *)p; + p += sizeof(*hdr); + file = p; + p += strlen(file) + 1; + fn = p; + p += strlen(fn) + 1; + len = hdr->ph_len - (p - (char *)hdr); + + print_to_console(hdr, D_EMERG, p, len, file, fn); + } + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } +} + +int tracefile_dump_all_pages(char *filename) +{ + struct page_collection pc; + struct file *filp; + struct list_head *pos, *tmp; + mm_segment_t oldfs; + int rc; + + down_write(&tracefile_sem); + + filp = filp_open(filename, O_CREAT|O_EXCL|O_WRONLY, 0600); + if (IS_ERR(filp)) { + rc = PTR_ERR(filp); + printk(KERN_ERR "couldn't open %s: %d\n", filename, rc); + goto out; + } + + spin_lock_init(&pc.pc_lock); + pc.pc_want_daemon_pages = 1; + collect_pages(&pc); + if (list_empty(&pc.pc_pages)) { + rc = 0; + goto close; + } + + /* ok, for now, just write the pages. in the future we'll be building + * iobufs with the pages and calling generic_direct_IO */ + oldfs = get_fs(); + set_fs(get_ds()); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + rc = filp->f_op->write(filp, page_address(page), page->index, + &filp->f_pos); + if (rc != page->index) { + printk(KERN_WARNING "wanted to write %lu but wrote " + "%d\n", page->index, rc); + put_pages_back(&pc); + break; + } + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } + set_fs(oldfs); + rc = filp->f_op->fsync(filp, filp->f_dentry, 1); + if (rc) + printk(KERN_ERR "sync returns %d\n", rc); + close: + filp_close(filp, 0); + out: + up_write(&tracefile_sem); + return rc; +} + +void trace_flush_pages(void) +{ + struct page_collection pc; + struct list_head *pos, *tmp; + + spin_lock_init(&pc.pc_lock); + + collect_pages(&pc); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } +} + +int trace_dk(struct file *file, const char *buffer, unsigned long count, + void *data) +{ + char *name; + unsigned long off; + int rc; + + name = kmalloc(count + 1, GFP_KERNEL); + if (name == NULL) + return -ENOMEM; + + if (copy_from_user(name, buffer, count)) { + rc = -EFAULT; + goto out; + } + + if (name[0] != '/') { + rc = -EINVAL; + goto out; + } + + /* be nice and strip out trailing '\n' */ + for (off = count ; off > 2 && isspace(name[off - 1]); off--) + ; + + name[off] = '\0'; + rc = tracefile_dump_all_pages(name); +out: + if (name) + kfree(name); + return count; +} +EXPORT_SYMBOL(trace_dk); + +static int tracefiled(void *arg) +{ + struct page_collection pc; + struct tracefiled_ctl *tctl = arg; + struct list_head *pos, *tmp; + struct ptldebug_header *hdr; + struct file *filp; + struct page *page; + mm_segment_t oldfs; + int rc; + + /* we're started late enough that we pick up init's fs context */ + /* this is so broken in uml? what on earth is going on? */ + kportal_daemonize("ktracefiled"); + reparent_to_init(); + + spin_lock_init(&pc.pc_lock); + complete(&tctl->tctl_start); + + while (1) { + wait_queue_t __wait; + + init_waitqueue_entry(&__wait, current); + add_wait_queue(&tctl->tctl_waitq, &__wait); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ); + remove_wait_queue(&tctl->tctl_waitq, &__wait); + + if (atomic_read(&tctl->tctl_shutdown)) + break; + + pc.pc_want_daemon_pages = 0; + collect_pages(&pc); + if (list_empty(&pc.pc_pages)) + continue; + + filp = NULL; + down_read(&tracefile_sem); + if (tracefile != NULL) { + filp = filp_open(tracefile, O_CREAT|O_RDWR|O_APPEND, + 0600); + if (IS_ERR(filp)) { + printk("couldn't open %s: %ld\n", tracefile, + PTR_ERR(filp)); + filp = NULL; + } + } + up_read(&tracefile_sem); + if (filp == NULL) { + put_pages_on_daemon_list(&pc); + continue; + } + + oldfs = get_fs(); + set_fs(get_ds()); + + /* mark the first header, so we can sort in chunks */ + page = list_entry(pc.pc_pages.next, struct page, + PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + hdr = page_address(page); + hdr->ph_flags |= PH_FLAG_FIRST_RECORD; + + list_for_each_safe(pos, tmp, &pc.pc_pages) { + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + rc = filp->f_op->write(filp, page_address(page), + page->index, &filp->f_pos); + if (rc != page->index) { + printk(KERN_WARNING "wanted to write %lu but " + "wrote %d\n", page->index, rc); + put_pages_back(&pc); + } + } + set_fs(oldfs); + filp_close(filp, 0); + + put_pages_on_daemon_list(&pc); + } + complete(&tctl->tctl_stop); + return 0; +} + +int trace_start_thread(void) +{ + struct tracefiled_ctl *tctl = &trace_tctl; + int rc = 0; + + down(&trace_thread_sem); + if (thread_running) + goto out; + + init_completion(&tctl->tctl_start); + init_completion(&tctl->tctl_stop); + init_waitqueue_head(&tctl->tctl_waitq); + atomic_set(&tctl->tctl_shutdown, 0); + + if (kernel_thread(tracefiled, tctl, 0) < 0) { + rc = -ECHILD; + goto out; + } + + wait_for_completion(&tctl->tctl_start); + thread_running = 1; +out: + up(&trace_thread_sem); + return rc; +} + +void trace_stop_thread(void) +{ + struct tracefiled_ctl *tctl = &trace_tctl; + + down(&trace_thread_sem); + if (thread_running) { + printk(KERN_INFO "Shutting down debug daemon thread...\n"); + atomic_set(&tctl->tctl_shutdown, 1); + wait_for_completion(&tctl->tctl_stop); + thread_running = 0; + } + up(&trace_thread_sem); +} + +int trace_write_daemon_file(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + char *name; + unsigned long off; + int rc; + + name = kmalloc(count + 1, GFP_KERNEL); + if (name == NULL) + return -ENOMEM; + + if (copy_from_user(name, buffer, count)) { + rc = -EFAULT; + goto out; + } + + /* be nice and strip out trailing '\n' */ + for (off = count ; off > 2 && isspace(name[off - 1]); off--) + ; + + name[off] = '\0'; + + down_write(&tracefile_sem); + if (strcmp(name, "stop") == 0) { + tracefile = NULL; + trace_stop_thread(); + goto out_sem; + } + + if (name[0] != '/') { + rc = -EINVAL; + goto out_sem; + } + + if (tracefile != NULL) + kfree(tracefile); + + tracefile = name; + name = NULL; + + printk(KERN_INFO "Lustre: debug daemon will attempt to start writing " + "to %s\n", name); + + trace_start_thread(); + + out_sem: + up_write(&tracefile_sem); + + out: + if (name) + kfree(name); + return count; +} + +int trace_read_daemon_file(char *page, char **start, off_t off, int count, + int *eof, void *data) +{ + int rc; + + down_read(&tracefile_sem); + rc = snprintf(page, count, "%s", tracefile); + up_read(&tracefile_sem); + + return rc; +} + +int trace_write_debug_size(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + char *string; + int rc, i; + unsigned max; + + string = kmalloc(count + 1, GFP_KERNEL); + if (string == NULL) + return -ENOMEM; + + if (copy_from_user(string, buffer, count)) { + rc = -EFAULT; + goto out; + } + + max = simple_strtoul(string, NULL, 0); + if (max == 0) { + rc = -EINVAL; + goto out; + } + max /= smp_num_cpus; + + if (max > num_physpages / 5 * 4) { + printk(KERN_ERR "Lustre: Refusing to set debug buffer size to " + "%d pages, which is more than 80%% of physical pages " + "(%lu).\n", max * smp_num_cpus, num_physpages / 5 * 4); + return count; + } + + for (i = 0; i < NR_CPUS; i++) { + struct trace_cpu_data *tcd; + tcd = &trace_data[i].tcd; + tcd->tcd_max_pages = max; + } + out: + kfree(string); + return count; +} + +int trace_read_debug_size(char *page, char **start, off_t off, int count, + int *eof, void *data) +{ + struct trace_cpu_data *tcd; + unsigned long flags; + int rc; + + tcd = trace_get_tcd(flags); + rc = snprintf(page, count, "%lu\n", tcd->tcd_max_pages * smp_num_cpus); + trace_put_tcd(tcd, flags); + + return rc; +} + +int tracefile_init(void) +{ + struct trace_cpu_data *tcd; + int i; + + for (i = 0; i < NR_CPUS; i++) { + tcd = &trace_data[i].tcd; + INIT_LIST_HEAD(&tcd->tcd_pages); + INIT_LIST_HEAD(&tcd->tcd_daemon_pages); + tcd->tcd_cur_pages = 0; + tcd->tcd_cur_daemon_pages = 0; + tcd->tcd_max_pages = TCD_MAX_PAGES; + tcd->tcd_shutting_down = 0; + } + return 0; +} + +static void trace_cleanup_on_cpu(void *info) +{ + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + tcd->tcd_shutting_down = 1; + + list_for_each_safe(pos, tmp, &tcd->tcd_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } + tcd->tcd_cur_pages = 0; + + trace_put_tcd(tcd, flags); +} + +static void trace_cleanup(void) +{ + struct page_collection pc; + + INIT_LIST_HEAD(&pc.pc_pages); + spin_lock_init(&pc.pc_lock); + + trace_cleanup_on_cpu(&pc); + smp_call_function(trace_cleanup_on_cpu, &pc, 0, 1); +} + +void tracefile_exit(void) +{ + trace_stop_thread(); + trace_cleanup(); +} diff --git a/lnet/libcfs/tracefile.h b/lnet/libcfs/tracefile.h new file mode 100644 index 0000000..1b6e7a0 --- /dev/null +++ b/lnet/libcfs/tracefile.h @@ -0,0 +1,22 @@ +#ifndef __PORTALS_TRACEFILE_H +#define __PORTALS_TRACEFILE_H + +int tracefile_dump_all_pages(char *filename); +void trace_debug_print(void); +void trace_flush_pages(void); +int trace_start_thread(void); +void trace_stop_thread(void); +int tracefile_init(void); +void tracefile_exit(void); +int trace_write_daemon_file(struct file *file, const char *buffer, + unsigned long count, void *data); +int trace_read_daemon_file(char *page, char **start, off_t off, int count, + int *eof, void *data); +int trace_write_debug_size(struct file *file, const char *buffer, + unsigned long count, void *data); +int trace_read_debug_size(char *page, char **start, off_t off, int count, + int *eof, void *data); +int trace_dk(struct file *file, const char *buffer, unsigned long count, + void *data); + +#endif /* __PORTALS_TRACEFILE_H */ diff --git a/lnet/utils/debug.c b/lnet/utils/debug.c index 69880ea..d460919 100644 --- a/lnet/utils/debug.c +++ b/lnet/utils/debug.c @@ -25,6 +25,8 @@ #define __USE_FILE_OFFSET64 +#include + #include #include #include @@ -82,8 +84,6 @@ struct debug_daemon_cmd { static const struct debug_daemon_cmd portal_debug_daemon_cmd[] = { {"start", DEBUG_DAEMON_START}, {"stop", DEBUG_DAEMON_STOP}, - {"pause", DEBUG_DAEMON_PAUSE}, - {"continue", DEBUG_DAEMON_CONTINUE}, {0, 0} }; @@ -230,108 +230,230 @@ int jt_dbg_list(int argc, char **argv) return 0; } -/* if 'raw' is true, don't strip the debug information from the front of the - * lines */ -static void dump_buffer(FILE *fd, char *buf, int size, int raw) +/* all strings nul-terminated; only the struct and hdr need to be freed */ +struct dbg_line { + struct ptldebug_header *hdr; + char *file; + char *fn; + char *text; + struct list_head chain; +}; + +/* nurr. */ +static void list_add_ordered(struct dbg_line *new, struct list_head *head) +{ + struct list_head *pos; + struct dbg_line *curr, *next; + + list_for_each(pos, head) { + curr = list_entry(pos, struct dbg_line, chain); + + if (curr->hdr->ph_sec < new->hdr->ph_sec) + continue; + if (curr->hdr->ph_sec == new->hdr->ph_sec && + curr->hdr->ph_usec < new->hdr->ph_usec) + continue; + + list_add(&new->chain, pos->prev); + return; + } + list_add_tail(&new->chain, head); +} + +static void print_saved_records(struct list_head *list, FILE *out) { - char *p, *z; - unsigned long subsystem, debug, dropped = 0, kept = 0; + struct list_head *pos, *tmp; + + list_for_each_safe(pos, tmp, list) { + struct dbg_line *line; + struct ptldebug_header *hdr; + + line = list_entry(pos, struct dbg_line, chain); + list_del(&line->chain); + + hdr = line->hdr; + fprintf(out, "%06x:%06x:%u:%u.%06Lu:%u:%u:%u:(%s:%u:%s()) %s", + hdr->ph_subsys, hdr->ph_mask, hdr->ph_cpu_id, + hdr->ph_sec, (unsigned long long)hdr->ph_usec, + hdr->ph_stack, hdr->ph_pid, hdr->ph_extern_pid, + line->file, hdr->ph_line_num, line->fn, line->text); + free(line->hdr); + free(line); + } +} - while (size) { - p = memchr(buf, '\n', size); - if (!p) +static int parse_buffer(FILE *in, FILE *out) +{ + struct dbg_line *line; + struct ptldebug_header *hdr; + char buf[4097], *p; + int rc; + unsigned long dropped = 0, kept = 0; + struct list_head chunk_list, *pos; + + INIT_LIST_HEAD(&chunk_list); + + while (1) { + rc = fread(buf, sizeof(hdr->ph_len), 1, in); + if (rc <= 0) break; - subsystem = strtoul(buf, &z, 16); - debug = strtoul(z + 1, &z, 16); - - z++; - /* for some reason %*s isn't working. */ - *p = '\0'; - if ((subsystem_mask & subsystem) && - (!debug || (debug_mask & debug))) { - if (raw) - fprintf(fd, "%s\n", buf); - else - fprintf(fd, "%s\n", z); - //printf("%s\n", buf); - kept++; - } else { - //fprintf(stderr, "dropping line (%lx:%lx): %s\n", subsystem, debug, buf); + + hdr = (void *)buf; + if (hdr->ph_len == 0) + break; + if (hdr->ph_len > 4094) { + fprintf(stderr, "unexpected large record: %d bytes. " + "aborting.\n", + hdr->ph_len); + break; + } + + if (hdr->ph_flags & PH_FLAG_FIRST_RECORD) { + print_saved_records(&chunk_list, out); + assert(list_empty(&chunk_list)); + } + + rc = fread(buf + sizeof(hdr->ph_len), 1, + hdr->ph_len - sizeof(hdr->ph_len), in); + if (rc <= 0) + break; + + if (hdr->ph_mask && + (!(subsystem_mask & hdr->ph_subsys) || + (!(debug_mask & hdr->ph_mask)))) { dropped++; + continue; } - *p = '\n'; - p++; - size -= (p - buf); - buf = p; + + line = malloc(sizeof(*line)); + if (line == NULL) { + fprintf(stderr, "malloc failed; printing accumulated " + "records and exiting.\n"); + break; + } + + line->hdr = malloc(hdr->ph_len + 1); + if (line->hdr == NULL) { + fprintf(stderr, "malloc failed; printing accumulated " + "records and exiting.\n"); + break; + } + + p = (void *)line->hdr; + memcpy(line->hdr, buf, hdr->ph_len); + p[hdr->ph_len] = '\0'; + + p += sizeof(*hdr); + line->file = p; + p += strlen(line->file) + 1; + line->fn = p; + p += strlen(line->fn) + 1; + line->text = p; + + list_add_ordered(line, &chunk_list); + kept++; } + print_saved_records(&chunk_list, out); + printf("Debug log: %lu lines, %lu kept, %lu dropped.\n", dropped + kept, kept, dropped); + return 0; } int jt_dbg_debug_kernel(int argc, char **argv) { - int rc, raw = 1; - FILE *fd = stdout; - const int databuf_size = (6 << 20); - struct portal_ioctl_data data, *newdata; - char *databuf = NULL; + char filename[4096]; + int rc, raw = 0, fd; + FILE *in, *out = stdout; if (argc > 3) { fprintf(stderr, "usage: %s [file] [raw]\n", argv[0]); return 0; } + sprintf(filename, "%s-%ld.tmp", argv[1], random); + if (argc > 2) + raw = atoi(argv[2]); + unlink(filename); + + fd = open("/proc/sys/portals/dump_kernel", O_WRONLY); + if (fd < 0) { + fprintf(stderr, "open(dump_kernel) failed: %s\n", + strerror(errno)); + return 1; + } + + rc = write(fd, filename, strlen(filename)); + if (rc != strlen(filename)) { + fprintf(stderr, "write(%s) failed: %s\n", filename, + strerror(errno)); + close(fd); + return 1; + } + close(fd); + if (raw) + return 0; + + in = fopen(filename, "r"); + if (in == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", filename, + strerror(errno)); + return 1; + } if (argc > 1) { - fd = fopen(argv[1], "w"); - if (fd == NULL) { + out = fopen(argv[1], "w"); + if (out == NULL) { fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno)); - return -1; + return 1; } } - if (argc > 2) - raw = atoi(argv[2]); - databuf = malloc(databuf_size); - if (!databuf) { - fprintf(stderr, "No memory for buffer.\n"); - goto out; + rc = parse_buffer(in, out); + if (rc) { + fprintf(stderr, "parse_buffer failed; leaving tmp file %s " + "behind.\n", filename); + } else { + rc = unlink(filename); + if (rc) + fprintf(stderr, "dumped successfully, but couldn't " + "unlink tmp file %s: %s\n", filename, + strerror(errno)); } + return rc; +} - memset(&data, 0, sizeof(data)); - data.ioc_plen1 = databuf_size; - data.ioc_pbuf1 = databuf; - - if (portal_ioctl_pack(&data, &buf, max) != 0) { - fprintf(stderr, "portal_ioctl_pack failed.\n"); - goto out; +int jt_dbg_debug_file(int argc, char **argv) +{ + FILE *in, *out = stdout; + if (argc > 3 || argc < 2) { + fprintf(stderr, "usage: %s [output]\n", argv[0]); + return 0; } - rc = l_ioctl(PORTALS_DEV_ID, IOC_PORTAL_GET_DEBUG, buf); - if (rc) { - fprintf(stderr, "IOC_PORTAL_GET_DEBUG failed: %s\n", + in = fopen(argv[1], "r"); + if (in == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno)); - goto out; + return 1; + } + if (argc > 2) { + out = fopen(argv[2], "w"); + if (out == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], + strerror(errno)); + return 1; + } } - newdata = (struct portal_ioctl_data *)buf; - if (newdata->ioc_size > 0) - dump_buffer(fd, databuf, newdata->ioc_size, raw); - - out: - if (databuf) - free(databuf); - if (fd != stdout) - fclose(fd); - return 0; + return parse_buffer(in, out); } int jt_dbg_debug_daemon(int argc, char **argv) { - int i, rc; + int i, rc, fd; unsigned int cmd = 0; - FILE *fd = stdout; struct portal_ioctl_data data; if (argc <= 1) { @@ -339,120 +461,42 @@ int jt_dbg_debug_daemon(int argc, char **argv) "continue]\n", argv[0]); return 0; } - for (i = 0; portal_debug_daemon_cmd[i].cmd != NULL; i++) { - if (strcasecmp(argv[1], portal_debug_daemon_cmd[i].cmd) == 0) { - cmd = portal_debug_daemon_cmd[i].cmdv; - break; - } - } - if (portal_debug_daemon_cmd[i].cmd == NULL) { - fprintf(stderr, "usage: %s [start file <#MB>|stop|pause|" - "continue]\n", argv[0]); - return 0; - } - memset(&data, 0, sizeof(data)); - if (cmd == DEBUG_DAEMON_START) { - if (argc < 3) { - fprintf(stderr, "usage: %s [start file <#MB>|stop|" - "pause|continue]\n", argv[0]); - return 0; - } - if (access(argv[2], F_OK) != 0) { - fd = fopen(argv[2], "w"); - if (fd != NULL) { - fclose(fd); - remove(argv[2]); - goto ok; - } - } - if (access(argv[2], W_OK) == 0) - goto ok; - fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], - strerror(errno)); - return -1; -ok: - data.ioc_inllen1 = strlen(argv[2]) + 1; - data.ioc_inlbuf1 = argv[2]; - data.ioc_misc = 0; - if (argc == 4) { - unsigned long size; - errno = 0; - size = strtoul(argv[3], NULL, 0); - if (errno) { - fprintf(stderr, "file size(%s): error %s\n", - argv[3], strerror(errno)); - return -1; - } - data.ioc_misc = size; - } - } - data.ioc_count = cmd; - if (portal_ioctl_pack(&data, &buf, max) != 0) { - fprintf(stderr, "portal_ioctl_pack failed.\n"); - return -1; - } - rc = l_ioctl(PORTALS_DEV_ID, IOC_PORTAL_SET_DAEMON, buf); - if (rc < 0) { - fprintf(stderr, "IOC_PORTAL_SET_DEMON failed: %s\n", - strerror(errno)); - return rc; - } - return 0; -} - -int jt_dbg_debug_file(int argc, char **argv) -{ - int rc, fd = -1, raw = 1; - FILE *output = stdout; - char *databuf = NULL; - struct stat statbuf; - - if (argc > 4 || argc < 2) { - fprintf(stderr, "usage: %s [output] [raw]\n", argv[0]); - return 0; - } - fd = open(argv[1], O_RDONLY); + fd = open("/proc/sys/portals/daemon_file", O_WRONLY); if (fd < 0) { - fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], + fprintf(stderr, "open(daemon_file) failed: %s\n", strerror(errno)); - return -1; + return 1; } - rc = fstat(fd, &statbuf); - if (rc < 0) { - fprintf(stderr, "fstat failed: %s\n", strerror(errno)); - goto out; - } + if (strcasecmp(argv[1], "start") == 0) { + if (argc != 3) { + fprintf(stderr, "usage: %s [start file|stop]\n", + argv[0]); + return 1; + } - if (argc >= 3) { - output = fopen(argv[2], "w"); - if (output == NULL) { - fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], + rc = write(fd, argv[2], strlen(argv[2])); + if (rc != strlen(argv[2])) { + fprintf(stderr, "write(%s) failed: %s\n", argv[2], strerror(errno)); - goto out; + close(fd); + return 1; } + } else if (strcasecmp(argv[1], "stop") == 0) { + rc = write(fd, "stop", 4); + if (rc != 4) { + fprintf(stderr, "write(stop) failed: %s\n", + strerror(errno)); + close(fd); + return 1; + } + } else { + fprintf(stderr, "usage: %s [start file|stop]\n", argv[0]); + return 1; } - if (argc == 4) - raw = atoi(argv[3]); - - databuf = mmap(NULL, statbuf.st_size, PROT_READ | PROT_WRITE, - MAP_PRIVATE, fd, 0); - if (databuf == NULL) { - fprintf(stderr, "mmap failed: %s\n", strerror(errno)); - goto out; - } - - dump_buffer(output, databuf, statbuf.st_size, raw); - - out: - if (databuf) - munmap(databuf, statbuf.st_size); - if (output != stdout) - fclose(output); - if (fd > 0) - close(fd); + close(fd); return 0; } diff --git a/lnet/utils/debugctl.c b/lnet/utils/debugctl.c index 02cb9b4..1b6cd96 100644 --- a/lnet/utils/debugctl.c +++ b/lnet/utils/debugctl.c @@ -32,7 +32,7 @@ command_t list[] = { {"debug_kernel", jt_dbg_debug_kernel, 0, "usage: debug_kernel [file] [raw], get debug buffer and print it [to a file]"}, - {"debug_daemon", jt_dbg_debug_daemon, 0, "usage: debug_daemon [start file [#MB]|stop|pause|continue], control debug daemon to dump debug buffer to a file"}, + {"debug_daemon", jt_dbg_debug_daemon, 0, "usage: debug_daemon [start file|stop], control debug daemon to dump debug buffer to a file"}, {"debug_file", jt_dbg_debug_file, 0, "usage: debug_file [output] [raw], read debug buffer from input and print it [to output]"}, {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer"}, {"mark", jt_dbg_mark_debug_buf, 0, "insert a marker into the kernel debug buffer (args: [marker text])"}, diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 84f8545..1b1fbde 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -1,4 +1,14 @@ -tbd Cluster File Systems, Inc. +tbd Cluster File Systems, Inc. + * version 1.2.5 + * bug fixes + - don't close LustreDB during write_conf until it is done (3860) + - fix typo in lconf for_each_profile (3821) + - allow dumping logs from multiple threads at one time (3820) + - don't allow multiple threads in OSC recovery(3812) + - fix debug_size parameters (3864) + - fix mds_postrecov to initialize import for llog ctxt (3121) + +2004-07-14 Cluster File Systems, Inc. * version 1.2.4 * bug fixes - don't cleanup request in ll_file_open() on failed MDS open (3430) @@ -6,7 +16,24 @@ tbd Cluster File Systems, Inc. - if default stripe count is 0, use OST count for inode size (3636) - update parent mtime/ctime on client for create/unlink (2611) - drop dentry ref in ext3_add_link from open_connect_dentry (3266) + - free recovery state on server during a forced cleanup (3571) + - unregister_reply for resent reqs (3063) + - loop back devices mounting and status check on 2.6 (3563) + - fix resource-creation race that can provoke i_size == 0 (3513) + - don't try to use bad inodes returned from MDS/OST fs lookup (3688) + - more debugging for page-accounting assertion (3746) + - return -ENOENT instead of asserting if ost getattr+unlink race (3558) + - avoid deadlock after precreation failure (3758) + - fix race and lock order deadlock in orphan handling (3450, 3750) * miscellania + - add /proc/.../recovery_status to obdfilter (3428) + - lightweight CDEBUG infrastructure, debug daemon (3668) + - change default OSC RPC parameters to be better on small clusters + - turn off OST read cache for files smaller than 32MB + - install man pages and include them in rpms (3100) + - add new init script for (un)mounting lustre filesystems (2593) + - run chkconfig in %post for init scripts (3701) + - drop scimac NAL (unmaintained) 2004-06-17 Cluster File Systems, Inc. * version 1.2.3 @@ -61,7 +88,9 @@ tbd Cluster File Systems, Inc. - don't crash in mdc_close for bad permissions on open (3285) - zero i_rdev for non-device files (3147) - clear page->private before handing to FS, better assertion (3119) + - tune the read pipeline (3236) - fix incorrect decref of invalidated dentry (2350) + - provide read-ahead stats and refine rpc in flight stats (3328) - don't hold journal transaction open across create RPC (3313) - update atime on MDS at close time (3265) - close LDAP connection when recovering to avoid server load (3315) diff --git a/lustre/autoMakefile.am b/lustre/autoMakefile.am index 43293c1d..7cfb68e 100644 --- a/lustre/autoMakefile.am +++ b/lustre/autoMakefile.am @@ -42,6 +42,8 @@ dep: .depend .depend: $(LDISKFS) lvfs-sources libcfs-sources $(MAKE) $(ARCH_UM) -C $(LINUX) -f $(PWD)/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) -o scripts -o include/config/MARKER _sfdep_$(PWD) _FASTDEP_ALL_SUB_DIRS="$(PWD)" + +CLEANFILES = .depend endif if LDISKFS diff --git a/lustre/conf/Makefile.am b/lustre/conf/Makefile.am index 627f2a2..a7550c3 100644 --- a/lustre/conf/Makefile.am +++ b/lustre/conf/Makefile.am @@ -6,7 +6,6 @@ EXTRA_DIST = lustre.dtd lustre.schema slapd-lustre.conf lustre2ldif.xsl top.ldif ldapconfdir = $(sysconfdir)/openldap ldapschemadir = $(sysconfdir)/openldap/schema -pkglibdir = '${exec_prefix}/usr/lib/$(PACKAGE)' if UTILS ldapconf_SCRIPTS = slapd-lustre.conf diff --git a/lustre/conf/lustre.dtd b/lustre/conf/lustre.dtd index 96fdc8e..8fd57d8 100644 --- a/lustre/conf/lustre.dtd +++ b/lustre/conf/lustre.dtd @@ -21,12 +21,12 @@ + nettype (tcp | elan | gm) 'tcp'> - diff --git a/lustre/conf/slapd-lustre.conf b/lustre/conf/slapd-lustre.conf index 8558f64..b93b411 100644 --- a/lustre/conf/slapd-lustre.conf +++ b/lustre/conf/slapd-lustre.conf @@ -8,4 +8,4 @@ rootdn "cn=Manager,fs=lustre" include /etc/openldap/schema/lustre.schema rootpw secret directory /var/lib/ldap/lustre -index objectClass eq, uuid eq +index objectClass,uuid eq diff --git a/lustre/configure.in b/lustre/configure.in index eabc50c..df41107 100644 --- a/lustre/configure.in +++ b/lustre/configure.in @@ -5,7 +5,7 @@ AC_INIT AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(lustre, 1.2.3.2) +AM_INIT_AUTOMAKE(lustre, 1.2.4.1) # AM_MAINTAINER_MODE # Four main targets: lustre kernel modules, utilities, tests, and liblustre @@ -229,8 +229,6 @@ portals/knals/ibnal/Makefile portals/knals/ibnal/autoMakefile portals/knals/qswnal/Makefile portals/knals/qswnal/autoMakefile -portals/knals/scimacnal/Makefile -portals/knals/scimacnal/autoMakefile portals/knals/socknal/Makefile portals/knals/socknal/autoMakefile portals/libcfs/Makefile diff --git a/lustre/doc/Makefile.am b/lustre/doc/Makefile.am index a47d5e7..c165d4c 100644 --- a/lustre/doc/Makefile.am +++ b/lustre/doc/Makefile.am @@ -20,6 +20,10 @@ else DOCS = endif +if UTILS +man_MANS = lfs.1 lmc.1 lwizard.1 lconf.8 lctl.8 +endif + IMAGES := $(patsubst %.fig,%.eps,$(wildcard *.fig)) LYXFILES= $(filter-out $(patsubst %.lin,%.lyx,$(wildcard *.lin)),\ $(wildcard *.lin *.lyx)) @@ -29,7 +33,8 @@ CLEANFILES = *.aux *.tex doc.old/*.aux doc.old/*.tex *.eps *.log *.pdf VERSIONED = lustre.lyx doc.old/lustre.lyx GENERATED = $(VERSIONED) lustre-full.tex lustre-chbar.tex -EXTRA_DIST = chbar.sh postbar tex2pdf $(DOCS) $(IMAGES) $(LYXFILES) lustre.bib +EXTRA_DIST = chbar.sh postbar tex2pdf $(DOCS) $(man_MANS) $(IMAGES) \ + $(LYXFILES) lustre.bib lfs.1 lmc.1 lwizard.1 lconf.8 lctl.8 all: docs: $(DOCS) diff --git a/lustre/doc/lmc.lyx b/lustre/doc/lmc.lyx index fb14d0e..bb6ca2b 100644 --- a/lustre/doc/lmc.lyx +++ b/lustre/doc/lmc.lyx @@ -197,7 +197,7 @@ The arguments required are: --nettype\SpecialChar ~ This can be \series bold -tcp, elan, gm, scimac. +tcp, elan, gm. \layout Description --nid\SpecialChar ~ diff --git a/lustre/include/linux/lprocfs_status.h b/lustre/include/linux/lprocfs_status.h index b79b574..47f6d6e 100644 --- a/lustre/include/linux/lprocfs_status.h +++ b/lustre/include/linux/lprocfs_status.h @@ -264,6 +264,10 @@ extern int lprocfs_counter_read(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_counter_write(struct file *file, const char *buffer, unsigned long count, void *data); + +/* lprocfs_status.c: recovery status */ +int lprocfs_obd_rd_recovery_status(char *page, char **start, off_t off, + int count, int *eof, void *data); #else /* LPROCFS is not defined */ static inline void lprocfs_counter_add(struct lprocfs_stats *stats, diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h index b9a295e..b661662 100644 --- a/lustre/include/linux/lustre_compat25.h +++ b/lustre/include/linux/lustre_compat25.h @@ -100,6 +100,19 @@ static inline int cleanup_group_info(void) return 0; } +#define __set_page_ll_data(page, llap) \ + do { \ + page_cache_get(page); \ + SetPagePrivate(page); \ + page->private = (unsigned long)llap; \ + } while (0) +#define __clear_page_ll_data(page) \ + do { \ + ClearPagePrivate(page); \ + page_cache_release(page); \ + page->private = 0; \ + } while(0) + #define smp_num_cpus NR_CPUS #include @@ -194,6 +207,11 @@ static inline void cond_resched(void) #define PDE(ii) ((ii)->u.generic_ip) #endif +#define __set_page_ll_data(page, llap) page->private = (unsigned long)llap +#define __clear_page_ll_data(page) page->private = 0 +#define PageWriteback(page) 0 +#define end_page_writeback(page) + #endif /* end of 2.4 compat macros */ #ifdef HAVE_PAGE_LIST @@ -233,5 +251,37 @@ static inline int mapping_has_pages(struct address_space *mapping) } #endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,7)) +#define ll_set_dflags(dentry, flags) do { dentry->d_vfs_flags |= flags; } while(0) +#define ll_vfs_symlink(dir, dentry, path, mode) vfs_symlink(dir, dentry, path) +#else +#define ll_set_dflags(dentry, flags) do { \ + spin_lock(&dentry->d_lock); \ + dentry->d_flags |= flags; \ + spin_unlock(&dentry->d_lock); \ + } while(0) +#define ll_vfs_symlink(dir, dentry, path, mode) vfs_symlink(dir, dentry, path, mode) +#endif + +#ifdef HAVE_I_ALLOC_SEM +#define UP_WRITE_I_ALLOC_SEM(i) do { up_write(&(i)->i_alloc_sem); } while (0) +#define DOWN_WRITE_I_ALLOC_SEM(i) do { down_write(&(i)->i_alloc_sem); } while(0) +#define LASSERT_MDS_ORPHAN_WRITE_LOCKED(i) LASSERT(down_read_trylock(&(i)->i_alloc_sem) == 0) + +#define UP_READ_I_ALLOC_SEM(i) do { up_read(&(i)->i_alloc_sem); } while (0) +#define DOWN_READ_I_ALLOC_SEM(i) do { down_read(&(i)->i_alloc_sem); } while (0) +#define LASSERT_MDS_ORPHAN_READ_LOCKED(i) LASSERT(down_write_trylock(&(i)->i_alloc_sem) == 0) +#define MDS_PACK_MD_LOCK 1 +#else +#define UP_READ_I_ALLOC_SEM(i) do { up(&(i)->i_sem); } while (0) +#define DOWN_READ_I_ALLOC_SEM(i) do { down(&(i)->i_sem); } while (0) +#define LASSERT_MDS_ORPHAN_READ_LOCKED(i) LASSERT(down_trylock(&(i)->i_sem) != 0) + +#define UP_WRITE_I_ALLOC_SEM(i) do { up(&(i)->i_sem); } while (0) +#define DOWN_WRITE_I_ALLOC_SEM(i) do { down(&(i)->i_sem); } while (0) +#define LASSERT_MDS_ORPHAN_WRITE_LOCKED(i) LASSERT(down_trylock(&(i)->i_sem) != 0) +#define MDS_PACK_MD_LOCK 0 +#endif + #endif /* __KERNEL__ */ #endif /* _COMPAT25_H */ diff --git a/lustre/include/linux/lustre_idl.h b/lustre/include/linux/lustre_idl.h index ef7b3af..523e6e5 100644 --- a/lustre/include/linux/lustre_idl.h +++ b/lustre/include/linux/lustre_idl.h @@ -472,28 +472,29 @@ typedef enum { MDS_DONE_WRITING = 45, MDS_LAST_OPC } mds_cmd_t; + #define MDS_FIRST_OPC MDS_GETATTR /* * Do not exceed 63 */ -#define REINT_SETATTR 1 -#define REINT_CREATE 2 -#define REINT_LINK 3 -#define REINT_UNLINK 4 -#define REINT_RENAME 5 -#define REINT_OPEN 6 -#define REINT_MAX 6 +#define REINT_SETATTR 1 +#define REINT_CREATE 2 +#define REINT_LINK 3 +#define REINT_UNLINK 4 +#define REINT_RENAME 5 +#define REINT_OPEN 6 +#define REINT_MAX 6 /* the disposition of the intent outlines what was executed */ -#define DISP_IT_EXECD 1 -#define DISP_LOOKUP_EXECD (1 << 1) -#define DISP_LOOKUP_NEG (1 << 2) -#define DISP_LOOKUP_POS (1 << 3) -#define DISP_OPEN_CREATE (1 << 4) -#define DISP_OPEN_OPEN (1 << 5) -#define DISP_ENQ_COMPLETE (1<<6) +#define DISP_IT_EXECD 0x01 +#define DISP_LOOKUP_EXECD 0x02 +#define DISP_LOOKUP_NEG 0x04 +#define DISP_LOOKUP_POS 0x08 +#define DISP_OPEN_CREATE 0x10 +#define DISP_OPEN_OPEN 0x20 +#define DISP_ENQ_COMPLETE 0x40 struct ll_fid { __u64 id; @@ -545,12 +546,6 @@ struct mds_body { extern void lustre_swab_mds_body (struct mds_body *b); -/* MDS update records */ - -//struct mds_update_record_hdr { -// __u32 ur_opcode; -//}; - struct mds_rec_setattr { __u32 sa_opcode; __u32 sa_fsuid; @@ -954,7 +949,7 @@ struct llog_log_hdr { __u32 llh_size; __u32 llh_flags; __u32 llh_cat_idx; - /* for a catlog the first plain slot is next to it */ + /* for a catalog the first plain slot is next to it */ struct obd_uuid llh_tgtuuid; __u32 llh_reserved[LLOG_HEADER_SIZE/sizeof(__u32) - 23]; __u32 llh_bitmap[LLOG_BITMAP_BYTES/sizeof(__u32)]; diff --git a/lustre/include/linux/lustre_lib.h b/lustre/include/linux/lustre_lib.h index c55e5ff..fd32e83 100644 --- a/lustre/include/linux/lustre_lib.h +++ b/lustre/include/linux/lustre_lib.h @@ -86,6 +86,7 @@ void target_cancel_recovery_timer(struct obd_device *obd); #define OBD_RECOVERY_TIMEOUT (obd_timeout * 5 * HZ / 2) /* *waves hands* */ void target_start_recovery_timer(struct obd_device *obd, svc_handler_t handler); void target_abort_recovery(void *data); +void target_cleanup_recovery(struct obd_device *obd); int target_queue_recovery_request(struct ptlrpc_request *req, struct obd_device *obd); int target_queue_final_reply(struct ptlrpc_request *req, int rc); diff --git a/lustre/include/linux/lustre_mds.h b/lustre/include/linux/lustre_mds.h index 05f736e..b78978d 100644 --- a/lustre/include/linux/lustre_mds.h +++ b/lustre/include/linux/lustre_mds.h @@ -98,24 +98,6 @@ struct mds_update_record { #define ur_suppgid2 ur_uc.ouc_suppgid2 #define ur_umask ur_uc.ouc_umask -/* i_attr_flags holds the open count in the inode in 2.4 */ -//XXX Alex implement on 2.4 with i_attr_flags and find soln for 2.5 please -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) -# define mds_inode_oatomic(inode) ((atomic_t *)&(inode)->i_cindex) -#else -# define mds_inode_oatomic(inode) ((atomic_t *)&(inode)->i_attr_flags) -#endif - -# define mds_open_orphan_count(inode) \ - atomic_read(mds_inode_oatomic(inode)) -# define mds_open_orphan_inc(inode) \ - atomic_inc(mds_inode_oatomic(inode)) -# define mds_open_orphan_dec_test(inode) \ - atomic_dec_and_test(mds_inode_oatomic(inode)) - -#define mds_inode_is_orphan(inode) ((inode)->i_flags & 0x4000000) -#define mds_inode_set_orphan(inode) (inode)->i_flags |= 0x4000000 - #define MDS_LR_SERVER_SIZE 512 #define MDS_LR_CLIENT_START 8192 diff --git a/lustre/include/linux/obd.h b/lustre/include/linux/obd.h index 879a56b..c3eb266 100644 --- a/lustre/include/linux/obd.h +++ b/lustre/include/linux/obd.h @@ -58,7 +58,7 @@ struct lov_oinfo { /* per-stripe data structure */ struct list_head loi_write_item; struct list_head loi_read_item; - int loi_kms_valid:1; + unsigned loi_kms_valid:1; __u64 loi_kms; /* known minimum size */ __u64 loi_rss; /* recently seen size */ __u64 loi_mtime; /* recently seen mtime */ @@ -212,10 +212,10 @@ struct filter_obd { struct mds_server_data; -#define OSC_MAX_RIF_DEFAULT 4 -#define OSC_MAX_RIF_MAX 32 -#define OSC_MAX_DIRTY_DEFAULT 4 -#define OSC_MAX_DIRTY_MB_MAX 256 /* totally arbitrary */ +#define OSC_MAX_RIF_DEFAULT 8 +#define OSC_MAX_RIF_MAX 64 +#define OSC_MAX_DIRTY_DEFAULT 8 +#define OSC_MAX_DIRTY_MB_MAX 512 /* totally arbitrary */ struct mdc_rpc_lock; struct client_obd { @@ -247,7 +247,8 @@ struct client_obd { struct list_head cl_loi_ready_list; struct list_head cl_loi_write_list; struct list_head cl_loi_read_list; - int cl_brw_in_flight; + int cl_r_in_flight; + int cl_w_in_flight; /* just a sum of the loi/lop pending numbers to be exported by /proc */ int cl_pending_w_pages; int cl_pending_r_pages; @@ -508,6 +509,8 @@ struct obd_device { struct timer_list obd_recovery_timer; struct list_head obd_recovery_queue; struct list_head obd_delayed_reply_queue; + time_t obd_recovery_start; + time_t obd_recovery_end; union { struct filter_obd filter; diff --git a/lustre/include/linux/obd_support.h b/lustre/include/linux/obd_support.h index f73e97f..3647c55 100644 --- a/lustre/include/linux/obd_support.h +++ b/lustre/include/linux/obd_support.h @@ -106,6 +106,8 @@ extern wait_queue_head_t obd_race_waitq; #define OBD_FAIL_OST_ALL_REQUESTS_NET 0x212 #define OBD_FAIL_OST_LDLM_REPLY_NET 0x213 #define OBD_FAIL_OST_BRW_PAUSE_BULK 0x214 +#define OBD_FAIL_OST_ENOSPC 0x215 +#define OBD_FAIL_OST_EROFS 0x216 #define OBD_FAIL_LDLM 0x300 #define OBD_FAIL_LDLM_NAMESPACE_NEW 0x301 @@ -117,6 +119,7 @@ extern wait_queue_head_t obd_race_waitq; #define OBD_FAIL_LDLM_GL_CALLBACK 0x307 #define OBD_FAIL_LDLM_ENQUEUE_EXTENT_ERR 0x308 #define OBD_FAIL_LDLM_ENQUEUE_INTENT_ERR 0x309 +#define OBD_FAIL_LDLM_CREATE_RESOURCE 0x30a #define OBD_FAIL_OSC 0x400 #define OBD_FAIL_OSC_BRW_READ_BULK 0x401 @@ -173,7 +176,7 @@ do { \ #define OBD_FAIL_TIMEOUT(id, secs) \ do { \ if (OBD_FAIL_CHECK_ONCE(id)) { \ - CERROR("obd_fail_timeout id %x sleeping for %d secs\n", \ + CERROR("obd_fail_timeout id %x sleeping for %d secs\n", \ (id), (secs)); \ set_current_state(TASK_UNINTERRUPTIBLE); \ schedule_timeout((secs) * HZ); \ diff --git a/lustre/include/lustre/lustre_user.h b/lustre/include/lustre/lustre_user.h index f0a839a..795de30 100644 --- a/lustre/include/lustre/lustre_user.h +++ b/lustre/include/lustre/lustre_user.h @@ -30,6 +30,9 @@ #include #endif +/* for statfs() */ +#define LL_SUPER_MAGIC 0x0BD00BD0 + #define LL_IOC_GETFLAGS _IOR ('f', 151, long) #define LL_IOC_SETFLAGS _IOW ('f', 152, long) #define LL_IOC_CLRFLAGS _IOW ('f', 153, long) @@ -86,12 +89,12 @@ struct obd_uuid { static inline int obd_uuid_equals(struct obd_uuid *u1, struct obd_uuid *u2) { - return strcmp(u1->uuid, u2->uuid) == 0; + return strcmp((char *)u1->uuid, (char *)u2->uuid) == 0; } static inline void obd_str2uuid(struct obd_uuid *uuid, char *tmp) { - strncpy(uuid->uuid, tmp, sizeof(*uuid)); + strncpy((char *)uuid->uuid, tmp, sizeof(*uuid)); uuid->uuid[sizeof(*uuid) - 1] = '\0'; } diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686-smp.config similarity index 98% rename from lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586-smp.config rename to lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686-smp.config index 2a5d8da..94f370e 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586-smp.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686-smp.config @@ -20,13 +20,13 @@ CONFIG_KMOD=y # # Processor type and features # -# CONFIG_LOLAT is not set +CONFIG_LOLAT=y # CONFIG_M386 is not set # CONFIG_M486 is not set -CONFIG_M586=y +# CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set -# CONFIG_M686 is not set +CONFIG_M686=y # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set @@ -45,11 +45,13 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_X86_L1_CACHE_SHIFT=5 -CONFIG_X86_USE_STRING_486=y -CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_HAS_TSC=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_PGE=y +CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_PPRO_FENCE=y -# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_F00F_WORKS_OK=y CONFIG_X86_MCE=y # @@ -74,6 +76,7 @@ CONFIG_MTRR=y CONFIG_SMP=y # CONFIG_X86_NUMA is not set # CONFIG_X86_TSC_DISABLE is not set +CONFIG_X86_TSC=y CONFIG_HAVE_DEC_LOCK=y # CONFIG_NOBIGSTACK is not set CONFIG_STACK_SIZE_16KB=y @@ -518,15 +521,15 @@ CONFIG_SCSI_AHA1542=m CONFIG_SCSI_AHA1740=m CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m -CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_PROBE_EISA_VL is not set # CONFIG_AIC7XXX_BUILD_FIRMWARE is not set CONFIG_SCSI_AIC79XX=m -CONFIG_AIC79XX_CMDS_PER_DEVICE=253 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=15000 # CONFIG_AIC79XX_BUILD_FIRMWARE is not set -CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_SCSI_AIC7XXX_OLD=m @@ -1413,11 +1416,11 @@ CONFIG_HFS_FS=m CONFIG_BEFS_FS=m # CONFIG_BEFS_DEBUG is not set CONFIG_BFS_FS=m -CONFIG_EXT3_FS=y +CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_XATTR_SHARING=y CONFIG_EXT3_FS_XATTR_USER=y -CONFIG_JBD=y +CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m @@ -1450,8 +1453,8 @@ CONFIG_DEVPTS_FS=y CONFIG_ROMFS_FS=m CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_XATTR_SHARING=y -CONFIG_EXT2_FS_XATTR_USER=y +# CONFIG_EXT2_FS_XATTR_SHARING is not set +# CONFIG_EXT2_FS_XATTR_USER is not set CONFIG_SYSV_FS=m CONFIG_UDF_FS=m CONFIG_UDF_RW=y @@ -1847,7 +1850,7 @@ CONFIG_OPROFILE=m # Kernel hacking # CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_HIGHMEM is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_IOVIRT is not set diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686.config index 2a5d8da..94f370e 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i686.config @@ -20,13 +20,13 @@ CONFIG_KMOD=y # # Processor type and features # -# CONFIG_LOLAT is not set +CONFIG_LOLAT=y # CONFIG_M386 is not set # CONFIG_M486 is not set -CONFIG_M586=y +# CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set -# CONFIG_M686 is not set +CONFIG_M686=y # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set @@ -45,11 +45,13 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_X86_L1_CACHE_SHIFT=5 -CONFIG_X86_USE_STRING_486=y -CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_HAS_TSC=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_PGE=y +CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_PPRO_FENCE=y -# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_F00F_WORKS_OK=y CONFIG_X86_MCE=y # @@ -74,6 +76,7 @@ CONFIG_MTRR=y CONFIG_SMP=y # CONFIG_X86_NUMA is not set # CONFIG_X86_TSC_DISABLE is not set +CONFIG_X86_TSC=y CONFIG_HAVE_DEC_LOCK=y # CONFIG_NOBIGSTACK is not set CONFIG_STACK_SIZE_16KB=y @@ -518,15 +521,15 @@ CONFIG_SCSI_AHA1542=m CONFIG_SCSI_AHA1740=m CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m -CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_PROBE_EISA_VL is not set # CONFIG_AIC7XXX_BUILD_FIRMWARE is not set CONFIG_SCSI_AIC79XX=m -CONFIG_AIC79XX_CMDS_PER_DEVICE=253 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=15000 # CONFIG_AIC79XX_BUILD_FIRMWARE is not set -CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_SCSI_AIC7XXX_OLD=m @@ -1413,11 +1416,11 @@ CONFIG_HFS_FS=m CONFIG_BEFS_FS=m # CONFIG_BEFS_DEBUG is not set CONFIG_BFS_FS=m -CONFIG_EXT3_FS=y +CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_XATTR_SHARING=y CONFIG_EXT3_FS_XATTR_USER=y -CONFIG_JBD=y +CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m @@ -1450,8 +1453,8 @@ CONFIG_DEVPTS_FS=y CONFIG_ROMFS_FS=m CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_XATTR_SHARING=y -CONFIG_EXT2_FS_XATTR_USER=y +# CONFIG_EXT2_FS_XATTR_SHARING is not set +# CONFIG_EXT2_FS_XATTR_USER is not set CONFIG_SYSV_FS=m CONFIG_UDF_FS=m CONFIG_UDF_RW=y @@ -1847,7 +1850,7 @@ CONFIG_OPROFILE=m # Kernel hacking # CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_HIGHMEM is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_IOVIRT is not set diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config similarity index 91% rename from lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586.config rename to lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config index 2a5d8da..bbf82e5 100644 --- a/lustre/kernel_patches/kernel_configs/kernel-2.4.20-rh-2.4-i586.config +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686-smp.config @@ -20,23 +20,24 @@ CONFIG_KMOD=y # # Processor type and features # -# CONFIG_LOLAT is not set # CONFIG_M386 is not set # CONFIG_M486 is not set -CONFIG_M586=y +# CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set -# CONFIG_M686 is not set +CONFIG_M686=y # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set +# CONFIG_MK8 is not set # CONFIG_MELAN is not set # CONFIG_MCRUSOE is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_CMPXCHG=y @@ -45,11 +46,13 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_X86_L1_CACHE_SHIFT=5 -CONFIG_X86_USE_STRING_486=y -CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_HAS_TSC=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_PGE=y +CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_PPRO_FENCE=y -# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_F00F_WORKS_OK=y CONFIG_X86_MCE=y # @@ -64,22 +67,34 @@ CONFIG_X86_CPUID=m # CONFIG_E820_PROC is not set CONFIG_EDD=m # CONFIG_NOHIGHMEM is not set -CONFIG_HIGHMEM4G=y -# CONFIG_HIGHMEM64G is not set +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y CONFIG_HIGHMEM=y CONFIG_HIGHPTE=y +CONFIG_X86_PAE=y CONFIG_HIGHIO=y +# CONFIG_X86_4G is not set +CONFIG_3GB=y +# CONFIG_2GB is not set +# CONFIG_1GB is not set # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y CONFIG_SMP=y -# CONFIG_X86_NUMA is not set -# CONFIG_X86_TSC_DISABLE is not set -CONFIG_HAVE_DEC_LOCK=y +# CONFIG_NR_SIBLINGS_0 is not set +CONFIG_NR_SIBLINGS_2=y +CONFIG_SHARE_RUNQUEUE=y +CONFIG_MAX_NR_SIBLINGS=2 +CONFIG_X86_CLUSTERED_APIC=y +CONFIG_X86_NUMA=y +# CONFIG_X86_NUMAQ is not set +CONFIG_X86_SUMMIT=y +CONFIG_X86_CLUSTERED_APIC=y # CONFIG_NOBIGSTACK is not set CONFIG_STACK_SIZE_16KB=y # CONFIG_STACK_SIZE_32KB is not set # CONFIG_STACK_SIZE_64KB is not set CONFIG_STACK_SIZE_SHIFT=2 +CONFIG_HAVE_DEC_LOCK=y # # General setup @@ -94,6 +109,7 @@ CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_ISA=y +# CONFIG_SCx200 is not set CONFIG_PCI_NAMES=y CONFIG_EISA=y # CONFIG_MCA is not set @@ -112,11 +128,10 @@ CONFIG_I82365=y # PCI Hotplug Support # CONFIG_HOTPLUG_PCI=y -# CONFIG_HOTPLUG_PCI_ACPI is not set CONFIG_HOTPLUG_PCI_COMPAQ=m # CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set CONFIG_HOTPLUG_PCI_IBM=m -# CONFIG_HOTPLUG_PCI_H2999 is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set CONFIG_SYSVIPC=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_SYSCTL=y @@ -125,8 +140,9 @@ CONFIG_KCORE_ELF=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m +# CONFIG_IKCONFIG is not set +CONFIG_AUDIT=m CONFIG_PM=y -# CONFIG_ACPI is not set CONFIG_APM=y # CONFIG_APM_IGNORE_USER_SUSPEND is not set # CONFIG_APM_DO_ENABLE is not set @@ -164,12 +180,13 @@ CONFIG_PARPORT_1284=y # CONFIG_PNP=y CONFIG_ISAPNP=y +# CONFIG_PNPBIOS is not set # # Block devices # -CONFIG_BLK_DEV_FD=y -CONFIG_BLK_DEV_XD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_XD is not set CONFIG_PARIDE=m CONFIG_PARIDE_PARPORT=m CONFIG_PARIDE_PD=m @@ -196,12 +213,13 @@ CONFIG_PARIDE_ON26=m CONFIG_BLK_CPQ_DA=m CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y +# CONFIG_CISS_MONITOR_THREAD is not set CONFIG_BLK_DEV_DAC960=m CONFIG_BLK_DEV_UMEM=m CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_RAM_SIZE=8192 CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_STATS=y @@ -218,16 +236,6 @@ CONFIG_MD_MULTIPATH=m CONFIG_BLK_DEV_LVM=m # -# Cryptography support (CryptoAPI) -# -CONFIG_CRYPTO=m -CONFIG_CIPHERS=m -CONFIG_CIPHER_AES=m -CONFIG_CIPHER_IDENTITY=m -CONFIG_CRYPTODEV=m -CONFIG_CRYPTOLOOP=m - -# # Networking options # CONFIG_PACKET=y @@ -237,6 +245,7 @@ CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set CONFIG_FILTER=y CONFIG_UNIX=y +CONFIG_NET_KEY=m CONFIG_INET=y CONFIG_TUX=m CONFIG_TUX_EXTCGI=y @@ -250,7 +259,6 @@ CONFIG_IP_ROUTE_NAT=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_TOS=y CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_LARGE_TABLES=y # CONFIG_IP_PNP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m @@ -261,6 +269,9 @@ CONFIG_IP_PIMSM_V2=y # CONFIG_ARPD is not set # CONFIG_INET_ECN is not set CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m # # IP: Netfilter Configuration @@ -278,6 +289,7 @@ 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_RECENT=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_DSCP=m CONFIG_IP_NF_MATCH_AH_ESP=m @@ -312,11 +324,29 @@ CONFIG_IP_NF_TARGET_ULOG=m CONFIG_IP_NF_TARGET_TCPMSS=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m CONFIG_IP_NF_COMPAT_IPCHAINS=m CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_COMPAT_IPFWADM=m CONFIG_IP_NF_NAT_NEEDED=y + +# +# IP: Virtual Server Configuration +# +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=16 +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_FTP=m CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y # # IPv6: Netfilter Configuration @@ -340,6 +370,12 @@ CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_LOG=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=y # CONFIG_KHTTPD is not set CONFIG_ATM=y CONFIG_ATM_CLIP=y @@ -370,6 +406,7 @@ CONFIG_DECNET_ROUTER=y CONFIG_DECNET_ROUTE_FWMARK=y CONFIG_BRIDGE=m # CONFIG_X25 is not set +CONFIG_EDP2=m # CONFIG_LAPB is not set # CONFIG_LLC is not set CONFIG_NET_DIVERT=y @@ -495,7 +532,7 @@ CONFIG_BLK_DEV_ATARAID_SII=m # CONFIG_SCSI=m CONFIG_BLK_DEV_SD=m -CONFIG_SD_EXTRA_DEVS=40 +CONFIG_SD_EXTRA_DEVS=256 CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=m @@ -518,17 +555,21 @@ CONFIG_SCSI_AHA1542=m CONFIG_SCSI_AHA1740=m CONFIG_SCSI_AACRAID=m CONFIG_SCSI_AIC7XXX=m -CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_PROBE_EISA_VL is not set # CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set CONFIG_SCSI_AIC79XX=m -CONFIG_AIC79XX_CMDS_PER_DEVICE=253 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=15000 # CONFIG_AIC79XX_BUILD_FIRMWARE is not set -CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set CONFIG_SCSI_AIC7XXX_OLD=m CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=32 @@ -538,6 +579,13 @@ CONFIG_SCSI_ADVANSYS=m CONFIG_SCSI_IN2000=m CONFIG_SCSI_AM53C974=m CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +# CONFIG_SCSI_SATA_SVW is not set +CONFIG_SCSI_ATA_PIIX=m +# CONFIG_SCSI_SATA_PROMISE is not set +# CONFIG_SCSI_SATA_SIL is not set +# CONFIG_SCSI_SATA_VIA is not set CONFIG_SCSI_BUSLOGIC=m # CONFIG_SCSI_OMIT_FLASHPOINT is not set CONFIG_SCSI_CPQFCTS=m @@ -590,7 +638,6 @@ CONFIG_SCSI_QLOGIC_ISP=m CONFIG_SCSI_QLOGIC_FC=m # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set CONFIG_SCSI_QLOGIC_1280=m -CONFIG_SCSI_NEWISP=m CONFIG_SCSI_SEAGATE=m CONFIG_SCSI_SIM710=m CONFIG_SCSI_SYM53C416=m @@ -716,6 +763,7 @@ CONFIG_AMD8111_ETH=m CONFIG_ADAPTEC_STARFIRE=m CONFIG_AC3200=m CONFIG_APRICOT=m +CONFIG_B44=m CONFIG_CS89x0=m CONFIG_TULIP=m # CONFIG_TULIP_MWI is not set @@ -759,6 +807,7 @@ CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=m CONFIG_E1000=m +CONFIG_E1000_NAPI=y # CONFIG_MYRI_SBUS is not set CONFIG_NS83820=m CONFIG_HAMACHI=m @@ -777,9 +826,9 @@ CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_DEFLATE is not set # CONFIG_PPP_BSDCOMP is not set -CONFIG_PPPOE=m +# CONFIG_PPPOE is not set CONFIG_PPPOATM=m CONFIG_SLIP=m CONFIG_SLIP_COMPRESSED=y @@ -819,13 +868,13 @@ CONFIG_IBMLS=m CONFIG_3C359=m CONFIG_TMS380TR=m CONFIG_TMSPCI=m -CONFIG_TMSISA=m +# CONFIG_TMSISA is not set CONFIG_ABYSS=m # CONFIG_MADGEMC is not set CONFIG_SMCTR=m CONFIG_NET_FC=y CONFIG_IPHASE5526=m -CONFIG_RCPCI=m +# CONFIG_RCPCI is not set CONFIG_SHAPER=m # @@ -1111,7 +1160,8 @@ CONFIG_SERIAL_SHARE_IRQ=y CONFIG_SERIAL_MULTIPORT=y # CONFIG_HUB6 is not set CONFIG_SERIAL_NONSTANDARD=y -CONFIG_COMPUTONE=m +CONFIG_ATI_CD1865=m +# CONFIG_COMPUTONE is not set CONFIG_ROCKETPORT=m CONFIG_CYCLADES=m # CONFIG_CYZ_INTR is not set @@ -1120,6 +1170,7 @@ CONFIG_ESPSERIAL=m CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m CONFIG_ISI=m +# CONFIG_ICOM is not set CONFIG_SYNCLINK=m # CONFIG_SYNCLINKMP is not set CONFIG_N_HDLC=m @@ -1157,7 +1208,7 @@ CONFIG_I2C_HYDRA=m CONFIG_I2C_AMD756=m # CONFIG_I2C_TSUNAMI is not set CONFIG_I2C_I801=m -# CONFIG_I2C_I810 is not set +CONFIG_I2C_I810=m CONFIG_I2C_PIIX4=m CONFIG_I2C_SIS5595=m CONFIG_I2C_VIA=m @@ -1260,6 +1311,7 @@ CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set CONFIG_ACQUIRE_WDT=m CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m CONFIG_ALIM7101_WDT=m CONFIG_SC520_WDT=m CONFIG_PCWATCHDOG=m @@ -1278,16 +1330,18 @@ CONFIG_WDTPCI=m # CONFIG_WDT_501 is not set CONFIG_MACHZ_WDT=m CONFIG_AMD7XX_TCO=m +CONFIG_HANGCHECK_TIMER=m +CONFIG_HANGCHECK_DELAY=m # CONFIG_SCx200_GPIO is not set CONFIG_AMD_RNG=m CONFIG_INTEL_RNG=m CONFIG_AMD_PM768=m -CONFIG_NVRAM=m +# CONFIG_NVRAM is not set CONFIG_RTC=y CONFIG_DTLK=m CONFIG_R3964=m # CONFIG_APPLICOM is not set -CONFIG_SONYPI=m +# CONFIG_SONYPI is not set # # Ftape, the floppy tape device driver @@ -1318,17 +1372,19 @@ CONFIG_AGP_AMD_8151=y CONFIG_AGP_SIS=y CONFIG_AGP_ALI=y CONFIG_AGP_SWORKS=y +CONFIG_AGP_NVIDIA=y CONFIG_DRM=y # CONFIG_DRM_OLD is not set CONFIG_DRM_NEW=y CONFIG_DRM_TDFX=m +CONFIG_DRM_GAMMA=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_I810=m # CONFIG_DRM_I810_XFREE_41 is not set CONFIG_DRM_I830=m CONFIG_DRM_MGA=m -# CONFIG_DRM_SIS is not set +CONFIG_DRM_SIS=m # # PCMCIA character devices @@ -1336,7 +1392,6 @@ CONFIG_DRM_MGA=m CONFIG_PCMCIA_SERIAL_CS=m CONFIG_SYNCLINK_CS=m CONFIG_MWAVE=m -CONFIG_BATTERY_GERICOM=m # # Multimedia devices @@ -1364,7 +1419,7 @@ CONFIG_VIDEO_ZORAN_BUZ=m CONFIG_VIDEO_ZORAN_DC10=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZR36120=m -CONFIG_VIDEO_MEYE=m +# CONFIG_VIDEO_MEYE is not set # # Radio Adapters @@ -1388,12 +1443,6 @@ CONFIG_RADIO_TYPHOON_PROC_FS=y CONFIG_RADIO_ZOLTRIX=m # -# Crypto Hardware support -# -CONFIG_CRYPTO=m -CONFIG_CRYPTO_BROADCOM=m - -# # File systems # CONFIG_QUOTA=y @@ -1406,18 +1455,20 @@ CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set CONFIG_REISERFS_PROC_INFO=y # CONFIG_ADFS_FS is not set -CONFIG_AFS_FS=m # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set CONFIG_HFS_FS=m CONFIG_BEFS_FS=m # CONFIG_BEFS_DEBUG is not set -CONFIG_BFS_FS=m -CONFIG_EXT3_FS=y +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_XATTR_SHARING=y CONFIG_EXT3_FS_XATTR_USER=y -CONFIG_JBD=y +CONFIG_EXT3_FS_XATTR_TRUSTED=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m @@ -1426,6 +1477,8 @@ CONFIG_VFAT_FS=m # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set # CONFIG_JFFS2_FS is not set +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y CONFIG_CRAMFS=m CONFIG_TMPFS=y CONFIG_RAMFS=y @@ -1433,7 +1486,8 @@ CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_JFS_FS=m -# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_DEBUG=y # CONFIG_JFS_STATISTICS is not set CONFIG_MINIX_FS=m CONFIG_VXFS_FS=m @@ -1450,8 +1504,8 @@ CONFIG_DEVPTS_FS=y CONFIG_ROMFS_FS=m CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_XATTR_SHARING=y -CONFIG_EXT2_FS_XATTR_USER=y +# CONFIG_EXT2_FS_XATTR_SHARING is not set +# CONFIG_EXT2_FS_XATTR_USER is not set CONFIG_SYSV_FS=m CONFIG_UDF_FS=m CONFIG_UDF_RW=y @@ -1462,13 +1516,16 @@ CONFIG_UFS_FS=m # Network File Systems # CONFIG_CODA_FS=m -CONFIG_INTERMEZZO_FS=m +# CONFIG_INTERMEZZO_FS is not set CONFIG_NFS_FS=m CONFIG_NFS_V3=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_ACL=y # CONFIG_ROOT_NFS is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y -# CONFIG_NFSD_TCP is not set +CONFIG_NFSD_ACL=y +CONFIG_NFSD_TCP=y CONFIG_SUNRPC=m CONFIG_LOCKD=m CONFIG_LOCKD_V4=y @@ -1485,6 +1542,8 @@ CONFIG_NCPFS_NLS=y CONFIG_NCPFS_EXTRAS=y CONFIG_ZISOFS_FS=y CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_MBCACHE=y # # Partition Types @@ -1577,8 +1636,7 @@ CONFIG_VIDEO_SELECT=y CONFIG_FB_MATROX=m CONFIG_FB_MATROX_MILLENIUM=y CONFIG_FB_MATROX_MYSTIQUE=y -# CONFIG_FB_MATROX_G450 is not set -CONFIG_FB_MATROX_G100A=y +CONFIG_FB_MATROX_G450=y CONFIG_FB_MATROX_G100=y CONFIG_FB_MATROX_I2C=m CONFIG_FB_MATROX_MAVEN=m @@ -1590,6 +1648,7 @@ CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_CT_VAIO_LCD=y CONFIG_FB_RADEON=m CONFIG_FB_ATY128=m +CONFIG_FB_INTEL=m CONFIG_FB_SIS=m CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y @@ -1751,6 +1810,7 @@ CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_KAWETH=m CONFIG_USB_CATC=m +# CONFIG_USB_AX8817X is not set CONFIG_USB_CDCETHER=m CONFIG_USB_USBNET=m CONFIG_USB_USS720=m @@ -1774,7 +1834,7 @@ CONFIG_USB_SERIAL_EDGEPORT_TI=m CONFIG_USB_SERIAL_KEYSPAN_PDA=m CONFIG_USB_SERIAL_KEYSPAN=m # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set -# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set @@ -1804,10 +1864,13 @@ CONFIG_USB_LCD=m CONFIG_NET_BROADCOM=m CONFIG_CIPE=m CONFIG_CRYPTO_AEP=m +CONFIG_CRYPTO_BROADCOM=m CONFIG_MEGARAC=m +CONFIG_FC_QLA2100=m CONFIG_FC_QLA2200=m CONFIG_FC_QLA2300=m CONFIG_SCSI_ISCSI=m +# CONFIG_SCSI_IPR is not set # # Bluetooth support @@ -1847,17 +1910,41 @@ CONFIG_OPROFILE=m # Kernel hacking # CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_STACKOVERFLOW is not set -# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_HIGHMEM=y # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_IOVIRT is not set CONFIG_MAGIC_SYSRQ=y +CONFIG_PANIC_MORSE=y # CONFIG_DEBUG_SPINLOCK is not set -CONFIG_FRAME_POINTER=y -# CONFIG_MCL_COREDUMP is not set +# CONFIG_SMALL is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_TEST=m # # Library routines # +CONFIG_CRC32=m CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_DEFLATE=y +CONFIG_QSORT=y diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config new file mode 100644 index 0000000..bbf82e5 --- /dev/null +++ b/lustre/kernel_patches/kernel_configs/kernel-2.4.21-rhel-2.4-i686.config @@ -0,0 +1,1950 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_X86=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +CONFIG_M686=y +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_XADD=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_HAS_TSC=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_PGE=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_F00F_WORKS_OK=y +CONFIG_X86_MCE=y + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_MICROCODE=m +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +# CONFIG_E820_PROC is not set +CONFIG_EDD=m +# CONFIG_NOHIGHMEM is not set +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_X86_PAE=y +CONFIG_HIGHIO=y +# CONFIG_X86_4G is not set +CONFIG_3GB=y +# CONFIG_2GB is not set +# CONFIG_1GB is not set +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_SMP=y +# CONFIG_NR_SIBLINGS_0 is not set +CONFIG_NR_SIBLINGS_2=y +CONFIG_SHARE_RUNQUEUE=y +CONFIG_MAX_NR_SIBLINGS=2 +CONFIG_X86_CLUSTERED_APIC=y +CONFIG_X86_NUMA=y +# CONFIG_X86_NUMAQ is not set +CONFIG_X86_SUMMIT=y +CONFIG_X86_CLUSTERED_APIC=y +# CONFIG_NOBIGSTACK is not set +CONFIG_STACK_SIZE_16KB=y +# CONFIG_STACK_SIZE_32KB is not set +# CONFIG_STACK_SIZE_64KB is not set +CONFIG_STACK_SIZE_SHIFT=2 +CONFIG_HAVE_DEC_LOCK=y + +# +# General setup +# +CONFIG_NET=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_ISA=y +# CONFIG_SCx200 is not set +CONFIG_PCI_NAMES=y +CONFIG_EISA=y +# CONFIG_MCA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y + +# +# PCI Hotplug Support +# +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_COMPAQ=m +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +CONFIG_HOTPLUG_PCI_IBM=m +# CONFIG_HOTPLUG_PCI_ACPI is not set +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +# CONFIG_IKCONFIG is not set +CONFIG_AUDIT=m +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +# CONFIG_APM_DO_ENABLE is not set +CONFIG_APM_CPU_IDLE=y +# CONFIG_APM_DISPLAY_BLANK is not set +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +CONFIG_PARPORT_SERIAL=m +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Plug and Play configuration +# +CONFIG_PNP=y +CONFIG_ISAPNP=y +# CONFIG_PNPBIOS is not set + +# +# Block devices +# +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_XD is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_PARPORT=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +# CONFIG_CISS_MONITOR_THREAD is not set +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_STATS=y + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID5=m +CONFIG_MD_MULTIPATH=m +CONFIG_BLK_DEV_LVM=m + +# +# 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_NET_KEY=m +CONFIG_INET=y +CONFIG_TUX=m +CONFIG_TUX_EXTCGI=y +# CONFIG_TUX_EXTENDED_LOG is not set +# CONFIG_TUX_DEBUG is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_TFTP=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_RECENT=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=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_LOCAL=y +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +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=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_COMPAT_IPFWADM=m +CONFIG_IP_NF_NAT_NEEDED=y + +# +# IP: Virtual Server Configuration +# +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=16 +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_FTP=m +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=y +# CONFIG_KHTTPD is not set +CONFIG_ATM=y +CONFIG_ATM_CLIP=y +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_VLAN_8021Q=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m + +# +# Appletalk devices +# +CONFIG_DEV_APPLETALK=y +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_DECNET=m +CONFIG_DECNET_SIOCGIFCONF=y +CONFIG_DECNET_ROUTER=y +CONFIG_DECNET_ROUTE_FWMARK=y +CONFIG_BRIDGE=m +# CONFIG_X25 is not set +CONFIG_EDP2=m +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +CONFIG_NET_DIVERT=y +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# Telephony Support +# +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# 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=y +# CONFIG_IDEDISK_STROKE is not set +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEFLOPPY=y +CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +CONFIG_BLK_DEV_ISAPNP=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +# CONFIG_AMD74XX_OVERRIDE is not set +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +CONFIG_PDC202XX_FORCE=y +CONFIG_BLK_DEV_RZ1000=y +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +CONFIG_BLK_DEV_IDE_MODES=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m +CONFIG_BLK_DEV_ATARAID_SII=m + +# +# SCSI support +# +CONFIG_SCSI=m +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=256 +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=4 +CONFIG_CHR_DEV_SG=m +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_PROBE_EISA_VL is not set +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y +CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_OLD_PROC_STATS=y +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +# CONFIG_SCSI_SATA_SVW is not set +CONFIG_SCSI_ATA_PIIX=m +# CONFIG_SCSI_SATA_PROMISE is not set +# CONFIG_SCSI_SATA_SIL is not set +# CONFIG_SCSI_SATA_VIA is not set +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +# CONFIG_SCSI_GENERIC_NCR53C400 is not set +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR53C7xx=m +# CONFIG_SCSI_NCR53C7xx_sync is not set +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=40 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_PCILYNX is not set +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +CONFIG_IEEE1394_SBP2_PHYS_DMA=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_CMP=m +CONFIG_IEEE1394_AMDTP=m +# CONFIG_IEEE1394_VERBOSEDEBUG is not set + +# +# I2O device support +# +CONFIG_I2O=m +CONFIG_I2O_PCI=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_LAN=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_ETHERTAP=m +CONFIG_NET_SB1000=m + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +CONFIG_HAPPYMEAL=m +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +CONFIG_SUNGEM=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +# CONFIG_ULTRAMCA is not set +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +# CONFIG_EWRK3 is not set +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_MMIO=y +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +CONFIG_EEPRO100=m +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_TC35815=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +CONFIG_FDDI=y +CONFIG_DEFXX=m +CONFIG_SKFP=m +CONFIG_NETCONSOLE=m +# CONFIG_HIPPI is not set +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +CONFIG_PPPOATM=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +CONFIG_STRIP=m +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +CONFIG_AIRONET4500_PNP=y +CONFIG_AIRONET4500_PCI=y +CONFIG_AIRONET4500_ISA=y +CONFIG_AIRONET4500_I365=y +CONFIG_AIRONET4500_PROC=m +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_NET_WIRELESS=y +CONFIG_PCMCIA_HERMES_OLD=m + +# +# Token Ring devices +# +CONFIG_TR=y +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +# CONFIG_TMSISA is not set +CONFIG_ABYSS=m +# CONFIG_MADGEMC is not set +CONFIG_SMCTR=m +CONFIG_NET_FC=y +CONFIG_IPHASE5526=m +# CONFIG_RCPCI is not set +CONFIG_SHAPER=m + +# +# Wan interfaces +# +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +CONFIG_COSA=m +# CONFIG_COMX is not set +# CONFIG_DSCC4 is not set +# CONFIG_LANMEDIA is not set +CONFIG_ATI_XX20=m +CONFIG_SEALEVEL_4021=m +# CONFIG_SYNCLINK_SYNCPPP is not set +# CONFIG_HDLC is not set +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +CONFIG_WAN_ROUTER_DRIVERS=y +CONFIG_VENDOR_SANGOMA=m +CONFIG_WANPIPE_CHDLC=y +CONFIG_WANPIPE_FR=y +CONFIG_WANPIPE_X25=y +CONFIG_WANPIPE_PPP=y +CONFIG_WANPIPE_MULTPPP=y +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_LAPBETHER is not set +# CONFIG_X25_ASY is not set +CONFIG_SBNI=m +CONFIG_SBNI_MULTILINE=y + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +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=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WVLAN=m +CONFIG_AIRONET4500_CS=m + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_ZATM_EXACT_TS=y +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E=m + +# +# Amateur Radio support +# +CONFIG_HAMRADIO=y +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +# CONFIG_MKISS is not set +# CONFIG_6PACK is not set +# CONFIG_BPQETHER is not set +# CONFIG_DMASCC is not set +# CONFIG_SCC is not set +# CONFIG_BAYCOM_SER_FDX is not set +# CONFIG_BAYCOM_SER_HDX is not set +# CONFIG_BAYCOM_PAR is not set +# CONFIG_BAYCOM_EPP is not set +CONFIG_SOUNDMODEM=m +CONFIG_SOUNDMODEM_SBC=y +CONFIG_SOUNDMODEM_WSS=y +CONFIG_SOUNDMODEM_AFSK1200=y +CONFIG_SOUNDMODEM_AFSK2400_7=y +CONFIG_SOUNDMODEM_AFSK2400_8=y +CONFIG_SOUNDMODEM_AFSK2666=y +CONFIG_SOUNDMODEM_HAPN4800=y +CONFIG_SOUNDMODEM_PSK4800=y +CONFIG_SOUNDMODEM_FSK9600=y +# CONFIG_YAM is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# +CONFIG_IRTTY_SIR=m +CONFIG_IRPORT_SIR=m +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_USB_IRDA=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_OLD=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y + +# +# ISDN feature submodules +# +CONFIG_ISDN_DRV_LOOP=m +# CONFIG_ISDN_DIVERSION is not set + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_DEBUG=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_USB_AUERISDN=m + +# +# Active ISDN cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +CONFIG_ISDN_DRV_EICON=y +CONFIG_ISDN_DRV_EICON_DIVAS=m +# CONFIG_ISDN_DRV_EICON_OLD is not set +CONFIG_ISDN_DRV_TPAM=m +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_KALLSYMS=y + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +CONFIG_INPUT_MOUSEDEV=m +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_ECC=m +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +CONFIG_SERIAL_MULTIPORT=y +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_ATI_CD1865=m +# CONFIG_COMPUTONE is not set +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DIGIEPCA=m +CONFIG_ESPSERIAL=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_ISI=m +# CONFIG_ICOM is not set +CONFIG_SYNCLINK=m +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +CONFIG_RISCOM8=m +CONFIG_SPECIALIX=m +CONFIG_SPECIALIX_RTSCTS=y +CONFIG_SX=m +# CONFIG_RIO is not set +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_ISTALLION=m +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=2048 +CONFIG_PRINTER=m +CONFIG_LP_CONSOLE=y +CONFIG_PPDEV=m +CONFIG_TIPAR=m + +# +# I2C support +# +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_PHILIPSPAR=m +CONFIG_I2C_ELV=m +CONFIG_I2C_VELLEMAN=m +# CONFIG_SCx200_I2C is not set +# CONFIG_SCx200_ACB is not set +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ELEKTOR=m +CONFIG_I2C_MAINBOARD=y +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_HYDRA=m +CONFIG_I2C_AMD756=m +# CONFIG_I2C_TSUNAMI is not set +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2C_ISA=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_PROC=m + +# +# Hardware sensors support +# +CONFIG_SENSORS=y +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1024=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_FSCSCY=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_MAXILIFE=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_MTP008=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_OTHER=y +CONFIG_SENSORS_BT869=m +CONFIG_SENSORS_DDCMON=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_MATORB=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m + +# +# Mice +# +CONFIG_BUSMOUSE=m +CONFIG_ATIXL_BUSMOUSE=m +CONFIG_LOGIBUSMOUSE=m +CONFIG_MS_BUSMOUSE=m +CONFIG_MOUSE=y +CONFIG_PSMOUSE=y +CONFIG_82C710_MOUSE=m +CONFIG_PC110_PAD=m +CONFIG_MK712_MOUSE=m + +# +# Joysticks +# +CONFIG_INPUT_GAMEPORT=m +CONFIG_INPUT_NS558=m +CONFIG_INPUT_LIGHTNING=m +CONFIG_INPUT_PCIGAME=m +CONFIG_INPUT_CS461X=m +CONFIG_INPUT_EMU10K1=m +CONFIG_INPUT_SERIO=m +CONFIG_INPUT_SERPORT=m +CONFIG_INPUT_ANALOG=m +CONFIG_INPUT_A3D=m +CONFIG_INPUT_ADI=m +CONFIG_INPUT_COBRA=m +CONFIG_INPUT_GF2K=m +CONFIG_INPUT_GRIP=m +CONFIG_INPUT_INTERACT=m +CONFIG_INPUT_TMDC=m +CONFIG_INPUT_SIDEWINDER=m +CONFIG_INPUT_IFORCE_USB=m +CONFIG_INPUT_IFORCE_232=m +CONFIG_INPUT_WARRIOR=m +CONFIG_INPUT_MAGELLAN=m +CONFIG_INPUT_SPACEORB=m +CONFIG_INPUT_SPACEBALL=m +CONFIG_INPUT_STINGER=m +CONFIG_INPUT_DB9=m +CONFIG_INPUT_GAMECON=m +CONFIG_INPUT_TURBOGRAFX=m +# CONFIG_QIC02_TAPE is not set +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_KCS=m +CONFIG_IPMI_WATCHDOG=m + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_PCWATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_I810_TCO=m +# CONFIG_MIXCOMWD is not set +# CONFIG_60XX_WDT is not set +CONFIG_SC1200_WDT=m +# CONFIG_SCx200_WDT is not set +CONFIG_SOFT_WATCHDOG=m +CONFIG_W83877F_WDT=m +CONFIG_WDT=m +CONFIG_WDTPCI=m +# CONFIG_WDT_501 is not set +CONFIG_MACHZ_WDT=m +CONFIG_AMD7XX_TCO=m +CONFIG_HANGCHECK_TIMER=m +CONFIG_HANGCHECK_DELAY=m +# CONFIG_SCx200_GPIO is not set +CONFIG_AMD_RNG=m +CONFIG_INTEL_RNG=m +CONFIG_AMD_PM768=m +# CONFIG_NVRAM is not set +CONFIG_RTC=y +CONFIG_DTLK=m +CONFIG_R3964=m +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +CONFIG_FTAPE=m +CONFIG_ZFTAPE=m +CONFIG_ZFT_DFLT_BLK_SZ=10240 +CONFIG_ZFT_COMPRESSOR=m +CONFIG_FT_NR_BUFFERS=3 +# CONFIG_FT_PROC_FS is not set +CONFIG_FT_NORMAL_DEBUG=y +# CONFIG_FT_FULL_DEBUG is not set +# CONFIG_FT_NO_TRACE is not set +# CONFIG_FT_NO_TRACE_AT_ALL is not set +CONFIG_FT_STD_FDC=y +# CONFIG_FT_MACH2 is not set +# CONFIG_FT_PROBE_FC10 is not set +# CONFIG_FT_ALT_FDC is not set +CONFIG_FT_FDC_THR=8 +CONFIG_FT_FDC_MAX_RATE=2000 +CONFIG_FT_ALPHA_CLOCK=0 +CONFIG_AGP=m +CONFIG_AGP_INTEL=y +CONFIG_AGP_I810=y +CONFIG_AGP_VIA=y +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD_8151=y +CONFIG_AGP_SIS=y +CONFIG_AGP_ALI=y +CONFIG_AGP_SWORKS=y +CONFIG_AGP_NVIDIA=y +CONFIG_DRM=y +# CONFIG_DRM_OLD is not set +CONFIG_DRM_NEW=y +CONFIG_DRM_TDFX=m +CONFIG_DRM_GAMMA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +# CONFIG_DRM_I810_XFREE_41 is not set +CONFIG_DRM_I830=m +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m +CONFIG_MWAVE=m + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# +CONFIG_VIDEO_PROC_FS=y +CONFIG_I2C_PARPORT=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZR36120=m +# CONFIG_VIDEO_MEYE is not set + +# +# Radio Adapters +# +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_MIROPCM20_RDS=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_TYPHOON_PROC_FS=y +CONFIG_RADIO_ZOLTRIX=m + +# +# File systems +# +CONFIG_QUOTA=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +# CONFIG_QIFACE_COMPAT is not set +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +CONFIG_HFS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_XATTR_SHARING=y +CONFIG_EXT3_FS_XATTR_USER=y +CONFIG_EXT3_FS_XATTR_TRUSTED=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_UMSDOS_FS=m +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_CRAMFS=m +CONFIG_TMPFS=y +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_DEBUG=y +# CONFIG_JFS_STATISTICS is not set +CONFIG_MINIX_FS=m +CONFIG_VXFS_FS=m +# 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=m +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XATTR_SHARING is not set +# CONFIG_EXT2_FS_XATTR_USER is not set +CONFIG_SYSV_FS=m +CONFIG_UDF_FS=m +CONFIG_UDF_RW=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +CONFIG_CODA_FS=m +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_ACL=y +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_ACL=y +CONFIG_NFSD_TCP=y +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_ZISOFS_FS=y +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_MBCACHE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +# CONFIG_LDM_PARTITION is not set +CONFIG_SGI_PARTITION=y +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_SUN_PARTITION=y +# 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=m +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=m +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=m + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y +# CONFIG_VIDEO_IGNORE_BAD_MODE is not set +CONFIG_MDA_CONSOLE=m + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_RIVA=m +CONFIG_FB_CLGEN=m +CONFIG_FB_PM2=m +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +CONFIG_FB_PM2_PCI=y +CONFIG_FB_PM3=m +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_VESA=y +CONFIG_FB_VGA16=m +CONFIG_FB_HGA=m +CONFIG_VIDEO_SELECT=y +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G450=y +CONFIG_FB_MATROX_G100=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +# CONFIG_FB_MATROX_PROC is not set +CONFIG_FB_MATROX_MULTIHEAD=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_CT_VAIO_LCD=y +CONFIG_FB_RADEON=m +CONFIG_FB_ATY128=m +CONFIG_FB_INTEL=m +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_3DFX=m +CONFIG_FB_VOODOO1=m +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_MFB=m +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +CONFIG_FBCON_VGA_PLANES=m +CONFIG_FBCON_HGA=m +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Sound +# +CONFIG_SOUND=m +CONFIG_SOUND_ALI5455=m +CONFIG_SOUND_BT878=m +CONFIG_SOUND_CMPCI=m +CONFIG_SOUND_CMPCI_FM=y +CONFIG_SOUND_CMPCI_FMIO=388 +CONFIG_SOUND_CMPCI_FMIO=388 +CONFIG_SOUND_CMPCI_MIDI=y +CONFIG_SOUND_CMPCI_MPUIO=330 +CONFIG_SOUND_CMPCI_JOYSTICK=y +CONFIG_SOUND_CMPCI_CM8738=y +# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set +CONFIG_SOUND_CMPCI_SPDIFLOOP=y +CONFIG_SOUND_CMPCI_SPEAKERS=2 +CONFIG_SOUND_EMU10K1=m +CONFIG_MIDI_EMU10K1=y +CONFIG_SOUND_AUDIGY=m +CONFIG_SOUND_FUSION=m +CONFIG_SOUND_CS4281=m +CONFIG_SOUND_ES1370=m +CONFIG_SOUND_ES1371=m +CONFIG_SOUND_ESSSOLO1=m +CONFIG_SOUND_MAESTRO=m +CONFIG_SOUND_MAESTRO3=m +CONFIG_SOUND_FORTE=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_RME96XX=m +CONFIG_SOUND_SONICVIBES=m +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_MSNDCLAS=m +# CONFIG_MSNDCLAS_HAVE_BOOT is not set +CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin" +CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin" +CONFIG_SOUND_MSNDPIN=m +# CONFIG_MSNDPIN_HAVE_BOOT is not set +CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin" +CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin" +CONFIG_SOUND_VIA82CXXX=m +CONFIG_MIDI_VIA82CXXX=y +CONFIG_SOUND_OSS=m +# CONFIG_SOUND_TRACEINIT is not set +CONFIG_SOUND_DMAP=y +CONFIG_SOUND_AD1816=m +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_SGALAXY=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_ACI_MIXER=m +CONFIG_SOUND_CS4232=m +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_GUS=m +CONFIG_SOUND_GUS16=y +CONFIG_SOUND_GUSMAX=y +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_NM256=m +CONFIG_SOUND_MAD16=m +CONFIG_MAD16_OLDCARD=y +CONFIG_SOUND_PAS=m +# CONFIG_PAS_JOYSTICK is not set +CONFIG_SOUND_PSS=m +# CONFIG_PSS_MIXER is not set +# CONFIG_PSS_HAVE_BOOT is not set +CONFIG_SOUND_SB=m +CONFIG_SOUND_AWE32_SYNTH=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_WAVEFRONT=m +CONFIG_SOUND_MAUI=m +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_OPL3SA1=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_YMFPCI=m +CONFIG_SOUND_YMFPCI_LEGACY=y +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0 +CONFIG_AEDSP16_SBPRO=y +CONFIG_AEDSP16_MPU401=y +CONFIG_SOUND_TVMIXER=m + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m +CONFIG_USB_AUDIO=m +# CONFIG_USB_EMI26 is not set +CONFIG_USB_MIDI=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +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=m +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +CONFIG_USB_AIPTEK=m +CONFIG_USB_WACOM=m +CONFIG_USB_KBTAB=m +CONFIG_USB_POWERMATE=m +# CONFIG_USB_DC2XX is not set +CONFIG_USB_MDC800=m +CONFIG_USB_SCANNER=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_HPUSBSCSI=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_OV511=m +CONFIG_USB_PWC=m +CONFIG_USB_SE401=m +CONFIG_USB_STV680=m +CONFIG_USB_VICAM=m +CONFIG_USB_DSBR=m +CONFIG_USB_DABUSB=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +# CONFIG_USB_AX8817X is not set +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +# CONFIG_USB_SERIAL_DEBUG is not set +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_RIO500=m +CONFIG_USB_AUERSWALD=m +CONFIG_USB_TIGL=m +CONFIG_USB_BRLVGER=m +CONFIG_USB_LCD=m + +# +# Additional device driver support +# +CONFIG_NET_BROADCOM=m +CONFIG_CIPE=m +CONFIG_CRYPTO_AEP=m +CONFIG_CRYPTO_BROADCOM=m +CONFIG_MEGARAC=m +CONFIG_FC_QLA2100=m +CONFIG_FC_QLA2200=m +CONFIG_FC_QLA2300=m +CONFIG_SCSI_ISCSI=m +# CONFIG_SCSI_IPR 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 + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_USB_SCO=y +CONFIG_BLUEZ_USB_ZERO_PACKET=y +CONFIG_BLUEZ_HCIUART=m +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBT3C=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m + +# +# Profiling support +# +CONFIG_PROFILING=y +CONFIG_OPROFILE=m + +# +# Kernel hacking +# +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_FRAME_POINTER=y +CONFIG_DEBUG_HIGHMEM=y +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_IOVIRT is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_PANIC_MORSE=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_SMALL is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_TEST=m + +# +# Library routines +# +CONFIG_CRC32=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_QSORT=y diff --git a/lustre/kernel_patches/patches/configurable-x86-stack-2.4.21-chaos.patch b/lustre/kernel_patches/patches/configurable-x86-stack-2.4.21-chaos.patch index 53d846a..5be430e 100644 --- a/lustre/kernel_patches/patches/configurable-x86-stack-2.4.21-chaos.patch +++ b/lustre/kernel_patches/patches/configurable-x86-stack-2.4.21-chaos.patch @@ -1,7 +1,7 @@ -Index: linux-p4smp/arch/i386/kernel/entry.S +Index: linux-2.4.21/arch/i386/kernel/entry.S =================================================================== ---- linux-p4smp.orig/arch/i386/kernel/entry.S 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/kernel/entry.S 2004-06-14 13:14:19.000000000 -0700 +--- linux-2.4.21.orig/arch/i386/kernel/entry.S 2004-07-09 19:15:11.000000000 -0400 ++++ linux-2.4.21/arch/i386/kernel/entry.S 2004-07-16 18:00:14.000000000 -0400 @@ -46,6 +46,7 @@ #include #include @@ -10,7 +10,7 @@ Index: linux-p4smp/arch/i386/kernel/entry.S #include EBX = 0x00 -@@ -94,10 +95,6 @@ pt_sys_exit = 8 +@@ -94,10 +95,6 @@ ENOSYS = 38 @@ -21,7 +21,7 @@ Index: linux-p4smp/arch/i386/kernel/entry.S #if CONFIG_X86_HIGH_ENTRY #define call_SYMBOL_NAME_ABS(X) movl $X, %ebp; call *%ebp -@@ -193,7 +190,7 @@ ENOSYS = 38 +@@ -193,7 +190,7 @@ GET_CURRENT(%ebx); \ movl real_stack(%ebx), %edx; \ movl %esp, %ebx; \ @@ -30,7 +30,7 @@ Index: linux-p4smp/arch/i386/kernel/entry.S orl %ebx, %edx; \ movl %edx, %esp; -@@ -228,7 +225,7 @@ ENOSYS = 38 +@@ -228,7 +225,7 @@ return_path_start_marker: \ nop; \ movl %esp, %ebx; \ @@ -39,11 +39,11 @@ Index: linux-p4smp/arch/i386/kernel/entry.S orl %ebx, %edx; \ movl %esp, %eax; \ movl %edx, %esp; \ -Index: linux-p4smp/arch/i386/kernel/smpboot.c +Index: linux-2.4.21/arch/i386/kernel/smpboot.c =================================================================== ---- linux-p4smp.orig/arch/i386/kernel/smpboot.c 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/kernel/smpboot.c 2004-06-14 13:14:19.000000000 -0700 -@@ -814,7 +814,7 @@ static void __init do_boot_cpu (int apic +--- linux-2.4.21.orig/arch/i386/kernel/smpboot.c 2004-07-09 19:14:40.000000000 -0400 ++++ linux-2.4.21/arch/i386/kernel/smpboot.c 2004-07-16 18:00:14.000000000 -0400 +@@ -814,7 +814,7 @@ /* So we see what's up */ printk("Booting processor %d/%d eip %lx\n", cpu, apicid, start_eip); @@ -52,7 +52,7 @@ Index: linux-p4smp/arch/i386/kernel/smpboot.c /* * This grunge runs the startup process for -@@ -887,7 +887,7 @@ static void __init do_boot_cpu (int apic +@@ -887,7 +887,7 @@ Dprintk("CPU has booted.\n"); } else { boot_error= 1; @@ -61,7 +61,7 @@ Index: linux-p4smp/arch/i386/kernel/smpboot.c == 0xA5) /* trampoline started but...? */ printk("Stuck ??\n"); -@@ -910,7 +910,7 @@ static void __init do_boot_cpu (int apic +@@ -910,7 +910,7 @@ } /* mark "stuck" area as not stuck */ @@ -70,11 +70,11 @@ Index: linux-p4smp/arch/i386/kernel/smpboot.c if(clustered_apic_mode == CLUSTERED_APIC_NUMAQ) { printk("Restoring NMI vector\n"); -Index: linux-p4smp/arch/i386/kernel/traps.c +Index: linux-2.4.21/arch/i386/kernel/traps.c =================================================================== ---- linux-p4smp.orig/arch/i386/kernel/traps.c 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/kernel/traps.c 2004-06-14 13:14:19.000000000 -0700 -@@ -273,7 +273,7 @@ void show_trace_task(struct task_struct +--- linux-2.4.21.orig/arch/i386/kernel/traps.c 2004-07-09 19:14:54.000000000 -0400 ++++ linux-2.4.21/arch/i386/kernel/traps.c 2004-07-16 18:00:14.000000000 -0400 +@@ -180,7 +180,7 @@ unsigned long esp = tsk->thread.esp; /* User space on another CPU? */ @@ -83,10 +83,10 @@ Index: linux-p4smp/arch/i386/kernel/traps.c return; show_trace((unsigned long *)esp); } -Index: linux-p4smp/arch/i386/kernel/head.S +Index: linux-2.4.21/arch/i386/kernel/head.S =================================================================== ---- linux-p4smp.orig/arch/i386/kernel/head.S 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/kernel/head.S 2004-06-14 13:14:19.000000000 -0700 +--- linux-2.4.21.orig/arch/i386/kernel/head.S 2004-07-09 19:14:45.000000000 -0400 ++++ linux-2.4.21/arch/i386/kernel/head.S 2004-07-16 18:00:14.000000000 -0400 @@ -15,6 +15,7 @@ #include #include @@ -95,7 +95,7 @@ Index: linux-p4smp/arch/i386/kernel/head.S #define OLD_CL_MAGIC_ADDR 0x90020 #define OLD_CL_MAGIC 0xA33F -@@ -328,7 +329,7 @@ rp_sidt: +@@ -315,7 +316,7 @@ ret ENTRY(stack_start) @@ -104,10 +104,10 @@ Index: linux-p4smp/arch/i386/kernel/head.S .long __KERNEL_DS /* This is the default interrupt "handler" :-) */ -Index: linux-p4smp/arch/i386/kernel/irq.c +Index: linux-2.4.21/arch/i386/kernel/irq.c =================================================================== ---- linux-p4smp.orig/arch/i386/kernel/irq.c 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/kernel/irq.c 2004-06-14 13:14:19.000000000 -0700 +--- linux-2.4.21.orig/arch/i386/kernel/irq.c 2004-07-09 19:14:59.000000000 -0400 ++++ linux-2.4.21/arch/i386/kernel/irq.c 2004-07-16 18:00:14.000000000 -0400 @@ -45,6 +45,7 @@ #include #include @@ -116,7 +116,7 @@ Index: linux-p4smp/arch/i386/kernel/irq.c -@@ -585,7 +586,7 @@ asmlinkage unsigned int do_IRQ(struct pt +@@ -585,7 +586,7 @@ long esp; /* Debugging check for stack overflow: is there less than 1KB free? */ @@ -125,10 +125,10 @@ Index: linux-p4smp/arch/i386/kernel/irq.c if (unlikely(esp < (sizeof(struct task_struct) + 1024))) { extern void show_stack(unsigned long *); -Index: linux-p4smp/arch/i386/lib/getuser.S +Index: linux-2.4.21/arch/i386/lib/getuser.S =================================================================== ---- linux-p4smp.orig/arch/i386/lib/getuser.S 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/lib/getuser.S 2004-06-14 13:14:19.000000000 -0700 +--- linux-2.4.21.orig/arch/i386/lib/getuser.S 1998-01-12 16:42:52.000000000 -0500 ++++ linux-2.4.21/arch/i386/lib/getuser.S 2004-07-16 18:00:14.000000000 -0400 @@ -21,6 +21,10 @@ * as they get called from within inline assembly. */ @@ -140,7 +140,7 @@ Index: linux-p4smp/arch/i386/lib/getuser.S addr_limit = 12 .text -@@ -28,7 +32,7 @@ addr_limit = 12 +@@ -28,7 +32,7 @@ .globl __get_user_1 __get_user_1: movl %esp,%edx @@ -149,7 +149,7 @@ Index: linux-p4smp/arch/i386/lib/getuser.S cmpl addr_limit(%edx),%eax jae bad_get_user 1: movzbl (%eax),%edx -@@ -41,7 +45,7 @@ __get_user_2: +@@ -41,7 +45,7 @@ addl $1,%eax movl %esp,%edx jc bad_get_user @@ -158,7 +158,7 @@ Index: linux-p4smp/arch/i386/lib/getuser.S cmpl addr_limit(%edx),%eax jae bad_get_user 2: movzwl -1(%eax),%edx -@@ -54,7 +58,7 @@ __get_user_4: +@@ -54,7 +58,7 @@ addl $3,%eax movl %esp,%edx jc bad_get_user @@ -167,12 +167,12 @@ Index: linux-p4smp/arch/i386/lib/getuser.S cmpl addr_limit(%edx),%eax jae bad_get_user 3: movl -3(%eax),%edx -Index: linux-p4smp/arch/i386/config.in +Index: linux-2.4.21/arch/i386/config.in =================================================================== ---- linux-p4smp.orig/arch/i386/config.in 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/arch/i386/config.in 2004-06-14 13:14:05.000000000 -0700 -@@ -310,6 +310,28 @@ if [ "$CONFIG_SMP" = "y" -a "$CONFIG_X86 - define_bool CONFIG_HAVE_DEC_LOCK y +--- linux-2.4.21.orig/arch/i386/config.in 2004-07-09 19:15:12.000000000 -0400 ++++ linux-2.4.21/arch/i386/config.in 2004-07-16 18:00:14.000000000 -0400 +@@ -306,6 +306,28 @@ + fi fi +choice 'Bigger Stack Size Support' \ @@ -200,10 +200,36 @@ Index: linux-p4smp/arch/i386/config.in if [ "$CONFIG_SMP" = "y" -a "$CONFIG_X86_CMPXCHG" = "y" ]; then define_bool CONFIG_HAVE_DEC_LOCK y fi -Index: linux-p4smp/include/asm-i386/current.h +Index: linux-2.4.21/arch/i386/vmlinux.lds +=================================================================== +--- linux-2.4.21.orig/arch/i386/vmlinux.lds 2004-07-09 19:14:43.000000000 -0400 ++++ linux-2.4.21/arch/i386/vmlinux.lds 2004-07-16 18:00:14.000000000 -0400 +@@ -38,7 +38,7 @@ + + _edata = .; /* End of data section */ + +- . = ALIGN(8192); /* init_task */ ++ . = ALIGN(16384); /* init_task */ + .data.init_task : { *(.data.init_task) } + + . = ALIGN(4096); /* Init code and data */ +Index: linux-2.4.21/arch/i386/vmlinux.lds.in +=================================================================== +--- linux-2.4.21.orig/arch/i386/vmlinux.lds.in 2004-07-09 19:14:45.000000000 -0400 ++++ linux-2.4.21/arch/i386/vmlinux.lds.in 2004-07-16 18:00:49.000000000 -0400 +@@ -51,7 +51,7 @@ + + _edata = .; /* End of data section */ + +- . = ALIGN(8192); /* init_task */ ++ . = ALIGN(16384); /* init_task */ + .data.init_task : { *(.data.init_task) } + + entry_tramp_start = .; +Index: linux-2.4.21/include/asm-i386/current.h =================================================================== ---- linux-p4smp.orig/include/asm-i386/current.h 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/include/asm-i386/current.h 2004-06-14 13:41:19.000000000 -0700 +--- linux-2.4.21.orig/include/asm-i386/current.h 1998-08-14 19:35:22.000000000 -0400 ++++ linux-2.4.21/include/asm-i386/current.h 2004-07-16 18:00:14.000000000 -0400 @@ -1,15 +1,64 @@ #ifndef _I386_CURRENT_H #define _I386_CURRENT_H @@ -270,11 +296,11 @@ Index: linux-p4smp/include/asm-i386/current.h +#endif /* __ASSEMBLY__ */ + #endif /* !(_I386_CURRENT_H) */ -Index: linux-p4smp/include/asm-i386/hw_irq.h +Index: linux-2.4.21/include/asm-i386/hw_irq.h =================================================================== ---- linux-p4smp.orig/include/asm-i386/hw_irq.h 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/include/asm-i386/hw_irq.h 2004-06-14 13:14:19.000000000 -0700 -@@ -136,21 +136,17 @@ extern char _stext, _etext; +--- linux-2.4.21.orig/include/asm-i386/hw_irq.h 2004-07-09 19:14:45.000000000 -0400 ++++ linux-2.4.21/include/asm-i386/hw_irq.h 2004-07-16 18:00:14.000000000 -0400 +@@ -135,21 +135,17 @@ " \ /* load the real stack - keep the offset */ \ \ @@ -298,10 +324,10 @@ Index: linux-p4smp/include/asm-i386/hw_irq.h /* * SMP has a few special interrupts for IPI messages */ -Index: linux-p4smp/include/asm-i386/processor.h +Index: linux-2.4.21/include/asm-i386/processor.h =================================================================== ---- linux-p4smp.orig/include/asm-i386/processor.h 2004-06-14 13:13:07.000000000 -0700 -+++ linux-p4smp/include/asm-i386/processor.h 2004-06-14 13:14:19.000000000 -0700 +--- linux-2.4.21.orig/include/asm-i386/processor.h 2004-07-09 19:15:12.000000000 -0400 ++++ linux-2.4.21/include/asm-i386/processor.h 2004-07-16 18:00:14.000000000 -0400 @@ -14,6 +14,7 @@ #include #include @@ -310,7 +336,7 @@ Index: linux-p4smp/include/asm-i386/processor.h #include #include #include -@@ -498,10 +499,6 @@ unsigned long get_wchan(struct task_stru +@@ -494,10 +495,6 @@ #define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019]) #define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022]) diff --git a/lustre/kernel_patches/patches/iopen-2.6-vanilla.patch b/lustre/kernel_patches/patches/iopen-2.6-vanilla.patch index fb75fef..fe70c18 100644 --- a/lustre/kernel_patches/patches/iopen-2.6-vanilla.patch +++ b/lustre/kernel_patches/patches/iopen-2.6-vanilla.patch @@ -45,7 +45,7 @@ Index: linux-stage/fs/ext3/iopen.c =================================================================== --- linux-stage.orig/fs/ext3/iopen.c 1969-12-31 19:00:00.000000000 -0500 +++ linux-stage/fs/ext3/iopen.c 2004-06-22 21:13:20.000000000 -0400 -@@ -0,0 +1,272 @@ +@@ -0,0 +1,274 @@ +/* + * linux/fs/ext3/iopen.c + * @@ -146,7 +146,9 @@ Index: linux-stage/fs/ext3/iopen.c + alternate = list_entry(inode->i_dentry.next, + struct dentry, d_alias); + dget_locked(alternate); -+ alternate->d_vfs_flags |= DCACHE_REFERENCED; ++ spin_lock(&alternate->d_lock); ++ alternate->d_flags |= DCACHE_REFERENCED; ++ spin_unlock(&alternate->d_lock); + iput(inode); + spin_unlock(&dcache_lock); + return alternate; @@ -171,7 +173,7 @@ Index: linux-stage/fs/ext3/iopen.c +{ + const unsigned char *old_name, *new_name; + -+ memcpy(dentry->d_iname, target->d_iname, DNAME_INLINE_LEN); ++ memcpy(dentry->d_iname, target->d_iname, DNAME_INLINE_LEN_MIN); + old_name = target->d_name.name; + new_name = dentry->d_name.name; + if (old_name == target->d_iname) diff --git a/lustre/kernel_patches/patches/lookup_bdev_init_intent.patch b/lustre/kernel_patches/patches/lookup_bdev_init_intent.patch new file mode 100644 index 0000000..06f7939 --- /dev/null +++ b/lustre/kernel_patches/patches/lookup_bdev_init_intent.patch @@ -0,0 +1,11 @@ +diff -rupN linux-2.6.6.old/fs/block_dev.c linux-2.6.6.new/fs/block_dev.c +--- linux-2.6.6.old/fs/block_dev.c Mon May 10 05:33:22 2004 ++++ linux-2.6.6.new/fs/block_dev.c Thu Jun 24 20:34:45 2004 +@@ -834,6 +834,7 @@ struct block_device *lookup_bdev(const c + if (!path || !*path) + return ERR_PTR(-EINVAL); + ++ intent_init(&nd.intent, IT_LOOKUP); + error = path_lookup(path, LOOKUP_FOLLOW, &nd); + if (error) + return ERR_PTR(error); diff --git a/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-vanilla.patch b/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-vanilla.patch new file mode 100644 index 0000000..0c4f64b --- /dev/null +++ b/lustre/kernel_patches/patches/nfs-cifs-intent-2.6-vanilla.patch @@ -0,0 +1,117 @@ +Index: linux-2.6.7-vanilla/fs/nfs/dir.c +=================================================================== +--- linux-2.6.7-vanilla.orig/fs/nfs/dir.c 2004-07-01 12:24:53.588555336 +0300 ++++ linux-2.6.7-vanilla/fs/nfs/dir.c 2004-07-01 12:37:42.595648488 +0300 +@@ -778,7 +778,7 @@ + if (nd->flags & LOOKUP_DIRECTORY) + return 0; + /* Are we trying to write to a read only partition? */ +- if (IS_RDONLY(dir) && (nd->intent.open.flags & (O_CREAT|O_TRUNC|FMODE_WRITE))) ++ if (IS_RDONLY(dir) && (nd->intent.it_flags & (O_CREAT|O_TRUNC|FMODE_WRITE))) + return 0; + return 1; + } +@@ -799,7 +799,7 @@ + dentry->d_op = NFS_PROTO(dir)->dentry_ops; + + /* Let vfs_create() deal with O_EXCL */ +- if (nd->intent.open.flags & O_EXCL) ++ if (nd->intent.it_flags & O_EXCL) + goto no_entry; + + /* Open the file on the server */ +@@ -807,7 +807,7 @@ + /* Revalidate parent directory attribute cache */ + nfs_revalidate_inode(NFS_SERVER(dir), dir); + +- if (nd->intent.open.flags & O_CREAT) { ++ if (nd->intent.it_flags & O_CREAT) { + nfs_begin_data_update(dir); + inode = nfs4_atomic_open(dir, dentry, nd); + nfs_end_data_update(dir); +@@ -823,7 +823,7 @@ + break; + /* This turned out not to be a regular file */ + case -ELOOP: +- if (!(nd->intent.open.flags & O_NOFOLLOW)) ++ if (!(nd->intent.it_flags & O_NOFOLLOW)) + goto no_open; + /* case -EISDIR: */ + /* case -EINVAL: */ +@@ -857,7 +857,7 @@ + dir = parent->d_inode; + if (!is_atomic_open(dir, nd)) + goto no_open; +- openflags = nd->intent.open.flags; ++ openflags = nd->intent.it_flags; + if (openflags & O_CREAT) { + /* If this is a negative dentry, just drop it */ + if (!inode) +Index: linux-2.6.7-vanilla/fs/nfs/nfs4proc.c +=================================================================== +--- linux-2.6.7-vanilla.orig/fs/nfs/nfs4proc.c 2004-07-01 12:09:22.000000000 +0300 ++++ linux-2.6.7-vanilla/fs/nfs/nfs4proc.c 2004-07-01 12:37:42.598648032 +0300 +@@ -475,17 +475,17 @@ + struct nfs4_state *state; + + if (nd->flags & LOOKUP_CREATE) { +- attr.ia_mode = nd->intent.open.create_mode; ++ attr.ia_mode = nd->intent.it_create_mode; + attr.ia_valid = ATTR_MODE; + if (!IS_POSIXACL(dir)) + attr.ia_mode &= ~current->fs->umask; + } else { + attr.ia_valid = 0; +- BUG_ON(nd->intent.open.flags & O_CREAT); ++ BUG_ON(nd->intent.it_flags & O_CREAT); + } + + cred = rpcauth_lookupcred(NFS_SERVER(dir)->client->cl_auth, 0); +- state = nfs4_do_open(dir, &dentry->d_name, nd->intent.open.flags, &attr, cred); ++ state = nfs4_do_open(dir, &dentry->d_name, nd->intent.it_flags, &attr, cred); + put_rpccred(cred); + if (IS_ERR(state)) + return (struct inode *)state; +Index: linux-2.6.7-vanilla/fs/cifs/dir.c +=================================================================== +--- linux-2.6.7-vanilla.orig/fs/cifs/dir.c 2004-07-01 12:09:20.000000000 +0300 ++++ linux-2.6.7-vanilla/fs/cifs/dir.c 2004-07-01 12:38:17.695312528 +0300 +@@ -175,23 +175,23 @@ + } + + if(nd) { +- if ((nd->intent.open.flags & O_ACCMODE) == O_RDONLY) ++ if ((nd->intent.it_flags & O_ACCMODE) == O_RDONLY) + desiredAccess = GENERIC_READ; +- else if ((nd->intent.open.flags & O_ACCMODE) == O_WRONLY) { ++ else if ((nd->intent.it_flags & O_ACCMODE) == O_WRONLY) { + desiredAccess = GENERIC_WRITE; + write_only = TRUE; +- } else if ((nd->intent.open.flags & O_ACCMODE) == O_RDWR) { ++ } else if ((nd->intent.it_flags & O_ACCMODE) == O_RDWR) { + /* GENERIC_ALL is too much permission to request */ + /* can cause unnecessary access denied on create */ + /* desiredAccess = GENERIC_ALL; */ + desiredAccess = GENERIC_READ | GENERIC_WRITE; + } + +- if((nd->intent.open.flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) ++ if((nd->intent.it_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) + disposition = FILE_CREATE; +- else if((nd->intent.open.flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) ++ else if((nd->intent.it_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC)) + disposition = FILE_OVERWRITE_IF; +- else if((nd->intent.open.flags & O_CREAT) == O_CREAT) ++ else if((nd->intent.it_flags & O_CREAT) == O_CREAT) + disposition = FILE_OPEN_IF; + else { + cFYI(1,("Create flag not set in create function")); +@@ -361,7 +361,7 @@ + parent_dir_inode, direntry->d_name.name, direntry)); + + if(nd) { /* BB removeme */ +- cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.open.flags)); ++ cFYI(1,("In lookup nd flags 0x%x open intent flags 0x%x",nd->flags,nd->intent.it_flags)); + } /* BB removeme BB */ + /* BB Add check of incoming data - e.g. frame not longer than maximum SMB - let server check the namelen BB */ + diff --git a/lustre/kernel_patches/patches/qlogic-suse-2.4.21-2.patch b/lustre/kernel_patches/patches/qlogic-suse-2.4.21-2.patch new file mode 100644 index 0000000..b082a07 --- /dev/null +++ b/lustre/kernel_patches/patches/qlogic-suse-2.4.21-2.patch @@ -0,0 +1,75673 @@ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/BUILD_KERNEL.txt linux-2.4.21-x86_64/drivers/scsi/qla2xxx/BUILD_KERNEL.txt +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/BUILD_KERNEL.txt 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/BUILD_KERNEL.txt 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,216 @@ ++ Build a Custom kernel with QLogic Fibre Channel Driver ++ ++1.0 Building a Custom Kernel to Load the Driver ++------------------------------------------------- ++ ++Since it is not feasible to construct a single set of kernel build ++instructions for every possible hardware or software configuration, ++the following instructions are provided as an example of how to compile ++the driver into the Linux kernel. The user may be required to make ++some adjustments in the procedure for their particular system hardware ++or software configuration. The kernel source tree is referenced below ++as /usr/src/linux. ++ ++ ++This process is only supported on RedHat 7.1/7.2 and SuSE 7.3/ ++Enterprise 7. The kernel source tree is referenced below ++as /usr/src/linux. Under the RedHat distribution, the normal ++directory path is /usr/src/linux-2.4. For SuSE distributions, ++the kernel source is usually located in /usr/src/linux. ++ ++Prerequisites: ++ ++ a) Verify that both kernel-headers and kernel-source ++ RPMS are already installed. ++ ++ # rpm -qa | grep kernel ++ ++ If the kernel-headers and kernel-source RPMs are ++ not installed, install from the distribution's CD ++ with the following commands: ++ ++ # rpm -i kernel-sources* ++ # rpm -i kernel-headers* ++ ++1. Make a special QLogic Directory under kernel source tree ++ ++ # mkdir /usr/src/linux/drivers/scsi/qla2xxx/ ++ # cd /usr/src/linux/drivers/scsi/qla2xxx/ ++ # tar xvzf qla2x00src-v6.0.X.tgz ++ # rm -f makefile ++ # cp -f Makefile.kernel Makefile ++ ++2. Edit the Makefile under the kernel scsi directory ++ ++ # cd /usr/src/linux/drivers/scsi ++ # vi Makefile ++ ++ Look for the following line: ++ ++ subdir-$(CONFIG_SCSI_AIC7XXX) += aic7xxx ++ ++ And add the following lines: ++ ++ subdir-$(CONFIG_SCSI_QLOGIC_QLA2XXX) += qla2xxx ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200),y) ++ SUB_DIRS += qla2xxx ++ MOD_IN_SUB_DIRS += qla2xxx ++ else ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200),m) ++ MOD_IN_SUB_DIRS += qla2xxx ++ endif ++ endif ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300),y) ++ SUB_DIRS += qla2xxx ++ MOD_IN_SUB_DIRS += qla2xxx ++ else ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300),m) ++ MOD_IN_SUB_DIRS += qla2xxx ++ endif ++ endif ++ ++ The edited lines should read as: ++ ++ subdir-$(CONFIG_SCSI_AIC7XXX) += aic7xxx ++ subdir-$(CONFIG_SCSI_QLOGIC_QLA2XXX) += qla2xxx ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200),y) ++ SUB_DIRS += qla2xxx ++ MOD_IN_SUB_DIRS += qla2xxx ++ else ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200),m) ++ MOD_IN_SUB_DIRS += qla2xxx ++ endif ++ endif ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300),y) ++ SUB_DIRS += qla2xxx ++ MOD_IN_SUB_DIRS += qla2xxx ++ else ++ ifeq ($(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300),m) ++ MOD_IN_SUB_DIRS += qla2xxx ++ endif ++ endif ++ ++ NOTE: For Redhat Distributions (7.1 and 7.2) :- ++ ++ Locate the following line: ++ ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2100) += qla2x00.o ++ ++ Add the following lines below that: ++ ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200) += qla2xxx/qla2200.o ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300) += qla2xxx/qla2300.o ++ ++ Append the following lines to the end of the Makefile: ++ ++ qla2xxx/qla2200.o: ++ cd qla2xxx; make qla2200.o ++ ++ qla2xxx/qla2300.o: ++ cd qla2xxx; make qla2300.o ++ ++ NOTE: For SuSE Distributions (7.2 and 7.3) :- ++ ++ Locate the following line: ++ ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2200) += qla2200.o ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2300) += qla2300.o ++ ++ Add the following lines below that: ++ ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2200) += qla2xxx/qla2200.o ++ obj-$(CONFIG_SCSI_QLOGIC_QLA2XXX_QLA2300) += qla2xxx/qla2300.o ++ ++ Append the following lines to the end of the Makefile: ++ ++ qla2xxx/qla2200.o: ++ cd qla2xxx; make qla2200.o ++ ++ qla2xxx/qla2300.o: ++ cd qla2xxx; make qla2300.o ++ ++4. Edit the Config.in file under the kernel scsi directory ++ ++ # cd /usr/src/linux/drivers/scsi ++ # vi Config.in ++ ++ NOTE: For Redhat Distributions (7.1 and 7.2) :- ++ ++ Locate the following lines: ++ ++ dep_tristate 'Qlogic QLA 2100 FC SCSI support' CONFIG_SCSI_QLOGIC_QLA2100 $CONFIG_SCSI ++ dep_tristate 'Qlogic QLA 2200 FC SCSI support' CONFIG_SCSI_QLOGIC_QLA2200 $CONFIG_SCSI ++ ++ Add the following line below that: ++ ++ source drivers/scsi/qla2xxx/Config.in ++ ++ NOTE: For SuSE Distributions (7.2 and 7.3) :- ++ ++ Locate the following lines: ++ ++ dep_tristate 'Qlogic QLA2200 SCSI support' CONFIG_SCSI_QLOGIC_QLA2200 $CONFIG_SCSI ++ dep_tristate 'Qlogic QLA2300 SCSI support' CONFIG_SCSI_QLOGIC_QLA2300 $CONFIG_SCSI ++ ++ Add the following lines below that: ++ ++ source drivers/scsi/qla2xxx/Config.in ++ ++5. Remove any reference to older QLogic FC drivers ++ ++ NOTE: To ensure that the older driver binary included in the original ++ distribution does not interfere with the updated version, please ++ rename the old driver binary as follows: ++ ++ For Redhat Distributions (7.2 with 2.4.9-21 or above) :- ++ ++ # cd /usr/src/linux/drivers/addon/qla2200 ++ # mv qla2200.o qla2200_rh.o ++ # mv qla2300.o qla2300_rh.o ++ # cd /lib/modules//kernel/drivers/addon/qla2200 ++ # mv qla2200.o qla2200_rh.o ++ # mv qla2300.o qla2300_rh.o ++ ++ For SuSE Distributions (Enterprise 7 and above, 7.3 and above) :- ++ ++ # cd /usr/src/linux/drivers/scsi ++ # mv qla2200.o qla2200_su.o ++ # mv qla2300.o qla2300_su.o ++ # cd /lib/modules//kernel/drivers/scsi ++ # mv qla2200.o qla2200_su.o ++ # mv qla2300.o qla2300_su.o ++ ++6. Configure the kernel to load the new QLogic driver. ++ ++ # cd /usr/src/linux ++ # make menuconfig ++ ++ - Select "SCSI Support" ++ ++ - Select "SCSI Generic Support" ++ ++ - Select "SCSI low-level drivers" ++ ++ - Select "Qlogic QLA 2XXX v6 FC SCSI support" ++ ++ - Select "Qlogic QLA 2200 v6 FC SCSI support" ++ ++ OR ++ ++ - Select "Qlogic QLA 2300 v6 FC SCSI support" ++ ++ - Select Exit to go back to the SCSI Support menu. ++ ++ - Select Exit to go back to the Main Menu. ++ ++ - Select Exit to exit the Main Menu. ++ ++ The system prompts: "Do you wish to save your new kernel ++ configuration?" Select "Yes." The system saves a new config ++ file called ".config" in the current directory. ++ ++7. Build Kernel ++ ++ # make dep bzImage modules modules_install ++ ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/drvrinstall linux-2.4.21-x86_64/drivers/scsi/qla2xxx/drvrinstall +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/drvrinstall 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/drvrinstall 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,9 @@ ++#!/bin/bash ++ ++# Install QLA2X00 driver. ++ ++echo "Extracting QLogic driver source..." ++ ++tar xfz ./qla2x00src-*.tgz ++ ++echo "Done." +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/exioct.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/exioct.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/exioct.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/exioct.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -195,6 +195,8 @@ + * EXT_SC_GET_BEACON_STATE,EXT_SC_SET_BEACON_STATE for the + * led blinking feature. + * ++ * Rev. 5.30 July 21, 2003 ++ * RL - Added new statistics fields in HBA_PORT_STAT struct. + */ + + #ifndef _EXIOCT_H +@@ -651,6 +653,7 @@ typedef struct _EXT_DEST_ADDR { + #define EXT_DEF_DESTTYPE_SCSI 5 + + /* Statistic */ ++#if defined(linux) /* Linux */ + typedef struct _EXT_HBA_PORT_STAT { + UINT32 ControllerErrorCount; /* 4 */ + UINT32 DeviceErrorCount; /* 4 */ +@@ -664,8 +667,35 @@ typedef struct _EXT_HBA_PORT_STAT { + UINT32 PrimitiveSeqProtocolErrorCount;/* 4 */ + UINT32 InvalidTransmissionWordCount; /* 4 */ + UINT32 InvalidCRCCount; /* 4 */ +- UINT32 Reserved[16]; /* 64 */ ++ uint64_t InputRequestCount; /* 8 */ ++ uint64_t OutputRequestCount; /* 8 */ ++ uint64_t ControlRequestCount; /* 8 */ ++ uint64_t InputMBytes; /* 8 */ ++ uint64_t OutputMBytes; /* 8 */ ++ UINT32 Reserved[6]; /* 24 */ + } EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT; /* 112 */ ++#else ++typedef struct _EXT_HBA_PORT_STAT { ++ UINT32 ControllerErrorCount; /* 4 */ ++ UINT32 DeviceErrorCount; /* 4 */ ++ UINT32 TotalIoCount; /* 4 */ ++ UINT32 TotalMBytes; /* 4; MB of data processed */ ++ UINT32 TotalLipResets; /* 4; Total no. of LIP Reset */ ++ UINT32 Reserved2; /* 4 */ ++ UINT32 TotalLinkFailures; /* 4 */ ++ UINT32 TotalLossOfSync; /* 4 */ ++ UINT32 TotalLossOfSignals; /* 4 */ ++ UINT32 PrimitiveSeqProtocolErrorCount;/* 4 */ ++ UINT32 InvalidTransmissionWordCount; /* 4 */ ++ UINT32 InvalidCRCCount; /* 4 */ ++ UINT64 InputRequestCount; /* 8 */ ++ UINT64 OutputRequestCount; /* 8 */ ++ UINT64 ControlRequestCount; /* 8 */ ++ UINT64 InputMBytes; /* 8 */ ++ UINT64 OutputMBytes; /* 8 */ ++ UINT32 Reserved[6]; /* 24 */ ++} EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT; /* 112 */ ++#endif + + + /* Driver property */ +@@ -757,7 +787,8 @@ typedef struct _EXT_SCSI_PASSTHRU { + UINT8 Direction; + UINT8 CdbLength; + UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH]; +- UINT32 Reserved[14]; ++ UINT32 Timeout; ++ UINT32 Reserved[13]; + UINT16 Reserved2; + UINT16 SenseLength; + UINT8 SenseData[256]; +@@ -769,7 +800,8 @@ typedef struct _EXT_FC_SCSI_PASSTHRU { + UINT8 Direction; + UINT8 CdbLength; + UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH]; +- UINT32 Reserved[14]; ++ UINT32 Timeout; ++ UINT32 Reserved[13]; + UINT16 Reserved2; + UINT16 SenseLength; + UINT8 SenseData[256]; +@@ -821,6 +853,7 @@ typedef struct _EXT_ASYNC_EVENT { + #define EXT_DEF_GET_HIDDEN_DEVICE 0x4 + #define EXT_DEF_GET_FABRIC_DEVICE 0x8 + #define EXT_DEF_GET_LOOP_DEVICE 0x10 ++#define EXT_DEF_GET_TRUE_NN_DEVICE 0x1000 + + /* Each entry in device database */ + typedef struct _EXT_DEVICEDATAENTRY +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/exioctln.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/exioctln.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/exioctln.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/exioctln.h 2004-04-22 19:42:21.000000000 -0700 +@@ -149,7 +149,7 @@ typedef struct track_instance { + _IOWR(QLMULTIPATH_MAGIC, idx, sizeof(EXT_IOCTL)) + + #ifndef APILIB +- #if CONFIG_PPC64 ++ #if defined(QLA_CONFIG_COMPAT) + #define QL_IOCTL_CMD(idx) (QL_IOCTL_BASE(idx) - 0x40000) + #else + #define QL_IOCTL_CMD(idx) QL_IOCTL_BASE(idx) +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/inioct.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/inioct.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/inioct.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/inioct.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/libinstall linux-2.4.21-x86_64/drivers/scsi/qla2xxx/libinstall +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/libinstall 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/libinstall 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,77 @@ ++#!/bin/sh ++ ++# Install QLSDM library. Check /etc/hba.conf ++ ++echo "Setting up QLogic HBA API library..." ++echo "Please make sure the /usr/lib/libqlsdm.so file is not in use." ++ ++APIDIR=ApiPkg ++ ++mkdir -p ${APIDIR} ++cd ${APIDIR} ++ ++tar xfz ../qlapi*rel.tgz ++ ++# Make sure we install with correct permission ++ ++chmod 500 ./lib/* ++ ++# First, some clean up. ++MAIN_QLLIB_COPY=./lib/libqlsdm.so ++rm -f $MAIN_QLLIB_COPY ++rm -f /usr/lib/libqlsdm.a ++ ++# Right now we only support/check for IA32 and IA64 bit platforms. ++# Later need to add support for PPC64 ++ ++if [ $HOSTTYPE == ia64 ] ++then ++ ln ./lib/libqlsdm-ia64.so $MAIN_QLLIB_COPY ++else ++ ln ./lib/libqlsdm-ia32.so $MAIN_QLLIB_COPY ++fi ++ ++cp --suffix=.bak --backup=simple $MAIN_QLLIB_COPY /usr/lib ++ ++# Now check the hba.conf file ++ ++if [ -s /etc/hba.conf ] ++then ++ ++ if [ -r /etc/hba.conf ] && [ -w /etc/hba.conf ] ++ then ++ grep -v qla2x00 /etc/hba.conf > ./tmp.conf ++ ++ if [ -s ./tmp.conf ] ++ then ++ rm -f /etc/hba.conf.bak ++ mv /etc/hba.conf /etc/hba.conf.bak ++ sed '$r ./hba.conf' ./tmp.conf > /etc/hba.conf ++ fi ++ ++ rm ./tmp.conf ++ else ++ echo "Cannot update /etc/hba.conf. Permission denied." ++ exit ++ fi ++ ++else ++ cp ./hba.conf /etc ++fi ++ ++# Now check the library data file ++ ++if [ -s /tmp/qlsdm.dat ] ++then ++ if [ -r /tmp/qlsdm.dat ] && [ -w /tmp/qlsdm.dat ] ++ then ++ rm -f /tmp/qlsdm.dat ++ else ++ echo "Cannot delete /tmp/qlsdm.dat. Permission denied." ++ exit ++ fi ++fi ++ ++echo "Done." ++ ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/libremove linux-2.4.21-x86_64/drivers/scsi/qla2xxx/libremove +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/libremove 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/libremove 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,13 @@ ++#!/bin/bash ++ ++# Remove QLSDM library. Edit /etc/hba.conf ++ ++echo "Removing QLogic HBA API library..." ++ ++rm -rf /usr/lib/libqlsdm.so ++grep -v qla2x00 /etc/hba.conf > /tmp/tmp.conf ++cp --suffix=.bak --backup=simple /tmp/tmp.conf /etc/hba.conf ++rm /tmp/tmp.conf ++rm -f /tmp/qlsdm.dat ++ ++echo "Done." +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/listops.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/listops.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/listops.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/listops.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -31,6 +31,47 @@ + pos = n, n = pos->next ) + #endif + ++ ++#if !defined(list_for_each_entry) ++#define list_for_each_entry(pos, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.next, typeof(*pos), member)) ++ ++#endif ++#if !defined(list_for_each_entry_safe) ++#define list_for_each_entry_safe(pos, n, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member), \ ++ n = list_entry(pos->member.next, typeof(*pos), member); \ ++ &pos->member != (head); \ ++ pos = n, n = list_entry(n->member.next, typeof(*n), member)) ++#endif ++ ++/* Non-standard definitions. */ ++static inline void __qla_list_splice(struct list_head *list, ++ struct list_head *head) ++{ ++ struct list_head *first = list->next; ++ struct list_head *last = list->prev; ++ struct list_head *at = head->next; ++ ++ first->prev = head; ++ head->next = first; ++ ++ last->next = at; ++ at->prev = last; ++ ++} ++ ++static inline void qla_list_splice_init(struct list_head *list, ++ struct list_head *head) ++{ ++ if (!list_empty(list)) { ++ __qla_list_splice(list, head); ++ INIT_LIST_HEAD(list); ++ } ++} ++ + /* __add_to_done_queue() + * + * Place SRB command on done queue. +@@ -96,7 +137,6 @@ __add_to_retry_queue(struct scsi_qla_hos + list_add_tail(&sp->list,&ha->retry_queue); + ha->retry_q_cnt++; + sp->flags |= SRB_WATCHDOG; +- ha->flags.watchdog_enabled = TRUE; + sp->state = SRB_RETRY_STATE; + sp->ha = ha; + } +@@ -177,8 +217,6 @@ __del_from_retry_queue(struct scsi_qla_h + { + list_del_init(&sp->list); + +- if (list_empty(&ha->retry_queue)) +- ha->flags.watchdog_enabled = FALSE; + sp->flags &= ~(SRB_WATCHDOG | SRB_BUSY); + sp->state = SRB_NO_QUEUE_STATE; + ha->retry_q_cnt--; +@@ -309,15 +347,20 @@ __add_to_pending_queue_head(struct scsi_ + sp->state = SRB_PENDING_STATE; + } + +-static inline void ++/* returns 1 if the queue was empty before the add */ ++static inline int + add_to_pending_queue(struct scsi_qla_host *ha, srb_t *sp) + { + unsigned long flags; +- ++ int ret; ++ + spin_lock_irqsave(&ha->list_lock, flags); ++ ret = list_empty(&ha->pending_queue); + __add_to_pending_queue(ha, sp); + spin_unlock_irqrestore(&ha->list_lock, flags); ++ return ret; + } ++ + static inline void + add_to_pending_queue_head(struct scsi_qla_host *ha, srb_t *sp) + { +@@ -394,4 +437,4 @@ del_from_pending_queue(struct scsi_qla_h + + spin_unlock_irqrestore(&ha->list_lock, flags); + } +- ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/Makefile linux-2.4.21-x86_64/drivers/scsi/qla2xxx/Makefile +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/Makefile 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/Makefile 2004-04-22 19:42:21.000000000 -0700 +@@ -16,6 +16,52 @@ ifeq ($(CONFIG_SMP),y) + QLA_FLAGS += -D__SMP__ -DCONFIG_SMP + endif + ++SHT_FLAGS := $(CFLAGS) ++check_sht = $(shell \ ++ echo "\#include " > check_sht.c ; \ ++ echo "\#include " >> check_sht.c ; \ ++ echo "\#include " >> check_sht.c ; \ ++ echo "\#include " >> check_sht.c ; \ ++ echo "\#include " >> check_sht.c ; \ ++ echo "\#include \"sd.h\"" >> check_sht.c ; \ ++ echo "\#include \"scsi.h\"" >> check_sht.c ; \ ++ echo "\#include \"hosts.h\"" >> check_sht.c ; \ ++ echo "struct SHT test_sht;" >> check_sht.c ; \ ++ echo "void test_func(void) { test_sht.$(1) = 1; }" >> check_sht.c ; \ ++ if $(CC) $(SHT_FLAGS) -o /dev/null -c check_sht.c > /dev/null 2>&1 ; \ ++ then \ ++ echo "$(2)" ; \ ++ fi ; \ ++ rm check_sht*) ++ ++QLA_FLAGS += $(call check_sht,highmem_io,-DSHT_HAS_HIGHMEM_IO) ++QLA_FLAGS += $(call check_sht,can_dma_32,-DSHT_HAS_CAN_DMA_32) ++QLA_FLAGS += $(call check_sht,single_sg_ok,-DSHT_HAS_SINGLE_SG_OK) ++QLA_FLAGS += $(call check_sht,can_do_varyio,-DSHT_HAS_CAN_DO_VARYIO) ++QLA_FLAGS += $(call check_sht,vary_io,-DSHT_HAS_VARY_IO) ++QLA_FLAGS += $(call check_sht,need_plug_timer,-DSHT_HAS_NEED_PLUG_TIMER) ++ ++SH_FLAGS := $(CFLAGS) ++check_sh = $(shell \ ++ echo "\#include " > check_sh.c ; \ ++ echo "\#include " >> check_sh.c ; \ ++ echo "\#include " >> check_sh.c ; \ ++ echo "\#include " >> check_sh.c ; \ ++ echo "\#include " >> check_sh.c ; \ ++ echo "\#include \"sd.h\"" >> check_sh.c ; \ ++ echo "\#include \"scsi.h\"" >> check_sh.c ; \ ++ echo "\#include \"hosts.h\"" >> check_sh.c ; \ ++ echo "struct Scsi_Host test_sh;" >> check_sh.c ; \ ++ echo "void test_func(void) { test_sh.$(1) = 0; }" >> check_sh.c ; \ ++ if $(CC) $(SH_FLAGS) -o /dev/null -c check_sh.c > /dev/null 2>&1 ; \ ++ then \ ++ echo "$(2)" ; \ ++ fi ; \ ++ rm check_sh*) ++ ++QLA_FLAGS += $(call check_sh,host_lock,-DSH_HAS_HOST_LOCK) ++QLA_FLAGS += $(call check_sh,can_queue_mask,-DSH_HAS_CAN_QUEUE_MASK) ++ + qla2100.o: $(SRC_FILES) + $(CC) $(CFLAGS) $(QLA_FLAGS) -DISP2100 -c qla2100.c -o $@ + +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2100_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2100_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2100_fw.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2100_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2200_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2200_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2200_fw.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2200_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -25,7 +25,7 @@ + * * + ************************************************************************/ + /* +- * Firmware Version 2.02.04 (08:24 Feb 28, 2003) ++ * Firmware Version 2.02.06 (08:46 Jun 26, 2003) + */ + + #ifdef UNIQUE_FW_NAME +@@ -35,15 +35,15 @@ unsigned short risc_code_version = 2*102 + #endif + + #ifdef UNIQUE_FW_NAME +-unsigned char fw2200tp_version_str[] = {2,2,4}; ++unsigned char fw2200tp_version_str[] = {2,2,6}; + #else +-unsigned char firmware_version[] = {2,2,4}; ++unsigned char firmware_version[] = {2,2,6}; + #endif + + #ifdef UNIQUE_FW_NAME +-#define fw2200tp_VERSION_STRING "2.02.04" ++#define fw2200tp_VERSION_STRING "2.02.06" + #else +-#define FW_VERSION_STRING "2.02.04" ++#define FW_VERSION_STRING "2.02.06" + #endif + + #ifdef UNIQUE_FW_NAME +@@ -57,17 +57,17 @@ unsigned short fw2200tp_code01[] = { + #else + unsigned short risc_code01[] = { + #endif +- 0x0470, 0x0000, 0x0000, 0xa463, 0x0000, 0x0002, 0x0002, 0x0004, ++ 0x0470, 0x0000, 0x0000, 0xa46f, 0x0000, 0x0002, 0x0002, 0x0006, + 0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, + 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, + 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3232, 0x3030, 0x2046, 0x6972, + 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, +- 0x322e, 0x3032, 0x2e30, 0x3420, 0x2020, 0x2020, 0x2400, 0x20c1, ++ 0x322e, 0x3032, 0x2e30, 0x3620, 0x2020, 0x2020, 0x2400, 0x20c1, + 0x0005, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, 0xbaff, 0x2091, + 0x2000, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x296a, + 0x2051, 0xb500, 0x2a70, 0x2029, 0xed00, 0x2031, 0xffff, 0x2039, +- 0xece9, 0x2021, 0x0200, 0x0804, 0x1468, 0x20a1, 0xb463, 0xa00e, +- 0x20a9, 0x089d, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a, ++ 0xece9, 0x2021, 0x0200, 0x0804, 0x1468, 0x20a1, 0xb46f, 0xa00e, ++ 0x20a9, 0x0891, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a, + 0x746e, 0x20a1, 0xbd00, 0x7164, 0x810d, 0x810d, 0x810d, 0x810d, + 0xa18c, 0x000f, 0x2001, 0x000b, 0xa112, 0xa00e, 0x21a8, 0x41a4, + 0x3400, 0x8211, 0x1dd8, 0x7164, 0x3400, 0xa102, 0x0120, 0x0218, +@@ -76,65 +76,65 @@ unsigned short risc_code01[] = { + 0xa112, 0x20a1, 0x1000, 0xa00e, 0x21a8, 0x41a4, 0x8211, 0x1de0, + 0x2009, 0xb500, 0x3400, 0xa102, 0x0120, 0x0218, 0x20a8, 0xa00e, + 0x41a4, 0x080c, 0x1411, 0x080c, 0x1632, 0x080c, 0x17cf, 0x080c, +- 0x1fa2, 0x080c, 0x4c00, 0x080c, 0x85b9, 0x080c, 0x15bb, 0x080c, +- 0x2ec4, 0x080c, 0x5d8b, 0x080c, 0x5342, 0x080c, 0x68cf, 0x080c, +- 0x2510, 0x080c, 0x6b62, 0x080c, 0x63bc, 0x080c, 0x23ca, 0x080c, ++ 0x1fa2, 0x080c, 0x4bff, 0x080c, 0x85bf, 0x080c, 0x15bb, 0x080c, ++ 0x2ec4, 0x080c, 0x5d8a, 0x080c, 0x5341, 0x080c, 0x68ce, 0x080c, ++ 0x2510, 0x080c, 0x6b61, 0x080c, 0x63bb, 0x080c, 0x23ca, 0x080c, + 0x24de, 0x2091, 0x3009, 0x7823, 0x0000, 0x1004, 0x10c5, 0x7820, + 0xa086, 0x0002, 0x1150, 0x7823, 0x4000, 0x0e04, 0x10bd, 0x781b, + 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000, +- 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1158, 0x080c, 0x3f09, 0x080c, +- 0x2eeb, 0x080c, 0x5dd9, 0x080c, 0x54f1, 0x080c, 0x68fa, 0x0c80, ++ 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1158, 0x080c, 0x3f08, 0x080c, ++ 0x2eeb, 0x080c, 0x5dd8, 0x080c, 0x54f0, 0x080c, 0x68f9, 0x0c80, + 0x000b, 0x0c98, 0x10e4, 0x10e5, 0x1210, 0x10e2, 0x12dd, 0x140e, + 0x140f, 0x1410, 0x080c, 0x1515, 0x0005, 0x0126, 0x00f6, 0x2091, + 0x8000, 0x7000, 0xa086, 0x0001, 0x1904, 0x11ed, 0x080c, 0x1588, +- 0x080c, 0x5ad0, 0x0150, 0x080c, 0x5af6, 0x15c0, 0x2079, 0x0100, +- 0x7828, 0xa085, 0x1800, 0x782a, 0x0488, 0x080c, 0x5a08, 0x7000, ++ 0x080c, 0x5acf, 0x0150, 0x080c, 0x5af5, 0x15c0, 0x2079, 0x0100, ++ 0x7828, 0xa085, 0x1800, 0x782a, 0x0488, 0x080c, 0x5a07, 0x7000, + 0xa086, 0x0001, 0x1904, 0x11ed, 0x708c, 0xa086, 0x0028, 0x1904, + 0x11ed, 0x2001, 0x0161, 0x2003, 0x0001, 0x2079, 0x0100, 0x7827, +- 0xffff, 0x7a28, 0xa295, 0x1e2f, 0x7a2a, 0x2011, 0x59a3, 0x080c, +- 0x699d, 0x2011, 0x5996, 0x080c, 0x6a5d, 0x2011, 0x59e5, 0x080c, +- 0x699d, 0x2011, 0x4add, 0x080c, 0x699d, 0x2011, 0x8030, 0x2019, +- 0x0000, 0x708b, 0x0000, 0x080c, 0x1de9, 0x00e8, 0x080c, 0x4490, +- 0x2079, 0x0100, 0x7844, 0xa005, 0x1904, 0x11ed, 0x2011, 0x4add, +- 0x080c, 0x699d, 0x2011, 0x59e5, 0x080c, 0x699d, 0x080c, 0x1de9, ++ 0xffff, 0x7a28, 0xa295, 0x1e2f, 0x7a2a, 0x2011, 0x59a2, 0x080c, ++ 0x699c, 0x2011, 0x5995, 0x080c, 0x6a5c, 0x2011, 0x59e4, 0x080c, ++ 0x699c, 0x2011, 0x4adc, 0x080c, 0x699c, 0x2011, 0x8030, 0x2019, ++ 0x0000, 0x708b, 0x0000, 0x080c, 0x1de9, 0x00e8, 0x080c, 0x448f, ++ 0x2079, 0x0100, 0x7844, 0xa005, 0x1904, 0x11ed, 0x2011, 0x4adc, ++ 0x080c, 0x699c, 0x2011, 0x59e4, 0x080c, 0x699c, 0x080c, 0x1de9, + 0x2001, 0xb78d, 0x2004, 0x780e, 0x7840, 0xa084, 0xfffb, 0x7842, +- 0x2011, 0x8010, 0x73cc, 0x080c, 0x3ecd, 0x723c, 0xc284, 0x723e, +- 0x2001, 0xb50c, 0x200c, 0xc1ac, 0x2102, 0x080c, 0x7f36, 0x2011, +- 0x0004, 0x080c, 0x9c5a, 0x080c, 0x524e, 0x080c, 0x5ad0, 0x0158, +- 0x080c, 0x4be9, 0x0140, 0x708b, 0x0001, 0x70c7, 0x0000, 0x080c, +- 0x462d, 0x0804, 0x11ed, 0x080c, 0x530a, 0x0120, 0x7a0c, 0xc2b4, +- 0x7a0e, 0x0060, 0x7073, 0x0000, 0x080c, 0xa002, 0x70d4, 0xd09c, +- 0x1128, 0x70a0, 0xa005, 0x0110, 0x080c, 0x4bc7, 0x70df, 0x0000, +- 0x70db, 0x0000, 0x72d4, 0x080c, 0x5ad0, 0x1178, 0x2011, 0x0000, ++ 0x2011, 0x8010, 0x73cc, 0x080c, 0x3ecc, 0x723c, 0xc284, 0x723e, ++ 0x2001, 0xb50c, 0x200c, 0xc1ac, 0x2102, 0x080c, 0x7f35, 0x2011, ++ 0x0004, 0x080c, 0x9c60, 0x080c, 0x524d, 0x080c, 0x5acf, 0x0158, ++ 0x080c, 0x4be8, 0x0140, 0x708b, 0x0001, 0x70c7, 0x0000, 0x080c, ++ 0x462c, 0x0804, 0x11ed, 0x080c, 0x5309, 0x0120, 0x7a0c, 0xc2b4, ++ 0x7a0e, 0x0060, 0x7073, 0x0000, 0x080c, 0xa008, 0x70d4, 0xd09c, ++ 0x1128, 0x70a0, 0xa005, 0x0110, 0x080c, 0x4bc6, 0x70df, 0x0000, ++ 0x70db, 0x0000, 0x72d4, 0x080c, 0x5acf, 0x1178, 0x2011, 0x0000, + 0x0016, 0x080c, 0x28eb, 0x2019, 0xb78f, 0x211a, 0x001e, 0x7053, + 0xffff, 0x7057, 0x00ef, 0x7077, 0x0000, 0x2079, 0xb552, 0x7804, +- 0xd0ac, 0x0108, 0xc295, 0x72d6, 0x080c, 0x5ad0, 0x0118, 0xa296, +- 0x0004, 0x0548, 0x2011, 0x0001, 0x080c, 0x9c5a, 0x709b, 0x0000, ++ 0xd0ac, 0x0108, 0xc295, 0x72d6, 0x080c, 0x5acf, 0x0118, 0xa296, ++ 0x0004, 0x0548, 0x2011, 0x0001, 0x080c, 0x9c60, 0x709b, 0x0000, + 0x709f, 0xffff, 0x7003, 0x0002, 0x2079, 0x0100, 0x7827, 0x0003, + 0x7828, 0xa085, 0x0003, 0x782a, 0x00fe, 0x080c, 0x2ab8, 0x2011, +- 0x0005, 0x080c, 0x8076, 0x080c, 0x7174, 0x080c, 0x5ad0, 0x0148, ++ 0x0005, 0x080c, 0x8075, 0x080c, 0x7173, 0x080c, 0x5acf, 0x0148, + 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x28eb, 0x61e2, 0x001e, + 0x00ce, 0x012e, 0x0420, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, + 0x0002, 0x00f6, 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0xa085, +- 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005, 0x080c, 0x8076, 0x080c, +- 0x7174, 0x080c, 0x5ad0, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, ++ 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005, 0x080c, 0x8075, 0x080c, ++ 0x7173, 0x080c, 0x5acf, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, + 0x080c, 0x28eb, 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, +- 0x00c6, 0x080c, 0x5ad0, 0x1118, 0x20a9, 0x0100, 0x0010, 0x20a9, +- 0x0082, 0x080c, 0x5ad0, 0x1118, 0x2009, 0x0000, 0x0010, 0x2009, ++ 0x00c6, 0x080c, 0x5acf, 0x1118, 0x20a9, 0x0100, 0x0010, 0x20a9, ++ 0x0082, 0x080c, 0x5acf, 0x1118, 0x2009, 0x0000, 0x0010, 0x2009, + 0x007e, 0x080c, 0x2d97, 0x8108, 0x1f04, 0x1201, 0x00ce, 0x7073, + 0x0000, 0x7074, 0xa084, 0x00ff, 0x7076, 0x70a3, 0x0000, 0x0005, + 0x0126, 0x2091, 0x8000, 0x7000, 0xa086, 0x0002, 0x1904, 0x12db, +- 0x709c, 0xa086, 0xffff, 0x0130, 0x080c, 0x2ab8, 0x080c, 0x7174, ++ 0x709c, 0xa086, 0xffff, 0x0130, 0x080c, 0x2ab8, 0x080c, 0x7173, + 0x0804, 0x12db, 0x70d4, 0xd0ac, 0x1110, 0xd09c, 0x0540, 0xd084, + 0x0530, 0x0006, 0x0016, 0x2001, 0x0103, 0x2009, 0xb78d, 0x210c, + 0x2102, 0x001e, 0x000e, 0xd08c, 0x01d0, 0x70d8, 0xa086, 0xffff, +- 0x0190, 0x080c, 0x2c17, 0x080c, 0x7174, 0x70d4, 0xd094, 0x1904, ++ 0x0190, 0x080c, 0x2c17, 0x080c, 0x7173, 0x70d4, 0xd094, 0x1904, + 0x12db, 0x2011, 0x0001, 0x2019, 0x0000, 0x080c, 0x2c4f, 0x080c, +- 0x7174, 0x0804, 0x12db, 0x70dc, 0xa005, 0x1904, 0x12db, 0x7098, ++ 0x7173, 0x0804, 0x12db, 0x70dc, 0xa005, 0x1904, 0x12db, 0x7098, + 0xa005, 0x1904, 0x12db, 0x70d4, 0xd0a4, 0x0118, 0xd0b4, 0x0904, +- 0x12db, 0x080c, 0x530a, 0x1904, 0x12db, 0x2001, 0xb553, 0x2004, ++ 0x12db, 0x080c, 0x5309, 0x1904, 0x12db, 0x2001, 0xb553, 0x2004, + 0xd0ac, 0x01c8, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, +- 0x0016, 0x080c, 0x4faa, 0x1118, 0x6000, 0xd0ec, 0x1138, 0x001e, ++ 0x0016, 0x080c, 0x4fa9, 0x1118, 0x6000, 0xd0ec, 0x1138, 0x001e, + 0x8108, 0x1f04, 0x1268, 0x00ce, 0x015e, 0x0028, 0x001e, 0x00ce, + 0x015e, 0x0804, 0x12db, 0x0006, 0x0016, 0x2001, 0x0103, 0x2009, + 0xb78d, 0x210c, 0x2102, 0x001e, 0x000e, 0x71a8, 0x81ff, 0x11b0, +@@ -143,55 +143,55 @@ unsigned short risc_code01[] = { + 0x8007, 0x7174, 0x810f, 0x20a9, 0x0002, 0x40a1, 0x20a1, 0xb7d2, + 0x2009, 0x0000, 0x080c, 0x14fb, 0x2001, 0x0000, 0x810f, 0x20a9, + 0x0002, 0x40a1, 0x7030, 0xc08c, 0x7032, 0x7003, 0x0003, 0x709f, +- 0xffff, 0x080c, 0x1581, 0xa006, 0x080c, 0x27c3, 0x080c, 0x3f3f, +- 0x00f6, 0x2079, 0x0100, 0x080c, 0x5af6, 0x0150, 0x080c, 0x5ad0, ++ 0xffff, 0x080c, 0x1581, 0xa006, 0x080c, 0x27c3, 0x080c, 0x3f3e, ++ 0x00f6, 0x2079, 0x0100, 0x080c, 0x5af5, 0x0150, 0x080c, 0x5acf, + 0x7828, 0x0118, 0xa084, 0xe1ff, 0x0010, 0xa084, 0xffdf, 0x782a, + 0x00fe, 0x2001, 0xb7e1, 0x2004, 0xa086, 0x0005, 0x1120, 0x2011, +- 0x0000, 0x080c, 0x8076, 0x2011, 0x0000, 0x080c, 0x8080, 0x080c, +- 0x7174, 0x080c, 0x7231, 0x012e, 0x0005, 0x0016, 0x0046, 0x00f6, ++ 0x0000, 0x080c, 0x8075, 0x2011, 0x0000, 0x080c, 0x807f, 0x080c, ++ 0x7173, 0x080c, 0x7230, 0x012e, 0x0005, 0x0016, 0x0046, 0x00f6, + 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x2009, 0xb534, 0x2104, +- 0xa005, 0x1110, 0x080c, 0x2917, 0x2009, 0x00f7, 0x080c, 0x4bb0, ++ 0xa005, 0x1110, 0x080c, 0x2917, 0x2009, 0x00f7, 0x080c, 0x4baf, + 0x7940, 0xa18c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110, 0x7827, + 0x0040, 0xd19c, 0x0110, 0x7827, 0x0008, 0x0006, 0x0036, 0x0156, +- 0x7954, 0xd1ac, 0x1904, 0x134b, 0x080c, 0x5ae2, 0x0158, 0x080c, +- 0x5af6, 0x1128, 0x2001, 0xb79e, 0x2003, 0x0000, 0x0070, 0x080c, +- 0x5ad8, 0x0dc0, 0x2001, 0xb79e, 0x2003, 0xaaaa, 0x2001, 0xb79f, +- 0x2003, 0x0001, 0x080c, 0x5a08, 0x0058, 0x080c, 0x5ad0, 0x0140, +- 0x2009, 0x00f8, 0x080c, 0x4bb0, 0x7843, 0x0090, 0x7843, 0x0010, +- 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138, 0x080c, 0x5ad0, 0x0138, ++ 0x7954, 0xd1ac, 0x1904, 0x134b, 0x080c, 0x5ae1, 0x0158, 0x080c, ++ 0x5af5, 0x1128, 0x2001, 0xb79e, 0x2003, 0x0000, 0x0070, 0x080c, ++ 0x5ad7, 0x0dc0, 0x2001, 0xb79e, 0x2003, 0xaaaa, 0x2001, 0xb79f, ++ 0x2003, 0x0001, 0x080c, 0x5a07, 0x0058, 0x080c, 0x5acf, 0x0140, ++ 0x2009, 0x00f8, 0x080c, 0x4baf, 0x7843, 0x0090, 0x7843, 0x0010, ++ 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138, 0x080c, 0x5acf, 0x0138, + 0x7824, 0xd0ac, 0x1904, 0x13f5, 0x1f04, 0x132a, 0x0070, 0x7824, +- 0x080c, 0x5aec, 0x0118, 0xd0ac, 0x1904, 0x13f5, 0xa084, 0x1800, ++ 0x080c, 0x5aeb, 0x0118, 0xd0ac, 0x1904, 0x13f5, 0xa084, 0x1800, + 0x0d98, 0x7003, 0x0001, 0x0804, 0x13f5, 0x2001, 0x0001, 0x080c, + 0x27c3, 0x0804, 0x1404, 0x7850, 0xa084, 0x0180, 0x7852, 0x782f, +- 0x0020, 0x20a9, 0x0046, 0x1d04, 0x1353, 0x080c, 0x6a45, 0x1f04, ++ 0x0020, 0x20a9, 0x0046, 0x1d04, 0x1353, 0x080c, 0x6a44, 0x1f04, + 0x1353, 0x7850, 0xa084, 0x0180, 0xa085, 0x0400, 0x7852, 0x782f, +- 0x0000, 0x080c, 0x5ae2, 0x0158, 0x080c, 0x5af6, 0x1128, 0x2001, +- 0xb79e, 0x2003, 0x0000, 0x0070, 0x080c, 0x5ad8, 0x0dc0, 0x2001, ++ 0x0000, 0x080c, 0x5ae1, 0x0158, 0x080c, 0x5af5, 0x1128, 0x2001, ++ 0xb79e, 0x2003, 0x0000, 0x0070, 0x080c, 0x5ad7, 0x0dc0, 0x2001, + 0xb79e, 0x2003, 0xaaaa, 0x2001, 0xb79f, 0x2003, 0x0001, 0x080c, +- 0x5a08, 0x0020, 0x2009, 0x00f8, 0x080c, 0x4bb0, 0x20a9, 0x000e, ++ 0x5a07, 0x0020, 0x2009, 0x00f8, 0x080c, 0x4baf, 0x20a9, 0x000e, + 0xe000, 0x1f04, 0x1380, 0x7850, 0xa084, 0x0180, 0xa085, 0x1400, +- 0x7852, 0x080c, 0x5ad0, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, ++ 0x7852, 0x080c, 0x5acf, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, + 0x2021, 0xe678, 0x2019, 0xea60, 0x7820, 0xd09c, 0x1558, 0x080c, +- 0x5ad0, 0x05d8, 0x7824, 0xd0ac, 0x1904, 0x13f5, 0x080c, 0x5af6, ++ 0x5acf, 0x05d8, 0x7824, 0xd0ac, 0x1904, 0x13f5, 0x080c, 0x5af5, + 0x1508, 0x0046, 0x2021, 0x0190, 0x8421, 0x1df0, 0x004e, 0x8421, + 0x11c8, 0x7827, 0x0048, 0x20a9, 0x01f4, 0x1d04, 0x13ad, 0x080c, +- 0x6a45, 0x1f04, 0x13ad, 0x7824, 0xa084, 0x0068, 0x15c8, 0x2001, ++ 0x6a44, 0x1f04, 0x13ad, 0x7824, 0xa084, 0x0068, 0x15c8, 0x2001, + 0xb79e, 0x2003, 0xaaaa, 0x2001, 0xb79f, 0x2003, 0x0001, 0x7003, +- 0x0001, 0x0498, 0x1d04, 0x13c6, 0x080c, 0x6a45, 0x8319, 0x1960, ++ 0x0001, 0x0498, 0x1d04, 0x13c6, 0x080c, 0x6a44, 0x8319, 0x1960, + 0x2009, 0xb534, 0x2104, 0x8000, 0x200a, 0xa084, 0xfff0, 0x0120, +- 0x200b, 0x0000, 0x080c, 0x2917, 0x00d8, 0x080c, 0x5ae2, 0x1140, +- 0xa4a2, 0x0064, 0x1128, 0x080c, 0x5aa7, 0x7003, 0x0001, 0x00a8, +- 0x7827, 0x1800, 0xe000, 0xe000, 0x7824, 0x080c, 0x5aec, 0x0110, ++ 0x200b, 0x0000, 0x080c, 0x2917, 0x00d8, 0x080c, 0x5ae1, 0x1140, ++ 0xa4a2, 0x0064, 0x1128, 0x080c, 0x5aa6, 0x7003, 0x0001, 0x00a8, ++ 0x7827, 0x1800, 0xe000, 0xe000, 0x7824, 0x080c, 0x5aeb, 0x0110, + 0xd0ac, 0x1158, 0xa084, 0x1800, 0x09a8, 0x7003, 0x0001, 0x0028, + 0x2001, 0x0001, 0x080c, 0x27c3, 0x0048, 0x2001, 0xb534, 0x2003, + 0x0000, 0x7827, 0x0048, 0x7828, 0xc09d, 0x782a, 0x7850, 0xa084, + 0x0180, 0xa085, 0x0400, 0x7852, 0x015e, 0x003e, 0x000e, 0x080c, + 0x1558, 0x012e, 0x00fe, 0x004e, 0x001e, 0x0005, 0x0005, 0x0005, + 0x0005, 0x2a70, 0x2061, 0xb7c1, 0x2063, 0x0002, 0x6007, 0x0002, +- 0x600b, 0x0004, 0x600f, 0x0017, 0x2001, 0xb79e, 0x2003, 0x0000, ++ 0x600b, 0x0006, 0x600f, 0x0017, 0x2001, 0xb79e, 0x2003, 0x0000, + 0x708b, 0x0000, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0218, + 0x7053, 0xffff, 0x0010, 0x7053, 0x0000, 0x705b, 0xffff, 0x7073, +- 0x0000, 0x7077, 0x0000, 0x080c, 0xa002, 0x2061, 0xb78e, 0x6003, ++ 0x0000, 0x7077, 0x0000, 0x080c, 0xa008, 0x2061, 0xb78e, 0x6003, + 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, 0x0200, 0x6013, + 0x00ff, 0x6017, 0x000f, 0x601b, 0x0000, 0x601f, 0x07d0, 0x2061, + 0xb796, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, 0x0000, 0x600f, +@@ -216,7 +216,7 @@ unsigned short risc_code01[] = { + 0xe000, 0xe000, 0x2c1c, 0x2061, 0x7fff, 0x2c04, 0x2061, 0xffff, + 0x2262, 0xa306, 0x1110, 0xc195, 0x0008, 0xc19d, 0x2011, 0x0001, + 0x2019, 0x14f3, 0x0010, 0x0804, 0x1469, 0x3800, 0xa084, 0xfffc, +- 0xa205, 0x20c0, 0x0837, 0x2011, 0x0000, 0x080c, 0x4faa, 0x1178, ++ 0xa205, 0x20c0, 0x0837, 0x2011, 0x0000, 0x080c, 0x4fa9, 0x1178, + 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0128, 0xa0c4, 0xff00, + 0xa8c6, 0x0600, 0x1120, 0xa186, 0x0080, 0x0108, 0x8210, 0x8108, + 0xa186, 0x0100, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, 0x0e04, +@@ -303,10 +303,10 @@ unsigned short risc_code01[] = { + 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, + 0x53a5, 0x2001, 0xb5fa, 0x2004, 0xd0bc, 0x0148, 0x2001, 0xb603, + 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x015e, +- 0x014e, 0x013e, 0x7007, 0x0000, 0x080c, 0x5e70, 0x080c, 0x166c, +- 0x0005, 0x2011, 0x8003, 0x080c, 0x3ecd, 0x0cf8, 0xa18c, 0x0700, ++ 0x014e, 0x013e, 0x7007, 0x0000, 0x080c, 0x5e6f, 0x080c, 0x166c, ++ 0x0005, 0x2011, 0x8003, 0x080c, 0x3ecc, 0x0cf8, 0xa18c, 0x0700, + 0x1148, 0x2001, 0xb628, 0x2003, 0x0100, 0x7007, 0x0000, 0x080c, +- 0x166c, 0x0005, 0x2011, 0x8004, 0x080c, 0x3ecd, 0x0cf8, 0x0126, ++ 0x166c, 0x0005, 0x2011, 0x8004, 0x080c, 0x3ecc, 0x0cf8, 0x0126, + 0x2091, 0x2200, 0x2079, 0x0030, 0x2071, 0xb823, 0x7003, 0x0000, + 0x700f, 0xb82f, 0x7013, 0xb82f, 0x780f, 0x00f6, 0x7803, 0x0004, + 0x012e, 0x0005, 0x6934, 0xa184, 0x0007, 0x0002, 0x17ee, 0x182c, +@@ -345,7 +345,7 @@ unsigned short risc_code01[] = { + 0x2001, 0x0207, 0x2004, 0xd09c, 0x1d48, 0x7804, 0xa084, 0x6000, + 0x0120, 0xa086, 0x6000, 0x0108, 0x0c08, 0x7818, 0x6812, 0x781c, + 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6100, +- 0xa18e, 0x0004, 0x1904, 0x1949, 0x2009, 0x0048, 0x080c, 0x8646, ++ 0xa18e, 0x0004, 0x1904, 0x1949, 0x2009, 0x0048, 0x080c, 0x864c, + 0x0804, 0x1949, 0x6808, 0xa005, 0x05a0, 0x7000, 0xa005, 0x0588, + 0x700c, 0x7110, 0xa106, 0x1118, 0x7004, 0xa406, 0x1550, 0x2001, + 0x0005, 0x2004, 0xd08c, 0x0160, 0x0046, 0x080c, 0x1b06, 0x004e, +@@ -354,7 +354,7 @@ unsigned short risc_code01[] = { + 0xd08c, 0x1d50, 0x7804, 0xa084, 0x6000, 0x0118, 0xa086, 0x6000, + 0x19f0, 0x7818, 0x6812, 0x781c, 0x6816, 0x7803, 0x0004, 0x7003, + 0x0000, 0x6100, 0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, +- 0x8646, 0x00ce, 0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, ++ 0x864c, 0x00ce, 0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, + 0x0036, 0x0046, 0x0056, 0x2071, 0xb823, 0x7000, 0xa086, 0x0000, + 0x0904, 0x19b3, 0x7004, 0xac06, 0x1904, 0x19a5, 0x2079, 0x0030, + 0x7000, 0xa086, 0x0003, 0x0904, 0x19a5, 0x7804, 0xd0fc, 0x15c8, +@@ -363,7 +363,7 @@ unsigned short risc_code01[] = { + 0x1540, 0x080c, 0x1e6e, 0x0026, 0x0056, 0x7803, 0x0004, 0x7804, + 0xd0ac, 0x1de8, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, + 0x7007, 0x0000, 0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, +- 0x080c, 0x5ad0, 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b52, ++ 0x080c, 0x5acf, 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b51, + 0x006e, 0x0058, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, + 0x0020, 0x080c, 0x1b06, 0x0804, 0x1955, 0x0156, 0x20a9, 0x0009, + 0x2009, 0xb82f, 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, +@@ -382,7 +382,7 @@ unsigned short risc_code01[] = { + 0xd0f4, 0x11e0, 0xd0d4, 0x01b8, 0x6038, 0xa402, 0x6034, 0xa303, + 0x0108, 0x1288, 0x643a, 0x6336, 0x6c2a, 0x6b2e, 0x0046, 0x0036, + 0x2400, 0x6c7c, 0xa402, 0x6812, 0x2300, 0x6b80, 0xa303, 0x6816, +- 0x003e, 0x004e, 0x0018, 0x080c, 0x9f94, 0x09e0, 0x601c, 0xa08e, ++ 0x003e, 0x004e, 0x0018, 0x080c, 0x9f9a, 0x09e0, 0x601c, 0xa08e, + 0x0008, 0x0904, 0x19e0, 0xa08e, 0x000a, 0x0904, 0x19e0, 0x2001, + 0xb574, 0x2004, 0xd0b4, 0x1140, 0x6018, 0x2004, 0xd0bc, 0x1120, + 0x6817, 0x7fff, 0x6813, 0xffff, 0x080c, 0x2305, 0x1918, 0x0804, +@@ -406,10 +406,10 @@ unsigned short risc_code01[] = { + 0x6800, 0xa506, 0x1160, 0x6804, 0xa406, 0x1148, 0x6808, 0xa706, + 0x1130, 0x680c, 0xa606, 0x0018, 0xc9fc, 0x080c, 0x22a7, 0x2168, + 0x0005, 0x080c, 0x1515, 0x080c, 0x1f55, 0x7004, 0x2060, 0x00d6, +- 0x6010, 0x2068, 0x7003, 0x0000, 0x080c, 0x1dfe, 0x080c, 0x9c54, ++ 0x6010, 0x2068, 0x7003, 0x0000, 0x080c, 0x1dfe, 0x080c, 0x9c5a, + 0x0170, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, + 0x682b, 0xffff, 0x682f, 0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, +- 0x080c, 0x9924, 0x0804, 0x1d2b, 0x080c, 0x1515, 0x0126, 0x2091, ++ 0x080c, 0x992a, 0x0804, 0x1d2b, 0x080c, 0x1515, 0x0126, 0x2091, + 0x2200, 0x0006, 0x0016, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, + 0x0002, 0xa184, 0x0700, 0x1978, 0xa184, 0x0003, 0xa086, 0x0003, + 0x0d58, 0x7000, 0x0002, 0x1b23, 0x1b29, 0x1c3a, 0x1d06, 0x1d1a, +@@ -427,10 +427,10 @@ unsigned short risc_code01[] = { + 0x2500, 0xa405, 0x0128, 0x080c, 0x22bd, 0x6850, 0xc0fd, 0x6852, + 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6808, 0x8001, + 0x680a, 0x1148, 0x684c, 0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, +- 0x0048, 0x080c, 0x8646, 0x7000, 0xa086, 0x0004, 0x0904, 0x1d2b, ++ 0x0048, 0x080c, 0x864c, 0x7000, 0xa086, 0x0004, 0x0904, 0x1d2b, + 0x7003, 0x0000, 0x080c, 0x19ba, 0x0804, 0x1d2b, 0x0056, 0x7d0c, +- 0xd5bc, 0x1110, 0x080c, 0xb3fb, 0x005e, 0x080c, 0x1dfe, 0x00f6, +- 0x7004, 0x2078, 0x080c, 0x5306, 0x0118, 0x7820, 0xc0f5, 0x7822, ++ 0xd5bc, 0x1110, 0x080c, 0xb407, 0x005e, 0x080c, 0x1dfe, 0x00f6, ++ 0x7004, 0x2078, 0x080c, 0x5305, 0x0118, 0x7820, 0xc0f5, 0x7822, + 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, + 0x697c, 0x791a, 0x6980, 0x791e, 0x0804, 0x1d2b, 0x7004, 0x00c6, + 0x2060, 0x6020, 0x00ce, 0xd0f4, 0x0120, 0x6808, 0x8001, 0x680a, +@@ -441,13 +441,13 @@ unsigned short risc_code01[] = { + 0x2060, 0x601c, 0xa086, 0x000a, 0x11a0, 0x0156, 0x20a9, 0x0009, + 0x2009, 0xb82f, 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, + 0x1f04, 0x1bf2, 0x015e, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, +- 0x8646, 0x080c, 0x19ba, 0x0804, 0x1d2b, 0x7818, 0x6812, 0x781c, ++ 0x864c, 0x080c, 0x19ba, 0x0804, 0x1d2b, 0x7818, 0x6812, 0x781c, + 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa192, 0x0841, 0x1a04, + 0x1ae3, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, + 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x080c, 0x1e99, + 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, + 0x0de8, 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x00f6, 0x7004, +- 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x080c, 0x8646, 0x080c, ++ 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x080c, 0x864c, 0x080c, + 0x1eef, 0x0838, 0x8001, 0x7002, 0xd194, 0x01b0, 0x7804, 0xd0fc, + 0x1904, 0x1cd6, 0xd09c, 0x0138, 0x7804, 0xd0fc, 0x1904, 0x1cd6, + 0xd09c, 0x1904, 0x1cda, 0x8aff, 0x0904, 0x1d2b, 0x2009, 0x0001, +@@ -464,8 +464,8 @@ unsigned short risc_code01[] = { + 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213, 0x00de, 0xd194, 0x0904, + 0x1b63, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6808, + 0x8001, 0x680a, 0x6b2a, 0x6a2e, 0x003e, 0x002e, 0x0804, 0x1c01, +- 0x0056, 0x7d0c, 0x080c, 0xb3fb, 0x005e, 0x080c, 0x1dfe, 0x00f6, +- 0x7004, 0x2078, 0x080c, 0x5306, 0x0118, 0x7820, 0xc0f5, 0x7822, ++ 0x0056, 0x7d0c, 0x080c, 0xb407, 0x005e, 0x080c, 0x1dfe, 0x00f6, ++ 0x7004, 0x2078, 0x080c, 0x5305, 0x0118, 0x7820, 0xc0f5, 0x7822, + 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, + 0x697c, 0x791a, 0x6980, 0x791e, 0x0804, 0x1d2b, 0x7804, 0xd09c, + 0x0904, 0x1b0e, 0x7c20, 0x7824, 0xa405, 0x1904, 0x1b0e, 0x7818, +@@ -475,7 +475,7 @@ unsigned short risc_code01[] = { + 0x7834, 0xa406, 0x1138, 0x7838, 0xa706, 0x1120, 0x783c, 0xa606, + 0x0904, 0x1b0e, 0x7803, 0x0002, 0x0804, 0x1c67, 0x7803, 0x0004, + 0x7003, 0x0000, 0x7004, 0xa00d, 0x0150, 0x6808, 0x8001, 0x680a, +- 0x1130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x8646, 0x080c, ++ 0x1130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x864c, 0x080c, + 0x19ba, 0x0088, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, + 0x6010, 0xa005, 0x0da0, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, + 0x6b2c, 0x080c, 0x19d5, 0x001e, 0x000e, 0x012e, 0x0005, 0x700c, +@@ -505,9 +505,9 @@ unsigned short risc_code01[] = { + 0x0005, 0x0126, 0x2091, 0x2200, 0x7000, 0xa086, 0x0003, 0x1160, + 0x700c, 0x7110, 0xa106, 0x0140, 0x080c, 0x295c, 0x20e1, 0x9028, + 0x700f, 0xb82f, 0x7013, 0xb82f, 0x012e, 0x0005, 0x00c6, 0x080c, +- 0x5ad0, 0x11b8, 0x2001, 0x0160, 0x2003, 0x0000, 0x2001, 0x0138, ++ 0x5acf, 0x11b8, 0x2001, 0x0160, 0x2003, 0x0000, 0x2001, 0x0138, + 0x2003, 0x0000, 0x2011, 0x00c8, 0xe000, 0xe000, 0x8211, 0x1de0, +- 0x04b1, 0x0066, 0x2031, 0x0000, 0x080c, 0x5b52, 0x006e, 0x00ce, ++ 0x04b1, 0x0066, 0x2031, 0x0000, 0x080c, 0x5b51, 0x006e, 0x00ce, + 0x0005, 0x080c, 0x1e6e, 0x080c, 0x295c, 0x20e1, 0x9028, 0x700c, + 0x7110, 0xa106, 0x01c0, 0x2104, 0xa005, 0x0130, 0x2060, 0x6010, + 0x2060, 0x6008, 0x8001, 0x600a, 0xa188, 0x0003, 0xa182, 0xb84a, +@@ -520,7 +520,7 @@ unsigned short risc_code01[] = { + 0x600a, 0xa188, 0x0003, 0xa182, 0xb84a, 0x0210, 0x2009, 0xb82f, + 0x7112, 0x0c50, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x0138, + 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, +- 0x080c, 0x5ad0, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1e7d, 0x2091, ++ 0x080c, 0x5acf, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1e7d, 0x2091, + 0x6000, 0x8421, 0x1dd0, 0x0005, 0x2021, 0xb015, 0x2001, 0x0141, + 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, + 0x1138, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, +@@ -557,7 +557,7 @@ unsigned short risc_code01[] = { + 0x2079, 0x0010, 0x000e, 0x783e, 0x000e, 0x783a, 0x000e, 0x7836, + 0x000e, 0x7832, 0x000e, 0x7822, 0x000e, 0x7802, 0x00fe, 0x00ee, + 0x0030, 0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1515, 0x080c, +- 0x7231, 0x0005, 0x00e6, 0x2071, 0xb84a, 0x7003, 0x0000, 0x00ee, ++ 0x7230, 0x0005, 0x00e6, 0x2071, 0xb84a, 0x7003, 0x0000, 0x00ee, + 0x0005, 0x00d6, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x1904, + 0x201f, 0x6934, 0xa184, 0x0007, 0x0002, 0x1fbd, 0x200a, 0x1fbd, + 0x1fbd, 0x1fbd, 0x1ff1, 0x1fd0, 0x1fbf, 0x080c, 0x1515, 0x684c, +@@ -604,12 +604,12 @@ unsigned short risc_code01[] = { + 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e, 0x0005, 0x080c, + 0x1515, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, + 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x00d6, 0x6010, +- 0x2068, 0x080c, 0x9c54, 0x0118, 0x6850, 0xc0bd, 0x6852, 0x601c, ++ 0x2068, 0x080c, 0x9c5a, 0x0118, 0x6850, 0xc0bd, 0x6852, 0x601c, + 0xa086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8, 0x2001, 0x00fa, + 0x8001, 0x1df0, 0x60c8, 0xa206, 0x1dc0, 0x60c4, 0x686a, 0x60c8, +- 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c, 0x9924, 0x00ce, ++ 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c, 0x992a, 0x00ce, + 0x2001, 0xb7ef, 0x2004, 0xac06, 0x1150, 0x20e1, 0x9040, 0x080c, +- 0x8257, 0x2011, 0x0000, 0x080c, 0x8080, 0x080c, 0x7231, 0x002e, ++ 0x825d, 0x2011, 0x0000, 0x080c, 0x807f, 0x080c, 0x7230, 0x002e, + 0x0804, 0x2204, 0x0126, 0x2091, 0x2400, 0x0006, 0x0016, 0x00f6, + 0x00e6, 0x00d6, 0x00c6, 0x2079, 0x0020, 0x2071, 0xb84a, 0x2b68, + 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x1904, +@@ -637,7 +637,7 @@ unsigned short risc_code01[] = { + 0x001e, 0x000e, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x2071, 0xb84a, + 0x7000, 0xa086, 0x0000, 0x05d0, 0x2079, 0x0020, 0x0016, 0x2009, + 0x0207, 0x210c, 0xd194, 0x0198, 0x2009, 0x020c, 0x210c, 0xa184, +- 0x0003, 0x0168, 0x080c, 0xb444, 0x2001, 0x0133, 0x2004, 0xa005, ++ 0x0003, 0x0168, 0x080c, 0xb450, 0x2001, 0x0133, 0x2004, 0xa005, + 0x090c, 0x1515, 0x20e1, 0x9040, 0x2001, 0x020c, 0x2102, 0x2009, + 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0xa106, 0x1110, 0x20e1, + 0x9040, 0x7804, 0xd0fc, 0x09d8, 0x080c, 0x214a, 0x7000, 0xa086, +@@ -645,11 +645,11 @@ unsigned short risc_code01[] = { + 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x00ee, 0x00fe, + 0x0005, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xb84a, + 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0540, 0x7004, 0x2060, +- 0x6010, 0x2068, 0x080c, 0x9c54, 0x0158, 0x6850, 0xc0b5, 0x6852, ++ 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0158, 0x6850, 0xc0b5, 0x6852, + 0x680c, 0x7a1c, 0xa206, 0x1120, 0x6808, 0x7a18, 0xa206, 0x01e0, + 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, +- 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0x9924, 0x20e1, 0x9040, +- 0x080c, 0x8257, 0x2011, 0x0000, 0x080c, 0x8080, 0x00fe, 0x00ee, ++ 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0x992a, 0x20e1, 0x9040, ++ 0x080c, 0x825d, 0x2011, 0x0000, 0x080c, 0x807f, 0x00fe, 0x00ee, + 0x00de, 0x00ce, 0x002e, 0x0005, 0x6810, 0x6a14, 0xa205, 0x1d00, + 0x684c, 0xc0dc, 0x684e, 0x2c10, 0x080c, 0x1fa9, 0x2001, 0x0105, + 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, +@@ -697,17 +697,17 @@ unsigned short risc_code01[] = { + 0x1f04, 0x23e6, 0x20e1, 0x9080, 0x783b, 0x001f, 0x20e1, 0x8700, + 0x012e, 0x0005, 0x0126, 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, + 0x24ad, 0xa084, 0x0007, 0x0002, 0x2416, 0x2404, 0x2407, 0x240a, +- 0x240f, 0x2411, 0x2413, 0x2415, 0x080c, 0x63c5, 0x0078, 0x080c, +- 0x6404, 0x0060, 0x080c, 0x63c5, 0x080c, 0x6404, 0x0038, 0x0041, ++ 0x240f, 0x2411, 0x2413, 0x2415, 0x080c, 0x63c4, 0x0078, 0x080c, ++ 0x6403, 0x0060, 0x080c, 0x63c4, 0x080c, 0x6403, 0x0038, 0x0041, + 0x0028, 0x0031, 0x0018, 0x0021, 0x0008, 0x0011, 0x012e, 0x0005, +- 0x0006, 0x0016, 0x0026, 0x080c, 0xb444, 0x7930, 0xa184, 0x0003, ++ 0x0006, 0x0016, 0x0026, 0x080c, 0xb450, 0x7930, 0xa184, 0x0003, + 0x01b0, 0x2001, 0xb7ef, 0x2004, 0xa005, 0x0170, 0x2001, 0x0133, + 0x2004, 0xa005, 0x090c, 0x1515, 0x00c6, 0x2001, 0xb7ef, 0x2064, +- 0x080c, 0x9924, 0x00ce, 0x04b8, 0x20e1, 0x9040, 0x04a0, 0xa184, ++ 0x080c, 0x992a, 0x00ce, 0x04b8, 0x20e1, 0x9040, 0x04a0, 0xa184, + 0x0030, 0x01e0, 0x6a00, 0xa286, 0x0003, 0x1108, 0x00a0, 0x080c, +- 0x5ad0, 0x1178, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, +- 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, +- 0x0010, 0x080c, 0x4b20, 0x080c, 0x24b0, 0x00a8, 0xa184, 0x00c0, ++ 0x5acf, 0x1178, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, ++ 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5b13, 0x080c, 0x5a07, ++ 0x0010, 0x080c, 0x4b1f, 0x080c, 0x24b0, 0x00a8, 0xa184, 0x00c0, + 0x0168, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0xb823, 0x080c, + 0x1dfe, 0x005e, 0x004e, 0x003e, 0x00ee, 0x0028, 0xa184, 0x0300, + 0x0110, 0x20e1, 0x9020, 0x7932, 0x002e, 0x001e, 0x000e, 0x0005, +@@ -735,93 +735,93 @@ unsigned short risc_code01[] = { + 0x0005, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, + 0xa184, 0x1e2c, 0x1118, 0xa184, 0x0007, 0x002a, 0xa195, 0x0004, + 0xa284, 0x0007, 0x0002, 0x254d, 0x2533, 0x2536, 0x2539, 0x253e, +- 0x2540, 0x2544, 0x2548, 0x080c, 0x6b75, 0x00b8, 0x080c, 0x6c50, +- 0x00a0, 0x080c, 0x6c50, 0x080c, 0x6b75, 0x0078, 0x0099, 0x0068, +- 0x080c, 0x6b75, 0x0079, 0x0048, 0x080c, 0x6c50, 0x0059, 0x0028, +- 0x080c, 0x6c50, 0x080c, 0x6b75, 0x0029, 0x002e, 0x001e, 0x000e, ++ 0x2540, 0x2544, 0x2548, 0x080c, 0x6b74, 0x00b8, 0x080c, 0x6c4f, ++ 0x00a0, 0x080c, 0x6c4f, 0x080c, 0x6b74, 0x0078, 0x0099, 0x0068, ++ 0x080c, 0x6b74, 0x0079, 0x0048, 0x080c, 0x6c4f, 0x0059, 0x0028, ++ 0x080c, 0x6c4f, 0x080c, 0x6b74, 0x0029, 0x002e, 0x001e, 0x000e, + 0x012e, 0x0005, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, 0x1904, +- 0x2766, 0x080c, 0x5ad0, 0x0578, 0x7000, 0xa086, 0x0003, 0x0198, +- 0x6024, 0xa084, 0x1800, 0x0178, 0x080c, 0x5af6, 0x0118, 0x080c, +- 0x5ae2, 0x1148, 0x6027, 0x0020, 0x6043, 0x0000, 0x2001, 0xb79e, +- 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5af6, 0x15d0, 0x6024, 0xa084, ++ 0x2766, 0x080c, 0x5acf, 0x0578, 0x7000, 0xa086, 0x0003, 0x0198, ++ 0x6024, 0xa084, 0x1800, 0x0178, 0x080c, 0x5af5, 0x0118, 0x080c, ++ 0x5ae1, 0x1148, 0x6027, 0x0020, 0x6043, 0x0000, 0x2001, 0xb79e, ++ 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5af5, 0x15d0, 0x6024, 0xa084, + 0x1800, 0x1108, 0x04a8, 0x2001, 0xb79e, 0x2003, 0xaaaa, 0x2001, + 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0x080c, +- 0x5a08, 0x0804, 0x2766, 0xd1ac, 0x1518, 0x6024, 0xd0dc, 0x1170, ++ 0x5a07, 0x0804, 0x2766, 0xd1ac, 0x1518, 0x6024, 0xd0dc, 0x1170, + 0xd0e4, 0x1188, 0xd0d4, 0x11a0, 0xd0cc, 0x0130, 0x708c, 0xa086, +- 0x0028, 0x1110, 0x080c, 0x5c5f, 0x0804, 0x2766, 0x2001, 0xb79f, ++ 0x0028, 0x1110, 0x080c, 0x5c5e, 0x0804, 0x2766, 0x2001, 0xb79f, + 0x2003, 0x0000, 0x0048, 0x2001, 0xb79f, 0x2003, 0x0002, 0x0020, +- 0x080c, 0x5bd2, 0x0804, 0x2766, 0x080c, 0x5d04, 0x0804, 0x2766, +- 0xd1ac, 0x0904, 0x26ae, 0x080c, 0x5ad0, 0x11d8, 0x6027, 0x0020, +- 0x0006, 0x0026, 0x0036, 0x080c, 0x5aec, 0x1170, 0x2001, 0xb79f, +- 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0x080c, 0x5a08, ++ 0x080c, 0x5bd1, 0x0804, 0x2766, 0x080c, 0x5d03, 0x0804, 0x2766, ++ 0xd1ac, 0x0904, 0x26ae, 0x080c, 0x5acf, 0x11d8, 0x6027, 0x0020, ++ 0x0006, 0x0026, 0x0036, 0x080c, 0x5aeb, 0x1170, 0x2001, 0xb79f, ++ 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0x080c, 0x5a07, + 0x003e, 0x002e, 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c, +- 0x5aa7, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138, ++ 0x5aa6, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138, + 0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74ce, + 0xa48c, 0xff00, 0x7034, 0xd084, 0x0178, 0xa186, 0xf800, 0x1160, + 0x703c, 0xd084, 0x1148, 0xc085, 0x703e, 0x0036, 0x2418, 0x2011, +- 0x8016, 0x080c, 0x3ecd, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054, ++ 0x8016, 0x080c, 0x3ecc, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054, + 0xa084, 0x00ff, 0x810f, 0xa116, 0x0588, 0x7130, 0xd184, 0x1570, + 0x2011, 0xb553, 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011, + 0xb553, 0x2214, 0xd2ac, 0x1510, 0x6240, 0xa294, 0x0010, 0x0130, + 0x6248, 0xa294, 0xff00, 0xa296, 0xff00, 0x01c0, 0x7030, 0xd08c, + 0x0904, 0x267b, 0x7034, 0xd08c, 0x1140, 0x2001, 0xb50c, 0x200c, + 0xd1ac, 0x1904, 0x267b, 0xc1ad, 0x2102, 0x0036, 0x73cc, 0x2011, +- 0x8013, 0x080c, 0x3ecd, 0x003e, 0x0804, 0x267b, 0x7034, 0xd08c, ++ 0x8013, 0x080c, 0x3ecc, 0x003e, 0x0804, 0x267b, 0x7034, 0xd08c, + 0x1140, 0x2001, 0xb50c, 0x200c, 0xd1ac, 0x1904, 0x267b, 0xc1ad, +- 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x3ecd, 0x003e, ++ 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x3ecc, 0x003e, + 0x7130, 0xc185, 0x7132, 0x2011, 0xb553, 0x220c, 0xd1a4, 0x01d0, +- 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x6b1b, 0x2019, +- 0x000e, 0x080c, 0xb059, 0xa484, 0x00ff, 0xa080, 0x2dc4, 0x200d, ++ 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x6b1a, 0x2019, ++ 0x000e, 0x080c, 0xb065, 0xa484, 0x00ff, 0xa080, 0x2dc4, 0x200d, + 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x080c, +- 0xb0dc, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, ++ 0xb0e8, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, + 0x0004, 0x080c, 0x2c6f, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, +- 0x2009, 0x0000, 0x080c, 0x4faa, 0x1110, 0x080c, 0x4c0c, 0x8108, ++ 0x2009, 0x0000, 0x080c, 0x4fa9, 0x1110, 0x080c, 0x4c0b, 0x8108, + 0x1f04, 0x2672, 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, +- 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, 0x0036, +- 0x2019, 0x0000, 0x080c, 0x7fe5, 0x003e, 0x60e3, 0x0000, 0x001e, ++ 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, 0x7f59, 0x0036, ++ 0x2019, 0x0000, 0x080c, 0x7fe4, 0x003e, 0x60e3, 0x0000, 0x001e, + 0x2001, 0xb500, 0x2014, 0xa296, 0x0004, 0x1128, 0xd19c, 0x11b0, + 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0xb523, 0x2003, +- 0x0000, 0x6027, 0x0020, 0x080c, 0x5af6, 0x1140, 0x0016, 0x2009, +- 0x07d0, 0x2011, 0x59e5, 0x080c, 0x6a23, 0x001e, 0xd194, 0x0904, +- 0x2766, 0x0016, 0x6220, 0xd2b4, 0x0904, 0x2717, 0x080c, 0x6a11, +- 0x080c, 0x7d7b, 0x6027, 0x0004, 0x00f6, 0x2019, 0xb7e9, 0x2304, ++ 0x0000, 0x6027, 0x0020, 0x080c, 0x5af5, 0x1140, 0x0016, 0x2009, ++ 0x07d0, 0x2011, 0x59e4, 0x080c, 0x6a22, 0x001e, 0xd194, 0x0904, ++ 0x2766, 0x0016, 0x6220, 0xd2b4, 0x0904, 0x2717, 0x080c, 0x6a10, ++ 0x080c, 0x7d7a, 0x6027, 0x0004, 0x00f6, 0x2019, 0xb7e9, 0x2304, + 0xa07d, 0x0570, 0x7804, 0xa086, 0x0032, 0x1550, 0x00d6, 0x00c6, + 0x00e6, 0x2069, 0x0140, 0x618c, 0x6288, 0x7818, 0x608e, 0x7808, + 0x608a, 0x6043, 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, + 0x0000, 0x6803, 0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, +- 0x7091, 0x080c, 0x7174, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, +- 0x080c, 0x8617, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, ++ 0x7090, 0x080c, 0x7173, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, ++ 0x080c, 0x861d, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, + 0x00fe, 0x00d6, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0120, + 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, 0xb7e0, + 0x6028, 0xa09a, 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, +- 0x7d6e, 0x0804, 0x2765, 0x2019, 0xb7e9, 0x2304, 0xa065, 0x0120, +- 0x2009, 0x0027, 0x080c, 0x8646, 0x00ce, 0x0804, 0x2765, 0xd2bc, +- 0x0904, 0x2765, 0x080c, 0x6a1e, 0x6014, 0xa084, 0x0184, 0xa085, ++ 0x7d6d, 0x0804, 0x2765, 0x2019, 0xb7e9, 0x2304, 0xa065, 0x0120, ++ 0x2009, 0x0027, 0x080c, 0x864c, 0x00ce, 0x0804, 0x2765, 0xd2bc, ++ 0x0904, 0x2765, 0x080c, 0x6a1d, 0x6014, 0xa084, 0x0184, 0xa085, + 0x0010, 0x6016, 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, + 0xa084, 0x4000, 0x0120, 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, + 0x00c6, 0x2061, 0xb7e0, 0x6044, 0xa09a, 0x00c8, 0x12f0, 0x8000, + 0x6046, 0x603c, 0x00ce, 0xa005, 0x0540, 0x2009, 0x07d0, 0x080c, +- 0x6a16, 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, ++ 0x6a15, 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, + 0xa18c, 0x0184, 0xa18d, 0x0012, 0x6116, 0x00b8, 0x6114, 0xa18c, + 0x0184, 0xa18d, 0x0016, 0x6116, 0x0080, 0x0036, 0x2019, 0x0001, +- 0x080c, 0x7fe5, 0x003e, 0x2019, 0xb7ef, 0x2304, 0xa065, 0x0120, +- 0x2009, 0x004f, 0x080c, 0x8646, 0x00ce, 0x001e, 0xd19c, 0x0904, ++ 0x080c, 0x7fe4, 0x003e, 0x2019, 0xb7ef, 0x2304, 0xa065, 0x0120, ++ 0x2009, 0x004f, 0x080c, 0x864c, 0x00ce, 0x001e, 0xd19c, 0x0904, + 0x27bf, 0x7034, 0xd0ac, 0x1560, 0x0016, 0x0156, 0x6027, 0x0008, + 0x602f, 0x0020, 0x20a9, 0x0006, 0x1d04, 0x2774, 0x2091, 0x6000, + 0x1f04, 0x2774, 0x602f, 0x0000, 0x6150, 0xa185, 0x1400, 0x6052, + 0x20a9, 0x0366, 0x1d04, 0x2782, 0x2091, 0x6000, 0x6020, 0xd09c, + 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, 0x0480, 0x080c, + 0x2907, 0x1f04, 0x2782, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, +- 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8076, +- 0x2011, 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, 0x0036, 0x2019, +- 0x0000, 0x080c, 0x7fe5, 0x003e, 0x60e3, 0x0000, 0x080c, 0xb423, +- 0x080c, 0xb43e, 0xa085, 0x0001, 0x080c, 0x5b14, 0x2001, 0xb500, ++ 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8075, ++ 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, 0x7f59, 0x0036, 0x2019, ++ 0x0000, 0x080c, 0x7fe4, 0x003e, 0x60e3, 0x0000, 0x080c, 0xb42f, ++ 0x080c, 0xb44a, 0xa085, 0x0001, 0x080c, 0x5b13, 0x2001, 0xb500, + 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12dd, 0x001e, 0xa18c, + 0xffd0, 0x6126, 0x0005, 0x0006, 0x0016, 0x0026, 0x00e6, 0x00f6, + 0x0126, 0x2091, 0x8000, 0x2071, 0xb500, 0x71c4, 0x70c6, 0xa116, +- 0x0500, 0x81ff, 0x0128, 0x2011, 0x8011, 0x080c, 0x3ecd, 0x00c8, +- 0x2011, 0x8012, 0x080c, 0x3ecd, 0x2001, 0xb572, 0x2004, 0xd0fc, +- 0x1180, 0x0036, 0x00c6, 0x080c, 0x2892, 0x080c, 0x7f36, 0x2061, ++ 0x0500, 0x81ff, 0x0128, 0x2011, 0x8011, 0x080c, 0x3ecc, 0x00c8, ++ 0x2011, 0x8012, 0x080c, 0x3ecc, 0x2001, 0xb572, 0x2004, 0xd0fc, ++ 0x1180, 0x0036, 0x00c6, 0x080c, 0x2892, 0x080c, 0x7f35, 0x2061, + 0x0100, 0x2019, 0x0028, 0x2009, 0x0000, 0x080c, 0x2c6f, 0x00ce, + 0x003e, 0x012e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, + 0x00c6, 0x00f6, 0x0006, 0x0026, 0x2061, 0x0100, 0xa190, 0x280b, +@@ -829,14 +829,14 @@ unsigned short risc_code01[] = { + 0x00fe, 0x00ce, 0x0005, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420, + 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, 0xa18c, 0x00ff, +- 0x2130, 0xa094, 0xff00, 0x1110, 0x81ff, 0x0118, 0x080c, 0x66b2, ++ 0x2130, 0xa094, 0xff00, 0x1110, 0x81ff, 0x0118, 0x080c, 0x66b1, + 0x0038, 0xa080, 0x2dc4, 0x200d, 0xa18c, 0xff00, 0x810f, 0xa006, + 0x0005, 0xa080, 0x2dc4, 0x200d, 0xa18c, 0x00ff, 0x0005, 0x00d6, + 0x2069, 0x0140, 0x2001, 0xb515, 0x2003, 0x00ef, 0x20a9, 0x0010, + 0xa006, 0x6852, 0x6856, 0x1f04, 0x2842, 0x00de, 0x0005, 0x0006, + 0x00d6, 0x0026, 0x2069, 0x0140, 0x2001, 0xb515, 0x2102, 0x8114, + 0x8214, 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0xa006, +- 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xb452, 0x2005, 0x6856, ++ 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xb45e, 0x2005, 0x6856, + 0x8211, 0x1f04, 0x2857, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, + 0x2061, 0xb500, 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, + 0x00ce, 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, +@@ -844,13 +844,13 @@ unsigned short risc_code01[] = { + 0x22a8, 0x2001, 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, + 0x1f04, 0x2887, 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, + 0x015e, 0x0005, 0x2001, 0xb553, 0x2004, 0xd0c4, 0x0150, 0xd0a4, +- 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xb0dc, ++ 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xb0e8, + 0x004e, 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, + 0xd0dc, 0x0548, 0xa084, 0x0700, 0xa08e, 0x0300, 0x1520, 0x2011, + 0x0000, 0x2009, 0x0002, 0x2300, 0xa080, 0x0020, 0x2018, 0x2300, +- 0x080c, 0x6b41, 0x2011, 0x0030, 0x2200, 0x8007, 0xa085, 0x004c, ++ 0x080c, 0x6b40, 0x2011, 0x0030, 0x2200, 0x8007, 0xa085, 0x004c, + 0x78c2, 0x2009, 0x0204, 0x210c, 0x2200, 0xa100, 0x2009, 0x0138, +- 0x200a, 0x080c, 0x5ad0, 0x1118, 0x2009, 0xb78f, 0x200a, 0x002e, ++ 0x200a, 0x080c, 0x5acf, 0x1118, 0x2009, 0xb78f, 0x200a, 0x002e, + 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, 0x0126, 0x2091, + 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, 0x200c, 0x8000, + 0x2014, 0xa184, 0x0003, 0x0110, 0x0804, 0x1b04, 0x002e, 0x001e, +@@ -912,10 +912,10 @@ unsigned short risc_code01[] = { + 0x23f2, 0x0098, 0x0106, 0x0006, 0x080c, 0x28d6, 0x080c, 0x2519, + 0x080c, 0x239c, 0x080c, 0x23f2, 0x0040, 0x20d1, 0x0000, 0x20d1, + 0x0001, 0x20d1, 0x0000, 0x080c, 0x1515, 0x000e, 0x010e, 0x000d, +- 0x00c6, 0x0026, 0x0046, 0x2021, 0x0000, 0x080c, 0x530a, 0x1904, ++ 0x00c6, 0x0026, 0x0046, 0x2021, 0x0000, 0x080c, 0x5309, 0x1904, + 0x2b95, 0x72d4, 0x2001, 0xb79e, 0x2004, 0xa005, 0x1110, 0xd29c, + 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x2b95, 0x080c, 0x2b99, +- 0x0804, 0x2b95, 0xd2cc, 0x1904, 0x2b95, 0x080c, 0x5ad0, 0x1120, ++ 0x0804, 0x2b95, 0xd2cc, 0x1904, 0x2b95, 0x080c, 0x5acf, 0x1120, + 0x709f, 0xffff, 0x0804, 0x2b95, 0xd294, 0x0120, 0x709f, 0xffff, + 0x0804, 0x2b95, 0x2001, 0xb515, 0x203c, 0x7288, 0xd284, 0x0904, + 0x2b37, 0xd28c, 0x1904, 0x2b37, 0x0036, 0x739c, 0xa38e, 0xffff, +@@ -923,7 +923,7 @@ unsigned short risc_code01[] = { + 0x0001, 0x0120, 0xa084, 0xff00, 0x8007, 0x0010, 0xa084, 0x00ff, + 0xa70e, 0x0560, 0xa08e, 0x0000, 0x0548, 0xa08e, 0x00ff, 0x1150, + 0x7230, 0xd284, 0x1538, 0x7288, 0xc28d, 0x728a, 0x709f, 0xffff, +- 0x003e, 0x0428, 0x2009, 0x0000, 0x080c, 0x281d, 0x080c, 0x4f4e, ++ 0x003e, 0x0428, 0x2009, 0x0000, 0x080c, 0x281d, 0x080c, 0x4f4d, + 0x11b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1150, 0x7030, + 0xd08c, 0x0118, 0x6000, 0xd0bc, 0x0120, 0x080c, 0x2bac, 0x0140, + 0x0028, 0x080c, 0x2cdd, 0x080c, 0x2bda, 0x0110, 0x8318, 0x0818, +@@ -932,51 +932,51 @@ unsigned short risc_code01[] = { + 0xa096, 0xffff, 0x1120, 0x2009, 0x0000, 0x28a8, 0x0050, 0xa812, + 0x0220, 0x2008, 0xa802, 0x20a8, 0x0020, 0x709f, 0xffff, 0x0804, + 0x2b95, 0x2700, 0x0156, 0x0016, 0xa106, 0x05a0, 0xc484, 0x080c, +- 0x4faa, 0x0120, 0x080c, 0x4f4e, 0x15a8, 0x0008, 0xc485, 0x6004, ++ 0x4fa9, 0x0120, 0x080c, 0x4f4d, 0x15a8, 0x0008, 0xc485, 0x6004, + 0xa084, 0x00ff, 0xa086, 0x0006, 0x1130, 0x7030, 0xd08c, 0x01e8, + 0x6000, 0xd0bc, 0x11d0, 0x7288, 0xd28c, 0x0188, 0x6004, 0xa084, +- 0x00ff, 0xa082, 0x0006, 0x02b0, 0xd484, 0x1118, 0x080c, 0x4f6d, ++ 0x00ff, 0xa082, 0x0006, 0x02b0, 0xd484, 0x1118, 0x080c, 0x4f6c, + 0x0028, 0x080c, 0x2d6a, 0x0170, 0x080c, 0x2d97, 0x0058, 0x080c, + 0x2cdd, 0x080c, 0x2bda, 0x0170, 0x0028, 0x080c, 0x2d6a, 0x0110, + 0x0419, 0x0140, 0x001e, 0x8108, 0x015e, 0x1f04, 0x2b51, 0x709f, + 0xffff, 0x0018, 0x001e, 0x015e, 0x719e, 0x004e, 0x002e, 0x00ce, + 0x0005, 0x00c6, 0x0016, 0x709f, 0x0001, 0x2009, 0x007e, 0x080c, +- 0x4f4e, 0x1138, 0x080c, 0x2cdd, 0x04a9, 0x0118, 0x70d4, 0xc0bd, ++ 0x4f4d, 0x1138, 0x080c, 0x2cdd, 0x04a9, 0x0118, 0x70d4, 0xc0bd, + 0x70d6, 0x001e, 0x00ce, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, + 0x2c68, 0x2001, 0xb557, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c, +- 0x9ed0, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xa021, 0x601f, 0x0001, +- 0x2001, 0x0000, 0x080c, 0x4eec, 0x2001, 0x0000, 0x080c, 0x4efe, ++ 0x9ed6, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xa027, 0x601f, 0x0001, ++ 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, 0x0000, 0x080c, 0x4efd, + 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, +- 0x0004, 0x080c, 0x8646, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, ++ 0x0004, 0x080c, 0x864c, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, + 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x2001, +- 0xb557, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c, 0x9ed0, 0x0550, ++ 0xb557, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c, 0x9ed6, 0x0550, + 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, 0xa086, 0x007e, + 0x0140, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1110, 0x080c, +- 0x2c9c, 0x080c, 0xa021, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, +- 0x4eec, 0x2001, 0x0002, 0x080c, 0x4efe, 0x0126, 0x2091, 0x8000, +- 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0002, 0x080c, 0x8646, ++ 0x2c9c, 0x080c, 0xa027, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, ++ 0x4eeb, 0x2001, 0x0002, 0x080c, 0x4efd, 0x0126, 0x2091, 0x8000, ++ 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0002, 0x080c, 0x864c, + 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00c6, +- 0x0026, 0x2009, 0x0080, 0x080c, 0x4f4e, 0x1120, 0x0031, 0x0110, ++ 0x0026, 0x2009, 0x0080, 0x080c, 0x4f4d, 0x1120, 0x0031, 0x0110, + 0x70db, 0xffff, 0x002e, 0x00ce, 0x0005, 0x0016, 0x0076, 0x00d6, +- 0x00c6, 0x2c68, 0x080c, 0x85c1, 0x01e8, 0x2d00, 0x601a, 0x080c, +- 0xa021, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x4eec, 0x2001, +- 0x0002, 0x080c, 0x4efe, 0x0126, 0x2091, 0x8000, 0x080c, 0x2c9c, +- 0x70dc, 0x8000, 0x70de, 0x012e, 0x2009, 0x0002, 0x080c, 0x8646, ++ 0x00c6, 0x2c68, 0x080c, 0x85c7, 0x01e8, 0x2d00, 0x601a, 0x080c, ++ 0xa027, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, ++ 0x0002, 0x080c, 0x4efd, 0x0126, 0x2091, 0x8000, 0x080c, 0x2c9c, ++ 0x70dc, 0x8000, 0x70de, 0x012e, 0x2009, 0x0002, 0x080c, 0x864c, + 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00c6, +- 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c, 0x4f4e, +- 0x1190, 0x2c68, 0x080c, 0x85c1, 0x0170, 0x2d00, 0x601a, 0x6312, +- 0x601f, 0x0001, 0x620a, 0x080c, 0xa021, 0x2009, 0x0022, 0x080c, +- 0x8646, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, +- 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x6e02, 0x080c, 0x6da5, +- 0x080c, 0x9069, 0x2130, 0x81ff, 0x0128, 0x20a9, 0x007e, 0x2009, ++ 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c, 0x4f4d, ++ 0x1190, 0x2c68, 0x080c, 0x85c7, 0x0170, 0x2d00, 0x601a, 0x6312, ++ 0x601f, 0x0001, 0x620a, 0x080c, 0xa027, 0x2009, 0x0022, 0x080c, ++ 0x864c, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, ++ 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x6e01, 0x080c, 0x6da4, ++ 0x080c, 0x906f, 0x2130, 0x81ff, 0x0128, 0x20a9, 0x007e, 0x2009, + 0x0000, 0x0020, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, +- 0x4faa, 0x1120, 0x080c, 0x51ab, 0x080c, 0x4c0c, 0x001e, 0x8108, ++ 0x4fa9, 0x1120, 0x080c, 0x51aa, 0x080c, 0x4c0b, 0x001e, 0x8108, + 0x1f04, 0x2c86, 0x86ff, 0x1110, 0x080c, 0x11f0, 0x002e, 0x003e, + 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0026, + 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, +- 0x6df6, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x2c08, 0x080c, +- 0xae76, 0x007e, 0x001e, 0x2e60, 0x080c, 0x51ab, 0x6210, 0x6314, +- 0x080c, 0x4c0c, 0x6212, 0x6316, 0x001e, 0x002e, 0x003e, 0x00ce, ++ 0x6df5, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d02, 0x2c08, 0x080c, ++ 0xae82, 0x007e, 0x001e, 0x2e60, 0x080c, 0x51aa, 0x6210, 0x6314, ++ 0x080c, 0x4c0b, 0x6212, 0x6316, 0x001e, 0x002e, 0x003e, 0x00ce, + 0x00ee, 0x0005, 0x00e6, 0x0006, 0x6018, 0xa080, 0x0028, 0x2004, + 0xa086, 0x0080, 0x0150, 0x2071, 0xb500, 0x7098, 0xa005, 0x0110, + 0x8001, 0x709a, 0x000e, 0x00ee, 0x0005, 0x2071, 0xb500, 0x70dc, +@@ -984,20 +984,20 @@ unsigned short risc_code01[] = { + 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x0156, + 0x2178, 0x81ff, 0x1118, 0x20a9, 0x0001, 0x0098, 0x2001, 0xb553, + 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0xa006, 0x0046, 0x2020, +- 0x2009, 0x002d, 0x080c, 0xb0dc, 0x004e, 0x20a9, 0x00ff, 0x2011, ++ 0x2009, 0x002d, 0x080c, 0xb0e8, 0x004e, 0x20a9, 0x00ff, 0x2011, + 0x0000, 0x0026, 0xa28e, 0x007e, 0x0904, 0x2d49, 0xa28e, 0x007f, + 0x0904, 0x2d49, 0xa28e, 0x0080, 0x05e0, 0xa288, 0xb635, 0x210c, + 0x81ff, 0x05b8, 0x8fff, 0x1148, 0x2001, 0xb7be, 0x0006, 0x2003, + 0x0001, 0x04d9, 0x000e, 0x2003, 0x0000, 0x00c6, 0x2160, 0x2001, +- 0x0001, 0x080c, 0x5314, 0x00ce, 0x2019, 0x0029, 0x080c, 0x6df6, +- 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x00c6, 0x0026, 0x2160, ++ 0x0001, 0x080c, 0x5313, 0x00ce, 0x2019, 0x0029, 0x080c, 0x6df5, ++ 0x0076, 0x2039, 0x0000, 0x080c, 0x6d02, 0x00c6, 0x0026, 0x2160, + 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x1118, 0x6007, 0x0404, + 0x0028, 0x2001, 0x0004, 0x8007, 0xa215, 0x6206, 0x002e, 0x00ce, +- 0x0016, 0x2c08, 0x080c, 0xae76, 0x001e, 0x007e, 0x2160, 0x080c, +- 0x51ab, 0x002e, 0x8210, 0x1f04, 0x2d01, 0x015e, 0x001e, 0x002e, ++ 0x0016, 0x2c08, 0x080c, 0xae82, 0x001e, 0x007e, 0x2160, 0x080c, ++ 0x51aa, 0x002e, 0x8210, 0x1f04, 0x2d01, 0x015e, 0x001e, 0x002e, + 0x003e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, + 0x2001, 0xb553, 0x2004, 0xd0c4, 0x0148, 0xd0a4, 0x0138, 0xa006, +- 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xb0dc, 0x001e, 0x002e, ++ 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xb0e8, 0x001e, 0x002e, + 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x7288, 0x82ff, + 0x01f8, 0x2011, 0xb553, 0x2214, 0xd2ac, 0x11d0, 0x2100, 0x080c, + 0x2831, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xbcc0, +@@ -1005,10 +1005,10 @@ unsigned short risc_code01[] = { + 0x00ff, 0xa116, 0x0138, 0xa096, 0x00ff, 0x0110, 0x8318, 0x0c68, + 0xa085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x0016, + 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026, 0x0036, 0x2110, +- 0x0026, 0x2019, 0x0029, 0x080c, 0x8293, 0x002e, 0x080c, 0xb381, ++ 0x0026, 0x2019, 0x0029, 0x080c, 0x8299, 0x002e, 0x080c, 0xb38d, + 0x003e, 0x002e, 0x001e, 0xa180, 0xb635, 0x2004, 0xa065, 0x0158, + 0x0016, 0x00c6, 0x2061, 0xb8f4, 0x001e, 0x611a, 0x080c, 0x2c9c, +- 0x001e, 0x080c, 0x4f6d, 0x012e, 0x00ce, 0x001e, 0x0005, 0x2001, ++ 0x001e, 0x080c, 0x4f6c, 0x012e, 0x00ce, 0x001e, 0x0005, 0x2001, + 0xb535, 0x2004, 0xd0cc, 0x0005, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, + 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, + 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, +@@ -1063,89 +1063,89 @@ unsigned short risc_code01[] = { + 0x2fc6, 0x2fc6, 0x3282, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, + 0x3294, 0x329e, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, + 0x0002, 0x32c8, 0x331c, 0x3377, 0x3391, 0x2fc6, 0x33c2, 0x37f5, +- 0x4234, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, +- 0x2fc6, 0x300c, 0x300f, 0x37f7, 0x2fc6, 0x3804, 0x42cd, 0x4328, +- 0x438c, 0x2fc6, 0x43ef, 0x4419, 0x4438, 0x446a, 0x2fc6, 0x2fc6, ++ 0x4233, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, ++ 0x2fc6, 0x300c, 0x300f, 0x37f7, 0x2fc6, 0x3804, 0x42cc, 0x4327, ++ 0x438b, 0x2fc6, 0x43ee, 0x4418, 0x4437, 0x4469, 0x2fc6, 0x2fc6, + 0x2fc6, 0x3808, 0x39ad, 0x39c7, 0x39e5, 0x3a46, 0x3aa6, 0x3ab1, +- 0x3ae9, 0x3af8, 0x3b07, 0x3b0a, 0x3b2d, 0x3b77, 0x3bed, 0x3bfa, +- 0x3cfb, 0x3e24, 0x3e4d, 0x3f4b, 0x3f6d, 0x3f79, 0x3fb2, 0x4076, +- 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x40de, 0x40f9, 0x416b, 0x421d, +- 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x3eaa, 0x0126, 0x2091, ++ 0x3ae9, 0x3af8, 0x3b07, 0x3b0a, 0x3b2d, 0x3b79, 0x3bef, 0x3bfc, ++ 0x3cfd, 0x3e23, 0x3e4c, 0x3f4a, 0x3f6c, 0x3f78, 0x3fb1, 0x4075, ++ 0x2fc6, 0x2fc6, 0x2fc6, 0x2fc6, 0x40dd, 0x40f8, 0x416a, 0x421c, ++ 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x3ea9, 0x0126, 0x2091, + 0x8000, 0x0e04, 0x2fb6, 0x7818, 0xd084, 0x0110, 0x012e, 0x0cb0, + 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x781b, 0x0001, 0x2091, 0x4080, + 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005, 0x2021, 0x4001, + 0x0c18, 0x2021, 0x4002, 0x0c00, 0x2021, 0x4003, 0x08e8, 0x2021, + 0x4005, 0x08d0, 0x2021, 0x4006, 0x08b8, 0xa02e, 0x2520, 0x7b28, +- 0x7a2c, 0x7824, 0x7930, 0x0804, 0x3eb7, 0x7823, 0x0004, 0x7824, ++ 0x7a2c, 0x7824, 0x7930, 0x0804, 0x3eb6, 0x7823, 0x0004, 0x7824, + 0x0807, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, +- 0x3eba, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804, 0x2faa, 0x7924, ++ 0x3eb9, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804, 0x2faa, 0x7924, + 0x2114, 0x0804, 0x2faa, 0x2099, 0x0009, 0x20a1, 0x0009, 0x20a9, + 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0804, 0x2faa, 0x7824, +- 0x2060, 0x0090, 0x2009, 0x0002, 0x2011, 0x0002, 0x2019, 0x0004, ++ 0x2060, 0x0090, 0x2009, 0x0002, 0x2011, 0x0002, 0x2019, 0x0006, + 0x783b, 0x0017, 0x0804, 0x2faa, 0x7d38, 0x7c3c, 0x0840, 0x7d38, + 0x7c3c, 0x0888, 0x2061, 0x1000, 0xe10c, 0xa006, 0x2c15, 0xa200, + 0x8c60, 0x8109, 0x1dd8, 0x2010, 0xa005, 0x0904, 0x2faa, 0x0804, + 0x2fcc, 0x2069, 0xb552, 0x7824, 0x7930, 0xa11a, 0x1a04, 0x2fd2, + 0x8019, 0x0904, 0x2fd2, 0x684a, 0x6942, 0x782c, 0x6852, 0x7828, +- 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x5da6, 0x0804, 0x2faa, ++ 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x5da5, 0x0804, 0x2faa, + 0x2069, 0xb552, 0x7824, 0x7934, 0xa11a, 0x1a04, 0x2fd2, 0x8019, + 0x0904, 0x2fd2, 0x684e, 0x6946, 0x782c, 0x6862, 0x7828, 0x6866, +- 0xa006, 0x686a, 0x686e, 0x080c, 0x53d6, 0x0804, 0x2faa, 0xa02e, ++ 0xa006, 0x686a, 0x686e, 0x080c, 0x53d5, 0x0804, 0x2faa, 0xa02e, + 0x2520, 0x81ff, 0x1904, 0x2fcf, 0x7924, 0x7b28, 0x7a2c, 0x20a9, +- 0x0005, 0x20a1, 0xb589, 0x41a1, 0x080c, 0x3e76, 0x0904, 0x2fcf, +- 0x2009, 0x0020, 0x080c, 0x3eb7, 0x701b, 0x3067, 0x0005, 0x6834, ++ 0x0005, 0x20a1, 0xb589, 0x41a1, 0x080c, 0x3e75, 0x0904, 0x2fcf, ++ 0x2009, 0x0020, 0x080c, 0x3eb6, 0x701b, 0x3067, 0x0005, 0x6834, + 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011, 0x0138, 0xa096, 0x0019, + 0x0120, 0xa096, 0x0015, 0x1904, 0x2fcf, 0x810f, 0xa18c, 0x00ff, + 0x0904, 0x2fcf, 0x710e, 0x700c, 0x8001, 0x0528, 0x700e, 0x080c, +- 0x3e76, 0x0904, 0x2fcf, 0x2009, 0x0020, 0x2061, 0xb5d2, 0x6224, ++ 0x3e75, 0x0904, 0x2fcf, 0x2009, 0x0020, 0x2061, 0xb5d2, 0x6224, + 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, +- 0x0000, 0xa5a9, 0x0000, 0x080c, 0x3eb7, 0x701b, 0x3098, 0x0005, ++ 0x0000, 0xa5a9, 0x0000, 0x080c, 0x3eb6, 0x701b, 0x3098, 0x0005, + 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0120, 0xa096, 0x000a, + 0x1904, 0x2fcf, 0x08c0, 0x7010, 0x2068, 0x6838, 0xc0fd, 0x683a, +- 0x080c, 0x4e4a, 0x1128, 0x7007, 0x0003, 0x701b, 0x30b2, 0x0005, +- 0x080c, 0x54dc, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, ++ 0x080c, 0x4e49, 0x1128, 0x7007, 0x0003, 0x701b, 0x30b2, 0x0005, ++ 0x080c, 0x54db, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, + 0xb589, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, + 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020, 0x012e, 0x0804, +- 0x3eba, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x2faa, 0x2091, 0x8000, ++ 0x3eb9, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x2faa, 0x2091, 0x8000, + 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020, 0x782f, 0x2020, + 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836, 0x2061, 0x0100, + 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205, 0x783a, 0x2009, + 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, + 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0x0804, 0x0427, 0x81ff, +- 0x1904, 0x2fcf, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, 0x4faa, ++ 0x1904, 0x2fcf, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, 0x4fa9, + 0x1904, 0x2fd2, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0210, +- 0x0804, 0x2fd2, 0x7c28, 0x7d2c, 0x080c, 0x5172, 0xd28c, 0x1118, +- 0x080c, 0x511b, 0x0010, 0x080c, 0x514b, 0x1518, 0x2061, 0xbd00, ++ 0x0804, 0x2fd2, 0x7c28, 0x7d2c, 0x080c, 0x5171, 0xd28c, 0x1118, ++ 0x080c, 0x511a, 0x0010, 0x080c, 0x514a, 0x1518, 0x2061, 0xbd00, + 0x0126, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, 0x0148, 0x6010, + 0xa06d, 0x0130, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0150, + 0x012e, 0xace0, 0x0018, 0x2001, 0xb517, 0x2004, 0xac02, 0x1a04, +- 0x2fcf, 0x0c30, 0x080c, 0x9924, 0x012e, 0x0904, 0x2fcf, 0x0804, +- 0x2faa, 0xa00e, 0x2001, 0x0005, 0x080c, 0x54dc, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x9ecc, 0x080c, 0x5409, 0x012e, 0x0804, 0x2faa, +- 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, +- 0x5070, 0x0904, 0x2fcf, 0x080c, 0x517e, 0x0904, 0x2fcf, 0x0804, +- 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e9b, 0x0904, 0x2fd2, +- 0x080c, 0x51ea, 0x0904, 0x2fcf, 0x2019, 0x0005, 0x7924, 0x080c, +- 0x5199, 0x0904, 0x2fcf, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x2fd2, +- 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x69a9, 0x0804, 0x2faa, ++ 0x2fcf, 0x0c30, 0x080c, 0x992a, 0x012e, 0x0904, 0x2fcf, 0x0804, ++ 0x2faa, 0xa00e, 0x2001, 0x0005, 0x080c, 0x54db, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x9ed2, 0x080c, 0x5408, 0x012e, 0x0804, 0x2faa, ++ 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, ++ 0x506f, 0x0904, 0x2fcf, 0x080c, 0x517d, 0x0904, 0x2fcf, 0x0804, ++ 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e9a, 0x0904, 0x2fd2, ++ 0x080c, 0x51e9, 0x0904, 0x2fcf, 0x2019, 0x0005, 0x7924, 0x080c, ++ 0x5198, 0x0904, 0x2fcf, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x2fd2, ++ 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x69a8, 0x0804, 0x2faa, + 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, 0x0001, 0x0450, + 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x01f8, 0x2508, 0x080c, +- 0x4faa, 0x11d8, 0x080c, 0x51ea, 0x1128, 0x2009, 0x0002, 0x62b4, +- 0x2518, 0x00c0, 0x2019, 0x0004, 0xa00e, 0x080c, 0x5199, 0x1118, ++ 0x4fa9, 0x11d8, 0x080c, 0x51e9, 0x1128, 0x2009, 0x0002, 0x62b4, ++ 0x2518, 0x00c0, 0x2019, 0x0004, 0xa00e, 0x080c, 0x5198, 0x1118, + 0x2009, 0x0006, 0x0078, 0x7824, 0xa08a, 0x1000, 0x1270, 0x8003, +- 0x800b, 0x810b, 0xa108, 0x080c, 0x69a9, 0x8529, 0x1ae0, 0x012e, ++ 0x800b, 0x810b, 0xa108, 0x080c, 0x69a8, 0x8529, 0x1ae0, 0x012e, + 0x0804, 0x2faa, 0x012e, 0x0804, 0x2fcf, 0x012e, 0x0804, 0x2fd2, +- 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, 0x50d6, 0x080c, 0x5172, +- 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8b, 0x0904, +- 0x2fd2, 0x080c, 0x50c7, 0x080c, 0x5172, 0x0804, 0x2faa, 0x81ff, +- 0x1904, 0x2fcf, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, 0x514d, +- 0x0904, 0x2fcf, 0x080c, 0x4e8e, 0x080c, 0x5114, 0x080c, 0x5172, +- 0x0804, 0x2faa, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, 0x5070, +- 0x0904, 0x2fcf, 0x62a0, 0x2019, 0x0005, 0x00c6, 0x080c, 0x51ab, +- 0x2061, 0x0000, 0x080c, 0x6df6, 0x0076, 0x2039, 0x0000, 0x080c, +- 0x6d03, 0x2009, 0x0000, 0x080c, 0xae76, 0x007e, 0x00ce, 0x080c, +- 0x5172, 0x0804, 0x2faa, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, +- 0x5172, 0x2208, 0x0804, 0x2faa, 0x0156, 0x00d6, 0x00e6, 0x2069, ++ 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, 0x50d5, 0x080c, 0x5171, ++ 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8a, 0x0904, ++ 0x2fd2, 0x080c, 0x50c6, 0x080c, 0x5171, 0x0804, 0x2faa, 0x81ff, ++ 0x1904, 0x2fcf, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, 0x514c, ++ 0x0904, 0x2fcf, 0x080c, 0x4e8d, 0x080c, 0x5113, 0x080c, 0x5171, ++ 0x0804, 0x2faa, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, 0x506f, ++ 0x0904, 0x2fcf, 0x62a0, 0x2019, 0x0005, 0x00c6, 0x080c, 0x51aa, ++ 0x2061, 0x0000, 0x080c, 0x6df5, 0x0076, 0x2039, 0x0000, 0x080c, ++ 0x6d02, 0x2009, 0x0000, 0x080c, 0xae82, 0x007e, 0x00ce, 0x080c, ++ 0x5171, 0x0804, 0x2faa, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, ++ 0x5171, 0x2208, 0x0804, 0x2faa, 0x0156, 0x00d6, 0x00e6, 0x2069, + 0xb614, 0x6810, 0x6914, 0xa10a, 0x1210, 0x2009, 0x0000, 0x6816, + 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007e, 0x2069, 0xb635, + 0x2d04, 0xa075, 0x0130, 0x704c, 0x0071, 0xa210, 0x7080, 0x0059, +@@ -1156,18 +1156,18 @@ unsigned short risc_code01[] = { + 0x81ff, 0x1904, 0x2fcf, 0x6150, 0xa190, 0x2dc4, 0x2215, 0xa294, + 0x00ff, 0x6370, 0x83ff, 0x0108, 0x6274, 0x67d4, 0xd79c, 0x0118, + 0x2031, 0x0001, 0x0090, 0xd7ac, 0x0118, 0x2031, 0x0003, 0x0068, +- 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c, 0x5ad0, 0x1118, ++ 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c, 0x5acf, 0x1118, + 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e3a, 0x7f3e, 0x0804, + 0x2faa, 0x6140, 0x6244, 0x2019, 0xb7b6, 0x231c, 0x0804, 0x2faa, + 0x0126, 0x2091, 0x8000, 0x6134, 0xa006, 0x2010, 0x6338, 0x012e, +- 0x0804, 0x2faa, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x6244, 0x6338, ++ 0x0804, 0x2faa, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x6244, 0x6338, + 0x0804, 0x2faa, 0x6140, 0x6244, 0x7824, 0x6042, 0x7b28, 0x6346, + 0x2069, 0xb552, 0x831f, 0xa305, 0x6816, 0x782c, 0x2069, 0xb7b6, + 0x2d1c, 0x206a, 0x0804, 0x2faa, 0x0126, 0x2091, 0x8000, 0x7824, + 0x6036, 0x782c, 0x603a, 0x012e, 0x0804, 0x2faa, 0x7838, 0xa005, + 0x01a8, 0x7828, 0xa025, 0x0904, 0x2fd2, 0x782c, 0xa02d, 0x0904, +- 0x2fd2, 0xa00e, 0x080c, 0x4faa, 0x1120, 0x6244, 0x6338, 0x6446, +- 0x653a, 0xa186, 0x00ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x3e9b, ++ 0x2fd2, 0xa00e, 0x080c, 0x4fa9, 0x1120, 0x6244, 0x6338, 0x6446, ++ 0x653a, 0xa186, 0x00ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x3e9a, + 0x0904, 0x2fd2, 0x7828, 0xa00d, 0x0904, 0x2fd2, 0x782c, 0xa005, + 0x0904, 0x2fd2, 0x6244, 0x6146, 0x6338, 0x603a, 0x0804, 0x2faa, + 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1904, 0x2fcf, 0x00c6, +@@ -1175,32 +1175,32 @@ unsigned short risc_code01[] = { + 0x1130, 0x2001, 0xb515, 0x2004, 0xa085, 0xff00, 0x0078, 0xa182, + 0x007f, 0x16a0, 0xa188, 0x2dc4, 0x210d, 0xa18c, 0x00ff, 0x2001, + 0xb515, 0x2004, 0xa116, 0x0550, 0x810f, 0xa105, 0x0126, 0x2091, +- 0x8000, 0x0006, 0x080c, 0x85c1, 0x000e, 0x01e0, 0x601a, 0x600b, +- 0xbc09, 0x601f, 0x0001, 0x080c, 0x3e76, 0x01d8, 0x6837, 0x0000, ++ 0x8000, 0x0006, 0x080c, 0x85c7, 0x000e, 0x01e0, 0x601a, 0x600b, ++ 0xbc09, 0x601f, 0x0001, 0x080c, 0x3e75, 0x01d8, 0x6837, 0x0000, + 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x701b, +- 0x3370, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c, 0x8646, 0x012e, ++ 0x3370, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c, 0x864c, 0x012e, + 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x2fcf, 0x00ce, 0x0804, +- 0x2fd2, 0x080c, 0x8617, 0x0cb0, 0x2001, 0xb500, 0x2004, 0xa086, ++ 0x2fd2, 0x080c, 0x861d, 0x0cb0, 0x2001, 0xb500, 0x2004, 0xa086, + 0x0003, 0x1904, 0x2fcf, 0x00c6, 0x2061, 0x0100, 0x7924, 0x810f, + 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x1130, 0x2001, 0xb515, 0x2004, + 0xa085, 0xff00, 0x0078, 0xa182, 0x007f, 0x16a0, 0xa188, 0x2dc4, + 0x210d, 0xa18c, 0x00ff, 0x2001, 0xb515, 0x2004, 0xa116, 0x0550, +- 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x85c1, ++ 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x85c7, + 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc05, 0x601f, 0x0001, 0x080c, +- 0x3e76, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, ++ 0x3e75, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, + 0x6838, 0xc0fd, 0x683a, 0x701b, 0x3370, 0x2d00, 0x6012, 0x2009, +- 0x0032, 0x080c, 0x8646, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, +- 0x0804, 0x2fcf, 0x00ce, 0x0804, 0x2fd2, 0x080c, 0x8617, 0x0cb0, ++ 0x0032, 0x080c, 0x864c, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, ++ 0x0804, 0x2fcf, 0x00ce, 0x0804, 0x2fd2, 0x080c, 0x861d, 0x0cb0, + 0x6830, 0xa086, 0x0100, 0x0904, 0x2fcf, 0x0804, 0x2faa, 0x2061, + 0xb874, 0x0126, 0x2091, 0x8000, 0x6000, 0xd084, 0x0178, 0x6104, + 0x6208, 0x2a60, 0x6068, 0x783a, 0x60b4, 0x783e, 0x60b0, 0x2019, + 0x0072, 0x201a, 0x6348, 0x012e, 0x0804, 0x2faa, 0xa00e, 0x2110, +- 0x0c80, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5ad0, 0x0904, 0x2fcf, ++ 0x0c80, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5acf, 0x0904, 0x2fcf, + 0x0126, 0x2091, 0x8000, 0x6248, 0x6068, 0xa202, 0x0248, 0xa085, +- 0x0001, 0x080c, 0x2867, 0x080c, 0x462d, 0x012e, 0x0804, 0x2faa, ++ 0x0001, 0x080c, 0x2867, 0x080c, 0x462c, 0x012e, 0x0804, 0x2faa, + 0x012e, 0x0804, 0x2fd2, 0x0006, 0x0016, 0x00c6, 0x00e6, 0x2001, + 0xb7bf, 0x2070, 0x2061, 0xb552, 0x6008, 0x2072, 0x2009, 0x0000, +- 0x2011, 0x1000, 0x080c, 0x6b41, 0x7206, 0x00ee, 0x00ce, 0x001e, ++ 0x2011, 0x1000, 0x080c, 0x6b40, 0x7206, 0x00ee, 0x00ce, 0x001e, + 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7824, 0xa084, 0x0007, + 0x0002, 0x33d4, 0x33dd, 0x33e4, 0x33d1, 0x33d1, 0x33d1, 0x33d1, + 0x33d1, 0x012e, 0x0804, 0x2fd2, 0x2009, 0x0114, 0x2104, 0xa085, +@@ -1308,10 +1308,10 @@ unsigned short risc_code01[] = { + 0x00c6, 0x2061, 0x0200, 0x2001, 0xb7c0, 0x2004, 0x601a, 0x2061, + 0x0100, 0x2001, 0xb7bf, 0x2004, 0x60ce, 0x6004, 0xc0ac, 0xa085, + 0x0200, 0x6006, 0x2001, 0x0074, 0x2004, 0xa005, 0x01f8, 0x2038, +- 0x2001, 0x0076, 0x2024, 0x2001, 0x0077, 0x201c, 0x080c, 0x3e76, ++ 0x2001, 0x0076, 0x2024, 0x2001, 0x0077, 0x201c, 0x080c, 0x3e75, + 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, 0x0007, 0x0220, + 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e, 0x6818, 0xa080, +- 0x000d, 0x04b1, 0x1d90, 0x2d00, 0x681a, 0x0088, 0x080c, 0x3e76, ++ 0x000d, 0x04b1, 0x1d90, 0x2d00, 0x681a, 0x0088, 0x080c, 0x3e75, + 0x6833, 0x000d, 0x2070, 0x6827, 0x0001, 0x2d00, 0x681a, 0x2001, + 0x0076, 0x2004, 0x2072, 0x2001, 0x0077, 0x2004, 0x7006, 0x2061, + 0x0020, 0x2079, 0x0100, 0x2001, 0xb7bf, 0x2004, 0x6012, 0x20e1, +@@ -1322,14 +1322,14 @@ unsigned short risc_code01[] = { + 0x7432, 0x7336, 0xa006, 0x703a, 0x703e, 0x810b, 0x810b, 0x21a8, + 0x810b, 0x7122, 0x7003, 0x0041, 0x7004, 0xd0fc, 0x0de8, 0x7003, + 0x0002, 0x7003, 0x0040, 0x53a5, 0x7430, 0x7334, 0x87ff, 0x0180, +- 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x3e76, 0x00ce, 0x6018, ++ 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x3e75, 0x00ce, 0x6018, + 0x2070, 0x2d00, 0x7006, 0x601a, 0x00de, 0x00ce, 0xa085, 0x0001, + 0x00ee, 0x0005, 0x00e6, 0x2001, 0x0075, 0x2004, 0xa005, 0x0508, + 0x2038, 0x2001, 0x0078, 0x2024, 0x2001, 0x0079, 0x201c, 0x080c, +- 0x3e76, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, ++ 0x3e75, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, + 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e, + 0x6818, 0xa080, 0x000d, 0x080c, 0x3768, 0x1d88, 0x2d00, 0x681a, +- 0x00e0, 0x080c, 0x3e76, 0x2d60, 0x6033, 0x000d, 0x2070, 0x6027, ++ 0x00e0, 0x080c, 0x3e75, 0x2d60, 0x6033, 0x000d, 0x2070, 0x6027, + 0x0001, 0x2c00, 0x601a, 0x2001, 0x0078, 0x2004, 0x2072, 0x2001, + 0x0079, 0x2004, 0x7006, 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8, + 0x700a, 0x2001, 0x0073, 0x2004, 0x700e, 0x2001, 0x0030, 0x2003, +@@ -1338,9 +1338,9 @@ unsigned short risc_code01[] = { + 0x0030, 0x2003, 0x0009, 0x00ee, 0x0005, 0x0804, 0x2faa, 0x0126, + 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xb540, 0x20a0, 0xa006, + 0x40a4, 0x012e, 0x0804, 0x2faa, 0x7d38, 0x7c3c, 0x0804, 0x3051, +- 0x080c, 0x3e76, 0x0904, 0x2fcf, 0x080c, 0x5ad0, 0x0110, 0x080c, +- 0x4bf1, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, +- 0x3eb7, 0x701b, 0x381c, 0x0005, 0xade8, 0x000d, 0x6800, 0xa005, ++ 0x080c, 0x3e75, 0x0904, 0x2fcf, 0x080c, 0x5acf, 0x0110, 0x080c, ++ 0x4bf0, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, ++ 0x3eb6, 0x701b, 0x381c, 0x0005, 0xade8, 0x000d, 0x6800, 0xa005, + 0x0904, 0x2fd2, 0x6804, 0xd0ac, 0x0118, 0xd0a4, 0x0904, 0x2fd2, + 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138, 0x6200, 0xa292, + 0x0005, 0x0218, 0xa18c, 0xffdf, 0x0010, 0xa18d, 0x0020, 0x6106, +@@ -1354,9 +1354,9 @@ unsigned short risc_code01[] = { + 0x0904, 0x2fd2, 0x6810, 0xa005, 0x0904, 0x2fd2, 0x6848, 0x6940, + 0xa10a, 0x1a04, 0x2fd2, 0x8001, 0x0904, 0x2fd2, 0x684c, 0x6944, + 0xa10a, 0x1a04, 0x2fd2, 0x8001, 0x0904, 0x2fd2, 0x6804, 0xd0fc, +- 0x0560, 0x080c, 0x3e76, 0x0904, 0x2fcf, 0x2009, 0x0014, 0x7a2c, ++ 0x0560, 0x080c, 0x3e75, 0x0904, 0x2fcf, 0x2009, 0x0014, 0x7a2c, + 0x7b28, 0x7c3c, 0x7d38, 0xa290, 0x0038, 0xa399, 0x0000, 0x080c, +- 0x3eb7, 0x701b, 0x389c, 0x0005, 0xade8, 0x000d, 0x20a9, 0x0014, ++ 0x3eb6, 0x701b, 0x389c, 0x0005, 0xade8, 0x000d, 0x20a9, 0x0014, + 0x2d98, 0x2069, 0xb56e, 0x2da0, 0x53a3, 0x7010, 0xa0e8, 0x000d, + 0x2001, 0xb572, 0x200c, 0xd1e4, 0x0140, 0x00c6, 0x2061, 0x0100, + 0x6004, 0xa085, 0x0b00, 0x6006, 0x00ce, 0x2009, 0xb7b1, 0x200b, +@@ -1364,7 +1364,7 @@ unsigned short risc_code01[] = { + 0x2009, 0x017f, 0x200a, 0x3200, 0xa084, 0x003f, 0xa085, 0x3020, + 0x2090, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xb552, 0x2da0, 0x53a3, + 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084, 0x00ff, 0x6046, +- 0x080c, 0x5da6, 0x080c, 0x536d, 0x080c, 0x53d6, 0x6000, 0xa086, ++ 0x080c, 0x5da5, 0x080c, 0x536c, 0x080c, 0x53d5, 0x6000, 0xa086, + 0x0000, 0x1904, 0x3997, 0x6808, 0x602a, 0x080c, 0x2470, 0x0006, + 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x000e, 0x0268, 0x2009, + 0x0170, 0x200b, 0x0080, 0xe000, 0xe000, 0x200b, 0x0000, 0x0036, +@@ -1373,3955 +1373,3956 @@ unsigned short risc_code01[] = { + 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, + 0x810f, 0x8217, 0x831f, 0x0010, 0xa084, 0xf0ff, 0x6006, 0x610a, + 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, +- 0x20a1, 0xb7c6, 0x40a1, 0x080c, 0x6a69, 0x6904, 0xd1fc, 0x0520, ++ 0x20a1, 0xb7c6, 0x40a1, 0x080c, 0x6a68, 0x6904, 0xd1fc, 0x0520, + 0x00c6, 0x2009, 0x0000, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x01c8, +- 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c, 0x635d, 0x6878, ++ 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c, 0x635c, 0x6878, + 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, 0x600a, 0xa184, + 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003, 0x0010, 0x6003, + 0x0001, 0x1f04, 0x3931, 0x00ce, 0x2069, 0xb552, 0x2001, 0xb79e, + 0x6a80, 0xa294, 0x0030, 0xa28e, 0x0000, 0x0170, 0xa28e, 0x0010, + 0x0118, 0xa28e, 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c, 0x28eb, + 0x2001, 0xb78f, 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061, 0x0100, +- 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x5ad0, 0x0128, +- 0x080c, 0x40d0, 0x0110, 0x080c, 0x2867, 0x60c8, 0xa005, 0x01d0, +- 0x6003, 0x0001, 0x2009, 0x397d, 0x00e0, 0x080c, 0x5ad0, 0x1178, +- 0x2011, 0x59a3, 0x080c, 0x699d, 0x2011, 0x5996, 0x080c, 0x6a5d, +- 0x2001, 0xb79f, 0x2003, 0x0000, 0x080c, 0x5a08, 0x0040, 0x080c, +- 0x4b20, 0x0028, 0x6003, 0x0004, 0x2009, 0x3997, 0x0010, 0x0804, ++ 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x5acf, 0x0128, ++ 0x080c, 0x40cf, 0x0110, 0x080c, 0x2867, 0x60c8, 0xa005, 0x01d0, ++ 0x6003, 0x0001, 0x2009, 0x397d, 0x00e0, 0x080c, 0x5acf, 0x1178, ++ 0x2011, 0x59a2, 0x080c, 0x699c, 0x2011, 0x5995, 0x080c, 0x6a5c, ++ 0x2001, 0xb79f, 0x2003, 0x0000, 0x080c, 0x5a07, 0x0040, 0x080c, ++ 0x4b1f, 0x0028, 0x6003, 0x0004, 0x2009, 0x3997, 0x0010, 0x0804, + 0x2faa, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x0258, 0x2001, + 0x0170, 0x2004, 0xa084, 0x00ff, 0xa086, 0x004c, 0x1118, 0x2091, + 0x309d, 0x0817, 0x2091, 0x301d, 0x0817, 0x6000, 0xa086, 0x0000, + 0x0904, 0x2fcf, 0x2069, 0xb552, 0x7830, 0x6842, 0x7834, 0x6846, + 0x6804, 0xd0fc, 0x0118, 0x2009, 0x0030, 0x0010, 0x2009, 0x001c, +- 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, 0xa006, +- 0x080c, 0x2867, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5ad0, 0x1178, ++ 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eb9, 0xa006, ++ 0x080c, 0x2867, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5acf, 0x1178, + 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, +- 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, 0x0020, 0x080c, +- 0x4bf1, 0x080c, 0x4b20, 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, +- 0x080c, 0x5ad0, 0x1110, 0x0804, 0x2fcf, 0x6188, 0x81ff, 0x0198, ++ 0xa085, 0x0001, 0x080c, 0x5b13, 0x080c, 0x5a07, 0x0020, 0x080c, ++ 0x4bf0, 0x080c, 0x4b1f, 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, ++ 0x080c, 0x5acf, 0x1110, 0x0804, 0x2fcf, 0x6188, 0x81ff, 0x0198, + 0x703f, 0x0000, 0x2001, 0xbcc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, +- 0x7c3c, 0x7d38, 0x0126, 0x2091, 0x8000, 0x080c, 0x3eba, 0x701b, ++ 0x7c3c, 0x7d38, 0x0126, 0x2091, 0x8000, 0x080c, 0x3eb9, 0x701b, + 0x2fa8, 0x012e, 0x0005, 0x703f, 0x0001, 0x00d6, 0x2069, 0xbcc0, + 0x20a9, 0x0040, 0x20a1, 0xbcc0, 0x2019, 0xffff, 0x43a4, 0x6550, + 0xa588, 0x2dc4, 0x210d, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, +- 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x4faa, 0x1190, 0x6014, ++ 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x4fa9, 0x1190, 0x6014, + 0x821c, 0x0238, 0xa398, 0xbcc0, 0xa085, 0xff00, 0x8007, 0x201a, + 0x0038, 0xa398, 0xbcc0, 0x2324, 0xa4a4, 0xff00, 0xa405, 0x201a, + 0x8210, 0x8108, 0xa182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, + 0x2d0c, 0xa105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0xbcc0, +- 0x2099, 0xbcc0, 0x080c, 0x4b90, 0x0804, 0x39f2, 0x080c, 0x3e9b, +- 0x0904, 0x2fd2, 0x00c6, 0x080c, 0x3e76, 0x00ce, 0x1120, 0x2009, ++ 0x2099, 0xbcc0, 0x080c, 0x4b8f, 0x0804, 0x39f2, 0x080c, 0x3e9a, ++ 0x0904, 0x2fd2, 0x00c6, 0x080c, 0x3e75, 0x00ce, 0x1120, 0x2009, + 0x0002, 0x0804, 0x2fcf, 0x2001, 0xb553, 0x2004, 0xd0b4, 0x0550, + 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0520, 0xa08e, 0x7f00, + 0x0508, 0xa08e, 0x8000, 0x01f0, 0x6000, 0xd08c, 0x11d8, 0x6004, + 0xa084, 0x00ff, 0xa086, 0x0006, 0x11a8, 0x6837, 0x0000, 0x6838, +- 0xc0fd, 0x683a, 0x080c, 0x9dd4, 0x1120, 0x2009, 0x0003, 0x0804, +- 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3a7e, 0x0005, 0x080c, 0x3e9b, ++ 0xc0fd, 0x683a, 0x080c, 0x9dda, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3a7e, 0x0005, 0x080c, 0x3e9a, + 0x0904, 0x2fd2, 0x20a9, 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, + 0x53a3, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, +- 0x20a0, 0x080c, 0x4b90, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, +- 0xad80, 0x000a, 0x20a0, 0x080c, 0x4b90, 0x2d00, 0x2009, 0x002b, +- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, 0x81ff, 0x1904, +- 0x2fcf, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, 0x5187, 0x0804, ++ 0x20a0, 0x080c, 0x4b8f, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, ++ 0xad80, 0x000a, 0x20a0, 0x080c, 0x4b8f, 0x2d00, 0x2009, 0x002b, ++ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eb9, 0x81ff, 0x1904, ++ 0x2fcf, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, 0x5186, 0x0804, + 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x7828, 0xa08a, 0x1000, 0x1a04, +- 0x2fd2, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x080c, 0x51ea, 0x0904, +- 0x2fcf, 0x2019, 0x0004, 0xa00e, 0x080c, 0x5199, 0x7924, 0x810f, ++ 0x2fd2, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x080c, 0x51e9, 0x0904, ++ 0x2fcf, 0x2019, 0x0004, 0xa00e, 0x080c, 0x5198, 0x7924, 0x810f, + 0x7a28, 0x0011, 0x0804, 0x2faa, 0xa186, 0x00ff, 0x0110, 0x0071, + 0x0060, 0x2029, 0x007e, 0x2061, 0xb500, 0x6450, 0x2400, 0xa506, +- 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x4faa, +- 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x69a9, +- 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8b, 0x0904, 0x2fd2, +- 0x080c, 0x5070, 0x0904, 0x2fcf, 0x080c, 0x5190, 0x0804, 0x2faa, +- 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8b, 0x0904, 0x2fd2, 0x080c, +- 0x5070, 0x0904, 0x2fcf, 0x080c, 0x517e, 0x0804, 0x2faa, 0x6100, +- 0x0804, 0x2faa, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x2001, 0xb500, ++ 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x4fa9, ++ 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x69a8, ++ 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8a, 0x0904, 0x2fd2, ++ 0x080c, 0x506f, 0x0904, 0x2fcf, 0x080c, 0x518f, 0x0804, 0x2faa, ++ 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, ++ 0x506f, 0x0904, 0x2fcf, 0x080c, 0x517d, 0x0804, 0x2faa, 0x6100, ++ 0x0804, 0x2faa, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x2001, 0xb500, + 0x2004, 0xa086, 0x0003, 0x1904, 0x2fcf, 0x00d6, 0xace8, 0x000a, + 0x7924, 0xd184, 0x0110, 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, + 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00, 0x8217, 0x00de, +- 0x6100, 0xa18c, 0x0200, 0x0804, 0x2faa, 0x7824, 0xa09c, 0x00ff, +- 0xa39a, 0x0003, 0x1a04, 0x2fcf, 0x6250, 0xa294, 0x00ff, 0xa084, +- 0xff00, 0x8007, 0xa206, 0x1150, 0x2001, 0xb540, 0x2009, 0x000c, +- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, 0x81ff, 0x1904, +- 0x2fcf, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x6004, 0xa084, 0x00ff, +- 0xa086, 0x0006, 0x1904, 0x2fcf, 0x00c6, 0x080c, 0x3e76, 0x00ce, +- 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, +- 0x9d80, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3b68, 0x0005, +- 0x6830, 0xa086, 0x0100, 0x0904, 0x2fcf, 0xad80, 0x000e, 0x2009, +- 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, 0xa006, +- 0x080c, 0x2867, 0x7824, 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0118, +- 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5ad0, 0x0110, 0x080c, 0x4bf1, +- 0x7828, 0xa08a, 0x1000, 0x1a04, 0x2fd2, 0x7924, 0xa18c, 0xff00, +- 0x810f, 0xa186, 0x00ff, 0x0138, 0xa182, 0x007f, 0x1a04, 0x2fd2, +- 0x2100, 0x080c, 0x2831, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, +- 0x2061, 0xb7f3, 0x601b, 0x0000, 0x601f, 0x0000, 0x080c, 0x5ad0, +- 0x1178, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, +- 0x0001, 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, 0x0420, +- 0x2011, 0x0003, 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, +- 0x080c, 0x7f5a, 0x0036, 0x2019, 0x0000, 0x080c, 0x7fe5, 0x003e, +- 0x2061, 0x0100, 0x2001, 0xb515, 0x2004, 0xa084, 0x00ff, 0x810f, +- 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, +- 0x2011, 0x4b55, 0x080c, 0x6a23, 0x7924, 0xa18c, 0xff00, 0x810f, +- 0x080c, 0x5ad0, 0x1110, 0x2009, 0x00ff, 0x7a28, 0x080c, 0x3acc, +- 0x012e, 0x00ce, 0x002e, 0x0804, 0x2faa, 0x7924, 0xa18c, 0xff00, +- 0x810f, 0x00c6, 0x080c, 0x4f4e, 0x2c08, 0x00ce, 0x1904, 0x2fd2, +- 0x0804, 0x2faa, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x2fcf, +- 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, +- 0x2fcf, 0x080c, 0x3e76, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, +- 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3eb7, 0x701b, +- 0x3c1a, 0x0005, 0x2009, 0x0080, 0x080c, 0x4faa, 0x1130, 0x6004, +- 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2021, 0x400a, 0x0804, +- 0x2fac, 0x00d6, 0xade8, 0x000d, 0x6900, 0x6a08, 0x6b0c, 0x6c10, +- 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0904, 0x3c91, 0xa0be, +- 0x0112, 0x0904, 0x3c91, 0xa0be, 0x0113, 0x0904, 0x3c91, 0xa0be, +- 0x0114, 0x0904, 0x3c91, 0xa0be, 0x0117, 0x0904, 0x3c91, 0xa0be, +- 0x011a, 0x0904, 0x3c91, 0xa0be, 0x011c, 0x0904, 0x3c91, 0xa0be, +- 0x0121, 0x05b0, 0xa0be, 0x0131, 0x0598, 0xa0be, 0x0171, 0x05c8, +- 0xa0be, 0x0173, 0x05b0, 0xa0be, 0x01a1, 0x1120, 0x6830, 0x8007, +- 0x6832, 0x04a8, 0xa0be, 0x0212, 0x0540, 0xa0be, 0x0213, 0x0528, +- 0xa0be, 0x0214, 0x01b0, 0xa0be, 0x0217, 0x0168, 0xa0be, 0x021a, +- 0x1120, 0x6838, 0x8007, 0x683a, 0x00e0, 0xa0be, 0x0300, 0x01c8, +- 0x00de, 0x0804, 0x2fd2, 0xad80, 0x0010, 0x20a9, 0x0007, 0x080c, +- 0x3cd7, 0xad80, 0x000e, 0x20a9, 0x0001, 0x080c, 0x3cd7, 0x0048, +- 0xad80, 0x000c, 0x080c, 0x3ce5, 0x0050, 0xad80, 0x000e, 0x080c, +- 0x3ce5, 0xad80, 0x000c, 0x20a9, 0x0001, 0x080c, 0x3cd7, 0x00c6, +- 0x080c, 0x3e76, 0x0568, 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119, +- 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, 0x810b, 0x697e, +- 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b, +- 0x0000, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0x9d9c, 0x1120, 0x2009, +- 0x0003, 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3cce, 0x0005, +- 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x6820, 0xa086, +- 0x8001, 0x1904, 0x2faa, 0x2009, 0x0004, 0x0804, 0x2fcf, 0x0016, +- 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108, 0x280a, +- 0x8108, 0x1f04, 0x3cd9, 0x001e, 0x0005, 0x0016, 0x00a6, 0x00b6, +- 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000, 0x205c, +- 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a, 0x00be, +- 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, +- 0x2fcf, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005, +- 0x0804, 0x2fcf, 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f, 0x60d4, +- 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x2fd2, 0xa182, 0x00ff, +- 0x1a04, 0x2fd2, 0x7a2c, 0x7b28, 0x6070, 0xa306, 0x1140, 0x6074, +- 0xa24e, 0x0904, 0x2fd2, 0xa9cc, 0xff00, 0x0904, 0x2fd2, 0x00c6, +- 0x080c, 0x3dc4, 0x2c68, 0x00ce, 0x0538, 0xa0c6, 0x4000, 0x1180, +- 0x00c6, 0x0006, 0x2d60, 0x2009, 0x0000, 0x080c, 0x524b, 0x1108, +- 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x00ce, 0x0088, +- 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, +- 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, +- 0x4006, 0x2020, 0x0804, 0x2fac, 0x2d00, 0x7022, 0x0016, 0x00b6, +- 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x85c1, 0x05d8, 0x2d00, 0x601a, +- 0x080c, 0xa021, 0x2e58, 0x00ee, 0x00e6, 0x00c6, 0x080c, 0x3e76, +- 0x00ce, 0x2b70, 0x1150, 0x080c, 0x8617, 0x00ee, 0x00ce, 0x00be, +- 0x001e, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x6837, 0x0000, 0x683b, +- 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, 0xd88c, +- 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2c9c, +- 0x012e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x4eec, 0x2001, +- 0x0002, 0x080c, 0x4efe, 0x2009, 0x0002, 0x080c, 0x8646, 0xa085, +- 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, +- 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3da7, 0x0005, 0x6830, +- 0xa086, 0x0100, 0x7020, 0x2060, 0x1138, 0x2009, 0x0004, 0x6204, +- 0xa294, 0x00ff, 0x0804, 0x2fcf, 0x2009, 0x0000, 0x6838, 0xd0f4, +- 0x1904, 0x2faa, 0x080c, 0x524b, 0x1108, 0xc185, 0x6000, 0xd0bc, +- 0x0108, 0xc18d, 0x0804, 0x2faa, 0x00e6, 0x00d6, 0x2029, 0x0000, +- 0x2001, 0xb535, 0x2004, 0xd0ac, 0x0138, 0x2021, 0x0000, 0x20a9, +- 0x00ff, 0x2071, 0xb635, 0x0030, 0x2021, 0x0080, 0x20a9, 0x007f, +- 0x2071, 0xb6b5, 0x2e04, 0xa005, 0x1130, 0x2100, 0xa406, 0x1570, +- 0x2428, 0xc5fd, 0x0458, 0x2068, 0x6f10, 0x2700, 0xa306, 0x11b0, +- 0x6e14, 0x2600, 0xa206, 0x1190, 0x2400, 0xa106, 0x1160, 0x2d60, +- 0xd884, 0x0568, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538, +- 0x2001, 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0xa106, +- 0x1168, 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09d0, 0x2001, 0xb535, +- 0x2004, 0xd0ac, 0x19a8, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, +- 0x1f04, 0x3dda, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, +- 0x0001, 0x0030, 0x080c, 0x4f4e, 0x1dd0, 0x6312, 0x6216, 0xa006, +- 0xa005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x080c, +- 0x3e76, 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x7824, 0xa005, 0x0904, 0x2fd2, 0xa096, 0x00ff, 0x0120, 0xa092, +- 0x0004, 0x1a04, 0x2fd2, 0x2010, 0x2d18, 0x080c, 0x2c4f, 0x0904, +- 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3e46, 0x0005, 0x6830, 0xa086, +- 0x0100, 0x0904, 0x2fcf, 0x0804, 0x2faa, 0x7924, 0xa18c, 0xff00, ++ 0x6100, 0xa18c, 0x0200, 0x0804, 0x2faa, 0x7824, 0xa09c, 0x0003, ++ 0xd0b4, 0x1160, 0xa39a, 0x0003, 0x1a04, 0x2fcf, 0x6250, 0xa294, ++ 0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, 0x1150, 0x2001, 0xb540, ++ 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eb9, ++ 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x6004, ++ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x2fcf, 0x00c6, 0x080c, ++ 0x3e75, 0x00ce, 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, ++ 0x683a, 0x080c, 0x9d86, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, ++ 0x3b6a, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x2fcf, 0xad80, ++ 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, ++ 0x3eb9, 0xa006, 0x080c, 0x2867, 0x7824, 0xa084, 0x00ff, 0xa086, ++ 0x00ff, 0x0118, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x5acf, 0x0110, ++ 0x080c, 0x4bf0, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x2fd2, 0x7924, ++ 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0138, 0xa182, 0x007f, ++ 0x1a04, 0x2fd2, 0x2100, 0x080c, 0x2831, 0x0026, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x2061, 0xb7f3, 0x601b, 0x0000, 0x601f, 0x0000, ++ 0x080c, 0x5acf, 0x1178, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, ++ 0xb500, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5b13, 0x080c, ++ 0x5a07, 0x0420, 0x2011, 0x0003, 0x080c, 0x8075, 0x2011, 0x0002, ++ 0x080c, 0x807f, 0x080c, 0x7f59, 0x0036, 0x2019, 0x0000, 0x080c, ++ 0x7fe4, 0x003e, 0x2061, 0x0100, 0x2001, 0xb515, 0x2004, 0xa084, ++ 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, ++ 0x2009, 0x002d, 0x2011, 0x4b54, 0x080c, 0x6a22, 0x7924, 0xa18c, ++ 0xff00, 0x810f, 0x080c, 0x5acf, 0x1110, 0x2009, 0x00ff, 0x7a28, ++ 0x080c, 0x3acc, 0x012e, 0x00ce, 0x002e, 0x0804, 0x2faa, 0x7924, ++ 0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x4f4d, 0x2c08, 0x00ce, ++ 0x1904, 0x2fd2, 0x0804, 0x2faa, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x2fcf, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, ++ 0x0005, 0x0804, 0x2fcf, 0x080c, 0x3e75, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x2fcf, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, ++ 0x3eb6, 0x701b, 0x3c1c, 0x0005, 0x2009, 0x0080, 0x080c, 0x4fa9, ++ 0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2021, ++ 0x400a, 0x0804, 0x2fac, 0x00d6, 0xade8, 0x000d, 0x6900, 0x6a08, ++ 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0904, ++ 0x3c93, 0xa0be, 0x0112, 0x0904, 0x3c93, 0xa0be, 0x0113, 0x0904, ++ 0x3c93, 0xa0be, 0x0114, 0x0904, 0x3c93, 0xa0be, 0x0117, 0x0904, ++ 0x3c93, 0xa0be, 0x011a, 0x0904, 0x3c93, 0xa0be, 0x011c, 0x0904, ++ 0x3c93, 0xa0be, 0x0121, 0x05b0, 0xa0be, 0x0131, 0x0598, 0xa0be, ++ 0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, 0xa0be, 0x01a1, 0x1120, ++ 0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, 0x0212, 0x0540, 0xa0be, ++ 0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, 0xa0be, 0x0217, 0x0168, ++ 0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, 0x683a, 0x00e0, 0xa0be, ++ 0x0300, 0x01c8, 0x00de, 0x0804, 0x2fd2, 0xad80, 0x0010, 0x20a9, ++ 0x0007, 0x080c, 0x3cd9, 0xad80, 0x000e, 0x20a9, 0x0001, 0x080c, ++ 0x3cd9, 0x0048, 0xad80, 0x000c, 0x080c, 0x3ce7, 0x0050, 0xad80, ++ 0x000e, 0x080c, 0x3ce7, 0xad80, 0x000c, 0x20a9, 0x0001, 0x080c, ++ 0x3cd9, 0x00c6, 0x080c, 0x3e75, 0x0568, 0x6838, 0xc0fd, 0x683a, ++ 0x6837, 0x0119, 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, ++ 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, ++ 0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, ++ 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0x9da2, ++ 0x1120, 0x2009, 0x0003, 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, ++ 0x3cd0, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, 0x2fcf, ++ 0x6820, 0xa086, 0x8001, 0x1904, 0x2faa, 0x2009, 0x0004, 0x0804, ++ 0x2fcf, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, ++ 0x8108, 0x280a, 0x8108, 0x1f04, 0x3cdb, 0x001e, 0x0005, 0x0016, ++ 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, ++ 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, ++ 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, ++ 0x0001, 0x0804, 0x2fcf, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, ++ 0x2009, 0x0005, 0x0804, 0x2fcf, 0x7924, 0x2140, 0xa18c, 0xff00, + 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x2fd2, +- 0xa182, 0x00ff, 0x1a04, 0x2fd2, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x9c84, 0x1188, 0xa190, 0xb635, 0x2204, 0xa065, 0x0160, 0x080c, +- 0x4c0c, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000, +- 0x012e, 0x0804, 0x2faa, 0x012e, 0x0804, 0x2fcf, 0x080c, 0x15f8, +- 0x0188, 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012, +- 0x7016, 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, +- 0xad80, 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, +- 0x4faa, 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208, +- 0xa066, 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c, +- 0x4faa, 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066, +- 0x8cff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904, +- 0x080c, 0x160f, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, 0x2031, +- 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0xb5d2, 0x6606, 0x6112, +- 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x1643, +- 0x7007, 0x0002, 0x701b, 0x2faa, 0x0005, 0x00f6, 0x0126, 0x2091, +- 0x8000, 0x2079, 0x0000, 0x2001, 0xb590, 0x2004, 0xa005, 0x1168, +- 0x0e04, 0x3ee5, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a, +- 0x781b, 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6, +- 0x2071, 0xb582, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, 0x2060, +- 0x0078, 0x7030, 0xa0e0, 0x0004, 0xac82, 0xb5d2, 0x0210, 0x2061, +- 0xb592, 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a, +- 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, +- 0x0005, 0x00e6, 0x2071, 0xb582, 0x7038, 0xa005, 0x0570, 0x0126, +- 0x2091, 0x8000, 0x0e04, 0x3f3c, 0x00f6, 0x2079, 0x0000, 0x7818, +- 0xd084, 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, +- 0x7826, 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, +- 0x8001, 0x703a, 0xa005, 0x1130, 0x7033, 0xb592, 0x7037, 0xb592, +- 0x00ce, 0x0048, 0xac80, 0x0004, 0xa0fa, 0xb5d2, 0x0210, 0x2001, +- 0xb592, 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026, +- 0x2001, 0xb553, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, +- 0x3ecd, 0x002e, 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x0126, 0x2091, +- 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5ad0, +- 0x1178, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, +- 0x0001, 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, 0x0010, +- 0x080c, 0x4b20, 0x012e, 0x0804, 0x2faa, 0x7824, 0x2008, 0xa18c, +- 0xfffd, 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x2faa, 0x0804, +- 0x2fd2, 0x81ff, 0x1904, 0x2fcf, 0x6000, 0xa086, 0x0003, 0x1904, +- 0x2fcf, 0x2001, 0xb553, 0x2004, 0xd0ac, 0x1904, 0x2fcf, 0x080c, +- 0x3e9b, 0x0904, 0x2fd2, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, +- 0x1120, 0x7828, 0xa005, 0x0904, 0x2faa, 0x00c6, 0x080c, 0x3e76, +- 0x00ce, 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, +- 0xc0fd, 0x683a, 0x080c, 0x9e65, 0x0904, 0x2fcf, 0x7007, 0x0003, +- 0x701b, 0x3fab, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x2fcf, +- 0x0804, 0x2faa, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1904, +- 0x2fcf, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e76, +- 0x0904, 0x2fcf, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, +- 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, 0x4faa, +- 0x1904, 0x4025, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0130, +- 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x1904, 0x4025, 0x2001, 0xb553, +- 0x2004, 0xd0ac, 0x1128, 0x080c, 0x524b, 0x1110, 0xd79c, 0x05e8, +- 0xd794, 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, 0x2098, 0x3400, +- 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3ce5, 0xd794, 0x0148, 0xac80, +- 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3ce5, +- 0x21a2, 0xd794, 0x01d8, 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, +- 0x0002, 0x53a3, 0xac80, 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, +- 0x2098, 0x3400, 0x20a9, 0x0002, 0x53a3, 0x080c, 0x3cd7, 0xac80, +- 0x0026, 0x2098, 0x20a9, 0x0002, 0x53a3, 0x0008, 0x94a0, 0xd794, +- 0x0110, 0xa6b0, 0x000b, 0xa6b0, 0x0005, 0x8108, 0x2001, 0xb535, +- 0x2004, 0xd0ac, 0x0118, 0xa186, 0x0100, 0x0040, 0xd78c, 0x0120, +- 0xa186, 0x0100, 0x0170, 0x0018, 0xa186, 0x007e, 0x0150, 0xd794, +- 0x0118, 0xa686, 0x0020, 0x0010, 0xa686, 0x0028, 0x0150, 0x0804, +- 0x3fce, 0x86ff, 0x1120, 0x7120, 0x810b, 0x0804, 0x2faa, 0x702f, +- 0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0xb5d2, +- 0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, +- 0x6532, 0x2c10, 0x080c, 0x1643, 0x7007, 0x0002, 0x701b, 0x4061, +- 0x0005, 0x702c, 0xa005, 0x1170, 0x711c, 0x7024, 0x20a0, 0x7728, +- 0x2031, 0x0000, 0x2061, 0xb5d2, 0x6224, 0x6328, 0x642c, 0x6530, +- 0x0804, 0x3fce, 0x7120, 0x810b, 0x0804, 0x2faa, 0x2029, 0x007e, +- 0x7924, 0x7a28, 0x7b2c, 0x7c38, 0xa184, 0xff00, 0x8007, 0xa0e2, +- 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa184, 0x00ff, +- 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa284, +- 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, +- 0x2fd2, 0xa284, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, +- 0x0a04, 0x2fd2, 0xa384, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, +- 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa384, 0x00ff, 0xa0e2, 0x0020, +- 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa484, 0xff00, 0x8007, +- 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa484, +- 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, +- 0x2061, 0xb7b9, 0x6102, 0x6206, 0x630a, 0x640e, 0x0804, 0x2faa, +- 0x0006, 0x2001, 0xb553, 0x2004, 0xd0cc, 0x000e, 0x0005, 0x0006, +- 0x2001, 0xb572, 0x2004, 0xd0bc, 0x000e, 0x0005, 0x6168, 0x7a24, +- 0x6300, 0x82ff, 0x1118, 0x7926, 0x0804, 0x2faa, 0x83ff, 0x1904, +- 0x2fd2, 0x2001, 0xfff0, 0xa200, 0x1a04, 0x2fd2, 0x2019, 0xffff, +- 0x606c, 0xa302, 0xa200, 0x0a04, 0x2fd2, 0x7926, 0x626a, 0x0804, +- 0x2faa, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1904, 0x2fcf, +- 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x080c, 0x3e76, 0x0904, 0x2fcf, +- 0x2009, 0x0000, 0x2019, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, +- 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0, 0xb635, 0x2c64, 0x8cff, +- 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0130, 0x6004, +- 0xa084, 0xff00, 0xa086, 0x0600, 0x1158, 0x6014, 0x20a2, 0x94a0, +- 0x6010, 0x8007, 0xa105, 0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, +- 0x8108, 0xa182, 0x00ff, 0x0120, 0xa386, 0x002a, 0x0148, 0x08e0, +- 0x83ff, 0x1120, 0x7120, 0x810c, 0x0804, 0x2faa, 0x702f, 0x0001, +- 0x711e, 0x7020, 0xa300, 0x7022, 0x2061, 0xb5d2, 0x6007, 0x0000, +- 0x6312, 0x7024, 0x600e, 0x6426, 0x652a, 0x662e, 0x6732, 0x2c10, +- 0x080c, 0x1643, 0x7007, 0x0002, 0x701b, 0x4157, 0x0005, 0x702c, +- 0xa005, 0x1168, 0x711c, 0x7024, 0x20a0, 0x2019, 0x0000, 0x2061, +- 0xb5d2, 0x6424, 0x6528, 0x662c, 0x6730, 0x0804, 0x4114, 0x7120, +- 0x810c, 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x60d4, 0xd0ac, +- 0x1118, 0xd09c, 0x0904, 0x2fcf, 0x080c, 0x3e76, 0x0904, 0x2fcf, +- 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3eb7, 0x701b, +- 0x4182, 0x0005, 0x00d6, 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000, +- 0x0148, 0xa0be, 0x7100, 0x0130, 0xa0be, 0x7200, 0x0118, 0x00de, +- 0x0804, 0x2fd2, 0x6820, 0x6924, 0x080c, 0x281d, 0x1510, 0x080c, +- 0x4f4e, 0x11f8, 0x7122, 0x6612, 0x6516, 0x6e18, 0x00c6, 0x080c, +- 0x3e76, 0x01b8, 0x080c, 0x3e76, 0x01a0, 0x00ce, 0x00de, 0x6837, +- 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, +- 0x080c, 0x9db8, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x41bc, +- 0x0005, 0x00de, 0x0804, 0x2fcf, 0x7120, 0x080c, 0x2d97, 0x6820, +- 0xa086, 0x8001, 0x0904, 0x2fcf, 0x2d00, 0x701e, 0x6804, 0xa080, +- 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x4b90, +- 0x000e, 0xade8, 0x000d, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, +- 0xb5d2, 0x6007, 0x0000, 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x1108, +- 0x0018, 0xa7c6, 0x7100, 0x1140, 0xa6c2, 0x0004, 0x0a04, 0x2fd2, +- 0x2009, 0x0004, 0x0804, 0x3eba, 0xa7c6, 0x7200, 0x1904, 0x2fd2, +- 0xa6c2, 0x0054, 0x0a04, 0x2fd2, 0x600e, 0x6013, 0x002a, 0x6226, +- 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x1643, 0x7007, 0x0002, +- 0x701b, 0x4203, 0x0005, 0x701c, 0x2068, 0x6804, 0xa080, 0x0001, +- 0x2004, 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, +- 0x080c, 0x4b90, 0x000e, 0x2009, 0x002a, 0x2061, 0xb5d2, 0x6224, +- 0x6328, 0x642c, 0x6530, 0x0804, 0x3eba, 0x81ff, 0x1904, 0x2fcf, +- 0x792c, 0x2001, 0xb7a0, 0x2102, 0x080c, 0x3e8b, 0x0904, 0x2fd2, +- 0x080c, 0x5070, 0x0904, 0x2fcf, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x51a2, 0x012e, 0x0804, 0x2faa, 0x7824, 0xd08c, 0x1118, 0xd084, +- 0x0904, 0x3a46, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x00c6, 0x080c, +- 0x3e76, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x6004, +- 0xa084, 0x00ff, 0xa086, 0x0006, 0x0128, 0xa08e, 0x0004, 0x0110, +- 0xa08e, 0x0005, 0x15b8, 0x7824, 0xd08c, 0x0120, 0x6000, 0xc08c, +- 0x6002, 0x0030, 0x2001, 0xb553, 0x2004, 0xd0b4, 0x0904, 0x3a82, +- 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0904, 0x3a82, 0xa08e, +- 0x7f00, 0x0904, 0x3a82, 0xa08e, 0x8000, 0x0904, 0x3a82, 0x6000, +- 0xd08c, 0x1904, 0x3a82, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x080c, 0x9dd4, 0x1120, 0x2009, 0x0003, 0x0804, 0x2fcf, 0x7007, +- 0x0003, 0x701b, 0x4284, 0x0005, 0x080c, 0x3e9b, 0x0904, 0x2fd2, +- 0x0804, 0x3a82, 0x2009, 0xb531, 0x210c, 0x81ff, 0x0120, 0x2009, +- 0x0001, 0x0804, 0x2fcf, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, +- 0x0120, 0x2009, 0x0007, 0x0804, 0x2fcf, 0x2001, 0xb553, 0x2004, +- 0xd0ac, 0x0120, 0x2009, 0x0008, 0x0804, 0x2fcf, 0x609c, 0xd0a4, +- 0x1118, 0xd0ac, 0x1904, 0x3a82, 0x6837, 0x0000, 0x6833, 0x0000, +- 0x6838, 0xc0fd, 0x683a, 0x080c, 0x9e65, 0x1120, 0x2009, 0x0003, +- 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x42bf, 0x0005, 0x6830, +- 0xa086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x2fcf, 0x080c, +- 0x3e9b, 0x0904, 0x2fd2, 0x0804, 0x4253, 0x81ff, 0x2009, 0x0001, +- 0x1904, 0x2fcf, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, +- 0x2fcf, 0x2001, 0xb553, 0x2004, 0xd0ac, 0x2009, 0x0008, 0x1904, +- 0x2fcf, 0x080c, 0x3e9b, 0x0904, 0x2fd2, 0x6004, 0xa084, 0x00ff, +- 0xa086, 0x0006, 0x2009, 0x0009, 0x1904, 0x2fcf, 0x00c6, 0x080c, +- 0x3e76, 0x00ce, 0x2009, 0x0002, 0x0904, 0x2fcf, 0x6837, 0x0000, +- 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7928, 0xa194, 0xff00, +- 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x1128, 0xc0ed, 0x6952, 0x792c, +- 0x6956, 0x0048, 0xa28e, 0x0100, 0x1904, 0x2fd2, 0xc0e5, 0x6853, +- 0x0000, 0x6857, 0x0000, 0x683e, 0x080c, 0xa022, 0x2009, 0x0003, +- 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x431f, 0x0005, 0x6830, +- 0xa086, 0x0100, 0x2009, 0x0004, 0x0904, 0x2fcf, 0x0804, 0x2faa, +- 0x81ff, 0x2009, 0x0001, 0x1904, 0x2fcf, 0x6000, 0xa086, 0x0003, +- 0x2009, 0x0007, 0x1904, 0x2fcf, 0x080c, 0x3e9b, 0x0904, 0x2fd2, +- 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x1904, +- 0x2fcf, 0x00c6, 0x080c, 0x3e76, 0x00ce, 0x2009, 0x0002, 0x0904, +- 0x2fcf, 0xad80, 0x000f, 0x2009, 0x0008, 0x7a2c, 0x7b28, 0x7c3c, +- 0x7d38, 0x080c, 0x3eb7, 0x701b, 0x4356, 0x0005, 0x00d6, 0xade8, +- 0x000f, 0x6800, 0xa086, 0x0500, 0x1140, 0x6804, 0xa005, 0x1128, +- 0x6808, 0xa084, 0xff00, 0x1108, 0x0018, 0x00de, 0x1904, 0x2fd2, +- 0x00de, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x00c6, 0x080c, 0x3e9b, 0x1118, 0x00ce, 0x0804, 0x2fd2, 0x080c, +- 0xa071, 0x2009, 0x0003, 0x00ce, 0x0904, 0x2fcf, 0x7007, 0x0003, +- 0x701b, 0x4383, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, +- 0x0904, 0x2fcf, 0x0804, 0x2faa, 0x81ff, 0x0120, 0x2009, 0x0001, +- 0x0804, 0x2fcf, 0x6000, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, +- 0x0804, 0x2fcf, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0xa6b4, 0x00ff, +- 0x080c, 0x4faa, 0x1904, 0x2fd2, 0xa186, 0x007f, 0x0150, 0x6004, +- 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2009, 0x0009, 0x0804, +- 0x2fcf, 0x00c6, 0x080c, 0x3e76, 0x00ce, 0x1120, 0x2009, 0x0002, +- 0x0804, 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x2001, +- 0x0100, 0x8007, 0x680a, 0x080c, 0x9def, 0x1120, 0x2009, 0x0003, +- 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x43cf, 0x0005, 0x6808, +- 0x8007, 0xa086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x2fcf, +- 0x68b0, 0x6836, 0x6810, 0x8007, 0xa084, 0x00ff, 0x800c, 0x6814, +- 0x8007, 0xa084, 0x00ff, 0x8004, 0xa080, 0x0002, 0xa108, 0xad80, +- 0x0004, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, 0x080c, +- 0x3e76, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x7924, 0xa194, +- 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, 0x2fd2, +- 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3eb7, +- 0x701b, 0x440b, 0x0005, 0x2001, 0xb52a, 0x2003, 0x0001, 0xad80, +- 0x000d, 0x2098, 0x20a9, 0x001a, 0x20a1, 0xb7c6, 0x53a3, 0x0804, +- 0x2faa, 0x080c, 0x3e76, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, +- 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff, 0x0110, +- 0x0804, 0x2fd2, 0x2099, 0xb7c6, 0x20a0, 0x20a9, 0x001a, 0x53a3, +- 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eba, +- 0x7824, 0xa08a, 0x1000, 0x1a04, 0x2fd2, 0x0126, 0x2091, 0x8000, +- 0x8003, 0x800b, 0x810b, 0xa108, 0x00c6, 0x2061, 0xb7f3, 0x6142, +- 0x00ce, 0x012e, 0x0804, 0x2faa, 0x00c6, 0x080c, 0x5ad0, 0x1188, ++ 0xa182, 0x00ff, 0x1a04, 0x2fd2, 0x7a2c, 0x7b28, 0x6070, 0xa306, ++ 0x1140, 0x6074, 0xa24e, 0x0904, 0x2fd2, 0xa9cc, 0xff00, 0x0904, ++ 0x2fd2, 0x00c6, 0x080c, 0x3dc5, 0x2c68, 0x00ce, 0x0530, 0xa0c6, ++ 0x4000, 0x1178, 0x00c6, 0x0006, 0x2d60, 0xa00e, 0x080c, 0x524a, ++ 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x00ce, ++ 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, ++ 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, ++ 0x2001, 0x4006, 0x2020, 0x0804, 0x2fac, 0x2d00, 0x7022, 0x0016, ++ 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x85c7, 0x05d8, 0x2d00, ++ 0x601a, 0x080c, 0xa027, 0x2e58, 0x00ee, 0x00e6, 0x00c6, 0x080c, ++ 0x3e75, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x861d, 0x00ee, 0x00ce, ++ 0x00be, 0x001e, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x6837, 0x0000, ++ 0x683b, 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, ++ 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x2c9c, 0x012e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x4eeb, ++ 0x2001, 0x0002, 0x080c, 0x4efd, 0x2009, 0x0002, 0x080c, 0x864c, ++ 0xa085, 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x3da8, 0x0005, ++ 0x6830, 0xa086, 0x0100, 0x7020, 0x2060, 0x1138, 0x2009, 0x0004, ++ 0x6204, 0xa294, 0x00ff, 0x0804, 0x2fcf, 0x2009, 0x0000, 0x6838, ++ 0xd0f4, 0x1904, 0x2faa, 0x080c, 0x524a, 0x1108, 0xc185, 0x6000, ++ 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x2faa, 0x00e6, 0x00d6, 0xa02e, ++ 0x2001, 0xb535, 0x2004, 0xd0ac, 0x0130, 0xa026, 0x20a9, 0x00ff, ++ 0x2071, 0xb635, 0x0030, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, ++ 0xb6b5, 0x2e04, 0xa005, 0x1130, 0x2100, 0xa406, 0x1570, 0x2428, ++ 0xc5fd, 0x0458, 0x2068, 0x6f10, 0x2700, 0xa306, 0x11b0, 0x6e14, ++ 0x2600, 0xa206, 0x1190, 0x2400, 0xa106, 0x1160, 0x2d60, 0xd884, ++ 0x0568, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538, 0x2001, ++ 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0xa106, 0x1168, ++ 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09d0, 0x2001, 0xb535, 0x2004, ++ 0xd0ac, 0x19a8, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, ++ 0x3dd9, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, ++ 0x0030, 0x080c, 0x4f4d, 0x1dd0, 0x6312, 0x6216, 0xa006, 0xa005, ++ 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x080c, 0x3e75, ++ 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7824, ++ 0xa005, 0x0904, 0x2fd2, 0xa096, 0x00ff, 0x0120, 0xa092, 0x0004, ++ 0x1a04, 0x2fd2, 0x2010, 0x2d18, 0x080c, 0x2c4f, 0x0904, 0x2fcf, ++ 0x7007, 0x0003, 0x701b, 0x3e45, 0x0005, 0x6830, 0xa086, 0x0100, ++ 0x0904, 0x2fcf, 0x0804, 0x2faa, 0x7924, 0xa18c, 0xff00, 0x810f, ++ 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x2fd2, 0xa182, ++ 0x00ff, 0x1a04, 0x2fd2, 0x0126, 0x2091, 0x8000, 0x080c, 0x9c8a, ++ 0x1188, 0xa190, 0xb635, 0x2204, 0xa065, 0x0160, 0x080c, 0x4c0b, ++ 0x2001, 0xb535, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000, 0x012e, ++ 0x0804, 0x2faa, 0x012e, 0x0804, 0x2fcf, 0x080c, 0x15f8, 0x0188, ++ 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012, 0x7016, ++ 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, ++ 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, 0x4fa9, ++ 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208, 0xa066, ++ 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c, 0x4fa9, ++ 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066, 0x8cff, ++ 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904, 0x080c, ++ 0x160f, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, 0x2031, 0x0001, ++ 0x0010, 0x2031, 0x0000, 0x2061, 0xb5d2, 0x6606, 0x6112, 0x600e, ++ 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x1643, 0x7007, ++ 0x0002, 0x701b, 0x2faa, 0x0005, 0x00f6, 0x0126, 0x2091, 0x8000, ++ 0x2079, 0x0000, 0x2001, 0xb590, 0x2004, 0xa005, 0x1168, 0x0e04, ++ 0x3ee4, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a, 0x781b, ++ 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6, 0x2071, ++ 0xb582, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, 0x2060, 0x0078, ++ 0x7030, 0xa0e0, 0x0004, 0xac82, 0xb5d2, 0x0210, 0x2061, 0xb592, ++ 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a, 0x2262, ++ 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, 0x0005, ++ 0x00e6, 0x2071, 0xb582, 0x7038, 0xa005, 0x0570, 0x0126, 0x2091, ++ 0x8000, 0x0e04, 0x3f3b, 0x00f6, 0x2079, 0x0000, 0x7818, 0xd084, ++ 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, ++ 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, 0x8001, ++ 0x703a, 0xa005, 0x1130, 0x7033, 0xb592, 0x7037, 0xb592, 0x00ce, ++ 0x0048, 0xac80, 0x0004, 0xa0fa, 0xb5d2, 0x0210, 0x2001, 0xb592, ++ 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026, 0x2001, ++ 0xb553, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x3ecc, ++ 0x002e, 0x0005, 0x81ff, 0x1904, 0x2fcf, 0x0126, 0x2091, 0x8000, ++ 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5acf, 0x1178, + 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, +- 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, 0x080c, 0x1515, +- 0x0038, 0x2061, 0xb500, 0x6030, 0xc09d, 0x6032, 0x080c, 0x4b20, +- 0x00ce, 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, 0xb7f3, +- 0x7924, 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, 0x0009, 0x7838, +- 0x606a, 0x783c, 0x6066, 0x7828, 0x6062, 0x782c, 0x605e, 0x2061, +- 0xb7a1, 0x2001, 0xb808, 0x600e, 0x6013, 0x0001, 0x6017, 0x0002, +- 0x6007, 0x0000, 0x6037, 0x0000, 0x00ce, 0x012e, 0x0804, 0x2faa, +- 0x0126, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x6044, +- 0xd0a4, 0x11b0, 0xd084, 0x0118, 0x080c, 0x4607, 0x0068, 0xd08c, +- 0x0118, 0x080c, 0x4528, 0x0040, 0xd094, 0x0118, 0x080c, 0x44f9, +- 0x0018, 0xd09c, 0x0108, 0x0061, 0x00ee, 0x00ce, 0x012e, 0x0005, +- 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, 0x0ca0, +- 0x624c, 0xa286, 0xf0f0, 0x1150, 0x6048, 0xa086, 0xf0f0, 0x0130, +- 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0xa294, 0xff00, +- 0xa296, 0xf700, 0x0178, 0x7134, 0xd1a4, 0x1160, 0x6240, 0xa295, +- 0x0100, 0x6242, 0xa294, 0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, +- 0x4bb0, 0x00f0, 0x6040, 0xa084, 0x0010, 0xa085, 0x0140, 0x6042, +- 0x6043, 0x0000, 0x707b, 0x0000, 0x7097, 0x0001, 0x70bb, 0x0000, +- 0x70d7, 0x0000, 0x2009, 0xbcc0, 0x200b, 0x0000, 0x708b, 0x0000, +- 0x707f, 0x000a, 0x2009, 0x000a, 0x2011, 0x4ad6, 0x080c, 0x6a23, +- 0x0005, 0x0156, 0x2001, 0xb574, 0x2004, 0xd08c, 0x0110, 0x7053, +- 0xffff, 0x707c, 0xa005, 0x1510, 0x2011, 0x4ad6, 0x080c, 0x699d, +- 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9, 0x00c8, +- 0x6044, 0xd08c, 0x1168, 0x1f04, 0x4510, 0x6242, 0x708f, 0x0000, +- 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, 0x6042, 0x6242, 0x0030, +- 0x6242, 0x708f, 0x0000, 0x7083, 0x0000, 0x0000, 0x015e, 0x0005, +- 0x7080, 0xa08a, 0x0003, 0x1210, 0x0023, 0x0010, 0x080c, 0x1515, +- 0x0005, 0x4534, 0x4584, 0x4606, 0x00f6, 0x7083, 0x0001, 0x20e1, +- 0xa000, 0xe000, 0x20e1, 0x8700, 0x080c, 0x2470, 0x20e1, 0x9080, +- 0x20e1, 0x4000, 0x2079, 0xbb00, 0x207b, 0x2200, 0x7807, 0x00ef, +- 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, +- 0x781b, 0x0000, 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, +- 0x782b, 0x0000, 0x782f, 0x0000, 0x2079, 0xbb0c, 0x207b, 0x1101, +- 0x7807, 0x0000, 0x2099, 0xb505, 0x20a1, 0xbb0e, 0x20a9, 0x0004, +- 0x53a3, 0x2079, 0xbb12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, +- 0xbb00, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, +- 0x600f, 0x0000, 0x080c, 0x4b07, 0x00fe, 0x7087, 0x0000, 0x6043, +- 0x0008, 0x6043, 0x0000, 0x0005, 0x00d6, 0x7084, 0x7087, 0x0000, +- 0xa025, 0x0904, 0x45ee, 0x6020, 0xd0b4, 0x1904, 0x45ec, 0x7194, +- 0x81ff, 0x0904, 0x45dc, 0xa486, 0x000c, 0x1904, 0x45e7, 0xa480, +- 0x0018, 0x8004, 0x20a8, 0x2011, 0xbb80, 0x2019, 0xbb00, 0x220c, +- 0x2304, 0xa106, 0x11b8, 0x8210, 0x8318, 0x1f04, 0x459f, 0x6043, +- 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x7083, +- 0x0002, 0x708f, 0x0002, 0x2009, 0x07d0, 0x2011, 0x4add, 0x080c, +- 0x6a23, 0x0490, 0x2069, 0xbb80, 0x6930, 0xa18e, 0x1101, 0x1538, +- 0x6834, 0xa005, 0x1520, 0x6900, 0xa18c, 0x00ff, 0x1118, 0x6804, +- 0xa005, 0x0190, 0x2011, 0xbb8e, 0x2019, 0xb505, 0x20a9, 0x0004, +- 0x220c, 0x2304, 0xa102, 0x0230, 0x1190, 0x8210, 0x8318, 0x1f04, +- 0x45d0, 0x0068, 0x7097, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x2099, 0xbb80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, +- 0x0008, 0x6043, 0x0000, 0x0010, 0x00de, 0x0005, 0x6040, 0xa085, +- 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x60c3, 0x000c, 0x2011, +- 0xb7ea, 0x2013, 0x0000, 0x7087, 0x0000, 0x20e1, 0x9080, 0x60a3, +- 0x0056, 0x60a7, 0x9575, 0x080c, 0x7d72, 0x0c30, 0x0005, 0x708c, +- 0xa08a, 0x001d, 0x1210, 0x0023, 0x0010, 0x080c, 0x1515, 0x0005, +- 0x463a, 0x4649, 0x4671, 0x468a, 0x46ae, 0x46d6, 0x46fa, 0x472b, +- 0x474f, 0x4777, 0x47ae, 0x47d6, 0x47f2, 0x4808, 0x4828, 0x483b, +- 0x4843, 0x4873, 0x4897, 0x48bf, 0x48e3, 0x4914, 0x4951, 0x4980, +- 0x499c, 0x49db, 0x49fb, 0x4a14, 0x4a15, 0x00c6, 0x2061, 0xb500, +- 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9, 0x6006, +- 0x00ce, 0x0005, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0002, +- 0x708f, 0x0001, 0x2009, 0x07d0, 0x2011, 0x4add, 0x080c, 0x6a23, +- 0x0005, 0x00f6, 0x7084, 0xa086, 0x0014, 0x1508, 0x6043, 0x0000, +- 0x6020, 0xd0b4, 0x11e0, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1102, +- 0x11a0, 0x7834, 0xa005, 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70b8, +- 0xa005, 0x1110, 0x70bb, 0x0001, 0x2011, 0x4add, 0x080c, 0x699d, +- 0x708f, 0x0010, 0x080c, 0x4843, 0x0010, 0x080c, 0x4b20, 0x00fe, +- 0x0005, 0x708f, 0x0003, 0x6043, 0x0004, 0x2011, 0x4add, 0x080c, +- 0x699d, 0x080c, 0x4b98, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, +- 0x000a, 0x20a3, 0x0000, 0x1f04, 0x4681, 0x60c3, 0x0014, 0x080c, +- 0x4b07, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4add, +- 0x080c, 0x699d, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, 0x7a30, +- 0xa296, 0x1102, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, +- 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0004, +- 0x0029, 0x0010, 0x080c, 0x4b20, 0x00fe, 0x0005, 0x708f, 0x0005, +- 0x080c, 0x4b98, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, +- 0xbb8e, 0x080c, 0x4be9, 0x1160, 0x7078, 0xa005, 0x1148, 0x7150, +- 0xa186, 0xffff, 0x0128, 0x080c, 0x4aa1, 0x0110, 0x080c, 0x4bc7, ++ 0xa085, 0x0001, 0x080c, 0x5b13, 0x080c, 0x5a07, 0x0010, 0x080c, ++ 0x4b1f, 0x012e, 0x0804, 0x2faa, 0x7824, 0x2008, 0xa18c, 0xfffd, ++ 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x2faa, 0x0804, 0x2fd2, ++ 0x81ff, 0x1904, 0x2fcf, 0x6000, 0xa086, 0x0003, 0x1904, 0x2fcf, ++ 0x2001, 0xb553, 0x2004, 0xd0ac, 0x1904, 0x2fcf, 0x080c, 0x3e9a, ++ 0x0904, 0x2fd2, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1120, ++ 0x7828, 0xa005, 0x0904, 0x2faa, 0x00c6, 0x080c, 0x3e75, 0x00ce, ++ 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, ++ 0x683a, 0x080c, 0x9e6b, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, ++ 0x3faa, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x2fcf, 0x0804, ++ 0x2faa, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1904, 0x2fcf, ++ 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e75, 0x0904, ++ 0x2fcf, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, ++ 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, 0x4fa9, 0x1904, ++ 0x4024, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0130, 0xa0c4, ++ 0xff00, 0xa8c6, 0x0600, 0x1904, 0x4024, 0x2001, 0xb553, 0x2004, ++ 0xd0ac, 0x1128, 0x080c, 0x524a, 0x1110, 0xd79c, 0x05e8, 0xd794, ++ 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, ++ 0x0004, 0x53a3, 0x080c, 0x3ce7, 0xd794, 0x0148, 0xac80, 0x000a, ++ 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3ce7, 0x21a2, ++ 0xd794, 0x01d8, 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, ++ 0x53a3, 0xac80, 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, ++ 0x3400, 0x20a9, 0x0002, 0x53a3, 0x080c, 0x3cd9, 0xac80, 0x0026, ++ 0x2098, 0x20a9, 0x0002, 0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, ++ 0xa6b0, 0x000b, 0xa6b0, 0x0005, 0x8108, 0x2001, 0xb535, 0x2004, ++ 0xd0ac, 0x0118, 0xa186, 0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, ++ 0x0100, 0x0170, 0x0018, 0xa186, 0x007e, 0x0150, 0xd794, 0x0118, ++ 0xa686, 0x0020, 0x0010, 0xa686, 0x0028, 0x0150, 0x0804, 0x3fcd, ++ 0x86ff, 0x1120, 0x7120, 0x810b, 0x0804, 0x2faa, 0x702f, 0x0001, ++ 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0xb5d2, 0x6007, ++ 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, ++ 0x2c10, 0x080c, 0x1643, 0x7007, 0x0002, 0x701b, 0x4060, 0x0005, ++ 0x702c, 0xa005, 0x1170, 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, ++ 0x0000, 0x2061, 0xb5d2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, ++ 0x3fcd, 0x7120, 0x810b, 0x0804, 0x2faa, 0x2029, 0x007e, 0x7924, ++ 0x7a28, 0x7b2c, 0x7c38, 0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, ++ 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa184, 0x00ff, 0xa0e2, ++ 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa284, 0xff00, ++ 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, ++ 0xa284, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, ++ 0x2fd2, 0xa384, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x2fd2, ++ 0xa502, 0x0a04, 0x2fd2, 0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, ++ 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa484, 0xff00, 0x8007, 0xa0e2, ++ 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0xa484, 0x00ff, ++ 0xa0e2, 0x0020, 0x0a04, 0x2fd2, 0xa502, 0x0a04, 0x2fd2, 0x2061, ++ 0xb7b9, 0x6102, 0x6206, 0x630a, 0x640e, 0x0804, 0x2faa, 0x0006, ++ 0x2001, 0xb553, 0x2004, 0xd0cc, 0x000e, 0x0005, 0x0006, 0x2001, ++ 0xb572, 0x2004, 0xd0bc, 0x000e, 0x0005, 0x6168, 0x7a24, 0x6300, ++ 0x82ff, 0x1118, 0x7926, 0x0804, 0x2faa, 0x83ff, 0x1904, 0x2fd2, ++ 0x2001, 0xfff0, 0xa200, 0x1a04, 0x2fd2, 0x2019, 0xffff, 0x606c, ++ 0xa302, 0xa200, 0x0a04, 0x2fd2, 0x7926, 0x626a, 0x0804, 0x2faa, ++ 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1904, 0x2fcf, 0x7c28, ++ 0x7d24, 0x7e38, 0x7f2c, 0x080c, 0x3e75, 0x0904, 0x2fcf, 0x2009, ++ 0x0000, 0x2019, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, ++ 0x0003, 0x7026, 0x20a0, 0xa1e0, 0xb635, 0x2c64, 0x8cff, 0x01b8, ++ 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0130, 0x6004, 0xa084, ++ 0xff00, 0xa086, 0x0600, 0x1158, 0x6014, 0x20a2, 0x94a0, 0x6010, ++ 0x8007, 0xa105, 0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, ++ 0xa182, 0x00ff, 0x0120, 0xa386, 0x002a, 0x0148, 0x08e0, 0x83ff, ++ 0x1120, 0x7120, 0x810c, 0x0804, 0x2faa, 0x702f, 0x0001, 0x711e, ++ 0x7020, 0xa300, 0x7022, 0x2061, 0xb5d2, 0x6007, 0x0000, 0x6312, ++ 0x7024, 0x600e, 0x6426, 0x652a, 0x662e, 0x6732, 0x2c10, 0x080c, ++ 0x1643, 0x7007, 0x0002, 0x701b, 0x4156, 0x0005, 0x702c, 0xa005, ++ 0x1168, 0x711c, 0x7024, 0x20a0, 0x2019, 0x0000, 0x2061, 0xb5d2, ++ 0x6424, 0x6528, 0x662c, 0x6730, 0x0804, 0x4113, 0x7120, 0x810c, ++ 0x0804, 0x2faa, 0x81ff, 0x1904, 0x2fcf, 0x60d4, 0xd0ac, 0x1118, ++ 0xd09c, 0x0904, 0x2fcf, 0x080c, 0x3e75, 0x0904, 0x2fcf, 0x7924, ++ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3eb6, 0x701b, 0x4181, ++ 0x0005, 0x00d6, 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000, 0x0148, ++ 0xa0be, 0x7100, 0x0130, 0xa0be, 0x7200, 0x0118, 0x00de, 0x0804, ++ 0x2fd2, 0x6820, 0x6924, 0x080c, 0x281d, 0x1510, 0x080c, 0x4f4d, ++ 0x11f8, 0x7122, 0x6612, 0x6516, 0x6e18, 0x00c6, 0x080c, 0x3e75, ++ 0x01b8, 0x080c, 0x3e75, 0x01a0, 0x00ce, 0x00de, 0x6837, 0x0000, ++ 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, ++ 0x9dbe, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, 0x41bb, 0x0005, ++ 0x00de, 0x0804, 0x2fcf, 0x7120, 0x080c, 0x2d97, 0x6820, 0xa086, ++ 0x8001, 0x0904, 0x2fcf, 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002, ++ 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x4b8f, 0x000e, ++ 0xade8, 0x000d, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xb5d2, ++ 0x6007, 0x0000, 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x1108, 0x0018, ++ 0xa7c6, 0x7100, 0x1140, 0xa6c2, 0x0004, 0x0a04, 0x2fd2, 0x2009, ++ 0x0004, 0x0804, 0x3eb9, 0xa7c6, 0x7200, 0x1904, 0x2fd2, 0xa6c2, ++ 0x0054, 0x0a04, 0x2fd2, 0x600e, 0x6013, 0x002a, 0x6226, 0x632a, ++ 0x642e, 0x6532, 0x2c10, 0x080c, 0x1643, 0x7007, 0x0002, 0x701b, ++ 0x4202, 0x0005, 0x701c, 0x2068, 0x6804, 0xa080, 0x0001, 0x2004, ++ 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, ++ 0x4b8f, 0x000e, 0x2009, 0x002a, 0x2061, 0xb5d2, 0x6224, 0x6328, ++ 0x642c, 0x6530, 0x0804, 0x3eb9, 0x81ff, 0x1904, 0x2fcf, 0x792c, ++ 0x2001, 0xb7a0, 0x2102, 0x080c, 0x3e8a, 0x0904, 0x2fd2, 0x080c, ++ 0x506f, 0x0904, 0x2fcf, 0x0126, 0x2091, 0x8000, 0x080c, 0x51a1, ++ 0x012e, 0x0804, 0x2faa, 0x7824, 0xd08c, 0x1118, 0xd084, 0x0904, ++ 0x3a46, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x00c6, 0x080c, 0x3e75, ++ 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x6004, 0xa084, ++ 0x00ff, 0xa086, 0x0006, 0x0128, 0xa08e, 0x0004, 0x0110, 0xa08e, ++ 0x0005, 0x15b8, 0x7824, 0xd08c, 0x0120, 0x6000, 0xc08c, 0x6002, ++ 0x0030, 0x2001, 0xb553, 0x2004, 0xd0b4, 0x0904, 0x3a82, 0x7824, ++ 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0904, 0x3a82, 0xa08e, 0x7f00, ++ 0x0904, 0x3a82, 0xa08e, 0x8000, 0x0904, 0x3a82, 0x6000, 0xd08c, ++ 0x1904, 0x3a82, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, ++ 0x9dda, 0x1120, 0x2009, 0x0003, 0x0804, 0x2fcf, 0x7007, 0x0003, ++ 0x701b, 0x4283, 0x0005, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x0804, ++ 0x3a82, 0x2009, 0xb531, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x2fcf, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x0120, ++ 0x2009, 0x0007, 0x0804, 0x2fcf, 0x2001, 0xb553, 0x2004, 0xd0ac, ++ 0x0120, 0x2009, 0x0008, 0x0804, 0x2fcf, 0x609c, 0xd0a4, 0x1118, ++ 0xd0ac, 0x1904, 0x3a82, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, ++ 0xc0fd, 0x683a, 0x080c, 0x9e6b, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x2fcf, 0x7007, 0x0003, 0x701b, 0x42be, 0x0005, 0x6830, 0xa086, ++ 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x2fcf, 0x080c, 0x3e9a, ++ 0x0904, 0x2fd2, 0x0804, 0x4252, 0x81ff, 0x2009, 0x0001, 0x1904, ++ 0x2fcf, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x2fcf, ++ 0x2001, 0xb553, 0x2004, 0xd0ac, 0x2009, 0x0008, 0x1904, 0x2fcf, ++ 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x6004, 0xa084, 0x00ff, 0xa086, ++ 0x0006, 0x2009, 0x0009, 0x1904, 0x2fcf, 0x00c6, 0x080c, 0x3e75, ++ 0x00ce, 0x2009, 0x0002, 0x0904, 0x2fcf, 0x6837, 0x0000, 0x6833, ++ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7928, 0xa194, 0xff00, 0xa18c, ++ 0x00ff, 0xa006, 0x82ff, 0x1128, 0xc0ed, 0x6952, 0x792c, 0x6956, ++ 0x0048, 0xa28e, 0x0100, 0x1904, 0x2fd2, 0xc0e5, 0x6853, 0x0000, ++ 0x6857, 0x0000, 0x683e, 0x080c, 0xa028, 0x2009, 0x0003, 0x0904, ++ 0x2fcf, 0x7007, 0x0003, 0x701b, 0x431e, 0x0005, 0x6830, 0xa086, ++ 0x0100, 0x2009, 0x0004, 0x0904, 0x2fcf, 0x0804, 0x2faa, 0x81ff, ++ 0x2009, 0x0001, 0x1904, 0x2fcf, 0x6000, 0xa086, 0x0003, 0x2009, ++ 0x0007, 0x1904, 0x2fcf, 0x080c, 0x3e9a, 0x0904, 0x2fd2, 0x6004, ++ 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x1904, 0x2fcf, ++ 0x00c6, 0x080c, 0x3e75, 0x00ce, 0x2009, 0x0002, 0x0904, 0x2fcf, ++ 0xad80, 0x000f, 0x2009, 0x0008, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, ++ 0x080c, 0x3eb6, 0x701b, 0x4355, 0x0005, 0x00d6, 0xade8, 0x000f, ++ 0x6800, 0xa086, 0x0500, 0x1140, 0x6804, 0xa005, 0x1128, 0x6808, ++ 0xa084, 0xff00, 0x1108, 0x0018, 0x00de, 0x1904, 0x2fd2, 0x00de, ++ 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x00c6, ++ 0x080c, 0x3e9a, 0x1118, 0x00ce, 0x0804, 0x2fd2, 0x080c, 0xa077, ++ 0x2009, 0x0003, 0x00ce, 0x0904, 0x2fcf, 0x7007, 0x0003, 0x701b, ++ 0x4382, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0904, ++ 0x2fcf, 0x0804, 0x2faa, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x2fcf, 0x6000, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x2fcf, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0xa6b4, 0x00ff, 0x080c, ++ 0x4fa9, 0x1904, 0x2fd2, 0xa186, 0x007f, 0x0150, 0x6004, 0xa084, ++ 0x00ff, 0xa086, 0x0006, 0x0120, 0x2009, 0x0009, 0x0804, 0x2fcf, ++ 0x00c6, 0x080c, 0x3e75, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x2fcf, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x2001, 0x0100, ++ 0x8007, 0x680a, 0x080c, 0x9df5, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x2fcf, 0x7007, 0x0003, 0x701b, 0x43ce, 0x0005, 0x6808, 0x8007, ++ 0xa086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x2fcf, 0x68b0, ++ 0x6836, 0x6810, 0x8007, 0xa084, 0x00ff, 0x800c, 0x6814, 0x8007, ++ 0xa084, 0x00ff, 0x8004, 0xa080, 0x0002, 0xa108, 0xad80, 0x0004, ++ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eb9, 0x080c, 0x3e75, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x7924, 0xa194, 0xff00, ++ 0xa18c, 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, 0x2fd2, 0x2009, ++ 0x001a, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3eb6, 0x701b, ++ 0x440a, 0x0005, 0x2001, 0xb52a, 0x2003, 0x0001, 0xad80, 0x000d, ++ 0x2098, 0x20a9, 0x001a, 0x20a1, 0xb7c6, 0x53a3, 0x0804, 0x2faa, ++ 0x080c, 0x3e75, 0x1120, 0x2009, 0x0002, 0x0804, 0x2fcf, 0x7924, ++ 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, ++ 0x2fd2, 0x2099, 0xb7c6, 0x20a0, 0x20a9, 0x001a, 0x53a3, 0x2009, ++ 0x001a, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x3eb9, 0x7824, ++ 0xa08a, 0x1000, 0x1a04, 0x2fd2, 0x0126, 0x2091, 0x8000, 0x8003, ++ 0x800b, 0x810b, 0xa108, 0x00c6, 0x2061, 0xb7f3, 0x6142, 0x00ce, ++ 0x012e, 0x0804, 0x2faa, 0x00c6, 0x080c, 0x5acf, 0x1188, 0x2001, ++ 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0xa085, ++ 0x0001, 0x080c, 0x5b13, 0x080c, 0x5a07, 0x080c, 0x1515, 0x0038, ++ 0x2061, 0xb500, 0x6030, 0xc09d, 0x6032, 0x080c, 0x4b1f, 0x00ce, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, 0xb7f3, 0x7924, ++ 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, 0x0009, 0x7838, 0x606a, ++ 0x783c, 0x6066, 0x7828, 0x6062, 0x782c, 0x605e, 0x2061, 0xb7a1, ++ 0x2001, 0xb808, 0x600e, 0x6013, 0x0001, 0x6017, 0x0002, 0x6007, ++ 0x0000, 0x6037, 0x0000, 0x00ce, 0x012e, 0x0804, 0x2faa, 0x0126, ++ 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x6044, 0xd0a4, ++ 0x11b0, 0xd084, 0x0118, 0x080c, 0x4606, 0x0068, 0xd08c, 0x0118, ++ 0x080c, 0x4527, 0x0040, 0xd094, 0x0118, 0x080c, 0x44f8, 0x0018, ++ 0xd09c, 0x0108, 0x0061, 0x00ee, 0x00ce, 0x012e, 0x0005, 0x0016, ++ 0x6128, 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, 0x0ca0, 0x624c, ++ 0xa286, 0xf0f0, 0x1150, 0x6048, 0xa086, 0xf0f0, 0x0130, 0x624a, ++ 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0xa294, 0xff00, 0xa296, ++ 0xf700, 0x0178, 0x7134, 0xd1a4, 0x1160, 0x6240, 0xa295, 0x0100, ++ 0x6242, 0xa294, 0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, 0x4baf, ++ 0x00f0, 0x6040, 0xa084, 0x0010, 0xa085, 0x0140, 0x6042, 0x6043, ++ 0x0000, 0x707b, 0x0000, 0x7097, 0x0001, 0x70bb, 0x0000, 0x70d7, ++ 0x0000, 0x2009, 0xbcc0, 0x200b, 0x0000, 0x708b, 0x0000, 0x707f, ++ 0x000a, 0x2009, 0x000a, 0x2011, 0x4ad5, 0x080c, 0x6a22, 0x0005, ++ 0x0156, 0x2001, 0xb574, 0x2004, 0xd08c, 0x0110, 0x7053, 0xffff, ++ 0x707c, 0xa005, 0x1510, 0x2011, 0x4ad5, 0x080c, 0x699c, 0x6040, ++ 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, ++ 0xd08c, 0x1168, 0x1f04, 0x450f, 0x6242, 0x708f, 0x0000, 0x6040, ++ 0xa094, 0x0010, 0xa285, 0x0080, 0x6042, 0x6242, 0x0030, 0x6242, ++ 0x708f, 0x0000, 0x7083, 0x0000, 0x0000, 0x015e, 0x0005, 0x7080, ++ 0xa08a, 0x0003, 0x1210, 0x0023, 0x0010, 0x080c, 0x1515, 0x0005, ++ 0x4533, 0x4583, 0x4605, 0x00f6, 0x7083, 0x0001, 0x20e1, 0xa000, ++ 0xe000, 0x20e1, 0x8700, 0x080c, 0x2470, 0x20e1, 0x9080, 0x20e1, ++ 0x4000, 0x2079, 0xbb00, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, ++ 0x0000, 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, ++ 0x0000, 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, ++ 0x0000, 0x782f, 0x0000, 0x2079, 0xbb0c, 0x207b, 0x1101, 0x7807, ++ 0x0000, 0x2099, 0xb505, 0x20a1, 0xbb0e, 0x20a9, 0x0004, 0x53a3, ++ 0x2079, 0xbb12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0xbb00, ++ 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, ++ 0x0000, 0x080c, 0x4b06, 0x00fe, 0x7087, 0x0000, 0x6043, 0x0008, ++ 0x6043, 0x0000, 0x0005, 0x00d6, 0x7084, 0x7087, 0x0000, 0xa025, ++ 0x0904, 0x45ed, 0x6020, 0xd0b4, 0x1904, 0x45eb, 0x7194, 0x81ff, ++ 0x0904, 0x45db, 0xa486, 0x000c, 0x1904, 0x45e6, 0xa480, 0x0018, ++ 0x8004, 0x20a8, 0x2011, 0xbb80, 0x2019, 0xbb00, 0x220c, 0x2304, ++ 0xa106, 0x11b8, 0x8210, 0x8318, 0x1f04, 0x459e, 0x6043, 0x0004, ++ 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x7083, 0x0002, ++ 0x708f, 0x0002, 0x2009, 0x07d0, 0x2011, 0x4adc, 0x080c, 0x6a22, ++ 0x0490, 0x2069, 0xbb80, 0x6930, 0xa18e, 0x1101, 0x1538, 0x6834, ++ 0xa005, 0x1520, 0x6900, 0xa18c, 0x00ff, 0x1118, 0x6804, 0xa005, ++ 0x0190, 0x2011, 0xbb8e, 0x2019, 0xb505, 0x20a9, 0x0004, 0x220c, ++ 0x2304, 0xa102, 0x0230, 0x1190, 0x8210, 0x8318, 0x1f04, 0x45cf, ++ 0x0068, 0x7097, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, ++ 0xbb80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, ++ 0x6043, 0x0000, 0x0010, 0x00de, 0x0005, 0x6040, 0xa085, 0x0100, ++ 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x60c3, 0x000c, 0x2011, 0xb7ea, ++ 0x2013, 0x0000, 0x7087, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, ++ 0x60a7, 0x9575, 0x080c, 0x7d71, 0x0c30, 0x0005, 0x708c, 0xa08a, ++ 0x001d, 0x1210, 0x0023, 0x0010, 0x080c, 0x1515, 0x0005, 0x4639, ++ 0x4648, 0x4670, 0x4689, 0x46ad, 0x46d5, 0x46f9, 0x472a, 0x474e, ++ 0x4776, 0x47ad, 0x47d5, 0x47f1, 0x4807, 0x4827, 0x483a, 0x4842, ++ 0x4872, 0x4896, 0x48be, 0x48e2, 0x4913, 0x4950, 0x497f, 0x499b, ++ 0x49da, 0x49fa, 0x4a13, 0x4a14, 0x00c6, 0x2061, 0xb500, 0x6003, ++ 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9, 0x6006, 0x00ce, ++ 0x0005, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0002, 0x708f, ++ 0x0001, 0x2009, 0x07d0, 0x2011, 0x4adc, 0x080c, 0x6a22, 0x0005, ++ 0x00f6, 0x7084, 0xa086, 0x0014, 0x1508, 0x6043, 0x0000, 0x6020, ++ 0xd0b4, 0x11e0, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1102, 0x11a0, ++ 0x7834, 0xa005, 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, ++ 0x1110, 0x70bb, 0x0001, 0x2011, 0x4adc, 0x080c, 0x699c, 0x708f, ++ 0x0010, 0x080c, 0x4842, 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, ++ 0x708f, 0x0003, 0x6043, 0x0004, 0x2011, 0x4adc, 0x080c, 0x699c, ++ 0x080c, 0x4b97, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, 0x000a, ++ 0x20a3, 0x0000, 0x1f04, 0x4680, 0x60c3, 0x0014, 0x080c, 0x4b06, ++ 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4adc, 0x080c, ++ 0x699c, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, 0x7a30, 0xa296, ++ 0x1102, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, ++ 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0004, 0x0029, ++ 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, 0x708f, 0x0005, 0x080c, ++ 0x4b97, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0xbb8e, ++ 0x080c, 0x4be8, 0x1160, 0x7078, 0xa005, 0x1148, 0x7150, 0xa186, ++ 0xffff, 0x0128, 0x080c, 0x4aa0, 0x0110, 0x080c, 0x4bc6, 0x20a9, ++ 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x60c3, 0x0014, 0x080c, 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, ++ 0x01f0, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, 0x0014, 0x11a8, ++ 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834, 0xa005, ++ 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, ++ 0x0001, 0x708f, 0x0006, 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, ++ 0x0005, 0x708f, 0x0007, 0x080c, 0x4b97, 0x20a3, 0x1104, 0x20a3, ++ 0x0000, 0x3430, 0x2011, 0xbb8e, 0x080c, 0x4be8, 0x11a8, 0x7078, ++ 0xa005, 0x1190, 0x7158, 0xa186, 0xffff, 0x0170, 0xa180, 0x2dc4, ++ 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4aa0, 0x0128, 0x080c, ++ 0x40d6, 0x0110, 0x080c, 0x2867, 0x20a9, 0x0008, 0x2298, 0x26a0, ++ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, ++ 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4adc, ++ 0x080c, 0x699c, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, 0x7a30, ++ 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0008, ++ 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, 0x708f, 0x0009, ++ 0x080c, 0x4b97, 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430, 0x080c, ++ 0x4be8, 0x1150, 0x7078, 0xa005, 0x1138, 0x080c, 0x4a15, 0x1170, ++ 0xa085, 0x0001, 0x080c, 0x2867, 0x20a9, 0x0008, 0x2099, 0xbb8e, ++ 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, ++ 0x080c, 0x4b06, 0x0010, 0x080c, 0x462c, 0x0005, 0x00f6, 0x7084, ++ 0xa005, 0x0588, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, 0x0014, ++ 0x1540, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1105, 0x1510, 0x7834, ++ 0x2011, 0x0100, 0xa21e, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, ++ 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x000a, 0x00b1, 0x0098, ++ 0xa005, 0x1178, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, ++ 0x70bb, 0x0001, 0x708b, 0x0000, 0x708f, 0x000e, 0x080c, 0x4827, ++ 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, 0x708f, 0x000b, 0x2011, ++ 0xbb0e, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, ++ 0x0002, 0x2009, 0x0000, 0x41a4, 0x080c, 0x4b97, 0x20a3, 0x1106, ++ 0x20a3, 0x0000, 0x080c, 0x4be8, 0x0118, 0x2013, 0x0000, 0x0020, ++ 0x7054, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, ++ 0x60c3, 0x0084, 0x080c, 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, ++ 0x01b0, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, 0x0084, 0x1168, ++ 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, ++ 0x1120, 0x708f, 0x000c, 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, ++ 0x0005, 0x708f, 0x000d, 0x080c, 0x4b97, 0x20a3, 0x1107, 0x20a3, ++ 0x0000, 0x2099, 0xbb8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x60c3, 0x0084, 0x080c, 0x4b06, 0x0005, 0x00f6, ++ 0x7084, 0xa005, 0x01d0, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, ++ 0x0084, 0x1188, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1107, 0x1158, ++ 0x7834, 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4b89, 0x708f, ++ 0x000e, 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, 0x708f, ++ 0x000f, 0x7087, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, ++ 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x4adc, 0x080c, ++ 0x6990, 0x0005, 0x7084, 0xa005, 0x0120, 0x2011, 0x4adc, 0x080c, ++ 0x699c, 0x0005, 0x708f, 0x0011, 0x080c, 0x4be8, 0x11a0, 0x7170, ++ 0x81ff, 0x0188, 0x2009, 0x0000, 0x7074, 0xa084, 0x00ff, 0x080c, ++ 0x281d, 0xa186, 0x007e, 0x0138, 0xa186, 0x0080, 0x0120, 0x2011, ++ 0xbb8e, 0x080c, 0x4aa0, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, ++ 0xbb80, 0x20a1, 0x020b, 0x7484, 0xa480, 0x0018, 0xa080, 0x0007, ++ 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x080c, ++ 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4adc, ++ 0x080c, 0x699c, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, 0x7a30, ++ 0xa296, 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0012, ++ 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, 0x708f, 0x0013, ++ 0x080c, 0x4ba3, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, ++ 0xbb8e, 0x080c, 0x4be8, 0x1160, 0x7078, 0xa005, 0x1148, 0x7150, ++ 0xa186, 0xffff, 0x0128, 0x080c, 0x4aa0, 0x0110, 0x080c, 0x4bc6, + 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0014, 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, +- 0xa005, 0x01f0, 0x2011, 0x4add, 0x080c, 0x699d, 0xa086, 0x0014, +- 0x11a8, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834, ++ 0x0000, 0x60c3, 0x0014, 0x080c, 0x4b06, 0x0005, 0x00f6, 0x7084, ++ 0xa005, 0x01f0, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, 0x0014, ++ 0x11a8, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834, + 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, +- 0x70bb, 0x0001, 0x708f, 0x0006, 0x0029, 0x0010, 0x080c, 0x4b20, +- 0x00fe, 0x0005, 0x708f, 0x0007, 0x080c, 0x4b98, 0x20a3, 0x1104, +- 0x20a3, 0x0000, 0x3430, 0x2011, 0xbb8e, 0x080c, 0x4be9, 0x11a8, ++ 0x70bb, 0x0001, 0x708f, 0x0014, 0x0029, 0x0010, 0x080c, 0x4b1f, ++ 0x00fe, 0x0005, 0x708f, 0x0015, 0x080c, 0x4ba3, 0x20a3, 0x1104, ++ 0x20a3, 0x0000, 0x3430, 0x2011, 0xbb8e, 0x080c, 0x4be8, 0x11a8, + 0x7078, 0xa005, 0x1190, 0x7158, 0xa186, 0xffff, 0x0170, 0xa180, +- 0x2dc4, 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4aa1, 0x0128, +- 0x080c, 0x40d7, 0x0110, 0x080c, 0x2867, 0x20a9, 0x0008, 0x2298, ++ 0x2dc4, 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4aa0, 0x0128, ++ 0x080c, 0x40d6, 0x0110, 0x080c, 0x2867, 0x20a9, 0x0008, 0x2298, + 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, +- 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, +- 0x4add, 0x080c, 0x699d, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, +- 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, +- 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, +- 0x0008, 0x0029, 0x0010, 0x080c, 0x4b20, 0x00fe, 0x0005, 0x708f, +- 0x0009, 0x080c, 0x4b98, 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430, +- 0x080c, 0x4be9, 0x1150, 0x7078, 0xa005, 0x1138, 0x080c, 0x4a16, ++ 0x080c, 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, 0x05b8, 0x2011, ++ 0x4adc, 0x080c, 0x699c, 0xa086, 0x0014, 0x1570, 0x2079, 0xbb80, ++ 0x7a30, 0xa296, 0x1105, 0x1540, 0x7834, 0x2011, 0x0100, 0xa21e, ++ 0x1148, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, ++ 0x0001, 0x0060, 0xa005, 0x11c0, 0x7a38, 0xd2fc, 0x0128, 0x70b8, ++ 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, 0x7a38, 0xd2f4, ++ 0x0138, 0x2001, 0xb574, 0x2004, 0xd0a4, 0x1110, 0x70d7, 0x0008, ++ 0x708f, 0x0016, 0x0029, 0x0010, 0x080c, 0x4b1f, 0x00fe, 0x0005, ++ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xbb80, 0x20a1, 0x020b, ++ 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xbb8e, 0x708f, 0x0017, ++ 0x080c, 0x4be8, 0x1150, 0x7078, 0xa005, 0x1138, 0x080c, 0x4a15, + 0x1170, 0xa085, 0x0001, 0x080c, 0x2867, 0x20a9, 0x0008, 0x2099, + 0xbb8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x0014, 0x080c, 0x4b07, 0x0010, 0x080c, 0x462d, 0x0005, 0x00f6, +- 0x7084, 0xa005, 0x0588, 0x2011, 0x4add, 0x080c, 0x699d, 0xa086, +- 0x0014, 0x1540, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1105, 0x1510, +- 0x7834, 0x2011, 0x0100, 0xa21e, 0x1160, 0x7a38, 0xd2fc, 0x0128, +- 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x000a, 0x00b1, +- 0x0098, 0xa005, 0x1178, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, +- 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, 0x708f, 0x000e, 0x080c, +- 0x4828, 0x0010, 0x080c, 0x4b20, 0x00fe, 0x0005, 0x708f, 0x000b, +- 0x2011, 0xbb0e, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, +- 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4, 0x080c, 0x4b98, 0x20a3, +- 0x1106, 0x20a3, 0x0000, 0x080c, 0x4be9, 0x0118, 0x2013, 0x0000, +- 0x0020, 0x7054, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, +- 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, +- 0xa005, 0x01b0, 0x2011, 0x4add, 0x080c, 0x699d, 0xa086, 0x0084, +- 0x1168, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, +- 0xa005, 0x1120, 0x708f, 0x000c, 0x0029, 0x0010, 0x080c, 0x4b20, +- 0x00fe, 0x0005, 0x708f, 0x000d, 0x080c, 0x4b98, 0x20a3, 0x1107, +- 0x20a3, 0x0000, 0x2099, 0xbb8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x080c, 0x4b07, 0x0005, +- 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011, 0x4add, 0x080c, 0x699d, +- 0xa086, 0x0084, 0x1188, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1107, +- 0x1158, 0x7834, 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4b8a, +- 0x708f, 0x000e, 0x0029, 0x0010, 0x080c, 0x4b20, 0x00fe, 0x0005, +- 0x708f, 0x000f, 0x7087, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, +- 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x4add, +- 0x080c, 0x6991, 0x0005, 0x7084, 0xa005, 0x0120, 0x2011, 0x4add, +- 0x080c, 0x699d, 0x0005, 0x708f, 0x0011, 0x080c, 0x4be9, 0x11a0, +- 0x7170, 0x81ff, 0x0188, 0x2009, 0x0000, 0x7074, 0xa084, 0x00ff, +- 0x080c, 0x281d, 0xa186, 0x007e, 0x0138, 0xa186, 0x0080, 0x0120, +- 0x2011, 0xbb8e, 0x080c, 0x4aa1, 0x20e1, 0x9080, 0x20e1, 0x4000, ++ 0x0014, 0x080c, 0x4b06, 0x0010, 0x080c, 0x462c, 0x0005, 0x00f6, ++ 0x7084, 0xa005, 0x01b0, 0x2011, 0x4adc, 0x080c, 0x699c, 0xa086, ++ 0x0084, 0x1168, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1106, 0x1138, ++ 0x7834, 0xa005, 0x1120, 0x708f, 0x0018, 0x0029, 0x0010, 0x080c, ++ 0x4b1f, 0x00fe, 0x0005, 0x708f, 0x0019, 0x080c, 0x4ba3, 0x20a3, ++ 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0xbb8e, 0x2039, 0xbb0e, ++ 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x080c, 0x4be8, 0x11e8, 0x2728, ++ 0x2514, 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, ++ 0x8007, 0xa205, 0x202a, 0x7054, 0x2310, 0x8214, 0xa2a0, 0xbb0e, ++ 0x2414, 0xa38c, 0x0001, 0x0118, 0xa294, 0xff00, 0x0018, 0xa294, ++ 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, 0x0040, ++ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x080c, ++ 0x4b06, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011, 0x4adc, ++ 0x080c, 0x699c, 0xa086, 0x0084, 0x1188, 0x2079, 0xbb80, 0x7a30, ++ 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b, 0x0001, ++ 0x080c, 0x4b89, 0x708f, 0x001a, 0x0029, 0x0010, 0x080c, 0x4b1f, ++ 0x00fe, 0x0005, 0x708f, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, + 0x2099, 0xbb80, 0x20a1, 0x020b, 0x7484, 0xa480, 0x0018, 0xa080, +- 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, +- 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, +- 0x4add, 0x080c, 0x699d, 0xa086, 0x0014, 0x11a8, 0x2079, 0xbb80, +- 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, +- 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, +- 0x0012, 0x0029, 0x0010, 0x080c, 0x4b20, 0x00fe, 0x0005, 0x708f, +- 0x0013, 0x080c, 0x4ba4, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, +- 0x2011, 0xbb8e, 0x080c, 0x4be9, 0x1160, 0x7078, 0xa005, 0x1148, +- 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4aa1, 0x0110, 0x080c, +- 0x4bc7, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4b07, 0x0005, 0x00f6, +- 0x7084, 0xa005, 0x01f0, 0x2011, 0x4add, 0x080c, 0x699d, 0xa086, +- 0x0014, 0x11a8, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1104, 0x1178, +- 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, +- 0x1110, 0x70bb, 0x0001, 0x708f, 0x0014, 0x0029, 0x0010, 0x080c, +- 0x4b20, 0x00fe, 0x0005, 0x708f, 0x0015, 0x080c, 0x4ba4, 0x20a3, +- 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xbb8e, 0x080c, 0x4be9, +- 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186, 0xffff, 0x0170, +- 0xa180, 0x2dc4, 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4aa1, +- 0x0128, 0x080c, 0x40d7, 0x0110, 0x080c, 0x2867, 0x20a9, 0x0008, +- 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x0014, 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, 0xa005, 0x05b8, +- 0x2011, 0x4add, 0x080c, 0x699d, 0xa086, 0x0014, 0x1570, 0x2079, +- 0xbb80, 0x7a30, 0xa296, 0x1105, 0x1540, 0x7834, 0x2011, 0x0100, +- 0xa21e, 0x1148, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, +- 0x70bb, 0x0001, 0x0060, 0xa005, 0x11c0, 0x7a38, 0xd2fc, 0x0128, +- 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, 0x7a38, +- 0xd2f4, 0x0138, 0x2001, 0xb574, 0x2004, 0xd0a4, 0x1110, 0x70d7, +- 0x0008, 0x708f, 0x0016, 0x0029, 0x0010, 0x080c, 0x4b20, 0x00fe, +- 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xbb80, 0x20a1, +- 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xbb8e, 0x708f, +- 0x0017, 0x080c, 0x4be9, 0x1150, 0x7078, 0xa005, 0x1138, 0x080c, +- 0x4a16, 0x1170, 0xa085, 0x0001, 0x080c, 0x2867, 0x20a9, 0x0008, +- 0x2099, 0xbb8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x60c3, 0x0014, 0x080c, 0x4b07, 0x0010, 0x080c, 0x462d, 0x0005, +- 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4add, 0x080c, 0x699d, +- 0xa086, 0x0084, 0x1168, 0x2079, 0xbb80, 0x7a30, 0xa296, 0x1106, +- 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x0018, 0x0029, 0x0010, +- 0x080c, 0x4b20, 0x00fe, 0x0005, 0x708f, 0x0019, 0x080c, 0x4ba4, +- 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0xbb8e, 0x2039, +- 0xbb0e, 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x080c, 0x4be9, 0x11e8, +- 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, +- 0x00ff, 0x8007, 0xa205, 0x202a, 0x7054, 0x2310, 0x8214, 0xa2a0, +- 0xbb0e, 0x2414, 0xa38c, 0x0001, 0x0118, 0xa294, 0xff00, 0x0018, +- 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, +- 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, +- 0x080c, 0x4b07, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011, +- 0x4add, 0x080c, 0x699d, 0xa086, 0x0084, 0x1188, 0x2079, 0xbb80, +- 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b, +- 0x0001, 0x080c, 0x4b8a, 0x708f, 0x001a, 0x0029, 0x0010, 0x080c, +- 0x4b20, 0x00fe, 0x0005, 0x708f, 0x001b, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x2099, 0xbb80, 0x20a1, 0x020b, 0x7484, 0xa480, 0x0018, +- 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, +- 0x0084, 0x080c, 0x4b07, 0x0005, 0x0005, 0x0005, 0x0086, 0x0096, +- 0x2029, 0xb553, 0x252c, 0x20a9, 0x0008, 0x2041, 0xbb0e, 0x28a0, +- 0x2099, 0xbb8e, 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, +- 0x0110, 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, +- 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, 0x4a2b, +- 0x0804, 0x4a99, 0x82ff, 0x1160, 0xd5d4, 0x0120, 0xa1a6, 0x3fff, +- 0x0d90, 0x0020, 0xa1a6, 0x3fff, 0x0904, 0x4a99, 0xa18d, 0xc000, +- 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, 0x0010, +- 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, 0xd5d4, +- 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, 0x4a51, 0x04d0, 0x23a8, +- 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, 0x4a63, 0x2328, 0x8529, +- 0xa2be, 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, 0xa73a, +- 0x000e, 0x27a8, 0xa5a8, 0x0010, 0x1f04, 0x4a72, 0x7552, 0xa5c8, +- 0x2dc4, 0x292d, 0xa5ac, 0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, +- 0x2508, 0x080c, 0x2847, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x2018, +- 0x2304, 0xa405, 0x201a, 0x707b, 0x0001, 0x26a0, 0x2898, 0x20a9, +- 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, +- 0x0028, 0xa006, 0x0018, 0xa006, 0x080c, 0x1515, 0x009e, 0x008e, +- 0x0005, 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a, 0x0010, +- 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, 0xa39a, +- 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, +- 0x8319, 0x1de8, 0xa238, 0x2704, 0xa42c, 0x11b8, 0xa405, 0x203a, +- 0x7152, 0xa1a0, 0x2dc4, 0x242d, 0xa5ac, 0x00ff, 0x7576, 0x6532, +- 0x6536, 0x0016, 0x2508, 0x080c, 0x2847, 0x001e, 0x60e7, 0x0000, +- 0x65ea, 0x707b, 0x0001, 0xa084, 0x0000, 0x0005, 0x00e6, 0x2071, +- 0xb500, 0x707f, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079, +- 0x0100, 0x2071, 0x0140, 0x080c, 0x7d7b, 0x7004, 0xa084, 0x4000, +- 0x0120, 0x7003, 0x1000, 0x7003, 0x0000, 0x0126, 0x2091, 0x8000, +- 0x2071, 0xb523, 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, +- 0x00f7, 0x080c, 0x4bb0, 0x001e, 0xa094, 0x0010, 0xa285, 0x0080, +- 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, +- 0x2091, 0x8000, 0x2011, 0xb7ea, 0x2013, 0x0000, 0x7087, 0x0000, +- 0x012e, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, +- 0x7d72, 0x2009, 0x07d0, 0x2011, 0x4add, 0x080c, 0x6a23, 0x0005, +- 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2011, 0x0003, +- 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, +- 0x0036, 0x2019, 0x0000, 0x080c, 0x7fe5, 0x003e, 0x2009, 0x00f7, +- 0x080c, 0x4bb0, 0x2061, 0xb7f3, 0x601b, 0x0000, 0x601f, 0x0000, +- 0x2061, 0xb500, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, 0x0090, +- 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4b55, 0x080c, 0x6991, +- 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, +- 0x2091, 0x8000, 0x2071, 0x0100, 0x080c, 0x7d7b, 0x2071, 0x0140, +- 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000, +- 0x080c, 0x5ad8, 0x01a8, 0x080c, 0x5af6, 0x1190, 0x2001, 0xb79e, +- 0x2003, 0xaaaa, 0x0016, 0x080c, 0x28eb, 0x2001, 0xb78f, 0x2102, +- 0x001e, 0x2001, 0xb79f, 0x2003, 0x0000, 0x080c, 0x5a08, 0x0030, +- 0x2001, 0x0001, 0x080c, 0x27c3, 0x080c, 0x4b20, 0x012e, 0x000e, +- 0x00ee, 0x0005, 0x20a9, 0x0040, 0x20a1, 0xbcc0, 0x2099, 0xbb8e, +- 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x1f04, 0x4b90, 0x0005, +- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xbb00, 0x20a1, 0x020b, +- 0x20a9, 0x000c, 0x53a6, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x2099, 0xbb80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, +- 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0xb531, 0x2004, +- 0xa005, 0x1138, 0x2001, 0xb515, 0x2004, 0xa084, 0x00ff, 0xa105, +- 0x0010, 0xa185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, +- 0x0046, 0x2001, 0xb553, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, +- 0x2009, 0x002a, 0x080c, 0xb0dc, 0x2001, 0xb50c, 0x200c, 0xc195, +- 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, 0x080c, 0x2c6f, 0x004e, +- 0x001e, 0x0005, 0x080c, 0x4b20, 0x708f, 0x0000, 0x7087, 0x0000, +- 0x0005, 0x0006, 0x2001, 0xb50c, 0x2004, 0xd09c, 0x0100, 0x000e, +- 0x0005, 0x0006, 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, +- 0x200c, 0xa18d, 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, +- 0x0156, 0x20a9, 0x00ff, 0x2009, 0xb635, 0xa006, 0x200a, 0x8108, +- 0x1f04, 0x4c06, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, +- 0x0146, 0x2069, 0xb552, 0xa006, 0x6002, 0x6007, 0x0707, 0x600a, +- 0x600e, 0x6012, 0xa198, 0x2dc4, 0x231d, 0xa39c, 0x00ff, 0x6316, +- 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4, 0x20a9, 0x0004, +- 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042, 0x604e, 0x6052, +- 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, 0x606a, 0x606e, 0x6072, +- 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, 0x608a, 0x608e, 0x6092, +- 0x6096, 0x609a, 0x609e, 0x60ae, 0x61a2, 0x00d6, 0x60a4, 0xa06d, +- 0x0110, 0x080c, 0x160f, 0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0110, +- 0x080c, 0x160f, 0x60ab, 0x0000, 0x00de, 0xa006, 0x604a, 0x6810, +- 0x603a, 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x014e, +- 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04, 0x4d1b, +- 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x4d20, 0x2001, +- 0xb50c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xb50c, 0x2004, +- 0xd084, 0x1904, 0x4d03, 0xa188, 0xb635, 0x2104, 0xa065, 0x0904, +- 0x4d03, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904, 0x4d03, +- 0x6000, 0xd0c4, 0x0904, 0x4d03, 0x0068, 0xa188, 0xb635, 0x2104, +- 0xa065, 0x0904, 0x4ce7, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, +- 0x1904, 0x4cec, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x51d5, 0x05d0, +- 0x60a8, 0xa00d, 0x0188, 0x080c, 0x5220, 0x1170, 0x694c, 0xd1fc, +- 0x1118, 0x080c, 0x4edf, 0x0448, 0x080c, 0x4e8e, 0x694c, 0xd1ec, +- 0x1520, 0x080c, 0x50c7, 0x0408, 0x694c, 0xa184, 0xa000, 0x0178, +- 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x50d6, 0x0028, 0x080c, +- 0x50d6, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x4e8e, 0x0070, 0x6050, +- 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0028, +- 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x6cab, 0xa006, +- 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8, 0x2001, +- 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0, 0x2001, +- 0xb535, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148, 0x6100, +- 0xd1fc, 0x0904, 0x4ca2, 0x2001, 0x0029, 0x2009, 0x1000, 0x0420, +- 0x2001, 0x0028, 0x00a8, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, +- 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040, +- 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0060, +- 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, 0x0020, +- 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005, 0x00e6, +- 0x0126, 0x2091, 0x8000, 0x6844, 0x8007, 0xa084, 0x00ff, 0x2008, +- 0xa182, 0x00ff, 0x1a04, 0x4d7a, 0xa188, 0xb635, 0x2104, 0xa065, +- 0x01c0, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11a8, 0x2c70, +- 0x080c, 0x85c1, 0x05e8, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x600b, +- 0xffff, 0x601f, 0x000a, 0x2009, 0x0003, 0x080c, 0x8646, 0xa006, +- 0x0460, 0x2001, 0x0028, 0x0440, 0xa082, 0x0006, 0x1298, 0x2001, +- 0xb535, 0x2004, 0xd0ac, 0x1158, 0x60a0, 0xd0bc, 0x1140, 0x6100, +- 0xd1fc, 0x09e8, 0x2001, 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, +- 0x0028, 0x0090, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, 0x2001, +- 0x0004, 0x0050, 0xd184, 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, +- 0x0029, 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, +- 0x2001, 0x002c, 0x0cc8, 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, +- 0x2011, 0x0000, 0x2079, 0xb500, 0x6944, 0xa18c, 0xff00, 0x810f, +- 0xa182, 0x00ff, 0x1a04, 0x4e45, 0x080c, 0x4faa, 0x11a0, 0x6004, +- 0xa084, 0x00ff, 0xa082, 0x0006, 0x1270, 0x6864, 0xa0c6, 0x006f, +- 0x0150, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1904, 0x4e2e, 0x60a0, +- 0xd0bc, 0x1904, 0x4e2e, 0x6864, 0xa0c6, 0x006f, 0x0118, 0x2008, +- 0x0804, 0x4df7, 0x6968, 0x2140, 0xa18c, 0xff00, 0x810f, 0x78d4, +- 0xd0ac, 0x1118, 0xa182, 0x0080, 0x06d0, 0xa182, 0x00ff, 0x16b8, +- 0x6a70, 0x6b6c, 0x7870, 0xa306, 0x1160, 0x7874, 0xa24e, 0x1118, +- 0x2208, 0x2310, 0x0460, 0xa9cc, 0xff00, 0x1118, 0x2208, 0x2310, +- 0x0430, 0x080c, 0x3dc4, 0x2c70, 0x0550, 0x2009, 0x0000, 0x2011, +- 0x0000, 0xa0c6, 0x4000, 0x1160, 0x0006, 0x2e60, 0x080c, 0x524b, +- 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x0088, +- 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, +- 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, +- 0x4006, 0x6866, 0x696a, 0x6a6e, 0x2001, 0x0030, 0x0450, 0x080c, +- 0x85c1, 0x1138, 0x2001, 0x4005, 0x2009, 0x0003, 0x2011, 0x0000, +- 0x0c80, 0x2e00, 0x601a, 0x080c, 0xa021, 0x2d00, 0x6012, 0x601f, +- 0x0001, 0x6838, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x2c9c, 0x012e, 0x2001, 0x0000, 0x080c, 0x4eec, +- 0x2001, 0x0002, 0x080c, 0x4efe, 0x2009, 0x0002, 0x080c, 0x8646, +- 0xa006, 0xa005, 0x012e, 0x00ee, 0x00fe, 0x0005, 0x2001, 0x0028, +- 0x2009, 0x0000, 0x0cb0, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, +- 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, +- 0x2001, 0x0029, 0x2009, 0x0000, 0x0c20, 0x2001, 0x0029, 0x2009, +- 0x0000, 0x08f8, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, +- 0x16b8, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x12e0, 0xa188, +- 0xb635, 0x2104, 0xa065, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa08e, +- 0x0006, 0x11b0, 0x684c, 0xd0ec, 0x0120, 0x080c, 0x50d6, 0x0431, +- 0x0030, 0x0421, 0x684c, 0xd0fc, 0x0110, 0x080c, 0x50c7, 0x080c, +- 0x5114, 0xa006, 0x00c8, 0x2001, 0x0028, 0x2009, 0x0000, 0x00a0, +- 0xa082, 0x0006, 0x1240, 0x6100, 0xd1fc, 0x0d20, 0x2001, 0x0029, +- 0x2009, 0x1000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, 0x0020, +- 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x0005, 0x0126, 0x2091, +- 0x8000, 0x6050, 0xa00d, 0x0138, 0x2d00, 0x200a, 0x6803, 0x0000, +- 0x6052, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, +- 0x0cc0, 0x0126, 0x2091, 0x8000, 0x604c, 0xa005, 0x0170, 0x00e6, +- 0x2071, 0xb7e0, 0x7004, 0xa086, 0x0002, 0x0168, 0x00ee, 0x604c, +- 0x6802, 0x2d00, 0x604e, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, +- 0x6803, 0x0000, 0x0cc0, 0x701c, 0xac06, 0x1d80, 0x604c, 0x2070, +- 0x7000, 0x6802, 0x2d00, 0x7002, 0x00ee, 0x012e, 0x0005, 0x0126, +- 0x2091, 0x8000, 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, +- 0x6052, 0x604e, 0xad05, 0x012e, 0x0005, 0x604c, 0xa06d, 0x0130, +- 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x0005, 0x6803, +- 0x0000, 0x6084, 0xa00d, 0x0120, 0x2d00, 0x200a, 0x6086, 0x0005, +- 0x2d00, 0x6086, 0x6082, 0x0cd8, 0x0126, 0x00c6, 0x0026, 0x2091, +- 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0110, 0xc285, 0x0008, +- 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, +- 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, +- 0x1180, 0x609c, 0xd0ac, 0x0168, 0x2001, 0xb553, 0x2004, 0xd0a4, +- 0x0140, 0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x1110, 0x2011, +- 0x0600, 0x000e, 0xa294, 0xff00, 0xa215, 0x6206, 0x0006, 0xa086, +- 0x0006, 0x1128, 0x6290, 0x82ff, 0x1110, 0x080c, 0x1515, 0x000e, +- 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, +- 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, 0x1178, 0x609c, 0xd0a4, +- 0x0160, 0x2001, 0xb553, 0x2004, 0xd0ac, 0x1138, 0xa284, 0x00ff, +- 0xa086, 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0xa294, 0x00ff, +- 0x8007, 0xa215, 0x6206, 0x00ce, 0x012e, 0x0005, 0x0026, 0xa182, +- 0x00ff, 0x0218, 0xa085, 0x0001, 0x00b0, 0xa190, 0xb635, 0x2204, +- 0xa065, 0x1180, 0x0016, 0x00d6, 0x080c, 0x15df, 0x2d60, 0x00de, +- 0x001e, 0x0d80, 0x2c00, 0x2012, 0x60a7, 0x0000, 0x60ab, 0x0000, +- 0x080c, 0x4c0c, 0xa006, 0x002e, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x0480, 0x00d6, +- 0xa190, 0xb635, 0x2204, 0xa06d, 0x0540, 0x2013, 0x0000, 0x00d6, +- 0x00c6, 0x2d60, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x160f, 0x60a8, +- 0xa06d, 0x0110, 0x080c, 0x160f, 0x00ce, 0x00de, 0x00d6, 0x00c6, +- 0x68ac, 0x2060, 0x8cff, 0x0168, 0x600c, 0x0006, 0x6010, 0x2068, +- 0x080c, 0x9c54, 0x0110, 0x080c, 0x161f, 0x080c, 0x8617, 0x00ce, +- 0x0c88, 0x00ce, 0x00de, 0x080c, 0x160f, 0x00de, 0xa006, 0x002e, +- 0x012e, 0x0005, 0x0016, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, +- 0x0030, 0xa188, 0xb635, 0x2104, 0xa065, 0x0dc0, 0xa006, 0x001e, +- 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x600b, 0x0000, 0x600f, +- 0x0000, 0x6000, 0xc08c, 0x6002, 0x080c, 0x5ad0, 0x1558, 0x60a0, +- 0xa086, 0x007e, 0x2069, 0xbb90, 0x0130, 0x2001, 0xb535, 0x2004, +- 0xd0ac, 0x1500, 0x0098, 0x2d04, 0xd0e4, 0x01e0, 0x00d6, 0x2069, +- 0xbb8e, 0x00c6, 0x2061, 0xb7b2, 0x6810, 0x2062, 0x6814, 0x6006, +- 0x6818, 0x600a, 0x681c, 0x600e, 0x00ce, 0x00de, 0x8d69, 0x2d04, +- 0x2069, 0x0140, 0xa005, 0x1110, 0x2001, 0x0001, 0x6886, 0x2069, +- 0xb500, 0x68a6, 0x2069, 0xbb8e, 0x6808, 0x605e, 0x6810, 0x6062, +- 0x6138, 0xa10a, 0x0208, 0x603a, 0x6814, 0x6066, 0x2099, 0xbb96, +- 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xbb9a, +- 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xbbae, +- 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, +- 0x60a0, 0xa086, 0x007e, 0x1120, 0x2069, 0xbb8e, 0x690c, 0x616e, +- 0xa182, 0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, +- 0x1218, 0x2009, 0x0007, 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, +- 0x0006, 0x00a0, 0xa182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, +- 0xa182, 0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, +- 0x1218, 0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0x6192, 0x014e, +- 0x013e, 0x015e, 0x00de, 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, +- 0xbb8d, 0x2e04, 0x6896, 0x2071, 0xbb8e, 0x7004, 0x689a, 0x701c, +- 0x689e, 0x6a00, 0x2009, 0xb572, 0x210c, 0xd0bc, 0x0120, 0xd1ec, +- 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0120, 0xd1e4, 0x0110, +- 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee, 0x002e, 0x001e, 0x0005, +- 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x01c0, 0x6900, +- 0x81ff, 0x1540, 0x6a04, 0xa282, 0x0010, 0x1648, 0xad88, 0x0004, +- 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, +- 0x5082, 0x080c, 0x1515, 0x260a, 0x8210, 0x6a06, 0x0098, 0x080c, +- 0x15f8, 0x01a8, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88, 0x0004, +- 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x509a, 0x6807, +- 0x0001, 0x6e12, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, +- 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6, 0x60a4, 0xa00d, 0x01a0, +- 0x2168, 0x6800, 0xa005, 0x1160, 0x080c, 0x51d5, 0x1168, 0x200b, +- 0xffff, 0x6804, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6806, 0x0020, +- 0x080c, 0x160f, 0x60a7, 0x0000, 0x00de, 0x012e, 0x0005, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x5233, 0x0010, 0x080c, 0x4e8e, 0x080c, +- 0x514d, 0x1dd8, 0x080c, 0x5114, 0x012e, 0x0005, 0x00d6, 0x0126, +- 0x2091, 0x8000, 0x60a8, 0xa06d, 0x01c0, 0x6950, 0x81ff, 0x1540, +- 0x6a54, 0xa282, 0x0010, 0x1670, 0xad88, 0x0018, 0x20a9, 0x0010, +- 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, 0x50e8, 0x080c, +- 0x1515, 0x260a, 0x8210, 0x6a56, 0x0098, 0x080c, 0x15f8, 0x01d0, +- 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, +- 0x200b, 0xffff, 0x8108, 0x1f04, 0x5100, 0x6857, 0x0001, 0x6e62, +- 0x0010, 0x080c, 0x4edf, 0x0089, 0x1de0, 0xa085, 0x0001, 0x012e, +- 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x6cab, 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, +- 0x0126, 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc, 0x1170, +- 0x8dff, 0x01f8, 0x83ff, 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, +- 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, +- 0x2068, 0x0c70, 0x080c, 0x811f, 0x6a00, 0x604c, 0xad06, 0x1110, +- 0x624e, 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6152, +- 0x8dff, 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, +- 0x6080, 0x2068, 0x8dff, 0x01e8, 0x83ff, 0x0120, 0x6848, 0xa606, +- 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, +- 0x2d08, 0x6800, 0x2068, 0x0c70, 0x6a00, 0x6080, 0xad06, 0x1110, +- 0x6282, 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6186, +- 0x8dff, 0x0005, 0xa016, 0x080c, 0x51cf, 0x1110, 0x2011, 0x0001, +- 0x080c, 0x521a, 0x1110, 0xa295, 0x0002, 0x0005, 0x080c, 0x524b, +- 0x0118, 0x080c, 0x9d09, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, +- 0x524b, 0x0118, 0x080c, 0x9c99, 0x0010, 0xa085, 0x0001, 0x0005, +- 0x080c, 0x524b, 0x0118, 0x080c, 0x9cec, 0x0010, 0xa085, 0x0001, +- 0x0005, 0x080c, 0x524b, 0x0118, 0x080c, 0x9cb5, 0x0010, 0xa085, +- 0x0001, 0x0005, 0x080c, 0x524b, 0x0118, 0x080c, 0x9d25, 0x0010, +- 0xa085, 0x0001, 0x0005, 0x0126, 0x0006, 0x00d6, 0x2091, 0x8000, +- 0x6080, 0xa06d, 0x01a0, 0x6800, 0x0006, 0x6837, 0x0103, 0x6b4a, +- 0x6847, 0x0000, 0x080c, 0x9ec6, 0x0006, 0x6000, 0xd0fc, 0x0110, +- 0x080c, 0xb37d, 0x000e, 0x080c, 0x5409, 0x000e, 0x0c50, 0x6083, +- 0x0000, 0x6087, 0x0000, 0x00de, 0x000e, 0x012e, 0x0005, 0x60a4, +- 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7000, +- 0xa005, 0x1168, 0x20a9, 0x0010, 0xae88, 0x0004, 0x2104, 0xa606, +- 0x0130, 0x8108, 0x1f04, 0x51de, 0xa085, 0x0001, 0x0008, 0xa006, +- 0x00ee, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, +- 0x1128, 0x080c, 0x15f8, 0x01a0, 0x2d00, 0x60a6, 0x6803, 0x0001, +- 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, +- 0x8108, 0x1f04, 0x51fe, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, +- 0xa006, 0x0cd8, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, +- 0x0130, 0x60a7, 0x0000, 0x080c, 0x160f, 0xa085, 0x0001, 0x012e, +- 0x00de, 0x0005, 0x60a8, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, +- 0x00e6, 0x2170, 0x7050, 0xa005, 0x1160, 0x20a9, 0x0010, 0xae88, +- 0x0018, 0x2104, 0xa606, 0x0128, 0x8108, 0x1f04, 0x5229, 0xa085, +- 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x0c19, 0x1188, +- 0x200b, 0xffff, 0x00d6, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, +- 0x0218, 0x8001, 0x6856, 0x0020, 0x080c, 0x160f, 0x60ab, 0x0000, +- 0x00de, 0x012e, 0x0005, 0x609c, 0xd0a4, 0x0005, 0x00f6, 0x080c, +- 0x5ad0, 0x01b0, 0x71b8, 0x81ff, 0x1198, 0x71d4, 0xd19c, 0x0180, +- 0x2001, 0x007e, 0xa080, 0xb635, 0x2004, 0xa07d, 0x0148, 0x7804, +- 0xa084, 0x00ff, 0xa086, 0x0006, 0x1118, 0x7800, 0xc0ed, 0x7802, +- 0x2079, 0xb552, 0x7804, 0xd0a4, 0x01e8, 0x0156, 0x00c6, 0x20a9, +- 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x4faa, 0x1168, 0x6004, +- 0xa084, 0xff00, 0x8007, 0xa096, 0x0004, 0x0118, 0xa086, 0x0006, +- 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e, 0x8108, 0x1f04, 0x5273, +- 0x00ce, 0x015e, 0x080c, 0x530a, 0x0120, 0x2001, 0xb7b5, 0x200c, +- 0x0038, 0x2079, 0xb552, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0, +- 0x2011, 0x529e, 0x080c, 0x6a23, 0x00fe, 0x0005, 0x2011, 0x529e, +- 0x080c, 0x699d, 0x080c, 0x530a, 0x01f0, 0x2001, 0xb6b3, 0x2004, +- 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xb553, 0x2004, +- 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, 0x529e, 0x080c, 0x6a23, +- 0x00e6, 0x2071, 0xb500, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c, +- 0x2ab8, 0x00ee, 0x04b0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, +- 0x0000, 0x0016, 0x080c, 0x4faa, 0x1530, 0x6000, 0xd0ec, 0x0518, +- 0x0046, 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, +- 0x080c, 0xb0dc, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, +- 0x00ff, 0xa085, 0x0700, 0x6006, 0x2019, 0x0029, 0x080c, 0x6df6, +- 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x2009, 0x0000, 0x080c, +- 0xae76, 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04, 0x52c9, 0x00ce, +- 0x015e, 0x0005, 0x00c6, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, +- 0x00ce, 0x0005, 0x7818, 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, +- 0xd0bc, 0x0005, 0x00f6, 0x2001, 0xb6b3, 0x2004, 0xa07d, 0x0110, +- 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, +- 0x0006, 0x62a0, 0xa290, 0xb635, 0x2204, 0xac06, 0x190c, 0x1515, +- 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0x6202, +- 0x002e, 0x012e, 0x0005, 0x2011, 0xb535, 0x2204, 0xd0cc, 0x0138, +- 0x2001, 0xb7b3, 0x200c, 0x2011, 0x5338, 0x080c, 0x6a23, 0x0005, +- 0x2011, 0x5338, 0x080c, 0x699d, 0x2011, 0xb535, 0x2204, 0xc0cc, +- 0x2012, 0x0005, 0x2071, 0xb614, 0x7003, 0x0001, 0x7007, 0x0000, +- 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, +- 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, 0x0020, +- 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xb77d, 0x7003, 0xb614, +- 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xb75d, 0x7013, 0x0020, +- 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, +- 0xb735, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001, 0xb553, +- 0x2004, 0xd0fc, 0x1150, 0x2001, 0xb553, 0x2004, 0xa00e, 0xd09c, +- 0x0108, 0x8108, 0x7102, 0x0804, 0x53d3, 0x2001, 0xb572, 0x200c, +- 0xa184, 0x000f, 0x2009, 0xb573, 0x210c, 0x0002, 0x537b, 0x53ae, +- 0x53b5, 0x53bf, 0x53c4, 0x537b, 0x537b, 0x537b, 0x539e, 0x537b, +- 0x537b, 0x537b, 0x537b, 0x537b, 0x537b, 0x537b, 0x7003, 0x0004, +- 0x0136, 0x0146, 0x0156, 0x2099, 0xb576, 0x20a1, 0xb786, 0x20a9, +- 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f, 0x0005, +- 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002, 0x7007, +- 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088, 0x7007, +- 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001, 0x0003, +- 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a, +- 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, +- 0xb614, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, +- 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, +- 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844, 0x7032, +- 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006, 0x8006, +- 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e, +- 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x00ee, +- 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904, 0x5462, +- 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xb500, 0xa016, 0x702c, +- 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, +- 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xb614, 0x701c, 0xa005, +- 0x1904, 0x5472, 0x20a9, 0x0032, 0x0f04, 0x5470, 0x0e04, 0x542c, +- 0x2071, 0xb735, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186, 0x0103, +- 0x1904, 0x5480, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009, 0x8020, +- 0x2200, 0x0002, 0x5470, 0x5447, 0x5498, 0x54a4, 0x5470, 0x2071, +- 0x0000, 0x20a9, 0x0032, 0x0f04, 0x5470, 0x7018, 0xd084, 0x1dd8, +- 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, +- 0x4080, 0x2071, 0xb500, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70b4, +- 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844, 0xa086, +- 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020, 0x0880, +- 0x2071, 0xb614, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, 0x7012, +- 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x0c10, +- 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, +- 0xa18e, 0x001f, 0x1d28, 0x684c, 0xd0cc, 0x0d10, 0x6850, 0xa084, +- 0x00ff, 0xa086, 0x0001, 0x19e0, 0x2009, 0x8021, 0x0804, 0x5440, +- 0x7084, 0x8008, 0xa092, 0x001e, 0x1a98, 0x7186, 0xae90, 0x0003, +- 0xa210, 0x683c, 0x2012, 0x0078, 0x7084, 0x8008, 0xa092, 0x000f, +- 0x1a38, 0x7186, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, +- 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04, 0x5459, 0x718c, +- 0x7084, 0xa10a, 0x0a04, 0x5459, 0x2071, 0x0000, 0x7018, 0xd084, +- 0x1904, 0x5459, 0x2071, 0xb735, 0x7000, 0xa086, 0x0002, 0x1150, +- 0x080c, 0x5723, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, +- 0x0804, 0x5459, 0x080c, 0x574d, 0x2071, 0x0000, 0x701b, 0x0001, +- 0x2091, 0x4080, 0x0804, 0x5459, 0x0006, 0x684c, 0x0006, 0x6837, +- 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, +- 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e, 0x684a, 0x6952, +- 0x0005, 0x2071, 0xb614, 0x7004, 0x0002, 0x54ff, 0x5510, 0x570e, +- 0x570f, 0x571c, 0x5722, 0x5500, 0x56ff, 0x5695, 0x56eb, 0x0005, +- 0x0126, 0x2091, 0x8000, 0x0e04, 0x550f, 0x2009, 0x000d, 0x7030, +- 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x012e, +- 0x2069, 0xb7f3, 0x683c, 0xa005, 0x03f8, 0x11f0, 0x0126, 0x2091, +- 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xb620, 0x2004, 0xa10a, +- 0x0170, 0x0e04, 0x5533, 0x2069, 0x0000, 0x6818, 0xd084, 0x1158, +- 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x2069, +- 0xb7f3, 0x683f, 0xffff, 0x012e, 0x2069, 0xb500, 0x6848, 0x6968, +- 0xa102, 0x2069, 0xb735, 0x688a, 0x6984, 0x701c, 0xa06d, 0x0120, +- 0x81ff, 0x0904, 0x5589, 0x00a0, 0x81ff, 0x0904, 0x564f, 0x2071, +- 0xb735, 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190, 0x2071, 0xb7f3, +- 0x7038, 0xa005, 0x0128, 0x1b04, 0x564f, 0x713a, 0x0804, 0x564f, +- 0x2071, 0xb735, 0x718c, 0x0126, 0x2091, 0x8000, 0x7084, 0xa10a, +- 0x0a04, 0x566a, 0x0e04, 0x560b, 0x2071, 0x0000, 0x7018, 0xd084, +- 0x1904, 0x560b, 0x2001, 0xffff, 0x2071, 0xb7f3, 0x703a, 0x2071, +- 0xb735, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c, 0x5723, 0x2071, +- 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x560b, 0x080c, +- 0x574d, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, +- 0x560b, 0x2071, 0xb735, 0x7000, 0xa005, 0x0904, 0x5631, 0x6934, +- 0xa186, 0x0103, 0x1904, 0x560e, 0x684c, 0xd0bc, 0x1904, 0x5631, +- 0x6948, 0x6844, 0xa105, 0x1904, 0x5626, 0x2009, 0x8020, 0x2071, +- 0xb735, 0x7000, 0x0002, 0x5631, 0x55f1, 0x55c9, 0x55db, 0x55a8, +- 0x0136, 0x0146, 0x0156, 0x2099, 0xb576, 0x20a1, 0xb786, 0x20a9, +- 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071, 0xb77d, 0xad80, +- 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000, +- 0x2e10, 0x080c, 0x1643, 0x2071, 0xb614, 0x7007, 0x0009, 0x0804, +- 0x564f, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x564f, 0xae90, +- 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xb614, 0x080c, +- 0x57a4, 0x0804, 0x564f, 0x7084, 0x8008, 0xa092, 0x000f, 0x1a04, +- 0x564f, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, +- 0x6840, 0x2012, 0x7186, 0x2071, 0xb614, 0x080c, 0x57a4, 0x0804, +- 0x564f, 0x0126, 0x2091, 0x8000, 0x0e04, 0x560b, 0x2071, 0x0000, +- 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, +- 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, 0x2071, 0xb614, 0x080c, +- 0x57a4, 0x0804, 0x564f, 0x012e, 0x0804, 0x564f, 0xa18c, 0x00ff, +- 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, 0xa18e, 0x001f, +- 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084, 0x00ff, 0xa086, +- 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, 0x559f, 0x6844, 0xa086, +- 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, 0x2009, 0x8020, 0x0804, +- 0x559f, 0x2071, 0xb614, 0x080c, 0x57b6, 0x01c8, 0x2071, 0xb614, +- 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x1130, +- 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x7007, 0x0003, +- 0x080c, 0x57cf, 0x7050, 0xa086, 0x0100, 0x0904, 0x570f, 0x0126, +- 0x2091, 0x8000, 0x2071, 0xb614, 0x7008, 0xa086, 0x0001, 0x1180, +- 0x0e04, 0x5668, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, +- 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, 0x1110, 0x7007, 0x0001, +- 0x012e, 0x0005, 0x2071, 0xb614, 0x080c, 0x57b6, 0x0518, 0x2071, +- 0xb735, 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099, 0xb736, 0x20a1, +- 0xb75d, 0x53a3, 0x7087, 0x0000, 0x2071, 0xb614, 0x2069, 0xb77d, +- 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, +- 0x2d10, 0x080c, 0x1643, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, +- 0xb7f3, 0x703a, 0x012e, 0x0804, 0x564f, 0x2069, 0xb77d, 0x6808, +- 0xa08e, 0x0000, 0x0904, 0x56ea, 0xa08e, 0x0200, 0x0904, 0x56e8, +- 0xa08e, 0x0100, 0x1904, 0x56ea, 0x0126, 0x2091, 0x8000, 0x0e04, +- 0x56e6, 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0, 0x702c, 0x7130, +- 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, +- 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, +- 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000, 0x2001, 0xb75a, +- 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, 0xb735, 0x689c, 0x699e, +- 0x2069, 0xb7f3, 0xa102, 0x1118, 0x683c, 0xa005, 0x1368, 0x2001, +- 0xb75b, 0x200c, 0x810d, 0x693e, 0x0038, 0x2009, 0x8040, 0x6922, +- 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x012e, 0x0010, +- 0x7007, 0x0005, 0x0005, 0x2001, 0xb77f, 0x2004, 0xa08e, 0x0100, +- 0x1128, 0x7007, 0x0001, 0x080c, 0x57a4, 0x0005, 0xa08e, 0x0000, +- 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005, 0x0005, 0x701c, +- 0xa06d, 0x0158, 0x080c, 0x57b6, 0x0140, 0x7007, 0x0003, 0x080c, +- 0x57cf, 0x7050, 0xa086, 0x0100, 0x0110, 0x0005, 0x0005, 0x7050, +- 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, 0x0030, 0xa086, 0x0200, +- 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, 0x5772, 0x7006, 0x080c, +- 0x57a4, 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071, 0xb735, 0x7184, +- 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071, 0x0000, +- 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, 0x5747, 0x2014, 0x722a, +- 0x8000, 0x0f04, 0x5747, 0x2014, 0x722e, 0x8000, 0x0f04, 0x5747, +- 0x2014, 0x723a, 0x8000, 0x0f04, 0x5747, 0x2014, 0x723e, 0xa180, +- 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6, 0x0156, 0x2071, +- 0xb735, 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086, 0xae80, 0x0003, +- 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x2014, 0x722a, +- 0x8000, 0x0f04, 0x5769, 0x2014, 0x723a, 0x8000, 0x2014, 0x723e, +- 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, 0x8042, 0x7022, 0x015e, +- 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, +- 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, +- 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, +- 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, 0x8000, 0x0e04, 0x579e, +- 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b, +- 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, 0x0005, 0x2001, 0x0006, +- 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d, 0x0170, 0x0126, +- 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, +- 0x1108, 0x701a, 0x012e, 0x080c, 0x160f, 0x0005, 0x2019, 0x000d, +- 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c, 0xa10e, 0x0110, +- 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, 0xa102, 0x1118, 0x2300, +- 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, 0x8002, 0x0005, 0x2d00, +- 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x0126, 0x2091, +- 0x8000, 0x2009, 0xb812, 0x2104, 0xc08d, 0x200a, 0x012e, 0x080c, +- 0x165f, 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220, 0xa082, 0x001d, +- 0x0033, 0x0010, 0x080c, 0x1515, 0x6027, 0x1e00, 0x0005, 0x58dd, +- 0x5858, 0x5870, 0x58ad, 0x58ce, 0x5908, 0x591a, 0x5870, 0x58f4, +- 0x57fc, 0x582a, 0x57fb, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, +- 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, +- 0xb7c5, 0x2d04, 0x7002, 0x080c, 0x5bd2, 0x6028, 0xa085, 0x0600, +- 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xb7c5, 0x2d04, 0x7002, +- 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, +- 0x2071, 0xb823, 0x080c, 0x1dfe, 0x005e, 0x004e, 0x003e, 0x00ee, +- 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0xa005, 0x1180, +- 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, 0xb7c5, 0x2d04, +- 0x7002, 0x080c, 0x5c5f, 0x6028, 0xa085, 0x0600, 0x602a, 0x00b0, +- 0x708f, 0x0028, 0x2069, 0xb7c5, 0x2d04, 0x7002, 0x6028, 0xa085, +- 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0xb823, +- 0x080c, 0x1dfe, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, +- 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x5985, 0xd1d4, +- 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f, 0x0020, 0x080c, +- 0x5985, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, +- 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc, 0x1568, 0xd1e4, +- 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001, 0x600c, 0xc0b4, +- 0x600e, 0x080c, 0x5b00, 0x080c, 0x24b0, 0x0156, 0x6803, 0x0100, +- 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04, 0x588a, 0x0048, +- 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4, 0x1130, 0x1f04, +- 0x5894, 0x080c, 0x5b21, 0x015e, 0x0078, 0x015e, 0x708f, 0x0028, +- 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, +- 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3, 0x0001, 0x600c, +- 0xc0b4, 0x600e, 0x080c, 0x5b00, 0x080c, 0x24b0, 0x6803, 0x0080, +- 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0xa184, +- 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, 0x708f, 0x001e, 0x0028, +- 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x00a0, +- 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1e47, 0x708f, +- 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, 0x080c, 0x59f7, 0x6124, +- 0xd1dc, 0x1188, 0x080c, 0x5985, 0x0016, 0x080c, 0x1e47, 0x001e, +- 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e, 0x0020, 0x708f, +- 0x001f, 0x080c, 0x5985, 0x0005, 0x6803, 0x00a0, 0x6124, 0xd1d4, +- 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x708f, +- 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x0021, 0x0005, +- 0x080c, 0x59f7, 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, +- 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, +- 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4, 0x1178, 0xd1cc, +- 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f, 0x001e, 0x0040, +- 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, +- 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100, +- 0x2069, 0x0140, 0x2071, 0xb500, 0x2091, 0x8000, 0x080c, 0x5ad0, +- 0x11e8, 0x2001, 0xb50c, 0x200c, 0xd1b4, 0x01c0, 0xc1b4, 0x2102, +- 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc, 0x0158, 0x6803, +- 0x00a0, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, +- 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x5aec, +- 0x0150, 0x080c, 0x5ae2, 0x1138, 0x2001, 0x0001, 0x080c, 0x27c3, +- 0x080c, 0x5aa7, 0x00a0, 0x080c, 0x59f4, 0x0178, 0x2001, 0x0001, +- 0x080c, 0x27c3, 0x708c, 0xa086, 0x001e, 0x0120, 0x708c, 0xa086, +- 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, 0x708f, 0x0021, 0x012e, +- 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x5996, +- 0x080c, 0x6a5d, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, +- 0x5996, 0x080c, 0x6a54, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, +- 0x0016, 0x080c, 0x7d7b, 0x2071, 0xb500, 0x080c, 0x5931, 0x001e, +- 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, +- 0x00e6, 0x00f6, 0x0126, 0x080c, 0x7d7b, 0x2061, 0x0100, 0x2069, +- 0x0140, 0x2071, 0xb500, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, +- 0x2011, 0x0003, 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, +- 0x080c, 0x7f5a, 0x080c, 0x6a11, 0x0036, 0x2019, 0x0000, 0x080c, +- 0x7fe5, 0x003e, 0x60e3, 0x0000, 0x080c, 0xb423, 0x080c, 0xb43e, +- 0x2001, 0xb500, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12dd, +- 0x2001, 0x0001, 0x080c, 0x27c3, 0x012e, 0x00fe, 0x00ee, 0x00de, +- 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x2001, 0xb500, 0x2004, +- 0xa086, 0x0004, 0x0140, 0x2001, 0xb79e, 0x2003, 0xaaaa, 0x2001, +- 0xb79f, 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, +- 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156, 0x20a9, 0x002d, +- 0x1d04, 0x5a00, 0x2091, 0x6000, 0x1f04, 0x5a00, 0x015e, 0x0005, +- 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, +- 0xb500, 0x2001, 0xb79f, 0x200c, 0xa186, 0x0000, 0x0158, 0xa186, +- 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, 0xa186, 0x0003, 0x0158, +- 0x0804, 0x5a95, 0x708f, 0x0022, 0x0040, 0x708f, 0x0021, 0x0028, +- 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, 0x6043, 0x0000, 0x60e3, +- 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2872, 0x0026, +- 0x2011, 0x0003, 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, +- 0x080c, 0x7f5a, 0x0036, 0x2019, 0x0000, 0x080c, 0x7fe5, 0x003e, +- 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, +- 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, +- 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804, 0x5aa3, 0x6800, +- 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4, 0x1130, 0x6803, +- 0x0100, 0x1f04, 0x5a58, 0x080c, 0x5b21, 0x012e, 0x015e, 0x080c, +- 0x5ae2, 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050, 0x0006, 0xa085, +- 0x0020, 0x6052, 0x080c, 0x5b21, 0xa006, 0x8001, 0x1df0, 0x000e, +- 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x5b21, 0x0016, +- 0x0026, 0x2009, 0x00c8, 0x2011, 0x59a3, 0x080c, 0x6a23, 0x002e, +- 0x001e, 0x2001, 0xb79f, 0x2003, 0x0004, 0x080c, 0x57e2, 0x080c, +- 0x5ae2, 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc, 0x1100, 0x2001, +- 0xb79f, 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, ++ 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, ++ 0x080c, 0x4b06, 0x0005, 0x0005, 0x0005, 0x0086, 0x0096, 0x2029, ++ 0xb553, 0x252c, 0x20a9, 0x0008, 0x2041, 0xbb0e, 0x28a0, 0x2099, ++ 0xbb8e, 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0110, ++ 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x1148, ++ 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, 0x4a2a, 0x0804, ++ 0x4a98, 0x82ff, 0x1160, 0xd5d4, 0x0120, 0xa1a6, 0x3fff, 0x0d90, ++ 0x0020, 0xa1a6, 0x3fff, 0x0904, 0x4a98, 0xa18d, 0xc000, 0x20a9, ++ 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, ++ 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, ++ 0x8319, 0x0008, 0x8318, 0x1f04, 0x4a50, 0x04d0, 0x23a8, 0x2021, ++ 0x0001, 0x8426, 0x8425, 0x1f04, 0x4a62, 0x2328, 0x8529, 0xa2be, ++ 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, 0xa73a, 0x000e, ++ 0x27a8, 0xa5a8, 0x0010, 0x1f04, 0x4a71, 0x7552, 0xa5c8, 0x2dc4, ++ 0x292d, 0xa5ac, 0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, ++ 0x080c, 0x2847, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, ++ 0xa405, 0x201a, 0x707b, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008, ++ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0028, ++ 0xa006, 0x0018, 0xa006, 0x080c, 0x1515, 0x009e, 0x008e, 0x0005, ++ 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a, 0x0010, 0x0218, ++ 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, 0xa39a, 0x0010, ++ 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, ++ 0x1de8, 0xa238, 0x2704, 0xa42c, 0x11b8, 0xa405, 0x203a, 0x7152, ++ 0xa1a0, 0x2dc4, 0x242d, 0xa5ac, 0x00ff, 0x7576, 0x6532, 0x6536, ++ 0x0016, 0x2508, 0x080c, 0x2847, 0x001e, 0x60e7, 0x0000, 0x65ea, ++ 0x707b, 0x0001, 0xa084, 0x0000, 0x0005, 0x00e6, 0x2071, 0xb500, ++ 0x707f, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079, 0x0100, ++ 0x2071, 0x0140, 0x080c, 0x7d7a, 0x7004, 0xa084, 0x4000, 0x0120, ++ 0x7003, 0x1000, 0x7003, 0x0000, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0xb523, 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, ++ 0x080c, 0x4baf, 0x001e, 0xa094, 0x0010, 0xa285, 0x0080, 0x7842, ++ 0x7a42, 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x2011, 0xb7ea, 0x2013, 0x0000, 0x7087, 0x0000, 0x012e, ++ 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x7d71, ++ 0x2009, 0x07d0, 0x2011, 0x4adc, 0x080c, 0x6a22, 0x0005, 0x0016, ++ 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2011, 0x0003, 0x080c, ++ 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, 0x7f59, 0x0036, ++ 0x2019, 0x0000, 0x080c, 0x7fe4, 0x003e, 0x2009, 0x00f7, 0x080c, ++ 0x4baf, 0x2061, 0xb7f3, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, ++ 0xb500, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, ++ 0x0010, 0x2009, 0x002d, 0x2011, 0x4b54, 0x080c, 0x6990, 0x012e, ++ 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x0100, 0x080c, 0x7d7a, 0x2071, 0x0140, 0x7004, ++ 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000, 0x080c, ++ 0x5ad7, 0x01a8, 0x080c, 0x5af5, 0x1190, 0x2001, 0xb79e, 0x2003, ++ 0xaaaa, 0x0016, 0x080c, 0x28eb, 0x2001, 0xb78f, 0x2102, 0x001e, ++ 0x2001, 0xb79f, 0x2003, 0x0000, 0x080c, 0x5a07, 0x0030, 0x2001, ++ 0x0001, 0x080c, 0x27c3, 0x080c, 0x4b1f, 0x012e, 0x000e, 0x00ee, ++ 0x0005, 0x20a9, 0x0040, 0x20a1, 0xbcc0, 0x2099, 0xbb8e, 0x3304, ++ 0x8007, 0x20a2, 0x9398, 0x94a0, 0x1f04, 0x4b8f, 0x0005, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x2099, 0xbb00, 0x20a1, 0x020b, 0x20a9, ++ 0x000c, 0x53a6, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, ++ 0xbb80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, 0x00c6, ++ 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0xb531, 0x2004, 0xa005, ++ 0x1138, 0x2001, 0xb515, 0x2004, 0xa084, 0x00ff, 0xa105, 0x0010, ++ 0xa185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, 0x0046, ++ 0x2001, 0xb553, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009, ++ 0x002a, 0x080c, 0xb0e8, 0x2001, 0xb50c, 0x200c, 0xc195, 0x2102, ++ 0x2019, 0x002a, 0x2009, 0x0000, 0x080c, 0x2c6f, 0x004e, 0x001e, ++ 0x0005, 0x080c, 0x4b1f, 0x708f, 0x0000, 0x7087, 0x0000, 0x0005, ++ 0x0006, 0x2001, 0xb50c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, ++ 0x0006, 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, ++ 0xa18d, 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x0156, ++ 0x20a9, 0x00ff, 0x2009, 0xb635, 0xa006, 0x200a, 0x8108, 0x1f04, ++ 0x4c05, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146, ++ 0x2069, 0xb552, 0xa006, 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, ++ 0x6012, 0xa198, 0x2dc4, 0x231d, 0xa39c, 0x00ff, 0x6316, 0x20a9, ++ 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, ++ 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, ++ 0x605a, 0x605e, 0x6062, 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, ++ 0x607a, 0x607e, 0x6082, 0x6086, 0x608a, 0x608e, 0x6092, 0x6096, ++ 0x609a, 0x609e, 0x60ae, 0x61a2, 0x00d6, 0x60a4, 0xa06d, 0x0110, ++ 0x080c, 0x160f, 0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0110, 0x080c, ++ 0x160f, 0x60ab, 0x0000, 0x00de, 0xa006, 0x604a, 0x6810, 0x603a, ++ 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x014e, 0x013e, ++ 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000, 0x6944, ++ 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04, 0x4d1a, 0xa18c, ++ 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x4d1f, 0x2001, 0xb50c, ++ 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xb50c, 0x2004, 0xd084, ++ 0x1904, 0x4d02, 0xa188, 0xb635, 0x2104, 0xa065, 0x0904, 0x4d02, ++ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904, 0x4d02, 0x6000, ++ 0xd0c4, 0x0904, 0x4d02, 0x0068, 0xa188, 0xb635, 0x2104, 0xa065, ++ 0x0904, 0x4ce6, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904, ++ 0x4ceb, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x51d4, 0x05d0, 0x60a8, ++ 0xa00d, 0x0188, 0x080c, 0x521f, 0x1170, 0x694c, 0xd1fc, 0x1118, ++ 0x080c, 0x4ede, 0x0448, 0x080c, 0x4e8d, 0x694c, 0xd1ec, 0x1520, ++ 0x080c, 0x50c6, 0x0408, 0x694c, 0xa184, 0xa000, 0x0178, 0xd1ec, ++ 0x0140, 0xd1fc, 0x0118, 0x080c, 0x50d5, 0x0028, 0x080c, 0x50d5, ++ 0x0028, 0xd1fc, 0x0118, 0x080c, 0x4e8d, 0x0070, 0x6050, 0xa00d, ++ 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0028, 0x2d00, ++ 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x6caa, 0xa006, 0x012e, ++ 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8, 0x2001, 0x0028, ++ 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0, 0x2001, 0xb535, ++ 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148, 0x6100, 0xd1fc, ++ 0x0904, 0x4ca1, 0x2001, 0x0029, 0x2009, 0x1000, 0x0420, 0x2001, ++ 0x0028, 0x00a8, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, 0x2001, ++ 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040, 0x2001, ++ 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0060, 0x2009, ++ 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, 0x0020, 0x2001, ++ 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0x6844, 0x8007, 0xa084, 0x00ff, 0x2008, 0xa182, ++ 0x00ff, 0x1a04, 0x4d79, 0xa188, 0xb635, 0x2104, 0xa065, 0x01c0, ++ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11a8, 0x2c70, 0x080c, ++ 0x85c7, 0x05e8, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x600b, 0xffff, ++ 0x601f, 0x000a, 0x2009, 0x0003, 0x080c, 0x864c, 0xa006, 0x0460, ++ 0x2001, 0x0028, 0x0440, 0xa082, 0x0006, 0x1298, 0x2001, 0xb535, ++ 0x2004, 0xd0ac, 0x1158, 0x60a0, 0xd0bc, 0x1140, 0x6100, 0xd1fc, ++ 0x09e8, 0x2001, 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, ++ 0x0090, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, ++ 0x0050, 0xd184, 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, ++ 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, 0x2001, ++ 0x002c, 0x0cc8, 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2011, ++ 0x0000, 0x2079, 0xb500, 0x6944, 0xa18c, 0xff00, 0x810f, 0xa182, ++ 0x00ff, 0x1a04, 0x4e44, 0x080c, 0x4fa9, 0x11a0, 0x6004, 0xa084, ++ 0x00ff, 0xa082, 0x0006, 0x1270, 0x6864, 0xa0c6, 0x006f, 0x0150, ++ 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1904, 0x4e2d, 0x60a0, 0xd0bc, ++ 0x1904, 0x4e2d, 0x6864, 0xa0c6, 0x006f, 0x0118, 0x2008, 0x0804, ++ 0x4df6, 0x6968, 0x2140, 0xa18c, 0xff00, 0x810f, 0x78d4, 0xd0ac, ++ 0x1118, 0xa182, 0x0080, 0x06d0, 0xa182, 0x00ff, 0x16b8, 0x6a70, ++ 0x6b6c, 0x7870, 0xa306, 0x1160, 0x7874, 0xa24e, 0x1118, 0x2208, ++ 0x2310, 0x0460, 0xa9cc, 0xff00, 0x1118, 0x2208, 0x2310, 0x0430, ++ 0x080c, 0x3dc5, 0x2c70, 0x0550, 0x2009, 0x0000, 0x2011, 0x0000, ++ 0xa0c6, 0x4000, 0x1160, 0x0006, 0x2e60, 0x080c, 0x524a, 0x1108, ++ 0xc185, 0x7000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x0088, 0xa0c6, ++ 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, 0x2708, ++ 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, 0x4006, ++ 0x6866, 0x696a, 0x6a6e, 0x2001, 0x0030, 0x0450, 0x080c, 0x85c7, ++ 0x1138, 0x2001, 0x4005, 0x2009, 0x0003, 0x2011, 0x0000, 0x0c80, ++ 0x2e00, 0x601a, 0x080c, 0xa027, 0x2d00, 0x6012, 0x601f, 0x0001, ++ 0x6838, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x2c9c, 0x012e, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, ++ 0x0002, 0x080c, 0x4efd, 0x2009, 0x0002, 0x080c, 0x864c, 0xa006, ++ 0xa005, 0x012e, 0x00ee, 0x00fe, 0x0005, 0x2001, 0x0028, 0x2009, ++ 0x0000, 0x0cb0, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x0118, 0x2001, ++ 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, ++ 0x0029, 0x2009, 0x0000, 0x0c20, 0x2001, 0x0029, 0x2009, 0x0000, ++ 0x08f8, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x16b8, ++ 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x12e0, 0xa188, 0xb635, ++ 0x2104, 0xa065, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, ++ 0x11b0, 0x684c, 0xd0ec, 0x0120, 0x080c, 0x50d5, 0x0431, 0x0030, ++ 0x0421, 0x684c, 0xd0fc, 0x0110, 0x080c, 0x50c6, 0x080c, 0x5113, ++ 0xa006, 0x00c8, 0x2001, 0x0028, 0x2009, 0x0000, 0x00a0, 0xa082, ++ 0x0006, 0x1240, 0x6100, 0xd1fc, 0x0d20, 0x2001, 0x0029, 0x2009, ++ 0x1000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, 0x0020, 0x2001, ++ 0x0029, 0x2009, 0x0000, 0xa005, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x6050, 0xa00d, 0x0138, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, ++ 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, ++ 0x0126, 0x2091, 0x8000, 0x604c, 0xa005, 0x0170, 0x00e6, 0x2071, ++ 0xb7e0, 0x7004, 0xa086, 0x0002, 0x0168, 0x00ee, 0x604c, 0x6802, ++ 0x2d00, 0x604e, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, ++ 0x0000, 0x0cc0, 0x701c, 0xac06, 0x1d80, 0x604c, 0x2070, 0x7000, ++ 0x6802, 0x2d00, 0x7002, 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, ++ 0x604e, 0xad05, 0x012e, 0x0005, 0x604c, 0xa06d, 0x0130, 0x6800, ++ 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x0005, 0x6803, 0x0000, ++ 0x6084, 0xa00d, 0x0120, 0x2d00, 0x200a, 0x6086, 0x0005, 0x2d00, ++ 0x6086, 0x6082, 0x0cd8, 0x0126, 0x00c6, 0x0026, 0x2091, 0x8000, ++ 0x6218, 0x2260, 0x6200, 0xa005, 0x0110, 0xc285, 0x0008, 0xc284, ++ 0x6202, 0x002e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, ++ 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, 0x1180, ++ 0x609c, 0xd0ac, 0x0168, 0x2001, 0xb553, 0x2004, 0xd0a4, 0x0140, ++ 0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x1110, 0x2011, 0x0600, ++ 0x000e, 0xa294, 0xff00, 0xa215, 0x6206, 0x0006, 0xa086, 0x0006, ++ 0x1128, 0x6290, 0x82ff, 0x1110, 0x080c, 0x1515, 0x000e, 0x00ce, ++ 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, ++ 0x6204, 0x0006, 0xa086, 0x0006, 0x1178, 0x609c, 0xd0a4, 0x0160, ++ 0x2001, 0xb553, 0x2004, 0xd0ac, 0x1138, 0xa284, 0x00ff, 0xa086, ++ 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0xa294, 0x00ff, 0x8007, ++ 0xa215, 0x6206, 0x00ce, 0x012e, 0x0005, 0x0026, 0xa182, 0x00ff, ++ 0x0218, 0xa085, 0x0001, 0x00b0, 0xa190, 0xb635, 0x2204, 0xa065, ++ 0x1180, 0x0016, 0x00d6, 0x080c, 0x15df, 0x2d60, 0x00de, 0x001e, ++ 0x0d80, 0x2c00, 0x2012, 0x60a7, 0x0000, 0x60ab, 0x0000, 0x080c, ++ 0x4c0b, 0xa006, 0x002e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0026, ++ 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x0480, 0x00d6, 0xa190, ++ 0xb635, 0x2204, 0xa06d, 0x0540, 0x2013, 0x0000, 0x00d6, 0x00c6, ++ 0x2d60, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x160f, 0x60a8, 0xa06d, ++ 0x0110, 0x080c, 0x160f, 0x00ce, 0x00de, 0x00d6, 0x00c6, 0x68ac, ++ 0x2060, 0x8cff, 0x0168, 0x600c, 0x0006, 0x6010, 0x2068, 0x080c, ++ 0x9c5a, 0x0110, 0x080c, 0x161f, 0x080c, 0x861d, 0x00ce, 0x0c88, ++ 0x00ce, 0x00de, 0x080c, 0x160f, 0x00de, 0xa006, 0x002e, 0x012e, ++ 0x0005, 0x0016, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x0030, ++ 0xa188, 0xb635, 0x2104, 0xa065, 0x0dc0, 0xa006, 0x001e, 0x0005, ++ 0x00d6, 0x0156, 0x0136, 0x0146, 0x600b, 0x0000, 0x600f, 0x0000, ++ 0x6000, 0xc08c, 0x6002, 0x080c, 0x5acf, 0x1558, 0x60a0, 0xa086, ++ 0x007e, 0x2069, 0xbb90, 0x0130, 0x2001, 0xb535, 0x2004, 0xd0ac, ++ 0x1500, 0x0098, 0x2d04, 0xd0e4, 0x01e0, 0x00d6, 0x2069, 0xbb8e, ++ 0x00c6, 0x2061, 0xb7b2, 0x6810, 0x2062, 0x6814, 0x6006, 0x6818, ++ 0x600a, 0x681c, 0x600e, 0x00ce, 0x00de, 0x8d69, 0x2d04, 0x2069, ++ 0x0140, 0xa005, 0x1110, 0x2001, 0x0001, 0x6886, 0x2069, 0xb500, ++ 0x68a6, 0x2069, 0xbb8e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, ++ 0xa10a, 0x0208, 0x603a, 0x6814, 0x6066, 0x2099, 0xbb96, 0xac88, ++ 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xbb9a, 0xac88, ++ 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xbbae, 0x6808, ++ 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, 0x60a0, ++ 0xa086, 0x007e, 0x1120, 0x2069, 0xbb8e, 0x690c, 0x616e, 0xa182, ++ 0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, 0x1218, ++ 0x2009, 0x0007, 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, 0x0006, ++ 0x00a0, 0xa182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0xa182, ++ 0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, 0x1218, ++ 0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0x6192, 0x014e, 0x013e, ++ 0x015e, 0x00de, 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, 0xbb8d, ++ 0x2e04, 0x6896, 0x2071, 0xbb8e, 0x7004, 0x689a, 0x701c, 0x689e, ++ 0x6a00, 0x2009, 0xb572, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, ++ 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0120, 0xd1e4, 0x0110, 0xc2bd, ++ 0x0008, 0xc2bc, 0x6a02, 0x00ee, 0x002e, 0x001e, 0x0005, 0x00d6, ++ 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x01c0, 0x6900, 0x81ff, ++ 0x1540, 0x6a04, 0xa282, 0x0010, 0x1648, 0xad88, 0x0004, 0x20a9, ++ 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, 0x5081, ++ 0x080c, 0x1515, 0x260a, 0x8210, 0x6a06, 0x0098, 0x080c, 0x15f8, ++ 0x01a8, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88, 0x0004, 0x20a9, ++ 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5099, 0x6807, 0x0001, ++ 0x6e12, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, ++ 0x0126, 0x2091, 0x8000, 0x00d6, 0x60a4, 0xa00d, 0x01a0, 0x2168, ++ 0x6800, 0xa005, 0x1160, 0x080c, 0x51d4, 0x1168, 0x200b, 0xffff, ++ 0x6804, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6806, 0x0020, 0x080c, ++ 0x160f, 0x60a7, 0x0000, 0x00de, 0x012e, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x5232, 0x0010, 0x080c, 0x4e8d, 0x080c, 0x514c, ++ 0x1dd8, 0x080c, 0x5113, 0x012e, 0x0005, 0x00d6, 0x0126, 0x2091, ++ 0x8000, 0x60a8, 0xa06d, 0x01c0, 0x6950, 0x81ff, 0x1540, 0x6a54, ++ 0xa282, 0x0010, 0x1670, 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, ++ 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, 0x50e7, 0x080c, 0x1515, ++ 0x260a, 0x8210, 0x6a56, 0x0098, 0x080c, 0x15f8, 0x01d0, 0x2d00, ++ 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b, ++ 0xffff, 0x8108, 0x1f04, 0x50ff, 0x6857, 0x0001, 0x6e62, 0x0010, ++ 0x080c, 0x4ede, 0x0089, 0x1de0, 0xa085, 0x0001, 0x012e, 0x00de, ++ 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x080c, 0x6caa, ++ 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, 0x0126, ++ 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc, 0x1170, 0x8dff, ++ 0x01f8, 0x83ff, 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, ++ 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, ++ 0x0c70, 0x080c, 0x811e, 0x6a00, 0x604c, 0xad06, 0x1110, 0x624e, ++ 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6152, 0x8dff, ++ 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, 0x6080, ++ 0x2068, 0x8dff, 0x01e8, 0x83ff, 0x0120, 0x6848, 0xa606, 0x0158, ++ 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, 0x2d08, ++ 0x6800, 0x2068, 0x0c70, 0x6a00, 0x6080, 0xad06, 0x1110, 0x6282, ++ 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6186, 0x8dff, ++ 0x0005, 0xa016, 0x080c, 0x51ce, 0x1110, 0x2011, 0x0001, 0x080c, ++ 0x5219, 0x1110, 0xa295, 0x0002, 0x0005, 0x080c, 0x524a, 0x0118, ++ 0x080c, 0x9d0f, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x524a, ++ 0x0118, 0x080c, 0x9c9f, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, ++ 0x524a, 0x0118, 0x080c, 0x9cf2, 0x0010, 0xa085, 0x0001, 0x0005, ++ 0x080c, 0x524a, 0x0118, 0x080c, 0x9cbb, 0x0010, 0xa085, 0x0001, ++ 0x0005, 0x080c, 0x524a, 0x0118, 0x080c, 0x9d2b, 0x0010, 0xa085, ++ 0x0001, 0x0005, 0x0126, 0x0006, 0x00d6, 0x2091, 0x8000, 0x6080, ++ 0xa06d, 0x01a0, 0x6800, 0x0006, 0x6837, 0x0103, 0x6b4a, 0x6847, ++ 0x0000, 0x080c, 0x9ecc, 0x0006, 0x6000, 0xd0fc, 0x0110, 0x080c, ++ 0xb389, 0x000e, 0x080c, 0x5408, 0x000e, 0x0c50, 0x6083, 0x0000, ++ 0x6087, 0x0000, 0x00de, 0x000e, 0x012e, 0x0005, 0x60a4, 0xa00d, ++ 0x1118, 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7000, 0xa005, ++ 0x1168, 0x20a9, 0x0010, 0xae88, 0x0004, 0x2104, 0xa606, 0x0130, ++ 0x8108, 0x1f04, 0x51dd, 0xa085, 0x0001, 0x0008, 0xa006, 0x00ee, ++ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x1128, ++ 0x080c, 0x15f8, 0x01a0, 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807, ++ 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, ++ 0x1f04, 0x51fd, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, ++ 0x0cd8, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x0130, ++ 0x60a7, 0x0000, 0x080c, 0x160f, 0xa085, 0x0001, 0x012e, 0x00de, ++ 0x0005, 0x60a8, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, 0x00e6, ++ 0x2170, 0x7050, 0xa005, 0x1160, 0x20a9, 0x0010, 0xae88, 0x0018, ++ 0x2104, 0xa606, 0x0128, 0x8108, 0x1f04, 0x5228, 0xa085, 0x0001, ++ 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x0c19, 0x1188, 0x200b, ++ 0xffff, 0x00d6, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, 0x0218, ++ 0x8001, 0x6856, 0x0020, 0x080c, 0x160f, 0x60ab, 0x0000, 0x00de, ++ 0x012e, 0x0005, 0x609c, 0xd0a4, 0x0005, 0x00f6, 0x080c, 0x5acf, ++ 0x01b0, 0x71b8, 0x81ff, 0x1198, 0x71d4, 0xd19c, 0x0180, 0x2001, ++ 0x007e, 0xa080, 0xb635, 0x2004, 0xa07d, 0x0148, 0x7804, 0xa084, ++ 0x00ff, 0xa086, 0x0006, 0x1118, 0x7800, 0xc0ed, 0x7802, 0x2079, ++ 0xb552, 0x7804, 0xd0a4, 0x01e8, 0x0156, 0x00c6, 0x20a9, 0x007f, ++ 0x2009, 0x0000, 0x0016, 0x080c, 0x4fa9, 0x1168, 0x6004, 0xa084, ++ 0xff00, 0x8007, 0xa096, 0x0004, 0x0118, 0xa086, 0x0006, 0x1118, ++ 0x6000, 0xc0ed, 0x6002, 0x001e, 0x8108, 0x1f04, 0x5272, 0x00ce, ++ 0x015e, 0x080c, 0x5309, 0x0120, 0x2001, 0xb7b5, 0x200c, 0x0038, ++ 0x2079, 0xb552, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, ++ 0x529d, 0x080c, 0x6a22, 0x00fe, 0x0005, 0x2011, 0x529d, 0x080c, ++ 0x699c, 0x080c, 0x5309, 0x01f0, 0x2001, 0xb6b3, 0x2004, 0xa080, ++ 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xb553, 0x2004, 0xd0a4, ++ 0x0130, 0x2009, 0x07d0, 0x2011, 0x529d, 0x080c, 0x6a22, 0x00e6, ++ 0x2071, 0xb500, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c, 0x2ab8, ++ 0x00ee, 0x04b0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, ++ 0x0016, 0x080c, 0x4fa9, 0x1530, 0x6000, 0xd0ec, 0x0518, 0x0046, ++ 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x080c, ++ 0xb0e8, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, 0x00ff, ++ 0xa085, 0x0700, 0x6006, 0x2019, 0x0029, 0x080c, 0x6df5, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0x6d02, 0x2009, 0x0000, 0x080c, 0xae82, ++ 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04, 0x52c8, 0x00ce, 0x015e, ++ 0x0005, 0x00c6, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x00ce, ++ 0x0005, 0x7818, 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, 0xd0bc, ++ 0x0005, 0x00f6, 0x2001, 0xb6b3, 0x2004, 0xa07d, 0x0110, 0x7800, ++ 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, 0x0006, ++ 0x62a0, 0xa290, 0xb635, 0x2204, 0xac06, 0x190c, 0x1515, 0x000e, ++ 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0x6202, 0x002e, ++ 0x012e, 0x0005, 0x2011, 0xb535, 0x2204, 0xd0cc, 0x0138, 0x2001, ++ 0xb7b3, 0x200c, 0x2011, 0x5337, 0x080c, 0x6a22, 0x0005, 0x2011, ++ 0x5337, 0x080c, 0x699c, 0x2011, 0xb535, 0x2204, 0xc0cc, 0x2012, ++ 0x0005, 0x2071, 0xb614, 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, ++ 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x700b, ++ 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, 0x0020, 0x705f, ++ 0x0040, 0x707f, 0x0000, 0x2071, 0xb77d, 0x7003, 0xb614, 0x7007, ++ 0x0000, 0x700b, 0x0000, 0x700f, 0xb75d, 0x7013, 0x0020, 0x7017, ++ 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, 0xb735, ++ 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001, 0xb553, 0x2004, ++ 0xd0fc, 0x1150, 0x2001, 0xb553, 0x2004, 0xa00e, 0xd09c, 0x0108, ++ 0x8108, 0x7102, 0x0804, 0x53d2, 0x2001, 0xb572, 0x200c, 0xa184, ++ 0x000f, 0x2009, 0xb573, 0x210c, 0x0002, 0x537a, 0x53ad, 0x53b4, ++ 0x53be, 0x53c3, 0x537a, 0x537a, 0x537a, 0x539d, 0x537a, 0x537a, ++ 0x537a, 0x537a, 0x537a, 0x537a, 0x537a, 0x7003, 0x0004, 0x0136, ++ 0x0146, 0x0156, 0x2099, 0xb576, 0x20a1, 0xb786, 0x20a9, 0x0004, ++ 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f, 0x0005, 0x7007, ++ 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002, 0x7007, 0x0121, ++ 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088, 0x7007, 0x0122, ++ 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001, 0x0003, 0x7002, ++ 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a, 0xa184, ++ 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, 0xb614, ++ 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, ++ 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, 0x7076, ++ 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844, 0x7032, 0x2009, ++ 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006, 0x8006, 0xa08c, ++ 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e, 0x7372, ++ 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x00ee, 0x0005, ++ 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904, 0x5461, 0x6804, ++ 0xa00d, 0x0188, 0x00d6, 0x2071, 0xb500, 0xa016, 0x702c, 0x2168, ++ 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70b4, ++ 0xa200, 0x70b6, 0x00de, 0x2071, 0xb614, 0x701c, 0xa005, 0x1904, ++ 0x5471, 0x20a9, 0x0032, 0x0f04, 0x546f, 0x0e04, 0x542b, 0x2071, ++ 0xb735, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186, 0x0103, 0x1904, ++ 0x547f, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009, 0x8020, 0x2200, ++ 0x0002, 0x546f, 0x5446, 0x5497, 0x54a3, 0x546f, 0x2071, 0x0000, ++ 0x20a9, 0x0032, 0x0f04, 0x546f, 0x7018, 0xd084, 0x1dd8, 0x7122, ++ 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, ++ 0x2071, 0xb500, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70b4, 0x8000, ++ 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844, 0xa086, 0x0100, ++ 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020, 0x0880, 0x2071, ++ 0xb614, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, 0x7012, 0x7018, ++ 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x0c10, 0xa18c, ++ 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, 0xa18e, ++ 0x001f, 0x1d28, 0x684c, 0xd0cc, 0x0d10, 0x6850, 0xa084, 0x00ff, ++ 0xa086, 0x0001, 0x19e0, 0x2009, 0x8021, 0x0804, 0x543f, 0x7084, ++ 0x8008, 0xa092, 0x001e, 0x1a98, 0x7186, 0xae90, 0x0003, 0xa210, ++ 0x683c, 0x2012, 0x0078, 0x7084, 0x8008, 0xa092, 0x000f, 0x1a38, ++ 0x7186, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, ++ 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04, 0x5458, 0x718c, 0x7084, ++ 0xa10a, 0x0a04, 0x5458, 0x2071, 0x0000, 0x7018, 0xd084, 0x1904, ++ 0x5458, 0x2071, 0xb735, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c, ++ 0x5722, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, ++ 0x5458, 0x080c, 0x574c, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, ++ 0x4080, 0x0804, 0x5458, 0x0006, 0x684c, 0x0006, 0x6837, 0x0103, ++ 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, ++ 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e, 0x684a, 0x6952, 0x0005, ++ 0x2071, 0xb614, 0x7004, 0x0002, 0x54fe, 0x550f, 0x570d, 0x570e, ++ 0x571b, 0x5721, 0x54ff, 0x56fe, 0x5694, 0x56ea, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x0e04, 0x550e, 0x2009, 0x000d, 0x7030, 0x200a, ++ 0x2091, 0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x012e, 0x2069, ++ 0xb7f3, 0x683c, 0xa005, 0x03f8, 0x11f0, 0x0126, 0x2091, 0x8000, ++ 0x2069, 0x0000, 0x6934, 0x2001, 0xb620, 0x2004, 0xa10a, 0x0170, ++ 0x0e04, 0x5532, 0x2069, 0x0000, 0x6818, 0xd084, 0x1158, 0x2009, ++ 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x2069, 0xb7f3, ++ 0x683f, 0xffff, 0x012e, 0x2069, 0xb500, 0x6848, 0x6968, 0xa102, ++ 0x2069, 0xb735, 0x688a, 0x6984, 0x701c, 0xa06d, 0x0120, 0x81ff, ++ 0x0904, 0x5588, 0x00a0, 0x81ff, 0x0904, 0x564e, 0x2071, 0xb735, ++ 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190, 0x2071, 0xb7f3, 0x7038, ++ 0xa005, 0x0128, 0x1b04, 0x564e, 0x713a, 0x0804, 0x564e, 0x2071, ++ 0xb735, 0x718c, 0x0126, 0x2091, 0x8000, 0x7084, 0xa10a, 0x0a04, ++ 0x5669, 0x0e04, 0x560a, 0x2071, 0x0000, 0x7018, 0xd084, 0x1904, ++ 0x560a, 0x2001, 0xffff, 0x2071, 0xb7f3, 0x703a, 0x2071, 0xb735, ++ 0x7000, 0xa086, 0x0002, 0x1150, 0x080c, 0x5722, 0x2071, 0x0000, ++ 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x560a, 0x080c, 0x574c, ++ 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x560a, ++ 0x2071, 0xb735, 0x7000, 0xa005, 0x0904, 0x5630, 0x6934, 0xa186, ++ 0x0103, 0x1904, 0x560d, 0x684c, 0xd0bc, 0x1904, 0x5630, 0x6948, ++ 0x6844, 0xa105, 0x1904, 0x5625, 0x2009, 0x8020, 0x2071, 0xb735, ++ 0x7000, 0x0002, 0x5630, 0x55f0, 0x55c8, 0x55da, 0x55a7, 0x0136, ++ 0x0146, 0x0156, 0x2099, 0xb576, 0x20a1, 0xb786, 0x20a9, 0x0004, ++ 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071, 0xb77d, 0xad80, 0x000f, ++ 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000, 0x2e10, ++ 0x080c, 0x1643, 0x2071, 0xb614, 0x7007, 0x0009, 0x0804, 0x564e, ++ 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x564e, 0xae90, 0x0003, ++ 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xb614, 0x080c, 0x57a3, ++ 0x0804, 0x564e, 0x7084, 0x8008, 0xa092, 0x000f, 0x1a04, 0x564e, ++ 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, 0x6840, ++ 0x2012, 0x7186, 0x2071, 0xb614, 0x080c, 0x57a3, 0x0804, 0x564e, ++ 0x0126, 0x2091, 0x8000, 0x0e04, 0x560a, 0x2071, 0x0000, 0x7018, ++ 0xd084, 0x1180, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, ++ 0x0001, 0x2091, 0x4080, 0x012e, 0x2071, 0xb614, 0x080c, 0x57a3, ++ 0x0804, 0x564e, 0x012e, 0x0804, 0x564e, 0xa18c, 0x00ff, 0xa186, ++ 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, 0xa18e, 0x001f, 0x11c0, ++ 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, ++ 0x1178, 0x2009, 0x8021, 0x0804, 0x559e, 0x6844, 0xa086, 0x0100, ++ 0x1138, 0x6868, 0xa005, 0x1120, 0x2009, 0x8020, 0x0804, 0x559e, ++ 0x2071, 0xb614, 0x080c, 0x57b5, 0x01c8, 0x2071, 0xb614, 0x700f, ++ 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x1130, 0x810f, ++ 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x7007, 0x0003, 0x080c, ++ 0x57ce, 0x7050, 0xa086, 0x0100, 0x0904, 0x570e, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0xb614, 0x7008, 0xa086, 0x0001, 0x1180, 0x0e04, ++ 0x5667, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x700b, ++ 0x0000, 0x7004, 0xa086, 0x0006, 0x1110, 0x7007, 0x0001, 0x012e, ++ 0x0005, 0x2071, 0xb614, 0x080c, 0x57b5, 0x0518, 0x2071, 0xb735, ++ 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099, 0xb736, 0x20a1, 0xb75d, ++ 0x53a3, 0x7087, 0x0000, 0x2071, 0xb614, 0x2069, 0xb77d, 0x706c, ++ 0x6826, 0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, 0x2d10, ++ 0x080c, 0x1643, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, 0xb7f3, ++ 0x703a, 0x012e, 0x0804, 0x564e, 0x2069, 0xb77d, 0x6808, 0xa08e, ++ 0x0000, 0x0904, 0x56e9, 0xa08e, 0x0200, 0x0904, 0x56e7, 0xa08e, ++ 0x0100, 0x1904, 0x56e9, 0x0126, 0x2091, 0x8000, 0x0e04, 0x56e5, ++ 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0, 0x702c, 0x7130, 0x8108, ++ 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, ++ 0x706c, 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, ++ 0x7072, 0x7132, 0x6936, 0x700b, 0x0000, 0x2001, 0xb75a, 0x2004, ++ 0xa005, 0x1190, 0x6934, 0x2069, 0xb735, 0x689c, 0x699e, 0x2069, ++ 0xb7f3, 0xa102, 0x1118, 0x683c, 0xa005, 0x1368, 0x2001, 0xb75b, ++ 0x200c, 0x810d, 0x693e, 0x0038, 0x2009, 0x8040, 0x6922, 0x681b, ++ 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x012e, 0x0010, 0x7007, ++ 0x0005, 0x0005, 0x2001, 0xb77f, 0x2004, 0xa08e, 0x0100, 0x1128, ++ 0x7007, 0x0001, 0x080c, 0x57a3, 0x0005, 0xa08e, 0x0000, 0x0de0, ++ 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005, 0x0005, 0x701c, 0xa06d, ++ 0x0158, 0x080c, 0x57b5, 0x0140, 0x7007, 0x0003, 0x080c, 0x57ce, ++ 0x7050, 0xa086, 0x0100, 0x0110, 0x0005, 0x0005, 0x7050, 0xa09e, ++ 0x0100, 0x1118, 0x7007, 0x0004, 0x0030, 0xa086, 0x0200, 0x1110, ++ 0x7007, 0x0005, 0x0005, 0x080c, 0x5771, 0x7006, 0x080c, 0x57a3, ++ 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071, 0xb735, 0x7184, 0x81ff, ++ 0x0500, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, ++ 0x2014, 0x7226, 0x8000, 0x0f04, 0x5746, 0x2014, 0x722a, 0x8000, ++ 0x0f04, 0x5746, 0x2014, 0x722e, 0x8000, 0x0f04, 0x5746, 0x2014, ++ 0x723a, 0x8000, 0x0f04, 0x5746, 0x2014, 0x723e, 0xa180, 0x8030, ++ 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6, 0x0156, 0x2071, 0xb735, ++ 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071, ++ 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x2014, 0x722a, 0x8000, ++ 0x0f04, 0x5768, 0x2014, 0x723a, 0x8000, 0x2014, 0x723e, 0x0018, ++ 0x2001, 0x8020, 0x0010, 0x2001, 0x8042, 0x7022, 0x015e, 0x00ee, ++ 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, ++ 0x706e, 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, ++ 0x1220, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, ++ 0x700e, 0x1180, 0x0126, 0x2091, 0x8000, 0x0e04, 0x579d, 0x2001, ++ 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b, 0x0000, ++ 0x012e, 0x0005, 0x2001, 0x0007, 0x0005, 0x2001, 0x0006, 0x700b, ++ 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d, 0x0170, 0x0126, 0x2091, ++ 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, 0x1108, ++ 0x701a, 0x012e, 0x080c, 0x160f, 0x0005, 0x2019, 0x000d, 0x2304, ++ 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c, 0xa10e, 0x0110, 0xa006, ++ 0x0060, 0x732c, 0x8319, 0x7130, 0xa102, 0x1118, 0x2300, 0xa005, ++ 0x0020, 0x0210, 0xa302, 0x0008, 0x8002, 0x0005, 0x2d00, 0x7026, ++ 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x0126, 0x2091, 0x8000, ++ 0x2009, 0xb812, 0x2104, 0xc08d, 0x200a, 0x012e, 0x080c, 0x165f, ++ 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220, 0xa082, 0x001d, 0x0033, ++ 0x0010, 0x080c, 0x1515, 0x6027, 0x1e00, 0x0005, 0x58dc, 0x5857, ++ 0x586f, 0x58ac, 0x58cd, 0x5907, 0x5919, 0x586f, 0x58f3, 0x57fb, ++ 0x5829, 0x57fa, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0xa005, ++ 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, 0xb7c5, ++ 0x2d04, 0x7002, 0x080c, 0x5bd1, 0x6028, 0xa085, 0x0600, 0x602a, ++ 0x00b0, 0x708f, 0x0028, 0x2069, 0xb7c5, 0x2d04, 0x7002, 0x6028, ++ 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, ++ 0xb823, 0x080c, 0x1dfe, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, ++ 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0xa005, 0x1180, 0x6808, ++ 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, 0xb7c5, 0x2d04, 0x7002, ++ 0x080c, 0x5c5e, 0x6028, 0xa085, 0x0600, 0x602a, 0x00b0, 0x708f, ++ 0x0028, 0x2069, 0xb7c5, 0x2d04, 0x7002, 0x6028, 0xa085, 0x0600, ++ 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0xb823, 0x080c, ++ 0x1dfe, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x6803, ++ 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x5984, 0xd1d4, 0x1160, ++ 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f, 0x0020, 0x080c, 0x5984, ++ 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, ++ 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc, 0x1568, 0xd1e4, 0x1540, ++ 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, ++ 0x080c, 0x5aff, 0x080c, 0x24b0, 0x0156, 0x6803, 0x0100, 0x20a9, ++ 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04, 0x5889, 0x0048, 0x20a9, ++ 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4, 0x1130, 0x1f04, 0x5893, ++ 0x080c, 0x5b20, 0x015e, 0x0078, 0x015e, 0x708f, 0x0028, 0x0058, ++ 0x708f, 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, ++ 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3, 0x0001, 0x600c, 0xc0b4, ++ 0x600e, 0x080c, 0x5aff, 0x080c, 0x24b0, 0x6803, 0x0080, 0x6124, ++ 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0xa184, 0x1e00, ++ 0x1158, 0x708f, 0x0028, 0x0040, 0x708f, 0x001e, 0x0028, 0x708f, ++ 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x00a0, 0x6124, ++ 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1e47, 0x708f, 0x001e, ++ 0x0010, 0x708f, 0x001d, 0x0005, 0x080c, 0x59f6, 0x6124, 0xd1dc, ++ 0x1188, 0x080c, 0x5984, 0x0016, 0x080c, 0x1e47, 0x001e, 0xd1d4, ++ 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e, 0x0020, 0x708f, 0x001f, ++ 0x080c, 0x5984, 0x0005, 0x6803, 0x00a0, 0x6124, 0xd1d4, 0x1160, ++ 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x708f, 0x001e, ++ 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x0021, 0x0005, 0x080c, ++ 0x59f6, 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, ++ 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, ++ 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4, 0x1178, 0xd1cc, 0x1150, ++ 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f, 0x001e, 0x0040, 0x708f, ++ 0x001d, 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, ++ 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0xb500, 0x2091, 0x8000, 0x080c, 0x5acf, 0x11e8, ++ 0x2001, 0xb50c, 0x200c, 0xd1b4, 0x01c0, 0xc1b4, 0x2102, 0x6027, ++ 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc, 0x0158, 0x6803, 0x00a0, ++ 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, ++ 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x5aeb, 0x0150, ++ 0x080c, 0x5ae1, 0x1138, 0x2001, 0x0001, 0x080c, 0x27c3, 0x080c, ++ 0x5aa6, 0x00a0, 0x080c, 0x59f3, 0x0178, 0x2001, 0x0001, 0x080c, ++ 0x27c3, 0x708c, 0xa086, 0x001e, 0x0120, 0x708c, 0xa086, 0x0022, ++ 0x1118, 0x708f, 0x0025, 0x0010, 0x708f, 0x0021, 0x012e, 0x00ee, ++ 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x5995, 0x080c, ++ 0x6a5c, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, 0x5995, ++ 0x080c, 0x6a53, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, ++ 0x080c, 0x7d7a, 0x2071, 0xb500, 0x080c, 0x5930, 0x001e, 0x00fe, ++ 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x0126, 0x080c, 0x7d7a, 0x2061, 0x0100, 0x2069, 0x0140, ++ 0x2071, 0xb500, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, 0x2011, ++ 0x0003, 0x080c, 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, ++ 0x7f59, 0x080c, 0x6a10, 0x0036, 0x2019, 0x0000, 0x080c, 0x7fe4, ++ 0x003e, 0x60e3, 0x0000, 0x080c, 0xb42f, 0x080c, 0xb44a, 0x2001, ++ 0xb500, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12dd, 0x2001, ++ 0x0001, 0x080c, 0x27c3, 0x012e, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x2001, 0xb500, 0x2004, 0xa086, ++ 0x0004, 0x0140, 0x2001, 0xb79e, 0x2003, 0xaaaa, 0x2001, 0xb79f, ++ 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, 0xa086, ++ 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156, 0x20a9, 0x002d, 0x1d04, ++ 0x59ff, 0x2091, 0x6000, 0x1f04, 0x59ff, 0x015e, 0x0005, 0x00c6, + 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb500, +- 0x2001, 0xb79e, 0x2003, 0x0000, 0x2001, 0xb78f, 0x2003, 0x0000, +- 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, +- 0x080c, 0x2872, 0x6803, 0x0000, 0x6043, 0x0090, 0x6043, 0x0010, +- 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, +- 0x0006, 0x2001, 0xb79e, 0x2004, 0xa086, 0xaaaa, 0x000e, 0x0005, +- 0x0006, 0x2001, 0xb572, 0x2004, 0xa084, 0x0030, 0xa086, 0x0000, +- 0x000e, 0x0005, 0x0006, 0x2001, 0xb572, 0x2004, 0xa084, 0x0030, +- 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, 0x2001, 0xb572, 0x2004, +- 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, 0x0005, 0x0006, 0x2001, +- 0xb572, 0x2004, 0xa084, 0x0030, 0xa086, 0x0020, 0x000e, 0x0005, +- 0x2001, 0xb50c, 0x2004, 0xd0a4, 0x0170, 0x080c, 0x2892, 0x0036, +- 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, 0x080c, 0x2c6f, 0x001e, +- 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071, 0xb50c, 0x2e04, +- 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, 0xffef, 0x2072, 0x00ee, +- 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec, 0x0006, 0x600c, +- 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x602f, 0x0100, 0x602f, +- 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, +- 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e, 0x60f2, 0x60e3, +- 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2872, 0x6800, +- 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0, 0x000e, 0x6052, +- 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, +- 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb500, 0x6020, +- 0xa084, 0x0080, 0x0138, 0x2001, 0xb50c, 0x200c, 0xc1bd, 0x2102, +- 0x0804, 0x5bca, 0x2001, 0xb50c, 0x200c, 0xc1bc, 0x2102, 0x6028, +- 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803, 0x0090, 0x20a9, +- 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5b79, 0x2091, 0x6000, +- 0x1f04, 0x5b79, 0x2011, 0x0003, 0x080c, 0x8076, 0x2011, 0x0002, +- 0x080c, 0x8080, 0x080c, 0x7f5a, 0x2019, 0x0000, 0x080c, 0x7fe5, +- 0x6803, 0x00a0, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, +- 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff, 0x1110, 0x080c, +- 0x1e47, 0x60e3, 0x0000, 0x2001, 0xb78f, 0x2004, 0x080c, 0x2872, +- 0x60e2, 0x080c, 0x24b0, 0x6803, 0x0080, 0x20a9, 0x0384, 0x6027, +- 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0138, 0x1d04, +- 0x5baf, 0x2091, 0x6000, 0x1f04, 0x5baf, 0x0820, 0x6028, 0xa085, +- 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, +- 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, +- 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, +- 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x2069, 0x0140, 0x6020, +- 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904, 0x5c26, 0x6803, +- 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, 0x080c, +- 0x2872, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, 0x6808, 0xa005, +- 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027, 0x0400, 0x2069, +- 0xb7c5, 0x7000, 0x206a, 0x708f, 0x0026, 0x7003, 0x0001, 0x20a9, +- 0x0002, 0x1d04, 0x5c09, 0x2091, 0x6000, 0x1f04, 0x5c09, 0x0804, +- 0x5c57, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009, +- 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084, 0x1a00, 0x1508, +- 0x1d04, 0x5c15, 0x2091, 0x6000, 0x1f04, 0x5c15, 0x2011, 0x0003, +- 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, +- 0x2019, 0x0000, 0x080c, 0x7fe5, 0x6803, 0x00a0, 0x2001, 0xb79f, +- 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0xa085, 0x0001, +- 0x00b0, 0x080c, 0x24b0, 0x6803, 0x0080, 0x2069, 0x0140, 0x60e3, ++ 0x2001, 0xb79f, 0x200c, 0xa186, 0x0000, 0x0158, 0xa186, 0x0001, ++ 0x0158, 0xa186, 0x0002, 0x0158, 0xa186, 0x0003, 0x0158, 0x0804, ++ 0x5a94, 0x708f, 0x0022, 0x0040, 0x708f, 0x0021, 0x0028, 0x708f, ++ 0x0023, 0x0020, 0x708f, 0x0024, 0x6043, 0x0000, 0x60e3, 0x0000, ++ 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2872, 0x0026, 0x2011, ++ 0x0003, 0x080c, 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, ++ 0x7f59, 0x0036, 0x2019, 0x0000, 0x080c, 0x7fe4, 0x003e, 0x002e, ++ 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, ++ 0x0020, 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, ++ 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804, 0x5aa2, 0x6800, 0xa084, ++ 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4, 0x1130, 0x6803, 0x0100, ++ 0x1f04, 0x5a57, 0x080c, 0x5b20, 0x012e, 0x015e, 0x080c, 0x5ae1, ++ 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050, 0x0006, 0xa085, 0x0020, ++ 0x6052, 0x080c, 0x5b20, 0xa006, 0x8001, 0x1df0, 0x000e, 0x6052, ++ 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x5b20, 0x0016, 0x0026, ++ 0x2009, 0x00c8, 0x2011, 0x59a2, 0x080c, 0x6a22, 0x002e, 0x001e, ++ 0x2001, 0xb79f, 0x2003, 0x0004, 0x080c, 0x57e1, 0x080c, 0x5ae1, ++ 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc, 0x1100, 0x2001, 0xb79f, ++ 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb500, 0x2001, ++ 0xb79e, 0x2003, 0x0000, 0x2001, 0xb78f, 0x2003, 0x0000, 0x708f, ++ 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, 0x080c, ++ 0x2872, 0x6803, 0x0000, 0x6043, 0x0090, 0x6043, 0x0010, 0x6027, ++ 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006, ++ 0x2001, 0xb79e, 0x2004, 0xa086, 0xaaaa, 0x000e, 0x0005, 0x0006, ++ 0x2001, 0xb572, 0x2004, 0xa084, 0x0030, 0xa086, 0x0000, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0xb572, 0x2004, 0xa084, 0x0030, 0xa086, ++ 0x0030, 0x000e, 0x0005, 0x0006, 0x2001, 0xb572, 0x2004, 0xa084, ++ 0x0030, 0xa086, 0x0010, 0x000e, 0x0005, 0x0006, 0x2001, 0xb572, ++ 0x2004, 0xa084, 0x0030, 0xa086, 0x0020, 0x000e, 0x0005, 0x2001, ++ 0xb50c, 0x2004, 0xd0a4, 0x0170, 0x080c, 0x2892, 0x0036, 0x0016, ++ 0x2009, 0x0000, 0x2019, 0x0028, 0x080c, 0x2c6f, 0x001e, 0x003e, ++ 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071, 0xb50c, 0x2e04, 0x0118, ++ 0xa085, 0x0010, 0x0010, 0xa084, 0xffef, 0x2072, 0x00ee, 0x0005, ++ 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, ++ 0x6004, 0x0006, 0x6028, 0x0006, 0x602f, 0x0100, 0x602f, 0x0000, ++ 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, 0x6006, ++ 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e, 0x60f2, 0x60e3, 0x0000, ++ 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2872, 0x6800, 0xa084, ++ 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0, 0x000e, 0x6052, 0x6050, ++ 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, ++ 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb500, 0x6020, 0xa084, ++ 0x0080, 0x0138, 0x2001, 0xb50c, 0x200c, 0xc1bd, 0x2102, 0x0804, ++ 0x5bc9, 0x2001, 0xb50c, 0x200c, 0xc1bc, 0x2102, 0x6028, 0xa084, ++ 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803, 0x0090, 0x20a9, 0x0384, ++ 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5b78, 0x2091, 0x6000, 0x1f04, ++ 0x5b78, 0x2011, 0x0003, 0x080c, 0x8075, 0x2011, 0x0002, 0x080c, ++ 0x807f, 0x080c, 0x7f59, 0x2019, 0x0000, 0x080c, 0x7fe4, 0x6803, ++ 0x00a0, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, ++ 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff, 0x1120, 0x080c, 0x1e47, ++ 0x080c, 0x24b0, 0x60e3, 0x0000, 0x2001, 0xb78f, 0x2004, 0x080c, ++ 0x2872, 0x60e2, 0x6803, 0x0080, 0x20a9, 0x0384, 0x6027, 0x1e00, ++ 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0138, 0x1d04, 0x5bae, ++ 0x2091, 0x6000, 0x1f04, 0x5bae, 0x0820, 0x6028, 0xa085, 0x1e00, ++ 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, ++ 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, ++ 0x2061, 0x0100, 0x2071, 0xb500, 0x2069, 0x0140, 0x6020, 0xa084, ++ 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904, 0x5c25, 0x6803, 0x0088, ++ 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, 0x080c, 0x2872, ++ 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, 0x6808, 0xa005, 0x01c0, ++ 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027, 0x0400, 0x2069, 0xb7c5, ++ 0x7000, 0x206a, 0x708f, 0x0026, 0x7003, 0x0001, 0x20a9, 0x0002, ++ 0x1d04, 0x5c08, 0x2091, 0x6000, 0x1f04, 0x5c08, 0x0804, 0x5c56, ++ 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, ++ 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084, 0x1a00, 0x1508, 0x1d04, ++ 0x5c14, 0x2091, 0x6000, 0x1f04, 0x5c14, 0x2011, 0x0003, 0x080c, ++ 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, 0x7f59, 0x2019, ++ 0x0000, 0x080c, 0x7fe4, 0x6803, 0x00a0, 0x2001, 0xb79f, 0x2003, ++ 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0xa085, 0x0001, 0x00b0, ++ 0x080c, 0x24b0, 0x6803, 0x0080, 0x2069, 0x0140, 0x60e3, 0x0000, ++ 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, ++ 0xb78f, 0x2004, 0x080c, 0x2872, 0x60e2, 0xa006, 0x00ee, 0x00de, ++ 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, ++ 0xb500, 0x6020, 0xa084, 0x00c0, 0x01e0, 0x2011, 0x0003, 0x080c, ++ 0x8075, 0x2011, 0x0002, 0x080c, 0x807f, 0x080c, 0x7f59, 0x2019, ++ 0x0000, 0x080c, 0x7fe4, 0x2069, 0x0140, 0x6803, 0x00a0, 0x2001, ++ 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0x0804, ++ 0x5cfb, 0x2001, 0xb50c, 0x200c, 0xd1b4, 0x1160, 0xc1b5, 0x2102, ++ 0x080c, 0x598a, 0x2069, 0x0140, 0x080c, 0x24b0, 0x6803, 0x0080, ++ 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, 0x6808, ++ 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff, 0x602a, 0x6027, 0x0200, ++ 0x2069, 0xb7c5, 0x7000, 0x206a, 0x708f, 0x0027, 0x7003, 0x0001, ++ 0x20a9, 0x0002, 0x1d04, 0x5cb2, 0x2091, 0x6000, 0x1f04, 0x5cb2, ++ 0x0804, 0x5cfb, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, ++ 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0, 0x1d04, 0x5cba, 0x0006, ++ 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x68f9, 0x00ee, 0x00de, ++ 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, 0xb7f3, 0x7018, 0x00ee, ++ 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011, 0x59a2, 0x080c, 0x699c, ++ 0x2011, 0x5995, 0x080c, 0x6a5c, 0x002e, 0x2069, 0x0140, 0x60e3, + 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, +- 0x2001, 0xb78f, 0x2004, 0x080c, 0x2872, 0x60e2, 0xa006, 0x00ee, +- 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, +- 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, +- 0x2071, 0xb500, 0x6020, 0xa084, 0x00c0, 0x01e0, 0x2011, 0x0003, +- 0x080c, 0x8076, 0x2011, 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, +- 0x2019, 0x0000, 0x080c, 0x7fe5, 0x2069, 0x0140, 0x6803, 0x00a0, +- 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, +- 0x0804, 0x5cfc, 0x2001, 0xb50c, 0x200c, 0xd1b4, 0x1160, 0xc1b5, +- 0x2102, 0x080c, 0x598b, 0x2069, 0x0140, 0x080c, 0x24b0, 0x6803, +- 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, +- 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff, 0x602a, 0x6027, +- 0x0200, 0x2069, 0xb7c5, 0x7000, 0x206a, 0x708f, 0x0027, 0x7003, +- 0x0001, 0x20a9, 0x0002, 0x1d04, 0x5cb3, 0x2091, 0x6000, 0x1f04, +- 0x5cb3, 0x0804, 0x5cfc, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, +- 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0, 0x1d04, 0x5cbb, +- 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x68fa, 0x00ee, +- 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, 0xb7f3, 0x7018, +- 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011, 0x59a3, 0x080c, +- 0x699d, 0x2011, 0x5996, 0x080c, 0x6a5d, 0x002e, 0x2069, 0x0140, +- 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, +- 0x6886, 0x2001, 0xb78f, 0x2004, 0x080c, 0x2872, 0x60e2, 0x2001, +- 0xb50c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, +- 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, +- 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x7130, +- 0xd184, 0x1180, 0x2011, 0xb553, 0x2214, 0xd2ec, 0x0138, 0xc18d, +- 0x7132, 0x2011, 0xb553, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, +- 0x0904, 0x5d69, 0x7130, 0xc185, 0x7132, 0x2011, 0xb553, 0x220c, +- 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, 0x080c, 0xb059, 0x0156, +- 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, 0x007e, 0x01a0, 0xa186, +- 0x0080, 0x0188, 0x080c, 0x4faa, 0x1170, 0x8127, 0xa006, 0x0016, +- 0x2009, 0x000e, 0x080c, 0xb0dc, 0x2009, 0x0001, 0x2011, 0x0100, +- 0x080c, 0x6b1b, 0x001e, 0x8108, 0x1f04, 0x5d34, 0x015e, 0x001e, +- 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, +- 0x2c6f, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, +- 0x080c, 0x4faa, 0x1110, 0x080c, 0x4c0c, 0x8108, 0x1f04, 0x5d60, +- 0x015e, 0x080c, 0x1e47, 0x2011, 0x0003, 0x080c, 0x8076, 0x2011, +- 0x0002, 0x080c, 0x8080, 0x080c, 0x7f5a, 0x0036, 0x2019, 0x0000, +- 0x080c, 0x7fe5, 0x003e, 0x60e3, 0x0000, 0x2001, 0xb500, 0x2003, +- 0x0001, 0x080c, 0x5a08, 0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, +- 0x001e, 0x015e, 0x0005, 0x2071, 0xb5e2, 0x7003, 0x0000, 0x7007, +- 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, +- 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, +- 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005, 0x00e6, 0x2071, +- 0xb5e2, 0x6848, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, +- 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, +- 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, +- 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, +- 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, +- 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x00ee, +- 0x0005, 0x2b78, 0x2071, 0xb5e2, 0x7004, 0x0043, 0x700c, 0x0002, +- 0x5de5, 0x5ddc, 0x5ddc, 0x5ddc, 0x5ddc, 0x0005, 0x5e3b, 0x5e3c, +- 0x5e6e, 0x5e6f, 0x5e39, 0x5ebd, 0x5ec2, 0x5ef3, 0x5ef4, 0x5f0f, +- 0x5f10, 0x5f11, 0x5f12, 0x5f13, 0x5f14, 0x5fca, 0x5ff1, 0x700c, +- 0x0002, 0x5dfe, 0x5e39, 0x5e39, 0x5e3a, 0x5e3a, 0x7830, 0x7930, +- 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, 0x1510, 0x7030, 0xa10a, +- 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x12d0, 0x080c, +- 0x15df, 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, +- 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xb812, +- 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x165f, +- 0x0005, 0x080c, 0x15df, 0x0de0, 0x2d00, 0x705a, 0x080c, 0x15df, +- 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, +- 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x5e43, 0x5e46, +- 0x5e54, 0x5e6d, 0x5e6d, 0x080c, 0x5df7, 0x0005, 0x0126, 0x8001, +- 0x700e, 0x7058, 0x0006, 0x080c, 0x6344, 0x0120, 0x2091, 0x8000, +- 0x080c, 0x5df7, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, +- 0x6344, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, +- 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a, 0x1218, 0x00db, +- 0x012e, 0x0005, 0x012e, 0x080c, 0x5f15, 0x0005, 0x0005, 0x0005, +- 0x00e6, 0x2071, 0xb5e2, 0x700c, 0x0002, 0x5e7a, 0x5e7a, 0x5e7a, +- 0x5e7c, 0x5e7f, 0x00ee, 0x0005, 0x700f, 0x0001, 0x0010, 0x700f, +- 0x0002, 0x00ee, 0x0005, 0x5f15, 0x5f15, 0x5f31, 0x5f15, 0x60ae, +- 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f31, 0x60f0, 0x6133, +- 0x617c, 0x6190, 0x5f15, 0x5f15, 0x5f4d, 0x5f31, 0x5f15, 0x5f15, +- 0x5fa7, 0x623c, 0x6257, 0x5f15, 0x5f4d, 0x5f15, 0x5f15, 0x5f15, +- 0x5f15, 0x5f9d, 0x6257, 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f15, +- 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f61, 0x5f15, 0x5f15, 0x5f15, +- 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x6362, 0x5f15, +- 0x5f15, 0x5f15, 0x5f15, 0x5f15, 0x5f76, 0x7020, 0x2068, 0x080c, +- 0x160f, 0x0005, 0x700c, 0x0002, 0x5ec9, 0x5ecc, 0x5eda, 0x5ef2, +- 0x5ef2, 0x080c, 0x5df7, 0x0005, 0x0126, 0x8001, 0x700e, 0x7058, +- 0x0006, 0x080c, 0x6344, 0x0120, 0x2091, 0x8000, 0x080c, 0x5df7, +- 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, 0x6344, 0x7058, +- 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, +- 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b, 0x012e, 0x0005, +- 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, 0x5f15, 0x5f31, 0x609a, +- 0x5f15, 0x5f31, 0x5f15, 0x5f31, 0x5f31, 0x5f15, 0x5f31, 0x609a, +- 0x5f31, 0x5f31, 0x5f31, 0x5f31, 0x5f31, 0x5f15, 0x5f31, 0x609a, +- 0x5f15, 0x5f15, 0x5f31, 0x5f15, 0x5f15, 0x5f15, 0x5f31, 0x0005, +- 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x7007, 0x0001, 0x6838, +- 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x5409, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, +- 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5409, 0x012e, +- 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x5409, 0x012e, 0x0005, 0x7007, +- 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x5409, 0x012e, 0x0005, 0x6834, 0x8007, 0xa084, +- 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x605a, +- 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x605a, +- 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x5f23, 0x8001, +- 0x1120, 0x7007, 0x0001, 0x0804, 0x6077, 0x7007, 0x0006, 0x7012, +- 0x2d00, 0x7016, 0x701a, 0x704b, 0x6077, 0x0005, 0x6834, 0x8007, +- 0xa084, 0x00ff, 0xa086, 0x0001, 0x1904, 0x5f23, 0x7007, 0x0001, +- 0x2009, 0xb531, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, +- 0x683a, 0x6853, 0x0000, 0x080c, 0x4d83, 0x1108, 0x0005, 0x0126, +- 0x2091, 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x5409, +- 0x012e, 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, +- 0xa086, 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x626f, 0x2d00, +- 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, +- 0xb60d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x5f3f, +- 0x6a84, 0xa28a, 0x0002, 0x1a04, 0x5f3f, 0x82ff, 0x1138, 0x6888, +- 0x698c, 0xa105, 0x0118, 0x2001, 0x602d, 0x0018, 0xa280, 0x6023, +- 0x2005, 0x70c6, 0x7010, 0xa015, 0x0904, 0x600f, 0x080c, 0x15df, +- 0x1118, 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, +- 0x2c05, 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, +- 0xa00e, 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, +- 0x0108, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, +- 0x1643, 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, +- 0x7007, 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x160f, 0x7014, +- 0x2068, 0x0804, 0x5f3f, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, +- 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x5fca, 0x7014, +- 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, +- 0xa105, 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, +- 0x0904, 0x626f, 0x04b8, 0x6025, 0x6029, 0x0002, 0x0011, 0x0007, +- 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, +- 0x0004, 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, +- 0x6804, 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, +- 0x700c, 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, +- 0x7e0e, 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, +- 0x0c78, 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, +- 0x00fe, 0x0005, 0x2009, 0xb531, 0x210c, 0x81ff, 0x1198, 0x6838, +- 0xa084, 0x00ff, 0x683a, 0x080c, 0x4c65, 0x1108, 0x0005, 0x080c, +- 0x54dc, 0x0126, 0x2091, 0x8000, 0x080c, 0x9ec6, 0x080c, 0x5409, +- 0x012e, 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, +- 0xb531, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838, +- 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x4d27, 0x1108, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x5409, +- 0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001, +- 0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, +- 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014, +- 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001, +- 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, +- 0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff, +- 0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c, +- 0x00ff, 0x080c, 0x4faa, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x50a9, +- 0x006e, 0x0088, 0x0046, 0x2011, 0xb50c, 0x2224, 0xc484, 0x2412, +- 0x004e, 0x00c6, 0x080c, 0x4faa, 0x1110, 0x080c, 0x520a, 0x8108, +- 0x1f04, 0x60da, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x160f, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x5409, 0x012e, 0x0005, +- 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xb553, 0x2004, +- 0xd0a4, 0x0580, 0x2061, 0xb874, 0x6100, 0xd184, 0x0178, 0x6858, +- 0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005, +- 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, +- 0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, +- 0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, +- 0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, +- 0x0804, 0x6333, 0x012e, 0x0804, 0x632d, 0x012e, 0x0804, 0x6327, +- 0x012e, 0x0804, 0x632a, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, +- 0x2001, 0xb553, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xb874, 0x6000, +- 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484, +- 0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100, +- 0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0, +- 0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, +- 0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004, +- 0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000, +- 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x6333, 0x012e, 0x0804, +- 0x6330, 0x012e, 0x0804, 0x632d, 0x0126, 0x2091, 0x8000, 0x7007, +- 0x0001, 0x2061, 0xb874, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, +- 0x0220, 0x630a, 0x012e, 0x0804, 0x6341, 0x012e, 0x0804, 0x6330, +- 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, +- 0x0148, 0x00c6, 0x2061, 0xb874, 0x6000, 0xa084, 0xfcff, 0x6002, +- 0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598, +- 0x2001, 0xb531, 0x2004, 0xa005, 0x0118, 0x080c, 0x9e17, 0x0068, +- 0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950, +- 0x6156, 0x2009, 0x0041, 0x080c, 0x8646, 0x6958, 0xa18c, 0xff00, +- 0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff, +- 0x080c, 0x6b1b, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xb874, +- 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, +- 0x012e, 0x0804, 0x6333, 0x00ce, 0x012e, 0x0804, 0x632d, 0x6954, +- 0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045, +- 0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xb50c, 0x200c, 0xc194, +- 0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18, +- 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4faa, 0x1960, 0x6000, +- 0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024, +- 0x2001, 0xb7b6, 0x2004, 0x6016, 0x0804, 0x61cb, 0x685c, 0xa065, +- 0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xb531, 0x2004, 0xa005, +- 0x0150, 0x080c, 0x9e17, 0x8eff, 0x0118, 0x2e60, 0x080c, 0x9e17, +- 0x00ee, 0x0804, 0x61cb, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60, +- 0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874, +- 0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x080c, +- 0x7174, 0x00ee, 0x0804, 0x61cb, 0x2061, 0xb874, 0x6000, 0xd084, +- 0x0190, 0xd08c, 0x1904, 0x6341, 0x0126, 0x2091, 0x8000, 0x6204, +- 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x6341, 0x012e, 0x6853, +- 0x0016, 0x0804, 0x633a, 0x6853, 0x0007, 0x0804, 0x633a, 0x6834, +- 0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x5f23, 0x0078, 0x2030, +- 0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006, +- 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x626f, 0x0005, 0x00e6, +- 0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xb531, 0x210c, 0x81ff, +- 0x1904, 0x62ed, 0x2009, 0xb50c, 0x210c, 0xd194, 0x1904, 0x6317, +- 0x6848, 0x2070, 0xae82, 0xbd00, 0x0a04, 0x62e1, 0x2001, 0xb517, +- 0x2004, 0xae02, 0x1a04, 0x62e1, 0x711c, 0xa186, 0x0006, 0x1904, +- 0x62d0, 0x7018, 0xa005, 0x0904, 0x62ed, 0x2004, 0xd0e4, 0x1904, +- 0x6312, 0x2061, 0xb874, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, +- 0x1550, 0x7020, 0xd0dc, 0x1904, 0x631a, 0x6853, 0x0000, 0x6803, +- 0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4, +- 0x1904, 0x631d, 0x2e60, 0x080c, 0x6a77, 0x012e, 0x00ee, 0x0005, +- 0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4, +- 0x1904, 0x631d, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853, +- 0x0006, 0x0804, 0x633a, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8, +- 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4faa, 0x15d8, 0x6000, +- 0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002, +- 0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853, +- 0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xb572, 0x2004, +- 0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xbd00, 0x02c0, 0x605c, +- 0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005, +- 0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086, +- 0x0007, 0x1904, 0x627a, 0x7003, 0x0002, 0x0804, 0x627a, 0x6853, +- 0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853, +- 0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002, +- 0x6017, 0x0014, 0x080c, 0xacd4, 0x012e, 0x00ee, 0x0005, 0x2009, +- 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, +- 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, +- 0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x5409, 0x012e, +- 0x0005, 0x080c, 0x160f, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, +- 0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070, +- 0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076, +- 0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x6a6e, +- 0x00de, 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x7007, +- 0x0001, 0x6a44, 0xa282, 0x0004, 0x1a04, 0x63ad, 0xd284, 0x0170, +- 0x6a4c, 0xa290, 0xb635, 0x2204, 0xa065, 0x6004, 0x05e0, 0x8007, +- 0xa084, 0x00ff, 0xa084, 0x0006, 0x1108, 0x04a8, 0x2c10, 0x080c, +- 0x85c1, 0x1118, 0x080c, 0x9ed0, 0x05a0, 0x621a, 0x6844, 0x0002, +- 0x638c, 0x6391, 0x6394, 0x639a, 0x2019, 0x0002, 0x080c, 0xb059, +- 0x0060, 0x080c, 0xaff0, 0x0048, 0x2019, 0x0002, 0x6950, 0x080c, +- 0xb00b, 0x0018, 0x6950, 0x080c, 0xaff0, 0x080c, 0x8617, 0x6857, +- 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x5409, 0x012e, 0x001e, +- 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, 0x6857, 0x0006, 0x0c88, +- 0x6857, 0x0002, 0x0c70, 0x6857, 0x0005, 0x0c58, 0x6857, 0x0004, +- 0x0c40, 0x6857, 0x0007, 0x0c28, 0x00d6, 0x2011, 0x0004, 0x2204, +- 0xa085, 0x8002, 0x2012, 0x00de, 0x0005, 0x20e1, 0x0002, 0x3d08, +- 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0118, 0xa086, 0x1000, +- 0x1570, 0x20e1, 0x0000, 0x3d00, 0xa094, 0xff00, 0x8217, 0xa084, +- 0xf000, 0xa086, 0x3000, 0x1160, 0xa184, 0xff00, 0x8007, 0xa086, +- 0x0008, 0x11e8, 0x080c, 0x2dbf, 0x11d0, 0x080c, 0x6604, 0x0098, +- 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x1108, 0x3e60, 0xac84, 0x0007, +- 0x1170, 0xac82, 0xbd00, 0x0258, 0x685c, 0xac02, 0x1240, 0x2009, +- 0x0047, 0x080c, 0x8646, 0x7a1c, 0xd284, 0x1938, 0x0005, 0xa016, +- 0x080c, 0x185e, 0x0cc0, 0x0cd8, 0x781c, 0xd08c, 0x0500, 0x0156, +- 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, +- 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8, 0x080c, 0x647f, +- 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c, 0x649b, 0x014e, +- 0x013e, 0x015e, 0x2009, 0xb7e8, 0x2104, 0xa005, 0x1108, 0x0005, +- 0x080c, 0x7174, 0x0ce0, 0xa484, 0x7000, 0x1548, 0x080c, 0x647f, +- 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x0d10, 0x00a0, +- 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, 0x1e6e, 0x080c, 0x24b0, +- 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x004e, 0x005e, +- 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, 0xb3d3, 0x20e1, 0x3000, +- 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e, 0x0880, 0x0439, +- 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x1d68, 0x080c, +- 0xb3d3, 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056, 0x080c, 0x6875, +- 0x005e, 0x0c40, 0x2001, 0xb50e, 0x2004, 0xd08c, 0x0178, 0x2001, +- 0xb500, 0x2004, 0xa086, 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, +- 0x8048, 0x2518, 0x080c, 0x3ecd, 0x003e, 0x002e, 0x0005, 0xa484, +- 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, 0x001f, 0xa084, 0x03f8, +- 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x0005, +- 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, +- 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, +- 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, 0x6709, 0x0005, 0xa196, +- 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118, 0x080c, 0x4490, +- 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80, 0x080c, 0x67b5, +- 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x65fe, 0x7110, 0xa18c, +- 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, 0xa196, 0x0023, 0x1904, +- 0x65fe, 0xa08e, 0x0023, 0x1570, 0x080c, 0x6850, 0x0904, 0x65fe, +- 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150, 0x7034, 0xa005, +- 0x1904, 0x65fe, 0x2009, 0x0015, 0x080c, 0x8646, 0x0804, 0x65fe, +- 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130, 0x2009, 0x0015, +- 0x080c, 0x8646, 0x0804, 0x65fe, 0xa08e, 0x0100, 0x1904, 0x65fe, +- 0x7034, 0xa005, 0x1904, 0x65fe, 0x2009, 0x0016, 0x080c, 0x8646, +- 0x0804, 0x65fe, 0xa08e, 0x0022, 0x1904, 0x65fe, 0x7030, 0xa08e, +- 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5, 0x68d6, 0x7100, +- 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6, 0x2079, 0x0100, +- 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016, 0x2008, 0x080c, +- 0x2847, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, 0x080c, 0x281d, +- 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, 0x2071, 0xb500, +- 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, 0x65fe, 0x2009, 0x0017, +- 0x0804, 0x65c4, 0xa08e, 0x0400, 0x1158, 0x7034, 0xa005, 0x1904, +- 0x65fe, 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030, 0x0804, 0x65c4, +- 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, 0x1904, 0x65fe, 0x2009, +- 0x0018, 0x0804, 0x65c4, 0xa08e, 0x2010, 0x1120, 0x2009, 0x0019, +- 0x0804, 0x65c4, 0xa08e, 0x2110, 0x1120, 0x2009, 0x001a, 0x0804, +- 0x65c4, 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005, 0x1904, 0x65fe, +- 0x2009, 0x001b, 0x0804, 0x65c4, 0xa08e, 0x5000, 0x1140, 0x7034, +- 0xa005, 0x1904, 0x65fe, 0x2009, 0x001c, 0x0804, 0x65c4, 0xa08e, +- 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x65c4, 0xa08e, 0x1200, +- 0x1140, 0x7034, 0xa005, 0x1904, 0x65fe, 0x2009, 0x0024, 0x0804, +- 0x65c4, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1118, 0x2009, 0x002d, +- 0x04d8, 0xa08c, 0xff00, 0xa18e, 0x5300, 0x1118, 0x2009, 0x002a, +- 0x0498, 0xa08e, 0x0f00, 0x1118, 0x2009, 0x0020, 0x0468, 0xa08e, +- 0x5300, 0x1108, 0x00d8, 0xa08e, 0x6104, 0x11c0, 0x2011, 0xbb8d, +- 0x8208, 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, +- 0x8015, 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x3ecd, 0x004e, +- 0x8108, 0x1f04, 0x65a7, 0x2009, 0x0023, 0x0070, 0xa08e, 0x6000, +- 0x1118, 0x2009, 0x003f, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, +- 0x0045, 0x0010, 0x2009, 0x001d, 0x0016, 0x2011, 0xbb83, 0x2204, +- 0x8211, 0x220c, 0x080c, 0x281d, 0x1598, 0x080c, 0x4f4e, 0x1580, +- 0x6612, 0x6516, 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, +- 0x1158, 0x6870, 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, +- 0x1180, 0x6000, 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, +- 0xa606, 0x1138, 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, +- 0x0068, 0x00c6, 0x080c, 0x85c1, 0x0168, 0x001e, 0x611a, 0x601f, +- 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x8646, 0x00ce, 0x0005, +- 0x001e, 0x0ce0, 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6658, +- 0x1904, 0x6655, 0xa28e, 0x0033, 0x11e8, 0x080c, 0x6850, 0x0904, +- 0x6655, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, +- 0xa005, 0x15d8, 0x2009, 0x0015, 0x080c, 0x8646, 0x04b0, 0xa08e, +- 0x0100, 0x1598, 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, +- 0x8646, 0x0458, 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, +- 0x1520, 0x2009, 0x0038, 0x0016, 0x2011, 0xbb83, 0x2204, 0x8211, +- 0x220c, 0x080c, 0x281d, 0x11c0, 0x080c, 0x4f4e, 0x11a8, 0x6612, +- 0x6516, 0x00c6, 0x080c, 0x85c1, 0x0170, 0x001e, 0x611a, 0x080c, +- 0xa021, 0x601f, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x8646, +- 0x080c, 0x7174, 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, +- 0x00f6, 0x00d6, 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, +- 0x0006, 0x2079, 0x0030, 0x2069, 0x0200, 0x080c, 0x1f2d, 0x1590, +- 0x080c, 0x1dd2, 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, +- 0xa182, 0x0011, 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, +- 0x2099, 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, +- 0x7a0c, 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, +- 0xa08a, 0x0140, 0x1a0c, 0x1515, 0x80ac, 0x20e1, 0x6000, 0x2099, +- 0x020a, 0x53a5, 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, +- 0xa294, 0x0070, 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, +- 0x002e, 0x00de, 0x00fe, 0x0005, 0xa016, 0x080c, 0x185e, 0xa085, +- 0x0001, 0x0c80, 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, +- 0x000e, 0x0005, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, +- 0x00ff, 0x1198, 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, +- 0x6704, 0xa596, 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, +- 0xfffc, 0x1118, 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, +- 0xb535, 0x231c, 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, +- 0x2071, 0xb635, 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, +- 0xb6b6, 0x2e1c, 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, +- 0x0080, 0x2368, 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, +- 0x1120, 0xa346, 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, +- 0x0d58, 0x8420, 0x8e70, 0x1f04, 0x66e1, 0x82ff, 0x1118, 0xa085, +- 0x0001, 0x0018, 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, +- 0x0005, 0xa084, 0x0007, 0x000a, 0x0005, 0x6715, 0x6715, 0x6715, +- 0x6862, 0x6715, 0x6716, 0x672b, 0x67a0, 0x0005, 0x7110, 0xd1bc, +- 0x0188, 0x7120, 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xbd00, +- 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, +- 0x080c, 0x8646, 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x677e, +- 0x7110, 0xd1bc, 0x1904, 0x677e, 0x2011, 0xbb83, 0x2204, 0x8211, +- 0x220c, 0x080c, 0x281d, 0x1904, 0x677e, 0x080c, 0x4f4e, 0x15f0, +- 0x6612, 0x6516, 0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, +- 0x8217, 0xa286, 0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, +- 0x0006, 0x11a0, 0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x85c1, +- 0x001e, 0x0530, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, +- 0x6152, 0x2009, 0x0044, 0x080c, 0x8646, 0x00c0, 0x00c6, 0x080c, +- 0x85c1, 0x001e, 0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, +- 0xa286, 0x0004, 0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, +- 0x6003, 0x0001, 0x080c, 0x6cd4, 0x080c, 0x7174, 0x00ce, 0x0005, +- 0x2001, 0xb50d, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, +- 0x3ecd, 0x00c6, 0x080c, 0x9ed0, 0x001e, 0x0d80, 0x611a, 0x601f, +- 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, +- 0x0001, 0x6007, 0x0041, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x08f0, +- 0x7110, 0xd1bc, 0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, +- 0xac82, 0xbd00, 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, +- 0x2009, 0x0045, 0x080c, 0x8646, 0x0005, 0x0006, 0x080c, 0x2dbf, +- 0x000e, 0x1168, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, +- 0x1130, 0xa084, 0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, +- 0x67ce, 0x67cf, 0x67ce, 0x67ce, 0x6838, 0x6844, 0x0005, 0x7110, +- 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x6837, 0x700c, 0x7108, +- 0x080c, 0x281d, 0x1904, 0x6837, 0x080c, 0x4f4e, 0x1904, 0x6837, +- 0x6612, 0x6516, 0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, +- 0xa186, 0x0004, 0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, +- 0x6850, 0x00ce, 0x0904, 0x6837, 0x00c6, 0x080c, 0x85c1, 0x001e, +- 0x05f0, 0x611a, 0x080c, 0xa021, 0x601f, 0x0002, 0x7120, 0x610a, +- 0x2009, 0x0088, 0x080c, 0x8646, 0x0490, 0xa28c, 0x00ff, 0xa186, +- 0x0006, 0x0160, 0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, +- 0xa286, 0x0004, 0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, +- 0x85c1, 0x001e, 0x01e0, 0x611a, 0x080c, 0xa021, 0x601f, 0x0005, +- 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, 0x8646, 0x0080, 0x00c6, +- 0x080c, 0x85c1, 0x001e, 0x0158, 0x611a, 0x080c, 0xa021, 0x601f, +- 0x0004, 0x7120, 0x610a, 0x2009, 0x0001, 0x080c, 0x8646, 0x0005, +- 0x7110, 0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, +- 0x0089, 0x080c, 0x8646, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, +- 0x0130, 0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x8646, 0x0005, +- 0x7020, 0x2060, 0xac84, 0x0007, 0x1158, 0xac82, 0xbd00, 0x0240, +- 0x2001, 0xb517, 0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, +- 0xa006, 0x0ce8, 0x7110, 0xd1bc, 0x1178, 0x7024, 0x2060, 0xac84, +- 0x0007, 0x1150, 0xac82, 0xbd00, 0x0238, 0x685c, 0xac02, 0x1220, +- 0x2009, 0x0051, 0x080c, 0x8646, 0x0005, 0x2031, 0x0105, 0x0069, +- 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, 0x2031, 0x0207, 0x0029, +- 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6, 0x00d6, 0x00f6, +- 0x7000, 0xa084, 0xf000, 0xa086, 0xc000, 0x05b0, 0x080c, 0x85c1, +- 0x0598, 0x0066, 0x00c6, 0x0046, 0x2011, 0xbb83, 0x2204, 0x8211, +- 0x220c, 0x080c, 0x281d, 0x1580, 0x080c, 0x4f4e, 0x1568, 0x6612, +- 0x6516, 0x2c00, 0x004e, 0x00ce, 0x601a, 0x080c, 0xa021, 0x080c, +- 0x15f8, 0x01f0, 0x2d00, 0x6056, 0x6803, 0x0000, 0x6837, 0x0000, +- 0x6c3a, 0xadf8, 0x000f, 0x20a9, 0x000e, 0x2fa0, 0x2e98, 0x53a3, +- 0x006e, 0x6612, 0x6007, 0x003e, 0x601f, 0x0001, 0x6003, 0x0001, +- 0x080c, 0x6cd4, 0x080c, 0x7174, 0x00fe, 0x00de, 0x00ce, 0x0005, +- 0x080c, 0x8617, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x2071, +- 0xb7f3, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7076, +- 0x7012, 0x7017, 0xbd00, 0x7007, 0x0000, 0x7026, 0x702b, 0x7d92, +- 0x7032, 0x7037, 0x7df2, 0x703b, 0xffff, 0x703f, 0xffff, 0x7042, +- 0x7047, 0x444c, 0x704a, 0x705b, 0x6a2c, 0x2001, 0xb7a1, 0x2003, +- 0x0003, 0x2001, 0xb7a3, 0x2003, 0x0100, 0x3a00, 0xa084, 0x0005, +- 0x706e, 0x0005, 0x2071, 0xb7f3, 0x1d04, 0x698c, 0x2091, 0x6000, +- 0x700c, 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, 0x0001, +- 0x0126, 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, 0x7142, +- 0x1110, 0x7044, 0x080f, 0x00c6, 0x2061, 0xb500, 0x6034, 0x00ce, +- 0xd0cc, 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, 0x0150, +- 0x706e, 0x2011, 0x8043, 0x2018, 0x080c, 0x3ecd, 0x0018, 0x0126, +- 0x2091, 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, 0x7022, +- 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, 0x1110, +- 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0xa00d, +- 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, +- 0x7132, 0x0128, 0xa184, 0x007f, 0x090c, 0x7e37, 0x0010, 0x7034, +- 0x080f, 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, 0x703c, +- 0xa005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, 0x0168, +- 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e, +- 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, 0x01d8, +- 0x0016, 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, 0x1138, +- 0x7073, 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, 0x001e, +- 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, +- 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x69b2, 0x69b3, +- 0x69cb, 0x00e6, 0x2071, 0xb7f3, 0x7018, 0xa005, 0x1120, 0x711a, +- 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, +- 0xb7f3, 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, +- 0x0005, 0x00e6, 0x2071, 0xb7f3, 0x6088, 0xa102, 0x0208, 0x618a, +- 0x00ee, 0x0005, 0x0005, 0x7110, 0x080c, 0x4faa, 0x1158, 0x6088, +- 0x8001, 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x7174, 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, 0x7007, +- 0x0002, 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, +- 0x603c, 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, 0x9f0f, +- 0x6014, 0xa005, 0x0500, 0x8001, 0x6016, 0x11e8, 0x611c, 0xa186, +- 0x0003, 0x0118, 0xa186, 0x0006, 0x11a0, 0x6010, 0x2068, 0x6854, +- 0xa08a, 0x199a, 0x0270, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, +- 0x0210, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, +- 0x0010, 0x080c, 0x99df, 0x012e, 0xac88, 0x0018, 0x7116, 0x2001, +- 0xed00, 0xa102, 0x0220, 0x7017, 0xbd00, 0x7007, 0x0000, 0x0005, +- 0x00e6, 0x2071, 0xb7f3, 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, +- 0x0005, 0x2001, 0xb7fc, 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, +- 0xb7f3, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, 0x2011, 0xb7ff, +- 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0xb7f3, 0x711a, 0x721e, +- 0x700b, 0x0009, 0x00ee, 0x0005, 0x00c6, 0x0026, 0x7054, 0x8000, +- 0x7056, 0x2061, 0xb7a1, 0x6008, 0xa086, 0x0000, 0x0158, 0x7068, +- 0x6032, 0x7064, 0x602e, 0x7060, 0x602a, 0x705c, 0x6026, 0x2c10, +- 0x080c, 0x1643, 0x002e, 0x00ce, 0x0005, 0x0006, 0x0016, 0x00c6, +- 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x68fa, 0x00fe, 0x00ee, 0x00de, +- 0x00ce, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0xb7f3, 0x7176, +- 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, +- 0xb7f3, 0x7078, 0xa206, 0x1110, 0x7076, 0x707a, 0x000e, 0x00ee, +- 0x0005, 0x00c6, 0x2061, 0xb874, 0x00ce, 0x0005, 0xa184, 0x000f, +- 0x8003, 0x8003, 0x8003, 0xa080, 0xb874, 0x2060, 0x0005, 0x6854, +- 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0xa005, 0x1150, 0x00c6, +- 0x2061, 0xb874, 0x6014, 0x00ce, 0xa005, 0x1138, 0x2001, 0x001e, +- 0x0020, 0xa08e, 0xffff, 0x1108, 0xa006, 0x8003, 0x800b, 0x810b, +- 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x05e8, +- 0xd0b4, 0x1138, 0xd0bc, 0x1550, 0x2009, 0x0006, 0x080c, 0x6af2, +- 0x0005, 0xd0fc, 0x0138, 0xa084, 0x0003, 0x0120, 0xa086, 0x0003, +- 0x1904, 0x6aec, 0x6020, 0xd0d4, 0x0130, 0xc0d4, 0x6022, 0x6860, +- 0x602a, 0x685c, 0x602e, 0x2009, 0xb574, 0x2104, 0xd084, 0x0138, +- 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x8646, 0x0005, 0x87ff, +- 0x1120, 0x2009, 0x0043, 0x080c, 0x8646, 0x0005, 0xd0fc, 0x0130, +- 0xa084, 0x0003, 0x0118, 0xa086, 0x0003, 0x11f0, 0x87ff, 0x1120, +- 0x2009, 0x0042, 0x080c, 0x8646, 0x0005, 0xd0fc, 0x0160, 0xa084, +- 0x0003, 0xa08e, 0x0002, 0x0148, 0x87ff, 0x1120, 0x2009, 0x0041, +- 0x080c, 0x8646, 0x0005, 0x0061, 0x0ce8, 0x87ff, 0x1dd8, 0x2009, +- 0x0043, 0x080c, 0x8646, 0x0cb0, 0x2009, 0x0004, 0x0019, 0x0005, +- 0x2009, 0x0001, 0x00d6, 0x6010, 0xa0ec, 0xf000, 0x0510, 0x2068, +- 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x1188, 0x694c, 0xa18c, +- 0x8100, 0xa18e, 0x8100, 0x1158, 0x00c6, 0x2061, 0xb874, 0x6200, +- 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, 0x080c, +- 0x5409, 0x6010, 0xa06d, 0x0076, 0x2039, 0x0000, 0x190c, 0x6a77, +- 0x007e, 0x00de, 0x0005, 0x0156, 0x00c6, 0x2061, 0xb874, 0x6000, +- 0x81ff, 0x0110, 0xa205, 0x0008, 0xa204, 0x6002, 0x00ce, 0x015e, +- 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808, 0xa005, 0x0120, 0x8001, +- 0x680a, 0xa085, 0x0001, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, +- 0x8086, 0x818e, 0x1208, 0xa200, 0x1f04, 0x6b38, 0x8086, 0x818e, +- 0x0005, 0x0156, 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, +- 0x8213, 0x818d, 0x0228, 0xa11a, 0x1220, 0x1f04, 0x6b48, 0x0028, +- 0xa11a, 0x2308, 0x8210, 0x1f04, 0x6b48, 0x0006, 0x3200, 0xa084, +- 0xefff, 0x2080, 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, +- 0x1000, 0x0cb8, 0x0126, 0x2091, 0x2800, 0x2079, 0xb7e0, 0x012e, +- 0x00d6, 0x2069, 0xb7e0, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, +- 0xa085, 0x8001, 0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, +- 0x7804, 0xa084, 0x0007, 0x0002, 0x6b86, 0x6ba7, 0x6bfa, 0x6b8c, +- 0x6ba7, 0x6b86, 0x6b84, 0x6b84, 0x080c, 0x1515, 0x080c, 0x6a11, +- 0x080c, 0x7174, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, +- 0x0005, 0x2011, 0x4add, 0x080c, 0x699d, 0x7828, 0xa092, 0x00c8, +- 0x1228, 0x8000, 0x782a, 0x080c, 0x4b17, 0x0c88, 0x080c, 0x4add, +- 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, +- 0x6a11, 0x3c00, 0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, +- 0x000e, 0x20e0, 0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, +- 0x0000, 0x7824, 0xa065, 0x090c, 0x1515, 0x2009, 0x0013, 0x080c, +- 0x8646, 0x00ce, 0x0005, 0x3900, 0xa082, 0xb92c, 0x1210, 0x080c, +- 0x832c, 0x00c6, 0x7824, 0xa065, 0x090c, 0x1515, 0x7804, 0xa086, +- 0x0004, 0x0904, 0x6c3a, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, +- 0x782a, 0x00ce, 0x080c, 0x7d6e, 0x0c20, 0x6104, 0xa186, 0x0003, +- 0x1188, 0x00e6, 0x2071, 0xb500, 0x70e0, 0x00ee, 0xd08c, 0x0150, +- 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x080c, 0x4b20, +- 0x00ee, 0x00ce, 0x080c, 0xb438, 0x2009, 0x0014, 0x080c, 0x8646, +- 0x00ce, 0x0838, 0x2001, 0xb7fc, 0x2003, 0x0000, 0x62c0, 0x82ff, +- 0x1160, 0x782b, 0x0000, 0x7824, 0xa065, 0x090c, 0x1515, 0x2009, +- 0x0013, 0x080c, 0x869a, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, +- 0xa082, 0xb92c, 0x1210, 0x080c, 0x832c, 0x7824, 0xa005, 0x090c, +- 0x1515, 0x781c, 0xa06d, 0x090c, 0x1515, 0x6800, 0xc0dc, 0x6802, +- 0x7924, 0x2160, 0x080c, 0x8617, 0x693c, 0x81ff, 0x090c, 0x1515, +- 0x8109, 0x693e, 0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, +- 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, +- 0x7174, 0x0888, 0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, +- 0x0110, 0x0804, 0x6bd3, 0x7808, 0xac06, 0x0904, 0x6bd3, 0x080c, +- 0x7091, 0x080c, 0x6cd4, 0x00ce, 0x080c, 0x7174, 0x0804, 0x6bc1, +- 0x00c6, 0x6027, 0x0002, 0x62c8, 0x60c4, 0xa205, 0x1178, 0x793c, +- 0xa1e5, 0x0000, 0x0130, 0x2009, 0x0049, 0x080c, 0x8646, 0x00ce, +- 0x0005, 0x2011, 0xb7ff, 0x2013, 0x0000, 0x0cc8, 0x3908, 0xa192, +- 0xb92c, 0x1210, 0x080c, 0x832c, 0x793c, 0x81ff, 0x0d90, 0x7944, +- 0xa192, 0x7530, 0x12b8, 0x8108, 0x7946, 0x793c, 0xa188, 0x0007, +- 0x210c, 0xa18e, 0x0006, 0x1138, 0x6014, 0xa084, 0x0184, 0xa085, +- 0x0012, 0x6016, 0x08e0, 0x6014, 0xa084, 0x0184, 0xa085, 0x0016, +- 0x6016, 0x08a8, 0x7848, 0xc085, 0x784a, 0x0888, 0x0006, 0x0016, +- 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, +- 0xb7e0, 0x6020, 0x8000, 0x6022, 0x6010, 0xa005, 0x0148, 0xa080, +- 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, +- 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069, 0xb7e0, 0x6000, 0xd0d4, +- 0x0168, 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x1110, 0x2c00, +- 0x681e, 0x6804, 0xa084, 0x0007, 0x0804, 0x717a, 0xc0d5, 0x6002, +- 0x6818, 0xa005, 0x0158, 0x6056, 0x605b, 0x0000, 0x0006, 0x2c00, +- 0x681a, 0x00de, 0x685a, 0x2069, 0xb7e0, 0x0c18, 0x6056, 0x605a, +- 0x2c00, 0x681a, 0x681e, 0x08e8, 0x0006, 0x0016, 0x00c6, 0x0126, +- 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0xb7e0, 0x6020, +- 0x8000, 0x6022, 0x6008, 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, +- 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x610e, 0x610a, +- 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08, 0x2061, 0xb7e0, 0x6034, +- 0xa005, 0x0130, 0xa080, 0x0003, 0x2102, 0x6136, 0x00ce, 0x0005, +- 0x613a, 0x6136, 0x0cd8, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, +- 0x0066, 0x0056, 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, 0xa02e, +- 0x2071, 0xb7e0, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, +- 0x0904, 0x6d7c, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, +- 0x6d77, 0x87ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x6d77, 0x703c, +- 0xac06, 0x1190, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe5, 0x7033, +- 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, +- 0x0000, 0x003e, 0x2029, 0x0001, 0x7038, 0xac36, 0x1110, 0x660c, +- 0x763a, 0x7034, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, +- 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, +- 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0x9c54, +- 0x01c8, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x1580, 0x6837, +- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c, +- 0x9ec6, 0x080c, 0xb374, 0x080c, 0x5409, 0x007e, 0x003e, 0x001e, +- 0x080c, 0x9e0b, 0x080c, 0x9e17, 0x00ce, 0x0804, 0x6d17, 0x2c78, +- 0x600c, 0x2060, 0x0804, 0x6d17, 0x85ff, 0x0120, 0x0036, 0x080c, +- 0x7231, 0x003e, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e, +- 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, +- 0xa086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0076, 0x080c, 0xb374, +- 0x080c, 0xb08d, 0x007e, 0x003e, 0x001e, 0x08a0, 0x601c, 0xa086, +- 0x000a, 0x0904, 0x6d61, 0x0804, 0x6d5f, 0x0006, 0x0066, 0x00c6, +- 0x00d6, 0x00f6, 0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, +- 0xb7e0, 0x7838, 0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, +- 0x783c, 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe5, +- 0x7833, 0x0000, 0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, +- 0x784b, 0x0000, 0x003e, 0x080c, 0x9c54, 0x0178, 0x6010, 0x2068, +- 0x601c, 0xa086, 0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, +- 0x0000, 0x080c, 0x5409, 0x080c, 0x9e0b, 0x080c, 0x9e17, 0x000e, +- 0x0888, 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, +- 0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xb08d, +- 0x0c60, 0x601c, 0xa086, 0x000a, 0x0d08, 0x08f0, 0x0016, 0x0026, +- 0x0086, 0x2041, 0x0000, 0x0099, 0x080c, 0x6ec4, 0x008e, 0x002e, +- 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0xb7e0, 0x2091, 0x8000, +- 0x080c, 0x6f51, 0x080c, 0x6fc3, 0x012e, 0x00fe, 0x0005, 0x00f6, +- 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091, +- 0x8000, 0x2071, 0xb7e0, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904, +- 0x6e9a, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x6e95, +- 0x88ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x6e95, 0x7024, 0xac06, +- 0x1538, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x6a11, +- 0x080c, 0x7d7b, 0x68c3, 0x0000, 0x080c, 0x8247, 0x7027, 0x0000, ++ 0x2001, 0xb78f, 0x2004, 0x080c, 0x2872, 0x60e2, 0x2001, 0xb50c, ++ 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x0046, ++ 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x7130, 0xd184, ++ 0x1180, 0x2011, 0xb553, 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, ++ 0x2011, 0xb553, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, 0x0904, ++ 0x5d68, 0x7130, 0xc185, 0x7132, 0x2011, 0xb553, 0x220c, 0xd1a4, ++ 0x0530, 0x0016, 0x2019, 0x000e, 0x080c, 0xb065, 0x0156, 0x20a9, ++ 0x007f, 0x2009, 0x0000, 0xa186, 0x007e, 0x01a0, 0xa186, 0x0080, ++ 0x0188, 0x080c, 0x4fa9, 0x1170, 0x8127, 0xa006, 0x0016, 0x2009, ++ 0x000e, 0x080c, 0xb0e8, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, ++ 0x6b1a, 0x001e, 0x8108, 0x1f04, 0x5d33, 0x015e, 0x001e, 0xd1ac, ++ 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, 0x2c6f, ++ 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, 0x080c, ++ 0x4fa9, 0x1110, 0x080c, 0x4c0b, 0x8108, 0x1f04, 0x5d5f, 0x015e, ++ 0x080c, 0x1e47, 0x2011, 0x0003, 0x080c, 0x8075, 0x2011, 0x0002, ++ 0x080c, 0x807f, 0x080c, 0x7f59, 0x0036, 0x2019, 0x0000, 0x080c, ++ 0x7fe4, 0x003e, 0x60e3, 0x0000, 0x2001, 0xb500, 0x2003, 0x0001, ++ 0x080c, 0x5a07, 0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x0005, 0x2071, 0xb5e2, 0x7003, 0x0000, 0x7007, 0x0000, ++ 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, 0x0001, ++ 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, 0x0000, ++ 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005, 0x00e6, 0x2071, 0xb5e2, ++ 0x6848, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, ++ 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a, ++ 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, 0x2009, ++ 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, ++ 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, 0xc084, ++ 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x00ee, 0x0005, ++ 0x2b78, 0x2071, 0xb5e2, 0x7004, 0x0043, 0x700c, 0x0002, 0x5de4, ++ 0x5ddb, 0x5ddb, 0x5ddb, 0x5ddb, 0x0005, 0x5e3a, 0x5e3b, 0x5e6d, ++ 0x5e6e, 0x5e38, 0x5ebc, 0x5ec1, 0x5ef2, 0x5ef3, 0x5f0e, 0x5f0f, ++ 0x5f10, 0x5f11, 0x5f12, 0x5f13, 0x5fc9, 0x5ff0, 0x700c, 0x0002, ++ 0x5dfd, 0x5e38, 0x5e38, 0x5e39, 0x5e39, 0x7830, 0x7930, 0xa106, ++ 0x0120, 0x7830, 0x7930, 0xa106, 0x1510, 0x7030, 0xa10a, 0x01f8, ++ 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x12d0, 0x080c, 0x15df, ++ 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057, ++ 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xb812, 0x2104, ++ 0xc085, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x165f, 0x0005, ++ 0x080c, 0x15df, 0x0de0, 0x2d00, 0x705a, 0x080c, 0x15df, 0x1108, ++ 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x08f8, ++ 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x5e42, 0x5e45, 0x5e53, ++ 0x5e6c, 0x5e6c, 0x080c, 0x5df6, 0x0005, 0x0126, 0x8001, 0x700e, ++ 0x7058, 0x0006, 0x080c, 0x6343, 0x0120, 0x2091, 0x8000, 0x080c, ++ 0x5df6, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, 0x6343, ++ 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, ++ 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a, 0x1218, 0x00db, 0x012e, ++ 0x0005, 0x012e, 0x080c, 0x5f14, 0x0005, 0x0005, 0x0005, 0x00e6, ++ 0x2071, 0xb5e2, 0x700c, 0x0002, 0x5e79, 0x5e79, 0x5e79, 0x5e7b, ++ 0x5e7e, 0x00ee, 0x0005, 0x700f, 0x0001, 0x0010, 0x700f, 0x0002, ++ 0x00ee, 0x0005, 0x5f14, 0x5f14, 0x5f30, 0x5f14, 0x60ad, 0x5f14, ++ 0x5f14, 0x5f14, 0x5f14, 0x5f14, 0x5f30, 0x60ef, 0x6132, 0x617b, ++ 0x618f, 0x5f14, 0x5f14, 0x5f4c, 0x5f30, 0x5f14, 0x5f14, 0x5fa6, ++ 0x623b, 0x6256, 0x5f14, 0x5f4c, 0x5f14, 0x5f14, 0x5f14, 0x5f14, ++ 0x5f9c, 0x6256, 0x5f14, 0x5f14, 0x5f14, 0x5f14, 0x5f14, 0x5f14, ++ 0x5f14, 0x5f14, 0x5f14, 0x5f60, 0x5f14, 0x5f14, 0x5f14, 0x5f14, ++ 0x5f14, 0x5f14, 0x5f14, 0x5f14, 0x5f14, 0x6361, 0x5f14, 0x5f14, ++ 0x5f14, 0x5f14, 0x5f14, 0x5f75, 0x7020, 0x2068, 0x080c, 0x160f, ++ 0x0005, 0x700c, 0x0002, 0x5ec8, 0x5ecb, 0x5ed9, 0x5ef1, 0x5ef1, ++ 0x080c, 0x5df6, 0x0005, 0x0126, 0x8001, 0x700e, 0x7058, 0x0006, ++ 0x080c, 0x6343, 0x0120, 0x2091, 0x8000, 0x080c, 0x5df6, 0x00de, ++ 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, 0x6343, 0x7058, 0x2068, ++ 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, ++ 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b, 0x012e, 0x0005, 0x012e, ++ 0x0419, 0x0005, 0x0005, 0x0005, 0x5f14, 0x5f30, 0x6099, 0x5f14, ++ 0x5f30, 0x5f14, 0x5f30, 0x5f30, 0x5f14, 0x5f30, 0x6099, 0x5f30, ++ 0x5f30, 0x5f30, 0x5f30, 0x5f30, 0x5f14, 0x5f30, 0x6099, 0x5f14, ++ 0x5f14, 0x5f30, 0x5f14, 0x5f14, 0x5f14, 0x5f30, 0x0005, 0x0005, ++ 0x0005, 0x0005, 0x0005, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, ++ 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5408, ++ 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5, ++ 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5408, 0x012e, 0x0005, ++ 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x5408, 0x012e, 0x0005, 0x7007, 0x0001, ++ 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x5408, 0x012e, 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, ++ 0x0988, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x6059, 0x7007, ++ 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x6059, 0x0005, ++ 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x5f22, 0x8001, 0x1120, ++ 0x7007, 0x0001, 0x0804, 0x6076, 0x7007, 0x0006, 0x7012, 0x2d00, ++ 0x7016, 0x701a, 0x704b, 0x6076, 0x0005, 0x6834, 0x8007, 0xa084, ++ 0x00ff, 0xa086, 0x0001, 0x1904, 0x5f22, 0x7007, 0x0001, 0x2009, ++ 0xb531, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, 0x683a, ++ 0x6853, 0x0000, 0x080c, 0x4d82, 0x1108, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x5408, 0x012e, ++ 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, 0xa086, ++ 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x626e, 0x2d00, 0x7016, ++ 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0xb60d, ++ 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x5f3e, 0x6a84, ++ 0xa28a, 0x0002, 0x1a04, 0x5f3e, 0x82ff, 0x1138, 0x6888, 0x698c, ++ 0xa105, 0x0118, 0x2001, 0x602c, 0x0018, 0xa280, 0x6022, 0x2005, ++ 0x70c6, 0x7010, 0xa015, 0x0904, 0x600e, 0x080c, 0x15df, 0x1118, ++ 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x2c05, ++ 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, 0xa00e, ++ 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0108, ++ 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, 0x1643, ++ 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, 0x7007, ++ 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x160f, 0x7014, 0x2068, ++ 0x0804, 0x5f3e, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000, ++ 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x5fc9, 0x7014, 0x2068, ++ 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, 0xa105, ++ 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0904, ++ 0x626e, 0x04b8, 0x6024, 0x6028, 0x0002, 0x0011, 0x0007, 0x0004, ++ 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004, ++ 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, 0x6804, ++ 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c, ++ 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e, ++ 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0c78, ++ 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0x2009, 0xb531, 0x210c, 0x81ff, 0x1198, 0x6838, 0xa084, ++ 0x00ff, 0x683a, 0x080c, 0x4c64, 0x1108, 0x0005, 0x080c, 0x54db, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x9ecc, 0x080c, 0x5408, 0x012e, ++ 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, 0xb531, ++ 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838, 0xa084, ++ 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x4d26, 0x1108, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x5408, 0x012e, ++ 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001, 0x0000, ++ 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, 0x7010, ++ 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014, 0x2068, ++ 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001, 0x6944, ++ 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, 0x0001, ++ 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff, 0xa096, ++ 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c, 0x00ff, ++ 0x080c, 0x4fa9, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x50a8, 0x006e, ++ 0x0088, 0x0046, 0x2011, 0xb50c, 0x2224, 0xc484, 0x2412, 0x004e, ++ 0x00c6, 0x080c, 0x4fa9, 0x1110, 0x080c, 0x5209, 0x8108, 0x1f04, ++ 0x60d9, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x160f, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x5408, 0x012e, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xb553, 0x2004, 0xd0a4, ++ 0x0580, 0x2061, 0xb874, 0x6100, 0xd184, 0x0178, 0x6858, 0xa084, ++ 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005, 0x1538, ++ 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0x6860, ++ 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, 0xa084, ++ 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, 0x0148, ++ 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804, ++ 0x6332, 0x012e, 0x0804, 0x632c, 0x012e, 0x0804, 0x6326, 0x012e, ++ 0x0804, 0x6329, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, ++ 0xb553, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xb874, 0x6000, 0xd084, ++ 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484, 0x0003, ++ 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100, 0xa210, ++ 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0, 0xa484, ++ 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004, ++ 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004, 0x1168, ++ 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000, 0x6016, ++ 0x6206, 0x630a, 0x012e, 0x0804, 0x6332, 0x012e, 0x0804, 0x632f, ++ 0x012e, 0x0804, 0x632c, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, ++ 0x2061, 0xb874, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, 0x0220, ++ 0x630a, 0x012e, 0x0804, 0x6340, 0x012e, 0x0804, 0x632f, 0x0126, ++ 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0148, ++ 0x00c6, 0x2061, 0xb874, 0x6000, 0xa084, 0xfcff, 0x6002, 0x00ce, ++ 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598, 0x2001, ++ 0xb531, 0x2004, 0xa005, 0x0118, 0x080c, 0x9e1d, 0x0068, 0x6013, ++ 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950, 0x6156, ++ 0x2009, 0x0041, 0x080c, 0x864c, 0x6958, 0xa18c, 0xff00, 0xa186, ++ 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff, 0x080c, ++ 0x6b1a, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xb874, 0x6000, ++ 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, 0x012e, ++ 0x0804, 0x6332, 0x00ce, 0x012e, 0x0804, 0x632c, 0x6954, 0xa186, ++ 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045, 0x0528, ++ 0xa186, 0x002a, 0x1130, 0x2001, 0xb50c, 0x200c, 0xc194, 0x2102, ++ 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18, 0x6944, ++ 0xa18c, 0xff00, 0x810f, 0x080c, 0x4fa9, 0x1960, 0x6000, 0xc0e4, ++ 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024, 0x2001, ++ 0xb7b6, 0x2004, 0x6016, 0x0804, 0x61ca, 0x685c, 0xa065, 0x0950, ++ 0x00e6, 0x6860, 0xa075, 0x2001, 0xb531, 0x2004, 0xa005, 0x0150, ++ 0x080c, 0x9e1d, 0x8eff, 0x0118, 0x2e60, 0x080c, 0x9e1d, 0x00ee, ++ 0x0804, 0x61ca, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60, 0x6007, ++ 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874, 0x602a, ++ 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x6c8d, 0x080c, 0x7173, ++ 0x00ee, 0x0804, 0x61ca, 0x2061, 0xb874, 0x6000, 0xd084, 0x0190, ++ 0xd08c, 0x1904, 0x6340, 0x0126, 0x2091, 0x8000, 0x6204, 0x8210, ++ 0x0220, 0x6206, 0x012e, 0x0804, 0x6340, 0x012e, 0x6853, 0x0016, ++ 0x0804, 0x6339, 0x6853, 0x0007, 0x0804, 0x6339, 0x6834, 0x8007, ++ 0xa084, 0x00ff, 0x1118, 0x080c, 0x5f22, 0x0078, 0x2030, 0x8001, ++ 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006, 0x7012, ++ 0x2d00, 0x7016, 0x701a, 0x704b, 0x626e, 0x0005, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0xa03e, 0x2009, 0xb531, 0x210c, 0x81ff, 0x1904, ++ 0x62ec, 0x2009, 0xb50c, 0x210c, 0xd194, 0x1904, 0x6316, 0x6848, ++ 0x2070, 0xae82, 0xbd00, 0x0a04, 0x62e0, 0x2001, 0xb517, 0x2004, ++ 0xae02, 0x1a04, 0x62e0, 0x711c, 0xa186, 0x0006, 0x1904, 0x62cf, ++ 0x7018, 0xa005, 0x0904, 0x62ec, 0x2004, 0xd0e4, 0x1904, 0x6311, ++ 0x2061, 0xb874, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, 0x1550, ++ 0x7020, 0xd0dc, 0x1904, 0x6319, 0x6853, 0x0000, 0x6803, 0x0000, ++ 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4, 0x1904, ++ 0x631c, 0x2e60, 0x080c, 0x6a76, 0x012e, 0x00ee, 0x0005, 0x2068, ++ 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4, 0x1904, ++ 0x631c, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853, 0x0006, ++ 0x0804, 0x6339, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8, 0x6944, ++ 0xa18c, 0xff00, 0x810f, 0x080c, 0x4fa9, 0x15d8, 0x6000, 0xd0e4, ++ 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002, 0x0498, ++ 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853, 0x0017, ++ 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xb572, 0x2004, 0xd0fc, ++ 0x01e8, 0x6848, 0x2070, 0xae82, 0xbd00, 0x02c0, 0x605c, 0xae02, ++ 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005, 0x0170, ++ 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086, 0x0007, ++ 0x1904, 0x6279, 0x7003, 0x0002, 0x0804, 0x6279, 0x6853, 0x0028, ++ 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853, 0x002a, ++ 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002, 0x6017, ++ 0x0014, 0x080c, 0xace0, 0x012e, 0x00ee, 0x0005, 0x2009, 0x003e, ++ 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, 0x2009, ++ 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, 0xa105, ++ 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x5408, 0x012e, 0x0005, ++ 0x080c, 0x160f, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, ++ 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070, 0xa080, ++ 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076, 0xa085, ++ 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x6a6d, 0x00de, ++ 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x7007, 0x0001, ++ 0x6a44, 0xa282, 0x0004, 0x1a04, 0x63ac, 0xd284, 0x0170, 0x6a4c, ++ 0xa290, 0xb635, 0x2204, 0xa065, 0x6004, 0x05e0, 0x8007, 0xa084, ++ 0x00ff, 0xa084, 0x0006, 0x1108, 0x04a8, 0x2c10, 0x080c, 0x85c7, ++ 0x1118, 0x080c, 0x9ed6, 0x05a0, 0x621a, 0x6844, 0x0002, 0x638b, ++ 0x6390, 0x6393, 0x6399, 0x2019, 0x0002, 0x080c, 0xb065, 0x0060, ++ 0x080c, 0xaffc, 0x0048, 0x2019, 0x0002, 0x6950, 0x080c, 0xb017, ++ 0x0018, 0x6950, 0x080c, 0xaffc, 0x080c, 0x861d, 0x6857, 0x0000, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x5408, 0x012e, 0x001e, 0x002e, ++ 0x003e, 0x00ce, 0x00de, 0x0005, 0x6857, 0x0006, 0x0c88, 0x6857, ++ 0x0002, 0x0c70, 0x6857, 0x0005, 0x0c58, 0x6857, 0x0004, 0x0c40, ++ 0x6857, 0x0007, 0x0c28, 0x00d6, 0x2011, 0x0004, 0x2204, 0xa085, ++ 0x8002, 0x2012, 0x00de, 0x0005, 0x20e1, 0x0002, 0x3d08, 0x20e1, ++ 0x2000, 0x3d00, 0xa084, 0x7000, 0x0118, 0xa086, 0x1000, 0x1570, ++ 0x20e1, 0x0000, 0x3d00, 0xa094, 0xff00, 0x8217, 0xa084, 0xf000, ++ 0xa086, 0x3000, 0x1160, 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, ++ 0x11e8, 0x080c, 0x2dbf, 0x11d0, 0x080c, 0x6603, 0x0098, 0x20e1, ++ 0x0004, 0x3d60, 0xd1bc, 0x1108, 0x3e60, 0xac84, 0x0007, 0x1170, ++ 0xac82, 0xbd00, 0x0258, 0x685c, 0xac02, 0x1240, 0x2009, 0x0047, ++ 0x080c, 0x864c, 0x7a1c, 0xd284, 0x1938, 0x0005, 0xa016, 0x080c, ++ 0x185e, 0x0cc0, 0x0cd8, 0x781c, 0xd08c, 0x0500, 0x0156, 0x0136, ++ 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, 0x1538, ++ 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8, 0x080c, 0x647e, 0x01f8, ++ 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c, 0x649a, 0x014e, 0x013e, ++ 0x015e, 0x2009, 0xb7e8, 0x2104, 0xa005, 0x1108, 0x0005, 0x080c, ++ 0x7173, 0x0ce0, 0xa484, 0x7000, 0x1548, 0x080c, 0x647e, 0x01d8, ++ 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x0d10, 0x00a0, 0xd5a4, ++ 0x0178, 0x0056, 0x0046, 0x080c, 0x1e6e, 0x080c, 0x24b0, 0x2001, ++ 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x004e, 0x005e, 0x0048, ++ 0x04a9, 0x6887, 0x0000, 0x080c, 0xb3df, 0x20e1, 0x3000, 0x7828, ++ 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e, 0x0880, 0x0439, 0x1130, ++ 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x1d68, 0x080c, 0xb3df, ++ 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056, 0x080c, 0x6874, 0x005e, ++ 0x0c40, 0x2001, 0xb50e, 0x2004, 0xd08c, 0x0178, 0x2001, 0xb500, ++ 0x2004, 0xa086, 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, 0x8048, ++ 0x2518, 0x080c, 0x3ecc, 0x003e, 0x002e, 0x0005, 0xa484, 0x01ff, ++ 0x6886, 0xa005, 0x0160, 0xa080, 0x001f, 0xa084, 0x03f8, 0x80ac, ++ 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x0005, 0x20a9, ++ 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0xa085, ++ 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, 0x8007, ++ 0xa196, 0x0000, 0x1118, 0x0804, 0x6708, 0x0005, 0xa196, 0x2000, ++ 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118, 0x080c, 0x448f, 0x0ca8, ++ 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80, 0x080c, 0x67b4, 0x0c68, ++ 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x65fd, 0x7110, 0xa18c, 0xff00, ++ 0x810f, 0xa196, 0x0001, 0x0120, 0xa196, 0x0023, 0x1904, 0x65fd, ++ 0xa08e, 0x0023, 0x1570, 0x080c, 0x684f, 0x0904, 0x65fd, 0x7124, ++ 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150, 0x7034, 0xa005, 0x1904, ++ 0x65fd, 0x2009, 0x0015, 0x080c, 0x864c, 0x0804, 0x65fd, 0xa08e, ++ 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, ++ 0x864c, 0x0804, 0x65fd, 0xa08e, 0x0100, 0x1904, 0x65fd, 0x7034, ++ 0xa005, 0x1904, 0x65fd, 0x2009, 0x0016, 0x080c, 0x864c, 0x0804, ++ 0x65fd, 0xa08e, 0x0022, 0x1904, 0x65fd, 0x7030, 0xa08e, 0x0300, ++ 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5, 0x68d6, 0x7100, 0xa18c, ++ 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6, 0x2079, 0x0100, 0x79e6, ++ 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016, 0x2008, 0x080c, 0x2847, ++ 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, 0x080c, 0x281d, 0x6952, ++ 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, 0x2071, 0xb500, 0x70a6, ++ 0x00ee, 0x7034, 0xa005, 0x1904, 0x65fd, 0x2009, 0x0017, 0x0804, ++ 0x65c3, 0xa08e, 0x0400, 0x1158, 0x7034, 0xa005, 0x1904, 0x65fd, ++ 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030, 0x0804, 0x65c3, 0xa08e, ++ 0x0500, 0x1140, 0x7034, 0xa005, 0x1904, 0x65fd, 0x2009, 0x0018, ++ 0x0804, 0x65c3, 0xa08e, 0x2010, 0x1120, 0x2009, 0x0019, 0x0804, ++ 0x65c3, 0xa08e, 0x2110, 0x1120, 0x2009, 0x001a, 0x0804, 0x65c3, ++ 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005, 0x1904, 0x65fd, 0x2009, ++ 0x001b, 0x0804, 0x65c3, 0xa08e, 0x5000, 0x1140, 0x7034, 0xa005, ++ 0x1904, 0x65fd, 0x2009, 0x001c, 0x0804, 0x65c3, 0xa08e, 0x1300, ++ 0x1120, 0x2009, 0x0034, 0x0804, 0x65c3, 0xa08e, 0x1200, 0x1140, ++ 0x7034, 0xa005, 0x1904, 0x65fd, 0x2009, 0x0024, 0x0804, 0x65c3, ++ 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1118, 0x2009, 0x002d, 0x04d8, ++ 0xa08c, 0xff00, 0xa18e, 0x5300, 0x1118, 0x2009, 0x002a, 0x0498, ++ 0xa08e, 0x0f00, 0x1118, 0x2009, 0x0020, 0x0468, 0xa08e, 0x5300, ++ 0x1108, 0x00d8, 0xa08e, 0x6104, 0x11c0, 0x2011, 0xbb8d, 0x8208, ++ 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, ++ 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x3ecc, 0x004e, 0x8108, ++ 0x1f04, 0x65a6, 0x2009, 0x0023, 0x0070, 0xa08e, 0x6000, 0x1118, ++ 0x2009, 0x003f, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, 0x0045, ++ 0x0010, 0x2009, 0x001d, 0x0016, 0x2011, 0xbb83, 0x2204, 0x8211, ++ 0x220c, 0x080c, 0x281d, 0x1598, 0x080c, 0x4f4d, 0x1580, 0x6612, ++ 0x6516, 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, 0x1158, ++ 0x6870, 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, 0x1180, ++ 0x6000, 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, 0xa606, ++ 0x1138, 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, 0x0068, ++ 0x00c6, 0x080c, 0x85c7, 0x0168, 0x001e, 0x611a, 0x601f, 0x0004, ++ 0x7120, 0x610a, 0x001e, 0x080c, 0x864c, 0x00ce, 0x0005, 0x001e, ++ 0x0ce0, 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6657, 0x1904, ++ 0x6654, 0xa28e, 0x0033, 0x11e8, 0x080c, 0x684f, 0x0904, 0x6654, ++ 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, 0xa005, ++ 0x15d8, 0x2009, 0x0015, 0x080c, 0x864c, 0x04b0, 0xa08e, 0x0100, ++ 0x1598, 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, 0x864c, ++ 0x0458, 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, 0x1520, ++ 0x2009, 0x0038, 0x0016, 0x2011, 0xbb83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x281d, 0x11c0, 0x080c, 0x4f4d, 0x11a8, 0x6612, 0x6516, ++ 0x00c6, 0x080c, 0x85c7, 0x0170, 0x001e, 0x611a, 0x080c, 0xa027, ++ 0x601f, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x864c, 0x080c, ++ 0x7173, 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, 0x00f6, ++ 0x00d6, 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, 0x0006, ++ 0x2079, 0x0030, 0x2069, 0x0200, 0x080c, 0x1f2d, 0x1590, 0x080c, ++ 0x1dd2, 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, 0xa182, ++ 0x0011, 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, 0x2099, ++ 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x7a0c, ++ 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, 0xa08a, ++ 0x0140, 0x1a0c, 0x1515, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, ++ 0x53a5, 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, ++ 0x0070, 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, 0x002e, ++ 0x00de, 0x00fe, 0x0005, 0xa016, 0x080c, 0x185e, 0xa085, 0x0001, ++ 0x0c80, 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, 0x000e, ++ 0x0005, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, 0x00ff, ++ 0x1198, 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, 0x6703, ++ 0xa596, 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, 0xfffc, ++ 0x1118, 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, 0xb535, ++ 0x231c, 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, ++ 0xb635, 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, 0xb6b6, ++ 0x2e1c, 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, 0x0080, ++ 0x2368, 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, 0x1120, ++ 0xa346, 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, 0x0d58, ++ 0x8420, 0x8e70, 0x1f04, 0x66e0, 0x82ff, 0x1118, 0xa085, 0x0001, ++ 0x0018, 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, 0x0005, ++ 0xa084, 0x0007, 0x000a, 0x0005, 0x6714, 0x6714, 0x6714, 0x6861, ++ 0x6714, 0x6715, 0x672a, 0x679f, 0x0005, 0x7110, 0xd1bc, 0x0188, ++ 0x7120, 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xbd00, 0x0248, ++ 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, ++ 0x864c, 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x677d, 0x7110, ++ 0xd1bc, 0x1904, 0x677d, 0x2011, 0xbb83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x281d, 0x1904, 0x677d, 0x080c, 0x4f4d, 0x15f0, 0x6612, ++ 0x6516, 0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, 0x8217, ++ 0xa286, 0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, ++ 0x11a0, 0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x85c7, 0x001e, ++ 0x0530, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, ++ 0x2009, 0x0044, 0x080c, 0x864c, 0x00c0, 0x00c6, 0x080c, 0x85c7, ++ 0x001e, 0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, ++ 0x0004, 0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x6cd3, 0x080c, 0x7173, 0x00ce, 0x0005, 0x2001, ++ 0xb50d, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x3ecc, ++ 0x00c6, 0x080c, 0x9ed6, 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, ++ 0x7120, 0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, ++ 0x6007, 0x0041, 0x080c, 0x6c8d, 0x080c, 0x7173, 0x08f0, 0x7110, ++ 0xd1bc, 0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, ++ 0xbd00, 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, ++ 0x0045, 0x080c, 0x864c, 0x0005, 0x0006, 0x080c, 0x2dbf, 0x000e, ++ 0x1168, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, ++ 0xa084, 0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, 0x67cd, ++ 0x67ce, 0x67cd, 0x67cd, 0x6837, 0x6843, 0x0005, 0x7110, 0xd1bc, ++ 0x0120, 0x702c, 0xd084, 0x0904, 0x6836, 0x700c, 0x7108, 0x080c, ++ 0x281d, 0x1904, 0x6836, 0x080c, 0x4f4d, 0x1904, 0x6836, 0x6612, ++ 0x6516, 0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, ++ 0x0004, 0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, 0x684f, ++ 0x00ce, 0x0904, 0x6836, 0x00c6, 0x080c, 0x85c7, 0x001e, 0x05f0, ++ 0x611a, 0x080c, 0xa027, 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, ++ 0x0088, 0x080c, 0x864c, 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, ++ 0x0160, 0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, ++ 0x0004, 0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, 0x85c7, ++ 0x001e, 0x01e0, 0x611a, 0x080c, 0xa027, 0x601f, 0x0005, 0x7120, ++ 0x610a, 0x2009, 0x0088, 0x080c, 0x864c, 0x0080, 0x00c6, 0x080c, ++ 0x85c7, 0x001e, 0x0158, 0x611a, 0x080c, 0xa027, 0x601f, 0x0004, ++ 0x7120, 0x610a, 0x2009, 0x0001, 0x080c, 0x864c, 0x0005, 0x7110, ++ 0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, ++ 0x080c, 0x864c, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, ++ 0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x864c, 0x0005, 0x7020, ++ 0x2060, 0xac84, 0x0007, 0x1158, 0xac82, 0xbd00, 0x0240, 0x2001, ++ 0xb517, 0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, ++ 0x0ce8, 0x7110, 0xd1bc, 0x1178, 0x7024, 0x2060, 0xac84, 0x0007, ++ 0x1150, 0xac82, 0xbd00, 0x0238, 0x685c, 0xac02, 0x1220, 0x2009, ++ 0x0051, 0x080c, 0x864c, 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, ++ 0x2031, 0x0206, 0x0049, 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, ++ 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6, 0x00d6, 0x00f6, 0x7000, ++ 0xa084, 0xf000, 0xa086, 0xc000, 0x05b0, 0x080c, 0x85c7, 0x0598, ++ 0x0066, 0x00c6, 0x0046, 0x2011, 0xbb83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x281d, 0x1580, 0x080c, 0x4f4d, 0x1568, 0x6612, 0x6516, ++ 0x2c00, 0x004e, 0x00ce, 0x601a, 0x080c, 0xa027, 0x080c, 0x15f8, ++ 0x01f0, 0x2d00, 0x6056, 0x6803, 0x0000, 0x6837, 0x0000, 0x6c3a, ++ 0xadf8, 0x000f, 0x20a9, 0x000e, 0x2fa0, 0x2e98, 0x53a3, 0x006e, ++ 0x6612, 0x6007, 0x003e, 0x601f, 0x0001, 0x6003, 0x0001, 0x080c, ++ 0x6cd3, 0x080c, 0x7173, 0x00fe, 0x00de, 0x00ce, 0x0005, 0x080c, ++ 0x861d, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x2071, 0xb7f3, ++ 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7076, 0x7012, ++ 0x7017, 0xbd00, 0x7007, 0x0000, 0x7026, 0x702b, 0x7d91, 0x7032, ++ 0x7037, 0x7df1, 0x703b, 0xffff, 0x703f, 0xffff, 0x7042, 0x7047, ++ 0x444b, 0x704a, 0x705b, 0x6a2b, 0x2001, 0xb7a1, 0x2003, 0x0003, ++ 0x2001, 0xb7a3, 0x2003, 0x0100, 0x3a00, 0xa084, 0x0005, 0x706e, ++ 0x0005, 0x2071, 0xb7f3, 0x1d04, 0x698b, 0x2091, 0x6000, 0x700c, ++ 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, ++ 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, 0x7142, 0x1110, ++ 0x7044, 0x080f, 0x00c6, 0x2061, 0xb500, 0x6034, 0x00ce, 0xd0cc, ++ 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, 0x0150, 0x706e, ++ 0x2011, 0x8043, 0x2018, 0x080c, 0x3ecc, 0x0018, 0x0126, 0x2091, ++ 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, ++ 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, 0x1110, 0x7028, ++ 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0xa00d, 0x0180, ++ 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, ++ 0x0128, 0xa184, 0x007f, 0x090c, 0x7e36, 0x0010, 0x7034, 0x080f, ++ 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, 0x703c, 0xa005, ++ 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, 0x0168, 0x7048, ++ 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e, 0x1120, ++ 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, 0x01d8, 0x0016, ++ 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, 0x1138, 0x7073, ++ 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, 0x001e, 0x7008, ++ 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, ++ 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x69b1, 0x69b2, 0x69ca, ++ 0x00e6, 0x2071, 0xb7f3, 0x7018, 0xa005, 0x1120, 0x711a, 0x721e, ++ 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0xb7f3, ++ 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, 0x0005, ++ 0x00e6, 0x2071, 0xb7f3, 0x6088, 0xa102, 0x0208, 0x618a, 0x00ee, ++ 0x0005, 0x0005, 0x7110, 0x080c, 0x4fa9, 0x1158, 0x6088, 0x8001, ++ 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, 0x7173, ++ 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, 0x7007, 0x0002, ++ 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, 0x603c, ++ 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, 0x9f15, 0x6014, ++ 0xa005, 0x0500, 0x8001, 0x6016, 0x11e8, 0x611c, 0xa186, 0x0003, ++ 0x0118, 0xa186, 0x0006, 0x11a0, 0x6010, 0x2068, 0x6854, 0xa08a, ++ 0x199a, 0x0270, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0210, ++ 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0010, ++ 0x080c, 0x99e5, 0x012e, 0xac88, 0x0018, 0x7116, 0x2001, 0xed00, ++ 0xa102, 0x0220, 0x7017, 0xbd00, 0x7007, 0x0000, 0x0005, 0x00e6, ++ 0x2071, 0xb7f3, 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, 0x0005, ++ 0x2001, 0xb7fc, 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, 0xb7f3, ++ 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, 0x2011, 0xb7ff, 0x2013, ++ 0x0000, 0x0005, 0x00e6, 0x2071, 0xb7f3, 0x711a, 0x721e, 0x700b, ++ 0x0009, 0x00ee, 0x0005, 0x00c6, 0x0026, 0x7054, 0x8000, 0x7056, ++ 0x2061, 0xb7a1, 0x6008, 0xa086, 0x0000, 0x0158, 0x7068, 0x6032, ++ 0x7064, 0x602e, 0x7060, 0x602a, 0x705c, 0x6026, 0x2c10, 0x080c, ++ 0x1643, 0x002e, 0x00ce, 0x0005, 0x0006, 0x0016, 0x00c6, 0x00d6, ++ 0x00e6, 0x00f6, 0x080c, 0x68f9, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0xb7f3, 0x7176, 0x727a, ++ 0x7073, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0xb7f3, ++ 0x7078, 0xa206, 0x1110, 0x7076, 0x707a, 0x000e, 0x00ee, 0x0005, ++ 0x00c6, 0x2061, 0xb874, 0x00ce, 0x0005, 0xa184, 0x000f, 0x8003, ++ 0x8003, 0x8003, 0xa080, 0xb874, 0x2060, 0x0005, 0x6854, 0xa08a, ++ 0x199a, 0x0210, 0x2001, 0x1999, 0xa005, 0x1150, 0x00c6, 0x2061, ++ 0xb874, 0x6014, 0x00ce, 0xa005, 0x1138, 0x2001, 0x001e, 0x0020, ++ 0xa08e, 0xffff, 0x1108, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, ++ 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x05e8, 0xd0b4, ++ 0x1138, 0xd0bc, 0x1550, 0x2009, 0x0006, 0x080c, 0x6af1, 0x0005, ++ 0xd0fc, 0x0138, 0xa084, 0x0003, 0x0120, 0xa086, 0x0003, 0x1904, ++ 0x6aeb, 0x6020, 0xd0d4, 0x0130, 0xc0d4, 0x6022, 0x6860, 0x602a, ++ 0x685c, 0x602e, 0x2009, 0xb574, 0x2104, 0xd084, 0x0138, 0x87ff, ++ 0x1120, 0x2009, 0x0042, 0x080c, 0x864c, 0x0005, 0x87ff, 0x1120, ++ 0x2009, 0x0043, 0x080c, 0x864c, 0x0005, 0xd0fc, 0x0130, 0xa084, ++ 0x0003, 0x0118, 0xa086, 0x0003, 0x11f0, 0x87ff, 0x1120, 0x2009, ++ 0x0042, 0x080c, 0x864c, 0x0005, 0xd0fc, 0x0160, 0xa084, 0x0003, ++ 0xa08e, 0x0002, 0x0148, 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, ++ 0x864c, 0x0005, 0x0061, 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, ++ 0x080c, 0x864c, 0x0cb0, 0x2009, 0x0004, 0x0019, 0x0005, 0x2009, ++ 0x0001, 0x00d6, 0x6010, 0xa0ec, 0xf000, 0x0510, 0x2068, 0x6952, ++ 0x6800, 0x6012, 0xa186, 0x0001, 0x1188, 0x694c, 0xa18c, 0x8100, ++ 0xa18e, 0x8100, 0x1158, 0x00c6, 0x2061, 0xb874, 0x6200, 0xd28c, ++ 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, 0x080c, 0x5408, ++ 0x6010, 0xa06d, 0x0076, 0x2039, 0x0000, 0x190c, 0x6a76, 0x007e, ++ 0x00de, 0x0005, 0x0156, 0x00c6, 0x2061, 0xb874, 0x6000, 0x81ff, ++ 0x0110, 0xa205, 0x0008, 0xa204, 0x6002, 0x00ce, 0x015e, 0x0005, ++ 0x6800, 0xd08c, 0x1138, 0x6808, 0xa005, 0x0120, 0x8001, 0x680a, ++ 0xa085, 0x0001, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, ++ 0x818e, 0x1208, 0xa200, 0x1f04, 0x6b37, 0x8086, 0x818e, 0x0005, ++ 0x0156, 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, ++ 0x818d, 0x0228, 0xa11a, 0x1220, 0x1f04, 0x6b47, 0x0028, 0xa11a, ++ 0x2308, 0x8210, 0x1f04, 0x6b47, 0x0006, 0x3200, 0xa084, 0xefff, ++ 0x2080, 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, ++ 0x0cb8, 0x0126, 0x2091, 0x2800, 0x2079, 0xb7e0, 0x012e, 0x00d6, ++ 0x2069, 0xb7e0, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, ++ 0x8001, 0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, ++ 0xa084, 0x0007, 0x0002, 0x6b85, 0x6ba6, 0x6bf9, 0x6b8b, 0x6ba6, ++ 0x6b85, 0x6b83, 0x6b83, 0x080c, 0x1515, 0x080c, 0x6a10, 0x080c, ++ 0x7173, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, ++ 0x2011, 0x4adc, 0x080c, 0x699c, 0x7828, 0xa092, 0x00c8, 0x1228, ++ 0x8000, 0x782a, 0x080c, 0x4b16, 0x0c88, 0x080c, 0x4adc, 0x7807, ++ 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, 0x6a10, ++ 0x3c00, 0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, ++ 0x20e0, 0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, ++ 0x7824, 0xa065, 0x090c, 0x1515, 0x2009, 0x0013, 0x080c, 0x864c, ++ 0x00ce, 0x0005, 0x3900, 0xa082, 0xb92c, 0x1210, 0x080c, 0x8332, ++ 0x00c6, 0x7824, 0xa065, 0x090c, 0x1515, 0x7804, 0xa086, 0x0004, ++ 0x0904, 0x6c39, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, ++ 0x00ce, 0x080c, 0x7d6d, 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, ++ 0x00e6, 0x2071, 0xb500, 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, ++ 0x00e6, 0x2061, 0x0100, 0x2071, 0xb500, 0x080c, 0x4b1f, 0x00ee, ++ 0x00ce, 0x080c, 0xb444, 0x2009, 0x0014, 0x080c, 0x864c, 0x00ce, ++ 0x0838, 0x2001, 0xb7fc, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, ++ 0x782b, 0x0000, 0x7824, 0xa065, 0x090c, 0x1515, 0x2009, 0x0013, ++ 0x080c, 0x86a0, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, ++ 0xb92c, 0x1210, 0x080c, 0x8332, 0x7824, 0xa005, 0x090c, 0x1515, ++ 0x781c, 0xa06d, 0x090c, 0x1515, 0x6800, 0xc0dc, 0x6802, 0x7924, ++ 0x2160, 0x080c, 0x861d, 0x693c, 0x81ff, 0x090c, 0x1515, 0x8109, ++ 0x693e, 0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, ++ 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7173, ++ 0x0888, 0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, ++ 0x0804, 0x6bd2, 0x7808, 0xac06, 0x0904, 0x6bd2, 0x080c, 0x7090, ++ 0x080c, 0x6cd3, 0x00ce, 0x080c, 0x7173, 0x0804, 0x6bc0, 0x00c6, ++ 0x6027, 0x0002, 0x62c8, 0x60c4, 0xa205, 0x1178, 0x793c, 0xa1e5, ++ 0x0000, 0x0130, 0x2009, 0x0049, 0x080c, 0x864c, 0x00ce, 0x0005, ++ 0x2011, 0xb7ff, 0x2013, 0x0000, 0x0cc8, 0x3908, 0xa192, 0xb92c, ++ 0x1210, 0x080c, 0x8332, 0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, ++ 0x7530, 0x12b8, 0x8108, 0x7946, 0x793c, 0xa188, 0x0007, 0x210c, ++ 0xa18e, 0x0006, 0x1138, 0x6014, 0xa084, 0x0184, 0xa085, 0x0012, ++ 0x6016, 0x08e0, 0x6014, 0xa084, 0x0184, 0xa085, 0x0016, 0x6016, ++ 0x08a8, 0x7848, 0xc085, 0x784a, 0x0888, 0x0006, 0x0016, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0xb7e0, ++ 0x6020, 0x8000, 0x6022, 0x6010, 0xa005, 0x0148, 0xa080, 0x0003, ++ 0x2102, 0x6112, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x6116, ++ 0x6112, 0x0cc0, 0x00d6, 0x2069, 0xb7e0, 0x6000, 0xd0d4, 0x0168, ++ 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x1110, 0x2c00, 0x681e, ++ 0x6804, 0xa084, 0x0007, 0x0804, 0x7179, 0xc0d5, 0x6002, 0x6818, ++ 0xa005, 0x0158, 0x6056, 0x605b, 0x0000, 0x0006, 0x2c00, 0x681a, ++ 0x00de, 0x685a, 0x2069, 0xb7e0, 0x0c18, 0x6056, 0x605a, 0x2c00, ++ 0x681a, 0x681e, 0x08e8, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0xb7e0, 0x6020, 0x8000, ++ 0x6022, 0x6008, 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x610a, ++ 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x610e, 0x610a, 0x0cc0, ++ 0x00c6, 0x600f, 0x0000, 0x2c08, 0x2061, 0xb7e0, 0x6034, 0xa005, ++ 0x0130, 0xa080, 0x0003, 0x2102, 0x6136, 0x00ce, 0x0005, 0x613a, ++ 0x6136, 0x0cd8, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, ++ 0x0056, 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, 0xa02e, 0x2071, ++ 0xb7e0, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, ++ 0x6d7b, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x6d76, ++ 0x87ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x6d76, 0x703c, 0xac06, ++ 0x1190, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe4, 0x7033, 0x0000, ++ 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, 0x0000, ++ 0x003e, 0x2029, 0x0001, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, ++ 0x7034, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, ++ 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, ++ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0x9c5a, 0x01c8, ++ 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x1580, 0x6837, 0x0103, ++ 0x6b4a, 0x6847, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c, 0x9ecc, ++ 0x080c, 0xb380, 0x080c, 0x5408, 0x007e, 0x003e, 0x001e, 0x080c, ++ 0x9e11, 0x080c, 0x9e1d, 0x00ce, 0x0804, 0x6d16, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0x6d16, 0x85ff, 0x0120, 0x0036, 0x080c, 0x7230, ++ 0x003e, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e, 0x006e, ++ 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, ++ 0x0006, 0x1158, 0x0016, 0x0036, 0x0076, 0x080c, 0xb380, 0x080c, ++ 0xb099, 0x007e, 0x003e, 0x001e, 0x08a0, 0x601c, 0xa086, 0x000a, ++ 0x0904, 0x6d60, 0x0804, 0x6d5e, 0x0006, 0x0066, 0x00c6, 0x00d6, ++ 0x00f6, 0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, 0xb7e0, ++ 0x7838, 0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, ++ 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe4, 0x7833, ++ 0x0000, 0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, ++ 0x0000, 0x003e, 0x080c, 0x9c5a, 0x0178, 0x6010, 0x2068, 0x601c, ++ 0xa086, 0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x080c, 0x5408, 0x080c, 0x9e11, 0x080c, 0x9e1d, 0x000e, 0x0888, ++ 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, ++ 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xb099, 0x0c60, ++ 0x601c, 0xa086, 0x000a, 0x0d08, 0x08f0, 0x0016, 0x0026, 0x0086, ++ 0x2041, 0x0000, 0x0099, 0x080c, 0x6ec3, 0x008e, 0x002e, 0x001e, ++ 0x0005, 0x00f6, 0x0126, 0x2079, 0xb7e0, 0x2091, 0x8000, 0x080c, ++ 0x6f50, 0x080c, 0x6fc2, 0x012e, 0x00fe, 0x0005, 0x00f6, 0x00e6, ++ 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0xb7e0, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904, 0x6e99, ++ 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x6e94, 0x88ff, ++ 0x0120, 0x6050, 0xa106, 0x1904, 0x6e94, 0x7024, 0xac06, 0x1538, ++ 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x6a10, 0x080c, ++ 0x7d7a, 0x68c3, 0x0000, 0x080c, 0x824d, 0x7027, 0x0000, 0x0036, ++ 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, ++ 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x04e8, 0x7014, ++ 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, ++ 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, ++ 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, ++ 0x0000, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x01b8, 0x601c, 0xa086, ++ 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016, ++ 0x0036, 0x0086, 0x080c, 0x9ecc, 0x080c, 0xb380, 0x080c, 0x5408, ++ 0x008e, 0x003e, 0x001e, 0x080c, 0x9e11, 0x080c, 0x9e1d, 0x080c, ++ 0x811e, 0x00ce, 0x0804, 0x6e1d, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x6e1d, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016, 0x0036, ++ 0x0086, 0x080c, 0xb380, 0x080c, 0xb099, 0x008e, 0x003e, 0x001e, ++ 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085, ++ 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, 0x6004, 0xa086, ++ 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0xa280, 0xb635, 0x2004, 0xa065, 0x0904, 0x6f4c, 0x00f6, 0x00e6, ++ 0x00d6, 0x0066, 0x2071, 0xb7e0, 0x6654, 0x7018, 0xac06, 0x1108, ++ 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, 0x7018, 0x701e, ++ 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, 0xa6ed, 0x0000, ++ 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, ++ 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x4ed4, 0x0904, 0x6f48, 0x7624, ++ 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0, 0x00d6, ++ 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x6a10, 0x080c, ++ 0x7d7a, 0x68c3, 0x0000, 0x080c, 0x824d, 0x7027, 0x0000, 0x0036, ++ 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, ++ 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, ++ 0x603e, 0x2660, 0x080c, 0x9e1d, 0x00ce, 0x0048, 0x00de, 0x00c6, ++ 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x6ef3, 0x8dff, ++ 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x9ecc, ++ 0x080c, 0xb380, 0x080c, 0x5408, 0x080c, 0x811e, 0x0804, 0x6ef3, ++ 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, 0x0005, ++ 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, 0x7814, 0xa065, ++ 0x0904, 0x6fa2, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824, 0xac06, ++ 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x6a10, ++ 0x080c, 0x7d7a, 0x68c3, 0x0000, 0x080c, 0x824d, 0x7827, 0x0000, + 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, + 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, +- 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x04e8, +- 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, +- 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, +- 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, +- 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0x9c54, 0x01b8, 0x601c, +- 0xa086, 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x0016, 0x0036, 0x0086, 0x080c, 0x9ec6, 0x080c, 0xb374, 0x080c, +- 0x5409, 0x008e, 0x003e, 0x001e, 0x080c, 0x9e0b, 0x080c, 0x9e17, +- 0x080c, 0x811f, 0x00ce, 0x0804, 0x6e1e, 0x2c78, 0x600c, 0x2060, +- 0x0804, 0x6e1e, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, +- 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016, +- 0x0036, 0x0086, 0x080c, 0xb374, 0x080c, 0xb08d, 0x008e, 0x003e, +- 0x001e, 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, +- 0x0085, 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, 0x6004, +- 0xa086, 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, 0x2091, +- 0x8000, 0xa280, 0xb635, 0x2004, 0xa065, 0x0904, 0x6f4d, 0x00f6, +- 0x00e6, 0x00d6, 0x0066, 0x2071, 0xb7e0, 0x6654, 0x7018, 0xac06, +- 0x1108, 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, 0x7018, +- 0x701e, 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, 0xa6ed, +- 0x0000, 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, +- 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x4ed5, 0x0904, 0x6f49, +- 0x7624, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0, +- 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x6a11, +- 0x080c, 0x7d7b, 0x68c3, 0x0000, 0x080c, 0x8247, 0x7027, 0x0000, ++ 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a, 0x2c30, ++ 0x00b0, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0168, 0x601c, 0xa086, ++ 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, ++ 0x5408, 0x080c, 0x9e11, 0x080c, 0x9e1d, 0x080c, 0x811e, 0x000e, ++ 0x0804, 0x6f57, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e, 0x000e, ++ 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xb099, 0x0c58, ++ 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085, 0x09d0, ++ 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, 0xa086, 0x0085, ++ 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x7818, 0xa065, ++ 0x0904, 0x7028, 0x6054, 0x0006, 0x6057, 0x0000, 0x605b, 0x0000, ++ 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x4ed4, 0x0904, 0x7025, ++ 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0, ++ 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x6a10, ++ 0x080c, 0x7d7a, 0x68c3, 0x0000, 0x080c, 0x824d, 0x7827, 0x0000, + 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, + 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, + 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110, +- 0x8001, 0x603e, 0x2660, 0x080c, 0x9e17, 0x00ce, 0x0048, 0x00de, +- 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x6ef4, +- 0x8dff, 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, +- 0x9ec6, 0x080c, 0xb374, 0x080c, 0x5409, 0x080c, 0x811f, 0x0804, +- 0x6ef4, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, +- 0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, 0x7814, +- 0xa065, 0x0904, 0x6fa3, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824, +- 0xac06, 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, +- 0x6a11, 0x080c, 0x7d7b, 0x68c3, 0x0000, 0x080c, 0x8247, 0x7827, +- 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, +- 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, +- 0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a, +- 0x2c30, 0x00b0, 0x6010, 0x2068, 0x080c, 0x9c54, 0x0168, 0x601c, +- 0xa086, 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x080c, 0x5409, 0x080c, 0x9e0b, 0x080c, 0x9e17, 0x080c, 0x811f, +- 0x000e, 0x0804, 0x6f58, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e, +- 0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xb08d, +- 0x0c58, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085, +- 0x09d0, 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, 0xa086, +- 0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x7818, +- 0xa065, 0x0904, 0x7029, 0x6054, 0x0006, 0x6057, 0x0000, 0x605b, +- 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x4ed5, 0x0904, +- 0x7026, 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, +- 0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, +- 0x6a11, 0x080c, 0x7d7b, 0x68c3, 0x0000, 0x080c, 0x8247, 0x7827, +- 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, +- 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, +- 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, +- 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0x9e17, 0x00ce, 0x0048, +- 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, +- 0x6fd5, 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x080c, 0x5409, 0x080c, 0x811f, 0x0804, 0x6fd5, 0x000e, 0x0804, +- 0x6fc8, 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, +- 0x00e6, 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0xa06d, +- 0x0188, 0x6848, 0xa606, 0x1170, 0x2071, 0xb7e0, 0x7024, 0xa035, +- 0x0148, 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, 0xc0dc, +- 0x6002, 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079, +- 0x0100, 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009, +- 0x630a, 0x00ce, 0x04a0, 0x080c, 0x7d7b, 0x78c3, 0x0000, 0x080c, +- 0x8247, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0xa384, +- 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, 0x0100, +- 0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x8247, 0x003e, +- 0x080c, 0x4ed5, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e, +- 0x2660, 0x080c, 0x8617, 0x00ce, 0x6837, 0x0103, 0x6b4a, 0x6847, +- 0x0000, 0x080c, 0x9ec6, 0x080c, 0x5409, 0x080c, 0x811f, 0x00fe, +- 0x0005, 0x00e6, 0x00c6, 0x2071, 0xb7e0, 0x7004, 0xa084, 0x0007, +- 0x0002, 0x70a3, 0x70a6, 0x70bc, 0x70d5, 0x7112, 0x70a3, 0x70a1, +- 0x70a1, 0x080c, 0x1515, 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065, +- 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, 0x7216, +- 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, +- 0x0005, 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, 0x4ed5, +- 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, 0x6054, +- 0xa015, 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, +- 0x00ee, 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, 0x05b8, +- 0x700c, 0xac06, 0x1160, 0x080c, 0x811f, 0x600c, 0xa015, 0x0120, +- 0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014, +- 0xac06, 0x1160, 0x080c, 0x811f, 0x600c, 0xa015, 0x0120, 0x7216, +- 0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, 0xa086, +- 0x0003, 0x1198, 0x6018, 0x2060, 0x080c, 0x4ed5, 0x6000, 0xc0dc, +- 0x6002, 0x080c, 0x811f, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015, +- 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, +- 0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x811f, 0x600c, +- 0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x8247, 0x7027, +- 0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6, +- 0x2069, 0xb7e0, 0x6830, 0xa084, 0x0003, 0x0002, 0x7134, 0x7136, +- 0x715a, 0x7132, 0x080c, 0x1515, 0x00de, 0x0005, 0x00c6, 0x6840, +- 0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015, +- 0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, +- 0x2011, 0xb7ff, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, +- 0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003, +- 0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b, +- 0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a, +- 0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a, +- 0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xb7e0, 0x6804, +- 0xa084, 0x0007, 0x0002, 0x7185, 0x7221, 0x7221, 0x7221, 0x7221, +- 0x7223, 0x7183, 0x7183, 0x080c, 0x1515, 0x6820, 0xa005, 0x1110, +- 0x00de, 0x0005, 0x00c6, 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, +- 0x6826, 0x682b, 0x0000, 0x080c, 0x7273, 0x00ce, 0x00de, 0x0005, +- 0x6814, 0xa065, 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, +- 0x080c, 0x7273, 0x00ce, 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, +- 0xa2f5, 0x0000, 0x0904, 0x721d, 0x704c, 0xa00d, 0x0118, 0x7088, +- 0xa005, 0x01a0, 0x7054, 0xa075, 0x0120, 0xa20e, 0x0904, 0x721d, +- 0x0028, 0x6818, 0xa20e, 0x0904, 0x721d, 0x2070, 0x704c, 0xa00d, +- 0x0d88, 0x7088, 0xa005, 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, +- 0xa302, 0x1e40, 0x080c, 0x85ee, 0x0904, 0x721d, 0x8318, 0x733e, +- 0x6112, 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, +- 0x605a, 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, +- 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, +- 0xa318, 0x6316, 0x003e, 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xb535, +- 0x2004, 0xd0ac, 0x1110, 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, +- 0x7114, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, +- 0x2dc4, 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, +- 0x78a3, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, +- 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, +- 0x00fe, 0x00ee, 0x00ce, 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, +- 0x0cd0, 0x00de, 0x0005, 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, +- 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x7273, 0x00ce, 0x00de, +- 0x0005, 0x00f6, 0x00d6, 0x2069, 0xb7e0, 0x6830, 0xa086, 0x0000, +- 0x11d0, 0x2001, 0xb50c, 0x200c, 0xd1bc, 0x1560, 0x6838, 0xa07d, +- 0x0190, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, +- 0x0126, 0x00f6, 0x2091, 0x2400, 0x002e, 0x080c, 0x2021, 0x1130, +- 0x012e, 0x080c, 0x7bec, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000, +- 0x6843, 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0140, 0x6a3a, +- 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c60, 0x683a, +- 0x6836, 0x0cc0, 0xc1bc, 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, +- 0x5b52, 0x006e, 0x0858, 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, +- 0x7281, 0x7286, 0x7744, 0x7860, 0x7286, 0x7744, 0x7860, 0x7281, +- 0x7286, 0x080c, 0x7091, 0x080c, 0x7174, 0x0005, 0x0156, 0x0136, +- 0x0146, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1515, +- 0x6118, 0x2178, 0x79a0, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, +- 0xd1bc, 0x0150, 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, +- 0x0040, 0x2009, 0x0000, 0x0028, 0xa1f8, 0x2dc4, 0x2f0d, 0xa18c, +- 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, +- 0x72fa, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, +- 0x73a9, 0x73f4, 0x7421, 0x74ee, 0x751c, 0x7524, 0x754a, 0x755b, +- 0x756c, 0x7574, 0x758a, 0x7574, 0x75eb, 0x755b, 0x760c, 0x7614, +- 0x756c, 0x7614, 0x7625, 0x72f8, 0x72f8, 0x72f8, 0x72f8, 0x72f8, +- 0x72f8, 0x72f8, 0x72f8, 0x72f8, 0x72f8, 0x72f8, 0x7e86, 0x7eab, +- 0x7ec0, 0x7ee3, 0x7f04, 0x754a, 0x72f8, 0x754a, 0x7574, 0x72f8, +- 0x7421, 0x74ee, 0x72f8, 0x8349, 0x7574, 0x72f8, 0x8369, 0x7574, +- 0x72f8, 0x756c, 0x73a2, 0x730d, 0x72f8, 0x838e, 0x8403, 0x84da, +- 0x72f8, 0x84eb, 0x7545, 0x8507, 0x72f8, 0x7f19, 0x8562, 0x72f8, +- 0x080c, 0x1515, 0x2100, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, +- 0x015e, 0x0005, 0x730b, 0x730b, 0x730b, 0x7341, 0x735f, 0x7375, +- 0x730b, 0x730b, 0x730b, 0x080c, 0x1515, 0x00d6, 0x20a1, 0x020b, +- 0x080c, 0x7642, 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, +- 0x20a3, 0x0800, 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, 0x7d68, +- 0x00de, 0x0005, 0x00d6, 0x7818, 0x2068, 0x68a0, 0x2069, 0xb500, +- 0x6ad4, 0xd2ac, 0x1110, 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, +- 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x7642, 0x20a3, 0x0500, +- 0x20a3, 0x0000, 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, +- 0x20a2, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, +- 0x20a2, 0x60c3, 0x0010, 0x080c, 0x7d68, 0x00de, 0x0005, 0x0156, +- 0x0146, 0x20a1, 0x020b, 0x080c, 0x7642, 0x20a3, 0x7800, 0x20a3, +- 0x0000, 0x7808, 0x8007, 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, +- 0x080c, 0x7d68, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, +- 0x020b, 0x080c, 0x76de, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, +- 0xdf10, 0x20a3, 0x0034, 0x2099, 0xb505, 0x20a9, 0x0004, 0x53a6, +- 0x2099, 0xb501, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xb7c6, 0x20a9, +- 0x001a, 0x3304, 0x8007, 0x20a2, 0x9398, 0x1f04, 0x7391, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x7d68, 0x014e, +- 0x015e, 0x0005, 0x2001, 0xb515, 0x2004, 0x609a, 0x080c, 0x7d68, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x7642, 0x20a3, 0x5200, 0x20a3, +- 0x0000, 0x00d6, 0x2069, 0xb552, 0x6804, 0xd084, 0x0150, 0x6828, +- 0x20a3, 0x0000, 0x0016, 0x080c, 0x2831, 0x21a2, 0x001e, 0x00de, +- 0x0028, 0x00de, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, +- 0x2099, 0xb505, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb501, 0x53a6, +- 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, +- 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xb51c, 0x20a6, 0x2001, +- 0xb51d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xb515, 0x2004, +- 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x001c, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7642, +- 0x20a3, 0x0500, 0x20a3, 0x0000, 0x2001, 0xb535, 0x2004, 0xd0ac, +- 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, +- 0x2001, 0xb51c, 0x20a6, 0x2001, 0xb51d, 0x20a6, 0x0040, 0x20a3, +- 0x0000, 0x2001, 0xb515, 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, +- 0x0004, 0x2099, 0xb505, 0x53a6, 0x60c3, 0x0010, 0x080c, 0x7d68, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x7642, 0x00c6, 0x7818, 0x2060, +- 0x2001, 0x0000, 0x080c, 0x5314, 0x00ce, 0x7818, 0xa080, 0x0028, +- 0x2004, 0xa086, 0x007e, 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, +- 0x620e, 0x0010, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, +- 0x0028, 0x2004, 0xa086, 0x007e, 0x1904, 0x74b0, 0x2001, 0xb535, +- 0x2004, 0xd0a4, 0x01c8, 0x2099, 0xb78e, 0x33a6, 0x9398, 0x20a3, +- 0x0000, 0x9398, 0x3304, 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, +- 0x9398, 0x20a3, 0x0000, 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, +- 0x33a6, 0x9398, 0x33a6, 0x00d0, 0x2099, 0xb78e, 0x33a6, 0x9398, +- 0x33a6, 0x9398, 0x3304, 0x080c, 0x5ad0, 0x1118, 0xa084, 0x37ff, +- 0x0010, 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, +- 0x2099, 0xb505, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb501, 0x53a6, +- 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x748a, 0x20a9, 0x0008, +- 0x20a3, 0x0000, 0x1f04, 0x7490, 0x2099, 0xb796, 0x3304, 0xc0dd, +- 0x20a2, 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, +- 0x0010, 0x20a9, 0x0007, 0x20a3, 0x0000, 0x1f04, 0x74ab, 0x0468, +- 0x2001, 0xb535, 0x2004, 0xd0a4, 0x0140, 0x2001, 0xb78f, 0x2004, +- 0x60e3, 0x0000, 0x080c, 0x2872, 0x60e2, 0x2099, 0xb78e, 0x20a9, +- 0x0008, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb505, 0x53a6, 0x20a9, +- 0x0004, 0x2099, 0xb501, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, +- 0x1f04, 0x74ce, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x74d4, +- 0x2099, 0xb796, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, +- 0x0000, 0x1f04, 0x74df, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, +- 0x74e5, 0x60c3, 0x0074, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, +- 0x080c, 0x7642, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, +- 0x20a3, 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, +- 0x00f6, 0x2079, 0xb552, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, +- 0x0020, 0xd1a4, 0x0110, 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, +- 0x0804, 0x75cd, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x0014, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7642, +- 0x20a3, 0x5000, 0x0804, 0x743c, 0x20a1, 0x020b, 0x080c, 0x7642, +- 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x60c3, 0x0014, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, +- 0x76d6, 0x0020, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0200, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, +- 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, +- 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, +- 0x0008, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, +- 0x20a3, 0x0200, 0x0804, 0x743c, 0x20a1, 0x020b, 0x080c, 0x76de, +- 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, +- 0x0010, 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, +- 0x7d68, 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, +- 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, +- 0xa086, 0x0014, 0x1198, 0x699c, 0xa184, 0x0030, 0x0190, 0x6998, +- 0xa184, 0xc000, 0x1140, 0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, +- 0x20a3, 0x0100, 0x0040, 0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, +- 0x0010, 0x700f, 0x0800, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, +- 0x20a2, 0x00f6, 0x2079, 0xb552, 0x7904, 0x00fe, 0xd1ac, 0x1110, +- 0xa085, 0x0020, 0xd1a4, 0x0110, 0xa085, 0x0010, 0x2009, 0xb574, +- 0x210c, 0xd184, 0x1110, 0xa085, 0x0002, 0x0026, 0x2009, 0xb572, +- 0x210c, 0xd1e4, 0x0130, 0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, +- 0x0140, 0xd1ec, 0x0130, 0xa094, 0x0030, 0xa296, 0x0010, 0x0108, +- 0xc0bd, 0x002e, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, +- 0x7d68, 0x00de, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, +- 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x0014, 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, +- 0x20a3, 0x0200, 0x0804, 0x73af, 0x20a1, 0x020b, 0x080c, 0x76de, +- 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, +- 0x60c3, 0x0008, 0x080c, 0x7d68, 0x0005, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0100, 0x20a3, +- 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, +- 0x7d68, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, +- 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, +- 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, +- 0x2014, 0xa286, 0x007e, 0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, +- 0xfffe, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x2001, 0xb79e, +- 0x2004, 0xa005, 0x0118, 0x2011, 0xb51d, 0x2214, 0x22a2, 0x04d0, +- 0xa286, 0x007f, 0x1138, 0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, +- 0xfffd, 0x00c8, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1110, 0xd2bc, +- 0x01c8, 0xa286, 0x0080, 0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, +- 0x20a3, 0xfffc, 0x0040, 0xa2e8, 0xb635, 0x2d6c, 0x6810, 0xa305, +- 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, +- 0x00de, 0x0080, 0x00d6, 0xa2e8, 0xb635, 0x2d6c, 0x6810, 0xa305, +- 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, +- 0x2214, 0x22a2, 0xa485, 0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, +- 0x0000, 0x080c, 0x7d57, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, +- 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, +- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, +- 0x22a2, 0x00d6, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, +- 0x20a3, 0x2029, 0x20a3, 0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, +- 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, +- 0x0046, 0x2019, 0x3300, 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, +- 0x0046, 0x2019, 0x2300, 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, +- 0xd2ac, 0x1118, 0xa092, 0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xb635, +- 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, +- 0x1140, 0x6814, 0xa005, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, +- 0x0028, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, +- 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, +- 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, +- 0xa485, 0x0098, 0x20a2, 0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, +- 0x7d57, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x080c, 0x7d57, 0x22a2, +- 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x002e, 0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, +- 0x0085, 0x0a0c, 0x1515, 0xa08a, 0x008c, 0x1a0c, 0x1515, 0x6118, ++ 0x8001, 0x603e, 0x2660, 0x080c, 0x9e1d, 0x00ce, 0x0048, 0x00de, ++ 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x6fd4, ++ 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, ++ 0x5408, 0x080c, 0x811e, 0x0804, 0x6fd4, 0x000e, 0x0804, 0x6fc7, ++ 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, 0x00e6, ++ 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0xa06d, 0x0188, ++ 0x6848, 0xa606, 0x1170, 0x2071, 0xb7e0, 0x7024, 0xa035, 0x0148, ++ 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, 0xc0dc, 0x6002, ++ 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079, 0x0100, ++ 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, ++ 0x00ce, 0x04a0, 0x080c, 0x7d7a, 0x78c3, 0x0000, 0x080c, 0x824d, ++ 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0xa384, 0x1000, ++ 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, 0x0100, 0x7824, ++ 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x824d, 0x003e, 0x080c, ++ 0x4ed4, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e, 0x2660, ++ 0x080c, 0x861d, 0x00ce, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x080c, 0x9ecc, 0x080c, 0x5408, 0x080c, 0x811e, 0x00fe, 0x0005, ++ 0x00e6, 0x00c6, 0x2071, 0xb7e0, 0x7004, 0xa084, 0x0007, 0x0002, ++ 0x70a2, 0x70a5, 0x70bb, 0x70d4, 0x7111, 0x70a2, 0x70a0, 0x70a0, ++ 0x080c, 0x1515, 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065, 0x0148, ++ 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, 0x7216, 0x600f, ++ 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, ++ 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, 0x4ed4, 0x6000, ++ 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, 0x6054, 0xa015, ++ 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, ++ 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, 0x05b8, 0x700c, ++ 0xac06, 0x1160, 0x080c, 0x811e, 0x600c, 0xa015, 0x0120, 0x720e, ++ 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014, 0xac06, ++ 0x1160, 0x080c, 0x811e, 0x600c, 0xa015, 0x0120, 0x7216, 0x600f, ++ 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, 0xa086, 0x0003, ++ 0x1198, 0x6018, 0x2060, 0x080c, 0x4ed4, 0x6000, 0xc0dc, 0x6002, ++ 0x080c, 0x811e, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015, 0x0110, ++ 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, 0x00ee, ++ 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x811e, 0x600c, 0xa015, ++ 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x824d, 0x7027, 0x0000, ++ 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6, 0x2069, ++ 0xb7e0, 0x6830, 0xa084, 0x0003, 0x0002, 0x7133, 0x7135, 0x7159, ++ 0x7131, 0x080c, 0x1515, 0x00de, 0x0005, 0x00c6, 0x6840, 0xa086, ++ 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015, 0x0170, ++ 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011, ++ 0xb7ff, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836, ++ 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003, 0x0003, ++ 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b, 0x0000, ++ 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a, 0x600f, ++ 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a, 0x6836, ++ 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xb7e0, 0x6804, 0xa084, ++ 0x0007, 0x0002, 0x7184, 0x7220, 0x7220, 0x7220, 0x7220, 0x7222, ++ 0x7182, 0x7182, 0x080c, 0x1515, 0x6820, 0xa005, 0x1110, 0x00de, ++ 0x0005, 0x00c6, 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, 0x6826, ++ 0x682b, 0x0000, 0x080c, 0x7272, 0x00ce, 0x00de, 0x0005, 0x6814, ++ 0xa065, 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, ++ 0x7272, 0x00ce, 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, 0xa2f5, ++ 0x0000, 0x0904, 0x721c, 0x704c, 0xa00d, 0x0118, 0x7088, 0xa005, ++ 0x01a0, 0x7054, 0xa075, 0x0120, 0xa20e, 0x0904, 0x721c, 0x0028, ++ 0x6818, 0xa20e, 0x0904, 0x721c, 0x2070, 0x704c, 0xa00d, 0x0d88, ++ 0x7088, 0xa005, 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, ++ 0x1e40, 0x080c, 0x85f4, 0x0904, 0x721c, 0x8318, 0x733e, 0x6112, ++ 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, 0x605a, ++ 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, 0xa08a, ++ 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, ++ 0x6316, 0x003e, 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xb535, 0x2004, ++ 0xd0ac, 0x1110, 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, 0x7114, ++ 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2dc4, ++ 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, 0x78a2, ++ 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, ++ 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, ++ 0x00ee, 0x00ce, 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, 0x0cd0, ++ 0x00de, 0x0005, 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, 0x0004, ++ 0x6826, 0x682b, 0x0000, 0x080c, 0x7272, 0x00ce, 0x00de, 0x0005, ++ 0x00f6, 0x00d6, 0x2069, 0xb7e0, 0x6830, 0xa086, 0x0000, 0x11d0, ++ 0x2001, 0xb50c, 0x200c, 0xd1bc, 0x1560, 0x6838, 0xa07d, 0x0190, ++ 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, ++ 0x00f6, 0x2091, 0x2400, 0x002e, 0x080c, 0x2021, 0x1130, 0x012e, ++ 0x080c, 0x7beb, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000, 0x6843, ++ 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0140, 0x6a3a, 0x780f, ++ 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c60, 0x683a, 0x6836, ++ 0x0cc0, 0xc1bc, 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b51, ++ 0x006e, 0x0858, 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, 0x7280, ++ 0x7285, 0x7743, 0x785f, 0x7285, 0x7743, 0x785f, 0x7280, 0x7285, ++ 0x080c, 0x7090, 0x080c, 0x7173, 0x0005, 0x0156, 0x0136, 0x0146, ++ 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1515, 0x6118, + 0x2178, 0x79a0, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd1bc, + 0x0150, 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, + 0x2009, 0x0000, 0x0028, 0xa1f8, 0x2dc4, 0x2f0d, 0xa18c, 0x00ff, +- 0x2c78, 0x2061, 0x0100, 0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, +- 0x00ce, 0x0005, 0x777b, 0x7785, 0x77a0, 0x7779, 0x7779, 0x7779, +- 0x777b, 0x080c, 0x1515, 0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, +- 0x0000, 0x080c, 0x7d68, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, +- 0x080c, 0x77ec, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, +- 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, 0x7d68, 0x014e, 0x0005, +- 0x0146, 0x20a1, 0x020b, 0x080c, 0x7826, 0x20a3, 0x0003, 0x20a3, +- 0x0300, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, +- 0x7d68, 0x014e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, ++ 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, 0x72f9, ++ 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x73a8, ++ 0x73f3, 0x7420, 0x74ed, 0x751b, 0x7523, 0x7549, 0x755a, 0x756b, ++ 0x7573, 0x7589, 0x7573, 0x75ea, 0x755a, 0x760b, 0x7613, 0x756b, ++ 0x7613, 0x7624, 0x72f7, 0x72f7, 0x72f7, 0x72f7, 0x72f7, 0x72f7, ++ 0x72f7, 0x72f7, 0x72f7, 0x72f7, 0x72f7, 0x7e85, 0x7eaa, 0x7ebf, ++ 0x7ee2, 0x7f03, 0x7549, 0x72f7, 0x7549, 0x7573, 0x72f7, 0x7420, ++ 0x74ed, 0x72f7, 0x834f, 0x7573, 0x72f7, 0x836f, 0x7573, 0x72f7, ++ 0x756b, 0x73a1, 0x730c, 0x72f7, 0x8394, 0x8409, 0x84e0, 0x72f7, ++ 0x84f1, 0x7544, 0x850d, 0x72f7, 0x7f18, 0x8568, 0x72f7, 0x080c, ++ 0x1515, 0x2100, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, ++ 0x0005, 0x730a, 0x730a, 0x730a, 0x7340, 0x735e, 0x7374, 0x730a, ++ 0x730a, 0x730a, 0x080c, 0x1515, 0x00d6, 0x20a1, 0x020b, 0x080c, ++ 0x7641, 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, ++ 0x0800, 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, 0x7d67, 0x00de, ++ 0x0005, 0x00d6, 0x7818, 0x2068, 0x68a0, 0x2069, 0xb500, 0x6ad4, ++ 0xd2ac, 0x1110, 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, 0x0005, ++ 0x00d6, 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, 0x0500, 0x20a3, ++ 0x0000, 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, ++ 0x6810, 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, ++ 0x60c3, 0x0010, 0x080c, 0x7d67, 0x00de, 0x0005, 0x0156, 0x0146, ++ 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, 0x7800, 0x20a3, 0x0000, ++ 0x7808, 0x8007, 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, ++ 0x7d67, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, ++ 0x080c, 0x76dd, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0xdf10, ++ 0x20a3, 0x0034, 0x2099, 0xb505, 0x20a9, 0x0004, 0x53a6, 0x2099, ++ 0xb501, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xb7c6, 0x20a9, 0x001a, ++ 0x3304, 0x8007, 0x20a2, 0x9398, 0x1f04, 0x7390, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x7d67, 0x014e, 0x015e, ++ 0x0005, 0x2001, 0xb515, 0x2004, 0x609a, 0x080c, 0x7d67, 0x0005, ++ 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, 0x5200, 0x20a3, 0x0000, ++ 0x00d6, 0x2069, 0xb552, 0x6804, 0xd084, 0x0150, 0x6828, 0x20a3, ++ 0x0000, 0x0016, 0x080c, 0x2831, 0x21a2, 0x001e, 0x00de, 0x0028, ++ 0x00de, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, ++ 0xb505, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb501, 0x53a6, 0x2001, ++ 0xb535, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, ++ 0xa082, 0x007f, 0x0238, 0x2001, 0xb51c, 0x20a6, 0x2001, 0xb51d, ++ 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xb515, 0x2004, 0xa084, ++ 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, ++ 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, ++ 0x0500, 0x20a3, 0x0000, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1138, ++ 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, ++ 0xb51c, 0x20a6, 0x2001, 0xb51d, 0x20a6, 0x0040, 0x20a3, 0x0000, ++ 0x2001, 0xb515, 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, ++ 0x2099, 0xb505, 0x53a6, 0x60c3, 0x0010, 0x080c, 0x7d67, 0x0005, ++ 0x20a1, 0x020b, 0x080c, 0x7641, 0x00c6, 0x7818, 0x2060, 0x2001, ++ 0x0000, 0x080c, 0x5313, 0x00ce, 0x7818, 0xa080, 0x0028, 0x2004, ++ 0xa086, 0x007e, 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, ++ 0x0010, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, ++ 0x2004, 0xa086, 0x007e, 0x1904, 0x74af, 0x2001, 0xb535, 0x2004, ++ 0xd0a4, 0x01c8, 0x2099, 0xb78e, 0x33a6, 0x9398, 0x20a3, 0x0000, ++ 0x9398, 0x3304, 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, 0x9398, ++ 0x20a3, 0x0000, 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, 0x33a6, ++ 0x9398, 0x33a6, 0x00d0, 0x2099, 0xb78e, 0x33a6, 0x9398, 0x33a6, ++ 0x9398, 0x3304, 0x080c, 0x5acf, 0x1118, 0xa084, 0x37ff, 0x0010, ++ 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, ++ 0xb505, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb501, 0x53a6, 0x20a9, ++ 0x0008, 0x20a3, 0x0000, 0x1f04, 0x7489, 0x20a9, 0x0008, 0x20a3, ++ 0x0000, 0x1f04, 0x748f, 0x2099, 0xb796, 0x3304, 0xc0dd, 0x20a2, ++ 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, 0x0010, ++ 0x20a9, 0x0007, 0x20a3, 0x0000, 0x1f04, 0x74aa, 0x0468, 0x2001, ++ 0xb535, 0x2004, 0xd0a4, 0x0140, 0x2001, 0xb78f, 0x2004, 0x60e3, ++ 0x0000, 0x080c, 0x2872, 0x60e2, 0x2099, 0xb78e, 0x20a9, 0x0008, ++ 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb505, 0x53a6, 0x20a9, 0x0004, ++ 0x2099, 0xb501, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, ++ 0x74cd, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x74d3, 0x2099, ++ 0xb796, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, ++ 0x1f04, 0x74de, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x74e4, ++ 0x60c3, 0x0074, 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, ++ 0x7641, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, ++ 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, ++ 0x2079, 0xb552, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, ++ 0xd1a4, 0x0110, 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, 0x0804, ++ 0x75cc, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, ++ 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, ++ 0x5000, 0x0804, 0x743b, 0x20a1, 0x020b, 0x080c, 0x7641, 0x20a3, ++ 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, ++ 0x0014, 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76d5, ++ 0x0020, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0200, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, ++ 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0100, ++ 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, ++ 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, ++ 0x0200, 0x0804, 0x743b, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, ++ 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, 0x0010, ++ 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d67, ++ 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0210, ++ 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, ++ 0x0014, 0x1198, 0x699c, 0xa184, 0x0030, 0x0190, 0x6998, 0xa184, ++ 0xc000, 0x1140, 0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, 0x20a3, ++ 0x0100, 0x0040, 0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, 0x0010, ++ 0x700f, 0x0800, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, ++ 0x00f6, 0x2079, 0xb552, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, ++ 0x0020, 0xd1a4, 0x0110, 0xa085, 0x0010, 0x2009, 0xb574, 0x210c, ++ 0xd184, 0x1110, 0xa085, 0x0002, 0x0026, 0x2009, 0xb572, 0x210c, ++ 0xd1e4, 0x0130, 0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, 0x0140, ++ 0xd1ec, 0x0130, 0xa094, 0x0030, 0xa296, 0x0010, 0x0108, 0xc0bd, ++ 0x002e, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, 0x7d67, ++ 0x00de, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0210, ++ 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, ++ 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, ++ 0x0200, 0x0804, 0x73ae, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, ++ 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, ++ 0x0008, 0x080c, 0x7d67, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, ++ 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0100, 0x20a3, 0x0000, ++ 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x7d67, ++ 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, ++ 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, ++ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, ++ 0xa286, 0x007e, 0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffe, ++ 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x2001, 0xb79e, 0x2004, ++ 0xa005, 0x0118, 0x2011, 0xb51d, 0x2214, 0x22a2, 0x04d0, 0xa286, ++ 0x007f, 0x1138, 0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, ++ 0x00c8, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1110, 0xd2bc, 0x01c8, ++ 0xa286, 0x0080, 0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, 0x20a3, ++ 0xfffc, 0x0040, 0xa2e8, 0xb635, 0x2d6c, 0x6810, 0xa305, 0x20a2, ++ 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, ++ 0x0080, 0x00d6, 0xa2e8, 0xb635, 0x2d6c, 0x6810, 0xa305, 0x20a2, ++ 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, ++ 0x22a2, 0xa485, 0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, 0x0000, ++ 0x080c, 0x7d56, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, ++ 0x00d6, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, ++ 0x2029, 0x20a3, 0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, 0x0000, ++ 0x20a3, 0xfc02, 0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, 0x0046, ++ 0x2019, 0x3300, 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, ++ 0x2019, 0x2300, 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, ++ 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, ++ 0x1118, 0xa092, 0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, ++ 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, 0x1140, ++ 0x6814, 0xa005, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0028, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, ++ 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, ++ 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0xa485, ++ 0x0098, 0x20a2, 0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, 0x7d56, ++ 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x002e, 0x0005, 0x080c, 0x7d56, 0x22a2, 0x20a3, ++ 0x0000, 0x7a08, 0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x002e, 0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0085, ++ 0x0a0c, 0x1515, 0xa08a, 0x008c, 0x1a0c, 0x1515, 0x6118, 0x2178, ++ 0x79a0, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, ++ 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, ++ 0x0000, 0x0028, 0xa1f8, 0x2dc4, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, ++ 0x2061, 0x0100, 0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, 0x00ce, ++ 0x0005, 0x777a, 0x7784, 0x779f, 0x7778, 0x7778, 0x7778, 0x777a, ++ 0x080c, 0x1515, 0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, 0x0000, ++ 0x080c, 0x7d67, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, ++ 0x77eb, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, ++ 0x20a2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x60c3, 0x000c, 0x080c, 0x7d67, 0x014e, 0x0005, 0x0146, ++ 0x20a1, 0x020b, 0x080c, 0x7825, 0x20a3, 0x0003, 0x20a3, 0x0300, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x7d67, ++ 0x014e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1118, ++ 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, ++ 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, ++ 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, ++ 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, ++ 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0x20a3, 0x0009, 0x20a3, ++ 0x0000, 0x0804, 0x76a8, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, + 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, + 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, +- 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, ++ 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, +- 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, +- 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0x20a3, 0x0009, +- 0x20a3, 0x0000, 0x0804, 0x76a9, 0x0026, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, +- 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xb635, +- 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, +- 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, +- 0xb635, 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, +- 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0x2001, +- 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, 0x7735, 0x0026, 0x20e1, +- 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, +- 0xb535, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, ++ 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x00de, ++ 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0x2001, 0x0099, ++ 0x20a2, 0x20a3, 0x0000, 0x0804, 0x7734, 0x0026, 0x20e1, 0x9080, ++ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, ++ 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, ++ 0xb635, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, + 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, +- 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, +- 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, +- 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, +- 0x22a2, 0x2001, 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, 0x7735, +- 0x00c6, 0x00f6, 0x2c78, 0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1515, +- 0xa08a, 0x0053, 0x1a0c, 0x1515, 0x7918, 0x2160, 0x61a0, 0x2011, +- 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, +- 0x0120, 0x6114, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, +- 0xa1e0, 0x2dc4, 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, +- 0xa082, 0x0040, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x78a3, 0x79af, +- 0x794c, 0x7b61, 0x78a1, 0x78a1, 0x78a1, 0x78a1, 0x78a1, 0x78a1, +- 0x78a1, 0x80d8, 0x80e8, 0x80f8, 0x8108, 0x78a1, 0x8518, 0x78a1, +- 0x80c7, 0x080c, 0x1515, 0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, +- 0x20a1, 0x020b, 0x080c, 0x7903, 0x7910, 0x2168, 0x6948, 0x7952, +- 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, +- 0x1118, 0x2001, 0x0005, 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, +- 0x0018, 0xa084, 0x0006, 0x8004, 0x0016, 0x2008, 0x7858, 0xa084, +- 0x00ff, 0x8007, 0xa105, 0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, +- 0x0002, 0x0048, 0xd1b4, 0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, +- 0x0000, 0x2230, 0x0010, 0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, +- 0xad88, 0x0017, 0x2198, 0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, +- 0x020b, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, +- 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xb7fc, 0x2003, +- 0x07d0, 0x2001, 0xb7fb, 0x2003, 0x0009, 0x080c, 0x17e2, 0x014e, +- 0x015e, 0x00de, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, +- 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, +- 0x7818, 0xa080, 0x0028, 0x2004, 0x2019, 0xb535, 0x231c, 0xd3ac, +- 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, +- 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, +- 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, +- 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, +- 0x0000, 0x2009, 0xb515, 0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, +- 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, +- 0x20a1, 0x020b, 0x00c1, 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, +- 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, +- 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x080c, 0x7d68, 0x014e, 0x013e, +- 0x015e, 0x00de, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, +- 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, +- 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, +- 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, +- 0x6810, 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, +- 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, +- 0x0000, 0x080c, 0x7d57, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, +- 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, +- 0x0156, 0x0136, 0x0146, 0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, +- 0x080c, 0x5302, 0x0148, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, +- 0x1118, 0x7820, 0xc0cd, 0x7822, 0x20a1, 0x020b, 0x080c, 0x7b17, +- 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, +- 0xf000, 0x1130, 0x7810, 0xa084, 0x0700, 0x8007, 0x0043, 0x0010, +- 0xa006, 0x002b, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x79e9, +- 0x7a7e, 0x7a8e, 0x7ac0, 0x7ad3, 0x7aee, 0x7af7, 0x79e7, 0x080c, +- 0x1515, 0x0016, 0x0036, 0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, +- 0x0003, 0x1170, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, +- 0x6868, 0x20a2, 0x6864, 0x20a2, 0x003e, 0x001e, 0x0804, 0x7aca, +- 0xa186, 0x0001, 0x190c, 0x1515, 0x6b78, 0x7820, 0xd0cc, 0x0108, +- 0xc3e5, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, +- 0x20a2, 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, +- 0x0904, 0x7a78, 0xd3c4, 0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, +- 0x6874, 0xa108, 0x0156, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, +- 0x831f, 0x23a2, 0x8000, 0x1f04, 0x7a27, 0x015e, 0x22a2, 0x22a2, +- 0x22a2, 0xa184, 0x0003, 0x0904, 0x7a78, 0x20a1, 0x020b, 0x20e1, +- 0x9080, 0x20e1, 0x4000, 0x0006, 0x7818, 0xa080, 0x0028, 0x2004, +- 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, ++ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, ++ 0x2001, 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, 0x7734, 0x00c6, ++ 0x00f6, 0x2c78, 0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1515, 0xa08a, ++ 0x0053, 0x1a0c, 0x1515, 0x7918, 0x2160, 0x61a0, 0x2011, 0xb535, ++ 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, 0x0120, ++ 0x6114, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, ++ 0x2dc4, 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, ++ 0x0040, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x78a2, 0x79ae, 0x794b, ++ 0x7b60, 0x78a0, 0x78a0, 0x78a0, 0x78a0, 0x78a0, 0x78a0, 0x78a0, ++ 0x80d7, 0x80e7, 0x80f7, 0x8107, 0x78a0, 0x851e, 0x78a0, 0x80c6, ++ 0x080c, 0x1515, 0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, 0x20a1, ++ 0x020b, 0x080c, 0x7902, 0x7910, 0x2168, 0x6948, 0x7952, 0x21a2, ++ 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, 0x1118, ++ 0x2001, 0x0005, 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, ++ 0xa084, 0x0006, 0x8004, 0x0016, 0x2008, 0x7858, 0xa084, 0x00ff, ++ 0x8007, 0xa105, 0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, 0x0002, ++ 0x0048, 0xd1b4, 0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, 0x0000, ++ 0x2230, 0x0010, 0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, 0xad88, ++ 0x0017, 0x2198, 0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, 0x020b, ++ 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084, ++ 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xb7fc, 0x2003, 0x07d0, ++ 0x2001, 0xb7fb, 0x2003, 0x0009, 0x080c, 0x17e2, 0x014e, 0x015e, ++ 0x00de, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, ++ 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0x2019, 0xb535, 0x231c, 0xd3ac, 0x1110, ++ 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, ++ 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, ++ 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, ++ 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, ++ 0x2009, 0xb515, 0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, ++ 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x20a1, ++ 0x020b, 0x00c1, 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, ++ 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, ++ 0x20a2, 0x60c3, 0x000c, 0x080c, 0x7d67, 0x014e, 0x013e, 0x015e, ++ 0x00de, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, ++ 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, ++ 0x0500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, ++ 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, ++ 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, ++ 0x2011, 0xb515, 0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, ++ 0x080c, 0x7d56, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, ++ 0x0136, 0x0146, 0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, 0x080c, ++ 0x5301, 0x0148, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x1118, ++ 0x7820, 0xc0cd, 0x7822, 0x20a1, 0x020b, 0x080c, 0x7b16, 0xa016, ++ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, ++ 0x1130, 0x7810, 0xa084, 0x0700, 0x8007, 0x0043, 0x0010, 0xa006, ++ 0x002b, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x79e8, 0x7a7d, ++ 0x7a8d, 0x7abf, 0x7ad2, 0x7aed, 0x7af6, 0x79e6, 0x080c, 0x1515, ++ 0x0016, 0x0036, 0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, 0x0003, ++ 0x1170, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, ++ 0x20a2, 0x6864, 0x20a2, 0x003e, 0x001e, 0x0804, 0x7ac9, 0xa186, ++ 0x0001, 0x190c, 0x1515, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, ++ 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, ++ 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0904, ++ 0x7a77, 0xd3c4, 0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, 0x6874, ++ 0xa108, 0x0156, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, ++ 0x23a2, 0x8000, 0x1f04, 0x7a26, 0x015e, 0x22a2, 0x22a2, 0x22a2, ++ 0xa184, 0x0003, 0x0904, 0x7a77, 0x20a1, 0x020b, 0x20e1, 0x9080, ++ 0x20e1, 0x4000, 0x0006, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, ++ 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, ++ 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, + 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, +- 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, +- 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, +- 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, +- 0x22a2, 0x000e, 0x7b20, 0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, +- 0x20a3, 0x0898, 0x20a2, 0x080c, 0x7d57, 0x22a2, 0x20a3, 0x0000, +- 0x61c2, 0x003e, 0x001e, 0x080c, 0x7d68, 0x0005, 0x2011, 0x0008, +- 0x2001, 0xb50d, 0x2004, 0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, +- 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, +- 0x0016, 0x0036, 0x7828, 0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, +- 0xd3cc, 0x0108, 0xc2e5, 0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, +- 0xa016, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, +- 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, +- 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, +- 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x080c, 0x7d68, 0x0005, +- 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, +- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, +- 0x080c, 0x7d68, 0x0005, 0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, +- 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, +- 0x20a3, 0x0008, 0x22a2, 0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, +- 0x22a2, 0x60c3, 0x0020, 0x080c, 0x7d68, 0x0005, 0x2011, 0x0008, +- 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, +- 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, +- 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, +- 0x2021, 0x0800, 0x0006, 0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, +- 0x24a2, 0x004e, 0x22a2, 0x20a2, 0x003e, 0x0804, 0x7aca, 0x0026, +- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, +- 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, ++ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, ++ 0x000e, 0x7b20, 0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, ++ 0x0898, 0x20a2, 0x080c, 0x7d56, 0x22a2, 0x20a3, 0x0000, 0x61c2, ++ 0x003e, 0x001e, 0x080c, 0x7d67, 0x0005, 0x2011, 0x0008, 0x2001, ++ 0xb50d, 0x2004, 0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, 0xd0cc, ++ 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, 0x0016, ++ 0x0036, 0x7828, 0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, 0xd3cc, ++ 0x0108, 0xc2e5, 0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, 0xa016, ++ 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, ++ 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, ++ 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, ++ 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x080c, 0x7d67, 0x0005, 0x2011, ++ 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, ++ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x080c, ++ 0x7d67, 0x0005, 0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, 0xc2e5, ++ 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, ++ 0x0008, 0x22a2, 0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, 0x22a2, ++ 0x60c3, 0x0020, 0x080c, 0x7d67, 0x0005, 0x2011, 0x0008, 0x7820, ++ 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, 0x7b10, ++ 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, 0x7820, ++ 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, 0x2021, ++ 0x0800, 0x0006, 0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x24a2, ++ 0x004e, 0x22a2, 0x20a2, 0x003e, 0x0804, 0x7ac9, 0x0026, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, ++ 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, ++ 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, + 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, +- 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, +- 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, +- 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, +- 0x22a2, 0x7820, 0xd0cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, +- 0x0898, 0x20a3, 0x0000, 0x080c, 0x7d57, 0x22a2, 0x20a3, 0x0000, +- 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, +- 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x0016, 0x0036, 0x7810, +- 0xa084, 0x0700, 0x8007, 0x003b, 0x003e, 0x001e, 0x014e, 0x013e, +- 0x015e, 0x00de, 0x0005, 0x7b7b, 0x7b7b, 0x7b7d, 0x7b7b, 0x7b7b, +- 0x7b7b, 0x7b9f, 0x7b7b, 0x080c, 0x1515, 0x7910, 0xa18c, 0xf8ff, +- 0xa18d, 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, +- 0x00d6, 0x2069, 0xb552, 0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, +- 0x00ff, 0x8007, 0x20a2, 0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, +- 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x080c, 0x7d68, 0x0005, 0x20a1, +- 0x020b, 0x2009, 0x0003, 0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, ++ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, ++ 0x7820, 0xd0cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, ++ 0x20a3, 0x0000, 0x080c, 0x7d56, 0x22a2, 0x20a3, 0x0000, 0x7a08, ++ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, ++ 0x00d6, 0x0156, 0x0136, 0x0146, 0x0016, 0x0036, 0x7810, 0xa084, ++ 0x0700, 0x8007, 0x003b, 0x003e, 0x001e, 0x014e, 0x013e, 0x015e, ++ 0x00de, 0x0005, 0x7b7a, 0x7b7a, 0x7b7c, 0x7b7a, 0x7b7a, 0x7b7a, ++ 0x7b9e, 0x7b7a, 0x080c, 0x1515, 0x7910, 0xa18c, 0xf8ff, 0xa18d, ++ 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, 0x00d6, ++ 0x2069, 0xb552, 0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, 0x00ff, ++ 0x8007, 0x20a2, 0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, 0x22a2, ++ 0x22a2, 0x60c3, 0x0001, 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, ++ 0x2009, 0x0003, 0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, ++ 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, ++ 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, ++ 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, ++ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, 0x22a2, ++ 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x080c, 0x7d56, 0x22a2, ++ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, ++ 0x0036, 0x2061, 0x0100, 0x2071, 0xb500, 0x7154, 0x7818, 0x2068, ++ 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130, 0xd0bc, 0x1120, 0x6910, ++ 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14, 0x7370, 0x7474, 0x781c, ++ 0xa0be, 0x0006, 0x0904, 0x7ca1, 0xa0be, 0x000a, 0x15e8, 0xa185, ++ 0x0200, 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, 0x2029, 0x6077, ++ 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, ++ 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, ++ 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, ++ 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x609f, 0x0000, ++ 0x080c, 0x85b9, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, ++ 0x0110, 0x2009, 0x1b58, 0x080c, 0x6a15, 0x003e, 0x004e, 0x005e, ++ 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4, 0xd0ac, 0x1110, 0xd5bc, ++ 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, ++ 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x6073, ++ 0x0809, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, ++ 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, ++ 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, ++ 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, ++ 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, ++ 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x85b9, 0x2009, ++ 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, ++ 0x080c, 0x6a15, 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, ++ 0x0005, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, 0x0002, ++ 0x0904, 0x7cf7, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1110, 0xd5bc, ++ 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, ++ 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x6073, ++ 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, ++ 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00, 0x6086, 0x7808, 0x6082, ++ 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca, ++ 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, 0xa109, 0x792a, ++ 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, ++ 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, ++ 0x2011, 0x0000, 0x629e, 0x080c, 0x85b6, 0x0804, 0x7c8f, 0x2001, ++ 0xb535, 0x2004, 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0700, ++ 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, 0xa185, 0x0700, 0x6062, ++ 0x6266, 0x606b, 0x0000, 0x646e, 0x080c, 0x5301, 0x0180, 0x00d6, ++ 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084, 0x2020, 0xa086, 0x2020, ++ 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073, 0x0889, 0x0010, 0x6073, ++ 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, ++ 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, ++ 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, ++ 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, ++ 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, ++ 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc, 0x0120, 0x080c, 0x85b9, ++ 0x0804, 0x7c8f, 0x080c, 0x85b6, 0x0804, 0x7c8f, 0x7a18, 0xa280, ++ 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x0005, ++ 0x00d6, 0x2069, 0xb7e0, 0x6843, 0x0001, 0x00de, 0x0005, 0x20e1, ++ 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x0019, 0x080c, 0x6a07, ++ 0x0005, 0x0006, 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, ++ 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x61a4, ++ 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016, ++ 0x000e, 0xe000, 0xe000, 0xe000, 0xe000, 0x61a6, 0x00ce, 0x001e, ++ 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x5acf, 0x1198, 0x2001, 0xb7fc, 0x2004, 0xa005, ++ 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b51, 0x006e, 0x1118, ++ 0x080c, 0x6a07, 0x0468, 0x00c6, 0x2061, 0xb7e0, 0x00d8, 0x6904, ++ 0xa194, 0x4000, 0x0550, 0x0831, 0x6803, 0x1000, 0x6803, 0x0000, ++ 0x00c6, 0x2061, 0xb7e0, 0x6128, 0xa192, 0x00c8, 0x1258, 0x8108, ++ 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, 0x6a07, 0x080c, ++ 0x7d71, 0x0070, 0x6124, 0xa1e5, 0x0000, 0x0140, 0x080c, 0xb444, ++ 0x080c, 0x6a10, 0x2009, 0x0014, 0x080c, 0x864c, 0x00ce, 0x0000, ++ 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0xb7fc, 0x2004, ++ 0xa005, 0x1db0, 0x00c6, 0x2061, 0xb7e0, 0x6128, 0xa192, 0x0003, ++ 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x6a07, 0x080c, 0x4b1f, ++ 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, 0x6a1d, ++ 0x2071, 0xb7e0, 0x713c, 0x81ff, 0x0590, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x5acf, 0x11a8, 0x0036, 0x2019, 0x0002, 0x080c, ++ 0x7fe4, 0x003e, 0x713c, 0x2160, 0x080c, 0xb444, 0x2009, 0x004a, ++ 0x080c, 0x864c, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b51, 0x006e, ++ 0x00b0, 0x6904, 0xa194, 0x4000, 0x01c0, 0x6803, 0x1000, 0x6803, ++ 0x0000, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe4, 0x003e, 0x713c, ++ 0x2160, 0x080c, 0xb444, 0x2009, 0x004a, 0x080c, 0x864c, 0x002e, ++ 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c58, 0x0026, 0x00e6, ++ 0x2071, 0xb7e0, 0x7048, 0xd084, 0x01c0, 0x713c, 0x81ff, 0x01a8, ++ 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e, 0x0006, 0x1138, ++ 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016, 0x0030, 0x7014, ++ 0xa084, 0x0184, 0xa085, 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, ++ 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, 0xb7e0, 0x7018, ++ 0x2068, 0x8dff, 0x0188, 0x68a0, 0xa406, 0x0118, 0x6854, 0x2068, ++ 0x0cc0, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60, 0x080c, ++ 0x511a, 0x0110, 0xa085, 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, ++ 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x20a1, 0x020b, 0x080c, ++ 0x7641, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x781c, ++ 0xa086, 0x0004, 0x1110, 0x6098, 0x0018, 0x2001, 0xb515, 0x2004, ++ 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9, 0x0010, 0xa006, ++ 0x20a2, 0x1f04, 0x7ea0, 0x20a2, 0x20a2, 0x60c3, 0x002c, 0x080c, ++ 0x7d67, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7641, ++ 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, ++ 0x60c3, 0x0008, 0x080c, 0x7d67, 0x014e, 0x015e, 0x0005, 0x0156, ++ 0x0146, 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0200, 0x20a3, ++ 0x0000, 0x20a9, 0x0006, 0x2011, 0xb540, 0x2019, 0xb541, 0x23a6, ++ 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x1f04, 0x7ecf, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, 0x7d67, 0x014e, ++ 0x015e, 0x0005, 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, ++ 0x080c, 0x76b6, 0x080c, 0x76cc, 0x7810, 0xa080, 0x0000, 0x2004, ++ 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, ++ 0xa080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x7d67, 0x002e, 0x001e, ++ 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, ++ 0x7641, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, ++ 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d67, 0x014e, 0x015e, 0x0005, ++ 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x7641, ++ 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017, 0x2098, 0x7808, ++ 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2, 0x080c, 0x7d67, ++ 0x002e, 0x001e, 0x014e, 0x015e, 0x0005, 0x00e6, 0x00c6, 0x0006, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0xb7e0, 0x700c, 0x2060, 0x8cff, ++ 0x0178, 0x080c, 0x9e58, 0x1110, 0x080c, 0x8c19, 0x600c, 0x0006, ++ 0x080c, 0xa01f, 0x080c, 0x861d, 0x080c, 0x811e, 0x00ce, 0x0c78, ++ 0x700f, 0x0000, 0x700b, 0x0000, 0x012e, 0x000e, 0x00ce, 0x00ee, ++ 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, ++ 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, ++ 0x2071, 0xb7e0, 0x7024, 0x2060, 0x8cff, 0x05a0, 0x080c, 0x7d7a, ++ 0x68c3, 0x0000, 0x080c, 0x6a10, 0x2009, 0x0013, 0x080c, 0x864c, ++ 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, ++ 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, ++ 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x7f7a, 0x7804, ++ 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, ++ 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, ++ 0x012e, 0x0005, 0x2001, 0xb500, 0x2004, 0xa096, 0x0001, 0x0590, ++ 0xa096, 0x0004, 0x0578, 0x080c, 0x6a10, 0x6814, 0xa084, 0x0001, ++ 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, ++ 0x4adc, 0x080c, 0x699c, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, ++ 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, ++ 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, ++ 0x1f04, 0x7fbd, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, ++ 0x7803, 0x0000, 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, ++ 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, ++ 0x0100, 0x2079, 0x0140, 0x2071, 0xb7e0, 0x703c, 0x2060, 0x8cff, ++ 0x0904, 0x806b, 0xa386, 0x0002, 0x1128, 0x6814, 0xa084, 0x0002, ++ 0x0904, 0x806b, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, ++ 0x8109, 0x1df0, 0x68c7, 0x0000, 0x68cb, 0x0008, 0x080c, 0x6a1d, ++ 0x080c, 0x220c, 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, ++ 0x0169, 0x2404, 0xa084, 0x000f, 0xa086, 0x0004, 0x1500, 0x68af, ++ 0x95f5, 0x68c7, 0x0000, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, ++ 0x0020, 0x2071, 0xb84a, 0x6814, 0xa084, 0x0184, 0xa085, 0x0012, ++ 0x6816, 0x7803, 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0xa386, ++ 0x0002, 0x1128, 0x7884, 0xa005, 0x1110, 0x7887, 0x0001, 0x2001, ++ 0xb7b1, 0x2004, 0x200a, 0x004e, 0xa39d, 0x0000, 0x1120, 0x2009, ++ 0x0049, 0x080c, 0x864c, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0158, ++ 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, ++ 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, 0x0002, 0x0010, ++ 0x1f04, 0x804d, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, ++ 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126, 0x2091, ++ 0x8000, 0x2069, 0xb7e0, 0x6a06, 0x012e, 0x00de, 0x0005, 0x00d6, ++ 0x0126, 0x2091, 0x8000, 0x2069, 0xb7e0, 0x6a32, 0x012e, 0x00de, ++ 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, 0x0126, 0x2071, ++ 0xb7e0, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0538, ++ 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, ++ 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, ++ 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, ++ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0x9e1d, 0x080c, ++ 0x811e, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, 0x08b8, 0x012e, ++ 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0156, 0x0146, ++ 0x20a1, 0x020b, 0x080c, 0x7902, 0x7810, 0x20a2, 0xa006, 0x20a2, ++ 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, 0x8116, 0x0156, ++ 0x0146, 0x20a1, 0x020b, 0x080c, 0x7902, 0x7810, 0x20a2, 0xa006, ++ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0478, 0x0156, ++ 0x0146, 0x20a1, 0x020b, 0x080c, 0x7902, 0x7810, 0x20a2, 0xa006, ++ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x00f8, 0x0156, ++ 0x0146, 0x20a1, 0x020b, 0x080c, 0x7902, 0x7810, 0x20a2, 0xa006, ++ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x0156, ++ 0x0146, 0x20a1, 0x020b, 0x080c, 0x7902, 0x7810, 0x20a2, 0xa006, ++ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x0089, 0x60c3, ++ 0x0020, 0x080c, 0x7d67, 0x014e, 0x015e, 0x0005, 0x00e6, 0x2071, ++ 0xb7e0, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, 0x00ee, 0x0005, ++ 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x812a, 0x20a2, 0x20a2, 0x0005, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0xb7e0, 0x7614, 0x2660, 0x2678, 0x2039, ++ 0x0001, 0x87ff, 0x0904, 0x81c6, 0x8cff, 0x0904, 0x81c6, 0x601c, ++ 0xa086, 0x0006, 0x1904, 0x81c1, 0x88ff, 0x0138, 0x2800, 0xac06, ++ 0x1904, 0x81c1, 0x2039, 0x0000, 0x0050, 0x6018, 0xa206, 0x1904, ++ 0x81c1, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x81c1, 0x7024, ++ 0xac06, 0x1598, 0x2069, 0x0100, 0x68c0, 0xa005, 0x1160, 0x6824, ++ 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x6a10, 0x080c, 0x824d, ++ 0x7027, 0x0000, 0x0410, 0x080c, 0x6a10, 0x6820, 0xd0b4, 0x0110, ++ 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x080c, 0x824d, ++ 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, ++ 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7014, 0xac36, 0x1110, ++ 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, ++ 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, ++ 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, 0x1158, 0x600f, ++ 0x0000, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0110, 0x080c, 0xb099, ++ 0x080c, 0x9e1d, 0x080c, 0x811e, 0x88ff, 0x1190, 0x00ce, 0x0804, ++ 0x8141, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8141, 0xa006, 0x012e, ++ 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, ++ 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, 0x0c88, 0x00f6, 0x00e6, ++ 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0xb7e0, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0904, 0x823d, ++ 0x601c, 0xa086, 0x0006, 0x1904, 0x8238, 0x87ff, 0x0128, 0x2700, ++ 0xac06, 0x1904, 0x8238, 0x0048, 0x6018, 0xa206, 0x1904, 0x8238, ++ 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, 0xac06, 0x1180, ++ 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe4, 0x7033, 0x0000, 0x703f, ++ 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, 0x0000, 0x003e, ++ 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, ++ 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0110, 0x080c, ++ 0xb099, 0x080c, 0x9e1d, 0x87ff, 0x1190, 0x00ce, 0x0804, 0x81e5, ++ 0x2c78, 0x600c, 0x2060, 0x0804, 0x81e5, 0xa006, 0x012e, 0x000e, ++ 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6017, ++ 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, 0x00e6, 0x2071, 0xb7e0, ++ 0x2001, 0xb500, 0x2004, 0xa086, 0x0002, 0x1118, 0x7007, 0x0005, ++ 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00c6, ++ 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb7e0, ++ 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200, 0xac06, ++ 0x11e0, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, ++ 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, ++ 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0xa085, 0x0001, 0x0020, 0x2c78, 0x600c, 0x2060, ++ 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0xb7e0, 0x760c, 0x2660, 0x2678, 0x8cff, ++ 0x0904, 0x8323, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, ++ 0x831e, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, 0x68c0, 0xa005, ++ 0x0904, 0x82fa, 0x080c, 0x7d7a, 0x68c3, 0x0000, 0x080c, 0x824d, ++ 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, ++ 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0xac36, 0x1110, ++ 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, ++ 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00, ++ 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, ++ 0x9e47, 0x1158, 0x080c, 0x2cc2, 0x080c, 0x9e58, 0x11f0, 0x080c, ++ 0x8c19, 0x00d8, 0x080c, 0x824d, 0x08c0, 0x080c, 0x9e58, 0x1118, ++ 0x080c, 0x8c19, 0x0090, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0168, ++ 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, 0x6b4a, 0x6847, ++ 0x0000, 0x080c, 0x5408, 0x080c, 0x9e11, 0x080c, 0xa01f, 0x080c, ++ 0x9e1d, 0x080c, 0x811e, 0x00ce, 0x0804, 0x82a7, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0x82a7, 0x012e, 0x000e, 0x006e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1d30, 0x080c, ++ 0xb099, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, 0x3908, 0xa006, ++ 0xa190, 0x0020, 0x221c, 0xa39e, 0x2ab7, 0x1118, 0x8210, 0x8000, ++ 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0, ++ 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, 0x003e, 0x0005, 0x00d6, ++ 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0200, 0x20a3, 0x0014, ++ 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2099, 0xb7b9, ++ 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x080c, 0x7d67, 0x00de, 0x0005, 0x20a1, ++ 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0214, 0x20a3, 0x0018, 0x20a3, ++ 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, ++ 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, ++ 0x0018, 0x080c, 0x7d67, 0x0005, 0x00d6, 0x0016, 0x2f68, 0x2009, ++ 0x0035, 0x080c, 0xa10a, 0x1904, 0x8402, 0x20a1, 0x020b, 0x080c, ++ 0x7641, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, 0x2068, 0x681c, ++ 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, 0x0028, 0x2014, 0x2001, ++ 0xb535, 0x2004, 0xd0ac, 0x11d0, 0xa286, 0x007e, 0x1128, 0x20a3, ++ 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, 0x007f, 0x1128, 0x20a3, ++ 0x00ff, 0x20a3, 0xfffd, 0x0478, 0xd2bc, 0x0180, 0xa286, 0x0080, ++ 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0428, 0xa2e8, 0xb635, ++ 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x00e8, 0x20a3, 0x0000, ++ 0x6098, 0x20a2, 0x00c0, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1138, ++ 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007e, 0x0240, 0x00d6, ++ 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0020, 0x20a3, ++ 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, 0x7d67, 0x001e, ++ 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, 0x001e, 0x00de, ++ 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, 0x691c, 0xa186, 0x0006, ++ 0x01c0, 0xa186, 0x0003, 0x0904, 0x8478, 0xa186, 0x0005, 0x0904, ++ 0x8461, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, 0x0904, 0x8469, ++ 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x84e0, 0x002e, 0x00de, ++ 0x0005, 0x080c, 0x849c, 0x2009, 0x4000, 0x6800, 0x0002, 0x8442, ++ 0x844d, 0x8444, 0x844d, 0x8449, 0x8442, 0x8442, 0x844d, 0x844d, ++ 0x844d, 0x844d, 0x8442, 0x8442, 0x8442, 0x8442, 0x8442, 0x844d, ++ 0x8442, 0x844d, 0x080c, 0x1515, 0x6820, 0xd0e4, 0x0110, 0xd0cc, ++ 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, 0x6828, 0x20a2, 0x682c, ++ 0x20a2, 0x0804, 0x8492, 0x080c, 0x849c, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, 0x0002, 0x1108, 0xa00e, ++ 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, ++ 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, ++ 0xa286, 0x0005, 0x0118, 0xa286, 0x0002, 0x1108, 0xa00e, 0x00d0, ++ 0x0419, 0x6810, 0x2068, 0x697c, 0x6810, 0xa112, 0x6980, 0x6814, ++ 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, 0x0000, 0x2004, 0xa08e, ++ 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, 0x2009, 0x4000, 0x0010, ++ 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, ++ 0x7d67, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, 0x0056, 0x0066, ++ 0x20a1, 0x020b, 0x080c, 0x76dd, 0xa006, 0x20a3, 0x0200, 0x20a2, ++ 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028, 0x2004, ++ 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0268, ++ 0x00d6, 0x2069, 0xb51c, 0x2d2c, 0x8d68, 0x2d34, 0xa0e8, 0xb635, ++ 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0030, 0x2019, 0x0000, 0x6498, ++ 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, 0x0007, 0x2004, 0xa086, ++ 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0020, 0x23a2, ++ 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, 0x004e, 0x003e, 0x0005, ++ 0x20a1, 0x020b, 0x080c, 0x76dd, 0x20a3, 0x0100, 0x20a3, 0x0000, ++ 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d67, ++ 0x0005, 0x20a1, 0x020b, 0x080c, 0x7639, 0x20a3, 0x1400, 0x20a3, ++ 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2, 0x782c, ++ 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3, 0x0000, ++ 0x60c3, 0x0010, 0x080c, 0x7d67, 0x0005, 0x20a1, 0x020b, 0x080c, ++ 0x76d5, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2, 0x7810, ++ 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d67, 0x0005, 0x0146, 0x20a1, ++ 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x7d67, 0x014e, 0x0005, + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, + 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, +- 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, +- 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, +- 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, +- 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb515, 0x2214, +- 0x22a2, 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x080c, 0x7d57, +- 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0056, +- 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xb500, 0x7154, 0x7818, +- 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130, 0xd0bc, 0x1120, +- 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14, 0x7370, 0x7474, +- 0x781c, 0xa0be, 0x0006, 0x0904, 0x7ca2, 0xa0be, 0x000a, 0x15e8, +- 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, 0x2029, +- 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, +- 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, +- 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, +- 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x609f, +- 0x0000, 0x080c, 0x85b3, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, +- 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x6a16, 0x003e, 0x004e, +- 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4, 0xd0ac, 0x1110, +- 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, +- 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, +- 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, +- 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, +- 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, +- 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, +- 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, +- 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x85b3, +- 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, +- 0x1b58, 0x080c, 0x6a16, 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, +- 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, +- 0x0002, 0x0904, 0x7cf8, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1110, +- 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, +- 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, +- 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, +- 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00, 0x6086, 0x7808, +- 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, +- 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, 0xa109, +- 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, +- 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, 0x00ff, +- 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x85b0, 0x0804, 0x7c90, +- 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, +- 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, 0xa185, 0x0700, +- 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x080c, 0x5302, 0x0180, +- 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084, 0x2020, 0xa086, +- 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073, 0x0889, 0x0010, +- 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, +- 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, +- 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, +- 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, +- 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, 0x00ff, +- 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc, 0x0120, 0x080c, +- 0x85b3, 0x0804, 0x7c90, 0x080c, 0x85b0, 0x0804, 0x7c90, 0x7a18, +- 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, +- 0x0005, 0x00d6, 0x2069, 0xb7e0, 0x6843, 0x0001, 0x00de, 0x0005, +- 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x0019, 0x080c, +- 0x6a08, 0x0005, 0x0006, 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, +- 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, +- 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, +- 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, 0xe000, 0x61a6, 0x00ce, +- 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, +- 0x2069, 0x0140, 0x080c, 0x5ad0, 0x1198, 0x2001, 0xb7fc, 0x2004, +- 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b52, 0x006e, +- 0x1118, 0x080c, 0x6a08, 0x0468, 0x00c6, 0x2061, 0xb7e0, 0x00d8, +- 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, 0x6803, 0x1000, 0x6803, +- 0x0000, 0x00c6, 0x2061, 0xb7e0, 0x6128, 0xa192, 0x00c8, 0x1258, +- 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, 0x6a08, +- 0x080c, 0x7d72, 0x0070, 0x6124, 0xa1e5, 0x0000, 0x0140, 0x080c, +- 0xb438, 0x080c, 0x6a11, 0x2009, 0x0014, 0x080c, 0x8646, 0x00ce, +- 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0xb7fc, +- 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, 0xb7e0, 0x6128, 0xa192, +- 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x6a08, 0x080c, +- 0x4b20, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, +- 0x6a1e, 0x2071, 0xb7e0, 0x713c, 0x81ff, 0x0590, 0x2061, 0x0100, +- 0x2069, 0x0140, 0x080c, 0x5ad0, 0x11a8, 0x0036, 0x2019, 0x0002, +- 0x080c, 0x7fe5, 0x003e, 0x713c, 0x2160, 0x080c, 0xb438, 0x2009, +- 0x004a, 0x080c, 0x8646, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b52, +- 0x006e, 0x00b0, 0x6904, 0xa194, 0x4000, 0x01c0, 0x6803, 0x1000, +- 0x6803, 0x0000, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe5, 0x003e, +- 0x713c, 0x2160, 0x080c, 0xb438, 0x2009, 0x004a, 0x080c, 0x8646, +- 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c58, 0x0026, +- 0x00e6, 0x2071, 0xb7e0, 0x7048, 0xd084, 0x01c0, 0x713c, 0x81ff, +- 0x01a8, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e, 0x0006, +- 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016, 0x0030, +- 0x7014, 0xa084, 0x0184, 0xa085, 0x0016, 0x7016, 0x00ee, 0x002e, +- 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, +- 0x0126, 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, 0xb7e0, +- 0x7018, 0x2068, 0x8dff, 0x0188, 0x68a0, 0xa406, 0x0118, 0x6854, +- 0x2068, 0x0cc0, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60, +- 0x080c, 0x511b, 0x0110, 0xa085, 0x0001, 0x012e, 0x000e, 0x004e, +- 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x20a1, 0x020b, +- 0x080c, 0x7642, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x781c, 0xa086, 0x0004, 0x1110, 0x6098, 0x0018, 0x2001, 0xb515, +- 0x2004, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9, 0x0010, +- 0xa006, 0x20a2, 0x1f04, 0x7ea1, 0x20a2, 0x20a2, 0x60c3, 0x002c, +- 0x080c, 0x7d68, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, +- 0x7642, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, +- 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d68, 0x014e, 0x015e, 0x0005, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0200, +- 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0xb540, 0x2019, 0xb541, +- 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x1f04, 0x7ed0, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, 0x7d68, +- 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, +- 0x020b, 0x080c, 0x76b7, 0x080c, 0x76cd, 0x7810, 0xa080, 0x0000, +- 0x2004, 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, +- 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x7d68, 0x002e, +- 0x001e, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, +- 0x080c, 0x7642, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d68, 0x014e, 0x015e, +- 0x0005, 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, +- 0x7642, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017, 0x2098, +- 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2, 0x080c, +- 0x7d68, 0x002e, 0x001e, 0x014e, 0x015e, 0x0005, 0x00e6, 0x00c6, +- 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb7e0, 0x700c, 0x2060, +- 0x8cff, 0x0178, 0x080c, 0x9e52, 0x1110, 0x080c, 0x8c13, 0x600c, +- 0x0006, 0x080c, 0xa019, 0x080c, 0x8617, 0x080c, 0x811f, 0x00ce, +- 0x0c78, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e, 0x000e, 0x00ce, +- 0x00ee, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, +- 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, +- 0x0140, 0x2071, 0xb7e0, 0x7024, 0x2060, 0x8cff, 0x05a0, 0x080c, +- 0x7d7b, 0x68c3, 0x0000, 0x080c, 0x6a11, 0x2009, 0x0013, 0x080c, +- 0x8646, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, +- 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, +- 0x0078, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x7f7b, +- 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, +- 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, +- 0x015e, 0x012e, 0x0005, 0x2001, 0xb500, 0x2004, 0xa096, 0x0001, +- 0x0590, 0xa096, 0x0004, 0x0578, 0x080c, 0x6a11, 0x6814, 0xa084, +- 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, +- 0x2011, 0x4add, 0x080c, 0x699d, 0x20a9, 0x01f4, 0x6824, 0xd094, +- 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, +- 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827, 0x0001, +- 0x0010, 0x1f04, 0x7fbe, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, +- 0x0100, 0x7803, 0x0000, 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, +- 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, 0x0156, 0x00f6, +- 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, +- 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xb7e0, 0x703c, 0x2060, +- 0x8cff, 0x0904, 0x806c, 0xa386, 0x0002, 0x1128, 0x6814, 0xa084, +- 0x0002, 0x0904, 0x806c, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, +- 0x00fa, 0x8109, 0x1df0, 0x68c7, 0x0000, 0x68cb, 0x0008, 0x080c, +- 0x6a1e, 0x080c, 0x220c, 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, +- 0x2021, 0x0169, 0x2404, 0xa084, 0x000f, 0xa086, 0x0004, 0x1500, +- 0x68af, 0x95f5, 0x68c7, 0x0000, 0x68cb, 0x0008, 0x00e6, 0x00f6, +- 0x2079, 0x0020, 0x2071, 0xb84a, 0x6814, 0xa084, 0x0184, 0xa085, +- 0x0012, 0x6816, 0x7803, 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, +- 0xa386, 0x0002, 0x1128, 0x7884, 0xa005, 0x1110, 0x7887, 0x0001, +- 0x2001, 0xb7b1, 0x2004, 0x200a, 0x004e, 0xa39d, 0x0000, 0x1120, +- 0x2009, 0x0049, 0x080c, 0x8646, 0x20a9, 0x03e8, 0x6824, 0xd094, +- 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, +- 0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, 0x0002, +- 0x0010, 0x1f04, 0x804e, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, +- 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce, +- 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126, +- 0x2091, 0x8000, 0x2069, 0xb7e0, 0x6a06, 0x012e, 0x00de, 0x0005, +- 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xb7e0, 0x6a32, 0x012e, +- 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, 0x0126, +- 0x2071, 0xb7e0, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, +- 0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, 0x660c, +- 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, +- 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, +- 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0x9e17, +- 0x080c, 0x811f, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, 0x08b8, +- 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0156, +- 0x0146, 0x20a1, 0x020b, 0x080c, 0x7903, 0x7810, 0x20a2, 0xa006, +- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, 0x8117, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7903, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0478, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7903, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x00f8, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7903, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7903, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x0089, +- 0x60c3, 0x0020, 0x080c, 0x7d68, 0x014e, 0x015e, 0x0005, 0x00e6, +- 0x2071, 0xb7e0, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, 0x00ee, +- 0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x812b, 0x20a2, 0x20a2, +- 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, +- 0x0126, 0x2091, 0x8000, 0x2071, 0xb7e0, 0x7614, 0x2660, 0x2678, +- 0x2039, 0x0001, 0x87ff, 0x0904, 0x81c0, 0x8cff, 0x0904, 0x81c0, +- 0x601c, 0xa086, 0x0006, 0x1904, 0x81bb, 0x88ff, 0x0138, 0x2800, +- 0xac06, 0x1904, 0x81bb, 0x2039, 0x0000, 0x0050, 0x6018, 0xa206, +- 0x1904, 0x81bb, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x81bb, +- 0x7024, 0xac06, 0x1560, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0518, +- 0x080c, 0x6a11, 0x6820, 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, +- 0x0008, 0x68c3, 0x0000, 0x080c, 0x8247, 0x7027, 0x0000, 0x0036, +- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, +- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, +- 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x0460, 0x7014, +- 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, +- 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, +- 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, +- 0x1158, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0x9c54, 0x0110, +- 0x080c, 0xb08d, 0x080c, 0x9e17, 0x080c, 0x811f, 0x88ff, 0x1190, +- 0x00ce, 0x0804, 0x8142, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8142, +- 0xa006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, +- 0x00fe, 0x0005, 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, 0x0c88, +- 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, +- 0x2091, 0x8000, 0x2071, 0xb7e0, 0x7638, 0x2660, 0x2678, 0x8cff, +- 0x0904, 0x8237, 0x601c, 0xa086, 0x0006, 0x1904, 0x8232, 0x87ff, +- 0x0128, 0x2700, 0xac06, 0x1904, 0x8232, 0x0048, 0x6018, 0xa206, +- 0x1904, 0x8232, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, +- 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x7fe5, 0x7033, +- 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, +- 0x0000, 0x003e, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, +- 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, +- 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, +- 0x0008, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0x9c54, +- 0x0110, 0x080c, 0xb08d, 0x080c, 0x9e17, 0x87ff, 0x1190, 0x00ce, +- 0x0804, 0x81df, 0x2c78, 0x600c, 0x2060, 0x0804, 0x81df, 0xa006, +- 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, +- 0x0005, 0x6017, 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, 0x00e6, +- 0x2071, 0xb7e0, 0x2001, 0xb500, 0x2004, 0xa086, 0x0002, 0x1118, +- 0x7007, 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, +- 0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, +- 0x2071, 0xb7e0, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, +- 0x2200, 0xac06, 0x11e0, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, +- 0x7034, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, +- 0x0010, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0110, 0x7e0e, +- 0x0008, 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0020, 0x2c78, +- 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, +- 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, +- 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb7e0, 0x760c, 0x2660, +- 0x2678, 0x8cff, 0x0904, 0x831d, 0x6018, 0xa080, 0x0028, 0x2004, +- 0xa206, 0x1904, 0x8318, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, +- 0x68c0, 0xa005, 0x0904, 0x82f4, 0x080c, 0x7d7b, 0x68c3, 0x0000, +- 0x080c, 0x8247, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, +- 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, +- 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, +- 0xac36, 0x1110, 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, 0x2c00, +- 0xaf36, 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, +- 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, +- 0x0000, 0x080c, 0x9e41, 0x1158, 0x080c, 0x2cc2, 0x080c, 0x9e52, +- 0x11f0, 0x080c, 0x8c13, 0x00d8, 0x080c, 0x8247, 0x08c0, 0x080c, +- 0x9e52, 0x1118, 0x080c, 0x8c13, 0x0090, 0x6010, 0x2068, 0x080c, +- 0x9c54, 0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, +- 0x6b4a, 0x6847, 0x0000, 0x080c, 0x5409, 0x080c, 0x9e0b, 0x080c, +- 0xa019, 0x080c, 0x9e17, 0x080c, 0x811f, 0x00ce, 0x0804, 0x82a1, +- 0x2c78, 0x600c, 0x2060, 0x0804, 0x82a1, 0x012e, 0x000e, 0x006e, +- 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, +- 0x1d30, 0x080c, 0xb08d, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, +- 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2ab7, 0x1118, +- 0x8210, 0x8000, 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, 0x2198, +- 0xa110, 0x22a0, 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, 0x003e, +- 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0200, +- 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x2099, 0xb7b9, 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, 0x20a3, +- 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x7d68, 0x00de, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0214, 0x20a3, +- 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, +- 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0018, 0x080c, 0x7d68, 0x0005, 0x00d6, 0x0016, +- 0x2f68, 0x2009, 0x0035, 0x080c, 0xa104, 0x1904, 0x83fc, 0x20a1, +- 0x020b, 0x080c, 0x7642, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, +- 0x2068, 0x681c, 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, 0x0028, +- 0x2014, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x11d0, 0xa286, 0x007e, +- 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, 0x007f, +- 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0478, 0xd2bc, 0x0180, +- 0xa286, 0x0080, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0428, +- 0xa2e8, 0xb635, 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x00e8, +- 0x20a3, 0x0000, 0x6098, 0x20a2, 0x00c0, 0x2001, 0xb535, 0x2004, +- 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007e, +- 0x0240, 0x00d6, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, +- 0x0020, 0x20a3, 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, 0x7838, +- 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, +- 0x7d68, 0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, +- 0x001e, 0x00de, 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, 0x691c, +- 0xa186, 0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x8472, 0xa186, +- 0x0005, 0x0904, 0x845b, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, +- 0x0904, 0x8463, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x84da, +- 0x002e, 0x00de, 0x0005, 0x080c, 0x8496, 0x2009, 0x4000, 0x6800, +- 0x0002, 0x843c, 0x8447, 0x843e, 0x8447, 0x8443, 0x843c, 0x843c, +- 0x8447, 0x8447, 0x8447, 0x8447, 0x843c, 0x843c, 0x843c, 0x843c, +- 0x843c, 0x8447, 0x843c, 0x8447, 0x080c, 0x1515, 0x6820, 0xd0e4, +- 0x0110, 0xd0cc, 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, 0x6828, +- 0x20a2, 0x682c, 0x20a2, 0x0804, 0x848c, 0x080c, 0x8496, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, 0x0002, +- 0x1108, 0xa00e, 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x2009, 0x4000, 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x2009, 0x4000, 0xa286, 0x0005, 0x0118, 0xa286, 0x0002, 0x1108, +- 0xa00e, 0x00d0, 0x0419, 0x6810, 0x2068, 0x697c, 0x6810, 0xa112, +- 0x6980, 0x6814, 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, 0x0000, +- 0x2004, 0xa08e, 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, 0x2009, +- 0x4000, 0x0010, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, +- 0x0018, 0x080c, 0x7d68, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, +- 0x0056, 0x0066, 0x20a1, 0x020b, 0x080c, 0x76de, 0xa006, 0x20a3, +- 0x0200, 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, +- 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1118, 0xa092, +- 0x007e, 0x0268, 0x00d6, 0x2069, 0xb51c, 0x2d2c, 0x8d68, 0x2d34, +- 0xa0e8, 0xb635, 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0030, 0x2019, +- 0x0000, 0x6498, 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, 0x0007, +- 0x2004, 0xa086, 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, 0x24a2, +- 0x0020, 0x23a2, 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, 0x004e, +- 0x003e, 0x0005, 0x20a1, 0x020b, 0x080c, 0x76de, 0x20a3, 0x0100, +- 0x20a3, 0x0000, 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, +- 0x080c, 0x7d68, 0x0005, 0x20a1, 0x020b, 0x080c, 0x763a, 0x20a3, +- 0x1400, 0x20a3, 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, +- 0x20a2, 0x782c, 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, +- 0x20a3, 0x0000, 0x60c3, 0x0010, 0x080c, 0x7d68, 0x0005, 0x20a1, +- 0x020b, 0x080c, 0x76d6, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, +- 0x20a2, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d68, 0x0005, +- 0x0146, 0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x7d68, +- 0x014e, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, +- 0x0028, 0x2004, 0x2011, 0xb535, 0x2214, 0xd2ac, 0x1110, 0xd0bc, +- 0x0188, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0300, +- 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, +- 0x00de, 0x0078, 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, +- 0x0300, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x6234, +- 0x22a2, 0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x7d57, 0x22a2, +- 0x20a3, 0x0000, 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x0005, 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, 0x20a3, +- 0x0000, 0x60c3, 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, 0x080c, +- 0x7d72, 0x080c, 0x6a08, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, +- 0x00e6, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, 0xadf0, +- 0x000f, 0x7210, 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, 0x7214, +- 0xa294, 0x0300, 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, 0xa384, +- 0x00ff, 0xa08d, 0xc200, 0x7102, 0xa384, 0xff00, 0xa215, 0x720a, +- 0x7004, 0x720c, 0x700e, 0x7206, 0x20a9, 0x000a, 0x2e98, 0x53a6, +- 0x60a3, 0x0035, 0x6a38, 0xa294, 0x7000, 0xa286, 0x3000, 0x0110, +- 0x60a3, 0x0037, 0x00ee, 0x00de, 0x003e, 0x013e, 0x015e, 0x0005, +- 0x2009, 0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, +- 0x0005, 0x2061, 0xbd00, 0x2a70, 0x7068, 0x704a, 0x704f, 0xbd00, +- 0x0005, 0x00e6, 0x0126, 0x2071, 0xb500, 0x2091, 0x8000, 0x7548, +- 0xa582, 0x0010, 0x0608, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, ++ 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0300, 0x20a2, 0x6814, ++ 0x20a2, 0x2069, 0xb51c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0078, ++ 0x00d6, 0xa0e8, 0xb635, 0x2d6c, 0x6810, 0xa085, 0x0300, 0x20a2, ++ 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x6234, 0x22a2, 0x20a3, ++ 0x0819, 0x20a3, 0x0000, 0x080c, 0x7d56, 0x22a2, 0x20a3, 0x0000, ++ 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x0005, ++ 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, 0x20a3, 0x0000, 0x60c3, ++ 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, 0x080c, 0x7d71, 0x080c, ++ 0x6a07, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, 0x00e6, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, 0xadf0, 0x000f, 0x7210, ++ 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, 0x7214, 0xa294, 0x0300, ++ 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, 0xa384, 0x00ff, 0xa08d, ++ 0xc200, 0x7102, 0xa384, 0xff00, 0xa215, 0x720a, 0x7004, 0x720c, ++ 0x700e, 0x7206, 0x20a9, 0x000a, 0x2e98, 0x53a6, 0x60a3, 0x0035, ++ 0x6a38, 0xa294, 0x7000, 0xa286, 0x3000, 0x0110, 0x60a3, 0x0037, ++ 0x00ee, 0x00de, 0x003e, 0x013e, 0x015e, 0x0005, 0x2009, 0x0092, ++ 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005, 0x2061, ++ 0xbd00, 0x2a70, 0x7068, 0x704a, 0x704f, 0xbd00, 0x0005, 0x00e6, ++ 0x0126, 0x2071, 0xb500, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010, ++ 0x0608, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, ++ 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xbd00, 0x0c98, ++ 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, ++ 0x1230, 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, ++ 0xbd00, 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xb500, 0x7548, ++ 0xa582, 0x0010, 0x0600, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, + 0x0148, 0xace0, 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, + 0xbd00, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, +- 0x705c, 0xa502, 0x1230, 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, +- 0x0005, 0x704f, 0xbd00, 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, +- 0xb500, 0x7548, 0xa582, 0x0010, 0x0600, 0x704c, 0x2060, 0x6000, +- 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c, 0xac02, 0x1208, +- 0x0cb0, 0x2061, 0xbd00, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754a, +- 0xaca8, 0x0018, 0x705c, 0xa502, 0x1228, 0x754e, 0xa085, 0x0001, +- 0x00ee, 0x0005, 0x704f, 0xbd00, 0x0cc8, 0xa006, 0x0cc8, 0xac82, +- 0xbd00, 0x0a0c, 0x1515, 0x2001, 0xb517, 0x2004, 0xac02, 0x1a0c, +- 0x1515, 0xa006, 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, +- 0x601f, 0x0000, 0x6003, 0x0000, 0x6052, 0x6056, 0x6022, 0x6026, +- 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, 0x603e, 0x2061, 0xb500, +- 0x6048, 0x8000, 0x604a, 0xa086, 0x0001, 0x0108, 0x0005, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x7174, 0x012e, 0x0cc0, 0x601c, 0xa084, +- 0x000f, 0x0002, 0x8655, 0x8664, 0x867f, 0x869a, 0xa148, 0xa163, +- 0xa17e, 0x8655, 0x8664, 0x8655, 0x86b5, 0xa186, 0x0013, 0x1128, +- 0x080c, 0x7091, 0x080c, 0x7174, 0x0005, 0xa18e, 0x0047, 0x1118, +- 0xa016, 0x080c, 0x185e, 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, +- 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, 0x867d, 0x8a95, 0x8c4d, +- 0x867d, 0x8cc2, 0x8773, 0x867d, 0x867d, 0x8a27, 0x90e9, 0x867d, +- 0x867d, 0x867d, 0x867d, 0x867d, 0x867d, 0x080c, 0x1515, 0x0066, +- 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, +- 0x8698, 0x971c, 0x8698, 0x8698, 0x8698, 0x8698, 0x8698, 0x8698, +- 0x96c7, 0x9888, 0x8698, 0x9749, 0x97c0, 0x9749, 0x97c0, 0x8698, +- 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, +- 0x0013, 0x006e, 0x0005, 0x86b3, 0x912a, 0x91f4, 0x932f, 0x948b, +- 0x86b3, 0x86b3, 0x86b3, 0x9104, 0x9677, 0x967a, 0x86b3, 0x86b3, +- 0x86b3, 0x86b3, 0x96a4, 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, +- 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, 0x86ce, 0x86ce, +- 0x86ce, 0x86fc, 0x8749, 0x86ce, 0x86ce, 0x86ce, 0x86d0, 0x86ce, +- 0x86ce, 0x86ce, 0x86ce, 0x86ce, 0x86ce, 0x86ce, 0x080c, 0x1515, +- 0xa186, 0x0003, 0x190c, 0x1515, 0x00d6, 0x6003, 0x0003, 0x6106, +- 0x6010, 0x2068, 0x684f, 0x0040, 0x687c, 0x680a, 0x6880, 0x680e, +- 0x6813, 0x0000, 0x6817, 0x0000, 0x6854, 0xa092, 0x199a, 0x0210, +- 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0xa210, 0x6216, 0x00de, +- 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x6cf1, 0x0126, 0x2091, 0x8000, +- 0x080c, 0x7231, 0x012e, 0x0005, 0xa182, 0x0047, 0x0002, 0x8708, +- 0x8708, 0x870a, 0x8723, 0x8708, 0x8708, 0x8708, 0x8708, 0x8735, +- 0x080c, 0x1515, 0x00d6, 0x0016, 0x080c, 0x7127, 0x080c, 0x7231, +- 0x6003, 0x0004, 0x6110, 0x2168, 0x684f, 0x0020, 0x685c, 0x685a, +- 0x6874, 0x687e, 0x6878, 0x6882, 0x6897, 0x0000, 0x689b, 0x0000, +- 0x001e, 0x00de, 0x0005, 0x080c, 0x7127, 0x00d6, 0x6110, 0x2168, +- 0x080c, 0x9c54, 0x0120, 0x684b, 0x0006, 0x080c, 0x5409, 0x00de, +- 0x080c, 0x8617, 0x080c, 0x7231, 0x0005, 0x080c, 0x7127, 0x080c, +- 0x2c9c, 0x00d6, 0x6110, 0x2168, 0x080c, 0x9c54, 0x0120, 0x684b, +- 0x0029, 0x080c, 0x5409, 0x00de, 0x080c, 0x8617, 0x080c, 0x7231, +- 0x0005, 0xa182, 0x0047, 0x0002, 0x8757, 0x8766, 0x8755, 0x8755, +- 0x8755, 0x8755, 0x8755, 0x8755, 0x8755, 0x080c, 0x1515, 0x00d6, +- 0x6010, 0x2068, 0x684c, 0xc0f4, 0x684e, 0x00de, 0x20e1, 0x0005, +- 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, 0x00d6, 0x6110, +- 0x2168, 0x684b, 0x0000, 0x6853, 0x0000, 0x080c, 0x5409, 0x00de, +- 0x080c, 0x8617, 0x0005, 0xa1b6, 0x0015, 0x1118, 0x080c, 0x8617, +- 0x0030, 0xa1b6, 0x0016, 0x190c, 0x1515, 0x080c, 0x8617, 0x0005, +- 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, +- 0x3310, 0x3420, 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, +- 0xa290, 0x0002, 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, +- 0x1f04, 0x878e, 0x00e6, 0x080c, 0x9c54, 0x0130, 0x6010, 0x2070, +- 0x7007, 0x0000, 0x7037, 0x0103, 0x00ee, 0x080c, 0x8617, 0x0005, +- 0x00d6, 0x0036, 0x7330, 0xa386, 0x0200, 0x1130, 0x6018, 0x2068, +- 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0130, 0x2068, +- 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x080c, 0x8617, 0x003e, +- 0x00de, 0x0005, 0x0016, 0x20a9, 0x002a, 0xae80, 0x000c, 0x2098, +- 0x6010, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a, 0x6010, +- 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x00e6, +- 0x6010, 0x2004, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x8617, +- 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, 0x7030, 0xa086, 0x0100, +- 0x0140, 0x7038, 0xa084, 0x00ff, 0x800c, 0x703c, 0xa084, 0x00ff, +- 0x8004, 0xa080, 0x0004, 0xa108, 0x21a8, 0xae80, 0x000c, 0x2098, +- 0x6010, 0xa080, 0x0002, 0x20a0, 0x080c, 0x4b90, 0x00e6, 0x080c, +- 0x9c54, 0x0140, 0x6010, 0x2070, 0x7007, 0x0000, 0x7034, 0x70b2, +- 0x7037, 0x0103, 0x00ee, 0x080c, 0x8617, 0x001e, 0x0005, 0x00e6, +- 0x00d6, 0x603f, 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035, 0x080c, +- 0xa104, 0x001e, 0x1168, 0x0026, 0x6228, 0x2268, 0x002e, 0x2071, +- 0xbb8c, 0x6b1c, 0xa386, 0x0003, 0x0130, 0xa386, 0x0006, 0x0128, +- 0x080c, 0x8617, 0x0020, 0x0031, 0x0010, 0x080c, 0x88f0, 0x00de, +- 0x00ee, 0x0005, 0x00f6, 0x6810, 0x2078, 0xa186, 0x0015, 0x0904, +- 0x88d7, 0xa18e, 0x0016, 0x1904, 0x88ee, 0x700c, 0xa08c, 0xff00, +- 0xa186, 0x1700, 0x0120, 0xa186, 0x0300, 0x1904, 0x88b6, 0x8fff, +- 0x1138, 0x6800, 0xa086, 0x000f, 0x0904, 0x889a, 0x0804, 0x88ec, +- 0x6808, 0xa086, 0xffff, 0x1904, 0x88d9, 0x784c, 0xa084, 0x0060, +- 0xa086, 0x0020, 0x1150, 0x797c, 0x7810, 0xa106, 0x1904, 0x88d9, +- 0x7980, 0x7814, 0xa106, 0x1904, 0x88d9, 0x080c, 0x9e0b, 0x6858, +- 0x7852, 0x784c, 0xc0dc, 0xc0f4, 0xc0d4, 0x784e, 0x0026, 0xa00e, +- 0x6a14, 0x2001, 0x000a, 0x080c, 0x6b41, 0x7854, 0xa20a, 0x0208, +- 0x8011, 0x7a56, 0x82ff, 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, +- 0x9a03, 0x00ce, 0x0804, 0x88ec, 0x00c6, 0x00d6, 0x2f68, 0x6838, +- 0xd0fc, 0x1118, 0x080c, 0x4c65, 0x0010, 0x080c, 0x4e4a, 0x00de, +- 0x00ce, 0x1904, 0x88d9, 0x00c6, 0x2d60, 0x080c, 0x8617, 0x00ce, +- 0x0804, 0x88ec, 0x00c6, 0x080c, 0x9ed0, 0x0190, 0x6013, 0x0000, +- 0x6818, 0x601a, 0x080c, 0xa021, 0x601f, 0x0003, 0x6904, 0x00c6, +- 0x2d60, 0x080c, 0x8617, 0x00ce, 0x080c, 0x8646, 0x00ce, 0x04e0, +- 0x2001, 0xb7b8, 0x2004, 0x683e, 0x00ce, 0x04b0, 0x7008, 0xa086, +- 0x000b, 0x11a0, 0x6018, 0x200c, 0xc1bc, 0x2102, 0x00c6, 0x2d60, +- 0x7853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, +- 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00ce, 0x00f0, 0x700c, 0xa086, +- 0x2a00, 0x1138, 0x2001, 0xb7b8, 0x2004, 0x683e, 0x00a8, 0x0481, +- 0x00a8, 0x8fff, 0x090c, 0x1515, 0x00c6, 0x00d6, 0x2d60, 0x2f68, +- 0x6837, 0x0103, 0x684b, 0x0003, 0x080c, 0x98f7, 0x080c, 0x9e0b, +- 0x080c, 0x9e17, 0x00de, 0x00ce, 0x080c, 0x8617, 0x00fe, 0x0005, +- 0xa186, 0x0015, 0x1128, 0x2001, 0xb7b8, 0x2004, 0x683e, 0x0068, +- 0xa18e, 0x0016, 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, 0xb32e, +- 0x080c, 0x6af0, 0x080c, 0x8617, 0x00ce, 0x080c, 0x8617, 0x0005, +- 0x0026, 0x0036, 0x0046, 0x7228, 0x7c80, 0x7b7c, 0xd2f4, 0x0130, +- 0x2001, 0xb7b8, 0x2004, 0x683e, 0x0804, 0x896a, 0x00c6, 0x2d60, +- 0x080c, 0x9917, 0x00ce, 0x6804, 0xa086, 0x0050, 0x1168, 0x00c6, +- 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x6c8e, +- 0x080c, 0x7174, 0x00ce, 0x04f0, 0x6800, 0xa086, 0x000f, 0x01c8, +- 0x8fff, 0x090c, 0x1515, 0x6820, 0xd0dc, 0x1198, 0x6800, 0xa086, +- 0x0004, 0x1198, 0x784c, 0xd0ac, 0x0180, 0x784c, 0xc0dc, 0xc0f4, +- 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852, 0x2001, 0x0001, 0x682e, +- 0x00e0, 0x2001, 0x0007, 0x682e, 0x00c0, 0x784c, 0xd0b4, 0x1130, +- 0xd0ac, 0x0db8, 0x784c, 0xd0f4, 0x1da0, 0x0c38, 0xd2ec, 0x1d88, +- 0x7024, 0xa306, 0x1118, 0x7020, 0xa406, 0x0d58, 0x7020, 0x6836, +- 0x7024, 0x683a, 0x2001, 0x0005, 0x682e, 0x080c, 0x9f5d, 0x080c, +- 0x7174, 0x0010, 0x080c, 0x8617, 0x004e, 0x003e, 0x002e, 0x0005, +- 0x00e6, 0x00d6, 0x0026, 0x6034, 0x2068, 0x6a1c, 0xa286, 0x0007, +- 0x0904, 0x89ce, 0xa286, 0x0002, 0x0904, 0x89ce, 0xa286, 0x0000, +- 0x0904, 0x89ce, 0x6808, 0x6338, 0xa306, 0x1904, 0x89ce, 0x2071, +- 0xbb8c, 0xa186, 0x0015, 0x05e0, 0xa18e, 0x0016, 0x1190, 0x6030, +- 0xa084, 0x00ff, 0xa086, 0x0001, 0x1160, 0x700c, 0xa086, 0x2a00, +- 0x1140, 0x6034, 0xa080, 0x0008, 0x200c, 0xc1dd, 0xc1f5, 0x2102, +- 0x0438, 0x00c6, 0x6034, 0x2060, 0x6104, 0xa186, 0x004b, 0x01a0, +- 0xa186, 0x004c, 0x0188, 0xa186, 0x004d, 0x0170, 0xa186, 0x004e, +- 0x0158, 0xa186, 0x0052, 0x0140, 0x6010, 0x2068, 0x080c, 0x9c54, +- 0x090c, 0x1515, 0x6853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, +- 0x601f, 0x0002, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00ce, 0x0030, +- 0x6034, 0x2070, 0x2001, 0xb7b8, 0x2004, 0x703e, 0x080c, 0x8617, +- 0x002e, 0x00de, 0x00ee, 0x0005, 0x00d6, 0x20a9, 0x000e, 0x2e98, +- 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x1558, 0x6018, 0x2068, +- 0x0156, 0x0036, 0x0026, 0xae90, 0x000c, 0xa290, 0x0004, 0x20a9, +- 0x0004, 0xad98, 0x000a, 0x080c, 0x90d4, 0x002e, 0x003e, 0x015e, +- 0x11d8, 0x0156, 0x0036, 0x0026, 0xae90, 0x000c, 0xa290, 0x0008, +- 0x20a9, 0x0004, 0xad98, 0x0006, 0x080c, 0x90d4, 0x002e, 0x003e, +- 0x015e, 0x1150, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800, 0xc08d, +- 0x6802, 0x00de, 0x0804, 0x879a, 0x080c, 0x2c9c, 0x00c6, 0x080c, +- 0x85c1, 0x2f00, 0x601a, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, +- 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x4efe, 0x080c, +- 0x4f2b, 0x080c, 0x6cd4, 0x080c, 0x7174, 0x00ce, 0x0c10, 0x2100, +- 0xa1b2, 0x0080, 0x1a0c, 0x1515, 0xa1b2, 0x0040, 0x1a04, 0x8a8b, +- 0x0002, 0x8a7f, 0x8a73, 0x8a7f, 0x8a7f, 0x8a7f, 0x8a7f, 0x8a71, +- 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, +- 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, +- 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, +- 0x8a7f, 0x8a71, 0x8a7f, 0x8a7f, 0x8a71, 0x8a71, 0x8a71, 0x8a71, +- 0x8a71, 0x8a7f, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, +- 0x8a71, 0x8a71, 0x8a71, 0x8a7f, 0x8a7f, 0x8a71, 0x8a71, 0x8a71, +- 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a71, 0x8a7f, 0x8a71, +- 0x8a71, 0x080c, 0x1515, 0x6003, 0x0001, 0x6106, 0x080c, 0x6cd4, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x7174, 0x012e, 0x0005, 0x6003, +- 0x0001, 0x6106, 0x080c, 0x6cd4, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x7174, 0x012e, 0x0005, 0x2600, 0x0002, 0x8a7f, 0x8a7f, 0x8a93, +- 0x8a7f, 0x8a7f, 0x8a93, 0x080c, 0x1515, 0x6004, 0xa0b2, 0x0080, +- 0x1a0c, 0x1515, 0xa1b6, 0x0013, 0x0904, 0x8b45, 0xa1b6, 0x0027, +- 0x1904, 0x8b0b, 0x080c, 0x7091, 0x6004, 0x080c, 0x9e41, 0x0190, +- 0x080c, 0x9e52, 0x0904, 0x8b05, 0xa08e, 0x0021, 0x0904, 0x8b08, +- 0xa08e, 0x0022, 0x0904, 0x8b05, 0xa08e, 0x003d, 0x0904, 0x8b08, +- 0x0804, 0x8afe, 0x080c, 0x2cc2, 0x2001, 0x0007, 0x080c, 0x4efe, +- 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, 0x8c13, 0xa186, 0x007e, +- 0x1148, 0x2001, 0xb535, 0x2014, 0xc285, 0x080c, 0x5ad0, 0x1108, +- 0xc2ad, 0x2202, 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, 0x2019, +- 0x0028, 0x080c, 0x8293, 0x002e, 0x080c, 0xb381, 0x003e, 0x002e, +- 0x001e, 0x0016, 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, +- 0x6df6, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x00c6, 0x6018, +- 0xa065, 0x0110, 0x080c, 0x51ab, 0x00ce, 0x2c08, 0x080c, 0xae76, +- 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0x4f6d, 0x080c, 0xa019, +- 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, 0x080c, 0x8c13, 0x0cb0, +- 0x080c, 0x8c41, 0x0c98, 0xa186, 0x0014, 0x1db0, 0x080c, 0x7091, +- 0x080c, 0x2c9c, 0x080c, 0x9e41, 0x1188, 0x080c, 0x2cc2, 0x6018, +- 0xa080, 0x0028, 0x200c, 0x080c, 0x8c13, 0xa186, 0x007e, 0x1128, +- 0x2001, 0xb535, 0x200c, 0xc185, 0x2102, 0x08c0, 0x080c, 0x9e52, +- 0x1118, 0x080c, 0x8c13, 0x0890, 0x6004, 0xa08e, 0x0032, 0x1158, +- 0x00e6, 0x00f6, 0x2071, 0xb582, 0x2079, 0x0000, 0x080c, 0x2fcf, +- 0x00fe, 0x00ee, 0x0818, 0x6004, 0xa08e, 0x0021, 0x0d50, 0xa08e, +- 0x0022, 0x090c, 0x8c13, 0x0804, 0x8afe, 0xa0b2, 0x0040, 0x1a04, +- 0x8c08, 0x2008, 0x0002, 0x8b8d, 0x8b8e, 0x8b91, 0x8b94, 0x8b97, +- 0x8b9a, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, +- 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, +- 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, +- 0x8b8b, 0x8b9d, 0x8bac, 0x8b8b, 0x8bae, 0x8bac, 0x8b8b, 0x8b8b, +- 0x8b8b, 0x8b8b, 0x8b8b, 0x8bac, 0x8bac, 0x8b8b, 0x8b8b, 0x8b8b, +- 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8b8b, 0x8be8, 0x8bac, 0x8b8b, +- 0x8ba8, 0x8b8b, 0x8b8b, 0x8b8b, 0x8ba9, 0x8b8b, 0x8b8b, 0x8b8b, +- 0x8bac, 0x8bdf, 0x8b8b, 0x080c, 0x1515, 0x00f0, 0x2001, 0x000b, +- 0x0460, 0x2001, 0x0003, 0x0448, 0x2001, 0x0005, 0x0430, 0x2001, +- 0x0001, 0x0418, 0x2001, 0x0009, 0x0400, 0x080c, 0x7091, 0x6003, +- 0x0005, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x080c, 0x7174, 0x00a0, +- 0x0018, 0x0010, 0x080c, 0x4efe, 0x0804, 0x8bf9, 0x080c, 0x7091, +- 0x2001, 0xb7b6, 0x2004, 0x6016, 0x2001, 0xb7b8, 0x2004, 0x603e, +- 0x6003, 0x0004, 0x080c, 0x7174, 0x0005, 0x080c, 0x4efe, 0x080c, +- 0x7091, 0x6003, 0x0002, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x0036, +- 0x2019, 0xb55d, 0x2304, 0xa084, 0xff00, 0x1120, 0x2001, 0xb7b6, +- 0x201c, 0x0040, 0x8007, 0xa09a, 0x0004, 0x0ec0, 0x8003, 0x801b, +- 0x831b, 0xa318, 0x6316, 0x003e, 0x080c, 0x7174, 0x08e8, 0x080c, +- 0x7091, 0x080c, 0xa019, 0x080c, 0x8617, 0x080c, 0x7174, 0x08a0, +- 0x00e6, 0x00f6, 0x2071, 0xb582, 0x2079, 0x0000, 0x080c, 0x2fcf, +- 0x00fe, 0x00ee, 0x080c, 0x7091, 0x080c, 0x8617, 0x080c, 0x7174, +- 0x0818, 0x080c, 0x7091, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x6003, +- 0x0002, 0x2001, 0xb7b6, 0x2004, 0x6016, 0x080c, 0x7174, 0x0005, +- 0x2600, 0x2008, 0x0002, 0x8c11, 0x8c11, 0x8c11, 0x8bf9, 0x8bf9, +- 0x8c11, 0x080c, 0x1515, 0x00e6, 0x0026, 0x0016, 0x080c, 0x9c54, +- 0x0508, 0x6010, 0x2070, 0x7034, 0xa086, 0x0139, 0x1148, 0x2001, +- 0x0030, 0x2009, 0x0000, 0x2011, 0x4005, 0x080c, 0xa0d0, 0x0090, +- 0x7038, 0xd0fc, 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0xa08e, +- 0x0021, 0x0160, 0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, 0x0103, +- 0x7033, 0x0100, 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, +- 0x0cc8, 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, +- 0x0103, 0x7023, 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, 0x2668, +- 0x6804, 0xa084, 0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1515, +- 0x6604, 0xa6b6, 0x0043, 0x1120, 0x080c, 0xa08c, 0x0804, 0x8cb2, +- 0x6604, 0xa6b6, 0x0033, 0x1120, 0x080c, 0xa03c, 0x0804, 0x8cb2, +- 0x6604, 0xa6b6, 0x0028, 0x1120, 0x080c, 0x9e82, 0x0804, 0x8cb2, +- 0x6604, 0xa6b6, 0x0029, 0x1118, 0x080c, 0x9e99, 0x04d8, 0x6604, +- 0xa6b6, 0x001f, 0x1118, 0x080c, 0x8780, 0x04a0, 0x6604, 0xa6b6, +- 0x0000, 0x1118, 0x080c, 0x89d4, 0x0468, 0x6604, 0xa6b6, 0x0022, +- 0x1118, 0x080c, 0x87a8, 0x0430, 0x6604, 0xa6b6, 0x0035, 0x1118, +- 0x080c, 0x880f, 0x00f8, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, +- 0x8970, 0x00c0, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x87c2, +- 0x0088, 0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x87e2, 0x0050, +- 0xa1b6, 0x0015, 0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, 0x1118, +- 0x0804, 0x8e76, 0x0005, 0x080c, 0x865d, 0x0ce0, 0x8cd9, 0x8cdc, +- 0x8cd9, 0x8d1e, 0x8cd9, 0x8e03, 0x8e84, 0x8cd9, 0x8cd9, 0x8e52, +- 0x8cd9, 0x8e66, 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, +- 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, 0x00e6, 0xacf0, 0x0004, +- 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x8617, +- 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, 0xb500, 0x7084, +- 0xa086, 0x0074, 0x1530, 0x080c, 0xae4d, 0x11b0, 0x00d6, 0x6018, +- 0x2068, 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110, 0xc0c5, +- 0x6802, 0x00d9, 0x00de, 0x2001, 0x0006, 0x080c, 0x4efe, 0x080c, +- 0x2cc2, 0x080c, 0x8617, 0x0078, 0x2001, 0x000a, 0x080c, 0x4efe, +- 0x080c, 0x2cc2, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x6cd4, +- 0x0010, 0x080c, 0x8df0, 0x00ee, 0x0005, 0x6800, 0xd084, 0x0168, +- 0x2001, 0x0000, 0x080c, 0x4eec, 0x2069, 0xb552, 0x6804, 0xd0a4, +- 0x0120, 0x2001, 0x0006, 0x080c, 0x4f2b, 0x0005, 0x00d6, 0x2011, +- 0xb521, 0x2204, 0xa086, 0x0074, 0x1904, 0x8ded, 0x6018, 0x2068, +- 0x6aa0, 0xa286, 0x007e, 0x1120, 0x080c, 0x8f9c, 0x0804, 0x8d8c, +- 0x080c, 0x8f92, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, +- 0x0080, 0x11c0, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005, +- 0x0138, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833, 0x0200, +- 0x2001, 0x0006, 0x080c, 0x4efe, 0x080c, 0x2cc2, 0x080c, 0x8617, +- 0x0804, 0x8dee, 0x00e6, 0x2071, 0xb535, 0x2e04, 0xd09c, 0x0188, +- 0x2071, 0xbb80, 0x7108, 0x720c, 0xa18c, 0x00ff, 0x1118, 0xa284, +- 0xff00, 0x0138, 0x6018, 0x2070, 0x70a0, 0xd0bc, 0x1110, 0x7112, +- 0x7216, 0x00ee, 0x6010, 0xa005, 0x0198, 0x2068, 0x6838, 0xd0f4, +- 0x0178, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0039, 0x1958, 0x2001, +- 0x0000, 0x2009, 0x0000, 0x2011, 0x4000, 0x080c, 0xa0d0, 0x0840, +- 0x2001, 0x0004, 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, 0x0003, +- 0x080c, 0x6cd4, 0x0804, 0x8dee, 0x685c, 0xd0e4, 0x01d8, 0x080c, +- 0x9fcc, 0x080c, 0x5ad0, 0x0118, 0xd0dc, 0x1904, 0x8d48, 0x2011, +- 0xb535, 0x2204, 0xc0ad, 0x2012, 0x2001, 0xb78f, 0x2004, 0x00f6, +- 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x2872, 0x78e2, 0x00fe, +- 0x0804, 0x8d48, 0x080c, 0xa002, 0x2011, 0xb535, 0x2204, 0xc0a5, +- 0x2012, 0x0006, 0x080c, 0xaf6f, 0x000e, 0x1904, 0x8d48, 0xc0b5, +- 0x2012, 0x2001, 0x0006, 0x080c, 0x4efe, 0x2001, 0x0000, 0x080c, +- 0x4eec, 0x00c6, 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea, +- 0x7932, 0x7936, 0x00fe, 0x080c, 0x2847, 0x00f6, 0x2079, 0xb500, +- 0x7976, 0x2100, 0x2009, 0x0000, 0x080c, 0x281d, 0x7952, 0x00fe, +- 0x8108, 0x080c, 0x4f4e, 0x2c00, 0x00ce, 0x1904, 0x8d48, 0x601a, +- 0x2001, 0x0002, 0x080c, 0x4efe, 0x601f, 0x0001, 0x6003, 0x0001, +- 0x6007, 0x0002, 0x080c, 0x6cd4, 0x0008, 0x0011, 0x00de, 0x0005, +- 0x2001, 0x0007, 0x080c, 0x4efe, 0x2001, 0xb500, 0x2004, 0xa086, +- 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x4f2b, 0x080c, 0x2cc2, +- 0x080c, 0x8617, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xb500, +- 0x7084, 0xa086, 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, 0x1128, +- 0x6010, 0xa005, 0x1110, 0x080c, 0x3f3f, 0x00d6, 0x6018, 0x2068, +- 0x080c, 0x504c, 0x080c, 0x8d0d, 0x00de, 0x080c, 0x904b, 0x1550, +- 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, 0x2001, +- 0x0006, 0x080c, 0x4efe, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, +- 0xa084, 0x00ff, 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, 0x2009, +- 0x0000, 0x2011, 0x4000, 0x080c, 0xa0d0, 0x0030, 0x7007, 0x0000, +- 0x7037, 0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2cc2, 0x080c, +- 0x8617, 0x0020, 0x080c, 0x8c13, 0x080c, 0x8df0, 0x001e, 0x002e, +- 0x00ee, 0x0005, 0x2011, 0xb521, 0x2204, 0xa086, 0x0014, 0x1158, +- 0x2001, 0x0002, 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, 0x0001, +- 0x080c, 0x6cd4, 0x0010, 0x080c, 0x8df0, 0x0005, 0x2011, 0xb521, +- 0x2204, 0xa086, 0x0004, 0x1138, 0x2001, 0x0007, 0x080c, 0x4efe, +- 0x080c, 0x8617, 0x0010, 0x080c, 0x8df0, 0x0005, 0x000b, 0x0005, +- 0x8cd9, 0x8e8f, 0x8cd9, 0x8ec3, 0x8cd9, 0x8f4e, 0x8e84, 0x8cd9, +- 0x8cd9, 0x8f61, 0x8cd9, 0x8f71, 0x6604, 0xa686, 0x0003, 0x0904, +- 0x8e03, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x8617, 0x0005, 0x00d6, +- 0x00c6, 0x080c, 0x8f81, 0x1178, 0x2001, 0x0000, 0x080c, 0x4eec, +- 0x2001, 0x0002, 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, 0x0002, +- 0x080c, 0x6cd4, 0x00e8, 0x2009, 0xbb8e, 0x2104, 0xa086, 0x0009, +- 0x1160, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0170, +- 0x8001, 0x6842, 0x6017, 0x000a, 0x0058, 0x2009, 0xbb8f, 0x2104, +- 0xa084, 0xff00, 0xa086, 0x1900, 0x1108, 0x08d0, 0x080c, 0x8df0, +- 0x00ce, 0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x8f8f, +- 0x00d6, 0x2069, 0xb79e, 0x2d04, 0xa005, 0x0168, 0x6018, 0x2068, +- 0x68a0, 0xa086, 0x007e, 0x1138, 0x2069, 0xb51d, 0x2d04, 0x8000, +- 0x206a, 0x00de, 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, 0x080c, +- 0x4eec, 0x2001, 0x0002, 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, +- 0x0002, 0x080c, 0x6cd4, 0x0480, 0x00d6, 0x6010, 0x2068, 0x080c, +- 0x9c54, 0x00de, 0x0108, 0x6a34, 0x080c, 0x8c13, 0x2009, 0xbb8e, +- 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0500, 0xa686, 0x000b, +- 0x01c8, 0x2009, 0xbb8f, 0x2104, 0xa084, 0xff00, 0x1118, 0xa686, +- 0x0009, 0x01a0, 0xa086, 0x1900, 0x1168, 0xa686, 0x0009, 0x0170, +- 0x2001, 0x0004, 0x080c, 0x4efe, 0x2001, 0x0028, 0x6016, 0x6007, +- 0x004b, 0x0010, 0x080c, 0x8df0, 0x002e, 0x0005, 0x00d6, 0xa286, +- 0x0139, 0x0160, 0x6010, 0x2068, 0x080c, 0x9c54, 0x0148, 0x6834, +- 0xa086, 0x0139, 0x0118, 0x6838, 0xd0fc, 0x0110, 0x00de, 0x0c50, +- 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0140, 0x8001, +- 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x00de, 0x08e8, 0x68a0, +- 0xa086, 0x007e, 0x1138, 0x00e6, 0x2071, 0xb500, 0x080c, 0x4bc7, +- 0x00ee, 0x0010, 0x080c, 0x2c9c, 0x00de, 0x0860, 0x080c, 0x8f8f, +- 0x1158, 0x2001, 0x0004, 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, +- 0x0003, 0x080c, 0x6cd4, 0x0020, 0x080c, 0x8c13, 0x080c, 0x8df0, +- 0x0005, 0x0469, 0x1158, 0x2001, 0x0008, 0x080c, 0x4efe, 0x6003, +- 0x0001, 0x6007, 0x0005, 0x080c, 0x6cd4, 0x0010, 0x080c, 0x8df0, +- 0x0005, 0x00e9, 0x1158, 0x2001, 0x000a, 0x080c, 0x4efe, 0x6003, +- 0x0001, 0x6007, 0x0001, 0x080c, 0x6cd4, 0x0010, 0x080c, 0x8df0, +- 0x0005, 0x2009, 0xbb8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, +- 0xbb8f, 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, +- 0x0001, 0x0005, 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, +- 0x4fb9, 0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, +- 0x0016, 0x6018, 0x2068, 0x2071, 0xb535, 0x2e04, 0xa085, 0x0003, +- 0x2072, 0x080c, 0x9020, 0x0560, 0x2009, 0xb535, 0x2104, 0xc0cd, +- 0x200a, 0x2001, 0xb553, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, +- 0x2009, 0x002a, 0x080c, 0xb0dc, 0x2001, 0xb50c, 0x200c, 0xc195, +- 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x080c, 0x2c6f, 0x2071, +- 0xb500, 0x080c, 0x2ab8, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, +- 0x007f, 0x080c, 0x2d97, 0x8108, 0x1f04, 0x8fd1, 0x015e, 0x00ce, +- 0x080c, 0x8f92, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xbb80, +- 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xb51c, 0x206a, +- 0x78e6, 0x0006, 0x8e70, 0x2e04, 0x2069, 0xb51d, 0x206a, 0x78ea, +- 0x7832, 0x7836, 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, +- 0xb528, 0x200a, 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x2847, +- 0x080c, 0x5ad0, 0x0170, 0x2069, 0xbb8e, 0x2071, 0xb7b2, 0x6810, +- 0x2072, 0x6814, 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, +- 0x9fcc, 0x0040, 0x2001, 0x0006, 0x080c, 0x4efe, 0x080c, 0x2cc2, +- 0x080c, 0x8617, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, +- 0x0026, 0x0036, 0x00e6, 0x0156, 0x2019, 0xb528, 0x231c, 0x83ff, +- 0x01e8, 0x2071, 0xbb80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, +- 0xff00, 0xa205, 0xa306, 0x1190, 0x2011, 0xbb96, 0xad98, 0x000a, +- 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1148, 0x2011, 0xbb9a, 0xad98, +- 0x0006, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1100, 0x015e, 0x00ee, +- 0x003e, 0x002e, 0x0005, 0x00e6, 0x2071, 0xbb8c, 0x7004, 0xa086, +- 0x0014, 0x11a8, 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, +- 0x0160, 0xa084, 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, +- 0x1110, 0xd0ac, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00ee, +- 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, +- 0x0006, 0x0126, 0x2091, 0x8000, 0x2029, 0xb7e9, 0x252c, 0x2021, +- 0xb7ef, 0x2424, 0x2061, 0xbd00, 0x2071, 0xb500, 0x7248, 0x7068, +- 0xa202, 0x16f0, 0x080c, 0xb104, 0x05a0, 0x671c, 0xa786, 0x0001, +- 0x0580, 0xa786, 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, +- 0xac06, 0x0538, 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, +- 0x194d, 0xa786, 0x0008, 0x1148, 0x080c, 0x9e52, 0x1130, 0x00ce, +- 0x080c, 0x8c13, 0x080c, 0x9e17, 0x00a0, 0x6010, 0x2068, 0x080c, +- 0x9c54, 0x0160, 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, +- 0x6847, 0x0000, 0x080c, 0x5409, 0x080c, 0x9e0b, 0x080c, 0x9e17, +- 0x00ce, 0xace0, 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0x907e, +- 0x012e, 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, +- 0x00ee, 0x0005, 0xa786, 0x0006, 0x1118, 0x080c, 0xb08d, 0x0c30, +- 0xa786, 0x000a, 0x09e0, 0x08c8, 0x220c, 0x2304, 0xa106, 0x1130, +- 0x8210, 0x8318, 0x1f04, 0x90d4, 0xa006, 0x0005, 0x2304, 0xa102, +- 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, +- 0x0005, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1515, 0x080c, 0x9e41, +- 0x0120, 0x080c, 0x9e52, 0x0168, 0x0028, 0x080c, 0x2cc2, 0x080c, +- 0x9e52, 0x0138, 0x080c, 0x7091, 0x080c, 0x8617, 0x080c, 0x7174, +- 0x0005, 0x080c, 0x8c13, 0x0cb0, 0xa182, 0x0040, 0x0002, 0x911a, +- 0x911a, 0x911a, 0x911a, 0x911a, 0x911a, 0x911a, 0x911a, 0x911a, +- 0x911a, 0x911a, 0x911c, 0x911c, 0x911c, 0x911c, 0x911a, 0x911a, +- 0x911a, 0x911c, 0x080c, 0x1515, 0x600b, 0xffff, 0x6003, 0x0001, +- 0x6106, 0x080c, 0x6c8e, 0x0126, 0x2091, 0x8000, 0x080c, 0x7174, +- 0x012e, 0x0005, 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, +- 0x0804, 0x91b6, 0xa186, 0x0027, 0x11e8, 0x080c, 0x7091, 0x080c, +- 0x2c9c, 0x00d6, 0x6110, 0x2168, 0x080c, 0x9c54, 0x0168, 0x6837, +- 0x0103, 0x684b, 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, +- 0x080c, 0x5409, 0x080c, 0x9e0b, 0x00de, 0x080c, 0x8617, 0x080c, +- 0x7174, 0x0005, 0xa186, 0x0014, 0x1120, 0x6004, 0xa082, 0x0040, +- 0x0428, 0xa186, 0x0046, 0x0138, 0xa186, 0x0045, 0x0120, 0xa186, +- 0x0047, 0x190c, 0x1515, 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, +- 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x6b75, +- 0x002e, 0x001e, 0x000e, 0x012e, 0xe000, 0x6000, 0xa086, 0x0002, +- 0x1110, 0x0804, 0x91f4, 0x080c, 0x865d, 0x0005, 0x0002, 0x9194, +- 0x9192, 0x9192, 0x9192, 0x9192, 0x9192, 0x9192, 0x9192, 0x9192, +- 0x9192, 0x9192, 0x91af, 0x91af, 0x91af, 0x91af, 0x9192, 0x91af, +- 0x9192, 0x91af, 0x080c, 0x1515, 0x080c, 0x7091, 0x00d6, 0x6110, +- 0x2168, 0x080c, 0x9c54, 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, +- 0x6847, 0x0000, 0x6850, 0xc0ec, 0x6852, 0x080c, 0x5409, 0x080c, +- 0x9e0b, 0x00de, 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, 0x080c, +- 0x7091, 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, 0x0002, 0x91cc, +- 0x91ca, 0x91ca, 0x91ca, 0x91ca, 0x91ca, 0x91ca, 0x91ca, 0x91ca, +- 0x91ca, 0x91ca, 0x91de, 0x91de, 0x91de, 0x91de, 0x91ca, 0x91ed, +- 0x91ca, 0x91de, 0x080c, 0x1515, 0x080c, 0x7091, 0x2001, 0xb7b8, +- 0x2004, 0x603e, 0x6003, 0x0002, 0x080c, 0x7174, 0x6010, 0xa088, +- 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x0005, 0x080c, 0x7091, +- 0x2001, 0xb7b6, 0x2004, 0x6016, 0x2001, 0xb7b8, 0x2004, 0x603e, +- 0x6003, 0x000f, 0x080c, 0x7174, 0x0005, 0x080c, 0x7091, 0x080c, +- 0x8617, 0x080c, 0x7174, 0x0005, 0xa182, 0x0040, 0x0002, 0x920a, +- 0x920a, 0x920a, 0x920a, 0x920a, 0x920c, 0x92f1, 0x9320, 0x920a, +- 0x920a, 0x920a, 0x920a, 0x920a, 0x920a, 0x920a, 0x920a, 0x920a, +- 0x920a, 0x920a, 0x080c, 0x1515, 0x00e6, 0x00d6, 0x603f, 0x0000, +- 0x2071, 0xbb80, 0x7124, 0x610a, 0x2071, 0xbb8c, 0x6110, 0x2168, +- 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0904, 0x92ba, 0xa68c, 0x0c00, +- 0x0518, 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, 0x01c8, 0x684c, +- 0xd0ac, 0x01b0, 0x6020, 0xd0dc, 0x1198, 0x6850, 0xd0bc, 0x1180, +- 0x7318, 0x6814, 0xa306, 0x1904, 0x92cd, 0x731c, 0x6810, 0xa31e, +- 0x0138, 0xd6d4, 0x0904, 0x92cd, 0x6b14, 0xa305, 0x1904, 0x92cd, +- 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, +- 0x0518, 0xa186, 0x0028, 0x1128, 0x080c, 0x9e30, 0x684b, 0x001c, +- 0x00e8, 0xd6dc, 0x01a0, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, +- 0x6914, 0x6a10, 0x2100, 0xa205, 0x0148, 0x7018, 0xa106, 0x1118, +- 0x701c, 0xa206, 0x0118, 0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, +- 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, 0x0000, 0x6837, 0x0103, +- 0x6e46, 0xa01e, 0xd6c4, 0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, +- 0xbb99, 0x2004, 0xa005, 0x1118, 0xc6c4, 0x0804, 0x921b, 0x7328, +- 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, +- 0x0008, 0x0036, 0x2308, 0x2019, 0xbb98, 0xad90, 0x0019, 0x080c, +- 0x9907, 0x003e, 0xd6cc, 0x0904, 0x92e0, 0x7124, 0x695a, 0x81ff, +- 0x0904, 0x92e0, 0xa192, 0x0021, 0x1260, 0x2071, 0xbb98, 0x831c, +- 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0x9907, 0x080c, 0xa131, +- 0x04b8, 0x6838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, +- 0x00f6, 0x2d78, 0x080c, 0x98ac, 0x00fe, 0x080c, 0xa131, 0x080c, +- 0x98f7, 0x0440, 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, 0x0190, +- 0x684c, 0xd0ac, 0x0178, 0x6020, 0xd0dc, 0x1160, 0x6850, 0xd0bc, +- 0x1148, 0x6810, 0x6914, 0xa105, 0x0128, 0x080c, 0x9f2f, 0x00de, +- 0x00ee, 0x00f0, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, +- 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x947d, +- 0x080c, 0x5409, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, +- 0x6a3e, 0x080c, 0x9efd, 0x00de, 0x00ee, 0x1110, 0x080c, 0x8617, +- 0x0005, 0x00f6, 0x6003, 0x0003, 0x2079, 0xbb8c, 0x7c04, 0x7b00, +- 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, +- 0x0002, 0x00fe, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0x797c, +- 0xa10a, 0x2300, 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, +- 0x0e90, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, +- 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x6cf1, 0x080c, 0x7231, 0x0005, +- 0x2001, 0xb7b8, 0x2004, 0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, +- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, 0xa182, +- 0x0040, 0x0002, 0x9345, 0x9345, 0x9345, 0x9345, 0x9345, 0x9347, +- 0x93da, 0x9345, 0x9345, 0x93f0, 0x9454, 0x9345, 0x9345, 0x9345, +- 0x9345, 0x9463, 0x9345, 0x9345, 0x9345, 0x080c, 0x1515, 0x0076, +- 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xbb8c, 0x6110, 0x2178, 0x7614, +- 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, +- 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904, 0x93d5, +- 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, +- 0x785e, 0xa284, 0x0300, 0x0904, 0x93d5, 0x080c, 0x15f8, 0x090c, +- 0x1515, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, +- 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, +- 0x0c00, 0x0120, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, +- 0xa186, 0x0002, 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, +- 0x0060, 0xd6dc, 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, +- 0x684b, 0x0007, 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, +- 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, +- 0x83ff, 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, +- 0x2308, 0x2019, 0xbb98, 0xad90, 0x0019, 0x080c, 0x9907, 0x003e, +- 0xd6cc, 0x01d8, 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, +- 0x1250, 0x2071, 0xbb98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, +- 0x080c, 0x9907, 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, +- 0x695a, 0x0c78, 0x2d78, 0x080c, 0x98ac, 0x00de, 0x00ee, 0x00fe, +- 0x007e, 0x0005, 0x00f6, 0x6003, 0x0003, 0x2079, 0xbb8c, 0x7c04, +- 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, +- 0x7d0e, 0x00fe, 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x7d61, 0x0005, +- 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, 0x0120, 0x2001, +- 0xb7b8, 0x2004, 0x603e, 0x6003, 0x0002, 0x080c, 0x7127, 0x080c, +- 0x7231, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0904, 0x9452, 0xd1cc, +- 0x0540, 0x6948, 0x6838, 0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, +- 0x6850, 0x0006, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, +- 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0x941a, +- 0x015e, 0x000e, 0x6852, 0x000e, 0x684e, 0x001e, 0x2168, 0x080c, +- 0x161f, 0x0418, 0x0016, 0x080c, 0x161f, 0x00de, 0x080c, 0x98f7, +- 0x00e0, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, +- 0x0180, 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, +- 0x0118, 0x684b, 0x0015, 0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, +- 0x0010, 0x684b, 0x0000, 0x080c, 0x5409, 0x080c, 0x9efd, 0x1110, +- 0x080c, 0x8617, 0x00de, 0x0005, 0x2019, 0x0001, 0x080c, 0x7fe5, +- 0x6003, 0x0002, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x080c, 0x7127, +- 0x080c, 0x7231, 0x0005, 0x080c, 0x7127, 0x080c, 0x2c9c, 0x00d6, +- 0x6110, 0x2168, 0x080c, 0x9c54, 0x0150, 0x6837, 0x0103, 0x684b, +- 0x0029, 0x6847, 0x0000, 0x080c, 0x5409, 0x080c, 0x9e0b, 0x00de, +- 0x080c, 0x8617, 0x080c, 0x7231, 0x0005, 0x684b, 0x0015, 0xd1fc, +- 0x0138, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, +- 0x6962, 0x685e, 0x0005, 0xa182, 0x0040, 0x0002, 0x94a1, 0x94a1, +- 0x94a1, 0x94a1, 0x94a1, 0x94a3, 0x94a1, 0x955e, 0x956a, 0x94a1, +- 0x94a1, 0x94a1, 0x94a1, 0x94a1, 0x94a1, 0x94a1, 0x94a1, 0x94a1, +- 0x94a1, 0x080c, 0x1515, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, +- 0xbb8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, +- 0x080c, 0x5306, 0x00fe, 0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, +- 0xd0f4, 0x0120, 0x080c, 0x9f2f, 0x0804, 0x9559, 0x7e46, 0x7f4c, +- 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, +- 0x6a3e, 0x86ff, 0x0904, 0x954f, 0xa694, 0xff00, 0xa284, 0x0c00, +- 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, +- 0x954d, 0xa686, 0x0100, 0x1140, 0x2001, 0xbb99, 0x2004, 0xa005, +- 0x1118, 0xc6c4, 0x7e46, 0x0c28, 0x080c, 0x15f8, 0x090c, 0x1515, +- 0x2d00, 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, +- 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, +- 0x0c00, 0x0120, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, +- 0xa186, 0x0002, 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, +- 0x0060, 0xd6dc, 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, +- 0x684b, 0x0007, 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, +- 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, ++ 0x705c, 0xa502, 0x1228, 0x754e, 0xa085, 0x0001, 0x00ee, 0x0005, ++ 0x704f, 0xbd00, 0x0cc8, 0xa006, 0x0cc8, 0xac82, 0xbd00, 0x0a0c, ++ 0x1515, 0x2001, 0xb517, 0x2004, 0xac02, 0x1a0c, 0x1515, 0xa006, ++ 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, ++ 0x6003, 0x0000, 0x6052, 0x6056, 0x6022, 0x6026, 0x602a, 0x602e, ++ 0x6032, 0x6036, 0x603a, 0x603e, 0x2061, 0xb500, 0x6048, 0x8000, ++ 0x604a, 0xa086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x7173, 0x012e, 0x0cc0, 0x601c, 0xa084, 0x000f, 0x0002, ++ 0x865b, 0x866a, 0x8685, 0x86a0, 0xa152, 0xa16d, 0xa188, 0x865b, ++ 0x866a, 0x865b, 0x86bb, 0xa186, 0x0013, 0x1128, 0x080c, 0x7090, ++ 0x080c, 0x7173, 0x0005, 0xa18e, 0x0047, 0x1118, 0xa016, 0x080c, ++ 0x185e, 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, ++ 0x0013, 0x006e, 0x0005, 0x8683, 0x8a9b, 0x8c53, 0x8683, 0x8cc8, ++ 0x8779, 0x8683, 0x8683, 0x8a2d, 0x90ef, 0x8683, 0x8683, 0x8683, ++ 0x8683, 0x8683, 0x8683, 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, ++ 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, 0x869e, 0x9722, ++ 0x869e, 0x869e, 0x869e, 0x869e, 0x869e, 0x869e, 0x96cd, 0x988e, ++ 0x869e, 0x974f, 0x97c6, 0x974f, 0x97c6, 0x869e, 0x080c, 0x1515, ++ 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, ++ 0x0005, 0x86b9, 0x9130, 0x91fa, 0x9335, 0x9491, 0x86b9, 0x86b9, ++ 0x86b9, 0x910a, 0x967d, 0x9680, 0x86b9, 0x86b9, 0x86b9, 0x86b9, ++ 0x96aa, 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, ++ 0x1515, 0x0013, 0x006e, 0x0005, 0x86d4, 0x86d4, 0x86d4, 0x8702, ++ 0x874f, 0x86d4, 0x86d4, 0x86d4, 0x86d6, 0x86d4, 0x86d4, 0x86d4, ++ 0x86d4, 0x86d4, 0x86d4, 0x86d4, 0x080c, 0x1515, 0xa186, 0x0003, ++ 0x190c, 0x1515, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068, ++ 0x684f, 0x0040, 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, ++ 0x6817, 0x0000, 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, ++ 0x8003, 0x8013, 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, ++ 0x1fa9, 0x080c, 0x6cf0, 0x0126, 0x2091, 0x8000, 0x080c, 0x7230, ++ 0x012e, 0x0005, 0xa182, 0x0047, 0x0002, 0x870e, 0x870e, 0x8710, ++ 0x8729, 0x870e, 0x870e, 0x870e, 0x870e, 0x873b, 0x080c, 0x1515, ++ 0x00d6, 0x0016, 0x080c, 0x7126, 0x080c, 0x7230, 0x6003, 0x0004, ++ 0x6110, 0x2168, 0x684f, 0x0020, 0x685c, 0x685a, 0x6874, 0x687e, ++ 0x6878, 0x6882, 0x6897, 0x0000, 0x689b, 0x0000, 0x001e, 0x00de, ++ 0x0005, 0x080c, 0x7126, 0x00d6, 0x6110, 0x2168, 0x080c, 0x9c5a, ++ 0x0120, 0x684b, 0x0006, 0x080c, 0x5408, 0x00de, 0x080c, 0x861d, ++ 0x080c, 0x7230, 0x0005, 0x080c, 0x7126, 0x080c, 0x2c9c, 0x00d6, ++ 0x6110, 0x2168, 0x080c, 0x9c5a, 0x0120, 0x684b, 0x0029, 0x080c, ++ 0x5408, 0x00de, 0x080c, 0x861d, 0x080c, 0x7230, 0x0005, 0xa182, ++ 0x0047, 0x0002, 0x875d, 0x876c, 0x875b, 0x875b, 0x875b, 0x875b, ++ 0x875b, 0x875b, 0x875b, 0x080c, 0x1515, 0x00d6, 0x6010, 0x2068, ++ 0x684c, 0xc0f4, 0x684e, 0x00de, 0x20e1, 0x0005, 0x3d18, 0x3e20, ++ 0x2c10, 0x080c, 0x185e, 0x0005, 0x00d6, 0x6110, 0x2168, 0x684b, ++ 0x0000, 0x6853, 0x0000, 0x080c, 0x5408, 0x00de, 0x080c, 0x861d, ++ 0x0005, 0xa1b6, 0x0015, 0x1118, 0x080c, 0x861d, 0x0030, 0xa1b6, ++ 0x0016, 0x190c, 0x1515, 0x080c, 0x861d, 0x0005, 0x20a9, 0x000e, ++ 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, ++ 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, ++ 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x1f04, 0x8794, ++ 0x00e6, 0x080c, 0x9c5a, 0x0130, 0x6010, 0x2070, 0x7007, 0x0000, ++ 0x7037, 0x0103, 0x00ee, 0x080c, 0x861d, 0x0005, 0x00d6, 0x0036, ++ 0x7330, 0xa386, 0x0200, 0x1130, 0x6018, 0x2068, 0x6813, 0x00ff, ++ 0x6817, 0xfffd, 0x6010, 0xa005, 0x0130, 0x2068, 0x6807, 0x0000, ++ 0x6837, 0x0103, 0x6b32, 0x080c, 0x861d, 0x003e, 0x00de, 0x0005, ++ 0x0016, 0x20a9, 0x002a, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, ++ 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a, 0x6010, 0xa080, 0x0001, ++ 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x00e6, 0x6010, 0x2004, ++ 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x861d, 0x001e, 0x0005, ++ 0x0016, 0x2009, 0x0000, 0x7030, 0xa086, 0x0100, 0x0140, 0x7038, ++ 0xa084, 0x00ff, 0x800c, 0x703c, 0xa084, 0x00ff, 0x8004, 0xa080, ++ 0x0004, 0xa108, 0x21a8, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, ++ 0x0002, 0x20a0, 0x080c, 0x4b8f, 0x00e6, 0x080c, 0x9c5a, 0x0140, ++ 0x6010, 0x2070, 0x7007, 0x0000, 0x7034, 0x70b2, 0x7037, 0x0103, ++ 0x00ee, 0x080c, 0x861d, 0x001e, 0x0005, 0x00e6, 0x00d6, 0x603f, ++ 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035, 0x080c, 0xa10a, 0x001e, ++ 0x1168, 0x0026, 0x6228, 0x2268, 0x002e, 0x2071, 0xbb8c, 0x6b1c, ++ 0xa386, 0x0003, 0x0130, 0xa386, 0x0006, 0x0128, 0x080c, 0x861d, ++ 0x0020, 0x0031, 0x0010, 0x080c, 0x88f6, 0x00de, 0x00ee, 0x0005, ++ 0x00f6, 0x6810, 0x2078, 0xa186, 0x0015, 0x0904, 0x88dd, 0xa18e, ++ 0x0016, 0x1904, 0x88f4, 0x700c, 0xa08c, 0xff00, 0xa186, 0x1700, ++ 0x0120, 0xa186, 0x0300, 0x1904, 0x88bc, 0x8fff, 0x1138, 0x6800, ++ 0xa086, 0x000f, 0x0904, 0x88a0, 0x0804, 0x88f2, 0x6808, 0xa086, ++ 0xffff, 0x1904, 0x88df, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, ++ 0x1150, 0x797c, 0x7810, 0xa106, 0x1904, 0x88df, 0x7980, 0x7814, ++ 0xa106, 0x1904, 0x88df, 0x080c, 0x9e11, 0x6858, 0x7852, 0x784c, ++ 0xc0dc, 0xc0f4, 0xc0d4, 0x784e, 0x0026, 0xa00e, 0x6a14, 0x2001, ++ 0x000a, 0x080c, 0x6b40, 0x7854, 0xa20a, 0x0208, 0x8011, 0x7a56, ++ 0x82ff, 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, 0x9a09, 0x00ce, ++ 0x0804, 0x88f2, 0x00c6, 0x00d6, 0x2f68, 0x6838, 0xd0fc, 0x1118, ++ 0x080c, 0x4c64, 0x0010, 0x080c, 0x4e49, 0x00de, 0x00ce, 0x1904, ++ 0x88df, 0x00c6, 0x2d60, 0x080c, 0x861d, 0x00ce, 0x0804, 0x88f2, ++ 0x00c6, 0x080c, 0x9ed6, 0x0190, 0x6013, 0x0000, 0x6818, 0x601a, ++ 0x080c, 0xa027, 0x601f, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, ++ 0x861d, 0x00ce, 0x080c, 0x864c, 0x00ce, 0x04e0, 0x2001, 0xb7b8, ++ 0x2004, 0x683e, 0x00ce, 0x04b0, 0x7008, 0xa086, 0x000b, 0x11a0, ++ 0x6018, 0x200c, 0xc1bc, 0x2102, 0x00c6, 0x2d60, 0x7853, 0x0003, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x6c8d, ++ 0x080c, 0x7173, 0x00ce, 0x00f0, 0x700c, 0xa086, 0x2a00, 0x1138, ++ 0x2001, 0xb7b8, 0x2004, 0x683e, 0x00a8, 0x0481, 0x00a8, 0x8fff, ++ 0x090c, 0x1515, 0x00c6, 0x00d6, 0x2d60, 0x2f68, 0x6837, 0x0103, ++ 0x684b, 0x0003, 0x080c, 0x98fd, 0x080c, 0x9e11, 0x080c, 0x9e1d, ++ 0x00de, 0x00ce, 0x080c, 0x861d, 0x00fe, 0x0005, 0xa186, 0x0015, ++ 0x1128, 0x2001, 0xb7b8, 0x2004, 0x683e, 0x0068, 0xa18e, 0x0016, ++ 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, 0xb33a, 0x080c, 0x6aef, ++ 0x080c, 0x861d, 0x00ce, 0x080c, 0x861d, 0x0005, 0x0026, 0x0036, ++ 0x0046, 0x7228, 0x7c80, 0x7b7c, 0xd2f4, 0x0130, 0x2001, 0xb7b8, ++ 0x2004, 0x683e, 0x0804, 0x8970, 0x00c6, 0x2d60, 0x080c, 0x991d, ++ 0x00ce, 0x6804, 0xa086, 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, ++ 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x6c8d, 0x080c, 0x7173, ++ 0x00ce, 0x04f0, 0x6800, 0xa086, 0x000f, 0x01c8, 0x8fff, 0x090c, ++ 0x1515, 0x6820, 0xd0dc, 0x1198, 0x6800, 0xa086, 0x0004, 0x1198, ++ 0x784c, 0xd0ac, 0x0180, 0x784c, 0xc0dc, 0xc0f4, 0x784e, 0x7850, ++ 0xc0f4, 0xc0fc, 0x7852, 0x2001, 0x0001, 0x682e, 0x00e0, 0x2001, ++ 0x0007, 0x682e, 0x00c0, 0x784c, 0xd0b4, 0x1130, 0xd0ac, 0x0db8, ++ 0x784c, 0xd0f4, 0x1da0, 0x0c38, 0xd2ec, 0x1d88, 0x7024, 0xa306, ++ 0x1118, 0x7020, 0xa406, 0x0d58, 0x7020, 0x6836, 0x7024, 0x683a, ++ 0x2001, 0x0005, 0x682e, 0x080c, 0x9f63, 0x080c, 0x7173, 0x0010, ++ 0x080c, 0x861d, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, ++ 0x0026, 0x6034, 0x2068, 0x6a1c, 0xa286, 0x0007, 0x0904, 0x89d4, ++ 0xa286, 0x0002, 0x0904, 0x89d4, 0xa286, 0x0000, 0x0904, 0x89d4, ++ 0x6808, 0x6338, 0xa306, 0x1904, 0x89d4, 0x2071, 0xbb8c, 0xa186, ++ 0x0015, 0x05e0, 0xa18e, 0x0016, 0x1190, 0x6030, 0xa084, 0x00ff, ++ 0xa086, 0x0001, 0x1160, 0x700c, 0xa086, 0x2a00, 0x1140, 0x6034, ++ 0xa080, 0x0008, 0x200c, 0xc1dd, 0xc1f5, 0x2102, 0x0438, 0x00c6, ++ 0x6034, 0x2060, 0x6104, 0xa186, 0x004b, 0x01a0, 0xa186, 0x004c, ++ 0x0188, 0xa186, 0x004d, 0x0170, 0xa186, 0x004e, 0x0158, 0xa186, ++ 0x0052, 0x0140, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x090c, 0x1515, ++ 0x6853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, ++ 0x080c, 0x6c8d, 0x080c, 0x7173, 0x00ce, 0x0030, 0x6034, 0x2070, ++ 0x2001, 0xb7b8, 0x2004, 0x703e, 0x080c, 0x861d, 0x002e, 0x00de, ++ 0x00ee, 0x0005, 0x00d6, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, ++ 0x53a3, 0xa1b6, 0x0015, 0x1558, 0x6018, 0x2068, 0x0156, 0x0036, ++ 0x0026, 0xae90, 0x000c, 0xa290, 0x0004, 0x20a9, 0x0004, 0xad98, ++ 0x000a, 0x080c, 0x90da, 0x002e, 0x003e, 0x015e, 0x11d8, 0x0156, ++ 0x0036, 0x0026, 0xae90, 0x000c, 0xa290, 0x0008, 0x20a9, 0x0004, ++ 0xad98, 0x0006, 0x080c, 0x90da, 0x002e, 0x003e, 0x015e, 0x1150, ++ 0x7038, 0x680a, 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802, 0x00de, ++ 0x0804, 0x87a0, 0x080c, 0x2c9c, 0x00c6, 0x080c, 0x85c7, 0x2f00, ++ 0x601a, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x2001, 0x0007, 0x080c, 0x4efd, 0x080c, 0x4f2a, 0x080c, ++ 0x6cd3, 0x080c, 0x7173, 0x00ce, 0x0c10, 0x2100, 0xa1b2, 0x0080, ++ 0x1a0c, 0x1515, 0xa1b2, 0x0040, 0x1a04, 0x8a91, 0x0002, 0x8a85, ++ 0x8a79, 0x8a85, 0x8a85, 0x8a85, 0x8a85, 0x8a77, 0x8a77, 0x8a77, ++ 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, ++ 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, ++ 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a85, 0x8a77, ++ 0x8a85, 0x8a85, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a85, ++ 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, ++ 0x8a77, 0x8a85, 0x8a85, 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a77, ++ 0x8a77, 0x8a77, 0x8a77, 0x8a77, 0x8a85, 0x8a77, 0x8a77, 0x080c, ++ 0x1515, 0x6003, 0x0001, 0x6106, 0x080c, 0x6cd3, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x7173, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, ++ 0x080c, 0x6cd3, 0x0126, 0x2091, 0x8000, 0x080c, 0x7173, 0x012e, ++ 0x0005, 0x2600, 0x0002, 0x8a85, 0x8a85, 0x8a99, 0x8a85, 0x8a85, ++ 0x8a99, 0x080c, 0x1515, 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1515, ++ 0xa1b6, 0x0013, 0x0904, 0x8b4b, 0xa1b6, 0x0027, 0x1904, 0x8b11, ++ 0x080c, 0x7090, 0x6004, 0x080c, 0x9e47, 0x0190, 0x080c, 0x9e58, ++ 0x0904, 0x8b0b, 0xa08e, 0x0021, 0x0904, 0x8b0e, 0xa08e, 0x0022, ++ 0x0904, 0x8b0b, 0xa08e, 0x003d, 0x0904, 0x8b0e, 0x0804, 0x8b04, ++ 0x080c, 0x2cc2, 0x2001, 0x0007, 0x080c, 0x4efd, 0x6018, 0xa080, ++ 0x0028, 0x200c, 0x080c, 0x8c19, 0xa186, 0x007e, 0x1148, 0x2001, ++ 0xb535, 0x2014, 0xc285, 0x080c, 0x5acf, 0x1108, 0xc2ad, 0x2202, ++ 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, 0x2019, 0x0028, 0x080c, ++ 0x8299, 0x002e, 0x080c, 0xb38d, 0x003e, 0x002e, 0x001e, 0x0016, ++ 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, 0x6df5, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0x6d02, 0x00c6, 0x6018, 0xa065, 0x0110, ++ 0x080c, 0x51aa, 0x00ce, 0x2c08, 0x080c, 0xae82, 0x007e, 0x003e, ++ 0x002e, 0x001e, 0x080c, 0x4f6c, 0x080c, 0xa01f, 0x080c, 0x861d, ++ 0x080c, 0x7173, 0x0005, 0x080c, 0x8c19, 0x0cb0, 0x080c, 0x8c47, ++ 0x0c98, 0xa186, 0x0014, 0x1db0, 0x080c, 0x7090, 0x080c, 0x2c9c, ++ 0x080c, 0x9e47, 0x1188, 0x080c, 0x2cc2, 0x6018, 0xa080, 0x0028, ++ 0x200c, 0x080c, 0x8c19, 0xa186, 0x007e, 0x1128, 0x2001, 0xb535, ++ 0x200c, 0xc185, 0x2102, 0x08c0, 0x080c, 0x9e58, 0x1118, 0x080c, ++ 0x8c19, 0x0890, 0x6004, 0xa08e, 0x0032, 0x1158, 0x00e6, 0x00f6, ++ 0x2071, 0xb582, 0x2079, 0x0000, 0x080c, 0x2fcf, 0x00fe, 0x00ee, ++ 0x0818, 0x6004, 0xa08e, 0x0021, 0x0d50, 0xa08e, 0x0022, 0x090c, ++ 0x8c19, 0x0804, 0x8b04, 0xa0b2, 0x0040, 0x1a04, 0x8c0e, 0x2008, ++ 0x0002, 0x8b93, 0x8b94, 0x8b97, 0x8b9a, 0x8b9d, 0x8ba0, 0x8b91, ++ 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, ++ 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, ++ 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8ba3, ++ 0x8bb2, 0x8b91, 0x8bb4, 0x8bb2, 0x8b91, 0x8b91, 0x8b91, 0x8b91, ++ 0x8b91, 0x8bb2, 0x8bb2, 0x8b91, 0x8b91, 0x8b91, 0x8b91, 0x8b91, ++ 0x8b91, 0x8b91, 0x8b91, 0x8bee, 0x8bb2, 0x8b91, 0x8bae, 0x8b91, ++ 0x8b91, 0x8b91, 0x8baf, 0x8b91, 0x8b91, 0x8b91, 0x8bb2, 0x8be5, ++ 0x8b91, 0x080c, 0x1515, 0x00f0, 0x2001, 0x000b, 0x0460, 0x2001, ++ 0x0003, 0x0448, 0x2001, 0x0005, 0x0430, 0x2001, 0x0001, 0x0418, ++ 0x2001, 0x0009, 0x0400, 0x080c, 0x7090, 0x6003, 0x0005, 0x2001, ++ 0xb7b8, 0x2004, 0x603e, 0x080c, 0x7173, 0x00a0, 0x0018, 0x0010, ++ 0x080c, 0x4efd, 0x0804, 0x8bff, 0x080c, 0x7090, 0x2001, 0xb7b6, ++ 0x2004, 0x6016, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x6003, 0x0004, ++ 0x080c, 0x7173, 0x0005, 0x080c, 0x4efd, 0x080c, 0x7090, 0x6003, ++ 0x0002, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x0036, 0x2019, 0xb55d, ++ 0x2304, 0xa084, 0xff00, 0x1120, 0x2001, 0xb7b6, 0x201c, 0x0040, ++ 0x8007, 0xa09a, 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, 0xa318, ++ 0x6316, 0x003e, 0x080c, 0x7173, 0x08e8, 0x080c, 0x7090, 0x080c, ++ 0xa01f, 0x080c, 0x861d, 0x080c, 0x7173, 0x08a0, 0x00e6, 0x00f6, ++ 0x2071, 0xb582, 0x2079, 0x0000, 0x080c, 0x2fcf, 0x00fe, 0x00ee, ++ 0x080c, 0x7090, 0x080c, 0x861d, 0x080c, 0x7173, 0x0818, 0x080c, ++ 0x7090, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x6003, 0x0002, 0x2001, ++ 0xb7b6, 0x2004, 0x6016, 0x080c, 0x7173, 0x0005, 0x2600, 0x2008, ++ 0x0002, 0x8c17, 0x8c17, 0x8c17, 0x8bff, 0x8bff, 0x8c17, 0x080c, ++ 0x1515, 0x00e6, 0x0026, 0x0016, 0x080c, 0x9c5a, 0x0508, 0x6010, ++ 0x2070, 0x7034, 0xa086, 0x0139, 0x1148, 0x2001, 0x0030, 0x2009, ++ 0x0000, 0x2011, 0x4005, 0x080c, 0xa0d6, 0x0090, 0x7038, 0xd0fc, ++ 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0xa08e, 0x0021, 0x0160, ++ 0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, 0x0103, 0x7033, 0x0100, ++ 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc8, 0x00e6, ++ 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, ++ 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084, ++ 0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1515, 0x6604, 0xa6b6, ++ 0x0043, 0x1120, 0x080c, 0xa092, 0x0804, 0x8cb8, 0x6604, 0xa6b6, ++ 0x0033, 0x1120, 0x080c, 0xa042, 0x0804, 0x8cb8, 0x6604, 0xa6b6, ++ 0x0028, 0x1120, 0x080c, 0x9e88, 0x0804, 0x8cb8, 0x6604, 0xa6b6, ++ 0x0029, 0x1118, 0x080c, 0x9e9f, 0x04d8, 0x6604, 0xa6b6, 0x001f, ++ 0x1118, 0x080c, 0x8786, 0x04a0, 0x6604, 0xa6b6, 0x0000, 0x1118, ++ 0x080c, 0x89da, 0x0468, 0x6604, 0xa6b6, 0x0022, 0x1118, 0x080c, ++ 0x87ae, 0x0430, 0x6604, 0xa6b6, 0x0035, 0x1118, 0x080c, 0x8815, ++ 0x00f8, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, 0x8976, 0x00c0, ++ 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x87c8, 0x0088, 0x6604, ++ 0xa6b6, 0x0044, 0x1118, 0x080c, 0x87e8, 0x0050, 0xa1b6, 0x0015, ++ 0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, 0x1118, 0x0804, 0x8e7c, ++ 0x0005, 0x080c, 0x8663, 0x0ce0, 0x8cdf, 0x8ce2, 0x8cdf, 0x8d24, ++ 0x8cdf, 0x8e09, 0x8e8a, 0x8cdf, 0x8cdf, 0x8e58, 0x8cdf, 0x8e6c, ++ 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, ++ 0x080c, 0x185e, 0x0005, 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000, ++ 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x861d, 0x0005, 0xe000, ++ 0xe000, 0x0005, 0x00e6, 0x2071, 0xb500, 0x7084, 0xa086, 0x0074, ++ 0x1530, 0x080c, 0xae59, 0x11b0, 0x00d6, 0x6018, 0x2068, 0x7030, ++ 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110, 0xc0c5, 0x6802, 0x00d9, ++ 0x00de, 0x2001, 0x0006, 0x080c, 0x4efd, 0x080c, 0x2cc2, 0x080c, ++ 0x861d, 0x0078, 0x2001, 0x000a, 0x080c, 0x4efd, 0x080c, 0x2cc2, ++ 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x6cd3, 0x0010, 0x080c, ++ 0x8df6, 0x00ee, 0x0005, 0x6800, 0xd084, 0x0168, 0x2001, 0x0000, ++ 0x080c, 0x4eeb, 0x2069, 0xb552, 0x6804, 0xd0a4, 0x0120, 0x2001, ++ 0x0006, 0x080c, 0x4f2a, 0x0005, 0x00d6, 0x2011, 0xb521, 0x2204, ++ 0xa086, 0x0074, 0x1904, 0x8df3, 0x6018, 0x2068, 0x6aa0, 0xa286, ++ 0x007e, 0x1120, 0x080c, 0x8fa2, 0x0804, 0x8d92, 0x080c, 0x8f98, ++ 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x0080, 0x11c0, ++ 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005, 0x0138, 0x2068, ++ 0x6807, 0x0000, 0x6837, 0x0103, 0x6833, 0x0200, 0x2001, 0x0006, ++ 0x080c, 0x4efd, 0x080c, 0x2cc2, 0x080c, 0x861d, 0x0804, 0x8df4, ++ 0x00e6, 0x2071, 0xb535, 0x2e04, 0xd09c, 0x0188, 0x2071, 0xbb80, ++ 0x7108, 0x720c, 0xa18c, 0x00ff, 0x1118, 0xa284, 0xff00, 0x0138, ++ 0x6018, 0x2070, 0x70a0, 0xd0bc, 0x1110, 0x7112, 0x7216, 0x00ee, ++ 0x6010, 0xa005, 0x0198, 0x2068, 0x6838, 0xd0f4, 0x0178, 0x6834, ++ 0xa084, 0x00ff, 0xa086, 0x0039, 0x1958, 0x2001, 0x0000, 0x2009, ++ 0x0000, 0x2011, 0x4000, 0x080c, 0xa0d6, 0x0840, 0x2001, 0x0004, ++ 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x6cd3, ++ 0x0804, 0x8df4, 0x685c, 0xd0e4, 0x01d8, 0x080c, 0x9fd2, 0x080c, ++ 0x5acf, 0x0118, 0xd0dc, 0x1904, 0x8d4e, 0x2011, 0xb535, 0x2204, ++ 0xc0ad, 0x2012, 0x2001, 0xb78f, 0x2004, 0x00f6, 0x2079, 0x0100, ++ 0x78e3, 0x0000, 0x080c, 0x2872, 0x78e2, 0x00fe, 0x0804, 0x8d4e, ++ 0x080c, 0xa008, 0x2011, 0xb535, 0x2204, 0xc0a5, 0x2012, 0x0006, ++ 0x080c, 0xaf7b, 0x000e, 0x1904, 0x8d4e, 0xc0b5, 0x2012, 0x2001, ++ 0x0006, 0x080c, 0x4efd, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x00c6, ++ 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, ++ 0x00fe, 0x080c, 0x2847, 0x00f6, 0x2079, 0xb500, 0x7976, 0x2100, ++ 0x2009, 0x0000, 0x080c, 0x281d, 0x7952, 0x00fe, 0x8108, 0x080c, ++ 0x4f4d, 0x2c00, 0x00ce, 0x1904, 0x8d4e, 0x601a, 0x2001, 0x0002, ++ 0x080c, 0x4efd, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, ++ 0x080c, 0x6cd3, 0x0008, 0x0011, 0x00de, 0x0005, 0x2001, 0x0007, ++ 0x080c, 0x4efd, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1120, ++ 0x2001, 0x0007, 0x080c, 0x4f2a, 0x080c, 0x2cc2, 0x080c, 0x861d, ++ 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xb500, 0x7084, 0xa086, ++ 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, 0x1128, 0x6010, 0xa005, ++ 0x1110, 0x080c, 0x3f3e, 0x00d6, 0x6018, 0x2068, 0x080c, 0x504b, ++ 0x080c, 0x8d13, 0x00de, 0x080c, 0x9051, 0x1550, 0x00d6, 0x6018, ++ 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, 0x2001, 0x0006, 0x080c, ++ 0x4efd, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, 0xa084, 0x00ff, ++ 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, 0x2009, 0x0000, 0x2011, ++ 0x4000, 0x080c, 0xa0d6, 0x0030, 0x7007, 0x0000, 0x7037, 0x0103, ++ 0x7033, 0x0200, 0x00ee, 0x080c, 0x2cc2, 0x080c, 0x861d, 0x0020, ++ 0x080c, 0x8c19, 0x080c, 0x8df6, 0x001e, 0x002e, 0x00ee, 0x0005, ++ 0x2011, 0xb521, 0x2204, 0xa086, 0x0014, 0x1158, 0x2001, 0x0002, ++ 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x6cd3, ++ 0x0010, 0x080c, 0x8df6, 0x0005, 0x2011, 0xb521, 0x2204, 0xa086, ++ 0x0004, 0x1138, 0x2001, 0x0007, 0x080c, 0x4efd, 0x080c, 0x861d, ++ 0x0010, 0x080c, 0x8df6, 0x0005, 0x000b, 0x0005, 0x8cdf, 0x8e95, ++ 0x8cdf, 0x8ec9, 0x8cdf, 0x8f54, 0x8e8a, 0x8cdf, 0x8cdf, 0x8f67, ++ 0x8cdf, 0x8f77, 0x6604, 0xa686, 0x0003, 0x0904, 0x8e09, 0xa6b6, ++ 0x001e, 0x1110, 0x080c, 0x861d, 0x0005, 0x00d6, 0x00c6, 0x080c, ++ 0x8f87, 0x1178, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, 0x0002, ++ 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd3, ++ 0x00e8, 0x2009, 0xbb8e, 0x2104, 0xa086, 0x0009, 0x1160, 0x6018, ++ 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0170, 0x8001, 0x6842, ++ 0x6017, 0x000a, 0x0058, 0x2009, 0xbb8f, 0x2104, 0xa084, 0xff00, ++ 0xa086, 0x1900, 0x1108, 0x08d0, 0x080c, 0x8df6, 0x00ce, 0x00de, ++ 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x8f95, 0x00d6, 0x2069, ++ 0xb79e, 0x2d04, 0xa005, 0x0168, 0x6018, 0x2068, 0x68a0, 0xa086, ++ 0x007e, 0x1138, 0x2069, 0xb51d, 0x2d04, 0x8000, 0x206a, 0x00de, ++ 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, ++ 0x0002, 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x6cd3, 0x0480, 0x00d6, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x00de, ++ 0x0108, 0x6a34, 0x080c, 0x8c19, 0x2009, 0xbb8e, 0x2134, 0xa6b4, ++ 0x00ff, 0xa686, 0x0005, 0x0500, 0xa686, 0x000b, 0x01c8, 0x2009, ++ 0xbb8f, 0x2104, 0xa084, 0xff00, 0x1118, 0xa686, 0x0009, 0x01a0, ++ 0xa086, 0x1900, 0x1168, 0xa686, 0x0009, 0x0170, 0x2001, 0x0004, ++ 0x080c, 0x4efd, 0x2001, 0x0028, 0x6016, 0x6007, 0x004b, 0x0010, ++ 0x080c, 0x8df6, 0x002e, 0x0005, 0x00d6, 0xa286, 0x0139, 0x0160, ++ 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0148, 0x6834, 0xa086, 0x0139, ++ 0x0118, 0x6838, 0xd0fc, 0x0110, 0x00de, 0x0c50, 0x6018, 0x2068, ++ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0140, 0x8001, 0x6842, 0x6017, ++ 0x000a, 0x6007, 0x0016, 0x00de, 0x08e8, 0x68a0, 0xa086, 0x007e, ++ 0x1138, 0x00e6, 0x2071, 0xb500, 0x080c, 0x4bc6, 0x00ee, 0x0010, ++ 0x080c, 0x2c9c, 0x00de, 0x0860, 0x080c, 0x8f95, 0x1158, 0x2001, ++ 0x0004, 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, ++ 0x6cd3, 0x0020, 0x080c, 0x8c19, 0x080c, 0x8df6, 0x0005, 0x0469, ++ 0x1158, 0x2001, 0x0008, 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, ++ 0x0005, 0x080c, 0x6cd3, 0x0010, 0x080c, 0x8df6, 0x0005, 0x00e9, ++ 0x1158, 0x2001, 0x000a, 0x080c, 0x4efd, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x6cd3, 0x0010, 0x080c, 0x8df6, 0x0005, 0x2009, ++ 0xbb8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, 0xbb8f, 0x2104, ++ 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, 0x0001, 0x0005, ++ 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, 0x4fb8, 0x001e, ++ 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016, 0x6018, ++ 0x2068, 0x2071, 0xb535, 0x2e04, 0xa085, 0x0003, 0x2072, 0x080c, ++ 0x9026, 0x0560, 0x2009, 0xb535, 0x2104, 0xc0cd, 0x200a, 0x2001, ++ 0xb553, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009, 0x002a, ++ 0x080c, 0xb0e8, 0x2001, 0xb50c, 0x200c, 0xc195, 0x2102, 0x2019, ++ 0x002a, 0x2009, 0x0001, 0x080c, 0x2c6f, 0x2071, 0xb500, 0x080c, ++ 0x2ab8, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, 0x007f, 0x080c, ++ 0x2d97, 0x8108, 0x1f04, 0x8fd7, 0x015e, 0x00ce, 0x080c, 0x8f98, ++ 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xbb80, 0x2079, 0x0100, ++ 0x2e04, 0xa084, 0x00ff, 0x2069, 0xb51c, 0x206a, 0x78e6, 0x0006, ++ 0x8e70, 0x2e04, 0x2069, 0xb51d, 0x206a, 0x78ea, 0x7832, 0x7836, ++ 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, 0xb528, 0x200a, ++ 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x2847, 0x080c, 0x5acf, ++ 0x0170, 0x2069, 0xbb8e, 0x2071, 0xb7b2, 0x6810, 0x2072, 0x6814, ++ 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, 0x9fd2, 0x0040, ++ 0x2001, 0x0006, 0x080c, 0x4efd, 0x080c, 0x2cc2, 0x080c, 0x861d, ++ 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0026, 0x0036, ++ 0x00e6, 0x0156, 0x2019, 0xb528, 0x231c, 0x83ff, 0x01e8, 0x2071, ++ 0xbb80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00, 0xa205, ++ 0xa306, 0x1190, 0x2011, 0xbb96, 0xad98, 0x000a, 0x20a9, 0x0004, ++ 0x080c, 0x90da, 0x1148, 0x2011, 0xbb9a, 0xad98, 0x0006, 0x20a9, ++ 0x0004, 0x080c, 0x90da, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, ++ 0x0005, 0x00e6, 0x2071, 0xbb8c, 0x7004, 0xa086, 0x0014, 0x11a8, ++ 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, 0x0160, 0xa084, ++ 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, 0x1110, 0xd0ac, ++ 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, ++ 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2029, 0xb7e9, 0x252c, 0x2021, 0xb7ef, 0x2424, ++ 0x2061, 0xbd00, 0x2071, 0xb500, 0x7248, 0x7068, 0xa202, 0x16f0, ++ 0x080c, 0xb110, 0x05a0, 0x671c, 0xa786, 0x0001, 0x0580, 0xa786, ++ 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, 0xac06, 0x0538, ++ 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, 0x194d, 0xa786, ++ 0x0008, 0x1148, 0x080c, 0x9e58, 0x1130, 0x00ce, 0x080c, 0x8c19, ++ 0x080c, 0x9e1d, 0x00a0, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0160, ++ 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x080c, 0x5408, 0x080c, 0x9e11, 0x080c, 0x9e1d, 0x00ce, 0xace0, ++ 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0x9084, 0x012e, 0x000e, ++ 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x0005, ++ 0xa786, 0x0006, 0x1118, 0x080c, 0xb099, 0x0c30, 0xa786, 0x000a, ++ 0x09e0, 0x08c8, 0x220c, 0x2304, 0xa106, 0x1130, 0x8210, 0x8318, ++ 0x1f04, 0x90da, 0xa006, 0x0005, 0x2304, 0xa102, 0x0218, 0x2001, ++ 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, 0x0005, 0x6004, ++ 0xa08a, 0x0080, 0x1a0c, 0x1515, 0x080c, 0x9e47, 0x0120, 0x080c, ++ 0x9e58, 0x0168, 0x0028, 0x080c, 0x2cc2, 0x080c, 0x9e58, 0x0138, ++ 0x080c, 0x7090, 0x080c, 0x861d, 0x080c, 0x7173, 0x0005, 0x080c, ++ 0x8c19, 0x0cb0, 0xa182, 0x0040, 0x0002, 0x9120, 0x9120, 0x9120, ++ 0x9120, 0x9120, 0x9120, 0x9120, 0x9120, 0x9120, 0x9120, 0x9120, ++ 0x9122, 0x9122, 0x9122, 0x9122, 0x9120, 0x9120, 0x9120, 0x9122, ++ 0x080c, 0x1515, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, ++ 0x6c8d, 0x0126, 0x2091, 0x8000, 0x080c, 0x7173, 0x012e, 0x0005, ++ 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0x91bc, ++ 0xa186, 0x0027, 0x11e8, 0x080c, 0x7090, 0x080c, 0x2c9c, 0x00d6, ++ 0x6110, 0x2168, 0x080c, 0x9c5a, 0x0168, 0x6837, 0x0103, 0x684b, ++ 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x5408, ++ 0x080c, 0x9e11, 0x00de, 0x080c, 0x861d, 0x080c, 0x7173, 0x0005, ++ 0xa186, 0x0014, 0x1120, 0x6004, 0xa082, 0x0040, 0x0428, 0xa186, ++ 0x0046, 0x0138, 0xa186, 0x0045, 0x0120, 0xa186, 0x0047, 0x190c, ++ 0x1515, 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x6b74, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0xe000, 0x6000, 0xa086, 0x0002, 0x1110, 0x0804, ++ 0x91fa, 0x080c, 0x8663, 0x0005, 0x0002, 0x919a, 0x9198, 0x9198, ++ 0x9198, 0x9198, 0x9198, 0x9198, 0x9198, 0x9198, 0x9198, 0x9198, ++ 0x91b5, 0x91b5, 0x91b5, 0x91b5, 0x9198, 0x91b5, 0x9198, 0x91b5, ++ 0x080c, 0x1515, 0x080c, 0x7090, 0x00d6, 0x6110, 0x2168, 0x080c, ++ 0x9c5a, 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, ++ 0x6850, 0xc0ec, 0x6852, 0x080c, 0x5408, 0x080c, 0x9e11, 0x00de, ++ 0x080c, 0x861d, 0x080c, 0x7173, 0x0005, 0x080c, 0x7090, 0x080c, ++ 0x861d, 0x080c, 0x7173, 0x0005, 0x0002, 0x91d2, 0x91d0, 0x91d0, ++ 0x91d0, 0x91d0, 0x91d0, 0x91d0, 0x91d0, 0x91d0, 0x91d0, 0x91d0, ++ 0x91e4, 0x91e4, 0x91e4, 0x91e4, 0x91d0, 0x91f3, 0x91d0, 0x91e4, ++ 0x080c, 0x1515, 0x080c, 0x7090, 0x2001, 0xb7b8, 0x2004, 0x603e, ++ 0x6003, 0x0002, 0x080c, 0x7173, 0x6010, 0xa088, 0x0013, 0x2104, ++ 0xa085, 0x0400, 0x200a, 0x0005, 0x080c, 0x7090, 0x2001, 0xb7b6, ++ 0x2004, 0x6016, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x6003, 0x000f, ++ 0x080c, 0x7173, 0x0005, 0x080c, 0x7090, 0x080c, 0x861d, 0x080c, ++ 0x7173, 0x0005, 0xa182, 0x0040, 0x0002, 0x9210, 0x9210, 0x9210, ++ 0x9210, 0x9210, 0x9212, 0x92f7, 0x9326, 0x9210, 0x9210, 0x9210, ++ 0x9210, 0x9210, 0x9210, 0x9210, 0x9210, 0x9210, 0x9210, 0x9210, ++ 0x080c, 0x1515, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2071, 0xbb80, ++ 0x7124, 0x610a, 0x2071, 0xbb8c, 0x6110, 0x2168, 0x7614, 0xa6b4, ++ 0x0fff, 0x86ff, 0x0904, 0x92c0, 0xa68c, 0x0c00, 0x0518, 0x00f6, ++ 0x2c78, 0x080c, 0x5305, 0x00fe, 0x01c8, 0x684c, 0xd0ac, 0x01b0, ++ 0x6020, 0xd0dc, 0x1198, 0x6850, 0xd0bc, 0x1180, 0x7318, 0x6814, ++ 0xa306, 0x1904, 0x92d3, 0x731c, 0x6810, 0xa31e, 0x0138, 0xd6d4, ++ 0x0904, 0x92d3, 0x6b14, 0xa305, 0x1904, 0x92d3, 0x7318, 0x6b62, ++ 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0518, 0xa186, ++ 0x0028, 0x1128, 0x080c, 0x9e36, 0x684b, 0x001c, 0x00e8, 0xd6dc, ++ 0x01a0, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, 0x6914, 0x6a10, ++ 0x2100, 0xa205, 0x0148, 0x7018, 0xa106, 0x1118, 0x701c, 0xa206, ++ 0x0118, 0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0x684b, ++ 0x0007, 0x0010, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, ++ 0xd6c4, 0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, 0xbb99, 0x2004, ++ 0xa005, 0x1118, 0xc6c4, 0x0804, 0x9221, 0x7328, 0x732c, 0x6b56, + 0x83ff, 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, +- 0x2308, 0x2019, 0xbb98, 0xad90, 0x0019, 0x080c, 0x9907, 0x003e, +- 0xd6cc, 0x01d8, 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, +- 0x1250, 0x2071, 0xbb98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, +- 0x080c, 0x9907, 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, +- 0x695a, 0x0c78, 0x2d78, 0x080c, 0x98ac, 0xd6dc, 0x1110, 0xa006, +- 0x0030, 0x2001, 0x0001, 0x2071, 0xbb8c, 0x7218, 0x731c, 0x080c, +- 0x18b1, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x2001, 0xb7b8, +- 0x2004, 0x603e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, +- 0x185e, 0x0005, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x00d6, 0x6003, +- 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0904, 0x9675, 0x603f, +- 0x0000, 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, 0x0560, 0x6814, +- 0x6910, 0xa115, 0x0540, 0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, +- 0x0510, 0x684c, 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, +- 0x685f, 0x0000, 0x6020, 0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, +- 0x603a, 0x6980, 0x6814, 0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, +- 0x00d6, 0x6018, 0x2068, 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, +- 0x9f2f, 0x0804, 0x9675, 0x694c, 0xd1cc, 0x0904, 0x9645, 0x6948, +- 0x6838, 0xd0fc, 0x0904, 0x9608, 0x0016, 0x684c, 0x0006, 0x6850, +- 0x0006, 0x00f6, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, +- 0x01e0, 0xa086, 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, +- 0x00e8, 0xd1dc, 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, +- 0xa0b9, 0x0118, 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, +- 0x684b, 0x0007, 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, +- 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x947d, 0x6848, 0x784a, +- 0x6860, 0x7862, 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, +- 0x2009, 0x0020, 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, +- 0x1f04, 0x95f4, 0x015e, 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, +- 0x080c, 0xa131, 0x001e, 0x2168, 0x080c, 0x161f, 0x0804, 0x9670, +- 0x0016, 0x00f6, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, +- 0x01e0, 0xa086, 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, +- 0x00e8, 0xd1dc, 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, +- 0xa0b9, 0x0118, 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, +- 0x684b, 0x0007, 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, +- 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x947d, 0x6860, 0x7862, +- 0x685c, 0x785e, 0x684c, 0x784e, 0x00fe, 0x080c, 0x161f, 0x00de, +- 0x080c, 0xa131, 0x080c, 0x98f7, 0x0458, 0x6837, 0x0103, 0x6944, +- 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, +- 0x684b, 0x001c, 0x00d8, 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, +- 0xa0b9, 0x0118, 0x6944, 0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, +- 0x684b, 0x0007, 0x0058, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, +- 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x947d, 0x080c, 0x5409, +- 0x080c, 0x9efd, 0x1110, 0x080c, 0x8617, 0x00de, 0x0005, 0x080c, +- 0x7091, 0x0010, 0x080c, 0x7127, 0x080c, 0x9c54, 0x01c0, 0x00d6, +- 0x6110, 0x2168, 0x6837, 0x0103, 0x2009, 0xb50c, 0x210c, 0xd18c, +- 0x11c0, 0xd184, 0x1198, 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, +- 0x080c, 0xb374, 0x6847, 0x0000, 0x080c, 0x5409, 0x00de, 0x080c, +- 0x8617, 0x080c, 0x7174, 0x080c, 0x7231, 0x0005, 0x684b, 0x0004, +- 0x0c88, 0x684b, 0x0004, 0x0c70, 0xa182, 0x0040, 0x0002, 0x96ba, +- 0x96ba, 0x96ba, 0x96ba, 0x96ba, 0x96bc, 0x96ba, 0x96bf, 0x96ba, +- 0x96ba, 0x96ba, 0x96ba, 0x96ba, 0x96ba, 0x96ba, 0x96ba, 0x96ba, +- 0x96ba, 0x96ba, 0x080c, 0x1515, 0x080c, 0x8617, 0x0005, 0x0006, +- 0x0026, 0xa016, 0x080c, 0x185e, 0x002e, 0x000e, 0x0005, 0xa182, +- 0x0085, 0x0002, 0x96d3, 0x96d1, 0x96d1, 0x96df, 0x96d1, 0x96d1, +- 0x96d1, 0x080c, 0x1515, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8e, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x7174, 0x012e, 0x0005, 0x0026, +- 0x0056, 0x00d6, 0x00e6, 0x2071, 0xbb80, 0x7224, 0x6212, 0x7220, +- 0x080c, 0x9c44, 0x01a0, 0x2268, 0x6800, 0xa086, 0x0000, 0x0178, +- 0x6018, 0x6d18, 0xa52e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0x9917, +- 0x00ce, 0x0128, 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, +- 0x0087, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00f6, +- 0x2278, 0x080c, 0x5306, 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, +- 0x00c6, 0x2260, 0x603f, 0x0000, 0x080c, 0x9f2f, 0x00ce, 0x00ee, +- 0x00de, 0x005e, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, +- 0xa08a, 0x0085, 0x0a0c, 0x1515, 0xa08a, 0x008c, 0x1a0c, 0x1515, +- 0xa082, 0x0085, 0x0072, 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, +- 0x190c, 0x1515, 0x080c, 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, +- 0x0005, 0x9740, 0x9742, 0x9742, 0x9740, 0x9740, 0x9740, 0x9740, +- 0x080c, 0x1515, 0x080c, 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, +- 0x0005, 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, +- 0x04a8, 0xa186, 0x0027, 0x11e8, 0x080c, 0x7091, 0x080c, 0x2c9c, +- 0x00d6, 0x6010, 0x2068, 0x080c, 0x9c54, 0x0150, 0x6837, 0x0103, +- 0x6847, 0x0000, 0x684b, 0x0029, 0x080c, 0x5409, 0x080c, 0x9e0b, +- 0x00de, 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, 0x080c, 0x865d, +- 0x0ce0, 0xa186, 0x0014, 0x1dd0, 0x080c, 0x7091, 0x00d6, 0x6010, +- 0x2068, 0x080c, 0x9c54, 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, +- 0x684b, 0x0006, 0x6850, 0xc0ec, 0x6852, 0x08f0, 0x0002, 0x9790, +- 0x978e, 0x978e, 0x978e, 0x978e, 0x978e, 0x97a8, 0x080c, 0x1515, +- 0x080c, 0x7091, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, +- 0x0118, 0xa186, 0x0035, 0x1118, 0x2001, 0xb7b6, 0x0010, 0x2001, +- 0xb7b7, 0x2004, 0x6016, 0x6003, 0x000c, 0x080c, 0x7174, 0x0005, +- 0x080c, 0x7091, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, +- 0x0118, 0xa186, 0x0035, 0x1118, 0x2001, 0xb7b6, 0x0010, 0x2001, +- 0xb7b7, 0x2004, 0x6016, 0x6003, 0x000e, 0x080c, 0x7174, 0x0005, +- 0xa182, 0x008c, 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, +- 0x865d, 0x0005, 0x97d1, 0x97d1, 0x97d1, 0x97d1, 0x97d3, 0x982c, +- 0x97d1, 0x080c, 0x1515, 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x5306, +- 0x00fe, 0x0168, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, +- 0x0118, 0xa186, 0x0035, 0x1118, 0x00de, 0x0804, 0x983f, 0x080c, +- 0x9c54, 0x1118, 0x080c, 0x9e0b, 0x00f0, 0x6010, 0x2068, 0x684c, +- 0xd0e4, 0x1110, 0x080c, 0x9e0b, 0x6837, 0x0103, 0x6850, 0xd0b4, +- 0x0128, 0x684b, 0x0006, 0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, +- 0x684b, 0x0002, 0x0020, 0x684b, 0x0005, 0x080c, 0x9ecc, 0x6847, +- 0x0000, 0x080c, 0x5409, 0x2c68, 0x080c, 0x85c1, 0x01c0, 0x6003, +- 0x0001, 0x6007, 0x001e, 0x600b, 0xffff, 0x2009, 0xbb8e, 0x210c, +- 0x6136, 0x2009, 0xbb8f, 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, +- 0xa021, 0x6950, 0x6152, 0x601f, 0x0001, 0x080c, 0x6c8e, 0x2d60, +- 0x080c, 0x8617, 0x00de, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x5306, +- 0x00fe, 0x0598, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, +- 0x0130, 0xa186, 0x001e, 0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, +- 0x2c68, 0x080c, 0xa104, 0x1904, 0x9884, 0x080c, 0x85c1, 0x01d8, +- 0x6106, 0x6003, 0x0001, 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, +- 0x612a, 0x692c, 0x612e, 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, +- 0x6136, 0x6938, 0x613a, 0x6950, 0x6152, 0x080c, 0xa021, 0x080c, +- 0x6c8e, 0x080c, 0x7174, 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, +- 0x080c, 0x9c54, 0x01c8, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, +- 0xc0ec, 0x6852, 0x684b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, +- 0x0002, 0x0020, 0x684b, 0x0005, 0x080c, 0x9ecc, 0x6847, 0x0000, +- 0x080c, 0x5409, 0x080c, 0x9e0b, 0x00de, 0x080c, 0x8617, 0x0005, +- 0x0016, 0x00d6, 0x6010, 0x2068, 0x080c, 0x9c54, 0x0140, 0x6837, +- 0x0103, 0x684b, 0x0028, 0x6847, 0x0000, 0x080c, 0x5409, 0x00de, +- 0x001e, 0xa186, 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, +- 0x0027, 0x0118, 0x080c, 0x865d, 0x0030, 0x080c, 0x7091, 0x080c, +- 0x9e17, 0x080c, 0x7174, 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, +- 0x2029, 0x0001, 0xa182, 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, +- 0x2130, 0x2069, 0xbb98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, +- 0xaf90, 0x001d, 0x080c, 0x9907, 0xa6b2, 0x0020, 0x7804, 0xa06d, +- 0x0110, 0x080c, 0x161f, 0x080c, 0x15f8, 0x0500, 0x8528, 0x6837, +- 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, +- 0x2608, 0xad90, 0x000f, 0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, +- 0x003c, 0x2d78, 0xad90, 0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, +- 0xa5ad, 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, +- 0xa5ad, 0x0003, 0x7d36, 0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, +- 0x8dff, 0x0158, 0x6804, 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, +- 0x5409, 0x2f68, 0x0cb8, 0x080c, 0x5409, 0x00fe, 0x0005, 0x0156, +- 0xa184, 0x0001, 0x0108, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, +- 0x2012, 0x8318, 0x8210, 0x1f04, 0x990e, 0x015e, 0x0005, 0x0066, +- 0x0126, 0x2091, 0x8000, 0x2031, 0x0001, 0x601c, 0xa084, 0x000f, +- 0x0083, 0x012e, 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, +- 0x2031, 0x0000, 0x601c, 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, +- 0x0005, 0x994e, 0x994e, 0x9949, 0x9970, 0x993c, 0x9949, 0x9970, +- 0x9949, 0x9949, 0x993c, 0x9949, 0x080c, 0x1515, 0x0036, 0x2019, +- 0x0010, 0x080c, 0xacd4, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, +- 0x0005, 0xa006, 0x0005, 0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, +- 0x11d8, 0x6010, 0x2068, 0x080c, 0x9c54, 0x01c0, 0x6834, 0xa086, +- 0x0139, 0x1128, 0x684b, 0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, +- 0x2001, 0x0005, 0x080c, 0x54dc, 0x080c, 0x9ecc, 0x080c, 0x5409, +- 0x080c, 0x8617, 0xa085, 0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, +- 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, 0x000b, 0x0005, 0x9987, +- 0x99a8, 0x9989, 0x99c7, 0x99a5, 0x9987, 0x9949, 0x994e, 0x994e, +- 0x9949, 0x9949, 0x9949, 0x9949, 0x9949, 0x9949, 0x9949, 0x080c, +- 0x1515, 0x86ff, 0x11b8, 0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, +- 0x6010, 0x2068, 0x080c, 0x9c54, 0x0110, 0x080c, 0x9ecc, 0x00de, +- 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x6c8e, +- 0x080c, 0x7174, 0xa085, 0x0001, 0x0005, 0x080c, 0x194d, 0x0c08, +- 0x00e6, 0x2071, 0xb7e0, 0x7024, 0xac06, 0x1110, 0x080c, 0x7f5a, +- 0x601c, 0xa084, 0x000f, 0xa086, 0x0006, 0x1150, 0x0086, 0x0096, +- 0x2049, 0x0001, 0x2c40, 0x080c, 0x8131, 0x009e, 0x008e, 0x0010, +- 0x080c, 0x7e59, 0x00ee, 0x1928, 0x080c, 0x9949, 0x0005, 0x0036, +- 0x00e6, 0x2071, 0xb7e0, 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, +- 0x080c, 0x7fe5, 0x00ee, 0x003e, 0x0804, 0x9989, 0x080c, 0x8257, +- 0x00ee, 0x003e, 0x1904, 0x9989, 0x080c, 0x9949, 0x0005, 0x00c6, +- 0x601c, 0xa084, 0x000f, 0x0013, 0x00ce, 0x0005, 0x99f8, 0x9a65, +- 0x9bb3, 0x9a03, 0x9e17, 0x99f8, 0xacc6, 0x8617, 0x9a65, 0x99f1, +- 0x9c1e, 0x080c, 0x1515, 0x080c, 0x9e52, 0x1110, 0x080c, 0x8c13, +- 0x0005, 0x080c, 0x7091, 0x080c, 0x7174, 0x080c, 0x8617, 0x0005, +- 0x6017, 0x0001, 0x0005, 0x080c, 0x9c54, 0x0120, 0x6010, 0xa080, +- 0x0019, 0x2c02, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, 0x000b, +- 0x0005, 0x9a21, 0x9a23, 0x9a43, 0x9a55, 0x9a62, 0x9a21, 0x99f8, +- 0x99f8, 0x99f8, 0x9a55, 0x9a55, 0x9a21, 0x9a21, 0x9a21, 0x9a21, +- 0x9a5f, 0x080c, 0x1515, 0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, +- 0x7052, 0x2071, 0xb7e0, 0x7024, 0xac06, 0x0190, 0x080c, 0x7e59, +- 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xb7b7, +- 0x2004, 0x6016, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00ee, 0x0005, +- 0x6017, 0x0001, 0x0cd8, 0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, +- 0x6852, 0x00de, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, +- 0x080c, 0x6c8e, 0x080c, 0x7174, 0x0005, 0x00d6, 0x6017, 0x0001, +- 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, +- 0x8617, 0x0005, 0x080c, 0x194d, 0x08f0, 0x6000, 0xa08a, 0x0010, +- 0x1a0c, 0x1515, 0x000b, 0x0005, 0x9a7c, 0x9a00, 0x9a7e, 0x9a7c, +- 0x9a7e, 0x9a7e, 0x99f9, 0x9a7c, 0x99f3, 0x99f3, 0x9a7c, 0x9a7c, +- 0x9a7c, 0x9a7c, 0x9a7c, 0x9a7c, 0x080c, 0x1515, 0x00d6, 0x6018, +- 0x2068, 0x6804, 0xa084, 0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, +- 0x1515, 0x000b, 0x0005, 0x9a97, 0x9b59, 0x9a99, 0x9ad7, 0x9a99, +- 0x9ad7, 0x9a99, 0x9aa7, 0x9a97, 0x9ad7, 0x9a97, 0x9ac3, 0x080c, +- 0x1515, 0x6004, 0xa08e, 0x0016, 0x05a8, 0xa08e, 0x0004, 0x0590, +- 0xa08e, 0x0002, 0x0578, 0xa08e, 0x004b, 0x0904, 0x9b55, 0x6004, +- 0x080c, 0x9e52, 0x0904, 0x9b72, 0xa08e, 0x0021, 0x0904, 0x9b76, +- 0xa08e, 0x0022, 0x0904, 0x9b72, 0xa08e, 0x003d, 0x0904, 0x9b76, +- 0xa08e, 0x0039, 0x0904, 0x9b7a, 0xa08e, 0x0035, 0x0904, 0x9b7a, +- 0xa08e, 0x001e, 0x0188, 0xa08e, 0x0001, 0x1150, 0x00d6, 0x6018, +- 0x2068, 0x6804, 0xa084, 0x00ff, 0x00de, 0xa086, 0x0006, 0x0110, +- 0x080c, 0x2c9c, 0x080c, 0x8c13, 0x080c, 0x9e17, 0x0005, 0x00c6, +- 0x00d6, 0x6104, 0xa186, 0x0016, 0x0904, 0x9b46, 0xa186, 0x0002, +- 0x15d8, 0x2001, 0xb535, 0x2004, 0xd08c, 0x1198, 0x080c, 0x5ad0, +- 0x1180, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, +- 0x0001, 0xa085, 0x0001, 0x080c, 0x5b14, 0x080c, 0x5a08, 0x0804, +- 0x9b9c, 0x6018, 0x2068, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1904, +- 0x9b9c, 0x68a0, 0xd0bc, 0x1904, 0x9b9c, 0x6840, 0xa084, 0x00ff, +- 0xa005, 0x0190, 0x8001, 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, +- 0x6017, 0x0398, 0x603f, 0x0000, 0x080c, 0x85c1, 0x0128, 0x2d00, +- 0x601a, 0x601f, 0x0001, 0x0450, 0x00de, 0x00ce, 0x6004, 0xa08e, +- 0x0002, 0x11a8, 0x6018, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, +- 0x1170, 0x2009, 0xb535, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, +- 0xb500, 0x080c, 0x4bc7, 0x00ee, 0x080c, 0x8c13, 0x0020, 0x080c, +- 0x8c13, 0x080c, 0x2c9c, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x2cc2, 0x012e, 0x00ee, 0x080c, 0x9e17, 0x0005, 0x2001, 0x0002, +- 0x080c, 0x4efe, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd4, +- 0x080c, 0x7174, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2cc2, 0x0804, +- 0x9ad2, 0x00c6, 0x00d6, 0x6104, 0xa186, 0x0016, 0x0d38, 0x6018, +- 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0904, 0x9b1c, 0x8001, +- 0x6842, 0x6003, 0x0001, 0x080c, 0x6cd4, 0x080c, 0x7174, 0x00de, +- 0x00ce, 0x0898, 0x080c, 0x8c13, 0x0804, 0x9ad4, 0x080c, 0x8c41, +- 0x0804, 0x9ad4, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xa104, 0x00de, +- 0x0118, 0x080c, 0x8617, 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, +- 0x00ff, 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, +- 0x0002, 0x6038, 0x600a, 0x2001, 0xb7b7, 0x2004, 0x6016, 0x080c, +- 0x6c8e, 0x080c, 0x7174, 0x0005, 0x00de, 0x00ce, 0x080c, 0x8c13, +- 0x080c, 0x2c9c, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2cc2, +- 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, +- 0x012e, 0x00ee, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, +- 0x000b, 0x0005, 0x9bca, 0x9bca, 0x9bca, 0x9bca, 0x9bca, 0x9bca, +- 0x9bca, 0x9bca, 0x9bca, 0x99f8, 0x9bca, 0x9a00, 0x9bcc, 0x9a00, +- 0x9bd9, 0x9bca, 0x080c, 0x1515, 0x6004, 0xa086, 0x008b, 0x0148, +- 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, 0x6c8e, 0x080c, 0x7174, +- 0x0005, 0x080c, 0x9e0b, 0x080c, 0x9c54, 0x0580, 0x080c, 0x2c9c, +- 0x00d6, 0x080c, 0x9c54, 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, +- 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, +- 0x5409, 0x2c68, 0x080c, 0x85c1, 0x0150, 0x6818, 0x601a, 0x080c, +- 0xa021, 0x00c6, 0x2d60, 0x080c, 0x9e17, 0x00ce, 0x0008, 0x2d60, +- 0x00de, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, +- 0x0001, 0x080c, 0x6cd4, 0x080c, 0x7174, 0x0078, 0x6030, 0xa08c, +- 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035, 0x1118, +- 0x080c, 0x2c9c, 0x08b0, 0x080c, 0x9e17, 0x0005, 0x6000, 0xa08a, +- 0x0010, 0x1a0c, 0x1515, 0x000b, 0x0005, 0x9c35, 0x9c35, 0x9c35, +- 0x9c37, 0x9c37, 0x9c35, 0x9c35, 0x9c35, 0x9c35, 0x9c35, 0x9c35, +- 0x9c35, 0x9c35, 0x9c35, 0x9c35, 0x9c35, 0x080c, 0x1515, 0x080c, +- 0x8257, 0x190c, 0x1515, 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, +- 0x5409, 0x080c, 0x8617, 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, +- 0xbd00, 0x0240, 0x2001, 0xb517, 0x2004, 0xa202, 0x1218, 0xa085, +- 0x0001, 0x0005, 0xa006, 0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, +- 0x002e, 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, +- 0x8000, 0x2061, 0xbd00, 0x2071, 0xb500, 0x7348, 0x7068, 0xa302, +- 0x12a8, 0x601c, 0xa206, 0x1160, 0x080c, 0x9fac, 0x0148, 0x080c, +- 0x9e52, 0x1110, 0x080c, 0x8c13, 0x00c6, 0x080c, 0x8617, 0x00ce, +- 0xace0, 0x0018, 0x705c, 0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, +- 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, +- 0xb635, 0x210c, 0x81ff, 0x0128, 0x2061, 0xb8f4, 0x611a, 0x080c, +- 0x2c9c, 0xa006, 0x0010, 0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, +- 0x0005, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, +- 0x85c1, 0x005e, 0x0180, 0x6612, 0x651a, 0x080c, 0xa021, 0x601f, +- 0x0003, 0x2009, 0x004b, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, +- 0x005e, 0x00ce, 0x0005, 0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, +- 0x2091, 0x8000, 0x62a0, 0x00c6, 0x080c, 0x9ed0, 0x005e, 0x0550, +- 0x6013, 0x0000, 0x651a, 0x080c, 0xa021, 0x601f, 0x0003, 0x0016, +- 0x00c6, 0x2560, 0x080c, 0x51ab, 0x00ce, 0x080c, 0x6df6, 0x0076, +- 0x2039, 0x0000, 0x080c, 0x6d03, 0x2c08, 0x080c, 0xae76, 0x007e, +- 0x001e, 0xd184, 0x0128, 0x080c, 0x8617, 0xa085, 0x0001, 0x0030, +- 0x2009, 0x004c, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, 0x005e, +- 0x00ce, 0x0005, 0xa006, 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, +- 0x080c, 0x85c1, 0x2c78, 0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, +- 0x781f, 0x0003, 0x2021, 0x0005, 0x080c, 0x9d4a, 0x2f60, 0x2009, +- 0x004d, 0x080c, 0x8646, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, +- 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x85c1, 0x2c78, +- 0x00ce, 0x0178, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, +- 0x0005, 0x0481, 0x2f60, 0x2009, 0x004e, 0x080c, 0x8646, 0xa085, +- 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, +- 0x00c6, 0x080c, 0x85c1, 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, +- 0x781a, 0x781f, 0x0003, 0x2021, 0x0004, 0x00a1, 0x2001, 0xb7a0, +- 0x2004, 0xd0fc, 0x0120, 0x2f60, 0x080c, 0x8617, 0x0028, 0x2f60, +- 0x2009, 0x0052, 0x080c, 0x8646, 0xa085, 0x0001, 0x004e, 0x00ce, +- 0x00fe, 0x0005, 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x514d, 0x0118, 0x2001, 0x9d4f, 0x0028, 0x080c, 0x511d, 0x0158, +- 0x2001, 0x9d55, 0x0006, 0xa00e, 0x2400, 0x080c, 0x54dc, 0x080c, +- 0x5409, 0x000e, 0x0807, 0x2418, 0x080c, 0x7030, 0x62a0, 0x0086, +- 0x2041, 0x0001, 0x2039, 0x0001, 0x2608, 0x080c, 0x6e0f, 0x008e, +- 0x080c, 0x6d03, 0x2f08, 0x2648, 0x080c, 0xae76, 0x613c, 0x81ff, +- 0x090c, 0x6ec4, 0x080c, 0x7174, 0x012e, 0x007e, 0x009e, 0x0005, +- 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c1, 0x001e, +- 0x0188, 0x660a, 0x611a, 0x080c, 0xa021, 0x601f, 0x0001, 0x2d00, +- 0x6012, 0x2009, 0x001f, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, +- 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, +- 0x00c6, 0x080c, 0x85c1, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, +- 0xa021, 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, +- 0x8646, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, +- 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c1, 0x001e, +- 0x0188, 0x660a, 0x611a, 0x080c, 0xa021, 0x601f, 0x0001, 0x2d00, +- 0x6012, 0x2009, 0x003d, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, +- 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, +- 0x00c6, 0x080c, 0x9ed0, 0x001e, 0x0180, 0x611a, 0x080c, 0xa021, +- 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x080c, 0x8646, +- 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, +- 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c1, 0x001e, 0x0188, +- 0x660a, 0x611a, 0x080c, 0xa021, 0x601f, 0x0001, 0x2d00, 0x6012, +- 0x2009, 0x0044, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, 0x00ce, +- 0x0005, 0xa006, 0x0cd8, 0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, +- 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, +- 0x6000, 0xa086, 0x0000, 0x0190, 0x6013, 0x0000, 0x601f, 0x0007, +- 0x2001, 0xb7b6, 0x2004, 0x0006, 0xa082, 0x0051, 0x000e, 0x0208, +- 0x8004, 0x6016, 0x080c, 0xb32e, 0x603f, 0x0000, 0x000e, 0x0005, +- 0x0066, 0x00c6, 0x00d6, 0x2031, 0xb553, 0x2634, 0xd6e4, 0x0128, +- 0x6618, 0x2660, 0x6e48, 0x080c, 0x50d6, 0x00de, 0x00ce, 0x006e, +- 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, +- 0x0003, 0x0128, 0xa08e, 0x0004, 0x0110, 0xa085, 0x0001, 0x001e, +- 0x000e, 0x0005, 0x0006, 0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, +- 0xa086, 0x0139, 0x0138, 0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, +- 0xa085, 0x0001, 0x00de, 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, +- 0x8000, 0x00c6, 0x080c, 0x85c1, 0x001e, 0x0190, 0x611a, 0x080c, +- 0xa021, 0x601f, 0x0001, 0x2d00, 0x6012, 0x080c, 0x2c9c, 0x2009, +- 0x0028, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, +- 0xa006, 0x0cd8, 0xa186, 0x0015, 0x1178, 0x2011, 0xb521, 0x2204, +- 0xa086, 0x0074, 0x1148, 0x080c, 0x8f92, 0x6003, 0x0001, 0x6007, +- 0x0029, 0x080c, 0x6cd4, 0x0020, 0x080c, 0x8c13, 0x080c, 0x8617, +- 0x0005, 0xa186, 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x4efe, +- 0x00e8, 0xa186, 0x0015, 0x11e8, 0x2011, 0xb521, 0x2204, 0xa086, +- 0x0014, 0x11b8, 0x00d6, 0x6018, 0x2068, 0x080c, 0x504c, 0x00de, +- 0x080c, 0x904b, 0x1170, 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, +- 0xa005, 0x0138, 0x2001, 0x0006, 0x080c, 0x4efe, 0x080c, 0x879a, +- 0x0020, 0x080c, 0x8c13, 0x080c, 0x8617, 0x0005, 0x6848, 0xa086, +- 0x0005, 0x1108, 0x0009, 0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, +- 0x00e6, 0x0126, 0x2071, 0xb500, 0x2091, 0x8000, 0x7548, 0xa582, +- 0x0001, 0x0608, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, +- 0xace0, 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xbd00, +- 0x0c98, 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, +- 0xa502, 0x1230, 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, +- 0x704f, 0xbd00, 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xbb8c, +- 0x7014, 0xd0e4, 0x0150, 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, +- 0x0050, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00ee, 0x0005, 0x00c6, +- 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, 0x0120, 0x601c, 0xa084, +- 0x000f, 0x0013, 0x00ce, 0x0005, 0x99f8, 0x9f27, 0x9f2a, 0x9f2d, +- 0xb11b, 0xb136, 0xb139, 0x99f8, 0x99f8, 0x080c, 0x1515, 0xe000, +- 0xe000, 0x0005, 0xe000, 0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, +- 0x2c78, 0x080c, 0x5306, 0x0538, 0x080c, 0x85c1, 0x1128, 0x2001, +- 0xb7b8, 0x2004, 0x783e, 0x00f8, 0x7818, 0x601a, 0x080c, 0xa021, +- 0x781c, 0xa086, 0x0003, 0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, +- 0x0020, 0x7808, 0x603a, 0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, +- 0x6007, 0x0035, 0x6003, 0x0001, 0x7950, 0x6152, 0x080c, 0x6c8e, +- 0x080c, 0x7174, 0x2f60, 0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, +- 0x6032, 0xa08e, 0x0001, 0x0138, 0xa086, 0x0005, 0x0140, 0xa006, +- 0x602a, 0x602e, 0x00a0, 0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, +- 0x2078, 0x787c, 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, +- 0x6834, 0x602a, 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, +- 0x6036, 0x6808, 0x603a, 0x6918, 0x611a, 0x6950, 0x6152, 0x601f, +- 0x0001, 0x6007, 0x0039, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x6803, +- 0x0002, 0x00fe, 0x001e, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x5306, +- 0x1118, 0xa085, 0x0001, 0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, +- 0x6022, 0x6010, 0x2078, 0x7828, 0x603a, 0x782c, 0x6036, 0x080c, +- 0x194d, 0xa006, 0x00fe, 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, +- 0x0034, 0x01b8, 0xa08e, 0x0035, 0x01a0, 0xa08e, 0x0036, 0x0188, +- 0xa08e, 0x0037, 0x0170, 0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, +- 0x0140, 0xa08e, 0x003a, 0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, +- 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, +- 0x00e6, 0x2001, 0xb7b2, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, +- 0x080c, 0x6b41, 0x2001, 0xb7b6, 0x82ff, 0x1110, 0x2011, 0x0014, +- 0x2202, 0x2001, 0xb7b4, 0x200c, 0x8000, 0x2014, 0x2071, 0xb78e, +- 0x711a, 0x721e, 0x2001, 0x0064, 0x080c, 0x6b41, 0x2001, 0xb7b7, +- 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2009, 0xb7b8, 0xa280, +- 0x000a, 0x200a, 0x080c, 0x532b, 0x00ee, 0x003e, 0x002e, 0x001e, +- 0x000e, 0x0005, 0x0006, 0x00e6, 0x2001, 0xb7b6, 0x2003, 0x0028, +- 0x2001, 0xb7b7, 0x2003, 0x0014, 0x2071, 0xb78e, 0x701b, 0x0000, +- 0x701f, 0x07d0, 0x2001, 0xb7b8, 0x2003, 0x001e, 0x00ee, 0x000e, +- 0x0005, 0x00d6, 0x6054, 0xa06d, 0x0110, 0x080c, 0x160f, 0x00de, +- 0x0005, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, +- 0x85c1, 0x001e, 0x0178, 0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, +- 0x6012, 0x2009, 0x0033, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, +- 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, +- 0xb500, 0xa186, 0x0015, 0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, +- 0x6010, 0x2068, 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x7332, +- 0x01d8, 0x7070, 0x6a50, 0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, +- 0x1140, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, +- 0x2ce1, 0x080c, 0x879a, 0x0020, 0x080c, 0x8c13, 0x080c, 0x8617, +- 0x00fe, 0x00ee, 0x00de, 0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, +- 0x0c80, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c1, +- 0x001e, 0x0180, 0x611a, 0x080c, 0xa021, 0x601f, 0x0001, 0x2d00, +- 0x6012, 0x2009, 0x0043, 0x080c, 0x8646, 0xa085, 0x0001, 0x012e, +- 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, +- 0xb500, 0xa186, 0x0015, 0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, +- 0x6010, 0xa0e8, 0x000f, 0x2c78, 0x080c, 0x7332, 0x01a8, 0x7070, +- 0x6a08, 0xa206, 0x1130, 0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, +- 0x2c9c, 0x080c, 0x879a, 0x0020, 0x080c, 0x8c13, 0x080c, 0x8617, +- 0x00fe, 0x00ee, 0x00de, 0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, +- 0x0c80, 0x0016, 0x0026, 0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, +- 0x2100, 0xa205, 0x0150, 0x6860, 0xa106, 0x1118, 0x685c, 0xa206, +- 0x0120, 0x6962, 0x6a5e, 0xa085, 0x0001, 0x002e, 0x001e, 0x0005, +- 0x00d6, 0x0036, 0x6310, 0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, +- 0x11a0, 0x00c6, 0x6318, 0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, +- 0x1140, 0x080c, 0x524b, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, +- 0xc18d, 0x6a66, 0x696a, 0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, +- 0x0006, 0x231c, 0x686b, 0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, +- 0x6004, 0xa084, 0x00ff, 0x686e, 0x00ce, 0x080c, 0x5409, 0x6013, +- 0x0000, 0x003e, 0x00de, 0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, +- 0x0035, 0x0110, 0x6a34, 0x0008, 0x6a28, 0x080c, 0x9c44, 0x01f0, +- 0x2260, 0x611c, 0xa186, 0x0003, 0x0118, 0xa186, 0x0006, 0x1190, +- 0x6834, 0xa206, 0x0140, 0x6838, 0xa206, 0x1160, 0x6108, 0x6834, +- 0xa106, 0x1140, 0x0020, 0x6008, 0x6938, 0xa106, 0x1118, 0x6018, +- 0x6918, 0xa106, 0x001e, 0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, +- 0x0cc8, 0x6944, 0xd1cc, 0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, +- 0x1170, 0xad88, 0x001e, 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, +- 0x0001, 0x1128, 0x6810, 0x6914, 0xa115, 0x190c, 0x947d, 0x0005, ++ 0x2308, 0x2019, 0xbb98, 0xad90, 0x0019, 0x080c, 0x990d, 0x003e, ++ 0xd6cc, 0x0904, 0x92e6, 0x7124, 0x695a, 0x81ff, 0x0904, 0x92e6, ++ 0xa192, 0x0021, 0x1260, 0x2071, 0xbb98, 0x831c, 0x2300, 0xae18, ++ 0xad90, 0x001d, 0x080c, 0x990d, 0x080c, 0xa137, 0x04b8, 0x6838, ++ 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, 0x00f6, 0x2d78, ++ 0x080c, 0x98b2, 0x00fe, 0x080c, 0xa137, 0x080c, 0x98fd, 0x0440, ++ 0x00f6, 0x2c78, 0x080c, 0x5305, 0x00fe, 0x0190, 0x684c, 0xd0ac, ++ 0x0178, 0x6020, 0xd0dc, 0x1160, 0x6850, 0xd0bc, 0x1148, 0x6810, ++ 0x6914, 0xa105, 0x0128, 0x080c, 0x9f35, 0x00de, 0x00ee, 0x00f0, ++ 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0130, ++ 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x9483, 0x080c, 0x5408, ++ 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x080c, ++ 0x9f03, 0x00de, 0x00ee, 0x1110, 0x080c, 0x861d, 0x0005, 0x00f6, ++ 0x6003, 0x0003, 0x2079, 0xbb8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, ++ 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, 0x0002, 0x00fe, ++ 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0x797c, 0xa10a, 0x2300, ++ 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, 0x0e90, 0x7c12, ++ 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, 0x2c10, 0x080c, ++ 0x1fa9, 0x080c, 0x6cf0, 0x080c, 0x7230, 0x0005, 0x2001, 0xb7b8, ++ 0x2004, 0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, ++ 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, 0xa182, 0x0040, 0x0002, ++ 0x934b, 0x934b, 0x934b, 0x934b, 0x934b, 0x934d, 0x93e0, 0x934b, ++ 0x934b, 0x93f6, 0x945a, 0x934b, 0x934b, 0x934b, 0x934b, 0x9469, ++ 0x934b, 0x934b, 0x934b, 0x080c, 0x1515, 0x0076, 0x00f6, 0x00e6, ++ 0x00d6, 0x2071, 0xbb8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, ++ 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, ++ 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904, 0x93db, 0xa694, 0xff00, ++ 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, ++ 0x0300, 0x0904, 0x93db, 0x080c, 0x15f8, 0x090c, 0x1515, 0x2d00, ++ 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, ++ 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, ++ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, ++ 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, ++ 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, ++ 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, ++ 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, ++ 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, ++ 0xbb98, 0xad90, 0x0019, 0x080c, 0x990d, 0x003e, 0xd6cc, 0x01d8, ++ 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, ++ 0xbb98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0x990d, ++ 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, ++ 0x2d78, 0x080c, 0x98b2, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, ++ 0x00f6, 0x6003, 0x0003, 0x2079, 0xbb8c, 0x7c04, 0x7b00, 0x7e0c, ++ 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, ++ 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x7d60, 0x0005, 0x00d6, 0x00f6, ++ 0x2c78, 0x080c, 0x5305, 0x00fe, 0x0120, 0x2001, 0xb7b8, 0x2004, ++ 0x603e, 0x6003, 0x0002, 0x080c, 0x7126, 0x080c, 0x7230, 0x6110, ++ 0x2168, 0x694c, 0xd1e4, 0x0904, 0x9458, 0xd1cc, 0x0540, 0x6948, ++ 0x6838, 0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, ++ 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x0156, 0x21a8, ++ 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0x9420, 0x015e, 0x000e, ++ 0x6852, 0x000e, 0x684e, 0x001e, 0x2168, 0x080c, 0x161f, 0x0418, ++ 0x0016, 0x080c, 0x161f, 0x00de, 0x080c, 0x98fd, 0x00e0, 0x6837, ++ 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0180, 0xa086, ++ 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, 0x0118, 0x684b, ++ 0x0015, 0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, ++ 0x0000, 0x080c, 0x5408, 0x080c, 0x9f03, 0x1110, 0x080c, 0x861d, ++ 0x00de, 0x0005, 0x2019, 0x0001, 0x080c, 0x7fe4, 0x6003, 0x0002, ++ 0x2001, 0xb7b8, 0x2004, 0x603e, 0x080c, 0x7126, 0x080c, 0x7230, ++ 0x0005, 0x080c, 0x7126, 0x080c, 0x2c9c, 0x00d6, 0x6110, 0x2168, ++ 0x080c, 0x9c5a, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, 0x6847, ++ 0x0000, 0x080c, 0x5408, 0x080c, 0x9e11, 0x00de, 0x080c, 0x861d, ++ 0x080c, 0x7230, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, 0x684b, ++ 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, ++ 0x0005, 0xa182, 0x0040, 0x0002, 0x94a7, 0x94a7, 0x94a7, 0x94a7, ++ 0x94a7, 0x94a9, 0x94a7, 0x9564, 0x9570, 0x94a7, 0x94a7, 0x94a7, ++ 0x94a7, 0x94a7, 0x94a7, 0x94a7, 0x94a7, 0x94a7, 0x94a7, 0x080c, ++ 0x1515, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xbb8c, 0x6110, ++ 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, 0x5305, ++ 0x00fe, 0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, 0xd0f4, 0x0120, ++ 0x080c, 0x9f35, 0x0804, 0x955f, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, ++ 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, ++ 0x0904, 0x9555, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, ++ 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0x9553, 0xa686, ++ 0x0100, 0x1140, 0x2001, 0xbb99, 0x2004, 0xa005, 0x1118, 0xc6c4, ++ 0x7e46, 0x0c28, 0x080c, 0x15f8, 0x090c, 0x1515, 0x2d00, 0x784a, ++ 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, ++ 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, ++ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, ++ 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, ++ 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, ++ 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, ++ 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, ++ 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, ++ 0xbb98, 0xad90, 0x0019, 0x080c, 0x990d, 0x003e, 0xd6cc, 0x01d8, ++ 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, ++ 0xbb98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0x990d, ++ 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, ++ 0x2d78, 0x080c, 0x98b2, 0xd6dc, 0x1110, 0xa006, 0x0030, 0x2001, ++ 0x0001, 0x2071, 0xbb8c, 0x7218, 0x731c, 0x080c, 0x18b1, 0x00de, ++ 0x00ee, 0x00fe, 0x007e, 0x0005, 0x2001, 0xb7b8, 0x2004, 0x603e, ++ 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, ++ 0x2001, 0xb7b8, 0x2004, 0x603e, 0x00d6, 0x6003, 0x0002, 0x6110, ++ 0x2168, 0x694c, 0xd1e4, 0x0904, 0x967b, 0x603f, 0x0000, 0x00f6, ++ 0x2c78, 0x080c, 0x5305, 0x00fe, 0x0560, 0x6814, 0x6910, 0xa115, ++ 0x0540, 0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, 0x0510, 0x684c, ++ 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000, ++ 0x6020, 0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, 0x603a, 0x6980, ++ 0x6814, 0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, 0x00d6, 0x6018, ++ 0x2068, 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0x9f35, 0x0804, ++ 0x967b, 0x694c, 0xd1cc, 0x0904, 0x964b, 0x6948, 0x6838, 0xd0fc, ++ 0x0904, 0x960e, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0x00f6, ++ 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, ++ 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, ++ 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xa0bf, 0x0118, ++ 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, ++ 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, ++ 0xa115, 0x0110, 0x080c, 0x9483, 0x6848, 0x784a, 0x6860, 0x7862, ++ 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, 0x2009, 0x0020, ++ 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0x95fa, ++ 0x015e, 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, 0xa137, ++ 0x001e, 0x2168, 0x080c, 0x161f, 0x0804, 0x9676, 0x0016, 0x00f6, ++ 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, ++ 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, ++ 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xa0bf, 0x0118, ++ 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, ++ 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, ++ 0xa115, 0x0110, 0x080c, 0x9483, 0x6860, 0x7862, 0x685c, 0x785e, ++ 0x684c, 0x784e, 0x00fe, 0x080c, 0x161f, 0x00de, 0x080c, 0xa137, ++ 0x080c, 0x98fd, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, ++ 0xa0b6, 0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, ++ 0x00d8, 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xa0bf, 0x0118, ++ 0x6944, 0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, 0x684b, 0x0007, ++ 0x0058, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, ++ 0xa115, 0x0110, 0x080c, 0x9483, 0x080c, 0x5408, 0x080c, 0x9f03, ++ 0x1110, 0x080c, 0x861d, 0x00de, 0x0005, 0x080c, 0x7090, 0x0010, ++ 0x080c, 0x7126, 0x080c, 0x9c5a, 0x01c0, 0x00d6, 0x6110, 0x2168, ++ 0x6837, 0x0103, 0x2009, 0xb50c, 0x210c, 0xd18c, 0x11c0, 0xd184, ++ 0x1198, 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, 0xb380, ++ 0x6847, 0x0000, 0x080c, 0x5408, 0x00de, 0x080c, 0x861d, 0x080c, ++ 0x7173, 0x080c, 0x7230, 0x0005, 0x684b, 0x0004, 0x0c88, 0x684b, ++ 0x0004, 0x0c70, 0xa182, 0x0040, 0x0002, 0x96c0, 0x96c0, 0x96c0, ++ 0x96c0, 0x96c0, 0x96c2, 0x96c0, 0x96c5, 0x96c0, 0x96c0, 0x96c0, ++ 0x96c0, 0x96c0, 0x96c0, 0x96c0, 0x96c0, 0x96c0, 0x96c0, 0x96c0, ++ 0x080c, 0x1515, 0x080c, 0x861d, 0x0005, 0x0006, 0x0026, 0xa016, ++ 0x080c, 0x185e, 0x002e, 0x000e, 0x0005, 0xa182, 0x0085, 0x0002, ++ 0x96d9, 0x96d7, 0x96d7, 0x96e5, 0x96d7, 0x96d7, 0x96d7, 0x080c, ++ 0x1515, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8d, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x7173, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, ++ 0x00e6, 0x2071, 0xbb80, 0x7224, 0x6212, 0x7220, 0x080c, 0x9c4a, ++ 0x01a0, 0x2268, 0x6800, 0xa086, 0x0000, 0x0178, 0x6018, 0x6d18, ++ 0xa52e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0x991d, 0x00ce, 0x0128, ++ 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, ++ 0x0001, 0x080c, 0x6c8d, 0x080c, 0x7173, 0x00f6, 0x2278, 0x080c, ++ 0x5305, 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, 0x2260, ++ 0x603f, 0x0000, 0x080c, 0x9f35, 0x00ce, 0x00ee, 0x00de, 0x005e, ++ 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, ++ 0x0a0c, 0x1515, 0xa08a, 0x008c, 0x1a0c, 0x1515, 0xa082, 0x0085, ++ 0x0072, 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1515, ++ 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, 0x7173, 0x0005, 0x9746, ++ 0x9748, 0x9748, 0x9746, 0x9746, 0x9746, 0x9746, 0x080c, 0x1515, ++ 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, 0x7173, 0x0005, 0xa186, ++ 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x04a8, 0xa186, ++ 0x0027, 0x11e8, 0x080c, 0x7090, 0x080c, 0x2c9c, 0x00d6, 0x6010, ++ 0x2068, 0x080c, 0x9c5a, 0x0150, 0x6837, 0x0103, 0x6847, 0x0000, ++ 0x684b, 0x0029, 0x080c, 0x5408, 0x080c, 0x9e11, 0x00de, 0x080c, ++ 0x861d, 0x080c, 0x7173, 0x0005, 0x080c, 0x8663, 0x0ce0, 0xa186, ++ 0x0014, 0x1dd0, 0x080c, 0x7090, 0x00d6, 0x6010, 0x2068, 0x080c, ++ 0x9c5a, 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, 0x0006, ++ 0x6850, 0xc0ec, 0x6852, 0x08f0, 0x0002, 0x9796, 0x9794, 0x9794, ++ 0x9794, 0x9794, 0x9794, 0x97ae, 0x080c, 0x1515, 0x080c, 0x7090, ++ 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, ++ 0x0035, 0x1118, 0x2001, 0xb7b6, 0x0010, 0x2001, 0xb7b7, 0x2004, ++ 0x6016, 0x6003, 0x000c, 0x080c, 0x7173, 0x0005, 0x080c, 0x7090, ++ 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, ++ 0x0035, 0x1118, 0x2001, 0xb7b6, 0x0010, 0x2001, 0xb7b7, 0x2004, ++ 0x6016, 0x6003, 0x000e, 0x080c, 0x7173, 0x0005, 0xa182, 0x008c, ++ 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x8663, 0x0005, ++ 0x97d7, 0x97d7, 0x97d7, 0x97d7, 0x97d9, 0x9832, 0x97d7, 0x080c, ++ 0x1515, 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x5305, 0x00fe, 0x0168, ++ 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, ++ 0x0035, 0x1118, 0x00de, 0x0804, 0x9845, 0x080c, 0x9c5a, 0x1118, ++ 0x080c, 0x9e11, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x1110, ++ 0x080c, 0x9e11, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0x684b, ++ 0x0006, 0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, ++ 0x0020, 0x684b, 0x0005, 0x080c, 0x9ed2, 0x6847, 0x0000, 0x080c, ++ 0x5408, 0x2c68, 0x080c, 0x85c7, 0x01c0, 0x6003, 0x0001, 0x6007, ++ 0x001e, 0x600b, 0xffff, 0x2009, 0xbb8e, 0x210c, 0x6136, 0x2009, ++ 0xbb8f, 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0xa027, 0x6950, ++ 0x6152, 0x601f, 0x0001, 0x080c, 0x6c8d, 0x2d60, 0x080c, 0x861d, ++ 0x00de, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x5305, 0x00fe, 0x0598, ++ 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, 0x0130, 0xa186, ++ 0x001e, 0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, 0x2c68, 0x080c, ++ 0xa10a, 0x1904, 0x988a, 0x080c, 0x85c7, 0x01d8, 0x6106, 0x6003, ++ 0x0001, 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, ++ 0x612e, 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, ++ 0x613a, 0x6950, 0x6152, 0x080c, 0xa027, 0x080c, 0x6c8d, 0x080c, ++ 0x7173, 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, 0x9c5a, ++ 0x01c8, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0xc0ec, 0x6852, ++ 0x684b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020, ++ 0x684b, 0x0005, 0x080c, 0x9ed2, 0x6847, 0x0000, 0x080c, 0x5408, ++ 0x080c, 0x9e11, 0x00de, 0x080c, 0x861d, 0x0005, 0x0016, 0x00d6, ++ 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0140, 0x6837, 0x0103, 0x684b, ++ 0x0028, 0x6847, 0x0000, 0x080c, 0x5408, 0x00de, 0x001e, 0xa186, ++ 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, ++ 0x080c, 0x8663, 0x0030, 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, ++ 0x7173, 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, ++ 0xa182, 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x2069, ++ 0xbb98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d, ++ 0x080c, 0x990d, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, 0x080c, ++ 0x161f, 0x080c, 0x15f8, 0x0500, 0x8528, 0x6837, 0x0110, 0x683b, ++ 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, 0x2608, 0xad90, ++ 0x000f, 0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, ++ 0xad90, 0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, 0xa5ad, 0x0003, ++ 0x7d36, 0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, 0xa5ad, 0x0003, ++ 0x7d36, 0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, 0x8dff, 0x0158, ++ 0x6804, 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x5408, 0x2f68, ++ 0x0cb8, 0x080c, 0x5408, 0x00fe, 0x0005, 0x0156, 0xa184, 0x0001, ++ 0x0108, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, ++ 0x8210, 0x1f04, 0x9914, 0x015e, 0x0005, 0x0066, 0x0126, 0x2091, ++ 0x8000, 0x2031, 0x0001, 0x601c, 0xa084, 0x000f, 0x0083, 0x012e, ++ 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, ++ 0x601c, 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0x9954, ++ 0x9954, 0x994f, 0x9976, 0x9942, 0x994f, 0x9976, 0x994f, 0x994f, ++ 0x9942, 0x994f, 0x080c, 0x1515, 0x0036, 0x2019, 0x0010, 0x080c, ++ 0xace0, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0xa006, ++ 0x0005, 0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, 0x11d8, 0x6010, ++ 0x2068, 0x080c, 0x9c5a, 0x01c0, 0x6834, 0xa086, 0x0139, 0x1128, ++ 0x684b, 0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, 0x2001, 0x0005, ++ 0x080c, 0x54db, 0x080c, 0x9ed2, 0x080c, 0x5408, 0x080c, 0x861d, ++ 0xa085, 0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, 0x6000, 0xa08a, ++ 0x0010, 0x1a0c, 0x1515, 0x000b, 0x0005, 0x998d, 0x99ae, 0x998f, ++ 0x99cd, 0x99ab, 0x998d, 0x994f, 0x9954, 0x9954, 0x994f, 0x994f, ++ 0x994f, 0x994f, 0x994f, 0x994f, 0x994f, 0x080c, 0x1515, 0x86ff, ++ 0x11b8, 0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, 0x6010, 0x2068, ++ 0x080c, 0x9c5a, 0x0110, 0x080c, 0x9ed2, 0x00de, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x6c8d, 0x080c, 0x7173, ++ 0xa085, 0x0001, 0x0005, 0x080c, 0x194d, 0x0c08, 0x00e6, 0x2071, ++ 0xb7e0, 0x7024, 0xac06, 0x1110, 0x080c, 0x7f59, 0x601c, 0xa084, ++ 0x000f, 0xa086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, ++ 0x2c40, 0x080c, 0x8130, 0x009e, 0x008e, 0x0010, 0x080c, 0x7e58, ++ 0x00ee, 0x1928, 0x080c, 0x994f, 0x0005, 0x0036, 0x00e6, 0x2071, ++ 0xb7e0, 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, 0x7fe4, ++ 0x00ee, 0x003e, 0x0804, 0x998f, 0x080c, 0x825d, 0x00ee, 0x003e, ++ 0x1904, 0x998f, 0x080c, 0x994f, 0x0005, 0x00c6, 0x601c, 0xa084, ++ 0x000f, 0x0013, 0x00ce, 0x0005, 0x99fe, 0x9a6b, 0x9bb9, 0x9a09, ++ 0x9e1d, 0x99fe, 0xacd2, 0xa14e, 0x9a6b, 0x99f7, 0x9c24, 0x080c, ++ 0x1515, 0x080c, 0x9e58, 0x1110, 0x080c, 0x8c19, 0x0005, 0x080c, ++ 0x7090, 0x080c, 0x7173, 0x080c, 0x861d, 0x0005, 0x6017, 0x0001, ++ 0x0005, 0x080c, 0x9c5a, 0x0120, 0x6010, 0xa080, 0x0019, 0x2c02, ++ 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, 0x000b, 0x0005, 0x9a27, ++ 0x9a29, 0x9a49, 0x9a5b, 0x9a68, 0x9a27, 0x99fe, 0x99fe, 0x99fe, ++ 0x9a5b, 0x9a5b, 0x9a27, 0x9a27, 0x9a27, 0x9a27, 0x9a65, 0x080c, ++ 0x1515, 0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, ++ 0xb7e0, 0x7024, 0xac06, 0x0190, 0x080c, 0x7e58, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xb7b7, 0x2004, 0x6016, ++ 0x080c, 0x6c8d, 0x080c, 0x7173, 0x00ee, 0x0005, 0x6017, 0x0001, ++ 0x0cd8, 0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x6c8d, ++ 0x080c, 0x7173, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, 0x2068, ++ 0x6850, 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x861d, 0x0005, ++ 0x080c, 0x194d, 0x08f0, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, ++ 0x000b, 0x0005, 0x9a82, 0x9a06, 0x9a84, 0x9a82, 0x9a84, 0x9a84, ++ 0x99ff, 0x9a82, 0x99f9, 0x99f9, 0x9a82, 0x9a82, 0x9a82, 0x9a82, ++ 0x9a82, 0x9a82, 0x080c, 0x1515, 0x00d6, 0x6018, 0x2068, 0x6804, ++ 0xa084, 0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, 0x1515, 0x000b, ++ 0x0005, 0x9a9d, 0x9b5f, 0x9a9f, 0x9add, 0x9a9f, 0x9add, 0x9a9f, ++ 0x9aad, 0x9a9d, 0x9add, 0x9a9d, 0x9ac9, 0x080c, 0x1515, 0x6004, ++ 0xa08e, 0x0016, 0x05a8, 0xa08e, 0x0004, 0x0590, 0xa08e, 0x0002, ++ 0x0578, 0xa08e, 0x004b, 0x0904, 0x9b5b, 0x6004, 0x080c, 0x9e58, ++ 0x0904, 0x9b78, 0xa08e, 0x0021, 0x0904, 0x9b7c, 0xa08e, 0x0022, ++ 0x0904, 0x9b78, 0xa08e, 0x003d, 0x0904, 0x9b7c, 0xa08e, 0x0039, ++ 0x0904, 0x9b80, 0xa08e, 0x0035, 0x0904, 0x9b80, 0xa08e, 0x001e, ++ 0x0188, 0xa08e, 0x0001, 0x1150, 0x00d6, 0x6018, 0x2068, 0x6804, ++ 0xa084, 0x00ff, 0x00de, 0xa086, 0x0006, 0x0110, 0x080c, 0x2c9c, ++ 0x080c, 0x8c19, 0x080c, 0x9e1d, 0x0005, 0x00c6, 0x00d6, 0x6104, ++ 0xa186, 0x0016, 0x0904, 0x9b4c, 0xa186, 0x0002, 0x15d8, 0x2001, ++ 0xb535, 0x2004, 0xd08c, 0x1198, 0x080c, 0x5acf, 0x1180, 0x2001, ++ 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, 0xa085, ++ 0x0001, 0x080c, 0x5b13, 0x080c, 0x5a07, 0x0804, 0x9ba2, 0x6018, ++ 0x2068, 0x2001, 0xb535, 0x2004, 0xd0ac, 0x1904, 0x9ba2, 0x68a0, ++ 0xd0bc, 0x1904, 0x9ba2, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, ++ 0x8001, 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, ++ 0x603f, 0x0000, 0x080c, 0x85c7, 0x0128, 0x2d00, 0x601a, 0x601f, ++ 0x0001, 0x0450, 0x00de, 0x00ce, 0x6004, 0xa08e, 0x0002, 0x11a8, ++ 0x6018, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x1170, 0x2009, ++ 0xb535, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0xb500, 0x080c, ++ 0x4bc6, 0x00ee, 0x080c, 0x8c19, 0x0020, 0x080c, 0x8c19, 0x080c, ++ 0x2c9c, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2cc2, 0x012e, ++ 0x00ee, 0x080c, 0x9e1d, 0x0005, 0x2001, 0x0002, 0x080c, 0x4efd, ++ 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd3, 0x080c, 0x7173, ++ 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2cc2, 0x0804, 0x9ad8, 0x00c6, ++ 0x00d6, 0x6104, 0xa186, 0x0016, 0x0d38, 0x6018, 0x2068, 0x6840, ++ 0xa084, 0x00ff, 0xa005, 0x0904, 0x9b22, 0x8001, 0x6842, 0x6003, ++ 0x0001, 0x080c, 0x6cd3, 0x080c, 0x7173, 0x00de, 0x00ce, 0x0898, ++ 0x080c, 0x8c19, 0x0804, 0x9ada, 0x080c, 0x8c47, 0x0804, 0x9ada, ++ 0x00d6, 0x2c68, 0x6104, 0x080c, 0xa10a, 0x00de, 0x0118, 0x080c, ++ 0x861d, 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, ++ 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038, ++ 0x600a, 0x2001, 0xb7b7, 0x2004, 0x6016, 0x080c, 0x6c8d, 0x080c, ++ 0x7173, 0x0005, 0x00de, 0x00ce, 0x080c, 0x8c19, 0x080c, 0x2c9c, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2cc2, 0x6013, 0x0000, ++ 0x601f, 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x012e, 0x00ee, ++ 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1515, 0x000b, 0x0005, ++ 0x9bd0, 0x9bd0, 0x9bd0, 0x9bd0, 0x9bd0, 0x9bd0, 0x9bd0, 0x9bd0, ++ 0x9bd0, 0x99fe, 0x9bd0, 0x9a06, 0x9bd2, 0x9a06, 0x9bdf, 0x9bd0, ++ 0x080c, 0x1515, 0x6004, 0xa086, 0x008b, 0x0148, 0x6007, 0x008b, ++ 0x6003, 0x000d, 0x080c, 0x6c8d, 0x080c, 0x7173, 0x0005, 0x080c, ++ 0x9e11, 0x080c, 0x9c5a, 0x0580, 0x080c, 0x2c9c, 0x00d6, 0x080c, ++ 0x9c5a, 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, ++ 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x5408, 0x2c68, ++ 0x080c, 0x85c7, 0x0150, 0x6818, 0x601a, 0x080c, 0xa027, 0x00c6, ++ 0x2d60, 0x080c, 0x9e1d, 0x00ce, 0x0008, 0x2d60, 0x00de, 0x6013, ++ 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, ++ 0x6cd3, 0x080c, 0x7173, 0x0078, 0x6030, 0xa08c, 0xff00, 0x810f, ++ 0xa186, 0x0039, 0x0118, 0xa186, 0x0035, 0x1118, 0x080c, 0x2c9c, ++ 0x08b0, 0x080c, 0x9e1d, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, ++ 0x1515, 0x000b, 0x0005, 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3d, 0x9c3d, ++ 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3b, 0x9c3b, ++ 0x9c3b, 0x9c3b, 0x9c3b, 0x080c, 0x1515, 0x080c, 0x825d, 0x190c, ++ 0x1515, 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x5408, 0x080c, ++ 0x861d, 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xbd00, 0x0240, ++ 0x2001, 0xb517, 0x2004, 0xa202, 0x1218, 0xa085, 0x0001, 0x0005, ++ 0xa006, 0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, 0x002e, 0x0005, ++ 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, ++ 0xbd00, 0x2071, 0xb500, 0x7348, 0x7068, 0xa302, 0x12a8, 0x601c, ++ 0xa206, 0x1160, 0x080c, 0x9fb2, 0x0148, 0x080c, 0x9e58, 0x1110, ++ 0x080c, 0x8c19, 0x00c6, 0x080c, 0x861d, 0x00ce, 0xace0, 0x0018, ++ 0x705c, 0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, 0x00ce, ++ 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, 0xb635, 0x210c, ++ 0x81ff, 0x0128, 0x2061, 0xb8f4, 0x611a, 0x080c, 0x2c9c, 0xa006, ++ 0x0010, 0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, ++ 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c7, 0x005e, ++ 0x0180, 0x6612, 0x651a, 0x080c, 0xa027, 0x601f, 0x0003, 0x2009, ++ 0x004b, 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, ++ 0x0005, 0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, ++ 0x62a0, 0x00c6, 0x080c, 0x9ed6, 0x005e, 0x0550, 0x6013, 0x0000, ++ 0x651a, 0x080c, 0xa027, 0x601f, 0x0003, 0x0016, 0x00c6, 0x2560, ++ 0x080c, 0x51aa, 0x00ce, 0x080c, 0x6df5, 0x0076, 0x2039, 0x0000, ++ 0x080c, 0x6d02, 0x2c08, 0x080c, 0xae82, 0x007e, 0x001e, 0xd184, ++ 0x0128, 0x080c, 0x861d, 0xa085, 0x0001, 0x0030, 0x2009, 0x004c, ++ 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x85c7, ++ 0x2c78, 0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, ++ 0x2021, 0x0005, 0x080c, 0x9d50, 0x2f60, 0x2009, 0x004d, 0x080c, ++ 0x864c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, ++ 0x00c6, 0x0046, 0x00c6, 0x080c, 0x85c7, 0x2c78, 0x00ce, 0x0178, ++ 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x0481, ++ 0x2f60, 0x2009, 0x004e, 0x080c, 0x864c, 0xa085, 0x0001, 0x004e, ++ 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, ++ 0x85c7, 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, 0x781f, ++ 0x0003, 0x2021, 0x0004, 0x00a1, 0x2001, 0xb7a0, 0x2004, 0xd0fc, ++ 0x0120, 0x2f60, 0x080c, 0x861d, 0x0028, 0x2f60, 0x2009, 0x0052, ++ 0x080c, 0x864c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, ++ 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x514c, 0x0118, ++ 0x2001, 0x9d55, 0x0028, 0x080c, 0x511c, 0x0158, 0x2001, 0x9d5b, ++ 0x0006, 0xa00e, 0x2400, 0x080c, 0x54db, 0x080c, 0x5408, 0x000e, ++ 0x0807, 0x2418, 0x080c, 0x702f, 0x62a0, 0x0086, 0x2041, 0x0001, ++ 0x2039, 0x0001, 0x2608, 0x080c, 0x6e0e, 0x008e, 0x080c, 0x6d02, ++ 0x2f08, 0x2648, 0x080c, 0xae82, 0x613c, 0x81ff, 0x090c, 0x6ec3, ++ 0x080c, 0x7173, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c7, 0x001e, 0x0188, 0x660a, ++ 0x611a, 0x080c, 0xa027, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x001f, 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, ++ 0x85c7, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0xa027, 0x601f, ++ 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x864c, 0xa085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c7, 0x001e, 0x0188, 0x660a, ++ 0x611a, 0x080c, 0xa027, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x003d, 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, ++ 0x9ed6, 0x001e, 0x0180, 0x611a, 0x080c, 0xa027, 0x601f, 0x0001, ++ 0x2d00, 0x6012, 0x2009, 0x0000, 0x080c, 0x864c, 0xa085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x00c6, 0x080c, 0x85c7, 0x001e, 0x0188, 0x660a, 0x611a, ++ 0x080c, 0xa027, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0044, ++ 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, ++ 0x0cd8, 0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, ++ 0x8211, 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x6000, 0xa086, ++ 0x0000, 0x0190, 0x6013, 0x0000, 0x601f, 0x0007, 0x2001, 0xb7b6, ++ 0x2004, 0x0006, 0xa082, 0x0051, 0x000e, 0x0208, 0x8004, 0x6016, ++ 0x080c, 0xb33a, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, 0x00c6, ++ 0x00d6, 0x2031, 0xb553, 0x2634, 0xd6e4, 0x0128, 0x6618, 0x2660, ++ 0x6e48, 0x080c, 0x50d5, 0x00de, 0x00ce, 0x006e, 0x0005, 0x0006, ++ 0x0016, 0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, 0x0003, 0x0128, ++ 0xa08e, 0x0004, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e, 0x0005, ++ 0x0006, 0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, 0xa086, 0x0139, ++ 0x0138, 0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, ++ 0x00de, 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, ++ 0x080c, 0x85c7, 0x001e, 0x0190, 0x611a, 0x080c, 0xa027, 0x601f, ++ 0x0001, 0x2d00, 0x6012, 0x080c, 0x2c9c, 0x2009, 0x0028, 0x080c, ++ 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, ++ 0xa186, 0x0015, 0x1178, 0x2011, 0xb521, 0x2204, 0xa086, 0x0074, ++ 0x1148, 0x080c, 0x8f98, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, ++ 0x6cd3, 0x0020, 0x080c, 0x8c19, 0x080c, 0x861d, 0x0005, 0xa186, ++ 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x4efd, 0x00e8, 0xa186, ++ 0x0015, 0x11e8, 0x2011, 0xb521, 0x2204, 0xa086, 0x0014, 0x11b8, ++ 0x00d6, 0x6018, 0x2068, 0x080c, 0x504b, 0x00de, 0x080c, 0x9051, ++ 0x1170, 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0138, ++ 0x2001, 0x0006, 0x080c, 0x4efd, 0x080c, 0x87a0, 0x0020, 0x080c, ++ 0x8c19, 0x080c, 0x861d, 0x0005, 0x6848, 0xa086, 0x0005, 0x1108, ++ 0x0009, 0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, 0x00e6, 0x0126, ++ 0x2071, 0xb500, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, 0x0608, ++ 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, ++ 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xbd00, 0x0c98, 0x6003, ++ 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1230, ++ 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xbd00, ++ 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xbb8c, 0x7014, 0xd0e4, ++ 0x0150, 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, ++ 0x6c8d, 0x080c, 0x7173, 0x00ee, 0x0005, 0x00c6, 0x00f6, 0x2c78, ++ 0x080c, 0x5305, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, 0x0013, ++ 0x00ce, 0x0005, 0x99fe, 0x9f2d, 0x9f30, 0x9f33, 0xb127, 0xb142, ++ 0xb145, 0x99fe, 0x99fe, 0x080c, 0x1515, 0xe000, 0xe000, 0x0005, ++ 0xe000, 0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, 0x2c78, 0x080c, ++ 0x5305, 0x0538, 0x080c, 0x85c7, 0x1128, 0x2001, 0xb7b8, 0x2004, ++ 0x783e, 0x00f8, 0x7818, 0x601a, 0x080c, 0xa027, 0x781c, 0xa086, ++ 0x0003, 0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, 0x0020, 0x7808, ++ 0x603a, 0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, ++ 0x6003, 0x0001, 0x7950, 0x6152, 0x080c, 0x6c8d, 0x080c, 0x7173, ++ 0x2f60, 0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, 0x6032, 0xa08e, ++ 0x0001, 0x0138, 0xa086, 0x0005, 0x0140, 0xa006, 0x602a, 0x602e, ++ 0x00a0, 0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, 0x2078, 0x787c, ++ 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, 0x6834, 0x602a, ++ 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, 0x6808, ++ 0x603a, 0x6918, 0x611a, 0x6950, 0x6152, 0x601f, 0x0001, 0x6007, ++ 0x0039, 0x6003, 0x0001, 0x080c, 0x6c8d, 0x6803, 0x0002, 0x00fe, ++ 0x001e, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x5305, 0x1118, 0xa085, ++ 0x0001, 0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, 0x6022, 0x6010, ++ 0x2078, 0x7828, 0x603a, 0x782c, 0x6036, 0x080c, 0x194d, 0xa006, ++ 0x00fe, 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0034, 0x01b8, ++ 0xa08e, 0x0035, 0x01a0, 0xa08e, 0x0036, 0x0188, 0xa08e, 0x0037, ++ 0x0170, 0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, 0x0140, 0xa08e, ++ 0x003a, 0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, 0x0001, 0x001e, ++ 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, ++ 0xb7b2, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x6b40, ++ 0x2001, 0xb7b6, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, ++ 0xb7b4, 0x200c, 0x8000, 0x2014, 0x2071, 0xb78e, 0x711a, 0x721e, ++ 0x2001, 0x0064, 0x080c, 0x6b40, 0x2001, 0xb7b7, 0x82ff, 0x1110, ++ 0x2011, 0x0014, 0x2202, 0x2009, 0xb7b8, 0xa280, 0x000a, 0x200a, ++ 0x080c, 0x532a, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, ++ 0x0006, 0x00e6, 0x2001, 0xb7b6, 0x2003, 0x0028, 0x2001, 0xb7b7, ++ 0x2003, 0x0014, 0x2071, 0xb78e, 0x701b, 0x0000, 0x701f, 0x07d0, ++ 0x2001, 0xb7b8, 0x2003, 0x001e, 0x00ee, 0x000e, 0x0005, 0x00d6, ++ 0x6054, 0xa06d, 0x0110, 0x080c, 0x160f, 0x00de, 0x0005, 0x0005, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c7, 0x001e, ++ 0x0178, 0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x0033, 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xb500, 0xa186, ++ 0x0015, 0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, 0x6010, 0x2068, ++ 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x7331, 0x01d8, 0x7070, ++ 0x6a50, 0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, 0x1140, 0x6218, ++ 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2ce1, 0x080c, ++ 0x87a0, 0x0020, 0x080c, 0x8c19, 0x080c, 0x861d, 0x00fe, 0x00ee, ++ 0x00de, 0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, 0x0c80, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x85c7, 0x001e, 0x0180, ++ 0x611a, 0x080c, 0xa027, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x0043, 0x080c, 0x864c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xb500, 0xa186, ++ 0x0015, 0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, 0x6010, 0xa0e8, ++ 0x000f, 0x2c78, 0x080c, 0x7331, 0x01a8, 0x7070, 0x6a08, 0xa206, ++ 0x1130, 0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, 0x2c9c, 0x080c, ++ 0x87a0, 0x0020, 0x080c, 0x8c19, 0x080c, 0x861d, 0x00fe, 0x00ee, ++ 0x00de, 0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, 0x0c80, 0x0016, ++ 0x0026, 0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, 0x2100, 0xa205, ++ 0x0150, 0x6860, 0xa106, 0x1118, 0x685c, 0xa206, 0x0120, 0x6962, ++ 0x6a5e, 0xa085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00d6, 0x0036, ++ 0x6310, 0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, 0x11a0, 0x00c6, ++ 0x6318, 0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1140, 0x080c, ++ 0x524a, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x6a66, ++ 0x696a, 0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, 0x0006, 0x231c, ++ 0x686b, 0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, 0x6004, 0xa084, ++ 0x00ff, 0x686e, 0x00ce, 0x080c, 0x5408, 0x6013, 0x0000, 0x003e, ++ 0x00de, 0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, 0x0035, 0x0110, ++ 0x6a34, 0x0008, 0x6a28, 0x080c, 0x9c4a, 0x01f0, 0x2260, 0x611c, ++ 0xa186, 0x0003, 0x0118, 0xa186, 0x0006, 0x1190, 0x6834, 0xa206, ++ 0x0140, 0x6838, 0xa206, 0x1160, 0x6108, 0x6834, 0xa106, 0x1140, ++ 0x0020, 0x6008, 0x6938, 0xa106, 0x1118, 0x6018, 0x6918, 0xa106, ++ 0x001e, 0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, 0x0cc8, 0x6944, ++ 0xd1cc, 0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x1170, 0xad88, ++ 0x001e, 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x1128, ++ 0x6810, 0x6914, 0xa115, 0x190c, 0x9483, 0x0005, 0x080c, 0x861d, ++ 0x0804, 0x7173, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, ++ 0x0013, 0x006e, 0x0005, 0xa16b, 0xa646, 0xa76c, 0xa16b, 0xa16b, ++ 0xa16b, 0xa16b, 0xa16b, 0xa1a3, 0xa7f0, 0xa16b, 0xa16b, 0xa16b, ++ 0xa16b, 0xa16b, 0xa16b, 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, ++ 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, 0xa186, 0xac77, ++ 0xa186, 0xa186, 0xa186, 0xa186, 0xa186, 0xa186, 0xac39, 0xacbf, ++ 0xa186, 0xb26c, 0xb29c, 0xb26c, 0xb29c, 0xa186, 0x080c, 0x1515, + 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, +- 0x0005, 0xa161, 0xa63c, 0xa762, 0xa161, 0xa161, 0xa161, 0xa161, +- 0xa161, 0xa199, 0xa7e6, 0xa161, 0xa161, 0xa161, 0xa161, 0xa161, +- 0xa161, 0x080c, 0x1515, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, +- 0x1515, 0x0013, 0x006e, 0x0005, 0xa17c, 0xac6b, 0xa17c, 0xa17c, +- 0xa17c, 0xa17c, 0xa17c, 0xa17c, 0xac2f, 0xacb3, 0xa17c, 0xb260, +- 0xb290, 0xb260, 0xb290, 0xa17c, 0x080c, 0x1515, 0x0066, 0x6000, +- 0xa0b2, 0x0010, 0x1a0c, 0x1515, 0x0013, 0x006e, 0x0005, 0xa197, +- 0xa936, 0xaa03, 0xaa30, 0xaab4, 0xa197, 0xaba1, 0xab4c, 0xa7f2, +- 0xac05, 0xac1a, 0xa197, 0xa197, 0xa197, 0xa197, 0xa197, 0x080c, +- 0x1515, 0xa1b2, 0x0080, 0x1a0c, 0x1515, 0x2100, 0xa1b2, 0x0040, +- 0x1a04, 0xa5b0, 0x0002, 0xa1e3, 0xa3ae, 0xa1e3, 0xa1e3, 0xa1e3, +- 0xa3b5, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, +- 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, +- 0xa1e3, 0xa1e3, 0xa1e5, 0xa243, 0xa252, 0xa2a0, 0xa2be, 0xa33c, +- 0xa39b, 0xa1e3, 0xa1e3, 0xa3b8, 0xa1e3, 0xa1e3, 0xa3cb, 0xa3d6, +- 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, 0xa461, 0xa1e3, 0xa1e3, +- 0xa474, 0xa1e3, 0xa1e3, 0xa42c, 0xa1e3, 0xa1e3, 0xa1e3, 0xa48c, +- 0xa1e3, 0xa1e3, 0xa1e3, 0xa506, 0xa1e3, 0xa1e3, 0xa1e3, 0xa1e3, +- 0xa1e3, 0xa1e3, 0xa577, 0x080c, 0x1515, 0x080c, 0x530a, 0x1150, +- 0x2001, 0xb535, 0x2004, 0xd0cc, 0x1128, 0xa084, 0x0009, 0xa086, +- 0x0008, 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000, +- 0x0804, 0xa3a9, 0x080c, 0x52fa, 0x00e6, 0x00c6, 0x0036, 0x0026, +- 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, +- 0x6df6, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x2c08, 0x080c, +- 0xae76, 0x007e, 0x001e, 0x2e60, 0x080c, 0x51ab, 0x001e, 0x002e, +- 0x003e, 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, 0x080c, 0x4fb9, +- 0x00ce, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, +- 0x0278, 0x080c, 0xadba, 0x1904, 0xa29a, 0x080c, 0xad5a, 0x1120, +- 0x6007, 0x0008, 0x0804, 0xa3a9, 0x6007, 0x0009, 0x0804, 0xa3a9, +- 0x080c, 0xaf6f, 0x0128, 0x080c, 0xadba, 0x0d78, 0x0804, 0xa29a, +- 0x6013, 0x1900, 0x0c88, 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x6106, +- 0x080c, 0xad14, 0x6007, 0x0006, 0x0804, 0xa3a9, 0x6007, 0x0007, +- 0x0804, 0xa3a9, 0x080c, 0xb2c4, 0x1904, 0xa5ad, 0x080c, 0x2dbf, +- 0x1904, 0xa5ad, 0x00d6, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, +- 0xa082, 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, 0x4eec, 0xa6b4, +- 0xff00, 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, 0x0004, 0x0170, +- 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, 0xa686, 0x0004, +- 0x0128, 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, 0x080c, 0xae18, +- 0x11a0, 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, 0xa290, 0x0028, +- 0x2214, 0x2009, 0x0000, 0x080c, 0x2ce1, 0x002e, 0x080c, 0x504c, +- 0x6007, 0x000a, 0x00de, 0x0804, 0xa3a9, 0x6007, 0x000b, 0x00de, +- 0x0804, 0xa3a9, 0x080c, 0x2c9c, 0x6007, 0x0001, 0x0804, 0xa3a9, +- 0x080c, 0xb2c4, 0x1904, 0xa5ad, 0x080c, 0x2dbf, 0x1904, 0xa5ad, +- 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, 0x0707, 0x0d50, +- 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, +- 0x2ce1, 0x002e, 0x6007, 0x000c, 0x0804, 0xa3a9, 0x080c, 0x530a, ++ 0x0005, 0xa1a1, 0xa940, 0xaa0d, 0xaa3a, 0xaabe, 0xa1a1, 0xabab, ++ 0xab56, 0xa7fc, 0xac0f, 0xac24, 0xa1a1, 0xa1a1, 0xa1a1, 0xa1a1, ++ 0xa1a1, 0x080c, 0x1515, 0xa1b2, 0x0080, 0x1a0c, 0x1515, 0x2100, ++ 0xa1b2, 0x0040, 0x1a04, 0xa5ba, 0x0002, 0xa1ed, 0xa3b8, 0xa1ed, ++ 0xa1ed, 0xa1ed, 0xa3bf, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, ++ 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, ++ 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ef, 0xa24d, 0xa25c, 0xa2aa, ++ 0xa2c8, 0xa346, 0xa3a5, 0xa1ed, 0xa1ed, 0xa3c2, 0xa1ed, 0xa1ed, ++ 0xa3d5, 0xa3e0, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa46b, ++ 0xa1ed, 0xa1ed, 0xa47e, 0xa1ed, 0xa1ed, 0xa436, 0xa1ed, 0xa1ed, ++ 0xa1ed, 0xa496, 0xa1ed, 0xa1ed, 0xa1ed, 0xa510, 0xa1ed, 0xa1ed, ++ 0xa1ed, 0xa1ed, 0xa1ed, 0xa1ed, 0xa581, 0x080c, 0x1515, 0x080c, ++ 0x5309, 0x1150, 0x2001, 0xb535, 0x2004, 0xd0cc, 0x1128, 0xa084, ++ 0x0009, 0xa086, 0x0008, 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, ++ 0x6013, 0x0000, 0x0804, 0xa3b3, 0x080c, 0x52f9, 0x00e6, 0x00c6, ++ 0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, ++ 0x0029, 0x080c, 0x6df5, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d02, ++ 0x2c08, 0x080c, 0xae82, 0x007e, 0x001e, 0x2e60, 0x080c, 0x51aa, ++ 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, ++ 0x080c, 0x4fb8, 0x00ce, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, ++ 0xa082, 0x0006, 0x0278, 0x080c, 0xadc6, 0x1904, 0xa2a4, 0x080c, ++ 0xad66, 0x1120, 0x6007, 0x0008, 0x0804, 0xa3b3, 0x6007, 0x0009, ++ 0x0804, 0xa3b3, 0x080c, 0xaf7b, 0x0128, 0x080c, 0xadc6, 0x0d78, ++ 0x0804, 0xa2a4, 0x6013, 0x1900, 0x0c88, 0x080c, 0x2dbf, 0x1904, ++ 0xa5b7, 0x6106, 0x080c, 0xad20, 0x6007, 0x0006, 0x0804, 0xa3b3, ++ 0x6007, 0x0007, 0x0804, 0xa3b3, 0x080c, 0xb2d0, 0x1904, 0xa5b7, ++ 0x080c, 0x2dbf, 0x1904, 0xa5b7, 0x00d6, 0x6618, 0x2668, 0x6e04, ++ 0xa684, 0x00ff, 0xa082, 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, ++ 0x4eeb, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, ++ 0x0004, 0x0170, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, ++ 0xa686, 0x0004, 0x0128, 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, ++ 0x080c, 0xae24, 0x11a0, 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, ++ 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2ce1, 0x002e, ++ 0x080c, 0x504b, 0x6007, 0x000a, 0x00de, 0x0804, 0xa3b3, 0x6007, ++ 0x000b, 0x00de, 0x0804, 0xa3b3, 0x080c, 0x2c9c, 0x6007, 0x0001, ++ 0x0804, 0xa3b3, 0x080c, 0xb2d0, 0x1904, 0xa5b7, 0x080c, 0x2dbf, ++ 0x1904, 0xa5b7, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, ++ 0x0707, 0x0d50, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, ++ 0x0000, 0x080c, 0x2ce1, 0x002e, 0x6007, 0x000c, 0x0804, 0xa3b3, ++ 0x080c, 0x5309, 0x1140, 0x2001, 0xb535, 0x2004, 0xa084, 0x0009, ++ 0xa086, 0x0008, 0x1110, 0x0804, 0xa1fc, 0x080c, 0x52f9, 0x6618, ++ 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, ++ 0x1138, 0x0026, 0x2001, 0x0006, 0x080c, 0x4f2a, 0x002e, 0x0050, ++ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, ++ 0x1904, 0xa2a4, 0x080c, 0xae31, 0x1120, 0x6007, 0x000e, 0x0804, ++ 0xa3b3, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, ++ 0x8427, 0x0046, 0x080c, 0x2c9c, 0x004e, 0x0016, 0xa006, 0x2009, ++ 0xb553, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xb0e8, ++ 0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, ++ 0x004e, 0x6007, 0x0001, 0x0804, 0xa3b3, 0x2001, 0x0001, 0x080c, ++ 0x4eeb, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0xb505, 0x2011, 0xbb90, 0x080c, 0x90da, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0xa005, 0x0168, 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, ++ 0x0a04, 0xa2a4, 0xa682, 0x0007, 0x0a04, 0xa2f2, 0x0804, 0xa2a4, ++ 0x6013, 0x1900, 0x6007, 0x0009, 0x0804, 0xa3b3, 0x080c, 0x5309, + 0x1140, 0x2001, 0xb535, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, +- 0x1110, 0x0804, 0xa1f2, 0x080c, 0x52fa, 0x6618, 0xa6b0, 0x0001, +- 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, 0x1138, 0x0026, +- 0x2001, 0x0006, 0x080c, 0x4f2b, 0x002e, 0x0050, 0xa6b4, 0xff00, +- 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xa29a, +- 0x080c, 0xae25, 0x1120, 0x6007, 0x000e, 0x0804, 0xa3a9, 0x0046, +- 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x0046, +- 0x080c, 0x2c9c, 0x004e, 0x0016, 0xa006, 0x2009, 0xb553, 0x210c, +- 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xb0dc, 0x6018, 0x00d6, +- 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, +- 0x0001, 0x0804, 0xa3a9, 0x2001, 0x0001, 0x080c, 0x4eec, 0x0156, ++ 0x1110, 0x0804, 0xa1fc, 0x080c, 0x52f9, 0x6618, 0xa6b0, 0x0001, ++ 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, ++ 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xa2a4, ++ 0x080c, 0xae59, 0x1138, 0x080c, 0xad66, 0x1120, 0x6007, 0x0010, ++ 0x0804, 0xa3b3, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, ++ 0x00ff, 0x8427, 0x0046, 0x080c, 0x2c9c, 0x004e, 0x0016, 0xa006, ++ 0x2009, 0xb553, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, ++ 0xb0e8, 0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, ++ 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xaf7b, 0x0140, ++ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0950, 0x0804, 0xa2a4, ++ 0x6013, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2dbf, 0x1904, ++ 0xa5b7, 0x080c, 0xb2d0, 0x1904, 0xa5b7, 0x080c, 0xa5df, 0x1904, ++ 0xa2a4, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0005, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0cc0, 0x6007, ++ 0x0005, 0x0cc0, 0x080c, 0xb2d0, 0x1904, 0xa5b7, 0x080c, 0x2dbf, ++ 0x1904, 0xa5b7, 0x080c, 0xa5df, 0x1904, 0xa2a4, 0x6007, 0x0020, ++ 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0005, 0x080c, 0x2dbf, 0x1904, ++ 0xa5b7, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0005, ++ 0x080c, 0xb2d0, 0x1904, 0xa5b7, 0x080c, 0x2dbf, 0x1904, 0xa5b7, ++ 0x080c, 0xa5df, 0x1904, 0xa2a4, 0x0016, 0x0026, 0x2011, 0xbb91, ++ 0x2214, 0xa286, 0xffff, 0x0190, 0x2c08, 0x080c, 0x9c4a, 0x01e0, ++ 0x2260, 0x2011, 0xbb90, 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, ++ 0xa190, 0x0006, 0x2214, 0xa206, 0x01e8, 0x0070, 0x2011, 0xbb90, ++ 0x2214, 0x2c08, 0xa006, 0x080c, 0xb0ba, 0x11a0, 0x2011, 0xbb91, ++ 0x2214, 0xa286, 0xffff, 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, ++ 0x1700, 0x2011, 0xbb89, 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, ++ 0x0025, 0x0068, 0x601c, 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, ++ 0x0024, 0x1110, 0x080c, 0x861d, 0x2160, 0x6007, 0x0025, 0x6003, ++ 0x0001, 0x080c, 0x6cd3, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, ++ 0x080c, 0x4eeb, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, ++ 0x2019, 0xb505, 0x2011, 0xbb96, 0x080c, 0x90da, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xa3b3, 0x080c, ++ 0x8df6, 0x080c, 0x5acf, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, ++ 0x5aeb, 0x1158, 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, ++ 0x2003, 0x0001, 0x080c, 0x5a07, 0x0010, 0x080c, 0x5aa6, 0x003e, ++ 0x002e, 0x000e, 0x0005, 0x080c, 0x2dbf, 0x1904, 0xa5b7, 0x080c, ++ 0xa5df, 0x1904, 0xa2a4, 0x6106, 0x080c, 0xa5fb, 0x6007, 0x002b, ++ 0x0804, 0xa3b3, 0x6007, 0x002c, 0x0804, 0xa3b3, 0x080c, 0xb2d0, ++ 0x1904, 0xa5b7, 0x080c, 0x2dbf, 0x1904, 0xa5b7, 0x080c, 0xa5df, ++ 0x1904, 0xa2a4, 0x6106, 0x080c, 0xa5ff, 0x1120, 0x6007, 0x002e, ++ 0x0804, 0xa3b3, 0x6007, 0x002f, 0x0804, 0xa3b3, 0x080c, 0x2dbf, ++ 0x1904, 0xa5b7, 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, 0x0001, ++ 0x200c, 0xa184, 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, 0xff00, ++ 0x8007, 0xa086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, ++ 0xa3b8, 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0904, 0xa50d, 0x2071, ++ 0xbb8c, 0x7010, 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, ++ 0xb553, 0x2004, 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, 0xa106, ++ 0x1118, 0x6814, 0xa206, 0x01f8, 0x2001, 0xb553, 0x2004, 0xd0ac, ++ 0x1590, 0x2069, 0xb500, 0x6874, 0xa206, 0x1568, 0x6870, 0xa106, ++ 0x1550, 0x7210, 0x080c, 0x9c4a, 0x0558, 0x080c, 0xb154, 0x0540, ++ 0x622a, 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x6c8d, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, 0x080c, ++ 0x9c4a, 0x01b0, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x1180, ++ 0x0c08, 0x7210, 0x2c08, 0xa085, 0x0001, 0x080c, 0xb0ba, 0x2c10, ++ 0x2160, 0x0130, 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, 0x08d8, ++ 0x6007, 0x0037, 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, 0x0898, ++ 0x080c, 0x2dbf, 0x1904, 0xa5b7, 0x6018, 0xa080, 0x0001, 0x2004, ++ 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x1904, 0xa3b8, 0x00e6, ++ 0x00d6, 0x00c6, 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0904, 0xa579, ++ 0x2069, 0xb500, 0x2071, 0xbb8c, 0x7008, 0x6036, 0x720c, 0x623a, ++ 0xa286, 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, 0x0001, ++ 0x080c, 0xb0ba, 0x2c10, 0x00ce, 0x0588, 0x080c, 0x9c4a, 0x0570, ++ 0x00c6, 0x0026, 0x2260, 0x080c, 0x991d, 0x002e, 0x00ce, 0x7118, ++ 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, 0x0005, ++ 0x0118, 0xa186, 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, 0xa005, ++ 0x0150, 0x0056, 0x7510, 0x7614, 0x080c, 0xb16b, 0x005e, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, ++ 0x2a00, 0x6003, 0x0001, 0x080c, 0x6c8d, 0x0c88, 0x6007, 0x003b, ++ 0x602b, 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, 0x6c8d, ++ 0x0c30, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0804, ++ 0xa4e3, 0x00e6, 0x0026, 0x080c, 0x5309, 0x0558, 0x080c, 0x52f9, ++ 0x080c, 0xb34b, 0x1520, 0x2071, 0xb500, 0x70d4, 0xc085, 0x70d6, ++ 0x00f6, 0x2079, 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, 0x78e6, ++ 0xa284, 0xff00, 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, 0x70df, ++ 0x0000, 0x2001, 0xb553, 0x2004, 0xd0a4, 0x0120, 0x2011, 0xb7f9, ++ 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2ab8, 0x0010, 0x080c, ++ 0xb377, 0x002e, 0x00ee, 0x080c, 0x861d, 0x0804, 0xa3b7, 0x080c, ++ 0x861d, 0x0005, 0x2600, 0x0002, 0xa5c5, 0xa5c5, 0xa5c5, 0xa5c5, ++ 0xa5c5, 0xa5c7, 0xa5c5, 0xa5c5, 0xa5c5, 0x080c, 0x1515, 0x080c, ++ 0xb2d0, 0x1d68, 0x080c, 0x2dbf, 0x1d50, 0x0089, 0x1138, 0x6007, ++ 0x0045, 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0005, 0x080c, 0x2c9c, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x6cd3, 0x0005, 0x00d6, ++ 0x0066, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, ++ 0x0006, 0x0170, 0xa686, 0x0004, 0x0158, 0x6e04, 0xa6b4, 0x00ff, ++ 0xa686, 0x0006, 0x0128, 0xa686, 0x0004, 0x0110, 0xa085, 0x0001, ++ 0x006e, 0x00de, 0x0005, 0x00d6, 0x0449, 0x00de, 0x0005, 0x00d6, ++ 0x0491, 0x11f0, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, ++ 0xa115, 0x6212, 0x6824, 0x602a, 0xd1e4, 0x0118, 0x2009, 0x0001, ++ 0x0060, 0xd1ec, 0x0168, 0x6920, 0xa18c, 0x00ff, 0x6824, 0x080c, ++ 0x281d, 0x1130, 0x2110, 0x2009, 0x0000, 0x080c, 0x2ce1, 0x0018, ++ 0xa085, 0x0001, 0x0008, 0xa006, 0x00de, 0x0005, 0x2069, 0xbb8d, ++ 0x6800, 0xa082, 0x0010, 0x1228, 0x6013, 0x0000, 0xa085, 0x0001, ++ 0x0008, 0xa006, 0x0005, 0x6013, 0x0000, 0x2069, 0xbb8c, 0x6808, ++ 0xa084, 0xff00, 0xa086, 0x0800, 0x1140, 0x6800, 0xa084, 0x00ff, ++ 0xa08e, 0x0014, 0x0110, 0xa08e, 0x0010, 0x0005, 0x6004, 0xa0b2, ++ 0x0080, 0x1a0c, 0x1515, 0xa1b6, 0x0013, 0x1130, 0x2008, 0xa1b2, ++ 0x0040, 0x1a04, 0xa746, 0x0092, 0xa1b6, 0x0027, 0x0120, 0xa1b6, ++ 0x0014, 0x190c, 0x1515, 0x2001, 0x0007, 0x080c, 0x4f2a, 0x080c, ++ 0x7090, 0x080c, 0x9e1d, 0x080c, 0x7173, 0x0005, 0xa6a6, 0xa6a8, ++ 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a8, 0xa6ba, 0xa73f, 0xa70a, 0xa73f, ++ 0xa71b, 0xa73f, 0xa6ba, 0xa73f, 0xa737, 0xa73f, 0xa737, 0xa73f, ++ 0xa73f, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, ++ 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a8, 0xa6a6, 0xa73f, 0xa6a6, ++ 0xa6a6, 0xa73f, 0xa6a6, 0xa73c, 0xa73f, 0xa6a6, 0xa6a6, 0xa6a6, ++ 0xa6a6, 0xa73f, 0xa73f, 0xa6a6, 0xa73f, 0xa73f, 0xa6a6, 0xa6b4, ++ 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0xa73b, 0xa73f, 0xa6a6, 0xa6a6, ++ 0xa73f, 0xa73f, 0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6, 0x080c, 0x1515, ++ 0x080c, 0x7090, 0x2001, 0xb7b6, 0x2004, 0x6016, 0x6003, 0x0002, ++ 0x080c, 0x7173, 0x0804, 0xa745, 0x2001, 0x0000, 0x080c, 0x4eeb, ++ 0x0804, 0xa73f, 0x00f6, 0x2079, 0xb552, 0x7804, 0x00fe, 0xd0ac, ++ 0x1904, 0xa73f, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x6018, 0xa080, ++ 0x0004, 0x2004, 0xa086, 0x00ff, 0x1140, 0x00f6, 0x2079, 0xb500, ++ 0x7898, 0x8000, 0x789a, 0x00fe, 0x00e0, 0x00c6, 0x6018, 0x2060, ++ 0x6000, 0xd0f4, 0x1140, 0x6010, 0xa005, 0x0128, 0x00ce, 0x080c, ++ 0x3f3e, 0x0804, 0xa73f, 0x00ce, 0x2001, 0xb500, 0x2004, 0xa086, ++ 0x0002, 0x1138, 0x00f6, 0x2079, 0xb500, 0x7898, 0x8000, 0x789a, ++ 0x00fe, 0x2001, 0x0002, 0x080c, 0x4efd, 0x080c, 0x7090, 0x601f, ++ 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd3, 0x080c, ++ 0x7173, 0x00c6, 0x6118, 0x2160, 0x2009, 0x0001, 0x080c, 0x69a8, ++ 0x00ce, 0x04d8, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa6b4, ++ 0xff00, 0x8637, 0xa686, 0x0006, 0x0550, 0xa686, 0x0004, 0x0538, ++ 0x2001, 0x0004, 0x0410, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, ++ 0x1110, 0x080c, 0x3f3e, 0x2001, 0x0006, 0x04a1, 0x6618, 0x00d6, ++ 0x2668, 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, ++ 0x0170, 0x2001, 0x0006, 0x0048, 0x2001, 0x0004, 0x0030, 0x2001, ++ 0x0006, 0x0401, 0x0020, 0x0018, 0x0010, 0x080c, 0x4f2a, 0x080c, ++ 0x7090, 0x080c, 0x861d, 0x080c, 0x7173, 0x0005, 0x2600, 0x0002, ++ 0xa751, 0xa751, 0xa751, 0xa751, 0xa751, 0xa753, 0xa751, 0xa751, ++ 0xa751, 0x080c, 0x1515, 0x080c, 0x7090, 0x080c, 0x861d, 0x080c, ++ 0x7173, 0x0005, 0x0016, 0x00d6, 0x6118, 0x2168, 0x6900, 0xd184, ++ 0x0140, 0x080c, 0x4efd, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x080c, ++ 0x2cc2, 0x00de, 0x001e, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, ++ 0xa084, 0xff00, 0x8007, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1515, ++ 0xa1b6, 0x0015, 0x1110, 0x003b, 0x0028, 0xa1b6, 0x0016, 0x190c, ++ 0x1515, 0x006b, 0x0005, 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, ++ 0x8cdf, 0xa7dc, 0xa79b, 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, ++ 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, 0x8cdf, 0xa7dc, 0xa7e3, 0x8cdf, ++ 0x8cdf, 0x8cdf, 0x8cdf, 0x00f6, 0x2079, 0xb552, 0x7804, 0xd0ac, ++ 0x11e0, 0x6018, 0xa07d, 0x01c8, 0x7800, 0xd0f4, 0x1118, 0x7810, ++ 0xa005, 0x1198, 0x2001, 0x0000, 0x080c, 0x4eeb, 0x2001, 0x0002, ++ 0x080c, 0x4efd, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, ++ 0x080c, 0x6cd3, 0x080c, 0x7173, 0x00e8, 0x2011, 0xbb83, 0x2204, ++ 0x8211, 0x220c, 0x080c, 0x281d, 0x11a8, 0x00c6, 0x080c, 0x4fa9, ++ 0x0120, 0x00ce, 0x080c, 0x861d, 0x0068, 0x6010, 0x0006, 0x6014, ++ 0x0006, 0x080c, 0x4c0b, 0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, ++ 0x080c, 0x861d, 0x00fe, 0x0005, 0x6604, 0xa6b6, 0x001e, 0x1110, ++ 0x080c, 0x861d, 0x0005, 0x080c, 0x8f95, 0x1138, 0x6003, 0x0001, ++ 0x6007, 0x0001, 0x080c, 0x6cd3, 0x0010, 0x080c, 0x861d, 0x0005, ++ 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1515, 0x080c, 0x7090, 0x080c, ++ 0x9e1d, 0x080c, 0x7173, 0x0005, 0xa182, 0x0040, 0x0002, 0xa812, ++ 0xa812, 0xa812, 0xa812, 0xa814, 0xa812, 0xa812, 0xa812, 0xa812, ++ 0xa812, 0xa812, 0xa812, 0xa812, 0xa812, 0xa812, 0xa812, 0xa812, ++ 0xa812, 0xa812, 0x080c, 0x1515, 0x00d6, 0x00e6, 0x00f6, 0x0156, ++ 0x0046, 0x0026, 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, 0x0120, ++ 0x2021, 0x0000, 0x080c, 0xb31c, 0x6106, 0x2071, 0xbb80, 0x7444, ++ 0xa4a4, 0xff00, 0x0904, 0xa878, 0xa486, 0x2000, 0x1130, 0x2009, ++ 0x0001, 0x2011, 0x0200, 0x080c, 0x6b1a, 0x080c, 0x15f8, 0x090c, ++ 0x1515, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, ++ 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2, 0x6018, ++ 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x0016, 0xa084, 0xff00, ++ 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6857, 0x0036, 0x080c, ++ 0x5408, 0x001e, 0xa486, 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, ++ 0xb065, 0x0804, 0xa8d5, 0xa486, 0x0400, 0x1130, 0x2019, 0x0002, ++ 0x080c, 0xb017, 0x0804, 0xa8d5, 0xa486, 0x0200, 0x1110, 0x080c, ++ 0xaffc, 0xa486, 0x1000, 0x1110, 0x080c, 0xb04a, 0x0804, 0xa8d5, ++ 0x2069, 0xb874, 0x6a00, 0xd284, 0x0904, 0xa93c, 0xa284, 0x0300, ++ 0x1904, 0xa935, 0x6804, 0xa005, 0x0904, 0xa91d, 0x2d78, 0x6003, ++ 0x0007, 0x080c, 0x15df, 0x0904, 0xa8dc, 0x7800, 0xd08c, 0x1118, ++ 0x7804, 0x8001, 0x7806, 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, ++ 0x0116, 0x683b, 0x0000, 0x6008, 0x68b2, 0x2c00, 0x684a, 0x6018, ++ 0x2078, 0x78a0, 0x8007, 0x7130, 0x6986, 0x6846, 0x7928, 0x698a, ++ 0x792c, 0x698e, 0x7930, 0x6992, 0x7934, 0x6996, 0x6853, 0x003d, ++ 0x7244, 0xa294, 0x0003, 0xa286, 0x0002, 0x1118, 0x684f, 0x0040, ++ 0x0040, 0xa286, 0x0001, 0x1118, 0x684f, 0x0080, 0x0010, 0x684f, ++ 0x0000, 0x20a9, 0x000a, 0x2001, 0xbb90, 0xad90, 0x0015, 0x200c, ++ 0x810f, 0x2112, 0x8000, 0x8210, 0x1f04, 0xa8c7, 0x200c, 0x6982, ++ 0x8000, 0x200c, 0x697e, 0x080c, 0x5408, 0x002e, 0x004e, 0x015e, ++ 0x00fe, 0x00ee, 0x00de, 0x0005, 0x2001, 0xb50e, 0x2004, 0xd084, ++ 0x0120, 0x080c, 0x15f8, 0x1904, 0xa88d, 0x6013, 0x0100, 0x6003, ++ 0x0001, 0x6007, 0x0041, 0x080c, 0x6c8d, 0x080c, 0x7173, 0x0c28, ++ 0x2069, 0xbb92, 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, 0x11a8, ++ 0x2069, 0xbb80, 0x686c, 0xa084, 0x00ff, 0x0016, 0x6110, 0xa18c, ++ 0x0700, 0xa10d, 0x6112, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, ++ 0x080c, 0x6c8d, 0x080c, 0x7173, 0x0840, 0x6868, 0x602a, 0x686c, ++ 0x602e, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, ++ 0x6c8d, 0x080c, 0x7173, 0x0804, 0xa8d5, 0x2001, 0xb50d, 0x2004, ++ 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x3ecc, 0x6013, 0x0300, ++ 0x0010, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, ++ 0x6c8d, 0x080c, 0x7173, 0x0804, 0xa8d5, 0x6013, 0x0500, 0x0c98, ++ 0x6013, 0x0600, 0x0804, 0xa8f0, 0x6013, 0x0200, 0x0804, 0xa8f0, ++ 0xa186, 0x0013, 0x1170, 0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1515, ++ 0xa08a, 0x0053, 0x1a0c, 0x1515, 0xa082, 0x0040, 0x2008, 0x0804, ++ 0xa9ca, 0xa186, 0x0051, 0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, ++ 0xa086, 0x0041, 0x0518, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, ++ 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x6b74, ++ 0x002e, 0x001e, 0x000e, 0x012e, 0x6000, 0xa086, 0x0002, 0x1170, ++ 0x0804, 0xaa0d, 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, ++ 0x1515, 0x6004, 0xa082, 0x0040, 0x2008, 0x001a, 0x080c, 0x8663, ++ 0x0005, 0xa994, 0xa996, 0xa996, 0xa9ba, 0xa994, 0xa994, 0xa994, ++ 0xa994, 0xa994, 0xa994, 0xa994, 0xa994, 0xa994, 0xa994, 0xa994, ++ 0xa994, 0xa994, 0xa994, 0xa994, 0x080c, 0x1515, 0x080c, 0x7090, ++ 0x080c, 0x7173, 0x0036, 0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, ++ 0xf000, 0x01a8, 0x6003, 0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, ++ 0x2019, 0x0004, 0x080c, 0xb099, 0x6013, 0x0000, 0x6014, 0xa005, ++ 0x1120, 0x2001, 0xb7b7, 0x2004, 0x6016, 0x6003, 0x0007, 0x00de, ++ 0x003e, 0x0005, 0x00d6, 0x080c, 0x7090, 0x080c, 0x7173, 0x080c, ++ 0x9c5a, 0x0120, 0x6010, 0x2068, 0x080c, 0x160f, 0x080c, 0x9e1d, ++ 0x00de, 0x0005, 0x0002, 0xa9de, 0xa9fb, 0xa9e7, 0xaa07, 0xa9de, ++ 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, ++ 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0xa9de, 0x080c, 0x1515, ++ 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x080c, ++ 0x7090, 0x6010, 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, ++ 0x0007, 0x2009, 0x0043, 0x080c, 0x864c, 0x0010, 0x6003, 0x0002, ++ 0x080c, 0x7173, 0x0005, 0x080c, 0x7090, 0x080c, 0xb2d7, 0x1120, ++ 0x080c, 0x6aef, 0x080c, 0x861d, 0x080c, 0x7173, 0x0005, 0x080c, ++ 0x7090, 0x2009, 0x0041, 0x0804, 0xab56, 0xa182, 0x0040, 0x0002, ++ 0xaa23, 0xaa25, 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa26, ++ 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa23, 0xaa23, ++ 0xaa23, 0xaa31, 0xaa23, 0x080c, 0x1515, 0x0005, 0x6003, 0x0004, ++ 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, ++ 0x0005, 0x00d6, 0x080c, 0x6aef, 0x00de, 0x080c, 0xb33a, 0x080c, ++ 0x861d, 0x0005, 0xa182, 0x0040, 0x0002, 0xaa50, 0xaa50, 0xaa50, ++ 0xaa50, 0xaa50, 0xaa50, 0xaa50, 0xaa52, 0xaa50, 0xaa55, 0xaa8e, ++ 0xaa50, 0xaa50, 0xaa50, 0xaa50, 0xaa8e, 0xaa50, 0xaa50, 0xaa50, ++ 0x080c, 0x1515, 0x080c, 0x8663, 0x0005, 0x2001, 0xb572, 0x2004, ++ 0xd0e4, 0x0158, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x0228, ++ 0x2001, 0x011f, 0x2004, 0x6036, 0x0010, 0x6037, 0x0000, 0x080c, ++ 0x7126, 0x080c, 0x7230, 0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, ++ 0x0150, 0xa08c, 0x0003, 0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, ++ 0x00de, 0x0804, 0xab56, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, ++ 0x6aef, 0x00de, 0x0005, 0x080c, 0xb2d7, 0x0110, 0x00de, 0x0005, ++ 0x080c, 0x6aef, 0x080c, 0x861d, 0x00de, 0x0ca0, 0x0036, 0x080c, ++ 0x7126, 0x080c, 0x7230, 0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, ++ 0xd0bc, 0x0188, 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0140, ++ 0x687c, 0x632c, 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, ++ 0x6003, 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xb099, 0x6014, ++ 0xa005, 0x1128, 0x2001, 0xb7b7, 0x2004, 0x8003, 0x6016, 0x6013, ++ 0x0000, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, 0xa186, 0x0013, ++ 0x1150, 0x6004, 0xa086, 0x0042, 0x190c, 0x1515, 0x080c, 0x7090, ++ 0x080c, 0x7173, 0x0005, 0xa186, 0x0027, 0x0118, 0xa186, 0x0014, ++ 0x1180, 0x6004, 0xa086, 0x0042, 0x190c, 0x1515, 0x2001, 0x0007, ++ 0x080c, 0x4f2a, 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, 0x7173, ++ 0x0005, 0xa182, 0x0040, 0x0002, 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf7, ++ 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf9, 0xab05, 0xaaf7, 0xaaf7, 0xaaf7, ++ 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf7, 0xaaf7, 0x080c, ++ 0x1515, 0x0036, 0x0046, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, ++ 0x080c, 0x185e, 0x004e, 0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, ++ 0x6810, 0x6a14, 0x0006, 0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, ++ 0x2200, 0xa52b, 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, ++ 0x005e, 0x004e, 0x000e, 0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, ++ 0x2009, 0x0041, 0x00de, 0x0490, 0x6003, 0x0007, 0x6017, 0x0000, ++ 0x080c, 0x6aef, 0x00de, 0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, ++ 0x5305, 0x00fe, 0x000e, 0x0120, 0x6003, 0x0002, 0x00de, 0x0005, ++ 0x2009, 0xb50d, 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, ++ 0x6003, 0x0006, 0x0021, 0x080c, 0x6af1, 0x00de, 0x0005, 0xd2fc, ++ 0x0140, 0x8002, 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, ++ 0x0010, 0x2009, 0x0015, 0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, ++ 0x0208, 0x0062, 0xa186, 0x0013, 0x0120, 0xa186, 0x0014, 0x190c, ++ 0x1515, 0x6020, 0xd0dc, 0x090c, 0x1515, 0x0005, 0xab79, 0xab80, ++ 0xab8c, 0xab98, 0xab79, 0xab79, 0xab79, 0xaba7, 0xab79, 0xab7b, ++ 0xab7b, 0xab79, 0xab79, 0xab79, 0xab79, 0xab7b, 0xab79, 0xab7b, ++ 0xab79, 0x080c, 0x1515, 0x6020, 0xd0dc, 0x090c, 0x1515, 0x0005, ++ 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8d, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x7173, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, ++ 0x6c8d, 0x0126, 0x2091, 0x8000, 0x080c, 0x7173, 0x012e, 0x0005, ++ 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x1fa9, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x6cf0, 0x080c, 0x7230, 0x012e, 0x0005, 0xa016, ++ 0x080c, 0x185e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, ++ 0xa182, 0x0040, 0x0023, 0x00de, 0x003e, 0x012e, 0x0005, 0xabc7, ++ 0xabc9, 0xabdb, 0xabf6, 0xabc7, 0xabc7, 0xabc7, 0xac0b, 0xabc7, ++ 0xabc7, 0xabc7, 0xabc7, 0xabc7, 0xabc7, 0xabc7, 0xabc7, 0x080c, ++ 0x1515, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, ++ 0xa39e, 0x0003, 0x01d0, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8d, ++ 0x080c, 0x7173, 0x0498, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, ++ 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, ++ 0x080c, 0x6c8d, 0x080c, 0x7173, 0x0408, 0x6013, 0x0000, 0x6017, ++ 0x0000, 0x2019, 0x0004, 0x080c, 0xb099, 0x00c0, 0x6010, 0x2068, ++ 0x684c, 0xd0fc, 0x0d90, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, ++ 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x6cf0, ++ 0x080c, 0x7230, 0x0018, 0xa016, 0x080c, 0x185e, 0x0005, 0x080c, ++ 0x7090, 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168, 0x080c, 0xb380, ++ 0x0036, 0x2019, 0x0029, 0x080c, 0xb099, 0x003e, 0x00de, 0x080c, ++ 0x9e1d, 0x080c, 0x7173, 0x0005, 0x080c, 0x7126, 0x6110, 0x81ff, ++ 0x0158, 0x00d6, 0x2168, 0x080c, 0xb380, 0x0036, 0x2019, 0x0029, ++ 0x080c, 0xb099, 0x003e, 0x00de, 0x080c, 0x9e1d, 0x080c, 0x7230, ++ 0x0005, 0xa182, 0x0085, 0x0002, 0xac45, 0xac43, 0xac43, 0xac51, ++ 0xac43, 0xac43, 0xac43, 0x080c, 0x1515, 0x6003, 0x000b, 0x6106, ++ 0x080c, 0x6c8d, 0x0126, 0x2091, 0x8000, 0x080c, 0x7173, 0x012e, ++ 0x0005, 0x0026, 0x00e6, 0x080c, 0xb2d0, 0x0118, 0x080c, 0x861d, ++ 0x00d8, 0x2071, 0xbb80, 0x7224, 0x6212, 0x7220, 0x080c, 0xaf47, ++ 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, 0xa296, ++ 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, 0x6c8d, ++ 0x080c, 0x7173, 0x080c, 0x7230, 0x00ee, 0x002e, 0x0005, 0xa186, ++ 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1515, 0xa08a, ++ 0x008c, 0x1a0c, 0x1515, 0xa082, 0x0085, 0x00a2, 0xa186, 0x0027, ++ 0x0130, 0xa186, 0x0014, 0x0118, 0x080c, 0x8663, 0x0050, 0x2001, ++ 0x0007, 0x080c, 0x4f2a, 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, ++ 0x7173, 0x0005, 0xaca1, 0xaca3, 0xaca3, 0xaca1, 0xaca1, 0xaca1, ++ 0xaca1, 0x080c, 0x1515, 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, ++ 0x7173, 0x0005, 0xa182, 0x0085, 0x0a0c, 0x1515, 0xa182, 0x008c, ++ 0x1a0c, 0x1515, 0xa182, 0x0085, 0x0002, 0xacbc, 0xacbc, 0xacbc, ++ 0xacbe, 0xacbc, 0xacbc, 0xacbc, 0x080c, 0x1515, 0x0005, 0xa186, ++ 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, ++ 0x080c, 0x8663, 0x0030, 0x080c, 0x7090, 0x080c, 0x9e1d, 0x080c, ++ 0x7173, 0x0005, 0x0036, 0x080c, 0xb33a, 0x603f, 0x0000, 0x2019, ++ 0x000b, 0x0031, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, ++ 0x0126, 0x0036, 0x2091, 0x8000, 0x0086, 0x2c40, 0x0096, 0x2049, ++ 0x0000, 0x080c, 0x8130, 0x009e, 0x008e, 0x1578, 0x0076, 0x2c38, ++ 0x080c, 0x81d6, 0x007e, 0x1548, 0x6000, 0xa086, 0x0000, 0x0528, ++ 0x601c, 0xa086, 0x0007, 0x0508, 0x00d6, 0x6000, 0xa086, 0x0004, ++ 0x1150, 0x080c, 0xb33a, 0x601f, 0x0007, 0x2001, 0xb7b6, 0x2004, ++ 0x6016, 0x080c, 0x194d, 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0110, ++ 0x080c, 0xb099, 0x00de, 0x6013, 0x0000, 0x080c, 0xb33a, 0x601f, ++ 0x0007, 0x2001, 0xb7b6, 0x2004, 0x6016, 0x003e, 0x012e, 0x0005, ++ 0x00f6, 0x00c6, 0x0036, 0x0156, 0x2079, 0xbb80, 0x7938, 0x783c, ++ 0x080c, 0x281d, 0x15b0, 0x0016, 0x00c6, 0x080c, 0x4fa9, 0x1578, ++ 0x001e, 0x002e, 0x0026, 0x0016, 0x2019, 0x0029, 0x080c, 0x8299, ++ 0x080c, 0x6df5, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d02, 0x007e, ++ 0x001e, 0x0076, 0x2039, 0x0000, 0x080c, 0xae82, 0x007e, 0x080c, ++ 0x51aa, 0x0026, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, ++ 0x0118, 0xa286, 0x0004, 0x1118, 0x62a0, 0x080c, 0x2d55, 0x002e, ++ 0x001e, 0x080c, 0x4c0b, 0x6612, 0x6516, 0xa006, 0x0010, 0x00ce, ++ 0x001e, 0x015e, 0x003e, 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, ++ 0x00e6, 0x0016, 0x2009, 0xb521, 0x2104, 0xa086, 0x0074, 0x1904, ++ 0xadbb, 0x2069, 0xbb8e, 0x690c, 0xa182, 0x0100, 0x06c0, 0x6908, ++ 0xa184, 0x8000, 0x05e8, 0x2001, 0xb79e, 0x2004, 0xa005, 0x1160, ++ 0x6018, 0x2070, 0x7010, 0xa084, 0x00ff, 0x0118, 0x7000, 0xd0f4, ++ 0x0118, 0xa184, 0x0800, 0x0560, 0x6910, 0xa18a, 0x0001, 0x0610, ++ 0x6914, 0x2069, 0xbbae, 0x6904, 0x81ff, 0x1198, 0x690c, 0xa182, ++ 0x0100, 0x02a8, 0x6908, 0x81ff, 0x1178, 0x6910, 0xa18a, 0x0001, ++ 0x0288, 0x6918, 0xa18a, 0x0001, 0x0298, 0x00d0, 0x6013, 0x0100, ++ 0x00a0, 0x6013, 0x0300, 0x0088, 0x6013, 0x0500, 0x0070, 0x6013, ++ 0x0700, 0x0058, 0x6013, 0x0900, 0x0040, 0x6013, 0x0b00, 0x0028, ++ 0x6013, 0x0f00, 0x0010, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0008, ++ 0xa006, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, ++ 0x0026, 0x0036, 0x0156, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, ++ 0xa286, 0x0006, 0x0190, 0xa286, 0x0004, 0x0178, 0xa394, 0xff00, ++ 0x8217, 0xa286, 0x0006, 0x0148, 0xa286, 0x0004, 0x0130, 0x00c6, ++ 0x2d60, 0x080c, 0x4fb8, 0x00ce, 0x04c0, 0x2011, 0xbb96, 0xad98, ++ 0x000a, 0x20a9, 0x0004, 0x080c, 0x90da, 0x1580, 0x2011, 0xbb9a, ++ 0xad98, 0x0006, 0x20a9, 0x0004, 0x080c, 0x90da, 0x1538, 0x0046, ++ 0x0016, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xb553, ++ 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xb0e8, 0x6800, ++ 0xc0e5, 0x6802, 0x2019, 0x0029, 0x080c, 0x6df5, 0x0076, 0x2039, ++ 0x0000, 0x080c, 0x6d02, 0x2c08, 0x080c, 0xae82, 0x007e, 0x2001, ++ 0x0007, 0x080c, 0x4f2a, 0x001e, 0x004e, 0xa006, 0x015e, 0x003e, ++ 0x002e, 0x00de, 0x00ce, 0x0005, 0x00d6, 0x2069, 0xbb8e, 0x6800, ++ 0xa086, 0x0800, 0x0118, 0x6013, 0x0000, 0x0008, 0xa006, 0x00de, ++ 0x0005, 0x00c6, 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, ++ 0xbb8c, 0x7930, 0x7834, 0x080c, 0x281d, 0x11a0, 0x080c, 0x4fa9, ++ 0x1188, 0x2011, 0xbb90, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, ++ 0x90da, 0x1140, 0x2011, 0xbb94, 0xac98, 0x0006, 0x20a9, 0x0004, ++ 0x080c, 0x90da, 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, ++ 0x0005, 0x00c6, 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, ++ 0xbb83, 0x2204, 0x8211, 0x220c, 0x080c, 0x281d, 0x11a0, 0x080c, ++ 0x4fa9, 0x1188, 0x2011, 0xbb96, 0xac98, 0x000a, 0x20a9, 0x0004, ++ 0x080c, 0x90da, 0x1140, 0x2011, 0xbb9a, 0xac98, 0x0006, 0x20a9, ++ 0x0004, 0x080c, 0x90da, 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, ++ 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, ++ 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, 0xb7e9, ++ 0x252c, 0x2021, 0xb7ef, 0x2424, 0x2061, 0xbd00, 0x2071, 0xb500, ++ 0x7648, 0x7068, 0x81ff, 0x0150, 0x0006, 0xa186, 0xb8f4, 0x000e, ++ 0x0128, 0x8001, 0xa602, 0x1a04, 0xaf03, 0x0018, 0xa606, 0x0904, ++ 0xaf03, 0x2100, 0xac06, 0x0904, 0xaefa, 0x080c, 0xb110, 0x0904, ++ 0xaefa, 0x671c, 0xa786, 0x0001, 0x0904, 0xaf1e, 0xa786, 0x0004, ++ 0x0904, 0xaf1e, 0xa786, 0x0007, 0x05e8, 0x2500, 0xac06, 0x05d0, ++ 0x2400, 0xac06, 0x05b8, 0x080c, 0xb120, 0x15a0, 0x88ff, 0x0118, ++ 0x6050, 0xa906, 0x1578, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1120, ++ 0x0016, 0x080c, 0x194d, 0x001e, 0xa786, 0x0008, 0x1148, 0x080c, ++ 0x9e58, 0x1130, 0x080c, 0x8c19, 0x00de, 0x080c, 0x9e1d, 0x00d0, ++ 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0190, 0xa786, 0x0003, 0x1528, ++ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xb380, 0x0016, ++ 0x080c, 0x9ecc, 0x080c, 0x5408, 0x001e, 0x080c, 0x9e11, 0x00de, ++ 0x080c, 0x9e1d, 0xace0, 0x0018, 0x2001, 0xb517, 0x2004, 0xac02, ++ 0x1210, 0x0804, 0xae96, 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, ++ 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0xa786, 0x0006, 0x1150, ++ 0xa386, 0x0005, 0x0128, 0x080c, 0xb380, 0x080c, 0xb099, 0x08f8, ++ 0x00de, 0x0c00, 0xa786, 0x000a, 0x0968, 0x0850, 0x080c, 0xb120, ++ 0x19c8, 0x81ff, 0x09b8, 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, ++ 0x0130, 0xa180, 0x0001, 0x2004, 0xa086, 0x002d, 0x1958, 0x6000, ++ 0xa086, 0x0002, 0x1938, 0x080c, 0x9e47, 0x0130, 0x080c, 0x9e58, ++ 0x1908, 0x080c, 0x8c19, 0x0038, 0x080c, 0x2cc2, 0x080c, 0x9e58, ++ 0x1110, 0x080c, 0x8c19, 0x080c, 0x9e1d, 0x0804, 0xaefa, 0x00c6, ++ 0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, 0x080c, 0xb0ba, 0x001e, ++ 0x0120, 0x601c, 0xa084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, ++ 0xaf60, 0xaf60, 0xaf60, 0xaf60, 0xaf60, 0xaf60, 0xaf62, 0xaf60, ++ 0xa006, 0x0005, 0x0046, 0x0016, 0x7018, 0xa080, 0x0028, 0x2024, ++ 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x080c, 0xb0e8, ++ 0x001e, 0x004e, 0x0036, 0x2019, 0x0002, 0x080c, 0xace0, 0x003e, ++ 0xa085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x4eeb, 0x0156, + 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xb505, 0x2011, +- 0xbb90, 0x080c, 0x90d4, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005, +- 0x0168, 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, 0x0a04, 0xa29a, +- 0xa682, 0x0007, 0x0a04, 0xa2e8, 0x0804, 0xa29a, 0x6013, 0x1900, +- 0x6007, 0x0009, 0x0804, 0xa3a9, 0x080c, 0x530a, 0x1140, 0x2001, +- 0xb535, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110, 0x0804, +- 0xa1f2, 0x080c, 0x52fa, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, +- 0x00ff, 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, 0x8637, 0xa686, +- 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xa29a, 0x080c, 0xae4d, +- 0x1138, 0x080c, 0xad5a, 0x1120, 0x6007, 0x0010, 0x0804, 0xa3a9, +- 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, +- 0x0046, 0x080c, 0x2c9c, 0x004e, 0x0016, 0xa006, 0x2009, 0xb553, +- 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xb0dc, 0x6018, +- 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, +- 0x6007, 0x0001, 0x00f0, 0x080c, 0xaf6f, 0x0140, 0xa6b4, 0xff00, +- 0x8637, 0xa686, 0x0006, 0x0950, 0x0804, 0xa29a, 0x6013, 0x1900, +- 0x6007, 0x0009, 0x0070, 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x080c, +- 0xb2c4, 0x1904, 0xa5ad, 0x080c, 0xa5d5, 0x1904, 0xa29a, 0x6007, +- 0x0012, 0x6003, 0x0001, 0x080c, 0x6cd4, 0x0005, 0x6007, 0x0001, +- 0x6003, 0x0001, 0x080c, 0x6cd4, 0x0cc0, 0x6007, 0x0005, 0x0cc0, +- 0x080c, 0xb2c4, 0x1904, 0xa5ad, 0x080c, 0x2dbf, 0x1904, 0xa5ad, +- 0x080c, 0xa5d5, 0x1904, 0xa29a, 0x6007, 0x0020, 0x6003, 0x0001, +- 0x080c, 0x6cd4, 0x0005, 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x6007, +- 0x0023, 0x6003, 0x0001, 0x080c, 0x6cd4, 0x0005, 0x080c, 0xb2c4, +- 0x1904, 0xa5ad, 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x080c, 0xa5d5, +- 0x1904, 0xa29a, 0x0016, 0x0026, 0x2011, 0xbb91, 0x2214, 0xa286, +- 0xffff, 0x0190, 0x2c08, 0x080c, 0x9c44, 0x01e0, 0x2260, 0x2011, +- 0xbb90, 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, 0xa190, 0x0006, +- 0x2214, 0xa206, 0x01e8, 0x0070, 0x2011, 0xbb90, 0x2214, 0x2c08, +- 0xa006, 0x080c, 0xb0ae, 0x11a0, 0x2011, 0xbb91, 0x2214, 0xa286, +- 0xffff, 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, +- 0xbb89, 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, +- 0x601c, 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, 0x0024, 0x1110, +- 0x080c, 0x8617, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, +- 0x6cd4, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x4eec, +- 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xb505, +- 0x2011, 0xbb96, 0x080c, 0x90d4, 0x003e, 0x002e, 0x001e, 0x015e, +- 0x0120, 0x6007, 0x0031, 0x0804, 0xa3a9, 0x080c, 0x8df0, 0x080c, +- 0x5ad0, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, 0x5aec, 0x1158, +- 0x2001, 0xb79f, 0x2003, 0x0001, 0x2001, 0xb500, 0x2003, 0x0001, +- 0x080c, 0x5a08, 0x0010, 0x080c, 0x5aa7, 0x003e, 0x002e, 0x000e, +- 0x0005, 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x080c, 0xa5d5, 0x1904, +- 0xa29a, 0x6106, 0x080c, 0xa5f1, 0x6007, 0x002b, 0x0804, 0xa3a9, +- 0x6007, 0x002c, 0x0804, 0xa3a9, 0x080c, 0xb2c4, 0x1904, 0xa5ad, +- 0x080c, 0x2dbf, 0x1904, 0xa5ad, 0x080c, 0xa5d5, 0x1904, 0xa29a, +- 0x6106, 0x080c, 0xa5f5, 0x1120, 0x6007, 0x002e, 0x0804, 0xa3a9, +- 0x6007, 0x002f, 0x0804, 0xa3a9, 0x080c, 0x2dbf, 0x1904, 0xa5ad, +- 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, 0x0001, 0x200c, 0xa184, +- 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, 0xff00, 0x8007, 0xa086, +- 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, 0xa3ae, 0x2001, +- 0xb572, 0x2004, 0xd0e4, 0x0904, 0xa503, 0x2071, 0xbb8c, 0x7010, +- 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xb553, 0x2004, +- 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, 0xa106, 0x1118, 0x6814, +- 0xa206, 0x01f8, 0x2001, 0xb553, 0x2004, 0xd0ac, 0x1590, 0x2069, +- 0xb500, 0x6874, 0xa206, 0x1568, 0x6870, 0xa106, 0x1550, 0x7210, +- 0x080c, 0x9c44, 0x0558, 0x080c, 0xb148, 0x0540, 0x622a, 0x6007, +- 0x0036, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x00ce, 0x00de, 0x00ee, +- 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, 0x080c, 0x9c44, 0x01b0, +- 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x1180, 0x0c08, 0x7210, +- 0x2c08, 0xa085, 0x0001, 0x080c, 0xb0ae, 0x2c10, 0x2160, 0x0130, +- 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, 0x08d8, 0x6007, 0x0037, +- 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, 0x0898, 0x080c, 0x2dbf, +- 0x1904, 0xa5ad, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084, 0xff00, +- 0x8007, 0xa086, 0x0006, 0x1904, 0xa3ae, 0x00e6, 0x00d6, 0x00c6, +- 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0904, 0xa56f, 0x2069, 0xb500, +- 0x2071, 0xbb8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286, 0xffff, +- 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, 0x0001, 0x080c, 0xb0ae, +- 0x2c10, 0x00ce, 0x0588, 0x080c, 0x9c44, 0x0570, 0x00c6, 0x0026, +- 0x2260, 0x080c, 0x9917, 0x002e, 0x00ce, 0x7118, 0xa18c, 0xff00, +- 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, 0x0005, 0x0118, 0xa186, +- 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, 0xa005, 0x0150, 0x0056, +- 0x7510, 0x7614, 0x080c, 0xb15f, 0x005e, 0x00ce, 0x00de, 0x00ee, +- 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003, +- 0x0001, 0x080c, 0x6c8e, 0x0c88, 0x6007, 0x003b, 0x602b, 0x0009, +- 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x0c30, 0x6007, +- 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0804, 0xa4d9, 0x00e6, +- 0x0026, 0x080c, 0x530a, 0x0558, 0x080c, 0x52fa, 0x080c, 0xb33f, +- 0x1520, 0x2071, 0xb500, 0x70d4, 0xc085, 0x70d6, 0x00f6, 0x2079, +- 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, 0x78e6, 0xa284, 0xff00, +- 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, 0x70df, 0x0000, 0x2001, +- 0xb553, 0x2004, 0xd0a4, 0x0120, 0x2011, 0xb7f9, 0x2013, 0x07d0, +- 0xd0ac, 0x1128, 0x080c, 0x2ab8, 0x0010, 0x080c, 0xb36b, 0x002e, +- 0x00ee, 0x080c, 0x8617, 0x0804, 0xa3ad, 0x080c, 0x8617, 0x0005, +- 0x2600, 0x0002, 0xa5bb, 0xa5bb, 0xa5bb, 0xa5bb, 0xa5bb, 0xa5bd, +- 0xa5bb, 0xa5bb, 0xa5bb, 0x080c, 0x1515, 0x080c, 0xb2c4, 0x1d68, +- 0x080c, 0x2dbf, 0x1d50, 0x0089, 0x1138, 0x6007, 0x0045, 0x6003, +- 0x0001, 0x080c, 0x6cd4, 0x0005, 0x080c, 0x2c9c, 0x6007, 0x0001, +- 0x6003, 0x0001, 0x080c, 0x6cd4, 0x0005, 0x00d6, 0x0066, 0x6618, +- 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, +- 0xa686, 0x0004, 0x0158, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, +- 0x0128, 0xa686, 0x0004, 0x0110, 0xa085, 0x0001, 0x006e, 0x00de, +- 0x0005, 0x00d6, 0x0449, 0x00de, 0x0005, 0x00d6, 0x0491, 0x11f0, +- 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, 0xa115, 0x6212, +- 0x6824, 0x602a, 0xd1e4, 0x0118, 0x2009, 0x0001, 0x0060, 0xd1ec, +- 0x0168, 0x6920, 0xa18c, 0x00ff, 0x6824, 0x080c, 0x281d, 0x1130, +- 0x2110, 0x2009, 0x0000, 0x080c, 0x2ce1, 0x0018, 0xa085, 0x0001, +- 0x0008, 0xa006, 0x00de, 0x0005, 0x2069, 0xbb8d, 0x6800, 0xa082, +- 0x0010, 0x1228, 0x6013, 0x0000, 0xa085, 0x0001, 0x0008, 0xa006, +- 0x0005, 0x6013, 0x0000, 0x2069, 0xbb8c, 0x6808, 0xa084, 0xff00, +- 0xa086, 0x0800, 0x1140, 0x6800, 0xa084, 0x00ff, 0xa08e, 0x0014, +- 0x0110, 0xa08e, 0x0010, 0x0005, 0x6004, 0xa0b2, 0x0080, 0x1a0c, +- 0x1515, 0xa1b6, 0x0013, 0x1130, 0x2008, 0xa1b2, 0x0040, 0x1a04, +- 0xa73c, 0x0092, 0xa1b6, 0x0027, 0x0120, 0xa1b6, 0x0014, 0x190c, +- 0x1515, 0x2001, 0x0007, 0x080c, 0x4f2b, 0x080c, 0x7091, 0x080c, +- 0x9e17, 0x080c, 0x7174, 0x0005, 0xa69c, 0xa69e, 0xa69c, 0xa69c, +- 0xa69c, 0xa69e, 0xa6b0, 0xa735, 0xa700, 0xa735, 0xa711, 0xa735, +- 0xa6b0, 0xa735, 0xa72d, 0xa735, 0xa72d, 0xa735, 0xa735, 0xa69c, +- 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0xa69c, +- 0xa69c, 0xa69c, 0xa69e, 0xa69c, 0xa735, 0xa69c, 0xa69c, 0xa735, +- 0xa69c, 0xa732, 0xa735, 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0xa735, +- 0xa735, 0xa69c, 0xa735, 0xa735, 0xa69c, 0xa6aa, 0xa69c, 0xa69c, +- 0xa69c, 0xa69c, 0xa731, 0xa735, 0xa69c, 0xa69c, 0xa735, 0xa735, +- 0xa69c, 0xa69c, 0xa69c, 0xa69c, 0x080c, 0x1515, 0x080c, 0x7091, +- 0x2001, 0xb7b6, 0x2004, 0x6016, 0x6003, 0x0002, 0x080c, 0x7174, +- 0x0804, 0xa73b, 0x2001, 0x0000, 0x080c, 0x4eec, 0x0804, 0xa735, +- 0x00f6, 0x2079, 0xb552, 0x7804, 0x00fe, 0xd0ac, 0x1904, 0xa735, +- 0x2001, 0x0000, 0x080c, 0x4eec, 0x6018, 0xa080, 0x0004, 0x2004, +- 0xa086, 0x00ff, 0x1140, 0x00f6, 0x2079, 0xb500, 0x7898, 0x8000, +- 0x789a, 0x00fe, 0x00e0, 0x00c6, 0x6018, 0x2060, 0x6000, 0xd0f4, +- 0x1140, 0x6010, 0xa005, 0x0128, 0x00ce, 0x080c, 0x3f3f, 0x0804, +- 0xa735, 0x00ce, 0x2001, 0xb500, 0x2004, 0xa086, 0x0002, 0x1138, +- 0x00f6, 0x2079, 0xb500, 0x7898, 0x8000, 0x789a, 0x00fe, 0x2001, +- 0x0002, 0x080c, 0x4efe, 0x080c, 0x7091, 0x601f, 0x0001, 0x6003, +- 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd4, 0x080c, 0x7174, 0x00c6, +- 0x6118, 0x2160, 0x2009, 0x0001, 0x080c, 0x69a9, 0x00ce, 0x04d8, +- 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, +- 0xa686, 0x0006, 0x0550, 0xa686, 0x0004, 0x0538, 0x2001, 0x0004, +- 0x0410, 0x2001, 0xb500, 0x2004, 0xa086, 0x0003, 0x1110, 0x080c, +- 0x3f3f, 0x2001, 0x0006, 0x04a1, 0x6618, 0x00d6, 0x2668, 0x6e04, +- 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0x2001, +- 0x0006, 0x0048, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0401, +- 0x0020, 0x0018, 0x0010, 0x080c, 0x4f2b, 0x080c, 0x7091, 0x080c, +- 0x8617, 0x080c, 0x7174, 0x0005, 0x2600, 0x0002, 0xa747, 0xa747, +- 0xa747, 0xa747, 0xa747, 0xa749, 0xa747, 0xa747, 0xa747, 0x080c, +- 0x1515, 0x080c, 0x7091, 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, +- 0x0016, 0x00d6, 0x6118, 0x2168, 0x6900, 0xd184, 0x0140, 0x080c, +- 0x4efe, 0x2001, 0x0000, 0x080c, 0x4eec, 0x080c, 0x2cc2, 0x00de, +- 0x001e, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, +- 0x8007, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1515, 0xa1b6, 0x0015, +- 0x1110, 0x003b, 0x0028, 0xa1b6, 0x0016, 0x190c, 0x1515, 0x006b, +- 0x0005, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0xa7d2, +- 0xa791, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, 0x8cd9, +- 0x8cd9, 0x8cd9, 0x8cd9, 0xa7d2, 0xa7d9, 0x8cd9, 0x8cd9, 0x8cd9, +- 0x8cd9, 0x00f6, 0x2079, 0xb552, 0x7804, 0xd0ac, 0x11e0, 0x6018, +- 0xa07d, 0x01c8, 0x7800, 0xd0f4, 0x1118, 0x7810, 0xa005, 0x1198, +- 0x2001, 0x0000, 0x080c, 0x4eec, 0x2001, 0x0002, 0x080c, 0x4efe, +- 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6cd4, +- 0x080c, 0x7174, 0x00e8, 0x2011, 0xbb83, 0x2204, 0x8211, 0x220c, +- 0x080c, 0x281d, 0x11a8, 0x00c6, 0x080c, 0x4faa, 0x0120, 0x00ce, +- 0x080c, 0x8617, 0x0068, 0x6010, 0x0006, 0x6014, 0x0006, 0x080c, +- 0x4c0c, 0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, 0x080c, 0x8617, +- 0x00fe, 0x0005, 0x6604, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x8617, +- 0x0005, 0x080c, 0x8f8f, 0x1138, 0x6003, 0x0001, 0x6007, 0x0001, +- 0x080c, 0x6cd4, 0x0010, 0x080c, 0x8617, 0x0005, 0x6004, 0xa08a, +- 0x0080, 0x1a0c, 0x1515, 0x080c, 0x7091, 0x080c, 0x9e17, 0x080c, +- 0x7174, 0x0005, 0xa182, 0x0040, 0x0002, 0xa808, 0xa808, 0xa808, +- 0xa808, 0xa80a, 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, +- 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, 0xa808, +- 0x080c, 0x1515, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0046, 0x0026, +- 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, 0x0120, 0x2021, 0x0000, +- 0x080c, 0xb310, 0x6106, 0x2071, 0xbb80, 0x7444, 0xa4a4, 0xff00, +- 0x0904, 0xa86e, 0xa486, 0x2000, 0x1130, 0x2009, 0x0001, 0x2011, +- 0x0200, 0x080c, 0x6b1b, 0x080c, 0x15f8, 0x090c, 0x1515, 0x6003, +- 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, +- 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2, 0x6018, 0x2078, 0x78a0, +- 0x8007, 0x7130, 0x694a, 0x0016, 0xa084, 0xff00, 0x6846, 0x684f, +- 0x0000, 0x6853, 0x0000, 0x6857, 0x0036, 0x080c, 0x5409, 0x001e, +- 0xa486, 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, 0xb059, 0x0804, +- 0xa8cb, 0xa486, 0x0400, 0x1130, 0x2019, 0x0002, 0x080c, 0xb00b, +- 0x0804, 0xa8cb, 0xa486, 0x0200, 0x1110, 0x080c, 0xaff0, 0xa486, +- 0x1000, 0x1110, 0x080c, 0xb03e, 0x0804, 0xa8cb, 0x2069, 0xb874, +- 0x6a00, 0xd284, 0x0904, 0xa932, 0xa284, 0x0300, 0x1904, 0xa92b, +- 0x6804, 0xa005, 0x0904, 0xa913, 0x2d78, 0x6003, 0x0007, 0x080c, +- 0x15df, 0x0904, 0xa8d2, 0x7800, 0xd08c, 0x1118, 0x7804, 0x8001, +- 0x7806, 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, +- 0x0000, 0x6008, 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, +- 0x8007, 0x7130, 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, +- 0x7930, 0x6992, 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, +- 0x0003, 0xa286, 0x0002, 0x1118, 0x684f, 0x0040, 0x0040, 0xa286, +- 0x0001, 0x1118, 0x684f, 0x0080, 0x0010, 0x684f, 0x0000, 0x20a9, +- 0x000a, 0x2001, 0xbb90, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, +- 0x8000, 0x8210, 0x1f04, 0xa8bd, 0x200c, 0x6982, 0x8000, 0x200c, +- 0x697e, 0x080c, 0x5409, 0x002e, 0x004e, 0x015e, 0x00fe, 0x00ee, +- 0x00de, 0x0005, 0x2001, 0xb50e, 0x2004, 0xd084, 0x0120, 0x080c, +- 0x15f8, 0x1904, 0xa883, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, +- 0x0041, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x0c28, 0x2069, 0xbb92, +- 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, 0x11a8, 0x2069, 0xbb80, +- 0x686c, 0xa084, 0x00ff, 0x0016, 0x6110, 0xa18c, 0x0700, 0xa10d, +- 0x6112, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, 0x6c8e, +- 0x080c, 0x7174, 0x0840, 0x6868, 0x602a, 0x686c, 0x602e, 0x6013, +- 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x6c8e, 0x080c, +- 0x7174, 0x0804, 0xa8cb, 0x2001, 0xb50d, 0x2004, 0xd0ec, 0x0120, +- 0x2011, 0x8049, 0x080c, 0x3ecd, 0x6013, 0x0300, 0x0010, 0x6013, +- 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x6c8e, 0x080c, +- 0x7174, 0x0804, 0xa8cb, 0x6013, 0x0500, 0x0c98, 0x6013, 0x0600, +- 0x0804, 0xa8e6, 0x6013, 0x0200, 0x0804, 0xa8e6, 0xa186, 0x0013, +- 0x1170, 0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1515, 0xa08a, 0x0053, +- 0x1a0c, 0x1515, 0xa082, 0x0040, 0x2008, 0x0804, 0xa9c0, 0xa186, +- 0x0051, 0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, 0xa086, 0x0041, +- 0x0518, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x0126, 0x2091, +- 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x6b75, 0x002e, 0x001e, +- 0x000e, 0x012e, 0x6000, 0xa086, 0x0002, 0x1170, 0x0804, 0xaa03, +- 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1515, 0x6004, +- 0xa082, 0x0040, 0x2008, 0x001a, 0x080c, 0x865d, 0x0005, 0xa98a, +- 0xa98c, 0xa98c, 0xa9b0, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, +- 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, +- 0xa98a, 0xa98a, 0x080c, 0x1515, 0x080c, 0x7091, 0x080c, 0x7174, +- 0x0036, 0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, 0xf000, 0x01a8, +- 0x6003, 0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, 0x2019, 0x0004, +- 0x080c, 0xb08d, 0x6013, 0x0000, 0x6014, 0xa005, 0x1120, 0x2001, +- 0xb7b7, 0x2004, 0x6016, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, +- 0x00d6, 0x080c, 0x7091, 0x080c, 0x7174, 0x080c, 0x9c54, 0x0120, +- 0x6010, 0x2068, 0x080c, 0x160f, 0x080c, 0x9e17, 0x00de, 0x0005, +- 0x0002, 0xa9d4, 0xa9f1, 0xa9dd, 0xa9fd, 0xa9d4, 0xa9d4, 0xa9d4, +- 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, +- 0xa9d4, 0xa9d4, 0xa9d4, 0xa9d4, 0x080c, 0x1515, 0x6010, 0xa088, +- 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x080c, 0x7091, 0x6010, +- 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, +- 0x0043, 0x080c, 0x8646, 0x0010, 0x6003, 0x0002, 0x080c, 0x7174, +- 0x0005, 0x080c, 0x7091, 0x080c, 0xb2cb, 0x1120, 0x080c, 0x6af0, +- 0x080c, 0x8617, 0x080c, 0x7174, 0x0005, 0x080c, 0x7091, 0x2009, +- 0x0041, 0x0804, 0xab4c, 0xa182, 0x0040, 0x0002, 0xaa19, 0xaa1b, +- 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa1c, 0xaa19, 0xaa19, +- 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa19, 0xaa27, +- 0xaa19, 0x080c, 0x1515, 0x0005, 0x6003, 0x0004, 0x6110, 0x20e1, +- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, 0x0005, 0x00d6, +- 0x080c, 0x6af0, 0x00de, 0x080c, 0xb32e, 0x080c, 0x8617, 0x0005, +- 0xa182, 0x0040, 0x0002, 0xaa46, 0xaa46, 0xaa46, 0xaa46, 0xaa46, +- 0xaa46, 0xaa46, 0xaa48, 0xaa46, 0xaa4b, 0xaa84, 0xaa46, 0xaa46, +- 0xaa46, 0xaa46, 0xaa84, 0xaa46, 0xaa46, 0xaa46, 0x080c, 0x1515, +- 0x080c, 0x865d, 0x0005, 0x2001, 0xb572, 0x2004, 0xd0e4, 0x0158, +- 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x0228, 0x2001, 0x011f, +- 0x2004, 0x6036, 0x0010, 0x6037, 0x0000, 0x080c, 0x7127, 0x080c, +- 0x7231, 0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, 0x0150, 0xa08c, +- 0x0003, 0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, 0x00de, 0x0804, +- 0xab4c, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x6af0, 0x00de, +- 0x0005, 0x080c, 0xb2cb, 0x0110, 0x00de, 0x0005, 0x080c, 0x6af0, +- 0x080c, 0x8617, 0x00de, 0x0ca0, 0x0036, 0x080c, 0x7127, 0x080c, +- 0x7231, 0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0188, +- 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0140, 0x687c, 0x632c, +- 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, 0x6003, 0x0002, +- 0x0080, 0x2019, 0x0004, 0x080c, 0xb08d, 0x6014, 0xa005, 0x1128, +- 0x2001, 0xb7b7, 0x2004, 0x8003, 0x6016, 0x6013, 0x0000, 0x6003, +- 0x0007, 0x00de, 0x003e, 0x0005, 0xa186, 0x0013, 0x1150, 0x6004, +- 0xa086, 0x0042, 0x190c, 0x1515, 0x080c, 0x7091, 0x080c, 0x7174, +- 0x0005, 0xa186, 0x0027, 0x0118, 0xa186, 0x0014, 0x1180, 0x6004, +- 0xa086, 0x0042, 0x190c, 0x1515, 0x2001, 0x0007, 0x080c, 0x4f2b, +- 0x080c, 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, 0x0005, 0xa182, +- 0x0040, 0x0002, 0xaaed, 0xaaed, 0xaaed, 0xaaed, 0xaaed, 0xaaed, +- 0xaaed, 0xaaef, 0xaafb, 0xaaed, 0xaaed, 0xaaed, 0xaaed, 0xaaed, +- 0xaaed, 0xaaed, 0xaaed, 0xaaed, 0xaaed, 0x080c, 0x1515, 0x0036, +- 0x0046, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x185e, +- 0x004e, 0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, 0x6810, 0x6a14, +- 0x0006, 0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, 0x2200, 0xa52b, +- 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x005e, 0x004e, +- 0x000e, 0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, 0x2009, 0x0041, +- 0x00de, 0x0490, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x6af0, +- 0x00de, 0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, 0x5306, 0x00fe, +- 0x000e, 0x0120, 0x6003, 0x0002, 0x00de, 0x0005, 0x2009, 0xb50d, +- 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, +- 0x0021, 0x080c, 0x6af2, 0x00de, 0x0005, 0xd2fc, 0x0140, 0x8002, +- 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, +- 0x0015, 0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, 0x0208, 0x0062, +- 0xa186, 0x0013, 0x0120, 0xa186, 0x0014, 0x190c, 0x1515, 0x6020, +- 0xd0dc, 0x090c, 0x1515, 0x0005, 0xab6f, 0xab76, 0xab82, 0xab8e, +- 0xab6f, 0xab6f, 0xab6f, 0xab9d, 0xab6f, 0xab71, 0xab71, 0xab6f, +- 0xab6f, 0xab6f, 0xab6f, 0xab71, 0xab6f, 0xab71, 0xab6f, 0x080c, +- 0x1515, 0x6020, 0xd0dc, 0x090c, 0x1515, 0x0005, 0x6003, 0x0001, +- 0x6106, 0x080c, 0x6c8e, 0x0126, 0x2091, 0x8000, 0x080c, 0x7174, +- 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8e, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x7174, 0x012e, 0x0005, 0x6003, 0x0003, +- 0x6106, 0x2c10, 0x080c, 0x1fa9, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x6cf1, 0x080c, 0x7231, 0x012e, 0x0005, 0xa016, 0x080c, 0x185e, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0xa182, 0x0040, +- 0x0023, 0x00de, 0x003e, 0x012e, 0x0005, 0xabbd, 0xabbf, 0xabd1, +- 0xabec, 0xabbd, 0xabbd, 0xabbd, 0xac01, 0xabbd, 0xabbd, 0xabbd, +- 0xabbd, 0xabbd, 0xabbd, 0xabbd, 0xabbd, 0x080c, 0x1515, 0x6010, +- 0x2068, 0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, 0xa39e, 0x0003, +- 0x01d0, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8e, 0x080c, 0x7174, +- 0x0498, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, 0xa09c, 0x0003, +- 0xa39e, 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c8e, +- 0x080c, 0x7174, 0x0408, 0x6013, 0x0000, 0x6017, 0x0000, 0x2019, +- 0x0004, 0x080c, 0xb08d, 0x00c0, 0x6010, 0x2068, 0x684c, 0xd0fc, +- 0x0d90, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, 0x6003, 0x0003, +- 0x6106, 0x2c10, 0x080c, 0x1fa9, 0x080c, 0x6cf1, 0x080c, 0x7231, +- 0x0018, 0xa016, 0x080c, 0x185e, 0x0005, 0x080c, 0x7091, 0x6110, +- 0x81ff, 0x0158, 0x00d6, 0x2168, 0x080c, 0xb374, 0x0036, 0x2019, +- 0x0029, 0x080c, 0xb08d, 0x003e, 0x00de, 0x080c, 0x9e17, 0x080c, +- 0x7174, 0x0005, 0x080c, 0x7127, 0x6110, 0x81ff, 0x0158, 0x00d6, +- 0x2168, 0x080c, 0xb374, 0x0036, 0x2019, 0x0029, 0x080c, 0xb08d, +- 0x003e, 0x00de, 0x080c, 0x9e17, 0x080c, 0x7231, 0x0005, 0xa182, +- 0x0085, 0x0002, 0xac3b, 0xac39, 0xac39, 0xac47, 0xac39, 0xac39, +- 0xac39, 0x080c, 0x1515, 0x6003, 0x000b, 0x6106, 0x080c, 0x6c8e, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x7174, 0x012e, 0x0005, 0x0026, +- 0x00e6, 0x080c, 0xb2c4, 0x0118, 0x080c, 0x8617, 0x00c8, 0x2071, +- 0xbb80, 0x7224, 0x6212, 0x7220, 0x080c, 0xaf3b, 0x0118, 0x6007, +- 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x1110, +- 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x080c, 0x7174, +- 0x00ee, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, +- 0x0085, 0x0a0c, 0x1515, 0xa08a, 0x008c, 0x1a0c, 0x1515, 0xa082, +- 0x0085, 0x00a2, 0xa186, 0x0027, 0x0130, 0xa186, 0x0014, 0x0118, +- 0x080c, 0x865d, 0x0050, 0x2001, 0x0007, 0x080c, 0x4f2b, 0x080c, +- 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, 0x0005, 0xac95, 0xac97, +- 0xac97, 0xac95, 0xac95, 0xac95, 0xac95, 0x080c, 0x1515, 0x080c, +- 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, 0x0005, 0xa182, 0x0085, +- 0x0a0c, 0x1515, 0xa182, 0x008c, 0x1a0c, 0x1515, 0xa182, 0x0085, +- 0x0002, 0xacb0, 0xacb0, 0xacb0, 0xacb2, 0xacb0, 0xacb0, 0xacb0, +- 0x080c, 0x1515, 0x0005, 0xa186, 0x0013, 0x0148, 0xa186, 0x0014, +- 0x0130, 0xa186, 0x0027, 0x0118, 0x080c, 0x865d, 0x0030, 0x080c, +- 0x7091, 0x080c, 0x9e17, 0x080c, 0x7174, 0x0005, 0x0036, 0x080c, +- 0xb32e, 0x603f, 0x0000, 0x2019, 0x000b, 0x0031, 0x601f, 0x0006, +- 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, +- 0x0086, 0x2c40, 0x0096, 0x2049, 0x0000, 0x080c, 0x8131, 0x009e, +- 0x008e, 0x1578, 0x0076, 0x2c38, 0x080c, 0x81d0, 0x007e, 0x1548, +- 0x6000, 0xa086, 0x0000, 0x0528, 0x601c, 0xa086, 0x0007, 0x0508, +- 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xb32e, 0x601f, +- 0x0007, 0x2001, 0xb7b6, 0x2004, 0x6016, 0x080c, 0x194d, 0x6010, +- 0x2068, 0x080c, 0x9c54, 0x0110, 0x080c, 0xb08d, 0x00de, 0x6013, +- 0x0000, 0x080c, 0xb32e, 0x601f, 0x0007, 0x2001, 0xb7b6, 0x2004, +- 0x6016, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, 0x0036, 0x0156, +- 0x2079, 0xbb80, 0x7938, 0x783c, 0x080c, 0x281d, 0x15b0, 0x0016, +- 0x00c6, 0x080c, 0x4faa, 0x1578, 0x001e, 0x002e, 0x0026, 0x0016, +- 0x2019, 0x0029, 0x080c, 0x8293, 0x080c, 0x6df6, 0x0076, 0x2039, +- 0x0000, 0x080c, 0x6d03, 0x007e, 0x001e, 0x0076, 0x2039, 0x0000, +- 0x080c, 0xae76, 0x007e, 0x080c, 0x51ab, 0x0026, 0x6204, 0xa294, +- 0xff00, 0x8217, 0xa286, 0x0006, 0x0118, 0xa286, 0x0004, 0x1118, +- 0x62a0, 0x080c, 0x2d55, 0x002e, 0x001e, 0x080c, 0x4c0c, 0x6612, +- 0x6516, 0xa006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00ce, +- 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x2009, 0xb521, +- 0x2104, 0xa086, 0x0074, 0x1904, 0xadaf, 0x2069, 0xbb8e, 0x690c, +- 0xa182, 0x0100, 0x06c0, 0x6908, 0xa184, 0x8000, 0x05e8, 0x2001, +- 0xb79e, 0x2004, 0xa005, 0x1160, 0x6018, 0x2070, 0x7010, 0xa084, +- 0x00ff, 0x0118, 0x7000, 0xd0f4, 0x0118, 0xa184, 0x0800, 0x0560, +- 0x6910, 0xa18a, 0x0001, 0x0610, 0x6914, 0x2069, 0xbbae, 0x6904, +- 0x81ff, 0x1198, 0x690c, 0xa182, 0x0100, 0x02a8, 0x6908, 0x81ff, +- 0x1178, 0x6910, 0xa18a, 0x0001, 0x0288, 0x6918, 0xa18a, 0x0001, +- 0x0298, 0x00d0, 0x6013, 0x0100, 0x00a0, 0x6013, 0x0300, 0x0088, +- 0x6013, 0x0500, 0x0070, 0x6013, 0x0700, 0x0058, 0x6013, 0x0900, +- 0x0040, 0x6013, 0x0b00, 0x0028, 0x6013, 0x0f00, 0x0010, 0x6013, +- 0x2d00, 0xa085, 0x0001, 0x0008, 0xa006, 0x001e, 0x00ee, 0x00de, +- 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x0026, 0x0036, 0x0156, 0x6218, +- 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0190, 0xa286, +- 0x0004, 0x0178, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0148, +- 0xa286, 0x0004, 0x0130, 0x00c6, 0x2d60, 0x080c, 0x4fb9, 0x00ce, +- 0x04c0, 0x2011, 0xbb96, 0xad98, 0x000a, 0x20a9, 0x0004, 0x080c, +- 0x90d4, 0x1580, 0x2011, 0xbb9a, 0xad98, 0x0006, 0x20a9, 0x0004, +- 0x080c, 0x90d4, 0x1538, 0x0046, 0x0016, 0x6aa0, 0xa294, 0x00ff, +- 0x8227, 0xa006, 0x2009, 0xb553, 0x210c, 0xd1a4, 0x0138, 0x2009, +- 0x0029, 0x080c, 0xb0dc, 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, +- 0x080c, 0x6df6, 0x0076, 0x2039, 0x0000, 0x080c, 0x6d03, 0x2c08, +- 0x080c, 0xae76, 0x007e, 0x2001, 0x0007, 0x080c, 0x4f2b, 0x001e, +- 0x004e, 0xa006, 0x015e, 0x003e, 0x002e, 0x00de, 0x00ce, 0x0005, +- 0x00d6, 0x2069, 0xbb8e, 0x6800, 0xa086, 0x0800, 0x0118, 0x6013, +- 0x0000, 0x0008, 0xa006, 0x00de, 0x0005, 0x00c6, 0x00f6, 0x0016, +- 0x0026, 0x0036, 0x0156, 0x2079, 0xbb8c, 0x7930, 0x7834, 0x080c, +- 0x281d, 0x11a0, 0x080c, 0x4faa, 0x1188, 0x2011, 0xbb90, 0xac98, +- 0x000a, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1140, 0x2011, 0xbb94, +- 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x015e, 0x003e, +- 0x002e, 0x001e, 0x00fe, 0x00ce, 0x0005, 0x00c6, 0x0006, 0x0016, +- 0x0026, 0x0036, 0x0156, 0x2011, 0xbb83, 0x2204, 0x8211, 0x220c, +- 0x080c, 0x281d, 0x11a0, 0x080c, 0x4faa, 0x1188, 0x2011, 0xbb96, +- 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1140, 0x2011, +- 0xbb9a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x015e, +- 0x003e, 0x002e, 0x001e, 0x000e, 0x00ce, 0x0005, 0x00e6, 0x00c6, +- 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126, 0x2091, +- 0x8000, 0x2740, 0x2029, 0xb7e9, 0x252c, 0x2021, 0xb7ef, 0x2424, +- 0x2061, 0xbd00, 0x2071, 0xb500, 0x7648, 0x7068, 0x81ff, 0x0150, +- 0x0006, 0xa186, 0xb8f4, 0x000e, 0x0128, 0x8001, 0xa602, 0x1a04, +- 0xaef7, 0x0018, 0xa606, 0x0904, 0xaef7, 0x2100, 0xac06, 0x0904, +- 0xaeee, 0x080c, 0xb104, 0x0904, 0xaeee, 0x671c, 0xa786, 0x0001, +- 0x0904, 0xaf12, 0xa786, 0x0004, 0x0904, 0xaf12, 0xa786, 0x0007, +- 0x05e8, 0x2500, 0xac06, 0x05d0, 0x2400, 0xac06, 0x05b8, 0x080c, +- 0xb114, 0x15a0, 0x88ff, 0x0118, 0x6050, 0xa906, 0x1578, 0x00d6, +- 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x194d, 0x001e, +- 0xa786, 0x0008, 0x1148, 0x080c, 0x9e52, 0x1130, 0x080c, 0x8c13, +- 0x00de, 0x080c, 0x9e17, 0x00d0, 0x6010, 0x2068, 0x080c, 0x9c54, +- 0x0190, 0xa786, 0x0003, 0x1528, 0x6837, 0x0103, 0x6b4a, 0x6847, +- 0x0000, 0x080c, 0xb374, 0x0016, 0x080c, 0x9ec6, 0x080c, 0x5409, +- 0x001e, 0x080c, 0x9e0b, 0x00de, 0x080c, 0x9e17, 0xace0, 0x0018, +- 0x2001, 0xb517, 0x2004, 0xac02, 0x1210, 0x0804, 0xae8a, 0x012e, +- 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, +- 0x0005, 0xa786, 0x0006, 0x1150, 0xa386, 0x0005, 0x0128, 0x080c, +- 0xb374, 0x080c, 0xb08d, 0x08f8, 0x00de, 0x0c00, 0xa786, 0x000a, +- 0x0968, 0x0850, 0x080c, 0xb114, 0x19c8, 0x81ff, 0x09b8, 0xa180, +- 0x0001, 0x2004, 0xa086, 0x0018, 0x0130, 0xa180, 0x0001, 0x2004, +- 0xa086, 0x002d, 0x1958, 0x6000, 0xa086, 0x0002, 0x1938, 0x080c, +- 0x9e41, 0x0130, 0x080c, 0x9e52, 0x1908, 0x080c, 0x8c13, 0x0038, +- 0x080c, 0x2cc2, 0x080c, 0x9e52, 0x1110, 0x080c, 0x8c13, 0x080c, +- 0x9e17, 0x0804, 0xaeee, 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, +- 0xa006, 0x080c, 0xb0ae, 0x001e, 0x0120, 0x601c, 0xa084, 0x000f, +- 0x001b, 0x00ee, 0x00ce, 0x0005, 0xaf54, 0xaf54, 0xaf54, 0xaf54, +- 0xaf54, 0xaf54, 0xaf56, 0xaf54, 0xa006, 0x0005, 0x0046, 0x0016, +- 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, +- 0x2009, 0x0020, 0x080c, 0xb0dc, 0x001e, 0x004e, 0x0036, 0x2019, +- 0x0002, 0x080c, 0xacd4, 0x003e, 0xa085, 0x0001, 0x0005, 0x2001, +- 0x0001, 0x080c, 0x4eec, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, +- 0x0004, 0x2019, 0xb505, 0x2011, 0xbb96, 0x080c, 0x90d4, 0x003e, +- 0x002e, 0x001e, 0x015e, 0xa005, 0x0005, 0x00f6, 0x00e6, 0x00c6, +- 0x0086, 0x0076, 0x0066, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, +- 0x2061, 0xbd00, 0x2079, 0x0001, 0x8fff, 0x0904, 0xafe3, 0x2071, +- 0xb500, 0x7648, 0x7068, 0x8001, 0xa602, 0x1a04, 0xafe3, 0x88ff, +- 0x0128, 0x2800, 0xac06, 0x15b0, 0x2079, 0x0000, 0x080c, 0xb104, +- 0x0588, 0x2400, 0xac06, 0x0570, 0x671c, 0xa786, 0x0006, 0x1550, +- 0xa786, 0x0007, 0x0538, 0x88ff, 0x1140, 0x6018, 0xa206, 0x1510, +- 0x85ff, 0x0118, 0x6050, 0xa106, 0x11e8, 0x00d6, 0x6000, 0xa086, +- 0x0004, 0x1150, 0x080c, 0xb32e, 0x601f, 0x0007, 0x2001, 0xb7b6, +- 0x2004, 0x6016, 0x080c, 0x194d, 0x6010, 0x2068, 0x080c, 0x9c54, +- 0x0120, 0x0046, 0x080c, 0xb08d, 0x004e, 0x00de, 0x080c, 0x9e17, +- 0x88ff, 0x1198, 0xace0, 0x0018, 0x2001, 0xb517, 0x2004, 0xac02, +- 0x1210, 0x0804, 0xaf94, 0xa006, 0x012e, 0x002e, 0x006e, 0x007e, +- 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0xa8c5, 0x0001, 0x0ca0, +- 0x0076, 0x0056, 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2c20, +- 0x2019, 0x0002, 0x6218, 0x0096, 0x2049, 0x0000, 0x080c, 0x8131, +- 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x81d0, 0x080c, 0xaf85, +- 0x005e, 0x007e, 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, +- 0x0156, 0x2c20, 0x2128, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, +- 0x0036, 0x080c, 0x4faa, 0x11b0, 0x2c10, 0x0056, 0x0086, 0x2041, +- 0x0000, 0x2508, 0x2029, 0x0001, 0x0096, 0x2049, 0x0000, 0x080c, +- 0x8131, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x81d0, 0x080c, +- 0xaf85, 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xb017, 0x015e, +- 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e, 0x0005, 0x0076, 0x0056, +- 0x6218, 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2019, 0x0048, +- 0x0096, 0x2049, 0x0000, 0x080c, 0x8131, 0x009e, 0x008e, 0x2039, +- 0x0000, 0x080c, 0x81d0, 0x2c20, 0x080c, 0xaf85, 0x005e, 0x007e, +- 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, +- 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x4faa, +- 0x11c0, 0x2c10, 0x0086, 0x2041, 0x0000, 0x2828, 0x0046, 0x2021, +- 0x0001, 0x080c, 0xb310, 0x004e, 0x0096, 0x2049, 0x0000, 0x080c, +- 0x8131, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x81d0, 0x080c, +- 0xaf85, 0x003e, 0x001e, 0x8108, 0x1f04, 0xb064, 0x015e, 0x00ce, +- 0x007e, 0x005e, 0x004e, 0x002e, 0x0005, 0x0016, 0x00f6, 0x3800, +- 0xd08c, 0x0130, 0xad82, 0x1000, 0x02b0, 0xad82, 0xb500, 0x0230, +- 0xad82, 0xed00, 0x0280, 0xad82, 0xffff, 0x1268, 0x6800, 0xa07d, +- 0x0138, 0x6803, 0x0000, 0x6b52, 0x080c, 0x5409, 0x2f68, 0x0cb0, +- 0x6b52, 0x080c, 0x5409, 0x00fe, 0x001e, 0x0005, 0x00e6, 0x0046, +- 0x0036, 0x2061, 0xbd00, 0xa005, 0x1138, 0x2071, 0xb500, 0x7448, +- 0x7068, 0x8001, 0xa402, 0x12d8, 0x2100, 0xac06, 0x0168, 0x6000, +- 0xa086, 0x0000, 0x0148, 0x6008, 0xa206, 0x1130, 0x6018, 0xa1a0, +- 0x0006, 0x2424, 0xa406, 0x0140, 0xace0, 0x0018, 0x2001, 0xb517, +- 0x2004, 0xac02, 0x1220, 0x0c40, 0xa085, 0x0001, 0x0008, 0xa006, +- 0x003e, 0x004e, 0x00ee, 0x0005, 0x00d6, 0x0006, 0x080c, 0x15f8, +- 0x000e, 0x090c, 0x1515, 0x6837, 0x010d, 0x685e, 0x0026, 0x2010, +- 0x080c, 0x9c44, 0x2001, 0x0000, 0x0120, 0x2200, 0xa080, 0x0014, +- 0x2004, 0x002e, 0x684a, 0x6956, 0x6c46, 0x684f, 0x0000, 0x2001, +- 0xb7be, 0x2004, 0x6852, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, +- 0x080c, 0x5409, 0x00de, 0x0005, 0x6700, 0xa786, 0x0000, 0x0158, +- 0xa786, 0x0001, 0x0140, 0xa786, 0x000a, 0x0128, 0xa786, 0x0009, +- 0x0110, 0xa085, 0x0001, 0x0005, 0x00e6, 0x6018, 0x2070, 0x70a0, +- 0xa206, 0x00ee, 0x0005, 0x0016, 0x6004, 0xa08e, 0x001e, 0x11a0, +- 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, 0x6032, 0x6007, 0x0085, +- 0x6003, 0x000b, 0x601f, 0x0005, 0x2001, 0xb7b7, 0x2004, 0x6016, +- 0x080c, 0x6c8e, 0x080c, 0x7174, 0x001e, 0x0005, 0xe000, 0xe000, +- 0x0005, 0x6020, 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0x9f2f, +- 0x0030, 0x080c, 0xb32e, 0x080c, 0x6af0, 0x080c, 0x8617, 0x0005, +- 0xa280, 0x0007, 0x2004, 0xa084, 0x000f, 0x0002, 0xb157, 0xb157, +- 0xb157, 0xb15c, 0xb157, 0xb159, 0xb159, 0xb157, 0xb159, 0xa006, +- 0x0005, 0x00c6, 0x2260, 0x00ce, 0xa085, 0x0001, 0x0005, 0xa280, +- 0x0007, 0x2004, 0xa084, 0x000f, 0x0002, 0xb16e, 0xb16e, 0xb16e, +- 0xb16e, 0xb16e, 0xb16e, 0xb179, 0xb16e, 0xb16e, 0x6007, 0x003b, +- 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003, 0x0001, 0x080c, 0x6c8e, +- 0x0005, 0x00c6, 0x2260, 0x080c, 0xb32e, 0x603f, 0x0000, 0x6020, +- 0xc0f4, 0xc0cc, 0x6022, 0x6037, 0x0000, 0x00ce, 0x00d6, 0x2268, +- 0xa186, 0x0007, 0x1904, 0xb1d4, 0x6810, 0xa005, 0x0138, 0xa080, +- 0x0013, 0x2004, 0xd0fc, 0x1110, 0x00de, 0x08c0, 0x6007, 0x003a, +- 0x6003, 0x0001, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00c6, 0x2d60, +- 0x6100, 0xa186, 0x0002, 0x1904, 0xb25d, 0x6010, 0xa005, 0x1138, +- 0x6000, 0xa086, 0x0007, 0x190c, 0x1515, 0x0804, 0xb25d, 0xa08c, +- 0xf000, 0x1130, 0x0028, 0x2068, 0x6800, 0xa005, 0x1de0, 0x2d00, +- 0xa080, 0x0013, 0x2004, 0xa084, 0x0003, 0xa086, 0x0002, 0x1180, +- 0x6010, 0x2068, 0x684c, 0xc0dc, 0xc0f4, 0x684e, 0x6850, 0xc0f4, +- 0xc0fc, 0x6852, 0x2009, 0x0043, 0x080c, 0xab4c, 0x0804, 0xb25d, +- 0x2009, 0x0041, 0x0804, 0xb257, 0xa186, 0x0005, 0x15f0, 0x6810, +- 0xa080, 0x0013, 0x2004, 0xd0bc, 0x1118, 0x00de, 0x0804, 0xb16e, +- 0xd0b4, 0x0128, 0xd0fc, 0x090c, 0x1515, 0x0804, 0xb18c, 0x6007, +- 0x003a, 0x6003, 0x0001, 0x080c, 0x6c8e, 0x080c, 0x7174, 0x00c6, +- 0x2d60, 0x6100, 0xa186, 0x0002, 0x0120, 0xa186, 0x0004, 0x1904, +- 0xb25d, 0x2071, 0xb823, 0x7000, 0xa086, 0x0003, 0x1128, 0x7004, +- 0xac06, 0x1110, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013, 0x200c, +- 0xc1f4, 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, +- 0x2102, 0x2009, 0x0042, 0x0804, 0xb257, 0x0036, 0x00d6, 0x00d6, +- 0x080c, 0x15f8, 0x003e, 0x090c, 0x1515, 0x6837, 0x010d, 0x6803, +- 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857, 0x0045, +- 0x2c00, 0x6862, 0x6034, 0x6872, 0x2360, 0x6020, 0xc0dd, 0x6022, +- 0x6018, 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007, 0x6350, +- 0x6b4a, 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6d6a, 0x6e66, +- 0x686f, 0x0001, 0x080c, 0x5409, 0x2019, 0x0045, 0x6008, 0x2068, +- 0x080c, 0xacd4, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, +- 0x6017, 0x0000, 0x603f, 0x0000, 0x00de, 0x003e, 0x0038, 0x603f, +- 0x0000, 0x6003, 0x0007, 0x080c, 0xab4c, 0x00ce, 0x00de, 0x0005, +- 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x00c2, +- 0xa186, 0x0027, 0x1178, 0x080c, 0x7091, 0x0036, 0x00d6, 0x6010, +- 0x2068, 0x2019, 0x0004, 0x080c, 0xb08d, 0x00de, 0x003e, 0x080c, +- 0x7174, 0x0005, 0xa186, 0x0014, 0x0d70, 0x080c, 0x865d, 0x0005, +- 0xb289, 0xb287, 0xb287, 0xb287, 0xb287, 0xb287, 0xb289, 0x080c, +- 0x1515, 0x080c, 0x7091, 0x6003, 0x000c, 0x080c, 0x7174, 0x0005, +- 0xa182, 0x008c, 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, +- 0x865d, 0x0005, 0xb2a1, 0xb2a1, 0xb2a1, 0xb2a1, 0xb2a3, 0xb2c1, +- 0xb2a1, 0x080c, 0x1515, 0x00d6, 0x2c68, 0x080c, 0x85c1, 0x01a0, +- 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0xbb8e, 0x210c, 0x6136, +- 0x2009, 0xbb8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a, +- 0x601f, 0x0004, 0x080c, 0x6c8e, 0x2d60, 0x080c, 0x8617, 0x00de, +- 0x0005, 0x080c, 0x8617, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, +- 0xd0ec, 0x00ee, 0x0005, 0x6010, 0xa08c, 0xf000, 0x0904, 0xb30f, +- 0xa080, 0x0013, 0x200c, 0xd1ec, 0x05d0, 0x2001, 0xb572, 0x2004, +- 0xd0ec, 0x05a8, 0x6003, 0x0002, 0x6020, 0xc0e5, 0x6022, 0xd1ac, +- 0x0180, 0x00f6, 0x2c78, 0x080c, 0x5302, 0x00fe, 0x0150, 0x2001, +- 0xb7b8, 0x2004, 0x603e, 0x2009, 0xb572, 0x210c, 0xd1f4, 0x11e8, +- 0x0080, 0x2009, 0xb572, 0x210c, 0xd1f4, 0x0128, 0x6020, 0xc0e4, +- 0x6022, 0xa006, 0x00a0, 0x2001, 0xb7b8, 0x200c, 0x8103, 0xa100, +- 0x603e, 0x6018, 0xa088, 0x002b, 0x2104, 0xa005, 0x0118, 0xa088, +- 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0xa085, 0x0001, 0x0005, +- 0x0016, 0x00c6, 0x00e6, 0x6150, 0xa2f0, 0x002b, 0x2e04, 0x2060, +- 0x8cff, 0x0180, 0x84ff, 0x1118, 0x6050, 0xa106, 0x1138, 0x600c, +- 0x2072, 0x080c, 0x6af0, 0x080c, 0x8617, 0x0010, 0xacf0, 0x0003, +- 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, 0x6018, +- 0xa0e8, 0x002b, 0x2d04, 0xa005, 0x0140, 0xac06, 0x0120, 0x2d04, +- 0xa0e8, 0x0003, 0x0cb8, 0x600c, 0x206a, 0x00de, 0x0005, 0x0026, +- 0x0036, 0x0156, 0x2011, 0xb528, 0x2204, 0xa084, 0x00ff, 0x2019, +- 0xbb8e, 0x2334, 0xa636, 0x11d8, 0x8318, 0x2334, 0x2204, 0xa084, +- 0xff00, 0xa636, 0x11a0, 0x2011, 0xbb90, 0x6018, 0xa098, 0x000a, +- 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1150, 0x2011, 0xbb94, 0x6018, +- 0xa098, 0x0006, 0x20a9, 0x0004, 0x080c, 0x90d4, 0x1100, 0x015e, +- 0x003e, 0x002e, 0x0005, 0x00e6, 0x2071, 0xb500, 0x080c, 0x4bc7, +- 0x080c, 0x2ab8, 0x00ee, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, +- 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, 0x6850, 0xc0e5, 0x6852, +- 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, +- 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0xb7e9, 0x252c, 0x2021, +- 0xb7ef, 0x2424, 0x2061, 0xbd00, 0x2071, 0xb500, 0x7648, 0x7068, +- 0xa606, 0x0578, 0x671c, 0xa786, 0x0001, 0x0118, 0xa786, 0x0008, +- 0x1500, 0x2500, 0xac06, 0x01e8, 0x2400, 0xac06, 0x01d0, 0x080c, +- 0xb104, 0x01b8, 0x080c, 0xb114, 0x11a0, 0x6000, 0xa086, 0x0004, +- 0x1120, 0x0016, 0x080c, 0x194d, 0x001e, 0x080c, 0x9e41, 0x1110, +- 0x080c, 0x2cc2, 0x080c, 0x9e52, 0x1110, 0x080c, 0x8c13, 0x080c, +- 0x9e17, 0xace0, 0x0018, 0x2001, 0xb517, 0x2004, 0xac02, 0x1208, +- 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, +- 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, +- 0x8000, 0x2071, 0xb540, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, +- 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, +- 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, +- 0xa08e, 0x0005, 0x0118, 0x2071, 0xb54a, 0x04c9, 0x001e, 0x00ee, +- 0x000e, 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, +- 0x8000, 0x2071, 0xb540, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, +- 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, +- 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, +- 0xa08e, 0x0005, 0x0118, 0x2071, 0xb54a, 0x0089, 0x001e, 0x00ee, +- 0x000e, 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, +- 0x2071, 0xb542, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, +- 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, +- 0x00e6, 0x2071, 0xb540, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, +- 0xb544, 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, +- 0x8000, 0x2071, 0xb540, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, +- 0x012e, 0x0005, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, +- 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, +- 0x4000, 0x8000, 0xada0 ++ 0xbb96, 0x080c, 0x90da, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005, ++ 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0026, ++ 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0xbd00, 0x2079, 0x0001, ++ 0x8fff, 0x0904, 0xafef, 0x2071, 0xb500, 0x7648, 0x7068, 0x8001, ++ 0xa602, 0x1a04, 0xafef, 0x88ff, 0x0128, 0x2800, 0xac06, 0x15b0, ++ 0x2079, 0x0000, 0x080c, 0xb110, 0x0588, 0x2400, 0xac06, 0x0570, ++ 0x671c, 0xa786, 0x0006, 0x1550, 0xa786, 0x0007, 0x0538, 0x88ff, ++ 0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, 0x0118, 0x6050, 0xa106, ++ 0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xb33a, ++ 0x601f, 0x0007, 0x2001, 0xb7b6, 0x2004, 0x6016, 0x080c, 0x194d, ++ 0x6010, 0x2068, 0x080c, 0x9c5a, 0x0120, 0x0046, 0x080c, 0xb099, ++ 0x004e, 0x00de, 0x080c, 0x9e1d, 0x88ff, 0x1198, 0xace0, 0x0018, ++ 0x2001, 0xb517, 0x2004, 0xac02, 0x1210, 0x0804, 0xafa0, 0xa006, ++ 0x012e, 0x002e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, 0x0056, 0x0086, 0x2041, ++ 0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x0096, ++ 0x2049, 0x0000, 0x080c, 0x8130, 0x009e, 0x008e, 0x2039, 0x0000, ++ 0x080c, 0x81d6, 0x080c, 0xaf91, 0x005e, 0x007e, 0x0005, 0x0026, ++ 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128, 0x20a9, ++ 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x4fa9, 0x11b0, ++ 0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001, ++ 0x0096, 0x2049, 0x0000, 0x080c, 0x8130, 0x009e, 0x008e, 0x2039, ++ 0x0000, 0x080c, 0x81d6, 0x080c, 0xaf91, 0x005e, 0x003e, 0x001e, ++ 0x8108, 0x1f04, 0xb023, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, ++ 0x002e, 0x0005, 0x0076, 0x0056, 0x6218, 0x0086, 0x2041, 0x0000, ++ 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, 0x2049, 0x0000, 0x080c, ++ 0x8130, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x81d6, 0x2c20, ++ 0x080c, 0xaf91, 0x005e, 0x007e, 0x0005, 0x0026, 0x0046, 0x0056, ++ 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000, ++ 0x0016, 0x0036, 0x080c, 0x4fa9, 0x11c0, 0x2c10, 0x0086, 0x2041, ++ 0x0000, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xb31c, 0x004e, ++ 0x0096, 0x2049, 0x0000, 0x080c, 0x8130, 0x009e, 0x008e, 0x2039, ++ 0x0000, 0x080c, 0x81d6, 0x080c, 0xaf91, 0x003e, 0x001e, 0x8108, ++ 0x1f04, 0xb070, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e, ++ 0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, 0x0130, 0xad82, 0x1000, ++ 0x02b0, 0xad82, 0xb500, 0x0230, 0xad82, 0xed00, 0x0280, 0xad82, ++ 0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, 0x6803, 0x0000, 0x6b52, ++ 0x080c, 0x5408, 0x2f68, 0x0cb0, 0x6b52, 0x080c, 0x5408, 0x00fe, ++ 0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, 0x2061, 0xbd00, 0xa005, ++ 0x1138, 0x2071, 0xb500, 0x7448, 0x7068, 0x8001, 0xa402, 0x12d8, ++ 0x2100, 0xac06, 0x0168, 0x6000, 0xa086, 0x0000, 0x0148, 0x6008, ++ 0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406, 0x0140, ++ 0xace0, 0x0018, 0x2001, 0xb517, 0x2004, 0xac02, 0x1220, 0x0c40, ++ 0xa085, 0x0001, 0x0008, 0xa006, 0x003e, 0x004e, 0x00ee, 0x0005, ++ 0x00d6, 0x0006, 0x080c, 0x15f8, 0x000e, 0x090c, 0x1515, 0x6837, ++ 0x010d, 0x685e, 0x0026, 0x2010, 0x080c, 0x9c4a, 0x2001, 0x0000, ++ 0x0120, 0x2200, 0xa080, 0x0014, 0x2004, 0x002e, 0x684a, 0x6956, ++ 0x6c46, 0x684f, 0x0000, 0x2001, 0xb7be, 0x2004, 0x6852, 0xa006, ++ 0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, 0x5408, 0x00de, 0x0005, ++ 0x6700, 0xa786, 0x0000, 0x0158, 0xa786, 0x0001, 0x0140, 0xa786, ++ 0x000a, 0x0128, 0xa786, 0x0009, 0x0110, 0xa085, 0x0001, 0x0005, ++ 0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, 0x00ee, 0x0005, 0x0016, ++ 0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, 0x6130, 0xa18c, 0x00ff, ++ 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005, ++ 0x2001, 0xb7b7, 0x2004, 0x6016, 0x080c, 0x6c8d, 0x080c, 0x7173, ++ 0x001e, 0x0005, 0xe000, 0xe000, 0x0005, 0x6020, 0xd0e4, 0x0158, ++ 0xd0cc, 0x0118, 0x080c, 0x9f35, 0x0030, 0x080c, 0xb33a, 0x080c, ++ 0x6aef, 0x080c, 0x861d, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084, ++ 0x000f, 0x0002, 0xb163, 0xb163, 0xb163, 0xb168, 0xb163, 0xb165, ++ 0xb165, 0xb163, 0xb165, 0xa006, 0x0005, 0x00c6, 0x2260, 0x00ce, ++ 0xa085, 0x0001, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f, ++ 0x0002, 0xb17a, 0xb17a, 0xb17a, 0xb17a, 0xb17a, 0xb17a, 0xb185, ++ 0xb17a, 0xb17a, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, ++ 0x6003, 0x0001, 0x080c, 0x6c8d, 0x0005, 0x00c6, 0x2260, 0x080c, ++ 0xb33a, 0x603f, 0x0000, 0x6020, 0xc0f4, 0xc0cc, 0x6022, 0x6037, ++ 0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, 0x0007, 0x1904, 0xb1e0, ++ 0x6810, 0xa005, 0x0138, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x1110, ++ 0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, 0x6c8d, ++ 0x080c, 0x7173, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002, 0x1904, ++ 0xb269, 0x6010, 0xa005, 0x1138, 0x6000, 0xa086, 0x0007, 0x190c, ++ 0x1515, 0x0804, 0xb269, 0xa08c, 0xf000, 0x1130, 0x0028, 0x2068, ++ 0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084, ++ 0x0003, 0xa086, 0x0002, 0x1180, 0x6010, 0x2068, 0x684c, 0xc0dc, ++ 0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043, ++ 0x080c, 0xab56, 0x0804, 0xb269, 0x2009, 0x0041, 0x0804, 0xb263, ++ 0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc, ++ 0x1118, 0x00de, 0x0804, 0xb17a, 0xd0b4, 0x0128, 0xd0fc, 0x090c, ++ 0x1515, 0x0804, 0xb198, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, ++ 0x6c8d, 0x080c, 0x7173, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002, ++ 0x0120, 0xa186, 0x0004, 0x1904, 0xb269, 0x2071, 0xb823, 0x7000, ++ 0xa086, 0x0003, 0x1128, 0x7004, 0xac06, 0x1110, 0x7003, 0x0000, ++ 0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000, ++ 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, 0x2009, 0x0042, 0x0804, ++ 0xb263, 0x0036, 0x00d6, 0x00d6, 0x080c, 0x15f8, 0x003e, 0x090c, ++ 0x1515, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, ++ 0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, 0x6862, 0x6034, 0x6872, ++ 0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, 0xa080, 0x0028, 0x2004, ++ 0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, 0x6846, 0x684f, 0x0000, ++ 0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, 0x0001, 0x080c, 0x5408, ++ 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xace0, 0x2d00, 0x600a, ++ 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, 0x0000, 0x603f, 0x0000, ++ 0x00de, 0x003e, 0x0038, 0x603f, 0x0000, 0x6003, 0x0007, 0x080c, ++ 0xab56, 0x00ce, 0x00de, 0x0005, 0xa186, 0x0013, 0x1128, 0x6004, ++ 0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, 0x0027, 0x1178, 0x080c, ++ 0x7090, 0x0036, 0x00d6, 0x6010, 0x2068, 0x2019, 0x0004, 0x080c, ++ 0xb099, 0x00de, 0x003e, 0x080c, 0x7173, 0x0005, 0xa186, 0x0014, ++ 0x0d70, 0x080c, 0x8663, 0x0005, 0xb295, 0xb293, 0xb293, 0xb293, ++ 0xb293, 0xb293, 0xb295, 0x080c, 0x1515, 0x080c, 0x7090, 0x6003, ++ 0x000c, 0x080c, 0x7173, 0x0005, 0xa182, 0x008c, 0x1220, 0xa182, ++ 0x0085, 0x0208, 0x001a, 0x080c, 0x8663, 0x0005, 0xb2ad, 0xb2ad, ++ 0xb2ad, 0xb2ad, 0xb2af, 0xb2cd, 0xb2ad, 0x080c, 0x1515, 0x00d6, ++ 0x2c68, 0x080c, 0x85c7, 0x01a0, 0x6003, 0x0001, 0x6007, 0x001e, ++ 0x2009, 0xbb8e, 0x210c, 0x6136, 0x2009, 0xbb8f, 0x210c, 0x613a, ++ 0x600b, 0xffff, 0x6918, 0x611a, 0x601f, 0x0004, 0x080c, 0x6c8d, ++ 0x2d60, 0x080c, 0x861d, 0x00de, 0x0005, 0x080c, 0x861d, 0x0005, ++ 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, 0x00ee, 0x0005, 0x6010, ++ 0xa08c, 0xf000, 0x0904, 0xb31b, 0xa080, 0x0013, 0x200c, 0xd1ec, ++ 0x05d0, 0x2001, 0xb572, 0x2004, 0xd0ec, 0x05a8, 0x6003, 0x0002, ++ 0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, 0x00f6, 0x2c78, 0x080c, ++ 0x5301, 0x00fe, 0x0150, 0x2001, 0xb7b8, 0x2004, 0x603e, 0x2009, ++ 0xb572, 0x210c, 0xd1f4, 0x11e8, 0x0080, 0x2009, 0xb572, 0x210c, ++ 0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, 0xa006, 0x00a0, 0x2001, ++ 0xb7b8, 0x200c, 0x8103, 0xa100, 0x603e, 0x6018, 0xa088, 0x002b, ++ 0x2104, 0xa005, 0x0118, 0xa088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, ++ 0x0000, 0xa085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6150, ++ 0xa2f0, 0x002b, 0x2e04, 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118, ++ 0x6050, 0xa106, 0x1138, 0x600c, 0x2072, 0x080c, 0x6aef, 0x080c, ++ 0x861d, 0x0010, 0xacf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce, ++ 0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, 0x002b, 0x2d04, 0xa005, ++ 0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, 0x0003, 0x0cb8, 0x600c, ++ 0x206a, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, 0xb528, ++ 0x2204, 0xa084, 0x00ff, 0x2019, 0xbb8e, 0x2334, 0xa636, 0x11d8, ++ 0x8318, 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x11a0, 0x2011, ++ 0xbb90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x080c, 0x90da, ++ 0x1150, 0x2011, 0xbb94, 0x6018, 0xa098, 0x0006, 0x20a9, 0x0004, ++ 0x080c, 0x90da, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6, ++ 0x2071, 0xb500, 0x080c, 0x4bc6, 0x080c, 0x2ab8, 0x00ee, 0x0005, ++ 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0108, 0x0011, 0x00ee, ++ 0x0005, 0x6850, 0xc0e5, 0x6852, 0x0005, 0x00e6, 0x00c6, 0x0076, ++ 0x0066, 0x0056, 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, ++ 0x2029, 0xb7e9, 0x252c, 0x2021, 0xb7ef, 0x2424, 0x2061, 0xbd00, ++ 0x2071, 0xb500, 0x7648, 0x7068, 0xa606, 0x0578, 0x671c, 0xa786, ++ 0x0001, 0x0118, 0xa786, 0x0008, 0x1500, 0x2500, 0xac06, 0x01e8, ++ 0x2400, 0xac06, 0x01d0, 0x080c, 0xb110, 0x01b8, 0x080c, 0xb120, ++ 0x11a0, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x194d, ++ 0x001e, 0x080c, 0x9e47, 0x1110, 0x080c, 0x2cc2, 0x080c, 0x9e58, ++ 0x1110, 0x080c, 0x8c19, 0x080c, 0x9e1d, 0xace0, 0x0018, 0x2001, ++ 0xb517, 0x2004, 0xac02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, ++ 0x004e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xb540, 0xd5a4, ++ 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, ++ 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, ++ 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, ++ 0xb54a, 0x04c9, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xb540, 0xd5a4, ++ 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, ++ 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, ++ 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, ++ 0xb54a, 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xb542, 0x0021, 0x00ee, ++ 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, ++ 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, 0xb540, 0x0c99, ++ 0x00ee, 0x0005, 0x00e6, 0x2071, 0xb544, 0x0c69, 0x00ee, 0x0005, ++ 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xb540, 0x7044, ++ 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0001, 0x0002, ++ 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, ++ 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x2440 + }; + #ifdef UNIQUE_FW_NAME +-unsigned short fw2200tp_length01 = 0xa463; ++unsigned short fw2200tp_length01 = 0xa46f; + #else +-unsigned short risc_code_length01 = 0xa463; ++unsigned short risc_code_length01 = 0xa46f; + #endif + +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2200ip_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2200ip_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2200ip_fw.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2200ip_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -24,8 +24,9 @@ + * expanded LUN addressing for FCTAPE * + * * + ************************************************************************/ ++ + /* +- * Firmware Version 2.02.04 (08:22 Feb 28, 2003) ++ * Firmware Version 2.02.06 (08:44 Jun 26, 2003) + */ + + #ifdef UNIQUE_FW_NAME +@@ -35,15 +36,15 @@ unsigned short risc_code_version = 2*102 + #endif + + #ifdef UNIQUE_FW_NAME +-unsigned char fw2200ip_version_str[] = {2,2,4}; ++unsigned char fw2200ip_version_str[] = {2,2,6}; + #else +-unsigned char firmware_version[] = {2,2,4}; ++unsigned char firmware_version[] = {2,2,6}; + #endif + + #ifdef UNIQUE_FW_NAME +-#define fw2200ip_VERSION_STRING "2.02.04" ++#define fw2200ip_VERSION_STRING "2.02.06" + #else +-#define FW_VERSION_STRING "2.02.04" ++#define FW_VERSION_STRING "2.02.06" + #endif + + #ifdef UNIQUE_FW_NAME +@@ -57,17 +58,17 @@ unsigned short fw2200ip_code01[] = { + #else + unsigned short risc_code01[] = { + #endif +- 0x0470, 0x0000, 0x0000, 0xb5b9, 0x0000, 0x0002, 0x0002, 0x0004, ++ 0x0470, 0x0000, 0x0000, 0xb5df, 0x0000, 0x0002, 0x0002, 0x0006, + 0x0037, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, + 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, + 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3232, 0x3030, 0x2046, 0x6972, + 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, +- 0x322e, 0x3032, 0x2e30, 0x3420, 0x2020, 0x2020, 0x2400, 0x20c1, ++ 0x322e, 0x3032, 0x2e30, 0x3620, 0x2020, 0x2020, 0x2400, 0x20c1, + 0x0005, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, 0xcbff, 0x2091, + 0x2000, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2b14, + 0x2051, 0xc600, 0x2a70, 0x2029, 0xfe00, 0x2031, 0xffff, 0x2039, +- 0xfde9, 0x2021, 0x0200, 0x0804, 0x146c, 0x20a1, 0xc5b9, 0xa00e, +- 0x20a9, 0x0847, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a, ++ 0xfde9, 0x2021, 0x0200, 0x0804, 0x146c, 0x20a1, 0xc5df, 0xa00e, ++ 0x20a9, 0x0821, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a, + 0x746e, 0x20a1, 0xce00, 0x7164, 0x810d, 0x810d, 0x810d, 0x810d, + 0xa18c, 0x000f, 0x2001, 0x000c, 0xa112, 0xa00e, 0x21a8, 0x41a4, + 0x3400, 0x8211, 0x1dd8, 0x7164, 0x3400, 0xa102, 0x0120, 0x0218, +@@ -76,65 +77,65 @@ unsigned short risc_code01[] = { + 0xa112, 0x20a1, 0x1000, 0xa00e, 0x21a8, 0x41a4, 0x8211, 0x1de0, + 0x2009, 0xc600, 0x3400, 0xa102, 0x0120, 0x0218, 0x20a8, 0xa00e, + 0x41a4, 0x080c, 0x1415, 0x080c, 0x163c, 0x080c, 0x17de, 0x080c, +- 0x2061, 0x080c, 0x4f3b, 0x080c, 0x957e, 0x080c, 0x15bf, 0x080c, +- 0x306e, 0x080c, 0x61dd, 0x080c, 0x5743, 0x080c, 0x7147, 0x080c, +- 0x6edf, 0x080c, 0x265b, 0x080c, 0x7860, 0x080c, 0x68c0, 0x080c, ++ 0x2061, 0x080c, 0x4f54, 0x080c, 0x959e, 0x080c, 0x15bf, 0x080c, ++ 0x306e, 0x080c, 0x61f6, 0x080c, 0x575c, 0x080c, 0x7160, 0x080c, ++ 0x6ef8, 0x080c, 0x265b, 0x080c, 0x7879, 0x080c, 0x68d9, 0x080c, + 0x2515, 0x080c, 0x2629, 0x2091, 0x3009, 0x7823, 0x0000, 0x1004, + 0x10c7, 0x7820, 0xa086, 0x0002, 0x1150, 0x7823, 0x4000, 0x0e04, + 0x10bf, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, + 0x7003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1168, 0x080c, +- 0x40b9, 0x080c, 0x3095, 0x080c, 0x622b, 0x080c, 0x5943, 0x080c, +- 0x7184, 0x080c, 0x6f0a, 0x0c70, 0x000b, 0x0c88, 0x10e8, 0x10e9, ++ 0x40d2, 0x080c, 0x3095, 0x080c, 0x6244, 0x080c, 0x595c, 0x080c, ++ 0x719d, 0x080c, 0x6f23, 0x0c70, 0x000b, 0x0c88, 0x10e8, 0x10e9, + 0x1214, 0x10e6, 0x12e1, 0x1412, 0x1413, 0x1414, 0x080c, 0x1519, + 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0xa086, 0x0001, +- 0x1904, 0x11f1, 0x080c, 0x158c, 0x080c, 0x5f22, 0x0150, 0x080c, +- 0x5f48, 0x15c0, 0x2079, 0x0100, 0x7828, 0xa085, 0x1800, 0x782a, +- 0x0488, 0x080c, 0x5e5a, 0x7000, 0xa086, 0x0001, 0x1904, 0x11f1, ++ 0x1904, 0x11f1, 0x080c, 0x158c, 0x080c, 0x5f3b, 0x0150, 0x080c, ++ 0x5f61, 0x15c0, 0x2079, 0x0100, 0x7828, 0xa085, 0x1800, 0x782a, ++ 0x0488, 0x080c, 0x5e73, 0x7000, 0xa086, 0x0001, 0x1904, 0x11f1, + 0x708c, 0xa086, 0x0028, 0x1904, 0x11f1, 0x2001, 0x0161, 0x2003, + 0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0xa295, 0x1e2f, +- 0x7a2a, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c, +- 0x7070, 0x2011, 0x5e37, 0x080c, 0x6fad, 0x2011, 0x4e18, 0x080c, +- 0x6fad, 0x2011, 0x8030, 0x2019, 0x0000, 0x708b, 0x0000, 0x080c, +- 0x1eae, 0x00e8, 0x080c, 0x47cb, 0x2079, 0x0100, 0x7844, 0xa005, +- 0x1904, 0x11f1, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x2011, 0x5e37, +- 0x080c, 0x6fad, 0x080c, 0x1eae, 0x2001, 0xc8d4, 0x2004, 0x780e, ++ 0x7a2a, 0x2011, 0x5e0e, 0x080c, 0x6fc6, 0x2011, 0x5e01, 0x080c, ++ 0x7089, 0x2011, 0x5e50, 0x080c, 0x6fc6, 0x2011, 0x4e31, 0x080c, ++ 0x6fc6, 0x2011, 0x8030, 0x2019, 0x0000, 0x708b, 0x0000, 0x080c, ++ 0x1eae, 0x00e8, 0x080c, 0x47e4, 0x2079, 0x0100, 0x7844, 0xa005, ++ 0x1904, 0x11f1, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0x2011, 0x5e50, ++ 0x080c, 0x6fc6, 0x080c, 0x1eae, 0x2001, 0xc8d4, 0x2004, 0x780e, + 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010, 0x73cc, 0x080c, +- 0x407d, 0x723c, 0xc284, 0x723e, 0x2001, 0xc60c, 0x200c, 0xc1ac, +- 0x2102, 0x080c, 0x8dca, 0x2011, 0x0004, 0x080c, 0xac90, 0x080c, +- 0x55e1, 0x080c, 0x5f22, 0x0158, 0x080c, 0x4f24, 0x0140, 0x708b, +- 0x0001, 0x70c7, 0x0000, 0x080c, 0x4968, 0x0804, 0x11f1, 0x080c, +- 0x570b, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x0060, 0x7073, 0x0000, +- 0x080c, 0xb038, 0x70d4, 0xd09c, 0x1128, 0x70a0, 0xa005, 0x0110, +- 0x080c, 0x4f02, 0x70df, 0x0000, 0x70db, 0x0000, 0x72d4, 0x080c, +- 0x5f22, 0x1178, 0x2011, 0x0000, 0x0016, 0x080c, 0x2a95, 0x2019, ++ 0x4096, 0x723c, 0xc284, 0x723e, 0x2001, 0xc60c, 0x200c, 0xc1ac, ++ 0x2102, 0x080c, 0x8de3, 0x2011, 0x0004, 0x080c, 0xacb0, 0x080c, ++ 0x55fa, 0x080c, 0x5f3b, 0x0158, 0x080c, 0x4f3d, 0x0140, 0x708b, ++ 0x0001, 0x70c7, 0x0000, 0x080c, 0x4981, 0x0804, 0x11f1, 0x080c, ++ 0x5724, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x0060, 0x7073, 0x0000, ++ 0x080c, 0xb058, 0x70d4, 0xd09c, 0x1128, 0x70a0, 0xa005, 0x0110, ++ 0x080c, 0x4f1b, 0x70df, 0x0000, 0x70db, 0x0000, 0x72d4, 0x080c, ++ 0x5f3b, 0x1178, 0x2011, 0x0000, 0x0016, 0x080c, 0x2a95, 0x2019, + 0xc8d6, 0x211a, 0x001e, 0x7053, 0xffff, 0x7057, 0x00ef, 0x7077, + 0x0000, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72d6, +- 0x080c, 0x5f22, 0x0118, 0xa296, 0x0004, 0x0548, 0x2011, 0x0001, +- 0x080c, 0xac90, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, 0x0002, ++ 0x080c, 0x5f3b, 0x0118, 0xa296, 0x0004, 0x0548, 0x2011, 0x0001, ++ 0x080c, 0xacb0, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, 0x0002, + 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a, +- 0x00fe, 0x080c, 0x2c62, 0x2011, 0x0005, 0x080c, 0x8f0e, 0x080c, +- 0x7e94, 0x080c, 0x5f22, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, ++ 0x00fe, 0x080c, 0x2c62, 0x2011, 0x0005, 0x080c, 0x8f27, 0x080c, ++ 0x7ead, 0x080c, 0x5f3b, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, + 0x080c, 0x2a95, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, 0x709b, + 0x0000, 0x709f, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100, + 0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a, 0x00fe, 0x2011, +- 0x0005, 0x080c, 0x8f0e, 0x080c, 0x7e94, 0x080c, 0x5f22, 0x0148, ++ 0x0005, 0x080c, 0x8f27, 0x080c, 0x7ead, 0x080c, 0x5f3b, 0x0148, + 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x2a95, 0x61e2, 0x001e, +- 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x1118, +- 0x20a9, 0x0100, 0x0010, 0x20a9, 0x0082, 0x080c, 0x5f22, 0x1118, ++ 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f3b, 0x1118, ++ 0x20a9, 0x0100, 0x0010, 0x20a9, 0x0082, 0x080c, 0x5f3b, 0x1118, + 0x2009, 0x0000, 0x0010, 0x2009, 0x007e, 0x080c, 0x2f41, 0x8108, + 0x1f04, 0x1205, 0x00ce, 0x7073, 0x0000, 0x7074, 0xa084, 0x00ff, + 0x7076, 0x70a3, 0x0000, 0x0005, 0x0126, 0x2091, 0x8000, 0x7000, + 0xa086, 0x0002, 0x1904, 0x12df, 0x709c, 0xa086, 0xffff, 0x0130, +- 0x080c, 0x2c62, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70d4, 0xd0ac, ++ 0x080c, 0x2c62, 0x080c, 0x7ead, 0x0804, 0x12df, 0x70d4, 0xd0ac, + 0x1110, 0xd09c, 0x0540, 0xd084, 0x0530, 0x0006, 0x0016, 0x2001, + 0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e, 0x000e, 0xd08c, + 0x01d0, 0x70d8, 0xa086, 0xffff, 0x0190, 0x080c, 0x2dc1, 0x080c, +- 0x7e94, 0x70d4, 0xd094, 0x1904, 0x12df, 0x2011, 0x0001, 0x2019, +- 0x0000, 0x080c, 0x2df9, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70dc, ++ 0x7ead, 0x70d4, 0xd094, 0x1904, 0x12df, 0x2011, 0x0001, 0x2019, ++ 0x0000, 0x080c, 0x2df9, 0x080c, 0x7ead, 0x0804, 0x12df, 0x70dc, + 0xa005, 0x1904, 0x12df, 0x7098, 0xa005, 0x1904, 0x12df, 0x70d4, +- 0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x12df, 0x080c, 0x570b, 0x1904, ++ 0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x12df, 0x080c, 0x5724, 0x1904, + 0x12df, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x01c8, 0x0156, 0x00c6, +- 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1118, ++ 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x5356, 0x1118, + 0x6000, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x126c, 0x00ce, + 0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x12df, 0x0006, + 0x0016, 0x2001, 0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e, +@@ -144,55 +145,55 @@ unsigned short risc_code01[] = { + 0x0002, 0x40a1, 0x20a1, 0xc919, 0x2009, 0x0000, 0x080c, 0x14ff, + 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x40a1, 0x7030, 0xc08c, + 0x7032, 0x7003, 0x0003, 0x709f, 0xffff, 0x080c, 0x1585, 0xa006, +- 0x080c, 0x296d, 0x080c, 0x40ef, 0x00f6, 0x2079, 0x0100, 0x080c, +- 0x5f48, 0x0150, 0x080c, 0x5f22, 0x7828, 0x0118, 0xa084, 0xe1ff, ++ 0x080c, 0x296d, 0x080c, 0x4108, 0x00f6, 0x2079, 0x0100, 0x080c, ++ 0x5f61, 0x0150, 0x080c, 0x5f3b, 0x7828, 0x0118, 0xa084, 0xe1ff, + 0x0010, 0xa084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0xc928, 0x2004, +- 0xa086, 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8f0e, 0x2011, +- 0x0000, 0x080c, 0x8f18, 0x080c, 0x7e94, 0x080c, 0x7f6e, 0x012e, ++ 0xa086, 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8f27, 0x2011, ++ 0x0000, 0x080c, 0x8f31, 0x080c, 0x7ead, 0x080c, 0x7f87, 0x012e, + 0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, + 0x0100, 0x2009, 0xc634, 0x2104, 0xa005, 0x1110, 0x080c, 0x2ac1, +- 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x7940, 0xa18c, 0x0010, 0x7942, ++ 0x2009, 0x00f7, 0x080c, 0x4f04, 0x7940, 0xa18c, 0x0010, 0x7942, + 0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, 0xd19c, 0x0110, 0x7827, + 0x0008, 0x0006, 0x0036, 0x0156, 0x7954, 0xd1ac, 0x1904, 0x134f, +- 0x080c, 0x5f34, 0x0158, 0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5, +- 0x2003, 0x0000, 0x0070, 0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5, +- 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a, +- 0x0058, 0x080c, 0x5f22, 0x0140, 0x2009, 0x00f8, 0x080c, 0x4eeb, ++ 0x080c, 0x5f4d, 0x0158, 0x080c, 0x5f61, 0x1128, 0x2001, 0xc8e5, ++ 0x2003, 0x0000, 0x0070, 0x080c, 0x5f43, 0x0dc0, 0x2001, 0xc8e5, ++ 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e73, ++ 0x0058, 0x080c, 0x5f3b, 0x0140, 0x2009, 0x00f8, 0x080c, 0x4f04, + 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, +- 0x1138, 0x080c, 0x5f22, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x13f9, +- 0x1f04, 0x132e, 0x0070, 0x7824, 0x080c, 0x5f3e, 0x0118, 0xd0ac, ++ 0x1138, 0x080c, 0x5f3b, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x13f9, ++ 0x1f04, 0x132e, 0x0070, 0x7824, 0x080c, 0x5f57, 0x0118, 0xd0ac, + 0x1904, 0x13f9, 0xa084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, + 0x13f9, 0x2001, 0x0001, 0x080c, 0x296d, 0x0804, 0x1408, 0x7850, + 0xa084, 0x0180, 0x7852, 0x782f, 0x0020, 0x20a9, 0x0046, 0x1d04, +- 0x1357, 0x080c, 0x7058, 0x1f04, 0x1357, 0x7850, 0xa084, 0x0180, +- 0xa085, 0x0400, 0x7852, 0x782f, 0x0000, 0x080c, 0x5f34, 0x0158, +- 0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x0070, +- 0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001, +- 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x0020, 0x2009, 0x00f8, +- 0x080c, 0x4eeb, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x1384, 0x7850, +- 0xa084, 0x0180, 0xa085, 0x1400, 0x7852, 0x080c, 0x5f22, 0x0120, ++ 0x1357, 0x080c, 0x7071, 0x1f04, 0x1357, 0x7850, 0xa084, 0x0180, ++ 0xa085, 0x0400, 0x7852, 0x782f, 0x0000, 0x080c, 0x5f4d, 0x0158, ++ 0x080c, 0x5f61, 0x1128, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x0070, ++ 0x080c, 0x5f43, 0x0dc0, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001, ++ 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e73, 0x0020, 0x2009, 0x00f8, ++ 0x080c, 0x4f04, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x1384, 0x7850, ++ 0xa084, 0x0180, 0xa085, 0x1400, 0x7852, 0x080c, 0x5f3b, 0x0120, + 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60, +- 0x7820, 0xd09c, 0x1558, 0x080c, 0x5f22, 0x05d8, 0x7824, 0xd0ac, +- 0x1904, 0x13f9, 0x080c, 0x5f48, 0x1508, 0x0046, 0x2021, 0x0190, ++ 0x7820, 0xd09c, 0x1558, 0x080c, 0x5f3b, 0x05d8, 0x7824, 0xd0ac, ++ 0x1904, 0x13f9, 0x080c, 0x5f61, 0x1508, 0x0046, 0x2021, 0x0190, + 0x8421, 0x1df0, 0x004e, 0x8421, 0x11c8, 0x7827, 0x0048, 0x20a9, +- 0x01f4, 0x1d04, 0x13b1, 0x080c, 0x7058, 0x1f04, 0x13b1, 0x7824, ++ 0x01f4, 0x1d04, 0x13b1, 0x080c, 0x7071, 0x1f04, 0x13b1, 0x7824, + 0xa084, 0x0068, 0x15c8, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001, + 0xc8e6, 0x2003, 0x0001, 0x7003, 0x0001, 0x0498, 0x1d04, 0x13ca, +- 0x080c, 0x7058, 0x8319, 0x1960, 0x2009, 0xc634, 0x2104, 0x8000, ++ 0x080c, 0x7071, 0x8319, 0x1960, 0x2009, 0xc634, 0x2104, 0x8000, + 0x200a, 0xa084, 0xfff0, 0x0120, 0x200b, 0x0000, 0x080c, 0x2ac1, +- 0x00d8, 0x080c, 0x5f34, 0x1140, 0xa4a2, 0x0064, 0x1128, 0x080c, +- 0x5ef9, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0xe000, 0xe000, +- 0x7824, 0x080c, 0x5f3e, 0x0110, 0xd0ac, 0x1158, 0xa084, 0x1800, ++ 0x00d8, 0x080c, 0x5f4d, 0x1140, 0xa4a2, 0x0064, 0x1128, 0x080c, ++ 0x5f12, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0xe000, 0xe000, ++ 0x7824, 0x080c, 0x5f57, 0x0110, 0xd0ac, 0x1158, 0xa084, 0x1800, + 0x09a8, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x296d, + 0x0048, 0x2001, 0xc634, 0x2003, 0x0000, 0x7827, 0x0048, 0x7828, + 0xc09d, 0x782a, 0x7850, 0xa084, 0x0180, 0xa085, 0x0400, 0x7852, + 0x015e, 0x003e, 0x000e, 0x080c, 0x155c, 0x012e, 0x00fe, 0x004e, + 0x001e, 0x0005, 0x0005, 0x0005, 0x0005, 0x2a70, 0x2061, 0xc908, +- 0x2063, 0x0002, 0x6007, 0x0002, 0x600b, 0x0004, 0x600f, 0x0037, ++ 0x2063, 0x0002, 0x6007, 0x0002, 0x600b, 0x0006, 0x600f, 0x0037, + 0x2001, 0xc8e5, 0x2003, 0x0000, 0x708b, 0x0000, 0x2009, 0x0100, + 0x2104, 0xa082, 0x0002, 0x0218, 0x7053, 0xffff, 0x0010, 0x7053, + 0x0000, 0x705b, 0xffff, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c, +- 0xb038, 0x2061, 0xc8d5, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, ++ 0xb058, 0x2061, 0xc8d5, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, + 0x8800, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x001f, 0x601b, + 0x0000, 0x601f, 0x07d0, 0x2061, 0xc8dd, 0x6003, 0x8000, 0x6007, + 0x0000, 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, +@@ -217,7 +218,7 @@ unsigned short risc_code01[] = { + 0x7fff, 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x1110, 0xc195, + 0x0008, 0xc19d, 0x2011, 0x0001, 0x2019, 0x14f7, 0x0010, 0x0804, + 0x146d, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0837, 0x2011, +- 0x0000, 0x080c, 0x533d, 0x1178, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, ++ 0x0000, 0x080c, 0x5356, 0x1178, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, + 0x0006, 0x0128, 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x1120, 0xa186, + 0x0080, 0x0108, 0x8210, 0x8108, 0xa186, 0x0100, 0x1d50, 0x2208, + 0x0005, 0x2091, 0x8000, 0x0e04, 0x151b, 0x0006, 0x0016, 0x2079, +@@ -305,15 +306,15 @@ unsigned short risc_code01[] = { + 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5, + 0x2001, 0xc71a, 0x2004, 0xd0bc, 0x0148, 0x2001, 0xc723, 0x2004, + 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x015e, 0x014e, +- 0x013e, 0x7007, 0x0000, 0x080c, 0x62c2, 0x080c, 0x1676, 0x0005, +- 0x2011, 0x8003, 0x080c, 0x407d, 0x0cf8, 0xa18c, 0x0700, 0x1148, ++ 0x013e, 0x7007, 0x0000, 0x080c, 0x62db, 0x080c, 0x1676, 0x0005, ++ 0x2011, 0x8003, 0x080c, 0x4096, 0x0cf8, 0xa18c, 0x0700, 0x1148, + 0x2001, 0xc748, 0x2003, 0x0100, 0x7007, 0x0000, 0x080c, 0x1676, +- 0x0005, 0x2011, 0x8004, 0x080c, 0x407d, 0x0cf8, 0x0126, 0x2091, ++ 0x0005, 0x2011, 0x8004, 0x080c, 0x4096, 0x0cf8, 0x0126, 0x2091, + 0x2200, 0x2079, 0x0030, 0x2071, 0xc96a, 0x7003, 0x0000, 0x700f, + 0xc977, 0x7013, 0xc977, 0x780f, 0x00f6, 0x7803, 0x0004, 0x012e, + 0x0005, 0x6934, 0xa184, 0x0007, 0x0002, 0x17fd, 0x183e, 0x17fd, + 0x17fd, 0x1801, 0x1826, 0x180d, 0x1804, 0xa085, 0x0001, 0x0804, +- 0x1858, 0x080c, 0x7684, 0x05d0, 0x684c, 0xd0bc, 0x0db0, 0x6860, ++ 0x1858, 0x080c, 0x769d, 0x05d0, 0x684c, 0xd0bc, 0x0db0, 0x6860, + 0x682e, 0x685c, 0x682a, 0x6858, 0x04c8, 0xa18c, 0x00ff, 0xa186, + 0x001e, 0x1d58, 0x684c, 0xd0bc, 0x0d40, 0x6860, 0x682e, 0x685c, + 0x682a, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, +@@ -346,7 +347,7 @@ unsigned short risc_code01[] = { + 0x0207, 0x2004, 0xd09c, 0x1d48, 0x7804, 0xa084, 0x6000, 0x0120, + 0xa086, 0x6000, 0x0108, 0x0c08, 0x7818, 0x6812, 0x781c, 0x6816, + 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6100, 0xa18e, +- 0x0004, 0x1904, 0x194f, 0x2009, 0x0048, 0x080c, 0x960c, 0x04f8, ++ 0x0004, 0x1904, 0x194f, 0x2009, 0x0048, 0x080c, 0x962c, 0x04f8, + 0x6808, 0xa005, 0x05a0, 0x7000, 0xa005, 0x0588, 0x700c, 0x7110, + 0xa106, 0x1118, 0x7004, 0xa406, 0x1550, 0x2001, 0x0005, 0x2004, + 0xd08c, 0x0160, 0x0046, 0x080c, 0x1b83, 0x004e, 0x2460, 0x6010, +@@ -354,7 +355,7 @@ unsigned short risc_code01[] = { + 0x2004, 0xd09c, 0x1d50, 0x2001, 0x0005, 0x2004, 0xd08c, 0x1d50, + 0x7804, 0xa084, 0x6000, 0x0118, 0xa086, 0x6000, 0x19f0, 0x7818, + 0x6812, 0x781c, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x6100, +- 0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x960c, 0x00ce, ++ 0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x962c, 0x00ce, + 0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, 0x0036, 0x0046, + 0x0056, 0x2071, 0xc96a, 0x7000, 0xa086, 0x0000, 0x0904, 0x19b9, + 0x7004, 0xac06, 0x1904, 0x19ab, 0x2079, 0x0030, 0x7000, 0xa086, +@@ -363,8 +364,8 @@ unsigned short risc_code01[] = { + 0xa106, 0x1d88, 0x8211, 0x1db0, 0x7804, 0xd0fc, 0x1540, 0x080c, + 0x1f2d, 0x0026, 0x0056, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x1de8, + 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000, +- 0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, 0x080c, 0x5f22, +- 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0058, ++ 0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, 0x080c, 0x5f3b, ++ 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fbd, 0x006e, 0x0058, + 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0020, 0x080c, + 0x1b83, 0x0804, 0x195b, 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, + 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x19b0, +@@ -372,19 +373,19 @@ unsigned short risc_code01[] = { + 0x700c, 0x7110, 0xa106, 0x0904, 0x1a5c, 0x2104, 0x7006, 0x2060, + 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0xc992, 0x0210, + 0x2009, 0xc977, 0x7112, 0x8cff, 0x05e8, 0x6010, 0x2068, 0x2d58, +- 0x080c, 0x7824, 0x6828, 0xa406, 0x15e0, 0x682c, 0xa306, 0x15c8, ++ 0x080c, 0x783d, 0x6828, 0xa406, 0x15e0, 0x682c, 0xa306, 0x15c8, + 0x7004, 0x2060, 0x6020, 0xc0d4, 0x6022, 0x684c, 0xd0f4, 0x0128, + 0x6817, 0xffff, 0x6813, 0xffff, 0x0428, 0x6850, 0xd0f4, 0x1130, + 0x7803, 0x0004, 0x6810, 0x781a, 0x6814, 0x781e, 0x6824, 0x2050, + 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x080c, +- 0x7684, 0x1128, 0x2009, 0x0011, 0x080c, 0x1a5f, 0x0048, 0x2009, ++ 0x769d, 0x1128, 0x2009, 0x0011, 0x080c, 0x1a5f, 0x0048, 0x2009, + 0x0011, 0x080c, 0x1a5f, 0x0120, 0x2009, 0x0001, 0x080c, 0x1a5f, + 0x2d58, 0x0005, 0x7803, 0x0004, 0x080c, 0x1ea2, 0x0904, 0x19c0, +- 0x0cc0, 0x080c, 0x7684, 0x1128, 0x080c, 0x1953, 0x080c, 0x761a, ++ 0x0cc0, 0x080c, 0x769d, 0x1128, 0x080c, 0x1953, 0x080c, 0x7633, + 0x0c88, 0x6020, 0xd0f4, 0x11e0, 0xd0d4, 0x01b8, 0x6038, 0xa402, + 0x6034, 0xa303, 0x0108, 0x1288, 0x643a, 0x6336, 0x6c2a, 0x6b2e, + 0x0046, 0x0036, 0x2400, 0x6c7c, 0xa402, 0x6812, 0x2300, 0x6b80, +- 0xa303, 0x6816, 0x003e, 0x004e, 0x0018, 0x080c, 0xafca, 0x0990, ++ 0xa303, 0x6816, 0x003e, 0x004e, 0x0018, 0x080c, 0xafea, 0x0990, + 0x601c, 0xa08e, 0x0008, 0x0904, 0x19e0, 0xa08e, 0x000a, 0x0904, + 0x19e0, 0x2001, 0xc674, 0x2004, 0xd0b4, 0x1140, 0x6018, 0x2004, + 0xd0bc, 0x1120, 0x6817, 0x7fff, 0x6813, 0xffff, 0x080c, 0x241b, +@@ -405,11 +406,11 @@ unsigned short risc_code01[] = { + 0xa00e, 0x0804, 0x1b5d, 0x00de, 0x080c, 0x1519, 0x2d10, 0x00de, + 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff, 0xa096, 0x0024, 0x0530, + 0xa096, 0x002c, 0x1d80, 0x6b10, 0xa3a6, 0xffff, 0x1130, 0x2d10, +- 0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268, 0x2d10, 0x00de, 0x00d6, ++ 0x00de, 0x00d6, 0x080c, 0x7313, 0x2268, 0x2d10, 0x00de, 0x00d6, + 0x7314, 0x685c, 0xa086, 0x0001, 0x1120, 0x6868, 0xa005, 0x0108, + 0x2018, 0x2268, 0x2011, 0x0000, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, + 0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0x0408, 0x6b08, 0xa3a6, +- 0xffff, 0x1130, 0x2d10, 0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268, ++ 0xffff, 0x1130, 0x2d10, 0x00de, 0x00d6, 0x080c, 0x7313, 0x2268, + 0x2d10, 0x00de, 0x00d6, 0x7314, 0x685c, 0xa086, 0x0001, 0x1120, + 0x6868, 0xa005, 0x0108, 0x2018, 0x2268, 0x2011, 0x0000, 0x6d00, + 0x6c04, 0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0xc9fd, 0x7b22, +@@ -422,38 +423,38 @@ unsigned short risc_code01[] = { + 0x6804, 0xa406, 0x1148, 0x6808, 0xa706, 0x1130, 0x680c, 0xa606, + 0x0018, 0xc9fc, 0x080c, 0x2389, 0x2168, 0x0005, 0x080c, 0x1519, + 0x080c, 0x2014, 0x7004, 0x2060, 0x00d6, 0x6010, 0x2068, 0x7003, +- 0x0000, 0x080c, 0x1ec3, 0x080c, 0xac8a, 0x0170, 0x6808, 0x8001, ++ 0x0000, 0x080c, 0x1ec3, 0x080c, 0xacaa, 0x0170, 0x6808, 0x8001, + 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f, +- 0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, 0x080c, 0xa95a, 0x0804, ++ 0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, 0x080c, 0xa97a, 0x0804, + 0x1dec, 0x080c, 0x1519, 0x0126, 0x2091, 0x2200, 0x0006, 0x0016, + 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, + 0x1978, 0xa184, 0x0003, 0xa086, 0x0003, 0x0d58, 0x7000, 0x0002, + 0x1ba0, 0x1ba6, 0x1cf5, 0x1dc1, 0x1ddb, 0x1ba0, 0x1ba0, 0x1ba0, + 0x7804, 0xd09c, 0x1904, 0x1dec, 0x080c, 0x1519, 0x8001, 0x7002, +- 0xd1bc, 0x15c0, 0x080c, 0x7684, 0x1508, 0xd1dc, 0x1598, 0x6864, ++ 0xd1bc, 0x15c0, 0x080c, 0x769d, 0x1508, 0xd1dc, 0x1598, 0x6864, + 0x8000, 0x6866, 0xd19c, 0x0140, 0x7004, 0x2060, 0x2009, 0x0102, +- 0x080c, 0x960c, 0x0804, 0x1cbc, 0x8aff, 0x0130, 0x2009, 0x0001, ++ 0x080c, 0x962c, 0x0804, 0x1cbc, 0x8aff, 0x0130, 0x2009, 0x0001, + 0x080c, 0x1a5f, 0x0804, 0x1dec, 0x7004, 0x2060, 0x080c, 0x24e0, +- 0x080c, 0x761a, 0x7007, 0x0000, 0x0804, 0x1c45, 0xd19c, 0x1904, ++ 0x080c, 0x7633, 0x7007, 0x0000, 0x0804, 0x1c45, 0xd19c, 0x1904, + 0x1c79, 0xd1dc, 0x1178, 0x8aff, 0x0904, 0x1c79, 0x2009, 0x0001, + 0x080c, 0x1a5f, 0x0904, 0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f, + 0x0804, 0x1dec, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904, +- 0x1c4b, 0x080c, 0x7684, 0x1130, 0xd19c, 0x0120, 0x6864, 0x8000, ++ 0x1c4b, 0x080c, 0x769d, 0x1130, 0xd19c, 0x0120, 0x6864, 0x8000, + 0x6866, 0x0810, 0x0026, 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34, + 0x7818, 0x6812, 0x781c, 0x6816, 0x2001, 0x0201, 0x2004, 0xa005, + 0x0140, 0x7808, 0xd0ec, 0x1128, 0x7803, 0x0009, 0x7003, 0x0004, +- 0x0028, 0x080c, 0x7684, 0x0110, 0x080c, 0x1df0, 0x6b28, 0x6a2c, ++ 0x0028, 0x080c, 0x769d, 0x0110, 0x080c, 0x1df0, 0x6b28, 0x6a2c, + 0x2400, 0x686e, 0xa31a, 0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e, + 0x00c6, 0x7004, 0x2060, 0x6020, 0xd0f4, 0x1110, 0x633a, 0x6236, + 0x00ce, 0x003e, 0x002e, 0x6e1e, 0x6f22, 0x2500, 0xa405, 0x0128, + 0x080c, 0x239f, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, 0x2c00, + 0x681a, 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x1148, 0x684c, +- 0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x960c, ++ 0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x962c, + 0x7000, 0xa086, 0x0004, 0x0904, 0x1dec, 0x7003, 0x0000, 0x080c, + 0x19c0, 0x0804, 0x1dec, 0x0056, 0x7d0c, 0xd5bc, 0x1110, 0x080c, +- 0xc551, 0x005e, 0x080c, 0x1ec3, 0x7004, 0x2060, 0x601c, 0xa086, +- 0x0009, 0x1140, 0x2009, 0x0106, 0x080c, 0x960c, 0x7007, 0x0000, +- 0x0804, 0x1dec, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118, ++ 0xc577, 0x005e, 0x080c, 0x1ec3, 0x7004, 0x2060, 0x601c, 0xa086, ++ 0x0009, 0x1140, 0x2009, 0x0106, 0x080c, 0x962c, 0x7007, 0x0000, ++ 0x0804, 0x1dec, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56dc, 0x0118, + 0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff, + 0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804, + 0x1dec, 0x7004, 0x00c6, 0x2060, 0x6020, 0x00ce, 0xd0f4, 0x0120, +@@ -464,14 +465,14 @@ unsigned short risc_code01[] = { + 0x680a, 0x01a0, 0x7004, 0x2060, 0x601c, 0xa086, 0x000a, 0x11a0, + 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, 0x2104, 0xac06, 0x1108, + 0x200a, 0xa188, 0x0003, 0x1f04, 0x1cad, 0x015e, 0x7004, 0x2060, +- 0x2009, 0x0048, 0x080c, 0x960c, 0x080c, 0x19c0, 0x0804, 0x1dec, ++ 0x2009, 0x0048, 0x080c, 0x962c, 0x080c, 0x19c0, 0x0804, 0x1dec, + 0x7818, 0x6812, 0x781c, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, + 0xa192, 0x0841, 0x1a04, 0x1b60, 0xa188, 0x0007, 0x8114, 0x8214, + 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, + 0x810b, 0x080c, 0x1f58, 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, + 0x0001, 0x7804, 0xd0fc, 0x0de8, 0x7803, 0x0002, 0x7803, 0x0004, + 0x780f, 0x00f6, 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, +- 0x080c, 0x960c, 0x080c, 0x1fae, 0x0838, 0x8001, 0x7002, 0xd194, ++ 0x080c, 0x962c, 0x080c, 0x1fae, 0x0838, 0x8001, 0x7002, 0xd194, + 0x01b0, 0x7804, 0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x0138, 0x7804, + 0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x1904, 0x1d95, 0x8aff, 0x0904, + 0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f, 0x0804, 0x1dec, 0xa184, +@@ -487,8 +488,8 @@ unsigned short risc_code01[] = { + 0xa31a, 0x680c, 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213, + 0x00de, 0xd194, 0x0904, 0x1c10, 0x2a00, 0x6826, 0x2c00, 0x681a, + 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x6b2a, 0x6a2e, 0x003e, +- 0x002e, 0x0804, 0x1cbc, 0x0056, 0x7d0c, 0x080c, 0xc551, 0x005e, +- 0x080c, 0x1ec3, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118, ++ 0x002e, 0x0804, 0x1cbc, 0x0056, 0x7d0c, 0x080c, 0xc577, 0x005e, ++ 0x080c, 0x1ec3, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56dc, 0x0118, + 0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff, + 0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804, + 0x1dec, 0x7804, 0xd09c, 0x0904, 0x1b8b, 0x7c20, 0x7824, 0xa405, +@@ -499,14 +500,14 @@ unsigned short risc_code01[] = { + 0x1120, 0x783c, 0xa606, 0x0904, 0x1b8b, 0x7803, 0x0002, 0x0804, + 0x1d22, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0180, + 0x6808, 0x8001, 0x680a, 0x1160, 0x7004, 0x2060, 0x2009, 0x0048, +- 0x601c, 0xa086, 0x0009, 0x1110, 0x080c, 0x1519, 0x080c, 0x960c, ++ 0x601c, 0xa086, 0x0009, 0x1110, 0x080c, 0x1519, 0x080c, 0x962c, + 0x080c, 0x19c0, 0x0088, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, + 0x2060, 0x6010, 0xa005, 0x0da0, 0x2068, 0x6808, 0x8000, 0x680a, + 0x6c28, 0x6b2c, 0x080c, 0x19d3, 0x001e, 0x000e, 0x012e, 0x0005, + 0x700c, 0x7110, 0xa106, 0x0904, 0x1e96, 0x7004, 0x0016, 0x210c, + 0xa106, 0x001e, 0x0904, 0x1e96, 0x00d6, 0x00c6, 0x216c, 0x2d00, + 0xa005, 0x0904, 0x1e94, 0x681c, 0xa086, 0x0008, 0x0904, 0x1e94, +- 0x6820, 0xd0d4, 0x1904, 0x1e94, 0x6810, 0x2068, 0x080c, 0x7684, ++ 0x6820, 0xd0d4, 0x1904, 0x1e94, 0x6810, 0x2068, 0x080c, 0x769d, + 0x0904, 0x1e94, 0x6850, 0xd0fc, 0x05a8, 0x8108, 0x2104, 0x6b2c, + 0xa306, 0x1904, 0x1e94, 0x8108, 0x2104, 0x6a28, 0xa206, 0x1904, + 0x1e94, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x701a, +@@ -529,10 +530,10 @@ unsigned short risc_code01[] = { + 0xa085, 0x0001, 0x0010, 0x080c, 0x1fae, 0x0005, 0x0126, 0x2091, + 0x2200, 0x7000, 0xa086, 0x0003, 0x1160, 0x700c, 0x7110, 0xa106, + 0x0140, 0x080c, 0x2b06, 0x20e1, 0x9028, 0x700f, 0xc977, 0x7013, +- 0xc977, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x11b8, 0x2001, ++ 0xc977, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f3b, 0x11b8, 0x2001, + 0x0160, 0x2003, 0x0000, 0x2001, 0x0138, 0x2003, 0x0000, 0x2011, + 0x00c8, 0xe000, 0xe000, 0x8211, 0x1de0, 0x0481, 0x0066, 0x2031, +- 0x0000, 0x080c, 0x5fa4, 0x006e, 0x00ce, 0x0005, 0x080c, 0x1f2d, ++ 0x0000, 0x080c, 0x5fbd, 0x006e, 0x00ce, 0x0005, 0x080c, 0x1f2d, + 0x080c, 0x2b06, 0x20e1, 0x9028, 0x700c, 0x7110, 0xa106, 0x0190, + 0x2104, 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, + 0x600a, 0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, +@@ -544,7 +545,7 @@ unsigned short risc_code01[] = { + 0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, 0x7112, + 0x0c50, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x0138, 0x2014, + 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, 0x080c, +- 0x5f22, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1f3c, 0x2091, 0x6000, ++ 0x5f3b, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1f3c, 0x2091, 0x6000, + 0x8421, 0x1dd0, 0x0005, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, + 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x1138, + 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, 0x0005, +@@ -580,7 +581,7 @@ unsigned short risc_code01[] = { + 0xe000, 0x2079, 0x0030, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x2079, + 0x0010, 0x000e, 0x783e, 0x000e, 0x783a, 0x000e, 0x7836, 0x000e, + 0x7832, 0x000e, 0x7822, 0x000e, 0x7802, 0x00fe, 0x00ee, 0x0030, +- 0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x080c, 0x7f6e, ++ 0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x080c, 0x7f87, + 0x0005, 0x00e6, 0x2071, 0xc992, 0x7003, 0x0000, 0x00ee, 0x0005, + 0x00d6, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x1904, 0x20ed, + 0x6934, 0xa184, 0x0007, 0x0002, 0x207c, 0x20d8, 0x207c, 0x207e, +@@ -632,13 +633,13 @@ unsigned short risc_code01[] = { + 0x0008, 0xa006, 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e, + 0x0005, 0x080c, 0x1519, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010, + 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, +- 0x00d6, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0118, 0x6850, 0xc0bd, ++ 0x00d6, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0118, 0x6850, 0xc0bd, + 0x6852, 0x601c, 0xa086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8, + 0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0xa206, 0x1dc0, 0x60c4, + 0x686a, 0x60c8, 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c, +- 0xa95a, 0x00ce, 0x2001, 0xc936, 0x2004, 0xac06, 0x1150, 0x20e1, +- 0x9040, 0x080c, 0x90ef, 0x2011, 0x0000, 0x080c, 0x8f18, 0x080c, +- 0x7f6e, 0x002e, 0x0804, 0x22e6, 0x0126, 0x2091, 0x2400, 0x0006, ++ 0xa97a, 0x00ce, 0x2001, 0xc936, 0x2004, 0xac06, 0x1150, 0x20e1, ++ 0x9040, 0x080c, 0x910f, 0x2011, 0x0000, 0x080c, 0x8f31, 0x080c, ++ 0x7f87, 0x002e, 0x0804, 0x22e6, 0x0126, 0x2091, 0x2400, 0x0006, + 0x0016, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x2079, 0x0020, 0x2071, + 0xc992, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, + 0x0700, 0x1904, 0x21eb, 0x7000, 0x0002, 0x22e6, 0x2249, 0x22b9, +@@ -665,7 +666,7 @@ unsigned short risc_code01[] = { + 0x00ee, 0x00fe, 0x001e, 0x000e, 0x012e, 0x0005, 0x00f6, 0x00e6, + 0x2071, 0xc992, 0x7000, 0xa086, 0x0000, 0x05d0, 0x2079, 0x0020, + 0x0016, 0x2009, 0x0207, 0x210c, 0xd194, 0x0198, 0x2009, 0x020c, +- 0x210c, 0xa184, 0x0003, 0x0168, 0x080c, 0xc59a, 0x2001, 0x0133, ++ 0x210c, 0xa184, 0x0003, 0x0168, 0x080c, 0xc5c0, 0x2001, 0x0133, + 0x2004, 0xa005, 0x090c, 0x1519, 0x20e1, 0x9040, 0x2001, 0x020c, + 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0xa106, + 0x1110, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x09d8, 0x080c, 0x222c, +@@ -673,11 +674,11 @@ unsigned short risc_code01[] = { + 0xd0ac, 0x1de8, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, + 0x00ee, 0x00fe, 0x0005, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, + 0x2071, 0xc992, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0540, +- 0x7004, 0x2060, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0158, 0x6850, ++ 0x7004, 0x2060, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0158, 0x6850, + 0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x1120, 0x6808, 0x7a18, + 0xa206, 0x01e0, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, +- 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0xa95a, +- 0x20e1, 0x9040, 0x080c, 0x90ef, 0x2011, 0x0000, 0x080c, 0x8f18, ++ 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0xa97a, ++ 0x20e1, 0x9040, 0x080c, 0x910f, 0x2011, 0x0000, 0x080c, 0x8f31, + 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x0005, 0x6810, 0x6a14, + 0xa205, 0x1d00, 0x684c, 0xc0dc, 0x684e, 0x2c10, 0x080c, 0x2068, + 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, +@@ -698,8 +699,8 @@ unsigned short risc_code01[] = { + 0x53a3, 0x7803, 0x0020, 0x0126, 0x2091, 0x8000, 0x7803, 0x0041, + 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x700b, 0xc760, 0x012e, + 0x015e, 0x014e, 0x013e, 0x0005, 0x2099, 0x0014, 0x7803, 0x0040, +- 0x2001, 0xc765, 0x2004, 0x2010, 0x080c, 0x72ad, 0x2009, 0xc699, +- 0x2104, 0xa084, 0xfffc, 0x200a, 0x080c, 0x721f, 0x7007, 0x0000, ++ 0x2001, 0xc765, 0x2004, 0x2010, 0x080c, 0x72c6, 0x2009, 0xc699, ++ 0x2104, 0xa084, 0xfffc, 0x200a, 0x080c, 0x7238, 0x7007, 0x0000, + 0x080c, 0x1676, 0x0005, 0x00a6, 0x0096, 0x0086, 0x6b2e, 0x6c2a, + 0x6858, 0xa055, 0x0904, 0x24ac, 0x2d60, 0x6034, 0xa0cc, 0x000f, + 0xa9c0, 0x23c7, 0xa986, 0x0007, 0x0130, 0xa986, 0x000e, 0x0118, +@@ -729,7 +730,7 @@ unsigned short risc_code01[] = { + 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x24e7, 0x015e, + 0x001e, 0x000e, 0x0005, 0x00e6, 0x00d6, 0x2071, 0xc96a, 0x700c, + 0x7110, 0xa106, 0x01b8, 0x2104, 0xa005, 0x0138, 0xa080, 0x0004, +- 0x2004, 0x2068, 0x080c, 0x7684, 0x0158, 0xa188, 0x0003, 0xa182, ++ 0x2004, 0x2068, 0x080c, 0x769d, 0x0158, 0xa188, 0x0003, 0xa182, + 0xc992, 0x0210, 0x2009, 0xc977, 0x700c, 0xa106, 0x1d60, 0x0010, + 0xa085, 0x0001, 0x00de, 0x00ee, 0x0005, 0x0126, 0x2091, 0x2600, + 0x2079, 0x0200, 0x2071, 0xcc80, 0x2069, 0xc600, 0x080c, 0x260b, +@@ -739,16 +740,16 @@ unsigned short risc_code01[] = { + 0x001f, 0x20e1, 0x8700, 0x012e, 0x0005, 0x0126, 0x2091, 0x2600, + 0x781c, 0xd0a4, 0x190c, 0x25f8, 0xa084, 0x0007, 0x0002, 0x2561, + 0x254f, 0x2552, 0x2555, 0x255a, 0x255c, 0x255e, 0x2560, 0x080c, +- 0x68c9, 0x0078, 0x080c, 0x6916, 0x0060, 0x080c, 0x68c9, 0x080c, +- 0x6916, 0x0038, 0x0041, 0x0028, 0x0031, 0x0018, 0x0021, 0x0008, +- 0x0011, 0x012e, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xc59a, ++ 0x68e2, 0x0078, 0x080c, 0x692f, 0x0060, 0x080c, 0x68e2, 0x080c, ++ 0x692f, 0x0038, 0x0041, 0x0028, 0x0031, 0x0018, 0x0021, 0x0008, ++ 0x0011, 0x012e, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xc5c0, + 0x7930, 0xa184, 0x0003, 0x01b0, 0x2001, 0xc936, 0x2004, 0xa005, + 0x0170, 0x2001, 0x0133, 0x2004, 0xa005, 0x090c, 0x1519, 0x00c6, +- 0x2001, 0xc936, 0x2064, 0x080c, 0xa95a, 0x00ce, 0x04b8, 0x20e1, ++ 0x2001, 0xc936, 0x2064, 0x080c, 0xa97a, 0x00ce, 0x04b8, 0x20e1, + 0x9040, 0x04a0, 0xa184, 0x0030, 0x01e0, 0x6a00, 0xa286, 0x0003, +- 0x1108, 0x00a0, 0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, ++ 0x1108, 0x00a0, 0x080c, 0x5f3b, 0x1178, 0x2001, 0xc8e6, 0x2003, + 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, +- 0x5f66, 0x080c, 0x5e5a, 0x0010, 0x080c, 0x4e5b, 0x080c, 0x25fb, ++ 0x5f7f, 0x080c, 0x5e73, 0x0010, 0x080c, 0x4e74, 0x080c, 0x25fb, + 0x00a8, 0xa184, 0x00c0, 0x0168, 0x00e6, 0x0036, 0x0046, 0x0056, + 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee, + 0x0028, 0xa184, 0x0300, 0x0110, 0x20e1, 0x9020, 0x7932, 0x002e, +@@ -780,85 +781,85 @@ unsigned short risc_code01[] = { + 0x0009, 0x000e, 0x00ee, 0x1138, 0x00e6, 0x783c, 0x2070, 0x7008, + 0xd0fc, 0x00ee, 0x1130, 0xa184, 0x1e2c, 0x1118, 0xa184, 0x0007, + 0x002a, 0xa195, 0x0004, 0xa284, 0x0007, 0x0002, 0x26b8, 0x269e, +- 0x26a1, 0x26a4, 0x26a9, 0x26ab, 0x26af, 0x26b3, 0x080c, 0x7873, +- 0x00b8, 0x080c, 0x794e, 0x00a0, 0x080c, 0x794e, 0x080c, 0x7873, +- 0x0078, 0x0099, 0x0068, 0x080c, 0x7873, 0x0079, 0x0048, 0x080c, +- 0x794e, 0x0059, 0x0028, 0x080c, 0x794e, 0x080c, 0x7873, 0x0029, ++ 0x26a1, 0x26a4, 0x26a9, 0x26ab, 0x26af, 0x26b3, 0x080c, 0x788c, ++ 0x00b8, 0x080c, 0x7967, 0x00a0, 0x080c, 0x7967, 0x080c, 0x788c, ++ 0x0078, 0x0099, 0x0068, 0x080c, 0x788c, 0x0079, 0x0048, 0x080c, ++ 0x7967, 0x0059, 0x0028, 0x080c, 0x7967, 0x080c, 0x788c, 0x0029, + 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x6124, 0x6028, 0xd09c, +- 0x0118, 0xd19c, 0x1904, 0x2910, 0x080c, 0x5f22, 0x0578, 0x7000, ++ 0x0118, 0xd19c, 0x1904, 0x2910, 0x080c, 0x5f3b, 0x0578, 0x7000, + 0xa086, 0x0003, 0x0198, 0x6024, 0xa084, 0x1800, 0x0178, 0x080c, +- 0x5f48, 0x0118, 0x080c, 0x5f34, 0x1148, 0x6027, 0x0020, 0x6043, +- 0x0000, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5f48, ++ 0x5f61, 0x0118, 0x080c, 0x5f4d, 0x1148, 0x6027, 0x0020, 0x6043, ++ 0x0000, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5f61, + 0x15d0, 0x6024, 0xa084, 0x1800, 0x1108, 0x04a8, 0x2001, 0xc8e5, + 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, +- 0x2003, 0x0001, 0x080c, 0x5e5a, 0x0804, 0x2910, 0xd1ac, 0x1518, ++ 0x2003, 0x0001, 0x080c, 0x5e73, 0x0804, 0x2910, 0xd1ac, 0x1518, + 0x6024, 0xd0dc, 0x1170, 0xd0e4, 0x1188, 0xd0d4, 0x11a0, 0xd0cc, +- 0x0130, 0x708c, 0xa086, 0x0028, 0x1110, 0x080c, 0x60b1, 0x0804, ++ 0x0130, 0x708c, 0xa086, 0x0028, 0x1110, 0x080c, 0x60ca, 0x0804, + 0x2910, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0048, 0x2001, 0xc8e6, +- 0x2003, 0x0002, 0x0020, 0x080c, 0x6024, 0x0804, 0x2910, 0x080c, +- 0x6156, 0x0804, 0x2910, 0x6220, 0xd1bc, 0x0568, 0xd2bc, 0x0558, ++ 0x2003, 0x0002, 0x0020, 0x080c, 0x603d, 0x0804, 0x2910, 0x080c, ++ 0x616f, 0x0804, 0x2910, 0x6220, 0xd1bc, 0x0568, 0xd2bc, 0x0558, + 0x783c, 0xa005, 0x0540, 0x00e6, 0x2070, 0x7008, 0xd0fc, 0x00ee, + 0x0510, 0x6028, 0xc0bc, 0x602a, 0x0026, 0x0036, 0x6288, 0x638c, + 0x608b, 0xbc91, 0x608f, 0xffff, 0x6043, 0x0001, 0xe000, 0xe000, + 0x6027, 0x0080, 0x6017, 0x0000, 0x6043, 0x0000, 0x628a, 0x638e, + 0x003e, 0x002e, 0x0016, 0x2001, 0xc696, 0x200c, 0xc184, 0x2102, + 0x001e, 0x0804, 0x2969, 0xd1ac, 0x0904, 0x284c, 0x0036, 0x6328, +- 0xc3bc, 0x632a, 0x003e, 0x080c, 0x5f22, 0x11d8, 0x6027, 0x0020, +- 0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e, 0x1170, 0x2001, 0xc8e6, +- 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a, ++ 0xc3bc, 0x632a, 0x003e, 0x080c, 0x5f3b, 0x11d8, 0x6027, 0x0020, ++ 0x0006, 0x0026, 0x0036, 0x080c, 0x5f57, 0x1170, 0x2001, 0xc8e6, ++ 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e73, + 0x003e, 0x002e, 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c, +- 0x5ef9, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138, ++ 0x5f12, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138, + 0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74ce, + 0xa48c, 0xff00, 0x7034, 0xd084, 0x0178, 0xa186, 0xf800, 0x1160, + 0x703c, 0xd084, 0x1148, 0xc085, 0x703e, 0x0036, 0x2418, 0x2011, +- 0x8016, 0x080c, 0x407d, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054, ++ 0x8016, 0x080c, 0x4096, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054, + 0xa084, 0x00ff, 0x810f, 0xa116, 0x0588, 0x7130, 0xd184, 0x1570, + 0x2011, 0xc653, 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011, + 0xc653, 0x2214, 0xd2ac, 0x1510, 0x6240, 0xa294, 0x0010, 0x0130, + 0x6248, 0xa294, 0xff00, 0xa296, 0xff00, 0x01c0, 0x7030, 0xd08c, + 0x0904, 0x2819, 0x7034, 0xd08c, 0x1140, 0x2001, 0xc60c, 0x200c, + 0xd1ac, 0x1904, 0x2819, 0xc1ad, 0x2102, 0x0036, 0x73cc, 0x2011, +- 0x8013, 0x080c, 0x407d, 0x003e, 0x0804, 0x2819, 0x7034, 0xd08c, ++ 0x8013, 0x080c, 0x4096, 0x003e, 0x0804, 0x2819, 0x7034, 0xd08c, + 0x1140, 0x2001, 0xc60c, 0x200c, 0xd1ac, 0x1904, 0x2819, 0xc1ad, +- 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x407d, 0x003e, ++ 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x4096, 0x003e, + 0x7130, 0xc185, 0x7132, 0x2011, 0xc653, 0x220c, 0xd1a4, 0x01d0, +- 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x712e, 0x2019, +- 0x000e, 0x080c, 0xc100, 0xa484, 0x00ff, 0xa080, 0x2f6e, 0x200d, ++ 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x7147, 0x2019, ++ 0x000e, 0x080c, 0xc126, 0xa484, 0x00ff, 0xa080, 0x2f6e, 0x200d, + 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x080c, +- 0xc183, 0x001e, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, ++ 0xc1a9, 0x001e, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, + 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, +- 0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108, 0x1f04, 0x2810, +- 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, +- 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, +- 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, 0xc600, ++ 0x080c, 0x5356, 0x1110, 0x080c, 0x4f60, 0x8108, 0x1f04, 0x2810, ++ 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, ++ 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, 0x0036, 0x2019, 0x0000, ++ 0x080c, 0x8e92, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, 0xc600, + 0x2014, 0xa296, 0x0004, 0x1128, 0xd19c, 0x11b0, 0x6228, 0xc29d, + 0x622a, 0x2003, 0x0001, 0x2001, 0xc623, 0x2003, 0x0000, 0x6027, +- 0x0020, 0x080c, 0x5f48, 0x1140, 0x0016, 0x2009, 0x07d0, 0x2011, +- 0x5e37, 0x080c, 0x7036, 0x001e, 0xd194, 0x0904, 0x2910, 0x0016, +- 0x6220, 0xd2b4, 0x0904, 0x28b5, 0x080c, 0x7024, 0x080c, 0x8bf5, ++ 0x0020, 0x080c, 0x5f61, 0x1140, 0x0016, 0x2009, 0x07d0, 0x2011, ++ 0x5e50, 0x080c, 0x704f, 0x001e, 0xd194, 0x0904, 0x2910, 0x0016, ++ 0x6220, 0xd2b4, 0x0904, 0x28b5, 0x080c, 0x703d, 0x080c, 0x8c0e, + 0x6027, 0x0004, 0x00f6, 0x2019, 0xc930, 0x2304, 0xa07d, 0x0570, + 0x7804, 0xa086, 0x0032, 0x1550, 0x00d6, 0x00c6, 0x00e6, 0x2069, + 0x0140, 0x618c, 0x6288, 0x7818, 0x608e, 0x7808, 0x608a, 0x6043, + 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, 0x6803, +- 0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, 0x7db1, 0x080c, +- 0x7e94, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, 0x080c, 0x95dc, ++ 0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, 0x7dca, 0x080c, ++ 0x7ead, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, 0x080c, 0x95fc, + 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, 0x00fe, 0x00d6, + 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0120, 0x6803, 0x1000, + 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, 0xc927, 0x6028, 0xa09a, +- 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8be8, 0x0804, ++ 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8c01, 0x0804, + 0x290f, 0x2019, 0xc930, 0x2304, 0xa065, 0x0120, 0x2009, 0x0027, +- 0x080c, 0x960c, 0x00ce, 0x0804, 0x290f, 0xd2bc, 0x0904, 0x290f, +- 0x080c, 0x7031, 0x6014, 0xa084, 0x0184, 0xa085, 0x0010, 0x6016, ++ 0x080c, 0x962c, 0x00ce, 0x0804, 0x290f, 0xd2bc, 0x0904, 0x290f, ++ 0x080c, 0x704a, 0x6014, 0xa084, 0x0184, 0xa085, 0x0010, 0x6016, + 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, + 0x0120, 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, + 0xc927, 0x6044, 0xa09a, 0x00c8, 0x1620, 0x8000, 0x6046, 0x603c, +- 0x00ce, 0xa005, 0x05a0, 0x2009, 0x07d0, 0x080c, 0x7029, 0xa080, ++ 0x00ce, 0xa005, 0x05a0, 0x2009, 0x07d0, 0x080c, 0x7042, 0xa080, + 0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, 0xa18c, 0x0184, + 0xa18d, 0x0012, 0x6116, 0x0418, 0xa080, 0x0007, 0x2004, 0xa086, + 0x0009, 0x0d98, 0x6114, 0xa18c, 0x0184, 0xa18d, 0x0016, 0x6116, +- 0x00b0, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x2019, ++ 0x00b0, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e92, 0x003e, 0x2019, + 0xc936, 0x2304, 0xa065, 0x0150, 0x2009, 0x004f, 0x601c, 0xa086, +- 0x0009, 0x1110, 0x2009, 0x0105, 0x080c, 0x960c, 0x00ce, 0x001e, ++ 0x0009, 0x1110, 0x2009, 0x0105, 0x080c, 0x962c, 0x00ce, 0x001e, + 0xd19c, 0x0904, 0x2969, 0x7034, 0xd0ac, 0x1560, 0x0016, 0x0156, + 0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x0006, 0x1d04, 0x291e, + 0x2091, 0x6000, 0x1f04, 0x291e, 0x602f, 0x0000, 0x6150, 0xa185, +@@ -866,16 +867,16 @@ unsigned short risc_code01[] = { + 0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, + 0x0480, 0x080c, 0x2ab1, 0x1f04, 0x292c, 0x015e, 0x6152, 0x001e, + 0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, +- 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, +- 0x0036, 0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, +- 0x080c, 0xc579, 0x080c, 0xc594, 0xa085, 0x0001, 0x080c, 0x5f66, ++ 0x080c, 0x8f27, 0x2011, 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, ++ 0x0036, 0x2019, 0x0000, 0x080c, 0x8e92, 0x003e, 0x60e3, 0x0000, ++ 0x080c, 0xc59f, 0x080c, 0xc5ba, 0xa085, 0x0001, 0x080c, 0x5f7f, + 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12e1, + 0x001e, 0xa18c, 0xffd0, 0x6126, 0x0005, 0x0006, 0x0016, 0x0026, + 0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc600, 0x71c4, + 0x70c6, 0xa116, 0x0500, 0x81ff, 0x0128, 0x2011, 0x8011, 0x080c, +- 0x407d, 0x00c8, 0x2011, 0x8012, 0x080c, 0x407d, 0x2001, 0xc672, ++ 0x4096, 0x00c8, 0x2011, 0x8012, 0x080c, 0x4096, 0x2001, 0xc672, + 0x2004, 0xd0fc, 0x1180, 0x0036, 0x00c6, 0x080c, 0x2a3c, 0x080c, +- 0x8dca, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0000, 0x080c, ++ 0x8de3, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0000, 0x080c, + 0x2e19, 0x00ce, 0x003e, 0x012e, 0x00fe, 0x00ee, 0x002e, 0x001e, + 0x000e, 0x0005, 0x00c6, 0x00f6, 0x0006, 0x0026, 0x2061, 0x0100, + 0xa190, 0x29b5, 0x2205, 0x60f2, 0x2011, 0x29c2, 0x2205, 0x60ee, +@@ -883,13 +884,13 @@ unsigned short risc_code01[] = { + 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, + 0xa18c, 0x00ff, 0x2130, 0xa094, 0xff00, 0x1110, 0x81ff, 0x0118, +- 0x080c, 0x6be0, 0x0038, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0xff00, ++ 0x080c, 0x6bf9, 0x0038, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0xff00, + 0x810f, 0xa006, 0x0005, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0x00ff, + 0x0005, 0x00d6, 0x2069, 0x0140, 0x2001, 0xc615, 0x2003, 0x00ef, + 0x20a9, 0x0010, 0xa006, 0x6852, 0x6856, 0x1f04, 0x29ec, 0x00de, + 0x0005, 0x0006, 0x00d6, 0x0026, 0x2069, 0x0140, 0x2001, 0xc615, + 0x2102, 0x8114, 0x8214, 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853, +- 0x0000, 0xa006, 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xc5a8, ++ 0x0000, 0xa006, 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xc5ce, + 0x2005, 0x6856, 0x8211, 0x1f04, 0x2a01, 0x002e, 0x00de, 0x000e, + 0x0005, 0x00c6, 0x2061, 0xc600, 0x6030, 0x0110, 0xc09d, 0x0008, + 0xc09c, 0x6032, 0x00ce, 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016, +@@ -898,12 +899,12 @@ unsigned short risc_code01[] = { + 0x0404, 0x680e, 0x1f04, 0x2a31, 0x680f, 0x0000, 0x000e, 0x001e, + 0x002e, 0x00de, 0x015e, 0x0005, 0x2001, 0xc653, 0x2004, 0xd0c4, + 0x0150, 0xd0a4, 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002e, +- 0x080c, 0xc183, 0x004e, 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079, ++ 0x080c, 0xc1a9, 0x004e, 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079, + 0x0140, 0x78c4, 0xd0dc, 0x0548, 0xa084, 0x0700, 0xa08e, 0x0300, + 0x1520, 0x2011, 0x0000, 0x2009, 0x0002, 0x2300, 0xa080, 0x0020, +- 0x2018, 0x2300, 0x080c, 0x783f, 0x2011, 0x0030, 0x2200, 0x8007, ++ 0x2018, 0x2300, 0x080c, 0x7858, 0x2011, 0x0030, 0x2200, 0x8007, + 0xa085, 0x004c, 0x78c2, 0x2009, 0x0204, 0x210c, 0x2200, 0xa100, +- 0x2009, 0x0138, 0x200a, 0x080c, 0x5f22, 0x1118, 0x2009, 0xc8d6, ++ 0x2009, 0x0138, 0x200a, 0x080c, 0x5f3b, 0x1118, 0x2009, 0xc8d6, + 0x200a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, + 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, + 0x200c, 0x8000, 0x2014, 0xa184, 0x0003, 0x0110, 0x0804, 0x1b81, +@@ -966,10 +967,10 @@ unsigned short risc_code01[] = { + 0x080c, 0x2664, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0040, 0x20d1, + 0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000, 0x080c, 0x1519, 0x000e, + 0x010e, 0x000d, 0x00c6, 0x0026, 0x0046, 0x2021, 0x0000, 0x080c, +- 0x570b, 0x1904, 0x2d3f, 0x72d4, 0x2001, 0xc8e5, 0x2004, 0xa005, ++ 0x5724, 0x1904, 0x2d3f, 0x72d4, 0x2001, 0xc8e5, 0x2004, 0xa005, + 0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x2d3f, + 0x080c, 0x2d43, 0x0804, 0x2d3f, 0xd2cc, 0x1904, 0x2d3f, 0x080c, +- 0x5f22, 0x1120, 0x709f, 0xffff, 0x0804, 0x2d3f, 0xd294, 0x0120, ++ 0x5f3b, 0x1120, 0x709f, 0xffff, 0x0804, 0x2d3f, 0xd294, 0x0120, + 0x709f, 0xffff, 0x0804, 0x2d3f, 0x2001, 0xc615, 0x203c, 0x7288, + 0xd284, 0x0904, 0x2ce1, 0xd28c, 0x1904, 0x2ce1, 0x0036, 0x739c, + 0xa38e, 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xcdc0, +@@ -977,7 +978,7 @@ unsigned short risc_code01[] = { + 0xa084, 0x00ff, 0xa70e, 0x0560, 0xa08e, 0x0000, 0x0548, 0xa08e, + 0x00ff, 0x1150, 0x7230, 0xd284, 0x1538, 0x7288, 0xc28d, 0x728a, + 0x709f, 0xffff, 0x003e, 0x0428, 0x2009, 0x0000, 0x080c, 0x29c7, +- 0x080c, 0x52e1, 0x11b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x080c, 0x52fa, 0x11b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, + 0x1150, 0x7030, 0xd08c, 0x0118, 0x6000, 0xd0bc, 0x0120, 0x080c, + 0x2d56, 0x0140, 0x0028, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0110, + 0x8318, 0x0818, 0x739e, 0x0010, 0x709f, 0xffff, 0x003e, 0x0804, +@@ -985,51 +986,51 @@ unsigned short risc_code01[] = { + 0x007e, 0x709c, 0xa096, 0xffff, 0x1120, 0x2009, 0x0000, 0x28a8, + 0x0050, 0xa812, 0x0220, 0x2008, 0xa802, 0x20a8, 0x0020, 0x709f, + 0xffff, 0x0804, 0x2d3f, 0x2700, 0x0156, 0x0016, 0xa106, 0x05a0, +- 0xc484, 0x080c, 0x533d, 0x0120, 0x080c, 0x52e1, 0x15a8, 0x0008, ++ 0xc484, 0x080c, 0x5356, 0x0120, 0x080c, 0x52fa, 0x15a8, 0x0008, + 0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1130, 0x7030, + 0xd08c, 0x01e8, 0x6000, 0xd0bc, 0x11d0, 0x7288, 0xd28c, 0x0188, + 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x02b0, 0xd484, 0x1118, +- 0x080c, 0x5300, 0x0028, 0x080c, 0x2f14, 0x0170, 0x080c, 0x2f41, ++ 0x080c, 0x5319, 0x0028, 0x080c, 0x2f14, 0x0170, 0x080c, 0x2f41, + 0x0058, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0170, 0x0028, 0x080c, + 0x2f14, 0x0110, 0x0419, 0x0140, 0x001e, 0x8108, 0x015e, 0x1f04, + 0x2cfb, 0x709f, 0xffff, 0x0018, 0x001e, 0x015e, 0x719e, 0x004e, + 0x002e, 0x00ce, 0x0005, 0x00c6, 0x0016, 0x709f, 0x0001, 0x2009, +- 0x007e, 0x080c, 0x52e1, 0x1138, 0x080c, 0x2e87, 0x04a9, 0x0118, ++ 0x007e, 0x080c, 0x52fa, 0x1138, 0x080c, 0x2e87, 0x04a9, 0x0118, + 0x70d4, 0xc0bd, 0x70d6, 0x001e, 0x00ce, 0x0005, 0x0016, 0x0076, + 0x00d6, 0x00c6, 0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff, +- 0x6842, 0x080c, 0xaf06, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xb057, +- 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0000, +- 0x080c, 0x5291, 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, 0x709a, +- 0x012e, 0x2009, 0x0004, 0x080c, 0x960c, 0xa085, 0x0001, 0x00ce, ++ 0x6842, 0x080c, 0xaf26, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xb077, ++ 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x5298, 0x2001, 0x0000, ++ 0x080c, 0x52aa, 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, 0x709a, ++ 0x012e, 0x2009, 0x0004, 0x080c, 0x962c, 0xa085, 0x0001, 0x00ce, + 0x00de, 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, + 0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c, +- 0xaf06, 0x0550, 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, ++ 0xaf26, 0x0550, 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, + 0xa086, 0x007e, 0x0140, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, +- 0x1110, 0x080c, 0x2e46, 0x080c, 0xb057, 0x601f, 0x0001, 0x2001, +- 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126, ++ 0x1110, 0x080c, 0x2e46, 0x080c, 0xb077, 0x601f, 0x0001, 0x2001, ++ 0x0000, 0x080c, 0x5298, 0x2001, 0x0002, 0x080c, 0x52aa, 0x0126, + 0x2091, 0x8000, 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0002, +- 0x080c, 0x960c, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, +- 0x0005, 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x52e1, 0x1120, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, ++ 0x0005, 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x52fa, 0x1120, + 0x0031, 0x0110, 0x70db, 0xffff, 0x002e, 0x00ce, 0x0005, 0x0016, +- 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x080c, 0x9586, 0x01e8, 0x2d00, +- 0x601a, 0x080c, 0xb057, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, +- 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126, 0x2091, 0x8000, ++ 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x080c, 0x95a6, 0x01e8, 0x2d00, ++ 0x601a, 0x080c, 0xb077, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, ++ 0x5298, 0x2001, 0x0002, 0x080c, 0x52aa, 0x0126, 0x2091, 0x8000, + 0x080c, 0x2e46, 0x70dc, 0x8000, 0x70de, 0x012e, 0x2009, 0x0002, +- 0x080c, 0x960c, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, + 0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, +- 0x080c, 0x52e1, 0x1190, 0x2c68, 0x080c, 0x9586, 0x0170, 0x2d00, +- 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x080c, 0xb057, 0x2009, +- 0x0022, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce, +- 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x7b22, +- 0x080c, 0x7abb, 0x080c, 0xa089, 0x2130, 0x81ff, 0x0128, 0x20a9, ++ 0x080c, 0x52fa, 0x1190, 0x2c68, 0x080c, 0x95a6, 0x0170, 0x2d00, ++ 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x080c, 0xb077, 0x2009, ++ 0x0022, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce, ++ 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x7b3b, ++ 0x080c, 0x7ad4, 0x080c, 0xa0a9, 0x2130, 0x81ff, 0x0128, 0x20a9, + 0x007e, 0x2009, 0x0000, 0x0020, 0x20a9, 0x007f, 0x2009, 0x0000, +- 0x0016, 0x080c, 0x533d, 0x1120, 0x080c, 0x553e, 0x080c, 0x4f47, ++ 0x0016, 0x080c, 0x5356, 0x1120, 0x080c, 0x5557, 0x080c, 0x4f60, + 0x001e, 0x8108, 0x1f04, 0x2e30, 0x86ff, 0x1110, 0x080c, 0x11f4, + 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, + 0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, +- 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, +- 0x2c08, 0x080c, 0xbeea, 0x007e, 0x001e, 0x2e60, 0x080c, 0x553e, +- 0x6210, 0x6314, 0x080c, 0x4f47, 0x6212, 0x6316, 0x001e, 0x002e, ++ 0x0029, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a27, ++ 0x2c08, 0x080c, 0xbf10, 0x007e, 0x001e, 0x2e60, 0x080c, 0x5557, ++ 0x6210, 0x6314, 0x080c, 0x4f60, 0x6212, 0x6316, 0x001e, 0x002e, + 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x6018, 0xa080, + 0x0028, 0x2004, 0xa086, 0x0080, 0x0150, 0x2071, 0xc600, 0x7098, + 0xa005, 0x0110, 0x8001, 0x709a, 0x000e, 0x00ee, 0x0005, 0x2071, +@@ -1037,20 +1038,20 @@ unsigned short risc_code01[] = { + 0xc08c, 0x6002, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0036, 0x0026, + 0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, 0x0001, 0x0098, + 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0xa006, +- 0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xc183, 0x004e, 0x20a9, ++ 0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xc1a9, 0x004e, 0x20a9, + 0x00ff, 0x2011, 0x0000, 0x0026, 0xa28e, 0x007e, 0x0904, 0x2ef3, + 0xa28e, 0x007f, 0x0904, 0x2ef3, 0xa28e, 0x0080, 0x05e0, 0xa288, + 0xc77b, 0x210c, 0x81ff, 0x05b8, 0x8fff, 0x1148, 0x2001, 0xc905, + 0x0006, 0x2003, 0x0001, 0x04d9, 0x000e, 0x2003, 0x0000, 0x00c6, +- 0x2160, 0x2001, 0x0001, 0x080c, 0x5715, 0x00ce, 0x2019, 0x0029, +- 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x00c6, ++ 0x2160, 0x2001, 0x0001, 0x080c, 0x572e, 0x00ce, 0x2019, 0x0029, ++ 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a27, 0x00c6, + 0x0026, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x1118, + 0x6007, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0xa215, 0x6206, +- 0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xbeea, 0x001e, 0x007e, +- 0x2160, 0x080c, 0x553e, 0x002e, 0x8210, 0x1f04, 0x2eab, 0x015e, ++ 0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xbf10, 0x001e, 0x007e, ++ 0x2160, 0x080c, 0x5557, 0x002e, 0x8210, 0x1f04, 0x2eab, 0x015e, + 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, + 0x0026, 0x0016, 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0148, 0xd0a4, +- 0x0138, 0xa006, 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xc183, ++ 0x0138, 0xa006, 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xc1a9, + 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, + 0x7288, 0x82ff, 0x01f8, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x11d0, + 0x2100, 0x080c, 0x29db, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314, +@@ -1058,10 +1059,10 @@ unsigned short risc_code01[] = { + 0x0010, 0xa084, 0x00ff, 0xa116, 0x0138, 0xa096, 0x00ff, 0x0110, + 0x8318, 0x0c68, 0xa085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e, + 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026, +- 0x0036, 0x2110, 0x0026, 0x2019, 0x0029, 0x080c, 0x912b, 0x002e, +- 0x080c, 0xc4d7, 0x003e, 0x002e, 0x001e, 0xa180, 0xc77b, 0x2004, ++ 0x0036, 0x2110, 0x0026, 0x2019, 0x0029, 0x080c, 0x914b, 0x002e, ++ 0x080c, 0xc4fd, 0x003e, 0x002e, 0x001e, 0xa180, 0xc77b, 0x2004, + 0xa065, 0x0158, 0x0016, 0x00c6, 0x2061, 0xca3c, 0x001e, 0x611a, +- 0x080c, 0x2e46, 0x001e, 0x080c, 0x5300, 0x012e, 0x00ce, 0x001e, ++ 0x080c, 0x2e46, 0x001e, 0x080c, 0x5319, 0x012e, 0x00ce, 0x001e, + 0x0005, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x0005, 0x7eef, 0x7de8, + 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, + 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, +@@ -1116,89 +1117,89 @@ unsigned short risc_code01[] = { + 0x3170, 0x3170, 0x3170, 0x3170, 0x342c, 0x3170, 0x3170, 0x3170, + 0x3170, 0x3170, 0x343e, 0x3448, 0x3170, 0x3170, 0x3170, 0x3170, + 0x3170, 0x3170, 0x0002, 0x3472, 0x34c6, 0x3521, 0x353b, 0x3170, +- 0x356c, 0x399f, 0x456f, 0x3170, 0x3170, 0x3170, 0x3170, 0x3170, ++ 0x356c, 0x399f, 0x4588, 0x3170, 0x3170, 0x3170, 0x3170, 0x3170, + 0x3170, 0x3170, 0x3170, 0x31b6, 0x31b9, 0x39a1, 0x3170, 0x39ae, +- 0x4608, 0x4663, 0x46c7, 0x3170, 0x472a, 0x4754, 0x4773, 0x47a5, ++ 0x4621, 0x467c, 0x46e0, 0x3170, 0x4743, 0x476d, 0x478c, 0x47be, + 0x3170, 0x3170, 0x3170, 0x39b2, 0x3b57, 0x3b71, 0x3b8f, 0x3bf0, +- 0x3c50, 0x3c5b, 0x3c93, 0x3ca2, 0x3cb1, 0x3cb4, 0x3cd7, 0x3d21, +- 0x3d97, 0x3da4, 0x3ea5, 0x3fd4, 0x3ffd, 0x40fb, 0x411d, 0x4129, +- 0x4162, 0x4232, 0x428c, 0x4352, 0x43a4, 0x4404, 0x4419, 0x4434, +- 0x44a6, 0x4558, 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x405a, ++ 0x3c50, 0x3c5b, 0x3c93, 0x3ca2, 0x3cb1, 0x3cb4, 0x3cd7, 0x3d23, ++ 0x3d99, 0x3da6, 0x3ea7, 0x3fed, 0x4016, 0x4114, 0x4136, 0x4142, ++ 0x417b, 0x424b, 0x42a5, 0x436b, 0x43bd, 0x441d, 0x4432, 0x444d, ++ 0x44bf, 0x4571, 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x4073, + 0x0126, 0x2091, 0x8000, 0x0e04, 0x3160, 0x7818, 0xd084, 0x0110, + 0x012e, 0x0cb0, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x781b, 0x0001, + 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005, + 0x2021, 0x4001, 0x0c18, 0x2021, 0x4002, 0x0c00, 0x2021, 0x4003, + 0x08e8, 0x2021, 0x4005, 0x08d0, 0x2021, 0x4006, 0x08b8, 0xa02e, +- 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, 0x4067, 0x7823, ++ 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, 0x4080, 0x7823, + 0x0004, 0x7824, 0x0807, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, +- 0x7930, 0x0804, 0x406a, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804, ++ 0x7930, 0x0804, 0x4083, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804, + 0x3154, 0x7924, 0x2114, 0x0804, 0x3154, 0x2099, 0x0009, 0x20a1, + 0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0804, + 0x3154, 0x7824, 0x2060, 0x0090, 0x2009, 0x0002, 0x2011, 0x0002, +- 0x2019, 0x0004, 0x783b, 0x0037, 0x0804, 0x3154, 0x7d38, 0x7c3c, ++ 0x2019, 0x0006, 0x783b, 0x0037, 0x0804, 0x3154, 0x7d38, 0x7c3c, + 0x0840, 0x7d38, 0x7c3c, 0x0888, 0x2061, 0x1000, 0xe10c, 0xa006, + 0x2c15, 0xa200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0xa005, 0x0904, + 0x3154, 0x0804, 0x3176, 0x2069, 0xc652, 0x7824, 0x7930, 0xa11a, + 0x1a04, 0x317c, 0x8019, 0x0904, 0x317c, 0x684a, 0x6942, 0x782c, +- 0x6852, 0x7828, 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x61f8, ++ 0x6852, 0x7828, 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x6211, + 0x0804, 0x3154, 0x2069, 0xc652, 0x7824, 0x7934, 0xa11a, 0x1a04, + 0x317c, 0x8019, 0x0904, 0x317c, 0x684e, 0x6946, 0x782c, 0x6862, +- 0x7828, 0x6866, 0xa006, 0x686a, 0x686e, 0x080c, 0x57d7, 0x0804, ++ 0x7828, 0x6866, 0xa006, 0x686a, 0x686e, 0x080c, 0x57f0, 0x0804, + 0x3154, 0xa02e, 0x2520, 0x81ff, 0x1904, 0x3179, 0x7924, 0x7b28, +- 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0xc6a9, 0x41a1, 0x080c, 0x4026, +- 0x0904, 0x3179, 0x2009, 0x0020, 0x080c, 0x4067, 0x701b, 0x3211, ++ 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0xc6a9, 0x41a1, 0x080c, 0x403f, ++ 0x0904, 0x3179, 0x2009, 0x0020, 0x080c, 0x4080, 0x701b, 0x3211, + 0x0005, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011, 0x0138, + 0xa096, 0x0019, 0x0120, 0xa096, 0x0015, 0x1904, 0x3179, 0x810f, + 0xa18c, 0x00ff, 0x0904, 0x3179, 0x710e, 0x700c, 0x8001, 0x0528, +- 0x700e, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009, 0x0020, 0x2061, ++ 0x700e, 0x080c, 0x403f, 0x0904, 0x3179, 0x2009, 0x0020, 0x2061, + 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, +- 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x080c, 0x4067, 0x701b, ++ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x080c, 0x4080, 0x701b, + 0x3242, 0x0005, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0120, + 0xa096, 0x000a, 0x1904, 0x3179, 0x08c0, 0x7010, 0x2068, 0x6838, +- 0xc0fd, 0x683a, 0x080c, 0x51dd, 0x1128, 0x7007, 0x0003, 0x701b, +- 0x325c, 0x0005, 0x080c, 0x592e, 0x0126, 0x2091, 0x8000, 0x20a9, ++ 0xc0fd, 0x683a, 0x080c, 0x51f6, 0x1128, 0x7007, 0x0003, 0x701b, ++ 0x325c, 0x0005, 0x080c, 0x5947, 0x0126, 0x2091, 0x8000, 0x20a9, + 0x0005, 0x2099, 0xc6a9, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000, + 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020, +- 0x012e, 0x0804, 0x406a, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x3154, ++ 0x012e, 0x0804, 0x4083, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x3154, + 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020, + 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836, + 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205, + 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091, + 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0x0804, + 0x0427, 0x81ff, 0x1904, 0x3179, 0x7924, 0x810f, 0xa18c, 0x00ff, +- 0x080c, 0x533d, 0x1904, 0x317c, 0x7e38, 0xa684, 0x3fff, 0xa082, +- 0x4000, 0x0210, 0x0804, 0x317c, 0x7c28, 0x7d2c, 0x080c, 0x5505, +- 0xd28c, 0x1118, 0x080c, 0x54ae, 0x0010, 0x080c, 0x54de, 0x1518, ++ 0x080c, 0x5356, 0x1904, 0x317c, 0x7e38, 0xa684, 0x3fff, 0xa082, ++ 0x4000, 0x0210, 0x0804, 0x317c, 0x7c28, 0x7d2c, 0x080c, 0x551e, ++ 0xd28c, 0x1118, 0x080c, 0x54c7, 0x0010, 0x080c, 0x54f7, 0x1518, + 0x2061, 0xce00, 0x0126, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, + 0x0148, 0x6010, 0xa06d, 0x0130, 0x683c, 0xa406, 0x1118, 0x6840, + 0xa506, 0x0150, 0x012e, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, +- 0xac02, 0x1a04, 0x3179, 0x0c30, 0x080c, 0xa95a, 0x012e, 0x0904, +- 0x3179, 0x0804, 0x3154, 0xa00e, 0x2001, 0x0005, 0x080c, 0x592e, +- 0x0126, 0x2091, 0x8000, 0x080c, 0xaf02, 0x080c, 0x580a, 0x012e, +- 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, +- 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0904, +- 0x3179, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x404b, +- 0x0904, 0x317c, 0x080c, 0x557d, 0x0904, 0x3179, 0x2019, 0x0005, +- 0x7924, 0x080c, 0x552c, 0x0904, 0x3179, 0x7828, 0xa08a, 0x1000, +- 0x1a04, 0x317c, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9, ++ 0xac02, 0x1a04, 0x3179, 0x0c30, 0x080c, 0xa97a, 0x012e, 0x0904, ++ 0x3179, 0x0804, 0x3154, 0xa00e, 0x2001, 0x0005, 0x080c, 0x5947, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xaf22, 0x080c, 0x5823, 0x012e, ++ 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4054, 0x0904, ++ 0x317c, 0x080c, 0x541c, 0x0904, 0x3179, 0x080c, 0x552a, 0x0904, ++ 0x3179, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4064, ++ 0x0904, 0x317c, 0x080c, 0x5596, 0x0904, 0x3179, 0x2019, 0x0005, ++ 0x7924, 0x080c, 0x5545, 0x0904, 0x3179, 0x7828, 0xa08a, 0x1000, ++ 0x1a04, 0x317c, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fd2, + 0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, + 0x0001, 0x0450, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x01f8, +- 0x2508, 0x080c, 0x533d, 0x11d8, 0x080c, 0x557d, 0x1128, 0x2009, ++ 0x2508, 0x080c, 0x5356, 0x11d8, 0x080c, 0x5596, 0x1128, 0x2009, + 0x0002, 0x62b4, 0x2518, 0x00c0, 0x2019, 0x0004, 0xa00e, 0x080c, +- 0x552c, 0x1118, 0x2009, 0x0006, 0x0078, 0x7824, 0xa08a, 0x1000, +- 0x1270, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9, 0x8529, ++ 0x5545, 0x1118, 0x2009, 0x0006, 0x0078, 0x7824, 0xa08a, 0x1000, ++ 0x1270, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fd2, 0x8529, + 0x1ae0, 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x012e, +- 0x0804, 0x317c, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c, 0x5469, +- 0x080c, 0x5505, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, +- 0x403b, 0x0904, 0x317c, 0x080c, 0x545a, 0x080c, 0x5505, 0x0804, +- 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c, +- 0x080c, 0x54e0, 0x0904, 0x3179, 0x080c, 0x5221, 0x080c, 0x54a7, +- 0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904, 0x317c, +- 0x080c, 0x5403, 0x0904, 0x3179, 0x62a0, 0x2019, 0x0005, 0x00c6, +- 0x080c, 0x553e, 0x2061, 0x0000, 0x080c, 0x7b16, 0x0076, 0x2039, +- 0x0000, 0x080c, 0x7a0e, 0x2009, 0x0000, 0x080c, 0xbeea, 0x007e, +- 0x00ce, 0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904, +- 0x317c, 0x080c, 0x5505, 0x2208, 0x0804, 0x3154, 0x0156, 0x00d6, ++ 0x0804, 0x317c, 0x080c, 0x4054, 0x0904, 0x317c, 0x080c, 0x5482, ++ 0x080c, 0x551e, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, ++ 0x4054, 0x0904, 0x317c, 0x080c, 0x5473, 0x080c, 0x551e, 0x0804, ++ 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4054, 0x0904, 0x317c, ++ 0x080c, 0x54f9, 0x0904, 0x3179, 0x080c, 0x523a, 0x080c, 0x54c0, ++ 0x080c, 0x551e, 0x0804, 0x3154, 0x080c, 0x4054, 0x0904, 0x317c, ++ 0x080c, 0x541c, 0x0904, 0x3179, 0x62a0, 0x2019, 0x0005, 0x00c6, ++ 0x080c, 0x5557, 0x2061, 0x0000, 0x080c, 0x7b2f, 0x0076, 0x2039, ++ 0x0000, 0x080c, 0x7a27, 0x2009, 0x0000, 0x080c, 0xbf10, 0x007e, ++ 0x00ce, 0x080c, 0x551e, 0x0804, 0x3154, 0x080c, 0x4054, 0x0904, ++ 0x317c, 0x080c, 0x551e, 0x2208, 0x0804, 0x3154, 0x0156, 0x00d6, + 0x00e6, 0x2069, 0xc734, 0x6810, 0x6914, 0xa10a, 0x1210, 0x2009, + 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007e, + 0x2069, 0xc77b, 0x2d04, 0xa075, 0x0130, 0x704c, 0x0071, 0xa210, +@@ -1210,50 +1211,50 @@ unsigned short risc_code01[] = { + 0x2215, 0xa294, 0x00ff, 0x6370, 0x83ff, 0x0108, 0x6274, 0x67d4, + 0xd79c, 0x0118, 0x2031, 0x0001, 0x0090, 0xd7ac, 0x0118, 0x2031, + 0x0003, 0x0068, 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c, +- 0x5f22, 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e3a, ++ 0x5f3b, 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e3a, + 0x7f3e, 0x0804, 0x3154, 0x6140, 0x6244, 0x2019, 0xc8fd, 0x231c, + 0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x6134, 0xa006, 0x2010, +- 0x6338, 0x012e, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c, ++ 0x6338, 0x012e, 0x0804, 0x3154, 0x080c, 0x4064, 0x0904, 0x317c, + 0x6244, 0x6338, 0x0804, 0x3154, 0x6140, 0x6244, 0x7824, 0x6042, + 0x7b28, 0x6346, 0x2069, 0xc652, 0x831f, 0xa305, 0x6816, 0x782c, + 0x2069, 0xc8fd, 0x2d1c, 0x206a, 0x0804, 0x3154, 0x0126, 0x2091, + 0x8000, 0x7824, 0x6036, 0x782c, 0x603a, 0x012e, 0x0804, 0x3154, + 0x7838, 0xa005, 0x01a8, 0x7828, 0xa025, 0x0904, 0x317c, 0x782c, +- 0xa02d, 0x0904, 0x317c, 0xa00e, 0x080c, 0x533d, 0x1120, 0x6244, ++ 0xa02d, 0x0904, 0x317c, 0xa00e, 0x080c, 0x5356, 0x1120, 0x6244, + 0x6338, 0x6446, 0x653a, 0xa186, 0x00ff, 0x0190, 0x8108, 0x0ca0, +- 0x080c, 0x404b, 0x0904, 0x317c, 0x7828, 0xa00d, 0x0904, 0x317c, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x7828, 0xa00d, 0x0904, 0x317c, + 0x782c, 0xa005, 0x0904, 0x317c, 0x6244, 0x6146, 0x6338, 0x603a, + 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, + 0x3179, 0x00c6, 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, + 0xa196, 0x00ff, 0x1130, 0x2001, 0xc615, 0x2004, 0xa085, 0xff00, + 0x0078, 0xa182, 0x007f, 0x16a0, 0xa188, 0x2f6e, 0x210d, 0xa18c, + 0x00ff, 0x2001, 0xc615, 0x2004, 0xa116, 0x0550, 0x810f, 0xa105, +- 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x9586, 0x000e, 0x01e0, +- 0x601a, 0x600b, 0xbc09, 0x601f, 0x0001, 0x080c, 0x4026, 0x01d8, ++ 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x95a6, 0x000e, 0x01e0, ++ 0x601a, 0x600b, 0xbc09, 0x601f, 0x0001, 0x080c, 0x403f, 0x01d8, + 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, + 0x683a, 0x701b, 0x351a, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c, +- 0x960c, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x3179, +- 0x00ce, 0x0804, 0x317c, 0x080c, 0x95dc, 0x0cb0, 0x2001, 0xc600, ++ 0x962c, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x3179, ++ 0x00ce, 0x0804, 0x317c, 0x080c, 0x95fc, 0x0cb0, 0x2001, 0xc600, + 0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00c6, 0x2061, 0x0100, + 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x1130, 0x2001, + 0xc615, 0x2004, 0xa085, 0xff00, 0x0078, 0xa182, 0x007f, 0x16a0, + 0xa188, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x2001, 0xc615, 0x2004, + 0xa116, 0x0550, 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006, +- 0x080c, 0x9586, 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc05, 0x601f, +- 0x0001, 0x080c, 0x4026, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003, ++ 0x080c, 0x95a6, 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc05, 0x601f, ++ 0x0001, 0x080c, 0x403f, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003, + 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x701b, 0x351a, 0x2d00, +- 0x6012, 0x2009, 0x0032, 0x080c, 0x960c, 0x012e, 0x00ce, 0x0005, ++ 0x6012, 0x2009, 0x0032, 0x080c, 0x962c, 0x012e, 0x00ce, 0x0005, + 0x012e, 0x00ce, 0x0804, 0x3179, 0x00ce, 0x0804, 0x317c, 0x080c, +- 0x95dc, 0x0cb0, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0x0804, ++ 0x95fc, 0x0cb0, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0x0804, + 0x3154, 0x2061, 0xc9bc, 0x0126, 0x2091, 0x8000, 0x6000, 0xd084, + 0x0178, 0x6104, 0x6208, 0x2a60, 0x6068, 0x783a, 0x60b4, 0x783e, + 0x60b0, 0x2019, 0x0072, 0x201a, 0x6348, 0x012e, 0x0804, 0x3154, +- 0xa00e, 0x2110, 0x0c80, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22, ++ 0xa00e, 0x2110, 0x0c80, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f3b, + 0x0904, 0x3179, 0x0126, 0x2091, 0x8000, 0x6248, 0x6068, 0xa202, +- 0x0248, 0xa085, 0x0001, 0x080c, 0x2a11, 0x080c, 0x4968, 0x012e, ++ 0x0248, 0xa085, 0x0001, 0x080c, 0x2a11, 0x080c, 0x4981, 0x012e, + 0x0804, 0x3154, 0x012e, 0x0804, 0x317c, 0x0006, 0x0016, 0x00c6, + 0x00e6, 0x2001, 0xc906, 0x2070, 0x2061, 0xc652, 0x6008, 0x2072, +- 0x2009, 0x0000, 0x2011, 0x1000, 0x080c, 0x783f, 0x7206, 0x00ee, ++ 0x2009, 0x0000, 0x2011, 0x1000, 0x080c, 0x7858, 0x7206, 0x00ee, + 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7824, + 0xa084, 0x0007, 0x0002, 0x357e, 0x3587, 0x358e, 0x357b, 0x357b, + 0x357b, 0x357b, 0x357b, 0x012e, 0x0804, 0x317c, 0x2009, 0x0114, +@@ -1362,10 +1363,10 @@ unsigned short risc_code01[] = { + 0x601a, 0x2061, 0x0100, 0x2001, 0xc906, 0x2004, 0x60ce, 0x6004, + 0xc0ac, 0xa085, 0x0200, 0x6006, 0x2001, 0x0074, 0x2004, 0xa005, + 0x01f8, 0x2038, 0x2001, 0x0076, 0x2024, 0x2001, 0x0077, 0x201c, +- 0x080c, 0x4026, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, ++ 0x080c, 0x403f, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, + 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e, + 0x6818, 0xa080, 0x000d, 0x04b1, 0x1d90, 0x2d00, 0x681a, 0x0088, +- 0x080c, 0x4026, 0x6833, 0x000d, 0x2070, 0x6827, 0x0001, 0x2d00, ++ 0x080c, 0x403f, 0x6833, 0x000d, 0x2070, 0x6827, 0x0001, 0x2d00, + 0x681a, 0x2001, 0x0076, 0x2004, 0x2072, 0x2001, 0x0077, 0x2004, + 0x7006, 0x2061, 0x0020, 0x2079, 0x0100, 0x2001, 0xc906, 0x2004, + 0x6012, 0x20e1, 0x9040, 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8, +@@ -1375,14 +1376,14 @@ unsigned short risc_code01[] = { + 0x7003, 0x0026, 0x7432, 0x7336, 0xa006, 0x703a, 0x703e, 0x810b, + 0x810b, 0x21a8, 0x810b, 0x7122, 0x7003, 0x0041, 0x7004, 0xd0fc, + 0x0de8, 0x7003, 0x0002, 0x7003, 0x0040, 0x53a5, 0x7430, 0x7334, +- 0x87ff, 0x0180, 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x4026, ++ 0x87ff, 0x0180, 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x403f, + 0x00ce, 0x6018, 0x2070, 0x2d00, 0x7006, 0x601a, 0x00de, 0x00ce, + 0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, 0x2001, 0x0075, 0x2004, + 0xa005, 0x0508, 0x2038, 0x2001, 0x0078, 0x2024, 0x2001, 0x0079, +- 0x201c, 0x080c, 0x4026, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00, ++ 0x201c, 0x080c, 0x403f, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00, + 0x681a, 0xa78a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, + 0x2708, 0xa03e, 0x6818, 0xa080, 0x000d, 0x080c, 0x3912, 0x1d88, +- 0x2d00, 0x681a, 0x00e0, 0x080c, 0x4026, 0x2d60, 0x6033, 0x000d, ++ 0x2d00, 0x681a, 0x00e0, 0x080c, 0x403f, 0x2d60, 0x6033, 0x000d, + 0x2070, 0x6027, 0x0001, 0x2c00, 0x601a, 0x2001, 0x0078, 0x2004, + 0x2072, 0x2001, 0x0079, 0x2004, 0x7006, 0x2001, 0x0072, 0x2004, + 0xa084, 0xfff8, 0x700a, 0x2001, 0x0073, 0x2004, 0x700e, 0x2001, +@@ -1391,9 +1392,9 @@ unsigned short risc_code01[] = { + 0x0003, 0x2001, 0x0030, 0x2003, 0x0009, 0x00ee, 0x0005, 0x0804, + 0x3154, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xc640, + 0x20a0, 0xa006, 0x40a4, 0x012e, 0x0804, 0x3154, 0x7d38, 0x7c3c, +- 0x0804, 0x31fb, 0x080c, 0x4026, 0x0904, 0x3179, 0x080c, 0x5f22, +- 0x0110, 0x080c, 0x4f2c, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, +- 0x7d38, 0x080c, 0x4067, 0x701b, 0x39c6, 0x0005, 0xade8, 0x000d, ++ 0x0804, 0x31fb, 0x080c, 0x403f, 0x0904, 0x3179, 0x080c, 0x5f3b, ++ 0x0110, 0x080c, 0x4f45, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, ++ 0x7d38, 0x080c, 0x4080, 0x701b, 0x39c6, 0x0005, 0xade8, 0x000d, + 0x6800, 0xa005, 0x0904, 0x317c, 0x6804, 0xd0ac, 0x0118, 0xd0a4, + 0x0904, 0x317c, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138, + 0x6200, 0xa292, 0x0005, 0x0218, 0xa18c, 0xffdf, 0x0010, 0xa18d, +@@ -1407,9 +1408,9 @@ unsigned short risc_code01[] = { + 0x680c, 0xa005, 0x0904, 0x317c, 0x6810, 0xa005, 0x0904, 0x317c, + 0x6848, 0x6940, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c, + 0x684c, 0x6944, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c, +- 0x6804, 0xd0fc, 0x0560, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009, ++ 0x6804, 0xd0fc, 0x0560, 0x080c, 0x403f, 0x0904, 0x3179, 0x2009, + 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290, 0x0038, 0xa399, +- 0x0000, 0x080c, 0x4067, 0x701b, 0x3a46, 0x0005, 0xade8, 0x000d, ++ 0x0000, 0x080c, 0x4080, 0x701b, 0x3a46, 0x0005, 0xade8, 0x000d, + 0x20a9, 0x0014, 0x2d98, 0x2069, 0xc66e, 0x2da0, 0x53a3, 0x7010, + 0xa0e8, 0x000d, 0x2001, 0xc672, 0x200c, 0xd1e4, 0x0140, 0x00c6, + 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00, 0x6006, 0x00ce, 0x2009, +@@ -1417,7 +1418,7 @@ unsigned short risc_code01[] = { + 0x7824, 0x200a, 0x2009, 0x017f, 0x200a, 0x3200, 0xa084, 0x003f, + 0xa085, 0x3020, 0x2090, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xc652, + 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084, +- 0x00ff, 0x6046, 0x080c, 0x61f8, 0x080c, 0x576e, 0x080c, 0x57d7, ++ 0x00ff, 0x6046, 0x080c, 0x6211, 0x080c, 0x5787, 0x080c, 0x57f0, + 0x6000, 0xa086, 0x0000, 0x1904, 0x3b41, 0x6808, 0x602a, 0x080c, + 0x25bb, 0x0006, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x000e, + 0x0268, 0x2009, 0x0170, 0x200b, 0x0080, 0xe000, 0xe000, 0x200b, +@@ -1426,2759 +1427,2763 @@ unsigned short risc_code01[] = { + 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38, + 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0xa084, 0xf0ff, + 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f, +- 0x20a9, 0x0004, 0x20a1, 0xc90d, 0x40a1, 0x080c, 0x707c, 0x6904, ++ 0x20a9, 0x0004, 0x20a1, 0xc90d, 0x40a1, 0x080c, 0x7095, 0x6904, + 0xd1fc, 0x0520, 0x00c6, 0x2009, 0x0000, 0x20a9, 0x0001, 0x6b70, + 0xd384, 0x01c8, 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c, +- 0x67ed, 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, ++ 0x6806, 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, + 0x600a, 0xa184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003, + 0x0010, 0x6003, 0x0001, 0x1f04, 0x3adb, 0x00ce, 0x2069, 0xc652, + 0x2001, 0xc8e5, 0x6a80, 0xa294, 0x0030, 0xa28e, 0x0000, 0x0170, + 0xa28e, 0x0010, 0x0118, 0xa28e, 0x0020, 0x0140, 0x2003, 0xaaaa, + 0x080c, 0x2a95, 0x2001, 0xc8d6, 0x2102, 0x0008, 0x2102, 0x00c6, + 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, +- 0x5f22, 0x0128, 0x080c, 0x440b, 0x0110, 0x080c, 0x2a11, 0x60c8, ++ 0x5f3b, 0x0128, 0x080c, 0x4424, 0x0110, 0x080c, 0x2a11, 0x60c8, + 0xa005, 0x01d0, 0x6003, 0x0001, 0x2009, 0x3b27, 0x00e0, 0x080c, +- 0x5f22, 0x1178, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, +- 0x080c, 0x7070, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x080c, 0x5e5a, +- 0x0040, 0x080c, 0x4e5b, 0x0028, 0x6003, 0x0004, 0x2009, 0x3b41, ++ 0x5f3b, 0x1178, 0x2011, 0x5e0e, 0x080c, 0x6fc6, 0x2011, 0x5e01, ++ 0x080c, 0x7089, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x080c, 0x5e73, ++ 0x0040, 0x080c, 0x4e74, 0x0028, 0x6003, 0x0004, 0x2009, 0x3b41, + 0x0010, 0x0804, 0x3154, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, + 0x0258, 0x2001, 0x0170, 0x2004, 0xa084, 0x00ff, 0xa086, 0x004c, + 0x1118, 0x2091, 0x309d, 0x0817, 0x2091, 0x301d, 0x0817, 0x6000, + 0xa086, 0x0000, 0x0904, 0x3179, 0x2069, 0xc652, 0x7830, 0x6842, + 0x7834, 0x6846, 0x6804, 0xd0fc, 0x0118, 0x2009, 0x0030, 0x0010, + 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, +- 0x406a, 0xa006, 0x080c, 0x2a11, 0x81ff, 0x1904, 0x3179, 0x080c, +- 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, +- 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a, +- 0x0020, 0x080c, 0x4f2c, 0x080c, 0x4e5b, 0x0804, 0x3154, 0x81ff, +- 0x1904, 0x3179, 0x080c, 0x5f22, 0x1110, 0x0804, 0x3179, 0x6188, ++ 0x4083, 0xa006, 0x080c, 0x2a11, 0x81ff, 0x1904, 0x3179, 0x080c, ++ 0x5f3b, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, ++ 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f7f, 0x080c, 0x5e73, ++ 0x0020, 0x080c, 0x4f45, 0x080c, 0x4e74, 0x0804, 0x3154, 0x81ff, ++ 0x1904, 0x3179, 0x080c, 0x5f3b, 0x1110, 0x0804, 0x3179, 0x6188, + 0x81ff, 0x0198, 0x703f, 0x0000, 0x2001, 0xcdc0, 0x2009, 0x0040, + 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x406a, 0x701b, 0x3152, 0x012e, 0x0005, 0x703f, 0x0001, 0x00d6, ++ 0x4083, 0x701b, 0x3152, 0x012e, 0x0005, 0x703f, 0x0001, 0x00d6, + 0x2069, 0xcdc0, 0x20a9, 0x0040, 0x20a1, 0xcdc0, 0x2019, 0xffff, + 0x43a4, 0x6550, 0xa588, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x216a, +- 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x533d, ++ 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x5356, + 0x1190, 0x6014, 0x821c, 0x0238, 0xa398, 0xcdc0, 0xa085, 0xff00, + 0x8007, 0x201a, 0x0038, 0xa398, 0xcdc0, 0x2324, 0xa4a4, 0xff00, + 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x1208, 0x0c18, + 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x00de, 0x20a9, 0x0040, +- 0x20a1, 0xcdc0, 0x2099, 0xcdc0, 0x080c, 0x4ecb, 0x0804, 0x3b9c, +- 0x080c, 0x404b, 0x0904, 0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce, ++ 0x20a1, 0xcdc0, 0x2099, 0xcdc0, 0x080c, 0x4ee4, 0x0804, 0x3b9c, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x00c6, 0x080c, 0x403f, 0x00ce, + 0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x2001, 0xc653, 0x2004, + 0xd0b4, 0x0550, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0520, + 0xa08e, 0x7f00, 0x0508, 0xa08e, 0x8000, 0x01f0, 0x6000, 0xd08c, + 0x11d8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x11a8, 0x6837, +- 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae0a, 0x1120, 0x2009, ++ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae2a, 0x1120, 0x2009, + 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3c28, 0x0005, +- 0x080c, 0x404b, 0x0904, 0x317c, 0x20a9, 0x002b, 0x2c98, 0xade8, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x20a9, 0x002b, 0x2c98, 0xade8, + 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098, +- 0xad80, 0x0006, 0x20a0, 0x080c, 0x4ecb, 0x20a9, 0x0004, 0xac80, +- 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x080c, 0x4ecb, 0x2d00, +- 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a, +- 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c, +- 0x551a, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x7828, 0xa08a, +- 0x1000, 0x1a04, 0x317c, 0x080c, 0x404b, 0x0904, 0x317c, 0x080c, +- 0x557d, 0x0904, 0x3179, 0x2019, 0x0004, 0xa00e, 0x080c, 0x552c, ++ 0xad80, 0x0006, 0x20a0, 0x080c, 0x4ee4, 0x20a9, 0x0004, 0xac80, ++ 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x080c, 0x4ee4, 0x2d00, ++ 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x4083, ++ 0x81ff, 0x1904, 0x3179, 0x080c, 0x4054, 0x0904, 0x317c, 0x080c, ++ 0x5533, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x7828, 0xa08a, ++ 0x1000, 0x1a04, 0x317c, 0x080c, 0x4064, 0x0904, 0x317c, 0x080c, ++ 0x5596, 0x0904, 0x3179, 0x2019, 0x0004, 0xa00e, 0x080c, 0x5545, + 0x7924, 0x810f, 0x7a28, 0x0011, 0x0804, 0x3154, 0xa186, 0x00ff, + 0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0xc600, 0x6450, + 0x2400, 0xa506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, +- 0x080c, 0x533d, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, +- 0x080c, 0x6fb9, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, +- 0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5523, +- 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, +- 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0804, +- 0x3154, 0x6100, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c, ++ 0x080c, 0x5356, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, ++ 0x080c, 0x6fd2, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4054, ++ 0x0904, 0x317c, 0x080c, 0x541c, 0x0904, 0x3179, 0x080c, 0x553c, ++ 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4054, 0x0904, ++ 0x317c, 0x080c, 0x541c, 0x0904, 0x3179, 0x080c, 0x552a, 0x0804, ++ 0x3154, 0x6100, 0x0804, 0x3154, 0x080c, 0x4064, 0x0904, 0x317c, + 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00d6, + 0xace8, 0x000a, 0x7924, 0xd184, 0x0110, 0xace8, 0x0006, 0x680c, + 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00, + 0x8217, 0x00de, 0x6100, 0xa18c, 0x0200, 0x0804, 0x3154, 0x7824, +- 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x1a04, 0x3179, 0x6250, 0xa294, +- 0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, 0x1150, 0x2001, 0xc640, +- 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a, +- 0x81ff, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x6004, +- 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x3179, 0x00c6, 0x080c, +- 0x4026, 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd, +- 0x683a, 0x080c, 0xadb6, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b, +- 0x3d12, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0xad80, +- 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, +- 0x406a, 0xa006, 0x080c, 0x2a11, 0x7824, 0xa084, 0x00ff, 0xa086, +- 0x00ff, 0x0118, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22, 0x0110, +- 0x080c, 0x4f2c, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x317c, 0x7924, +- 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0138, 0xa182, 0x007f, +- 0x1a04, 0x317c, 0x2100, 0x080c, 0x29db, 0x0026, 0x00c6, 0x0126, +- 0x2091, 0x8000, 0x2061, 0xc93a, 0x601b, 0x0000, 0x601f, 0x0000, +- 0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, +- 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, +- 0x5e5a, 0x0420, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, +- 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c, +- 0x8e79, 0x003e, 0x2061, 0x0100, 0x2001, 0xc615, 0x2004, 0xa084, +- 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, +- 0x2009, 0x002d, 0x2011, 0x4e90, 0x080c, 0x7036, 0x7924, 0xa18c, +- 0xff00, 0x810f, 0x080c, 0x5f22, 0x1110, 0x2009, 0x00ff, 0x7a28, +- 0x080c, 0x3c76, 0x012e, 0x00ce, 0x002e, 0x0804, 0x3154, 0x7924, +- 0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x52e1, 0x2c08, 0x00ce, +- 0x1904, 0x317c, 0x0804, 0x3154, 0x81ff, 0x0120, 0x2009, 0x0001, +- 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, +- 0x0005, 0x0804, 0x3179, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002, +- 0x0804, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, +- 0x4067, 0x701b, 0x3dc4, 0x0005, 0x2009, 0x0080, 0x080c, 0x533d, +- 0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2021, +- 0x400a, 0x0804, 0x3156, 0x00d6, 0xade8, 0x000d, 0x6900, 0x6a08, +- 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0904, +- 0x3e3b, 0xa0be, 0x0112, 0x0904, 0x3e3b, 0xa0be, 0x0113, 0x0904, +- 0x3e3b, 0xa0be, 0x0114, 0x0904, 0x3e3b, 0xa0be, 0x0117, 0x0904, +- 0x3e3b, 0xa0be, 0x011a, 0x0904, 0x3e3b, 0xa0be, 0x011c, 0x0904, +- 0x3e3b, 0xa0be, 0x0121, 0x05b0, 0xa0be, 0x0131, 0x0598, 0xa0be, +- 0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, 0xa0be, 0x01a1, 0x1120, +- 0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, 0x0212, 0x0540, 0xa0be, +- 0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, 0xa0be, 0x0217, 0x0168, +- 0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, 0x683a, 0x00e0, 0xa0be, +- 0x0300, 0x01c8, 0x00de, 0x0804, 0x317c, 0xad80, 0x0010, 0x20a9, +- 0x0007, 0x080c, 0x3e81, 0xad80, 0x000e, 0x20a9, 0x0001, 0x080c, +- 0x3e81, 0x0048, 0xad80, 0x000c, 0x080c, 0x3e8f, 0x0050, 0xad80, +- 0x000e, 0x080c, 0x3e8f, 0xad80, 0x000c, 0x20a9, 0x0001, 0x080c, +- 0x3e81, 0x00c6, 0x080c, 0x4026, 0x0568, 0x6838, 0xc0fd, 0x683a, +- 0x6837, 0x0119, 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, +- 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, +- 0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, +- 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0xadd2, +- 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, +- 0x3e78, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, 0x3179, +- 0x6820, 0xa086, 0x8001, 0x1904, 0x3154, 0x2009, 0x0004, 0x0804, +- 0x3179, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, +- 0x8108, 0x280a, 0x8108, 0x1f04, 0x3e83, 0x001e, 0x0005, 0x0016, +- 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, +- 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, +- 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, +- 0x0001, 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, +- 0x2009, 0x0005, 0x0804, 0x3179, 0x7924, 0x2140, 0xa18c, 0xff00, +- 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c, +- 0xa182, 0x00ff, 0x1a04, 0x317c, 0x7a2c, 0x7b28, 0x6070, 0xa306, +- 0x1140, 0x6074, 0xa24e, 0x0904, 0x317c, 0xa9cc, 0xff00, 0x0904, +- 0x317c, 0x00c6, 0x080c, 0x3f6e, 0x2c68, 0x00ce, 0x0538, 0xa0c6, +- 0x4000, 0x1180, 0x00c6, 0x0006, 0x2d60, 0x2009, 0x0000, 0x080c, +- 0x55de, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e, +- 0x00ce, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, +- 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, +- 0x0010, 0x2001, 0x4006, 0x2020, 0x0804, 0x3156, 0x2d00, 0x7022, +- 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x9586, 0x05d8, +- 0x2d00, 0x601a, 0x080c, 0xb057, 0x2e58, 0x00ee, 0x00e6, 0x00c6, +- 0x080c, 0x4026, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x95dc, 0x00ee, ++ 0xa09c, 0x0003, 0xd0b4, 0x1160, 0xa39a, 0x0003, 0x1a04, 0x3179, ++ 0x6250, 0xa294, 0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, 0x1150, ++ 0x2001, 0xc640, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, ++ 0x0804, 0x4083, 0x81ff, 0x1904, 0x3179, 0x080c, 0x4064, 0x0904, ++ 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x3179, ++ 0x00c6, 0x080c, 0x403f, 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, ++ 0x6838, 0xc0fd, 0x683a, 0x080c, 0xadd6, 0x0904, 0x3179, 0x7007, ++ 0x0003, 0x701b, 0x3d14, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, ++ 0x3179, 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, ++ 0x7d38, 0x0804, 0x4083, 0xa006, 0x080c, 0x2a11, 0x7824, 0xa084, ++ 0x00ff, 0xa086, 0x00ff, 0x0118, 0x81ff, 0x1904, 0x3179, 0x080c, ++ 0x5f3b, 0x0110, 0x080c, 0x4f45, 0x7828, 0xa08a, 0x1000, 0x1a04, ++ 0x317c, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0138, ++ 0xa182, 0x007f, 0x1a04, 0x317c, 0x2100, 0x080c, 0x29db, 0x0026, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061, 0xc93a, 0x601b, 0x0000, ++ 0x601f, 0x0000, 0x080c, 0x5f3b, 0x1178, 0x2001, 0xc8e6, 0x2003, ++ 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, ++ 0x5f7f, 0x080c, 0x5e73, 0x0420, 0x2011, 0x0003, 0x080c, 0x8f27, ++ 0x2011, 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, 0x0036, 0x2019, ++ 0x0000, 0x080c, 0x8e92, 0x003e, 0x2061, 0x0100, 0x2001, 0xc615, ++ 0x2004, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, ++ 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4ea9, 0x080c, 0x704f, ++ 0x7924, 0xa18c, 0xff00, 0x810f, 0x080c, 0x5f3b, 0x1110, 0x2009, ++ 0x00ff, 0x7a28, 0x080c, 0x3c76, 0x012e, 0x00ce, 0x002e, 0x0804, ++ 0x3154, 0x7924, 0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x52fa, ++ 0x2c08, 0x00ce, 0x1904, 0x317c, 0x0804, 0x3154, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, ++ 0x1120, 0x2009, 0x0005, 0x0804, 0x3179, 0x080c, 0x403f, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, ++ 0x7d38, 0x080c, 0x4080, 0x701b, 0x3dc6, 0x0005, 0x2009, 0x0080, ++ 0x080c, 0x5356, 0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x0120, 0x2021, 0x400a, 0x0804, 0x3156, 0x00d6, 0xade8, 0x000d, ++ 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, ++ 0x0100, 0x0904, 0x3e3d, 0xa0be, 0x0112, 0x0904, 0x3e3d, 0xa0be, ++ 0x0113, 0x0904, 0x3e3d, 0xa0be, 0x0114, 0x0904, 0x3e3d, 0xa0be, ++ 0x0117, 0x0904, 0x3e3d, 0xa0be, 0x011a, 0x0904, 0x3e3d, 0xa0be, ++ 0x011c, 0x0904, 0x3e3d, 0xa0be, 0x0121, 0x05b0, 0xa0be, 0x0131, ++ 0x0598, 0xa0be, 0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, 0xa0be, ++ 0x01a1, 0x1120, 0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, 0x0212, ++ 0x0540, 0xa0be, 0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, 0xa0be, ++ 0x0217, 0x0168, 0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, 0x683a, ++ 0x00e0, 0xa0be, 0x0300, 0x01c8, 0x00de, 0x0804, 0x317c, 0xad80, ++ 0x0010, 0x20a9, 0x0007, 0x080c, 0x3e83, 0xad80, 0x000e, 0x20a9, ++ 0x0001, 0x080c, 0x3e83, 0x0048, 0xad80, 0x000c, 0x080c, 0x3e91, ++ 0x0050, 0xad80, 0x000e, 0x080c, 0x3e91, 0xad80, 0x000c, 0x20a9, ++ 0x0001, 0x080c, 0x3e83, 0x00c6, 0x080c, 0x403f, 0x0568, 0x6838, ++ 0xc0fd, 0x683a, 0x6837, 0x0119, 0x6853, 0x0000, 0x684f, 0x0020, ++ 0x685b, 0x0001, 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, ++ 0x6c8e, 0x6d92, 0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, 0x6837, ++ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, ++ 0x080c, 0xadf2, 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, ++ 0x0003, 0x701b, 0x3e7a, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, ++ 0x0804, 0x3179, 0x6820, 0xa086, 0x8001, 0x1904, 0x3154, 0x2009, ++ 0x0004, 0x0804, 0x3179, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, ++ 0x8000, 0x290a, 0x8108, 0x280a, 0x8108, 0x1f04, 0x3e85, 0x001e, ++ 0x0005, 0x0016, 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, ++ 0x8000, 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, ++ 0x290a, 0x8108, 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, ++ 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x3179, 0x7924, 0x2140, ++ 0xa18c, 0xff00, 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, ++ 0x0a04, 0x317c, 0xa182, 0x00ff, 0x1a04, 0x317c, 0x7a2c, 0x7b28, ++ 0x6070, 0xa306, 0x1140, 0x6074, 0xa24e, 0x0904, 0x317c, 0xa9cc, ++ 0xff00, 0x0904, 0x317c, 0x00c6, 0x080c, 0x3f89, 0x2c68, 0x00ce, ++ 0x05a0, 0x0086, 0xa0c6, 0x4000, 0x008e, 0x11c8, 0x00c6, 0x0006, ++ 0x2d60, 0xd88c, 0x1140, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x0110, 0xc89d, 0x0400, 0xa00e, 0x080c, 0x55f7, 0x1108, 0xc185, ++ 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x00ce, 0x0088, 0xa0c6, ++ 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, 0x2708, ++ 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, 0x4006, ++ 0x2020, 0x0804, 0x3156, 0x000e, 0x00ce, 0x2d00, 0x7022, 0x0016, ++ 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x95a6, 0x0904, 0x3f5e, ++ 0x2d00, 0x601a, 0x080c, 0xb077, 0x2e58, 0x00ee, 0x00e6, 0x00c6, ++ 0x080c, 0x403f, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x95fc, 0x00ee, + 0x00ce, 0x00be, 0x001e, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837, + 0x0000, 0x683b, 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838, +- 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000, +- 0x080c, 0x2e46, 0x012e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, +- 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009, 0x0002, 0x080c, +- 0x960c, 0xa085, 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, +- 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3f51, +- 0x0005, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060, 0x1138, 0x2009, +- 0x0004, 0x6204, 0xa294, 0x00ff, 0x0804, 0x3179, 0x2009, 0x0000, +- 0x6838, 0xd0f4, 0x1904, 0x3154, 0x080c, 0x55de, 0x1108, 0xc185, +- 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3154, 0x00e6, 0x00d6, +- 0x2029, 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0138, 0x2021, +- 0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b, 0x0030, 0x2021, 0x0080, +- 0x20a9, 0x007f, 0x2071, 0xc7fb, 0x2e04, 0xa005, 0x1130, 0x2100, +- 0xa406, 0x15a0, 0x2428, 0xc5fd, 0x0488, 0x2068, 0x6f10, 0x2700, +- 0xa306, 0x11e0, 0x6e14, 0x2600, 0xa206, 0x11c0, 0x2400, 0xa106, +- 0x1190, 0x2d60, 0xd884, 0x0598, 0x080c, 0x56ed, 0x1580, 0x2001, +- 0x4000, 0x0470, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538, +- 0x2001, 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0xa106, +- 0x1168, 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09a0, 0x2001, 0xc635, +- 0x2004, 0xd0ac, 0x1978, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, +- 0x1f04, 0x3f84, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, +- 0x0001, 0x0030, 0x080c, 0x52e1, 0x1dd0, 0x6312, 0x6216, 0xa006, +- 0xa005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c, +- 0x4026, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x7824, 0xa005, 0x0904, 0x317c, 0xa096, 0x00ff, 0x0120, 0xa092, +- 0x0004, 0x1a04, 0x317c, 0x2010, 0x2d18, 0x080c, 0x2df9, 0x0904, +- 0x3179, 0x7007, 0x0003, 0x701b, 0x3ff6, 0x0005, 0x6830, 0xa086, +- 0x0100, 0x0904, 0x3179, 0x0804, 0x3154, 0x7924, 0xa18c, 0xff00, +- 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c, +- 0xa182, 0x00ff, 0x1a04, 0x317c, 0x0126, 0x2091, 0x8000, 0x080c, +- 0xacba, 0x1188, 0xa190, 0xc77b, 0x2204, 0xa065, 0x0160, 0x080c, +- 0x4f47, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000, +- 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x080c, 0x1602, +- 0x0188, 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012, +- 0x7016, 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, +- 0xad80, 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, +- 0x533d, 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208, +- 0xa066, 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c, +- 0x533d, 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066, +- 0x8cff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904, +- 0x080c, 0x1619, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, 0x2031, +- 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0xc6f2, 0x6606, 0x6112, +- 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d, +- 0x7007, 0x0002, 0x701b, 0x3154, 0x0005, 0x00f6, 0x0126, 0x2091, +- 0x8000, 0x2079, 0x0000, 0x2001, 0xc6b0, 0x2004, 0xa005, 0x1168, +- 0x0e04, 0x4095, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a, +- 0x781b, 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6, +- 0x2071, 0xc6a2, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, 0x2060, +- 0x0078, 0x7030, 0xa0e0, 0x0004, 0xac82, 0xc6f2, 0x0210, 0x2061, +- 0xc6b2, 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a, +- 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, +- 0x0005, 0x00e6, 0x2071, 0xc6a2, 0x7038, 0xa005, 0x0570, 0x0126, +- 0x2091, 0x8000, 0x0e04, 0x40ec, 0x00f6, 0x2079, 0x0000, 0x7818, +- 0xd084, 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, +- 0x7826, 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, +- 0x8001, 0x703a, 0xa005, 0x1130, 0x7033, 0xc6b2, 0x7037, 0xc6b2, +- 0x00ce, 0x0048, 0xac80, 0x0004, 0xa0fa, 0xc6f2, 0x0210, 0x2001, +- 0xc6b2, 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026, +- 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, +- 0x407d, 0x002e, 0x0005, 0x81ff, 0x1904, 0x3179, 0x0126, 0x2091, +- 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5f22, +- 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, +- 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0010, +- 0x080c, 0x4e5b, 0x012e, 0x0804, 0x3154, 0x7824, 0x2008, 0xa18c, +- 0xfffd, 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x3154, 0x0804, +- 0x317c, 0x81ff, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003, 0x1904, +- 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1904, 0x3179, 0x080c, +- 0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, +- 0x1120, 0x7828, 0xa005, 0x0904, 0x3154, 0x00c6, 0x080c, 0x4026, +- 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, +- 0xc0fd, 0x683a, 0x080c, 0xae9b, 0x0904, 0x3179, 0x7007, 0x0003, +- 0x701b, 0x415b, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, +- 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, +- 0x3179, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4026, +- 0x0904, 0x3179, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, +- 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, 0x533d, +- 0x1904, 0x41e1, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0148, +- 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x0120, 0x080c, 0x56ed, 0x1904, +- 0x41e1, 0xd794, 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, 0x2098, +- 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3e8f, 0xd794, 0x0148, +- 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, +- 0x3e8f, 0xa186, 0x007e, 0x0178, 0xa186, 0x0080, 0x0160, 0x6004, +- 0xa084, 0x00ff, 0xa0c2, 0x0006, 0x1210, 0xc1fd, 0x0020, 0x080c, +- 0x55de, 0x1108, 0xc1fd, 0x21a2, 0xc1fc, 0xd794, 0x01d8, 0xac80, +- 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, 0xac80, 0x0003, +- 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002, +- 0x53a3, 0x080c, 0x3e81, 0xac80, 0x0026, 0x2098, 0x20a9, 0x0002, +- 0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, 0xa6b0, 0x000b, 0xa6b0, +- 0x0005, 0x8108, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0118, 0xa186, +- 0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, 0x0100, 0x0170, 0x0018, +- 0xa186, 0x007e, 0x0150, 0xd794, 0x0118, 0xa686, 0x0020, 0x0010, +- 0xa686, 0x0028, 0x0150, 0x0804, 0x417e, 0x86ff, 0x1120, 0x7120, +- 0x810b, 0x0804, 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600, +- 0x7022, 0x772a, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6612, 0x7024, +- 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d, +- 0x7007, 0x0002, 0x701b, 0x421d, 0x0005, 0x702c, 0xa005, 0x1170, +- 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0xc6f2, +- 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x417e, 0x7120, 0x810b, +- 0x0804, 0x3154, 0x2029, 0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38, +- 0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, +- 0x0a04, 0x317c, 0xa184, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c, +- 0xa502, 0x0a04, 0x317c, 0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020, +- 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa284, 0x00ff, 0xa0e2, +- 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa384, 0xff00, +- 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, +- 0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, +- 0x317c, 0xa484, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, +- 0xa502, 0x0a04, 0x317c, 0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0a04, +- 0x317c, 0xa502, 0x0a04, 0x317c, 0x2061, 0xc900, 0x6102, 0x6206, +- 0x630a, 0x640e, 0x0804, 0x3154, 0x080c, 0x4026, 0x0904, 0x3179, +- 0x2009, 0x0020, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067, +- 0x701b, 0x429b, 0x0005, 0x0126, 0xade8, 0x000d, 0x2001, 0x0138, +- 0x2003, 0x0000, 0x00e6, 0x2071, 0xc96a, 0x700c, 0x7110, 0xa106, +- 0x1de0, 0x00ee, 0x2091, 0x8000, 0x6800, 0xa005, 0x0904, 0x432f, +- 0x6804, 0x2008, 0xa18c, 0xffe0, 0x1904, 0x432f, 0x680c, 0xa005, +- 0x0904, 0x432f, 0xa082, 0xff01, 0x1a04, 0x432f, 0x6810, 0xa082, +- 0x005c, 0x0a04, 0x432f, 0x6824, 0x2008, 0xa082, 0x0008, 0x0a04, +- 0x432f, 0xa182, 0x0400, 0x1a04, 0x432f, 0x080c, 0x7394, 0x6820, +- 0x8000, 0x6822, 0x6944, 0x6820, 0xa102, 0x0a04, 0x432f, 0x6828, +- 0x6944, 0x810c, 0xa102, 0x0a04, 0x432f, 0x6840, 0xa082, 0x000f, +- 0x1a04, 0x432f, 0x00d6, 0x6848, 0xa005, 0x0148, 0x2008, 0x2069, +- 0xc600, 0x68e8, 0xa108, 0x68b0, 0xa102, 0x1208, 0x69ea, 0x00de, +- 0x20a9, 0x0020, 0x2d98, 0x2069, 0xc682, 0x2da0, 0x53a3, 0x00d6, +- 0x080c, 0x15e5, 0x2d00, 0x00de, 0x0904, 0x4346, 0x684e, 0x080c, +- 0x725b, 0x05d8, 0x080c, 0x7158, 0x080c, 0x5695, 0x0580, 0x00c6, +- 0x2061, 0x0100, 0x6104, 0xa18d, 0x8000, 0x6106, 0x610c, 0xa18d, +- 0x0300, 0xa18c, 0xffbf, 0x610e, 0x2001, 0xc8d4, 0x200c, 0xa18d, +- 0x0300, 0xa18c, 0xffbf, 0x2102, 0x6b10, 0x2061, 0xc96a, 0x6316, +- 0x00ce, 0x685f, 0x0000, 0x2001, 0xc696, 0x2003, 0x0000, 0x080c, +- 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x3154, 0x080c, +- 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x317c, 0x080c, +- 0x7475, 0x080c, 0x7484, 0x080c, 0x7147, 0x2001, 0xc695, 0x206c, +- 0x080c, 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc63a, +- 0x2003, 0x0010, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, +- 0x0804, 0x3179, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904, +- 0x3179, 0x080c, 0x768f, 0x1904, 0x3179, 0x2001, 0xc8e5, 0x2004, +- 0xa086, 0xaaaa, 0x0138, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, +- 0x0904, 0x3170, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, +- 0x3179, 0x7924, 0x810c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, +- 0x4026, 0x0904, 0x3179, 0x080c, 0x4067, 0x701b, 0x4380, 0x0005, +- 0x080c, 0x9586, 0x0904, 0x3179, 0x2001, 0xc8d3, 0x2004, 0x601a, +- 0x0016, 0x0026, 0x2001, 0xc61c, 0x2004, 0x8007, 0x6934, 0xa105, +- 0x6836, 0x2001, 0xc61d, 0x2004, 0x8007, 0x683a, 0x002e, 0x001e, +- 0x2d00, 0x6012, 0x601f, 0x0001, 0x2009, 0x0040, 0x080c, 0x960c, +- 0x0804, 0x3154, 0x0804, 0x3179, 0x2001, 0xc756, 0x200c, 0xa18e, +- 0x0000, 0x0904, 0x4402, 0x2001, 0x0101, 0x200c, 0xa18c, 0x7fff, +- 0x2102, 0x2001, 0x0103, 0x200c, 0xa18c, 0xfeff, 0xa18c, 0xfdff, +- 0xa18d, 0x0040, 0x2102, 0x2001, 0xc8d4, 0x200c, 0xa18c, 0xfeff, +- 0xa18c, 0xfdff, 0xa18d, 0x0040, 0x2102, 0x2001, 0x0138, 0x2003, +- 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x24f3, 0x012e, 0x0128, +- 0x20a9, 0x006e, 0x1f04, 0x43d2, 0x0ca0, 0x2001, 0xc756, 0x2003, +- 0x0000, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x0126, 0x2091, +- 0x8000, 0x2001, 0xc695, 0x200c, 0x81ff, 0x0138, 0x2168, 0x080c, +- 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc8d3, 0x200c, +- 0x81ff, 0x0138, 0x2168, 0x080c, 0x1619, 0x2001, 0xc8d3, 0x2003, +- 0x0000, 0x2001, 0xc63a, 0x2003, 0x0010, 0x080c, 0x7475, 0x080c, +- 0x7484, 0x012e, 0x0804, 0x3154, 0x7824, 0x00e6, 0x2071, 0xc682, +- 0x00ee, 0x0804, 0x3154, 0x0006, 0x2001, 0xc653, 0x2004, 0xd0cc, +- 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xd0bc, 0x000e, +- 0x0005, 0x6168, 0x7a24, 0x6300, 0x82ff, 0x1118, 0x7926, 0x0804, +- 0x3154, 0x83ff, 0x1904, 0x317c, 0x2001, 0xfff0, 0xa200, 0x1a04, +- 0x317c, 0x2019, 0xffff, 0x606c, 0xa302, 0xa200, 0x0a04, 0x317c, +- 0x7926, 0x626a, 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, +- 0x0003, 0x1904, 0x3179, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x080c, +- 0x4026, 0x0904, 0x3179, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023, +- 0x0000, 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0, +- 0xc77b, 0x2c64, 0x8cff, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa086, +- 0x0006, 0x0130, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600, 0x1158, +- 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, 0x8007, 0x20a2, +- 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, 0x0120, 0xa386, +- 0x002a, 0x0148, 0x08e0, 0x83ff, 0x1120, 0x7120, 0x810c, 0x0804, +- 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061, +- 0xc6f2, 0x6007, 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a, +- 0x662e, 0x6732, 0x2c10, 0x080c, 0x164d, 0x7007, 0x0002, 0x701b, +- 0x4492, 0x0005, 0x702c, 0xa005, 0x1168, 0x711c, 0x7024, 0x20a0, +- 0x2019, 0x0000, 0x2061, 0xc6f2, 0x6424, 0x6528, 0x662c, 0x6730, +- 0x0804, 0x444f, 0x7120, 0x810c, 0x0804, 0x3154, 0x81ff, 0x1904, +- 0x3179, 0x60d4, 0xd0ac, 0x1118, 0xd09c, 0x0904, 0x3179, 0x080c, +- 0x4026, 0x0904, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, +- 0x080c, 0x4067, 0x701b, 0x44bd, 0x0005, 0x00d6, 0xade8, 0x000d, +- 0x6828, 0xa0be, 0x7000, 0x0148, 0xa0be, 0x7100, 0x0130, 0xa0be, +- 0x7200, 0x0118, 0x00de, 0x0804, 0x317c, 0x6820, 0x6924, 0x080c, +- 0x29c7, 0x1510, 0x080c, 0x52e1, 0x11f8, 0x7122, 0x6612, 0x6516, +- 0x6e18, 0x00c6, 0x080c, 0x4026, 0x01b8, 0x080c, 0x4026, 0x01a0, +- 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823, +- 0x0000, 0x6804, 0x2068, 0x080c, 0xadee, 0x0904, 0x3179, 0x7007, +- 0x0003, 0x701b, 0x44f7, 0x0005, 0x00de, 0x0804, 0x3179, 0x7120, +- 0x080c, 0x2f41, 0x6820, 0xa086, 0x8001, 0x0904, 0x3179, 0x2d00, +- 0x701e, 0x6804, 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098, +- 0x20a0, 0x080c, 0x4ecb, 0x000e, 0xade8, 0x000d, 0x6a08, 0x6b0c, +- 0x6c10, 0x6d14, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6e00, 0x6f28, +- 0xa7c6, 0x7000, 0x1108, 0x0018, 0xa7c6, 0x7100, 0x1140, 0xa6c2, +- 0x0004, 0x0a04, 0x317c, 0x2009, 0x0004, 0x0804, 0x406a, 0xa7c6, +- 0x7200, 0x1904, 0x317c, 0xa6c2, 0x0054, 0x0a04, 0x317c, 0x600e, +- 0x6013, 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, +- 0x164d, 0x7007, 0x0002, 0x701b, 0x453e, 0x0005, 0x701c, 0x2068, +- 0x6804, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x0006, 0x20a9, +- 0x002a, 0x2098, 0x20a0, 0x080c, 0x4ecb, 0x000e, 0x2009, 0x002a, +- 0x2061, 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x406a, +- 0x81ff, 0x1904, 0x3179, 0x792c, 0x2001, 0xc8e7, 0x2102, 0x080c, +- 0x403b, 0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x5535, 0x012e, 0x0804, 0x3154, 0x7824, +- 0xd08c, 0x1118, 0xd084, 0x0904, 0x3bf0, 0x080c, 0x404b, 0x0904, +- 0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x1120, 0x2009, 0x0002, +- 0x0804, 0x3179, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0128, +- 0xa08e, 0x0004, 0x0110, 0xa08e, 0x0005, 0x15b8, 0x7824, 0xd08c, +- 0x0120, 0x6000, 0xc08c, 0x6002, 0x0030, 0x2001, 0xc653, 0x2004, +- 0xd0b4, 0x0904, 0x3c2c, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, +- 0x0904, 0x3c2c, 0xa08e, 0x7f00, 0x0904, 0x3c2c, 0xa08e, 0x8000, +- 0x0904, 0x3c2c, 0x6000, 0xd08c, 0x1904, 0x3c2c, 0x6837, 0x0000, +- 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae0a, 0x1120, 0x2009, 0x0003, +- 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x45bf, 0x0005, 0x080c, +- 0x404b, 0x0904, 0x317c, 0x0804, 0x3c2c, 0x2009, 0xc631, 0x210c, +- 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x2001, 0xc600, +- 0x2004, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, 0x3179, +- 0x2001, 0xc653, 0x2004, 0xd0ac, 0x0120, 0x2009, 0x0008, 0x0804, +- 0x3179, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3c2c, 0x6837, +- 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae9b, +- 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, +- 0x45fa, 0x0005, 0x6830, 0xa086, 0x0100, 0x1120, 0x2009, 0x0004, +- 0x0804, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x0804, 0x458e, +- 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003, +- 0x2009, 0x0007, 0x1904, 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, +- 0x2009, 0x0008, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, +- 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x1904, +- 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x2009, 0x0002, 0x0904, +- 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, +- 0x7928, 0xa194, 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x1128, +- 0xc0ed, 0x6952, 0x792c, 0x6956, 0x0048, 0xa28e, 0x0100, 0x1904, +- 0x317c, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x080c, +- 0xb058, 0x2009, 0x0003, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b, +- 0x465a, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0904, +- 0x3179, 0x0804, 0x3154, 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179, +- 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x3179, 0x080c, +- 0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, +- 0x2009, 0x0009, 0x1904, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce, +- 0x2009, 0x0002, 0x0904, 0x3179, 0xad80, 0x000f, 0x2009, 0x0008, +- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067, 0x701b, 0x4691, +- 0x0005, 0x00d6, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x1140, +- 0x6804, 0xa005, 0x1128, 0x6808, 0xa084, 0xff00, 0x1108, 0x0018, +- 0x00de, 0x1904, 0x317c, 0x00de, 0x6837, 0x0000, 0x6833, 0x0000, +- 0x6838, 0xc0fd, 0x683a, 0x00c6, 0x080c, 0x404b, 0x1118, 0x00ce, +- 0x0804, 0x317c, 0x080c, 0xb0a7, 0x2009, 0x0003, 0x00ce, 0x0904, +- 0x3179, 0x7007, 0x0003, 0x701b, 0x46be, 0x0005, 0x6830, 0xa086, +- 0x0100, 0x2009, 0x0004, 0x0904, 0x3179, 0x0804, 0x3154, 0x81ff, +- 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x6000, 0xa086, 0x0003, +- 0x0120, 0x2009, 0x0007, 0x0804, 0x3179, 0x7e24, 0x860f, 0xa18c, +- 0x00ff, 0xa6b4, 0x00ff, 0x080c, 0x533d, 0x1904, 0x317c, 0xa186, +- 0x007f, 0x0150, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, +- 0x2009, 0x0009, 0x0804, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce, +- 0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837, 0x0000, 0x6838, +- 0xc0fd, 0x683a, 0x2001, 0x0100, 0x8007, 0x680a, 0x080c, 0xae25, +- 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, +- 0x470a, 0x0005, 0x6808, 0x8007, 0xa086, 0x0100, 0x1120, 0x2009, +- 0x0004, 0x0804, 0x3179, 0x68b0, 0x6836, 0x6810, 0x8007, 0xa084, +- 0x00ff, 0x800c, 0x6814, 0x8007, 0xa084, 0x00ff, 0x8004, 0xa080, +- 0x0002, 0xa108, 0xad80, 0x0004, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, +- 0x0804, 0x406a, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002, 0x0804, +- 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff, +- 0x0110, 0x0804, 0x317c, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c, +- 0x7d38, 0x080c, 0x4067, 0x701b, 0x4746, 0x0005, 0x2001, 0xc62a, +- 0x2003, 0x0001, 0xad80, 0x000d, 0x2098, 0x20a9, 0x001a, 0x20a1, +- 0xc90d, 0x53a3, 0x0804, 0x3154, 0x080c, 0x4026, 0x1120, 0x2009, +- 0x0002, 0x0804, 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, +- 0x8217, 0x82ff, 0x0110, 0x0804, 0x317c, 0x2099, 0xc90d, 0x20a0, +- 0x20a9, 0x001a, 0x53a3, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c, +- 0x7d38, 0x0804, 0x406a, 0x7824, 0xa08a, 0x1000, 0x1a04, 0x317c, +- 0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, 0xa108, 0x00c6, +- 0x2061, 0xc93a, 0x6142, 0x00ce, 0x012e, 0x0804, 0x3154, 0x00c6, +- 0x080c, 0x5f22, 0x1188, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, +- 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, +- 0x5e5a, 0x080c, 0x1519, 0x0038, 0x2061, 0xc600, 0x6030, 0xc09d, +- 0x6032, 0x080c, 0x4e5b, 0x00ce, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x00c6, 0x2061, 0xc93a, 0x7924, 0x6152, 0x614e, 0x6057, 0x0000, +- 0x604b, 0x0009, 0x7838, 0x606a, 0x783c, 0x6066, 0x7828, 0x6062, +- 0x782c, 0x605e, 0x2061, 0xc8e8, 0x2001, 0xc94f, 0x600e, 0x6013, +- 0x0001, 0x6017, 0x0002, 0x6007, 0x0000, 0x6037, 0x0000, 0x00ce, +- 0x012e, 0x0804, 0x3154, 0x0126, 0x00c6, 0x00e6, 0x2061, 0x0100, +- 0x2071, 0xc600, 0x6044, 0xd0a4, 0x11b0, 0xd084, 0x0118, 0x080c, +- 0x4942, 0x0068, 0xd08c, 0x0118, 0x080c, 0x4863, 0x0040, 0xd094, +- 0x0118, 0x080c, 0x4834, 0x0018, 0xd09c, 0x0108, 0x0061, 0x00ee, +- 0x00ce, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, +- 0x612a, 0x001e, 0x0ca0, 0x624c, 0xa286, 0xf0f0, 0x1150, 0x6048, +- 0xa086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, +- 0x0490, 0xa294, 0xff00, 0xa296, 0xf700, 0x0178, 0x7134, 0xd1a4, +- 0x1160, 0x6240, 0xa295, 0x0100, 0x6242, 0xa294, 0x0010, 0x0128, +- 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x00f0, 0x6040, 0xa084, 0x0010, +- 0xa085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707b, 0x0000, 0x7097, +- 0x0001, 0x70bb, 0x0000, 0x70d7, 0x0000, 0x2009, 0xcdc0, 0x200b, +- 0x0000, 0x708b, 0x0000, 0x707f, 0x000a, 0x2009, 0x000a, 0x2011, +- 0x4e11, 0x080c, 0x7036, 0x0005, 0x0156, 0x2001, 0xc674, 0x2004, +- 0xd08c, 0x0110, 0x7053, 0xffff, 0x707c, 0xa005, 0x1510, 0x2011, +- 0x4e11, 0x080c, 0x6fad, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, +- 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x484b, +- 0x6242, 0x708f, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, +- 0x6042, 0x6242, 0x0030, 0x6242, 0x708f, 0x0000, 0x7083, 0x0000, +- 0x0000, 0x015e, 0x0005, 0x7080, 0xa08a, 0x0003, 0x1210, 0x0023, +- 0x0010, 0x080c, 0x1519, 0x0005, 0x486f, 0x48bf, 0x4941, 0x00f6, +- 0x7083, 0x0001, 0x20e1, 0xa000, 0xe000, 0x20e1, 0x8700, 0x080c, +- 0x25bb, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0xcc00, 0x207b, +- 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813, +- 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823, +- 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079, +- 0xcc0c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0xc605, 0x20a1, +- 0xcc0e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0xcc12, 0x207b, 0x0000, +- 0x7807, 0x0000, 0x2099, 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x0014, +- 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x4e42, 0x00fe, +- 0x7087, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x0005, 0x00d6, +- 0x7084, 0x7087, 0x0000, 0xa025, 0x0904, 0x4929, 0x6020, 0xd0b4, +- 0x1904, 0x4927, 0x7194, 0x81ff, 0x0904, 0x4917, 0xa486, 0x000c, +- 0x1904, 0x4922, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0xcc80, +- 0x2019, 0xcc00, 0x220c, 0x2304, 0xa106, 0x11b8, 0x8210, 0x8318, +- 0x1f04, 0x48da, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0, +- 0x6043, 0x0006, 0x7083, 0x0002, 0x708f, 0x0002, 0x2009, 0x07d0, +- 0x2011, 0x4e18, 0x080c, 0x7036, 0x0490, 0x2069, 0xcc80, 0x6930, +- 0xa18e, 0x1101, 0x1538, 0x6834, 0xa005, 0x1520, 0x6900, 0xa18c, +- 0x00ff, 0x1118, 0x6804, 0xa005, 0x0190, 0x2011, 0xcc8e, 0x2019, +- 0xc605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0230, 0x1190, +- 0x8210, 0x8318, 0x1f04, 0x490b, 0x0068, 0x7097, 0x0000, 0x20e1, +- 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, +- 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00de, +- 0x0005, 0x6040, 0xa085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, +- 0x60c3, 0x000c, 0x2011, 0xc931, 0x2013, 0x0000, 0x7087, 0x0000, +- 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x8bec, +- 0x0c30, 0x0005, 0x708c, 0xa08a, 0x001d, 0x1210, 0x0023, 0x0010, +- 0x080c, 0x1519, 0x0005, 0x4975, 0x4984, 0x49ac, 0x49c5, 0x49e9, +- 0x4a11, 0x4a35, 0x4a66, 0x4a8a, 0x4ab2, 0x4ae9, 0x4b11, 0x4b2d, +- 0x4b43, 0x4b63, 0x4b76, 0x4b7e, 0x4bae, 0x4bd2, 0x4bfa, 0x4c1e, +- 0x4c4f, 0x4c8c, 0x4cbb, 0x4cd7, 0x4d16, 0x4d36, 0x4d4f, 0x4d50, +- 0x00c6, 0x2061, 0xc600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, +- 0xa084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x608b, 0xbc94, 0x608f, +- 0xf0f0, 0x6043, 0x0002, 0x708f, 0x0001, 0x2009, 0x07d0, 0x2011, +- 0x4e18, 0x080c, 0x7036, 0x0005, 0x00f6, 0x7084, 0xa086, 0x0014, +- 0x1508, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x11e0, 0x2079, 0xcc80, +- 0x7a30, 0xa296, 0x1102, 0x11a0, 0x7834, 0xa005, 0x1188, 0x7a38, +- 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x2011, +- 0x4e18, 0x080c, 0x6fad, 0x708f, 0x0010, 0x080c, 0x4b7e, 0x0010, +- 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0003, 0x6043, 0x0004, +- 0x2011, 0x4e18, 0x080c, 0x6fad, 0x080c, 0x4ed3, 0x20a3, 0x1102, +- 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x49bc, +- 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, +- 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8, +- 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1102, 0x1178, 0x7834, 0xa005, +- 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, +- 0x0001, 0x708f, 0x0004, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, +- 0x0005, 0x708f, 0x0005, 0x080c, 0x4ed3, 0x20a3, 0x1103, 0x20a3, +- 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160, 0x7078, +- 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4ddc, +- 0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, +- 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, +- 0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, +- 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, +- 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0006, 0x0029, +- 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0007, 0x080c, +- 0x4ed3, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, +- 0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186, +- 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00, 0x810f, +- 0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c, 0x2a11, +- 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, +- 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014, +- 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834, +- 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, +- 0x70bb, 0x0001, 0x708f, 0x0008, 0x0029, 0x0010, 0x080c, 0x4e5b, +- 0x00fe, 0x0005, 0x708f, 0x0009, 0x080c, 0x4ed3, 0x20a3, 0x1105, +- 0x20a3, 0x0100, 0x3430, 0x080c, 0x4f24, 0x1150, 0x7078, 0xa005, +- 0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c, 0x2a11, +- 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010, 0x080c, +- 0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x0588, 0x2011, 0x4e18, +- 0x080c, 0x6fad, 0xa086, 0x0014, 0x1540, 0x2079, 0xcc80, 0x7a30, +- 0xa296, 0x1105, 0x1510, 0x7834, 0x2011, 0x0100, 0xa21e, 0x1160, ++ 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0xd89c, 0x1130, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x2e46, 0x012e, 0x601f, 0x0001, 0x2001, ++ 0x0000, 0x080c, 0x5298, 0xd89c, 0x0138, 0x2001, 0x0004, 0x080c, ++ 0x52aa, 0x2009, 0x0003, 0x0030, 0x2001, 0x0002, 0x080c, 0x52aa, ++ 0x2009, 0x0002, 0x080c, 0x962c, 0xa085, 0x0001, 0x00ee, 0x00ce, ++ 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, ++ 0x0003, 0x701b, 0x3f6c, 0x0005, 0x6830, 0xa086, 0x0100, 0x7020, ++ 0x2060, 0x1138, 0x2009, 0x0004, 0x6204, 0xa294, 0x00ff, 0x0804, ++ 0x3179, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1904, 0x3154, 0x080c, ++ 0x55f7, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x0804, ++ 0x3154, 0x00e6, 0x00d6, 0xa02e, 0x2001, 0xc635, 0x2004, 0xd0ac, ++ 0x0130, 0xa026, 0x20a9, 0x00ff, 0x2071, 0xc77b, 0x0030, 0x2021, ++ 0x0080, 0x20a9, 0x007f, 0x2071, 0xc7fb, 0x2e04, 0xa005, 0x1130, ++ 0x2100, 0xa406, 0x15a0, 0x2428, 0xc5fd, 0x0488, 0x2068, 0x6f10, ++ 0x2700, 0xa306, 0x11e0, 0x6e14, 0x2600, 0xa206, 0x11c0, 0x2400, ++ 0xa106, 0x1190, 0x2d60, 0xd884, 0x0598, 0x080c, 0x5706, 0x1580, ++ 0x2001, 0x4000, 0x0470, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x1538, 0x2001, 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, ++ 0xa106, 0x1168, 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09a0, 0x2001, ++ 0xc635, 0x2004, 0xd0ac, 0x1978, 0x2001, 0x4008, 0x0090, 0x8420, ++ 0x8e70, 0x1f04, 0x3f9d, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, ++ 0x2001, 0x0001, 0x0030, 0x080c, 0x52fa, 0x1dd0, 0x6312, 0x6216, ++ 0xa006, 0xa005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x3179, ++ 0x080c, 0x403f, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd, ++ 0x683a, 0x7824, 0xa005, 0x0904, 0x317c, 0xa096, 0x00ff, 0x0120, ++ 0xa092, 0x0004, 0x1a04, 0x317c, 0x2010, 0x2d18, 0x080c, 0x2df9, ++ 0x0904, 0x3179, 0x7007, 0x0003, 0x701b, 0x400f, 0x0005, 0x6830, ++ 0xa086, 0x0100, 0x0904, 0x3179, 0x0804, 0x3154, 0x7924, 0xa18c, ++ 0xff00, 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, ++ 0x317c, 0xa182, 0x00ff, 0x1a04, 0x317c, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0xacda, 0x1188, 0xa190, 0xc77b, 0x2204, 0xa065, 0x0160, ++ 0x080c, 0x4f60, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0110, 0x6017, ++ 0x0000, 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x080c, ++ 0x1602, 0x0188, 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, ++ 0x7012, 0x7016, 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, ++ 0x7016, 0xad80, 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, ++ 0x080c, 0x5356, 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, ++ 0x0208, 0xa066, 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, ++ 0x080c, 0x5356, 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, ++ 0xa066, 0x8cff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, ++ 0x6904, 0x080c, 0x1619, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, ++ 0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0xc6f2, 0x6606, ++ 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, ++ 0x164d, 0x7007, 0x0002, 0x701b, 0x3154, 0x0005, 0x00f6, 0x0126, ++ 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0xc6b0, 0x2004, 0xa005, ++ 0x1168, 0x0e04, 0x40ae, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, ++ 0x7c2a, 0x781b, 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, ++ 0x00e6, 0x2071, 0xc6a2, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, ++ 0x2060, 0x0078, 0x7030, 0xa0e0, 0x0004, 0xac82, 0xc6f2, 0x0210, ++ 0x2061, 0xc6b2, 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, ++ 0x713a, 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, ++ 0x00fe, 0x0005, 0x00e6, 0x2071, 0xc6a2, 0x7038, 0xa005, 0x0570, ++ 0x0126, 0x2091, 0x8000, 0x0e04, 0x4105, 0x00f6, 0x2079, 0x0000, ++ 0x7818, 0xd084, 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, ++ 0x6004, 0x7826, 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, ++ 0x7038, 0x8001, 0x703a, 0xa005, 0x1130, 0x7033, 0xc6b2, 0x7037, ++ 0xc6b2, 0x00ce, 0x0048, 0xac80, 0x0004, 0xa0fa, 0xc6f2, 0x0210, ++ 0x2001, 0xc6b2, 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, ++ 0x0026, 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, ++ 0x080c, 0x4096, 0x002e, 0x0005, 0x81ff, 0x1904, 0x3179, 0x0126, ++ 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, ++ 0x5f3b, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, ++ 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f7f, 0x080c, 0x5e73, ++ 0x0010, 0x080c, 0x4e74, 0x012e, 0x0804, 0x3154, 0x7824, 0x2008, ++ 0xa18c, 0xfffd, 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x3154, ++ 0x0804, 0x317c, 0x81ff, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003, ++ 0x1904, 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1904, 0x3179, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, ++ 0x0006, 0x1120, 0x7828, 0xa005, 0x0904, 0x3154, 0x00c6, 0x080c, ++ 0x403f, 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, ++ 0x6838, 0xc0fd, 0x683a, 0x080c, 0xaebb, 0x0904, 0x3179, 0x7007, ++ 0x0003, 0x701b, 0x4174, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, ++ 0x3179, 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, ++ 0x1904, 0x3179, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, ++ 0x403f, 0x0904, 0x3179, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, ++ 0x0000, 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, ++ 0x5356, 0x1904, 0x41fa, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, ++ 0x0148, 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x0120, 0x080c, 0x5706, ++ 0x1904, 0x41fa, 0xd794, 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, ++ 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3e91, 0xd794, ++ 0x0148, 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, ++ 0x080c, 0x3e91, 0xa186, 0x007e, 0x0178, 0xa186, 0x0080, 0x0160, ++ 0x6004, 0xa084, 0x00ff, 0xa0c2, 0x0006, 0x1210, 0xc1fd, 0x0020, ++ 0x080c, 0x55f7, 0x1108, 0xc1fd, 0x21a2, 0xc1fc, 0xd794, 0x01d8, ++ 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, 0xac80, ++ 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, 0x20a9, ++ 0x0002, 0x53a3, 0x080c, 0x3e83, 0xac80, 0x0026, 0x2098, 0x20a9, ++ 0x0002, 0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, 0xa6b0, 0x000b, ++ 0xa6b0, 0x0005, 0x8108, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0118, ++ 0xa186, 0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, 0x0100, 0x0170, ++ 0x0018, 0xa186, 0x007e, 0x0150, 0xd794, 0x0118, 0xa686, 0x0020, ++ 0x0010, 0xa686, 0x0028, 0x0150, 0x0804, 0x4197, 0x86ff, 0x1120, ++ 0x7120, 0x810b, 0x0804, 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, ++ 0xa600, 0x7022, 0x772a, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6612, ++ 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, ++ 0x164d, 0x7007, 0x0002, 0x701b, 0x4236, 0x0005, 0x702c, 0xa005, ++ 0x1170, 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, ++ 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x4197, 0x7120, ++ 0x810b, 0x0804, 0x3154, 0x2029, 0x007e, 0x7924, 0x7a28, 0x7b2c, ++ 0x7c38, 0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, ++ 0xa502, 0x0a04, 0x317c, 0xa184, 0x00ff, 0xa0e2, 0x0020, 0x0a04, ++ 0x317c, 0xa502, 0x0a04, 0x317c, 0xa284, 0xff00, 0x8007, 0xa0e2, ++ 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa284, 0x00ff, ++ 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa384, ++ 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, ++ 0x317c, 0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, ++ 0x0a04, 0x317c, 0xa484, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, ++ 0x317c, 0xa502, 0x0a04, 0x317c, 0xa484, 0x00ff, 0xa0e2, 0x0020, ++ 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0x2061, 0xc900, 0x6102, ++ 0x6206, 0x630a, 0x640e, 0x0804, 0x3154, 0x080c, 0x403f, 0x0904, ++ 0x3179, 0x2009, 0x0020, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, ++ 0x4080, 0x701b, 0x42b4, 0x0005, 0x0126, 0xade8, 0x000d, 0x2001, ++ 0x0138, 0x2003, 0x0000, 0x00e6, 0x2071, 0xc96a, 0x700c, 0x7110, ++ 0xa106, 0x1de0, 0x00ee, 0x2091, 0x8000, 0x6800, 0xa005, 0x0904, ++ 0x4348, 0x6804, 0x2008, 0xa18c, 0xffe0, 0x1904, 0x4348, 0x680c, ++ 0xa005, 0x0904, 0x4348, 0xa082, 0xff01, 0x1a04, 0x4348, 0x6810, ++ 0xa082, 0x005c, 0x0a04, 0x4348, 0x6824, 0x2008, 0xa082, 0x0008, ++ 0x0a04, 0x4348, 0xa182, 0x0400, 0x1a04, 0x4348, 0x080c, 0x73ad, ++ 0x6820, 0x8000, 0x6822, 0x6944, 0x6820, 0xa102, 0x0a04, 0x4348, ++ 0x6828, 0x6944, 0x810c, 0xa102, 0x0a04, 0x4348, 0x6840, 0xa082, ++ 0x000f, 0x1a04, 0x4348, 0x00d6, 0x6848, 0xa005, 0x0148, 0x2008, ++ 0x2069, 0xc600, 0x68e8, 0xa108, 0x68b0, 0xa102, 0x1208, 0x69ea, ++ 0x00de, 0x20a9, 0x0020, 0x2d98, 0x2069, 0xc682, 0x2da0, 0x53a3, ++ 0x00d6, 0x080c, 0x15e5, 0x2d00, 0x00de, 0x0904, 0x435f, 0x684e, ++ 0x080c, 0x7274, 0x05d8, 0x080c, 0x7171, 0x080c, 0x56ae, 0x0580, ++ 0x00c6, 0x2061, 0x0100, 0x6104, 0xa18d, 0x8000, 0x6106, 0x610c, ++ 0xa18d, 0x0300, 0xa18c, 0xffbf, 0x610e, 0x2001, 0xc8d4, 0x200c, ++ 0xa18d, 0x0300, 0xa18c, 0xffbf, 0x2102, 0x6b10, 0x2061, 0xc96a, ++ 0x6316, 0x00ce, 0x685f, 0x0000, 0x2001, 0xc696, 0x2003, 0x0000, ++ 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x3154, ++ 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x317c, ++ 0x080c, 0x748e, 0x080c, 0x749d, 0x080c, 0x7160, 0x2001, 0xc695, ++ 0x206c, 0x080c, 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, ++ 0xc63a, 0x2003, 0x0010, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, ++ 0x012e, 0x0804, 0x3179, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, ++ 0x0904, 0x3179, 0x080c, 0x76a8, 0x1904, 0x3179, 0x2001, 0xc8e5, ++ 0x2004, 0xa086, 0xaaaa, 0x0138, 0x2001, 0xc635, 0x2004, 0xa084, ++ 0x0028, 0x0904, 0x3170, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, ++ 0x1904, 0x3179, 0x7924, 0x810c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, ++ 0x080c, 0x403f, 0x0904, 0x3179, 0x080c, 0x4080, 0x701b, 0x4399, ++ 0x0005, 0x080c, 0x95a6, 0x0904, 0x3179, 0x2001, 0xc8d3, 0x2004, ++ 0x601a, 0x0016, 0x0026, 0x2001, 0xc61c, 0x2004, 0x8007, 0x6934, ++ 0xa105, 0x6836, 0x2001, 0xc61d, 0x2004, 0x8007, 0x683a, 0x002e, ++ 0x001e, 0x2d00, 0x6012, 0x601f, 0x0001, 0x2009, 0x0040, 0x080c, ++ 0x962c, 0x0804, 0x3154, 0x0804, 0x3179, 0x2001, 0xc756, 0x200c, ++ 0xa18e, 0x0000, 0x0904, 0x441b, 0x2001, 0x0101, 0x200c, 0xa18c, ++ 0x7fff, 0x2102, 0x2001, 0x0103, 0x200c, 0xa18c, 0xfeff, 0xa18c, ++ 0xfdff, 0xa18d, 0x0040, 0x2102, 0x2001, 0xc8d4, 0x200c, 0xa18c, ++ 0xfeff, 0xa18c, 0xfdff, 0xa18d, 0x0040, 0x2102, 0x2001, 0x0138, ++ 0x2003, 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x24f3, 0x012e, ++ 0x0128, 0x20a9, 0x006e, 0x1f04, 0x43eb, 0x0ca0, 0x2001, 0xc756, ++ 0x2003, 0x0000, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x0126, ++ 0x2091, 0x8000, 0x2001, 0xc695, 0x200c, 0x81ff, 0x0138, 0x2168, ++ 0x080c, 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc8d3, ++ 0x200c, 0x81ff, 0x0138, 0x2168, 0x080c, 0x1619, 0x2001, 0xc8d3, ++ 0x2003, 0x0000, 0x2001, 0xc63a, 0x2003, 0x0010, 0x080c, 0x748e, ++ 0x080c, 0x749d, 0x012e, 0x0804, 0x3154, 0x7824, 0x00e6, 0x2071, ++ 0xc682, 0x00ee, 0x0804, 0x3154, 0x0006, 0x2001, 0xc653, 0x2004, ++ 0xd0cc, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xd0bc, ++ 0x000e, 0x0005, 0x6168, 0x7a24, 0x6300, 0x82ff, 0x1118, 0x7926, ++ 0x0804, 0x3154, 0x83ff, 0x1904, 0x317c, 0x2001, 0xfff0, 0xa200, ++ 0x1a04, 0x317c, 0x2019, 0xffff, 0x606c, 0xa302, 0xa200, 0x0a04, ++ 0x317c, 0x7926, 0x626a, 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, ++ 0xa086, 0x0003, 0x1904, 0x3179, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, ++ 0x080c, 0x403f, 0x0904, 0x3179, 0x2009, 0x0000, 0x2019, 0x0000, ++ 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, ++ 0xa1e0, 0xc77b, 0x2c64, 0x8cff, 0x01b8, 0x6004, 0xa084, 0x00ff, ++ 0xa086, 0x0006, 0x0130, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600, ++ 0x1158, 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, 0x8007, ++ 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, 0x0120, ++ 0xa386, 0x002a, 0x0148, 0x08e0, 0x83ff, 0x1120, 0x7120, 0x810c, ++ 0x0804, 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, ++ 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, ++ 0x652a, 0x662e, 0x6732, 0x2c10, 0x080c, 0x164d, 0x7007, 0x0002, ++ 0x701b, 0x44ab, 0x0005, 0x702c, 0xa005, 0x1168, 0x711c, 0x7024, ++ 0x20a0, 0x2019, 0x0000, 0x2061, 0xc6f2, 0x6424, 0x6528, 0x662c, ++ 0x6730, 0x0804, 0x4468, 0x7120, 0x810c, 0x0804, 0x3154, 0x81ff, ++ 0x1904, 0x3179, 0x60d4, 0xd0ac, 0x1118, 0xd09c, 0x0904, 0x3179, ++ 0x080c, 0x403f, 0x0904, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, ++ 0x7d38, 0x080c, 0x4080, 0x701b, 0x44d6, 0x0005, 0x00d6, 0xade8, ++ 0x000d, 0x6828, 0xa0be, 0x7000, 0x0148, 0xa0be, 0x7100, 0x0130, ++ 0xa0be, 0x7200, 0x0118, 0x00de, 0x0804, 0x317c, 0x6820, 0x6924, ++ 0x080c, 0x29c7, 0x1510, 0x080c, 0x52fa, 0x11f8, 0x7122, 0x6612, ++ 0x6516, 0x6e18, 0x00c6, 0x080c, 0x403f, 0x01b8, 0x080c, 0x403f, ++ 0x01a0, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, ++ 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0xae0e, 0x0904, 0x3179, ++ 0x7007, 0x0003, 0x701b, 0x4510, 0x0005, 0x00de, 0x0804, 0x3179, ++ 0x7120, 0x080c, 0x2f41, 0x6820, 0xa086, 0x8001, 0x0904, 0x3179, ++ 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, ++ 0x2098, 0x20a0, 0x080c, 0x4ee4, 0x000e, 0xade8, 0x000d, 0x6a08, ++ 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6e00, ++ 0x6f28, 0xa7c6, 0x7000, 0x1108, 0x0018, 0xa7c6, 0x7100, 0x1140, ++ 0xa6c2, 0x0004, 0x0a04, 0x317c, 0x2009, 0x0004, 0x0804, 0x4083, ++ 0xa7c6, 0x7200, 0x1904, 0x317c, 0xa6c2, 0x0054, 0x0a04, 0x317c, ++ 0x600e, 0x6013, 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, ++ 0x080c, 0x164d, 0x7007, 0x0002, 0x701b, 0x4557, 0x0005, 0x701c, ++ 0x2068, 0x6804, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x0006, ++ 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x4ee4, 0x000e, 0x2009, ++ 0x002a, 0x2061, 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, ++ 0x4083, 0x81ff, 0x1904, 0x3179, 0x792c, 0x2001, 0xc8e7, 0x2102, ++ 0x080c, 0x4054, 0x0904, 0x317c, 0x080c, 0x541c, 0x0904, 0x3179, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x554e, 0x012e, 0x0804, 0x3154, ++ 0x7824, 0xd08c, 0x1118, 0xd084, 0x0904, 0x3bf0, 0x080c, 0x4064, ++ 0x0904, 0x317c, 0x00c6, 0x080c, 0x403f, 0x00ce, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x3179, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x0128, 0xa08e, 0x0004, 0x0110, 0xa08e, 0x0005, 0x15b8, 0x7824, ++ 0xd08c, 0x0120, 0x6000, 0xc08c, 0x6002, 0x0030, 0x2001, 0xc653, ++ 0x2004, 0xd0b4, 0x0904, 0x3c2c, 0x7824, 0xa084, 0xff00, 0xa08e, ++ 0x7e00, 0x0904, 0x3c2c, 0xa08e, 0x7f00, 0x0904, 0x3c2c, 0xa08e, ++ 0x8000, 0x0904, 0x3c2c, 0x6000, 0xd08c, 0x1904, 0x3c2c, 0x6837, ++ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae2a, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x45d8, 0x0005, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x0804, 0x3c2c, 0x2009, 0xc631, ++ 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x2001, ++ 0xc600, 0x2004, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x0120, 0x2009, 0x0008, ++ 0x0804, 0x3179, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3c2c, ++ 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, ++ 0xaebb, 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, ++ 0x701b, 0x4613, 0x0005, 0x6830, 0xa086, 0x0100, 0x1120, 0x2009, ++ 0x0004, 0x0804, 0x3179, 0x080c, 0x4064, 0x0904, 0x317c, 0x0804, ++ 0x45a7, 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179, 0x6000, 0xa086, ++ 0x0003, 0x2009, 0x0007, 0x1904, 0x3179, 0x2001, 0xc653, 0x2004, ++ 0xd0ac, 0x2009, 0x0008, 0x1904, 0x3179, 0x080c, 0x4064, 0x0904, ++ 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, ++ 0x1904, 0x3179, 0x00c6, 0x080c, 0x403f, 0x00ce, 0x2009, 0x0002, ++ 0x0904, 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, ++ 0x683a, 0x7928, 0xa194, 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, ++ 0x1128, 0xc0ed, 0x6952, 0x792c, 0x6956, 0x0048, 0xa28e, 0x0100, ++ 0x1904, 0x317c, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, ++ 0x080c, 0xb078, 0x2009, 0x0003, 0x0904, 0x3179, 0x7007, 0x0003, ++ 0x701b, 0x4673, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, ++ 0x0904, 0x3179, 0x0804, 0x3154, 0x81ff, 0x2009, 0x0001, 0x1904, ++ 0x3179, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x3179, ++ 0x080c, 0x4064, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, ++ 0x0006, 0x2009, 0x0009, 0x1904, 0x3179, 0x00c6, 0x080c, 0x403f, ++ 0x00ce, 0x2009, 0x0002, 0x0904, 0x3179, 0xad80, 0x000f, 0x2009, ++ 0x0008, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4080, 0x701b, ++ 0x46aa, 0x0005, 0x00d6, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, ++ 0x1140, 0x6804, 0xa005, 0x1128, 0x6808, 0xa084, 0xff00, 0x1108, ++ 0x0018, 0x00de, 0x1904, 0x317c, 0x00de, 0x6837, 0x0000, 0x6833, ++ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x00c6, 0x080c, 0x4064, 0x1118, ++ 0x00ce, 0x0804, 0x317c, 0x080c, 0xb0c7, 0x2009, 0x0003, 0x00ce, ++ 0x0904, 0x3179, 0x7007, 0x0003, 0x701b, 0x46d7, 0x0005, 0x6830, ++ 0xa086, 0x0100, 0x2009, 0x0004, 0x0904, 0x3179, 0x0804, 0x3154, ++ 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x6000, 0xa086, ++ 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, 0x3179, 0x7e24, 0x860f, ++ 0xa18c, 0x00ff, 0xa6b4, 0x00ff, 0x080c, 0x5356, 0x1904, 0x317c, ++ 0xa186, 0x007f, 0x0150, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x0120, 0x2009, 0x0009, 0x0804, 0x3179, 0x00c6, 0x080c, 0x403f, ++ 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837, 0x0000, ++ 0x6838, 0xc0fd, 0x683a, 0x2001, 0x0100, 0x8007, 0x680a, 0x080c, ++ 0xae45, 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, ++ 0x701b, 0x4723, 0x0005, 0x6808, 0x8007, 0xa086, 0x0100, 0x1120, ++ 0x2009, 0x0004, 0x0804, 0x3179, 0x68b0, 0x6836, 0x6810, 0x8007, ++ 0xa084, 0x00ff, 0x800c, 0x6814, 0x8007, 0xa084, 0x00ff, 0x8004, ++ 0xa080, 0x0002, 0xa108, 0xad80, 0x0004, 0x7a2c, 0x7b28, 0x7c3c, ++ 0x7d38, 0x0804, 0x4083, 0x080c, 0x403f, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, ++ 0x82ff, 0x0110, 0x0804, 0x317c, 0x2009, 0x001a, 0x7a2c, 0x7b28, ++ 0x7c3c, 0x7d38, 0x080c, 0x4080, 0x701b, 0x475f, 0x0005, 0x2001, ++ 0xc62a, 0x2003, 0x0001, 0xad80, 0x000d, 0x2098, 0x20a9, 0x001a, ++ 0x20a1, 0xc90d, 0x53a3, 0x0804, 0x3154, 0x080c, 0x403f, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, ++ 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, 0x317c, 0x2099, 0xc90d, ++ 0x20a0, 0x20a9, 0x001a, 0x53a3, 0x2009, 0x001a, 0x7a2c, 0x7b28, ++ 0x7c3c, 0x7d38, 0x0804, 0x4083, 0x7824, 0xa08a, 0x1000, 0x1a04, ++ 0x317c, 0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, 0xa108, ++ 0x00c6, 0x2061, 0xc93a, 0x6142, 0x00ce, 0x012e, 0x0804, 0x3154, ++ 0x00c6, 0x080c, 0x5f3b, 0x1188, 0x2001, 0xc8e6, 0x2003, 0x0001, ++ 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f7f, ++ 0x080c, 0x5e73, 0x080c, 0x1519, 0x0038, 0x2061, 0xc600, 0x6030, ++ 0xc09d, 0x6032, 0x080c, 0x4e74, 0x00ce, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x00c6, 0x2061, 0xc93a, 0x7924, 0x6152, 0x614e, 0x6057, ++ 0x0000, 0x604b, 0x0009, 0x7838, 0x606a, 0x783c, 0x6066, 0x7828, ++ 0x6062, 0x782c, 0x605e, 0x2061, 0xc8e8, 0x2001, 0xc94f, 0x600e, ++ 0x6013, 0x0001, 0x6017, 0x0002, 0x6007, 0x0000, 0x6037, 0x0000, ++ 0x00ce, 0x012e, 0x0804, 0x3154, 0x0126, 0x00c6, 0x00e6, 0x2061, ++ 0x0100, 0x2071, 0xc600, 0x6044, 0xd0a4, 0x11b0, 0xd084, 0x0118, ++ 0x080c, 0x495b, 0x0068, 0xd08c, 0x0118, 0x080c, 0x487c, 0x0040, ++ 0xd094, 0x0118, 0x080c, 0x484d, 0x0018, 0xd09c, 0x0108, 0x0061, ++ 0x00ee, 0x00ce, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, ++ 0xc19d, 0x612a, 0x001e, 0x0ca0, 0x624c, 0xa286, 0xf0f0, 0x1150, ++ 0x6048, 0xa086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, ++ 0x0010, 0x0490, 0xa294, 0xff00, 0xa296, 0xf700, 0x0178, 0x7134, ++ 0xd1a4, 0x1160, 0x6240, 0xa295, 0x0100, 0x6242, 0xa294, 0x0010, ++ 0x0128, 0x2009, 0x00f7, 0x080c, 0x4f04, 0x00f0, 0x6040, 0xa084, ++ 0x0010, 0xa085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707b, 0x0000, ++ 0x7097, 0x0001, 0x70bb, 0x0000, 0x70d7, 0x0000, 0x2009, 0xcdc0, ++ 0x200b, 0x0000, 0x708b, 0x0000, 0x707f, 0x000a, 0x2009, 0x000a, ++ 0x2011, 0x4e2a, 0x080c, 0x704f, 0x0005, 0x0156, 0x2001, 0xc674, ++ 0x2004, 0xd08c, 0x0110, 0x7053, 0xffff, 0x707c, 0xa005, 0x1510, ++ 0x2011, 0x4e2a, 0x080c, 0x6fc6, 0x6040, 0xa094, 0x0010, 0xa285, ++ 0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, ++ 0x4864, 0x6242, 0x708f, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, ++ 0x0080, 0x6042, 0x6242, 0x0030, 0x6242, 0x708f, 0x0000, 0x7083, ++ 0x0000, 0x0000, 0x015e, 0x0005, 0x7080, 0xa08a, 0x0003, 0x1210, ++ 0x0023, 0x0010, 0x080c, 0x1519, 0x0005, 0x4888, 0x48d8, 0x495a, ++ 0x00f6, 0x7083, 0x0001, 0x20e1, 0xa000, 0xe000, 0x20e1, 0x8700, ++ 0x080c, 0x25bb, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0xcc00, ++ 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, ++ 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, ++ 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, ++ 0x2079, 0xcc0c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0xc605, ++ 0x20a1, 0xcc0e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0xcc12, 0x207b, ++ 0x0000, 0x7807, 0x0000, 0x2099, 0xcc00, 0x20a1, 0x020b, 0x20a9, ++ 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x4e5b, ++ 0x00fe, 0x7087, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x0005, ++ 0x00d6, 0x7084, 0x7087, 0x0000, 0xa025, 0x0904, 0x4942, 0x6020, ++ 0xd0b4, 0x1904, 0x4940, 0x7194, 0x81ff, 0x0904, 0x4930, 0xa486, ++ 0x000c, 0x1904, 0x493b, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, ++ 0xcc80, 0x2019, 0xcc00, 0x220c, 0x2304, 0xa106, 0x11b8, 0x8210, ++ 0x8318, 0x1f04, 0x48f3, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, ++ 0xf0f0, 0x6043, 0x0006, 0x7083, 0x0002, 0x708f, 0x0002, 0x2009, ++ 0x07d0, 0x2011, 0x4e31, 0x080c, 0x704f, 0x0490, 0x2069, 0xcc80, ++ 0x6930, 0xa18e, 0x1101, 0x1538, 0x6834, 0xa005, 0x1520, 0x6900, ++ 0xa18c, 0x00ff, 0x1118, 0x6804, 0xa005, 0x0190, 0x2011, 0xcc8e, ++ 0x2019, 0xc605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0230, ++ 0x1190, 0x8210, 0x8318, 0x1f04, 0x4924, 0x0068, 0x7097, 0x0000, ++ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, ++ 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, ++ 0x00de, 0x0005, 0x6040, 0xa085, 0x0100, 0x6042, 0x6020, 0xd0b4, ++ 0x1db8, 0x60c3, 0x000c, 0x2011, 0xc931, 0x2013, 0x0000, 0x7087, ++ 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, ++ 0x8c05, 0x0c30, 0x0005, 0x708c, 0xa08a, 0x001d, 0x1210, 0x0023, ++ 0x0010, 0x080c, 0x1519, 0x0005, 0x498e, 0x499d, 0x49c5, 0x49de, ++ 0x4a02, 0x4a2a, 0x4a4e, 0x4a7f, 0x4aa3, 0x4acb, 0x4b02, 0x4b2a, ++ 0x4b46, 0x4b5c, 0x4b7c, 0x4b8f, 0x4b97, 0x4bc7, 0x4beb, 0x4c13, ++ 0x4c37, 0x4c68, 0x4ca5, 0x4cd4, 0x4cf0, 0x4d2f, 0x4d4f, 0x4d68, ++ 0x4d69, 0x00c6, 0x2061, 0xc600, 0x6003, 0x0007, 0x2061, 0x0100, ++ 0x6004, 0xa084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x608b, 0xbc94, ++ 0x608f, 0xf0f0, 0x6043, 0x0002, 0x708f, 0x0001, 0x2009, 0x07d0, ++ 0x2011, 0x4e31, 0x080c, 0x704f, 0x0005, 0x00f6, 0x7084, 0xa086, ++ 0x0014, 0x1508, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x11e0, 0x2079, ++ 0xcc80, 0x7a30, 0xa296, 0x1102, 0x11a0, 0x7834, 0xa005, 0x1188, + 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, +- 0x708f, 0x000a, 0x00b1, 0x0098, 0xa005, 0x1178, 0x7a38, 0xd2fc, +- 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, +- 0x708f, 0x000e, 0x080c, 0x4b63, 0x0010, 0x080c, 0x4e5b, 0x00fe, +- 0x0005, 0x708f, 0x000b, 0x2011, 0xcc0e, 0x22a0, 0x20a9, 0x0040, +- 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4, +- 0x080c, 0x4ed3, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x080c, 0x4f24, +- 0x0118, 0x2013, 0x0000, 0x0020, 0x7054, 0xa085, 0x0100, 0x2012, +- 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42, +- 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4e18, 0x080c, +- 0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80, 0x7a30, 0xa296, +- 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x000c, 0x0029, +- 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000d, 0x080c, +- 0x4ed3, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0xcc8e, 0x20a9, +- 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, +- 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011, +- 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1188, 0x2079, 0xcc80, +- 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b, +- 0x0001, 0x080c, 0x4ec5, 0x708f, 0x000e, 0x0029, 0x0010, 0x080c, +- 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000f, 0x7087, 0x0000, 0x608b, +- 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, +- 0x07d0, 0x2011, 0x4e18, 0x080c, 0x6fa1, 0x0005, 0x7084, 0xa005, +- 0x0120, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x0005, 0x708f, 0x0011, +- 0x080c, 0x4f24, 0x11a0, 0x7170, 0x81ff, 0x0188, 0x2009, 0x0000, +- 0x7074, 0xa084, 0x00ff, 0x080c, 0x29c7, 0xa186, 0x007e, 0x0138, +- 0xa186, 0x0080, 0x0120, 0x2011, 0xcc8e, 0x080c, 0x4ddc, 0x20e1, +- 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x7484, +- 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, +- 0x53a6, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, +- 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014, +- 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834, ++ 0x2011, 0x4e31, 0x080c, 0x6fc6, 0x708f, 0x0010, 0x080c, 0x4b97, ++ 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, 0x0003, 0x6043, ++ 0x0004, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0x080c, 0x4eec, 0x20a3, ++ 0x1102, 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, ++ 0x49d5, 0x60c3, 0x0014, 0x080c, 0x4e5b, 0x0005, 0x00f6, 0x7084, ++ 0xa005, 0x01f0, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, 0x0014, ++ 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1102, 0x1178, 0x7834, + 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, +- 0x70bb, 0x0001, 0x708f, 0x0012, 0x0029, 0x0010, 0x080c, 0x4e5b, +- 0x00fe, 0x0005, 0x708f, 0x0013, 0x080c, 0x4edf, 0x20a3, 0x1103, +- 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160, ++ 0x70bb, 0x0001, 0x708f, 0x0004, 0x0029, 0x0010, 0x080c, 0x4e74, ++ 0x00fe, 0x0005, 0x708f, 0x0005, 0x080c, 0x4eec, 0x20a3, 0x1103, ++ 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f3d, 0x1160, + 0x7078, 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, +- 0x4ddc, 0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0, ++ 0x4df5, 0x0110, 0x080c, 0x4f1b, 0x20a9, 0x0008, 0x2298, 0x26a0, + 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, +- 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18, +- 0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, +- 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, +- 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0014, +- 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0015, +- 0x080c, 0x4edf, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, +- 0xcc8e, 0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, ++ 0x4e5b, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e31, ++ 0x080c, 0x6fc6, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, ++ 0xa296, 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0006, ++ 0x0029, 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, 0x0007, ++ 0x080c, 0x4eec, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, ++ 0xcc8e, 0x080c, 0x4f3d, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, + 0xa186, 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00, +- 0x810f, 0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c, ++ 0x810f, 0x080c, 0x4df5, 0x0128, 0x080c, 0x442b, 0x0110, 0x080c, + 0x2a11, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, +- 0x7084, 0xa005, 0x05b8, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, +- 0x0014, 0x1570, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1105, 0x1540, +- 0x7834, 0x2011, 0x0100, 0xa21e, 0x1148, 0x7a38, 0xd2fc, 0x0128, +- 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x0060, 0xa005, 0x11c0, +- 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, +- 0x708b, 0x0000, 0x7a38, 0xd2f4, 0x0138, 0x2001, 0xc674, 0x2004, +- 0xd0a4, 0x1110, 0x70d7, 0x0008, 0x708f, 0x0016, 0x0029, 0x0010, +- 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430, +- 0x2011, 0xcc8e, 0x708f, 0x0017, 0x080c, 0x4f24, 0x1150, 0x7078, +- 0xa005, 0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c, ++ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e5b, 0x0005, 0x00f6, ++ 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, ++ 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1104, 0x1178, ++ 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, ++ 0x1110, 0x70bb, 0x0001, 0x708f, 0x0008, 0x0029, 0x0010, 0x080c, ++ 0x4e74, 0x00fe, 0x0005, 0x708f, 0x0009, 0x080c, 0x4eec, 0x20a3, ++ 0x1105, 0x20a3, 0x0100, 0x3430, 0x080c, 0x4f3d, 0x1150, 0x7078, ++ 0xa005, 0x1138, 0x080c, 0x4d6a, 0x1170, 0xa085, 0x0001, 0x080c, + 0x2a11, 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010, +- 0x080c, 0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, +- 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80, +- 0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, +- 0x0018, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, +- 0x0019, 0x080c, 0x4edf, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, +- 0x2099, 0xcc8e, 0x2039, 0xcc0e, 0x27a0, 0x20a9, 0x0040, 0x53a3, +- 0x080c, 0x4f24, 0x11e8, 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff, +- 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, 0x7054, +- 0x2310, 0x8214, 0xa2a0, 0xcc0e, 0x2414, 0xa38c, 0x0001, 0x0118, +- 0xa294, 0xff00, 0x0018, 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, +- 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, +- 0xa005, 0x01d0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, +- 0x1188, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, +- 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4ec5, 0x708f, 0x001a, +- 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x001b, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e5b, 0x0010, ++ 0x080c, 0x4981, 0x0005, 0x00f6, 0x7084, 0xa005, 0x0588, 0x2011, ++ 0x4e31, 0x080c, 0x6fc6, 0xa086, 0x0014, 0x1540, 0x2079, 0xcc80, ++ 0x7a30, 0xa296, 0x1105, 0x1510, 0x7834, 0x2011, 0x0100, 0xa21e, ++ 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, ++ 0x0001, 0x708f, 0x000a, 0x00b1, 0x0098, 0xa005, 0x1178, 0x7a38, ++ 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, ++ 0x0000, 0x708f, 0x000e, 0x080c, 0x4b7c, 0x0010, 0x080c, 0x4e74, ++ 0x00fe, 0x0005, 0x708f, 0x000b, 0x2011, 0xcc0e, 0x22a0, 0x20a9, ++ 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, ++ 0x41a4, 0x080c, 0x4eec, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x080c, ++ 0x4f3d, 0x0118, 0x2013, 0x0000, 0x0020, 0x7054, 0xa085, 0x0100, ++ 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x080c, ++ 0x4e5b, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4e31, ++ 0x080c, 0x6fc6, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80, 0x7a30, ++ 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x000c, ++ 0x0029, 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, 0x000d, ++ 0x080c, 0x4eec, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0xcc8e, ++ 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, ++ 0x0084, 0x080c, 0x4e5b, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, ++ 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, 0x0084, 0x1188, 0x2079, ++ 0xcc80, 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, ++ 0x708b, 0x0001, 0x080c, 0x4ede, 0x708f, 0x000e, 0x0029, 0x0010, ++ 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, 0x000f, 0x7087, 0x0000, ++ 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, ++ 0x2009, 0x07d0, 0x2011, 0x4e31, 0x080c, 0x6fba, 0x0005, 0x7084, ++ 0xa005, 0x0120, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0x0005, 0x708f, ++ 0x0011, 0x080c, 0x4f3d, 0x11a0, 0x7170, 0x81ff, 0x0188, 0x2009, ++ 0x0000, 0x7074, 0xa084, 0x00ff, 0x080c, 0x29c7, 0xa186, 0x007e, ++ 0x0138, 0xa186, 0x0080, 0x0120, 0x2011, 0xcc8e, 0x080c, 0x4df5, + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, + 0x7484, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, +- 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x0005, +- 0x0005, 0x0086, 0x0096, 0x2029, 0xc653, 0x252c, 0x20a9, 0x0008, +- 0x2041, 0xcc0e, 0x28a0, 0x2099, 0xcc8e, 0x53a3, 0x20a9, 0x0008, +- 0x2011, 0x0007, 0xd5d4, 0x0110, 0x2011, 0x0000, 0x2800, 0xa200, +- 0x200c, 0xa1a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, +- 0x8211, 0x1f04, 0x4d66, 0x0804, 0x4dd4, 0x82ff, 0x1160, 0xd5d4, +- 0x0120, 0xa1a6, 0x3fff, 0x0d90, 0x0020, 0xa1a6, 0x3fff, 0x0904, +- 0x4dd4, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, +- 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, +- 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, +- 0x4d8c, 0x04d0, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, +- 0x4d9e, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0158, 0x0006, 0x2039, +- 0x0007, 0x2200, 0xa73a, 0x000e, 0x27a8, 0xa5a8, 0x0010, 0x1f04, +- 0x4dad, 0x7552, 0xa5c8, 0x2f6e, 0x292d, 0xa5ac, 0x00ff, 0x7576, +- 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1, 0x001e, 0x60e7, +- 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a, 0x707b, 0x0001, +- 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0xa085, 0x0001, 0x0028, 0xa006, 0x0018, 0xa006, 0x080c, +- 0x1519, 0x009e, 0x008e, 0x0005, 0x2118, 0x2021, 0x0000, 0x2001, +- 0x0007, 0xa39a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, +- 0x84ff, 0x0120, 0xa39a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, +- 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0xa238, 0x2704, 0xa42c, +- 0x11b8, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x2f6e, 0x242d, 0xa5ac, +- 0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1, +- 0x001e, 0x60e7, 0x0000, 0x65ea, 0x707b, 0x0001, 0xa084, 0x0000, +- 0x0005, 0x00e6, 0x2071, 0xc600, 0x707f, 0x0000, 0x00ee, 0x0005, +- 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x8bf5, +- 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000, +- 0x0126, 0x2091, 0x8000, 0x2071, 0xc623, 0x2073, 0x0000, 0x7840, +- 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x001e, 0xa094, +- 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe, +- 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011, 0xc931, 0x2013, +- 0x0000, 0x7087, 0x0000, 0x012e, 0x20e1, 0x9080, 0x60a3, 0x0056, +- 0x60a7, 0x9575, 0x080c, 0x8bec, 0x2009, 0x07d0, 0x2011, 0x4e18, +- 0x080c, 0x7036, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, +- 0x8000, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, +- 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c, 0x8e79, +- 0x003e, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x2061, 0xc93a, 0x601b, +- 0x0000, 0x601f, 0x0000, 0x2061, 0xc600, 0x6003, 0x0001, 0x2061, +- 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, +- 0x4e90, 0x080c, 0x6fa1, 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005, +- 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x0100, 0x080c, +- 0x8bf5, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, +- 0x1000, 0x7003, 0x0000, 0x080c, 0x5f2a, 0x01a8, 0x080c, 0x5f48, +- 0x1190, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0016, 0x080c, 0x2a95, +- 0x2001, 0xc8d6, 0x2102, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0000, +- 0x080c, 0x5e5a, 0x0030, 0x2001, 0x0001, 0x080c, 0x296d, 0x080c, +- 0x4e5b, 0x012e, 0x000e, 0x00ee, 0x0005, 0x20a9, 0x0040, 0x20a1, +- 0xcdc0, 0x2099, 0xcc8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, +- 0x1f04, 0x4ecb, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, +- 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, 0x20e1, +- 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, +- 0x000c, 0x53a6, 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, +- 0x2001, 0xc631, 0x2004, 0xa005, 0x1138, 0x2001, 0xc615, 0x2004, +- 0xa084, 0x00ff, 0xa105, 0x0010, 0xa185, 0x00f7, 0x604a, 0x000e, +- 0x00ce, 0x0005, 0x0016, 0x0046, 0x2001, 0xc653, 0x2004, 0xd0a4, +- 0x0158, 0xa006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc183, 0x2001, +- 0xc60c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, +- 0x080c, 0x2e19, 0x004e, 0x001e, 0x0005, 0x080c, 0x4e5b, 0x708f, +- 0x0000, 0x7087, 0x0000, 0x0005, 0x0006, 0x2001, 0xc60c, 0x2004, +- 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, 0x0126, 0x2091, +- 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, 0x012e, +- 0x001e, 0x000e, 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, 0xc77b, +- 0xa006, 0x200a, 0x8108, 0x1f04, 0x4f41, 0x015e, 0x0005, 0x00d6, +- 0x0036, 0x0156, 0x0136, 0x0146, 0x2069, 0xc652, 0xa006, 0x6002, +- 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2f6e, 0x231d, +- 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, +- 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, +- 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, +- 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, +- 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60be, 0x61a2, +- 0x00d6, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60a7, 0x0000, +- 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60ab, 0x0000, 0x00de, +- 0xa006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0xa006, 0x60b2, +- 0x60ae, 0x60b6, 0x60bb, 0x0520, 0x6814, 0xa084, 0x00ff, 0x6042, +- 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, +- 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04, +- 0x505c, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x5061, +- 0x2001, 0xc60c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xc60c, +- 0x2004, 0xd084, 0x1904, 0x5044, 0xa188, 0xc77b, 0x2104, 0xa065, +- 0x0904, 0x5044, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904, +- 0x5044, 0x6000, 0xd0c4, 0x0904, 0x5044, 0x0068, 0xa188, 0xc77b, +- 0x2104, 0xa065, 0x0904, 0x5028, 0x6004, 0xa084, 0x00ff, 0xa08e, +- 0x0006, 0x1904, 0x502d, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x5568, +- 0x05d0, 0x60a8, 0xa00d, 0x0188, 0x080c, 0x55b3, 0x1170, 0x694c, +- 0xd1fc, 0x1118, 0x080c, 0x5272, 0x0448, 0x080c, 0x5221, 0x694c, +- 0xd1ec, 0x1520, 0x080c, 0x545a, 0x0408, 0x694c, 0xa184, 0xa000, +- 0x0178, 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x5469, 0x0028, +- 0x080c, 0x5469, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x5221, 0x0070, +- 0x6050, 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, +- 0x0028, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x79b6, +- 0xa006, 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8, +- 0x2001, 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0, +- 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148, +- 0x6100, 0xd1fc, 0x0904, 0x4fe3, 0x2001, 0x0029, 0x2009, 0x1000, +- 0x0420, 0x2001, 0x0028, 0x00a8, 0x2009, 0xc60c, 0x210c, 0xd18c, +- 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, +- 0x0040, 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000, +- 0x0060, 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, +- 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005, +- 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0xa084, 0xff00, 0xa08e, +- 0xff00, 0x1120, 0x2001, 0xc8d3, 0x2064, 0x0080, 0x6844, 0x8007, +- 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1698, 0xa188, 0xc77b, +- 0x2104, 0xa065, 0x01d8, 0x080c, 0x56ed, 0x11d8, 0x2c70, 0x080c, +- 0x9586, 0x0568, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x601f, 0x0009, +- 0x600b, 0x0000, 0x6844, 0xa08e, 0xff00, 0x1110, 0x600b, 0x8000, +- 0x2009, 0x0100, 0x080c, 0x960c, 0xa006, 0x00b0, 0x2001, 0x0028, +- 0x0090, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, +- 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, +- 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, 0x2001, +- 0x002c, 0x0cc8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0x8007, +- 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1a04, 0x510d, 0xa188, +- 0xc77b, 0x2104, 0xa065, 0x01c0, 0x6004, 0xa084, 0x00ff, 0xa08e, +- 0x0006, 0x11a8, 0x2c70, 0x080c, 0x9586, 0x05e8, 0x2e00, 0x601a, +- 0x2d00, 0x6012, 0x600b, 0xffff, 0x601f, 0x000a, 0x2009, 0x0003, +- 0x080c, 0x960c, 0xa006, 0x0460, 0x2001, 0x0028, 0x0440, 0xa082, +- 0x0006, 0x1298, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1158, 0x60a0, +- 0xd0bc, 0x1140, 0x6100, 0xd1fc, 0x09e8, 0x2001, 0x0029, 0x2009, +- 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, 0xc60c, 0x210c, +- 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, 0x2001, +- 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, 0xa005, +- 0x012e, 0x00ee, 0x0005, 0x2001, 0x002c, 0x0cc8, 0x00f6, 0x00e6, +- 0x0126, 0x2091, 0x8000, 0x2011, 0x0000, 0x2079, 0xc600, 0x6944, +- 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x51d8, 0x080c, +- 0x533d, 0x11a0, 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x1270, +- 0x6864, 0xa0c6, 0x006f, 0x0150, 0x2001, 0xc635, 0x2004, 0xd0ac, +- 0x1904, 0x51c1, 0x60a0, 0xd0bc, 0x1904, 0x51c1, 0x6864, 0xa0c6, +- 0x006f, 0x0118, 0x2008, 0x0804, 0x518a, 0x6968, 0x2140, 0xa18c, +- 0xff00, 0x810f, 0x78d4, 0xd0ac, 0x1118, 0xa182, 0x0080, 0x06d0, +- 0xa182, 0x00ff, 0x16b8, 0x6a70, 0x6b6c, 0x7870, 0xa306, 0x1160, +- 0x7874, 0xa24e, 0x1118, 0x2208, 0x2310, 0x0460, 0xa9cc, 0xff00, +- 0x1118, 0x2208, 0x2310, 0x0430, 0x080c, 0x3f6e, 0x2c70, 0x0550, +- 0x2009, 0x0000, 0x2011, 0x0000, 0xa0c6, 0x4000, 0x1160, 0x0006, +- 0x2e60, 0x080c, 0x55de, 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108, +- 0xc18d, 0x000e, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, +- 0xa0c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, +- 0x1108, 0x0010, 0x2001, 0x4006, 0x6866, 0x696a, 0x6a6e, 0x2001, +- 0x0030, 0x0450, 0x080c, 0x9586, 0x1138, 0x2001, 0x4005, 0x2009, +- 0x0003, 0x2011, 0x0000, 0x0c80, 0x2e00, 0x601a, 0x080c, 0xb057, +- 0x2d00, 0x6012, 0x601f, 0x0001, 0x6838, 0xd88c, 0x0108, 0xc0f5, +- 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e46, 0x012e, 0x2001, +- 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009, +- 0x0002, 0x080c, 0x960c, 0xa006, 0xa005, 0x012e, 0x00ee, 0x00fe, +- 0x0005, 0x2001, 0x0028, 0x2009, 0x0000, 0x0cb0, 0x2009, 0xc60c, +- 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, +- 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x2009, 0x0000, 0x0c20, +- 0x2001, 0x0029, 0x2009, 0x0000, 0x08f8, 0x6944, 0x6e48, 0xa684, +- 0x3fff, 0xa082, 0x4000, 0x16b8, 0xa18c, 0xff00, 0x810f, 0xa182, +- 0x00ff, 0x12e0, 0xa188, 0xc77b, 0x2104, 0xa065, 0x01b8, 0x6004, +- 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11b0, 0x684c, 0xd0ec, 0x0120, +- 0x080c, 0x5469, 0x0431, 0x0030, 0x0421, 0x684c, 0xd0fc, 0x0110, +- 0x080c, 0x545a, 0x080c, 0x54a7, 0xa006, 0x00c8, 0x2001, 0x0028, +- 0x2009, 0x0000, 0x00a0, 0xa082, 0x0006, 0x1240, 0x6100, 0xd1fc, +- 0x0d20, 0x2001, 0x0029, 0x2009, 0x1000, 0x0048, 0x2001, 0x0029, +- 0x2009, 0x0000, 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x6050, 0xa00d, 0x0138, 0x2d00, +- 0x200a, 0x6803, 0x0000, 0x6052, 0x012e, 0x0005, 0x2d00, 0x6052, +- 0x604e, 0x6803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, 0x604c, +- 0xa005, 0x0170, 0x00e6, 0x2071, 0xc927, 0x7004, 0xa086, 0x0002, +- 0x0168, 0x00ee, 0x604c, 0x6802, 0x2d00, 0x604e, 0x012e, 0x0005, +- 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, 0x701c, 0xac06, +- 0x1d80, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002, 0x00ee, +- 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x604c, 0xa06d, 0x0130, +- 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x012e, 0x0005, +- 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, +- 0xad05, 0x0005, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0120, 0x2d00, +- 0x200a, 0x6086, 0x0005, 0x2d00, 0x6086, 0x6082, 0x0cd8, 0x0126, +- 0x00c6, 0x0026, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, +- 0x0110, 0xc285, 0x0008, 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e, +- 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, +- 0x0006, 0xa086, 0x0006, 0x1180, 0x609c, 0xd0ac, 0x0168, 0x2001, +- 0xc653, 0x2004, 0xd0a4, 0x0140, 0xa284, 0xff00, 0x8007, 0xa086, +- 0x0007, 0x1110, 0x2011, 0x0600, 0x000e, 0xa294, 0xff00, 0xa215, +- 0x6206, 0x0006, 0xa086, 0x0006, 0x1128, 0x6290, 0x82ff, 0x1110, +- 0x080c, 0x1519, 0x000e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, +- 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, +- 0x1178, 0x609c, 0xd0a4, 0x0160, 0x2001, 0xc653, 0x2004, 0xd0ac, +- 0x1138, 0xa284, 0x00ff, 0xa086, 0x0007, 0x1110, 0x2011, 0x0006, +- 0x000e, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x00ce, 0x012e, +- 0x0005, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x00b0, +- 0xa190, 0xc77b, 0x2204, 0xa065, 0x1180, 0x0016, 0x00d6, 0x080c, +- 0x15e5, 0x2d60, 0x00de, 0x001e, 0x0d80, 0x2c00, 0x2012, 0x60a7, +- 0x0000, 0x60ab, 0x0000, 0x080c, 0x4f47, 0xa006, 0x002e, 0x0005, +- 0x0126, 0x2091, 0x8000, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, +- 0x0001, 0x0480, 0x00d6, 0xa190, 0xc77b, 0x2204, 0xa06d, 0x0540, +- 0x2013, 0x0000, 0x00d6, 0x00c6, 0x2d60, 0x60a4, 0xa06d, 0x0110, +- 0x080c, 0x1619, 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x00ce, +- 0x00de, 0x00d6, 0x00c6, 0x68bc, 0x2060, 0x8cff, 0x0168, 0x600c, +- 0x0006, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0110, 0x080c, 0x1629, +- 0x080c, 0x95dc, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x080c, 0x1619, +- 0x00de, 0xa006, 0x002e, 0x012e, 0x0005, 0x0016, 0xa182, 0x00ff, +- 0x0218, 0xa085, 0x0001, 0x0030, 0xa188, 0xc77b, 0x2104, 0xa065, +- 0x0dc0, 0xa006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, +- 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002, 0x080c, +- 0x5f22, 0x1558, 0x60a0, 0xa086, 0x007e, 0x2069, 0xcc90, 0x0130, +- 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1500, 0x0098, 0x2d04, 0xd0e4, +- 0x01e0, 0x00d6, 0x2069, 0xcc8e, 0x00c6, 0x2061, 0xc8f9, 0x6810, +- 0x2062, 0x6814, 0x6006, 0x6818, 0x600a, 0x681c, 0x600e, 0x00ce, +- 0x00de, 0x8d69, 0x2d04, 0x2069, 0x0140, 0xa005, 0x1110, 0x2001, +- 0x0001, 0x6886, 0x2069, 0xc600, 0x68a6, 0x2069, 0xcc8e, 0x6808, +- 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0208, 0x603a, 0x6814, +- 0x6066, 0x2099, 0xcc96, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, +- 0x53a3, 0x2099, 0xcc9a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, +- 0x53a3, 0x2069, 0xccae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, +- 0x6072, 0x6818, 0x6076, 0x60a0, 0xa086, 0x007e, 0x1120, 0x2069, +- 0xcc8e, 0x690c, 0x616e, 0xa182, 0x0211, 0x1218, 0x2009, 0x0008, +- 0x0400, 0xa182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, 0xa182, +- 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0xa182, 0x0349, 0x1218, +- 0x2009, 0x0005, 0x0070, 0xa182, 0x0421, 0x1218, 0x2009, 0x0004, +- 0x0040, 0xa182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, 0x2009, +- 0x0002, 0x6192, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x0016, +- 0x0026, 0x00e6, 0x2071, 0xcc8d, 0x2e04, 0x6896, 0x2071, 0xcc8e, +- 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009, 0xc672, 0x210c, +- 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, +- 0x0120, 0xd1e4, 0x0110, 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee, +- 0x002e, 0x001e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, +- 0xa06d, 0x01c0, 0x6900, 0x81ff, 0x1540, 0x6a04, 0xa282, 0x0010, +- 0x1648, 0xad88, 0x0004, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, +- 0x0128, 0x8108, 0x1f04, 0x5415, 0x080c, 0x1519, 0x260a, 0x8210, +- 0x6a06, 0x0098, 0x080c, 0x1602, 0x01a8, 0x2d00, 0x60a6, 0x6803, +- 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, +- 0x1f04, 0x542d, 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x012e, +- 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6, +- 0x60a4, 0xa00d, 0x01a0, 0x2168, 0x6800, 0xa005, 0x1160, 0x080c, +- 0x5568, 0x1168, 0x200b, 0xffff, 0x6804, 0xa08a, 0x0002, 0x0218, +- 0x8001, 0x6806, 0x0020, 0x080c, 0x1619, 0x60a7, 0x0000, 0x00de, +- 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x55c6, 0x0010, +- 0x080c, 0x5221, 0x080c, 0x54e0, 0x1dd8, 0x080c, 0x54a7, 0x012e, +- 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x01c0, +- 0x6950, 0x81ff, 0x1540, 0x6a54, 0xa282, 0x0010, 0x1670, 0xad88, +- 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, +- 0x1f04, 0x547b, 0x080c, 0x1519, 0x260a, 0x8210, 0x6a56, 0x0098, +- 0x080c, 0x1602, 0x01d0, 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88, +- 0x0018, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5493, +- 0x6857, 0x0001, 0x6e62, 0x0010, 0x080c, 0x5272, 0x0089, 0x1de0, +- 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x79b6, 0x012e, 0x0005, 0xa01e, 0x0010, +- 0x2019, 0x0001, 0xa00e, 0x0126, 0x2091, 0x8000, 0x604c, 0x2068, +- 0x6000, 0xd0dc, 0x1170, 0x8dff, 0x01f8, 0x83ff, 0x0120, 0x6848, +- 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, +- 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x080c, 0x8fb7, 0x6a00, +- 0x604c, 0xad06, 0x1110, 0x624e, 0x0018, 0xa180, 0x0000, 0x2202, +- 0x82ff, 0x1110, 0x6152, 0x8dff, 0x012e, 0x0005, 0xa01e, 0x0010, +- 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x01e8, 0x83ff, +- 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, +- 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x6a00, +- 0x6080, 0xad06, 0x1110, 0x6282, 0x0018, 0xa180, 0x0000, 0x2202, +- 0x82ff, 0x1110, 0x6186, 0x8dff, 0x0005, 0xa016, 0x080c, 0x5562, +- 0x1110, 0x2011, 0x0001, 0x080c, 0x55ad, 0x1110, 0xa295, 0x0002, +- 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad3f, 0x0010, 0xa085, +- 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xaccf, 0x0010, +- 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad22, +- 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, +- 0xaceb, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, +- 0x080c, 0xad5b, 0x0010, 0xa085, 0x0001, 0x0005, 0x0126, 0x0006, +- 0x00d6, 0x2091, 0x8000, 0x6080, 0xa06d, 0x01a0, 0x6800, 0x0006, +- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xaefc, 0x0006, +- 0x6000, 0xd0fc, 0x0110, 0x080c, 0xc4d3, 0x000e, 0x080c, 0x580a, +- 0x000e, 0x0c50, 0x6083, 0x0000, 0x6087, 0x0000, 0x00de, 0x000e, +- 0x012e, 0x0005, 0x60a4, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, +- 0x00e6, 0x2170, 0x7000, 0xa005, 0x1168, 0x20a9, 0x0010, 0xae88, +- 0x0004, 0x2104, 0xa606, 0x0130, 0x8108, 0x1f04, 0x5571, 0xa085, +- 0x0001, 0x0008, 0xa006, 0x00ee, 0x0005, 0x00d6, 0x0126, 0x2091, +- 0x8000, 0x60a4, 0xa06d, 0x1128, 0x080c, 0x1602, 0x01a0, 0x2d00, +- 0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9, +- 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5591, 0xa085, 0x0001, +- 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x0126, 0x2091, +- 0x8000, 0x60a4, 0xa06d, 0x0130, 0x60a7, 0x0000, 0x080c, 0x1619, +- 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0x60a8, 0xa00d, 0x1118, +- 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7050, 0xa005, 0x1160, +- 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0128, 0x8108, +- 0x1f04, 0x55bc, 0xa085, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, +- 0x8000, 0x0c19, 0x1188, 0x200b, 0xffff, 0x00d6, 0x60a8, 0x2068, +- 0x6854, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6856, 0x0020, 0x080c, +- 0x1619, 0x60ab, 0x0000, 0x00de, 0x012e, 0x0005, 0x609c, 0xd0a4, +- 0x0005, 0x00f6, 0x080c, 0x5f22, 0x01b0, 0x71b8, 0x81ff, 0x1198, +- 0x71d4, 0xd19c, 0x0180, 0x2001, 0x007e, 0xa080, 0xc77b, 0x2004, +- 0xa07d, 0x0148, 0x7804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1118, +- 0x7800, 0xc0ed, 0x7802, 0x2079, 0xc652, 0x7804, 0xd0a4, 0x01e8, +- 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, +- 0x533d, 0x1168, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004, +- 0x0118, 0xa086, 0x0006, 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e, +- 0x8108, 0x1f04, 0x5606, 0x00ce, 0x015e, 0x080c, 0x570b, 0x0120, +- 0x2001, 0xc8fc, 0x200c, 0x0038, 0x2079, 0xc652, 0x7804, 0xd0a4, +- 0x0130, 0x2009, 0x07d0, 0x2011, 0x5631, 0x080c, 0x7036, 0x00fe, +- 0x0005, 0x2011, 0x5631, 0x080c, 0x6fad, 0x080c, 0x570b, 0x01f0, +- 0x2001, 0xc7f9, 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, +- 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, +- 0x5631, 0x080c, 0x7036, 0x00e6, 0x2071, 0xc600, 0x7073, 0x0000, +- 0x7077, 0x0000, 0x080c, 0x2c62, 0x00ee, 0x04b0, 0x0156, 0x00c6, +- 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1530, +- 0x6000, 0xd0ec, 0x0518, 0x0046, 0x62a0, 0xa294, 0x00ff, 0x8227, +- 0xa006, 0x2009, 0x0029, 0x080c, 0xc183, 0x6000, 0xc0e5, 0xc0ec, +- 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700, 0x6006, 0x2019, +- 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, +- 0x2009, 0x0000, 0x080c, 0xbeea, 0x007e, 0x004e, 0x001e, 0x8108, +- 0x1f04, 0x565c, 0x00ce, 0x015e, 0x0005, 0x00c6, 0x6018, 0x2060, +- 0x6000, 0xc0ec, 0x6002, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x080c, +- 0x15e5, 0x2d60, 0x0508, 0x2009, 0x00ff, 0x60a7, 0x0000, 0x60ab, +- 0x0000, 0x080c, 0x4f47, 0x6007, 0x0006, 0x6013, 0x00ff, 0x6017, +- 0xffff, 0x606f, 0x0200, 0x606c, 0x6093, 0x0002, 0x60bb, 0x0520, +- 0x60a3, 0x00ff, 0x60b7, 0x0000, 0x60af, 0x0000, 0x2c08, 0x2001, +- 0xc8d3, 0x2102, 0xa085, 0x0001, 0x00de, 0x00ce, 0x0005, 0x7818, +- 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, 0xd0bc, 0x0005, 0x0156, +- 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x20a9, 0x00ff, 0x2009, 0x0000, +- 0x0016, 0x080c, 0x533d, 0x1178, 0x2c70, 0x70ac, 0xa005, 0x0158, +- 0x2060, 0x620c, 0x0026, 0x6010, 0x2068, 0x080c, 0x761a, 0x002e, +- 0x2260, 0x82ff, 0x1db0, 0x001e, 0x8108, 0x1f04, 0x56d0, 0x002e, +- 0x00ce, 0x00de, 0x00ee, 0x015e, 0x0005, 0x0006, 0x0016, 0x0026, +- 0x6004, 0xa08c, 0x00ff, 0xa196, 0x0006, 0x0188, 0xa196, 0x0004, +- 0x0170, 0xa196, 0x0005, 0x0158, 0xa08c, 0xff00, 0x810f, 0xa196, +- 0x0006, 0x0128, 0xa196, 0x0004, 0x0110, 0xa196, 0x0005, 0x002e, +- 0x001e, 0x000e, 0x0005, 0x00f6, 0x2001, 0xc7f9, 0x2004, 0xa07d, +- 0x0110, 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091, +- 0x8000, 0x0006, 0x62a0, 0xa290, 0xc77b, 0x2204, 0xac06, 0x190c, +- 0x1519, 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, +- 0x6202, 0x002e, 0x012e, 0x0005, 0x2011, 0xc635, 0x2204, 0xd0cc, +- 0x0138, 0x2001, 0xc8fa, 0x200c, 0x2011, 0x5739, 0x080c, 0x7036, +- 0x0005, 0x2011, 0x5739, 0x080c, 0x6fad, 0x2011, 0xc635, 0x2204, +- 0xc0cc, 0x2012, 0x0005, 0x2071, 0xc734, 0x7003, 0x0001, 0x7007, +- 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, +- 0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, +- 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xc8c3, 0x7003, +- 0xc734, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xc8a3, 0x7013, +- 0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6, +- 0x2071, 0xc87b, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001, +- 0xc653, 0x2004, 0xd0fc, 0x1150, 0x2001, 0xc653, 0x2004, 0xa00e, +- 0xd09c, 0x0108, 0x8108, 0x7102, 0x0804, 0x57d4, 0x2001, 0xc672, +- 0x200c, 0xa184, 0x000f, 0x2009, 0xc673, 0x210c, 0x0002, 0x577c, +- 0x57af, 0x57b6, 0x57c0, 0x57c5, 0x577c, 0x577c, 0x577c, 0x579f, +- 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x7003, +- 0x0004, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1, 0xc8cc, +- 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f, +- 0x0005, 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002, +- 0x7007, 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088, +- 0x7007, 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001, +- 0x0003, 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, +- 0x709a, 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6, +- 0x2071, 0xc734, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, +- 0xa085, 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868, +- 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844, +- 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006, +- 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, +- 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, +- 0x00ee, 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904, +- 0x5863, 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xc600, 0xa016, +- 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, +- 0x702e, 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xc734, 0x701c, +- 0xa005, 0x1904, 0x5873, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x0e04, +- 0x582d, 0x2071, 0xc87b, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186, +- 0x0103, 0x1904, 0x5881, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009, +- 0x8020, 0x2200, 0x0002, 0x5871, 0x5848, 0x58e8, 0x58f5, 0x5871, +- 0x2071, 0x0000, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x7018, 0xd084, +- 0x1dd8, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, +- 0x2091, 0x4080, 0x2071, 0xc600, 0x702c, 0x206a, 0x2d00, 0x702e, +- 0x70b4, 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844, +- 0xa086, 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020, +- 0x0880, 0x2071, 0xc734, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, +- 0x7012, 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, +- 0x0c10, 0xa18c, 0x00ff, 0xa186, 0x0013, 0x01e0, 0xa186, 0x001b, +- 0x01c8, 0xa186, 0x0023, 0x01e8, 0xa186, 0x0017, 0x0130, 0xa186, +- 0x001e, 0x0118, 0xa18e, 0x001f, 0x19e0, 0x684c, 0xd0cc, 0x09c8, +- 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1998, 0x2009, 0x8021, +- 0x0804, 0x5841, 0x6848, 0xa005, 0x1960, 0x2009, 0x8022, 0x0804, +- 0x5841, 0x2071, 0x0000, 0x7018, 0xd084, 0x1918, 0x00e6, 0x2071, +- 0xc682, 0x7140, 0x00ee, 0x6838, 0xa102, 0x0a04, 0x5871, 0x684c, +- 0xa005, 0x1158, 0x00e6, 0x2071, 0xc682, 0x7004, 0x00ee, 0xd08c, +- 0x1904, 0x5871, 0x2001, 0x8024, 0x0040, 0x6848, 0xd084, 0x1118, +- 0x2001, 0x8023, 0x0010, 0x2001, 0x8027, 0x7022, 0x6840, 0x7026, +- 0x683c, 0x702a, 0x6850, 0x702e, 0x0026, 0x0036, 0x6b38, 0x2e10, +- 0xa290, 0x0072, 0x2d00, 0xa080, 0x0015, 0x200c, 0x2112, 0x8000, +- 0x200c, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x002e, 0x0804, 0x5856, +- 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x5871, 0x7186, 0xae90, +- 0x0003, 0xa210, 0x683c, 0x2012, 0x0080, 0x7084, 0x8008, 0xa092, +- 0x000f, 0x1a04, 0x5871, 0x7186, 0xae90, 0x0003, 0x8003, 0xa210, +- 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04, +- 0x585a, 0x718c, 0x7084, 0xa10a, 0x0a04, 0x585a, 0x2071, 0x0000, +- 0x7018, 0xd084, 0x1904, 0x585a, 0x2071, 0xc87b, 0x7000, 0xa086, +- 0x0002, 0x1150, 0x080c, 0x5b75, 0x2071, 0x0000, 0x701b, 0x0001, +- 0x2091, 0x4080, 0x0804, 0x585a, 0x080c, 0x5b9f, 0x2071, 0x0000, +- 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x585a, 0x0006, 0x684c, +- 0x0006, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0, +- 0x2001, 0x0000, 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e, +- 0x684a, 0x6952, 0x0005, 0x2071, 0xc734, 0x7004, 0x0002, 0x5951, +- 0x5962, 0x5b60, 0x5b61, 0x5b6e, 0x5b74, 0x5952, 0x5b51, 0x5ae7, +- 0x5b3d, 0x0005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5961, 0x2009, +- 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x700b, +- 0x0000, 0x012e, 0x2069, 0xc93a, 0x683c, 0xa005, 0x03f8, 0x11f0, +- 0x0126, 0x2091, 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xc740, +- 0x2004, 0xa10a, 0x0170, 0x0e04, 0x5985, 0x2069, 0x0000, 0x6818, +- 0xd084, 0x1158, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, +- 0x4080, 0x2069, 0xc93a, 0x683f, 0xffff, 0x012e, 0x2069, 0xc600, +- 0x6848, 0x6968, 0xa102, 0x2069, 0xc87b, 0x688a, 0x6984, 0x701c, +- 0xa06d, 0x0120, 0x81ff, 0x0904, 0x59db, 0x00a0, 0x81ff, 0x0904, +- 0x5aa1, 0x2071, 0xc87b, 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190, +- 0x2071, 0xc93a, 0x7038, 0xa005, 0x0128, 0x1b04, 0x5aa1, 0x713a, +- 0x0804, 0x5aa1, 0x2071, 0xc87b, 0x718c, 0x0126, 0x2091, 0x8000, +- 0x7084, 0xa10a, 0x0a04, 0x5abc, 0x0e04, 0x5a5d, 0x2071, 0x0000, +- 0x7018, 0xd084, 0x1904, 0x5a5d, 0x2001, 0xffff, 0x2071, 0xc93a, +- 0x703a, 0x2071, 0xc87b, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c, +- 0x5b75, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, +- 0x5a5d, 0x080c, 0x5b9f, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, +- 0x4080, 0x0804, 0x5a5d, 0x2071, 0xc87b, 0x7000, 0xa005, 0x0904, +- 0x5a83, 0x6934, 0xa186, 0x0103, 0x1904, 0x5a60, 0x684c, 0xd0bc, +- 0x1904, 0x5a83, 0x6948, 0x6844, 0xa105, 0x1904, 0x5a78, 0x2009, +- 0x8020, 0x2071, 0xc87b, 0x7000, 0x0002, 0x5a83, 0x5a43, 0x5a1b, +- 0x5a2d, 0x59fa, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1, +- 0xc8cc, 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071, +- 0xc8c3, 0xad80, 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, +- 0x700b, 0x0000, 0x2e10, 0x080c, 0x164d, 0x2071, 0xc734, 0x7007, +- 0x0009, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, +- 0x5aa1, 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, +- 0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092, +- 0x000f, 0x1a04, 0x5aa1, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, +- 0x2012, 0x8210, 0x6840, 0x2012, 0x7186, 0x2071, 0xc734, 0x080c, +- 0x5bf6, 0x0804, 0x5aa1, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5a5d, +- 0x2071, 0x0000, 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, 0x7026, +- 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, 0x2071, +- 0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x012e, 0x0804, 0x5aa1, +- 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, +- 0xa18e, 0x001f, 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084, +- 0x00ff, 0xa086, 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, 0x59f1, +- 0x6844, 0xa086, 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, 0x2009, +- 0x8020, 0x0804, 0x59f1, 0x2071, 0xc734, 0x080c, 0x5c08, 0x01c8, +- 0x2071, 0xc734, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, +- 0x0003, 0x1130, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e, +- 0x7007, 0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0904, +- 0x5b61, 0x0126, 0x2091, 0x8000, 0x2071, 0xc734, 0x7008, 0xa086, +- 0x0001, 0x1180, 0x0e04, 0x5aba, 0x2009, 0x000d, 0x7030, 0x200a, +- 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, 0x1110, +- 0x7007, 0x0001, 0x012e, 0x0005, 0x2071, 0xc734, 0x080c, 0x5c08, +- 0x0518, 0x2071, 0xc87b, 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099, +- 0xc87c, 0x20a1, 0xc8a3, 0x53a3, 0x7087, 0x0000, 0x2071, 0xc734, +- 0x2069, 0xc8c3, 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, 0x682e, +- 0x7078, 0x6832, 0x2d10, 0x080c, 0x164d, 0x7007, 0x0008, 0x2001, +- 0xffff, 0x2071, 0xc93a, 0x703a, 0x012e, 0x0804, 0x5aa1, 0x2069, +- 0xc8c3, 0x6808, 0xa08e, 0x0000, 0x0904, 0x5b3c, 0xa08e, 0x0200, +- 0x0904, 0x5b3a, 0xa08e, 0x0100, 0x1904, 0x5b3c, 0x0126, 0x2091, +- 0x8000, 0x0e04, 0x5b38, 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0, +- 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e, +- 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, 0x1220, +- 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000, +- 0x2001, 0xc8a0, 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, 0xc87b, +- 0x689c, 0x699e, 0x2069, 0xc93a, 0xa102, 0x1118, 0x683c, 0xa005, +- 0x1368, 0x2001, 0xc8a1, 0x200c, 0x810d, 0x693e, 0x0038, 0x2009, +- 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, +- 0x012e, 0x0010, 0x7007, 0x0005, 0x0005, 0x2001, 0xc8c5, 0x2004, +- 0xa08e, 0x0100, 0x1128, 0x7007, 0x0001, 0x080c, 0x5bf6, 0x0005, +- 0xa08e, 0x0000, 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005, +- 0x0005, 0x701c, 0xa06d, 0x0158, 0x080c, 0x5c08, 0x0140, 0x7007, +- 0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0110, 0x0005, +- 0x0005, 0x7050, 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, 0x0030, +- 0xa086, 0x0200, 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, 0x5bc4, +- 0x7006, 0x080c, 0x5bf6, 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071, +- 0xc87b, 0x7184, 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, 0x0003, +- 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, 0x5b99, +- 0x2014, 0x722a, 0x8000, 0x0f04, 0x5b99, 0x2014, 0x722e, 0x8000, +- 0x0f04, 0x5b99, 0x2014, 0x723a, 0x8000, 0x0f04, 0x5b99, 0x2014, +- 0x723e, 0xa180, 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6, +- 0x0156, 0x2071, 0xc87b, 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086, +- 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, +- 0x2014, 0x722a, 0x8000, 0x0f04, 0x5bbb, 0x2014, 0x723a, 0x8000, +- 0x2014, 0x723e, 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, 0x8042, +- 0x7022, 0x015e, 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, +- 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, 0x706c, +- 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, 0x7072, +- 0x7132, 0x700c, 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, 0x8000, +- 0x0e04, 0x5bf0, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, +- 0x0001, 0x700b, 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, 0x0005, +- 0x2001, 0x0006, 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d, +- 0x0170, 0x0126, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, +- 0x701e, 0xa005, 0x1108, 0x701a, 0x012e, 0x080c, 0x1619, 0x0005, +- 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c, +- 0xa10e, 0x0110, 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, 0xa102, +- 0x1118, 0x2300, 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, 0x8002, +- 0x0005, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, +- 0x0126, 0x2091, 0x8000, 0x2009, 0xc959, 0x2104, 0xc08d, 0x200a, +- 0x012e, 0x080c, 0x1669, 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220, +- 0xa082, 0x001d, 0x0033, 0x0010, 0x080c, 0x1519, 0x6027, 0x1e00, +- 0x0005, 0x5d2f, 0x5caa, 0x5cc2, 0x5cff, 0x5d20, 0x5d5a, 0x5d6c, +- 0x5cc2, 0x5d46, 0x5c4e, 0x5c7c, 0x5c4d, 0x0005, 0x00d6, 0x2069, +- 0x0200, 0x6804, 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, +- 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002, 0x080c, 0x6024, 0x6028, +- 0xa085, 0x0600, 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c, +- 0x2d04, 0x7002, 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, +- 0x0046, 0x0056, 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, +- 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, +- 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, +- 0xc90c, 0x2d04, 0x7002, 0x080c, 0x60b1, 0x6028, 0xa085, 0x0600, +- 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002, +- 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, +- 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee, +- 0x00de, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c, +- 0x5dd7, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f, +- 0x0020, 0x080c, 0x5dd7, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, +- 0x001f, 0x0005, 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc, +- 0x1568, 0xd1e4, 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001, +- 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb, 0x0156, +- 0x6803, 0x0100, 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04, +- 0x5cdc, 0x0048, 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4, +- 0x1130, 0x1f04, 0x5ce6, 0x080c, 0x5f73, 0x015e, 0x0078, 0x015e, +- 0x708f, 0x0028, 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, 0x001d, +- 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3, +- 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb, +- 0x6803, 0x0080, 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, +- 0x1130, 0xa184, 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, 0x708f, +- 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, +- 0x6803, 0x00a0, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, +- 0x1f06, 0x708f, 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, 0x080c, +- 0x5e49, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x5dd7, 0x0016, 0x080c, +- 0x1f06, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e, +- 0x0020, 0x708f, 0x001f, 0x080c, 0x5dd7, 0x0005, 0x6803, 0x00a0, +- 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, +- 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, +- 0x0021, 0x0005, 0x080c, 0x5e49, 0x6124, 0xd1d4, 0x1150, 0xd1dc, +- 0x1128, 0xd1e4, 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, +- 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4, +- 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f, +- 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, 0x0010, +- 0x708f, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, ++ 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x080c, 0x4e5b, 0x0005, 0x00f6, ++ 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, ++ 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1103, 0x1178, ++ 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, ++ 0x1110, 0x70bb, 0x0001, 0x708f, 0x0012, 0x0029, 0x0010, 0x080c, ++ 0x4e74, 0x00fe, 0x0005, 0x708f, 0x0013, 0x080c, 0x4ef8, 0x20a3, ++ 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f3d, ++ 0x1160, 0x7078, 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, ++ 0x080c, 0x4df5, 0x0110, 0x080c, 0x4f1b, 0x20a9, 0x0008, 0x2298, ++ 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, ++ 0x080c, 0x4e5b, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, ++ 0x4e31, 0x080c, 0x6fc6, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, ++ 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, ++ 0x0014, 0x0029, 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, ++ 0x0015, 0x080c, 0x4ef8, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, ++ 0x2011, 0xcc8e, 0x080c, 0x4f3d, 0x11a8, 0x7078, 0xa005, 0x1190, ++ 0x7158, 0xa186, 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, ++ 0xff00, 0x810f, 0x080c, 0x4df5, 0x0128, 0x080c, 0x442b, 0x0110, ++ 0x080c, 0x2a11, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e5b, 0x0005, ++ 0x00f6, 0x7084, 0xa005, 0x05b8, 0x2011, 0x4e31, 0x080c, 0x6fc6, ++ 0xa086, 0x0014, 0x1570, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1105, ++ 0x1540, 0x7834, 0x2011, 0x0100, 0xa21e, 0x1148, 0x7a38, 0xd2fc, ++ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x0060, 0xa005, ++ 0x11c0, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, ++ 0x0001, 0x708b, 0x0000, 0x7a38, 0xd2f4, 0x0138, 0x2001, 0xc674, ++ 0x2004, 0xd0a4, 0x1110, 0x70d7, 0x0008, 0x708f, 0x0016, 0x0029, ++ 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x20e1, 0x9080, 0x20e1, ++ 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, ++ 0x3430, 0x2011, 0xcc8e, 0x708f, 0x0017, 0x080c, 0x4f3d, 0x1150, ++ 0x7078, 0xa005, 0x1138, 0x080c, 0x4d6a, 0x1170, 0xa085, 0x0001, ++ 0x080c, 0x2a11, 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e5b, ++ 0x0010, 0x080c, 0x4981, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, ++ 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, 0x0084, 0x1168, 0x2079, ++ 0xcc80, 0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, ++ 0x708f, 0x0018, 0x0029, 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, ++ 0x708f, 0x0019, 0x080c, 0x4ef8, 0x20a3, 0x1106, 0x20a3, 0x0000, ++ 0x3430, 0x2099, 0xcc8e, 0x2039, 0xcc0e, 0x27a0, 0x20a9, 0x0040, ++ 0x53a3, 0x080c, 0x4f3d, 0x11e8, 0x2728, 0x2514, 0x8207, 0xa084, ++ 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, ++ 0x7054, 0x2310, 0x8214, 0xa2a0, 0xcc0e, 0x2414, 0xa38c, 0x0001, ++ 0x0118, 0xa294, 0xff00, 0x0018, 0xa294, 0x00ff, 0x8007, 0xa215, ++ 0x2222, 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x60c3, 0x0084, 0x080c, 0x4e5b, 0x0005, 0x00f6, ++ 0x7084, 0xa005, 0x01d0, 0x2011, 0x4e31, 0x080c, 0x6fc6, 0xa086, ++ 0x0084, 0x1188, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1107, 0x1158, ++ 0x7834, 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4ede, 0x708f, ++ 0x001a, 0x0029, 0x0010, 0x080c, 0x4e74, 0x00fe, 0x0005, 0x708f, ++ 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, ++ 0x020b, 0x7484, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, ++ 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e5b, 0x0005, ++ 0x0005, 0x0005, 0x0086, 0x0096, 0x2029, 0xc653, 0x252c, 0x20a9, ++ 0x0008, 0x2041, 0xcc0e, 0x28a0, 0x2099, 0xcc8e, 0x53a3, 0x20a9, ++ 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0110, 0x2011, 0x0000, 0x2800, ++ 0xa200, 0x200c, 0xa1a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, ++ 0x0008, 0x8211, 0x1f04, 0x4d7f, 0x0804, 0x4ded, 0x82ff, 0x1160, ++ 0xd5d4, 0x0120, 0xa1a6, 0x3fff, 0x0d90, 0x0020, 0xa1a6, 0x3fff, ++ 0x0904, 0x4ded, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, ++ 0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, ++ 0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, ++ 0x1f04, 0x4da5, 0x04d0, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, ++ 0x1f04, 0x4db7, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0158, 0x0006, ++ 0x2039, 0x0007, 0x2200, 0xa73a, 0x000e, 0x27a8, 0xa5a8, 0x0010, ++ 0x1f04, 0x4dc6, 0x7552, 0xa5c8, 0x2f6e, 0x292d, 0xa5ac, 0x00ff, ++ 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1, 0x001e, ++ 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a, 0x707b, ++ 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0xa085, 0x0001, 0x0028, 0xa006, 0x0018, 0xa006, ++ 0x080c, 0x1519, 0x009e, 0x008e, 0x0005, 0x2118, 0x2021, 0x0000, ++ 0x2001, 0x0007, 0xa39a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, ++ 0x2118, 0x84ff, 0x0120, 0xa39a, 0x0010, 0x8421, 0x1de0, 0x2021, ++ 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0xa238, 0x2704, ++ 0xa42c, 0x11b8, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x2f6e, 0x242d, ++ 0xa5ac, 0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, ++ 0x29f1, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x707b, 0x0001, 0xa084, ++ 0x0000, 0x0005, 0x00e6, 0x2071, 0xc600, 0x707f, 0x0000, 0x00ee, ++ 0x0005, 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, ++ 0x8c0e, 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, ++ 0x0000, 0x0126, 0x2091, 0x8000, 0x2071, 0xc623, 0x2073, 0x0000, ++ 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x4f04, 0x001e, ++ 0xa094, 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, ++ 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011, 0xc931, ++ 0x2013, 0x0000, 0x7087, 0x0000, 0x012e, 0x20e1, 0x9080, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x080c, 0x8c05, 0x2009, 0x07d0, 0x2011, ++ 0x4e31, 0x080c, 0x704f, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, 0x0002, ++ 0x080c, 0x8f31, 0x080c, 0x8e07, 0x0036, 0x2019, 0x0000, 0x080c, ++ 0x8e92, 0x003e, 0x2009, 0x00f7, 0x080c, 0x4f04, 0x2061, 0xc93a, ++ 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0xc600, 0x6003, 0x0001, ++ 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, ++ 0x2011, 0x4ea9, 0x080c, 0x6fba, 0x012e, 0x00ce, 0x002e, 0x001e, ++ 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x0100, ++ 0x080c, 0x8c0e, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000, 0x0120, ++ 0x7003, 0x1000, 0x7003, 0x0000, 0x080c, 0x5f43, 0x01a8, 0x080c, ++ 0x5f61, 0x1190, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0016, 0x080c, ++ 0x2a95, 0x2001, 0xc8d6, 0x2102, 0x001e, 0x2001, 0xc8e6, 0x2003, ++ 0x0000, 0x080c, 0x5e73, 0x0030, 0x2001, 0x0001, 0x080c, 0x296d, ++ 0x080c, 0x4e74, 0x012e, 0x000e, 0x00ee, 0x0005, 0x20a9, 0x0040, ++ 0x20a1, 0xcdc0, 0x2099, 0xcc8e, 0x3304, 0x8007, 0x20a2, 0x9398, ++ 0x94a0, 0x1f04, 0x4ee4, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, ++ 0x2099, 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, ++ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, ++ 0x20a9, 0x000c, 0x53a6, 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, ++ 0x810f, 0x2001, 0xc631, 0x2004, 0xa005, 0x1138, 0x2001, 0xc615, ++ 0x2004, 0xa084, 0x00ff, 0xa105, 0x0010, 0xa185, 0x00f7, 0x604a, ++ 0x000e, 0x00ce, 0x0005, 0x0016, 0x0046, 0x2001, 0xc653, 0x2004, ++ 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc1a9, ++ 0x2001, 0xc60c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, ++ 0x0000, 0x080c, 0x2e19, 0x004e, 0x001e, 0x0005, 0x080c, 0x4e74, ++ 0x708f, 0x0000, 0x7087, 0x0000, 0x0005, 0x0006, 0x2001, 0xc60c, ++ 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, 0x0126, ++ 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, ++ 0x012e, 0x001e, 0x000e, 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, ++ 0xc77b, 0xa006, 0x200a, 0x8108, 0x1f04, 0x4f5a, 0x015e, 0x0005, ++ 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146, 0x2069, 0xc652, 0xa006, ++ 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2f6e, ++ 0x231d, 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, ++ 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, ++ 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, ++ 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, ++ 0x6086, 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60be, ++ 0x61a2, 0x00d6, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60a7, ++ 0x0000, 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60ab, 0x0000, ++ 0x00de, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0xa006, ++ 0x60b2, 0x60ae, 0x60b6, 0x60bb, 0x0520, 0x6814, 0xa084, 0x00ff, ++ 0x6042, 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, ++ 0x1a04, 0x5075, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, ++ 0x507a, 0x2001, 0xc60c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, ++ 0xc60c, 0x2004, 0xd084, 0x1904, 0x505d, 0xa188, 0xc77b, 0x2104, ++ 0xa065, 0x0904, 0x505d, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, ++ 0x1904, 0x505d, 0x6000, 0xd0c4, 0x0904, 0x505d, 0x0068, 0xa188, ++ 0xc77b, 0x2104, 0xa065, 0x0904, 0x5041, 0x6004, 0xa084, 0x00ff, ++ 0xa08e, 0x0006, 0x1904, 0x5046, 0x60a4, 0xa00d, 0x0118, 0x080c, ++ 0x5581, 0x05d0, 0x60a8, 0xa00d, 0x0188, 0x080c, 0x55cc, 0x1170, ++ 0x694c, 0xd1fc, 0x1118, 0x080c, 0x528b, 0x0448, 0x080c, 0x523a, ++ 0x694c, 0xd1ec, 0x1520, 0x080c, 0x5473, 0x0408, 0x694c, 0xa184, ++ 0xa000, 0x0178, 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x5482, ++ 0x0028, 0x080c, 0x5482, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x523a, ++ 0x0070, 0x6050, 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, ++ 0x6052, 0x0028, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, ++ 0x79cf, 0xa006, 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, ++ 0x04e8, 0x2001, 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, ++ 0x12a0, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, ++ 0x1148, 0x6100, 0xd1fc, 0x0904, 0x4ffc, 0x2001, 0x0029, 0x2009, ++ 0x1000, 0x0420, 0x2001, 0x0028, 0x00a8, 0x2009, 0xc60c, 0x210c, ++ 0xd18c, 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, ++ 0x0004, 0x0040, 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, ++ 0x1000, 0x0060, 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, ++ 0x0000, 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, ++ 0x0005, 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0xa084, 0xff00, ++ 0xa08e, 0xff00, 0x1120, 0x2001, 0xc8d3, 0x2064, 0x0080, 0x6844, ++ 0x8007, 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1698, 0xa188, ++ 0xc77b, 0x2104, 0xa065, 0x01d8, 0x080c, 0x5706, 0x11d8, 0x2c70, ++ 0x080c, 0x95a6, 0x0568, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x601f, ++ 0x0009, 0x600b, 0x0000, 0x6844, 0xa08e, 0xff00, 0x1110, 0x600b, ++ 0x8000, 0x2009, 0x0100, 0x080c, 0x962c, 0xa006, 0x00b0, 0x2001, ++ 0x0028, 0x0090, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x0118, 0x2001, ++ 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, ++ 0x0029, 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, ++ 0x2001, 0x002c, 0x0cc8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, ++ 0x8007, 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1a04, 0x5126, ++ 0xa188, 0xc77b, 0x2104, 0xa065, 0x01c0, 0x6004, 0xa084, 0x00ff, ++ 0xa08e, 0x0006, 0x11a8, 0x2c70, 0x080c, 0x95a6, 0x05e8, 0x2e00, ++ 0x601a, 0x2d00, 0x6012, 0x600b, 0xffff, 0x601f, 0x000a, 0x2009, ++ 0x0003, 0x080c, 0x962c, 0xa006, 0x0460, 0x2001, 0x0028, 0x0440, ++ 0xa082, 0x0006, 0x1298, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1158, ++ 0x60a0, 0xd0bc, 0x1140, 0x6100, 0xd1fc, 0x09e8, 0x2001, 0x0029, ++ 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, 0xc60c, ++ 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, ++ 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, ++ 0xa005, 0x012e, 0x00ee, 0x0005, 0x2001, 0x002c, 0x0cc8, 0x00f6, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x2011, 0x0000, 0x2079, 0xc600, ++ 0x6944, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x51f1, ++ 0x080c, 0x5356, 0x11a0, 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, ++ 0x1270, 0x6864, 0xa0c6, 0x006f, 0x0150, 0x2001, 0xc635, 0x2004, ++ 0xd0ac, 0x1904, 0x51da, 0x60a0, 0xd0bc, 0x1904, 0x51da, 0x6864, ++ 0xa0c6, 0x006f, 0x0118, 0x2008, 0x0804, 0x51a3, 0x6968, 0x2140, ++ 0xa18c, 0xff00, 0x810f, 0x78d4, 0xd0ac, 0x1118, 0xa182, 0x0080, ++ 0x06d0, 0xa182, 0x00ff, 0x16b8, 0x6a70, 0x6b6c, 0x7870, 0xa306, ++ 0x1160, 0x7874, 0xa24e, 0x1118, 0x2208, 0x2310, 0x0460, 0xa9cc, ++ 0xff00, 0x1118, 0x2208, 0x2310, 0x0430, 0x080c, 0x3f89, 0x2c70, ++ 0x0550, 0x2009, 0x0000, 0x2011, 0x0000, 0xa0c6, 0x4000, 0x1160, ++ 0x0006, 0x2e60, 0x080c, 0x55f7, 0x1108, 0xc185, 0x7000, 0xd0bc, ++ 0x0108, 0xc18d, 0x000e, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, ++ 0x0060, 0xa0c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, ++ 0x4009, 0x1108, 0x0010, 0x2001, 0x4006, 0x6866, 0x696a, 0x6a6e, ++ 0x2001, 0x0030, 0x0450, 0x080c, 0x95a6, 0x1138, 0x2001, 0x4005, ++ 0x2009, 0x0003, 0x2011, 0x0000, 0x0c80, 0x2e00, 0x601a, 0x080c, ++ 0xb077, 0x2d00, 0x6012, 0x601f, 0x0001, 0x6838, 0xd88c, 0x0108, ++ 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e46, 0x012e, ++ 0x2001, 0x0000, 0x080c, 0x5298, 0x2001, 0x0002, 0x080c, 0x52aa, ++ 0x2009, 0x0002, 0x080c, 0x962c, 0xa006, 0xa005, 0x012e, 0x00ee, ++ 0x00fe, 0x0005, 0x2001, 0x0028, 0x2009, 0x0000, 0x0cb0, 0x2009, ++ 0xc60c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, ++ 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x2009, 0x0000, ++ 0x0c20, 0x2001, 0x0029, 0x2009, 0x0000, 0x08f8, 0x6944, 0x6e48, ++ 0xa684, 0x3fff, 0xa082, 0x4000, 0x16b8, 0xa18c, 0xff00, 0x810f, ++ 0xa182, 0x00ff, 0x12e0, 0xa188, 0xc77b, 0x2104, 0xa065, 0x01b8, ++ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11b0, 0x684c, 0xd0ec, ++ 0x0120, 0x080c, 0x5482, 0x0431, 0x0030, 0x0421, 0x684c, 0xd0fc, ++ 0x0110, 0x080c, 0x5473, 0x080c, 0x54c0, 0xa006, 0x00c8, 0x2001, ++ 0x0028, 0x2009, 0x0000, 0x00a0, 0xa082, 0x0006, 0x1240, 0x6100, ++ 0xd1fc, 0x0d20, 0x2001, 0x0029, 0x2009, 0x1000, 0x0048, 0x2001, ++ 0x0029, 0x2009, 0x0000, 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, ++ 0xa005, 0x0005, 0x0126, 0x2091, 0x8000, 0x6050, 0xa00d, 0x0138, ++ 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x012e, 0x0005, 0x2d00, ++ 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, ++ 0x604c, 0xa005, 0x0170, 0x00e6, 0x2071, 0xc927, 0x7004, 0xa086, ++ 0x0002, 0x0168, 0x00ee, 0x604c, 0x6802, 0x2d00, 0x604e, 0x012e, ++ 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, 0x701c, ++ 0xac06, 0x1d80, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002, ++ 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x604c, 0xa06d, ++ 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x012e, ++ 0x0005, 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, ++ 0x604e, 0xad05, 0x0005, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0120, ++ 0x2d00, 0x200a, 0x6086, 0x0005, 0x2d00, 0x6086, 0x6082, 0x0cd8, ++ 0x0126, 0x00c6, 0x0026, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, ++ 0xa005, 0x0110, 0xc285, 0x0008, 0xc284, 0x6202, 0x002e, 0x00ce, ++ 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, ++ 0x6204, 0x0006, 0xa086, 0x0006, 0x1180, 0x609c, 0xd0ac, 0x0168, ++ 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0140, 0xa284, 0xff00, 0x8007, ++ 0xa086, 0x0007, 0x1110, 0x2011, 0x0600, 0x000e, 0xa294, 0xff00, ++ 0xa215, 0x6206, 0x0006, 0xa086, 0x0006, 0x1128, 0x6290, 0x82ff, ++ 0x1110, 0x080c, 0x1519, 0x000e, 0x00ce, 0x012e, 0x0005, 0x0126, ++ 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, ++ 0x0006, 0x1178, 0x609c, 0xd0a4, 0x0160, 0x2001, 0xc653, 0x2004, ++ 0xd0ac, 0x1138, 0xa284, 0x00ff, 0xa086, 0x0007, 0x1110, 0x2011, ++ 0x0006, 0x000e, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x00ce, ++ 0x012e, 0x0005, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, ++ 0x00b0, 0xa190, 0xc77b, 0x2204, 0xa065, 0x1180, 0x0016, 0x00d6, ++ 0x080c, 0x15e5, 0x2d60, 0x00de, 0x001e, 0x0d80, 0x2c00, 0x2012, ++ 0x60a7, 0x0000, 0x60ab, 0x0000, 0x080c, 0x4f60, 0xa006, 0x002e, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x0026, 0xa182, 0x00ff, 0x0218, ++ 0xa085, 0x0001, 0x0480, 0x00d6, 0xa190, 0xc77b, 0x2204, 0xa06d, ++ 0x0540, 0x2013, 0x0000, 0x00d6, 0x00c6, 0x2d60, 0x60a4, 0xa06d, ++ 0x0110, 0x080c, 0x1619, 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, ++ 0x00ce, 0x00de, 0x00d6, 0x00c6, 0x68bc, 0x2060, 0x8cff, 0x0168, ++ 0x600c, 0x0006, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0110, 0x080c, ++ 0x1629, 0x080c, 0x95fc, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x080c, ++ 0x1619, 0x00de, 0xa006, 0x002e, 0x012e, 0x0005, 0x0016, 0xa182, ++ 0x00ff, 0x0218, 0xa085, 0x0001, 0x0030, 0xa188, 0xc77b, 0x2104, ++ 0xa065, 0x0dc0, 0xa006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, ++ 0x0146, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002, ++ 0x080c, 0x5f3b, 0x1558, 0x60a0, 0xa086, 0x007e, 0x2069, 0xcc90, ++ 0x0130, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1500, 0x0098, 0x2d04, ++ 0xd0e4, 0x01e0, 0x00d6, 0x2069, 0xcc8e, 0x00c6, 0x2061, 0xc8f9, ++ 0x6810, 0x2062, 0x6814, 0x6006, 0x6818, 0x600a, 0x681c, 0x600e, ++ 0x00ce, 0x00de, 0x8d69, 0x2d04, 0x2069, 0x0140, 0xa005, 0x1110, ++ 0x2001, 0x0001, 0x6886, 0x2069, 0xc600, 0x68a6, 0x2069, 0xcc8e, ++ 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0208, 0x603a, ++ 0x6814, 0x6066, 0x2099, 0xcc96, 0xac88, 0x000a, 0x21a0, 0x20a9, ++ 0x0004, 0x53a3, 0x2099, 0xcc9a, 0xac88, 0x0006, 0x21a0, 0x20a9, ++ 0x0004, 0x53a3, 0x2069, 0xccae, 0x6808, 0x606a, 0x690c, 0x616e, ++ 0x6810, 0x6072, 0x6818, 0x6076, 0x60a0, 0xa086, 0x007e, 0x1120, ++ 0x2069, 0xcc8e, 0x690c, 0x616e, 0xa182, 0x0211, 0x1218, 0x2009, ++ 0x0008, 0x0400, 0xa182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, ++ 0xa182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0xa182, 0x0349, ++ 0x1218, 0x2009, 0x0005, 0x0070, 0xa182, 0x0421, 0x1218, 0x2009, ++ 0x0004, 0x0040, 0xa182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, ++ 0x2009, 0x0002, 0x6192, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, ++ 0x0016, 0x0026, 0x00e6, 0x2071, 0xcc8d, 0x2e04, 0x6896, 0x2071, ++ 0xcc8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009, 0xc672, ++ 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, 0xc2ac, ++ 0xd0c4, 0x0120, 0xd1e4, 0x0110, 0xc2bd, 0x0008, 0xc2bc, 0x6a02, ++ 0x00ee, 0x002e, 0x001e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, ++ 0x60a4, 0xa06d, 0x01c0, 0x6900, 0x81ff, 0x1540, 0x6a04, 0xa282, ++ 0x0010, 0x1648, 0xad88, 0x0004, 0x20a9, 0x0010, 0x2104, 0xa086, ++ 0xffff, 0x0128, 0x8108, 0x1f04, 0x542e, 0x080c, 0x1519, 0x260a, ++ 0x8210, 0x6a06, 0x0098, 0x080c, 0x1602, 0x01a8, 0x2d00, 0x60a6, ++ 0x6803, 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, ++ 0x8108, 0x1f04, 0x5446, 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, ++ 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, ++ 0x00d6, 0x60a4, 0xa00d, 0x01a0, 0x2168, 0x6800, 0xa005, 0x1160, ++ 0x080c, 0x5581, 0x1168, 0x200b, 0xffff, 0x6804, 0xa08a, 0x0002, ++ 0x0218, 0x8001, 0x6806, 0x0020, 0x080c, 0x1619, 0x60a7, 0x0000, ++ 0x00de, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x55df, ++ 0x0010, 0x080c, 0x523a, 0x080c, 0x54f9, 0x1dd8, 0x080c, 0x54c0, ++ 0x012e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a8, 0xa06d, ++ 0x01c0, 0x6950, 0x81ff, 0x1540, 0x6a54, 0xa282, 0x0010, 0x1670, ++ 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, ++ 0x8108, 0x1f04, 0x5494, 0x080c, 0x1519, 0x260a, 0x8210, 0x6a56, ++ 0x0098, 0x080c, 0x1602, 0x01d0, 0x2d00, 0x60aa, 0x6853, 0x0000, ++ 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, ++ 0x54ac, 0x6857, 0x0001, 0x6e62, 0x0010, 0x080c, 0x528b, 0x0089, ++ 0x1de0, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x79cf, 0x012e, 0x0005, 0xa01e, ++ 0x0010, 0x2019, 0x0001, 0xa00e, 0x0126, 0x2091, 0x8000, 0x604c, ++ 0x2068, 0x6000, 0xd0dc, 0x1170, 0x8dff, 0x01f8, 0x83ff, 0x0120, ++ 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, ++ 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x080c, 0x8fd0, ++ 0x6a00, 0x604c, 0xad06, 0x1110, 0x624e, 0x0018, 0xa180, 0x0000, ++ 0x2202, 0x82ff, 0x1110, 0x6152, 0x8dff, 0x012e, 0x0005, 0xa01e, ++ 0x0010, 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x01e8, ++ 0x83ff, 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, ++ 0x1118, 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, ++ 0x6a00, 0x6080, 0xad06, 0x1110, 0x6282, 0x0018, 0xa180, 0x0000, ++ 0x2202, 0x82ff, 0x1110, 0x6186, 0x8dff, 0x0005, 0xa016, 0x080c, ++ 0x557b, 0x1110, 0x2011, 0x0001, 0x080c, 0x55c6, 0x1110, 0xa295, ++ 0x0002, 0x0005, 0x080c, 0x55f7, 0x0118, 0x080c, 0xad5f, 0x0010, ++ 0xa085, 0x0001, 0x0005, 0x080c, 0x55f7, 0x0118, 0x080c, 0xacef, ++ 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55f7, 0x0118, 0x080c, ++ 0xad42, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55f7, 0x0118, ++ 0x080c, 0xad0b, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55f7, ++ 0x0118, 0x080c, 0xad7b, 0x0010, 0xa085, 0x0001, 0x0005, 0x0126, ++ 0x0006, 0x00d6, 0x2091, 0x8000, 0x6080, 0xa06d, 0x01a0, 0x6800, ++ 0x0006, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xaf1c, ++ 0x0006, 0x6000, 0xd0fc, 0x0110, 0x080c, 0xc4f9, 0x000e, 0x080c, ++ 0x5823, 0x000e, 0x0c50, 0x6083, 0x0000, 0x6087, 0x0000, 0x00de, ++ 0x000e, 0x012e, 0x0005, 0x60a4, 0xa00d, 0x1118, 0xa085, 0x0001, ++ 0x0005, 0x00e6, 0x2170, 0x7000, 0xa005, 0x1168, 0x20a9, 0x0010, ++ 0xae88, 0x0004, 0x2104, 0xa606, 0x0130, 0x8108, 0x1f04, 0x558a, ++ 0xa085, 0x0001, 0x0008, 0xa006, 0x00ee, 0x0005, 0x00d6, 0x0126, ++ 0x2091, 0x8000, 0x60a4, 0xa06d, 0x1128, 0x080c, 0x1602, 0x01a0, ++ 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, ++ 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x55aa, 0xa085, ++ 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x0126, ++ 0x2091, 0x8000, 0x60a4, 0xa06d, 0x0130, 0x60a7, 0x0000, 0x080c, ++ 0x1619, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0x60a8, 0xa00d, ++ 0x1118, 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7050, 0xa005, ++ 0x1160, 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0128, ++ 0x8108, 0x1f04, 0x55d5, 0xa085, 0x0001, 0x00ee, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x0c19, 0x1188, 0x200b, 0xffff, 0x00d6, 0x60a8, ++ 0x2068, 0x6854, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6856, 0x0020, ++ 0x080c, 0x1619, 0x60ab, 0x0000, 0x00de, 0x012e, 0x0005, 0x609c, ++ 0xd0a4, 0x0005, 0x00f6, 0x080c, 0x5f3b, 0x01b0, 0x71b8, 0x81ff, ++ 0x1198, 0x71d4, 0xd19c, 0x0180, 0x2001, 0x007e, 0xa080, 0xc77b, ++ 0x2004, 0xa07d, 0x0148, 0x7804, 0xa084, 0x00ff, 0xa086, 0x0006, ++ 0x1118, 0x7800, 0xc0ed, 0x7802, 0x2079, 0xc652, 0x7804, 0xd0a4, ++ 0x01e8, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, ++ 0x080c, 0x5356, 0x1168, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, ++ 0x0004, 0x0118, 0xa086, 0x0006, 0x1118, 0x6000, 0xc0ed, 0x6002, ++ 0x001e, 0x8108, 0x1f04, 0x561f, 0x00ce, 0x015e, 0x080c, 0x5724, ++ 0x0120, 0x2001, 0xc8fc, 0x200c, 0x0038, 0x2079, 0xc652, 0x7804, ++ 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, 0x564a, 0x080c, 0x704f, ++ 0x00fe, 0x0005, 0x2011, 0x564a, 0x080c, 0x6fc6, 0x080c, 0x5724, ++ 0x01f0, 0x2001, 0xc7f9, 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, ++ 0x2102, 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0130, 0x2009, 0x07d0, ++ 0x2011, 0x564a, 0x080c, 0x704f, 0x00e6, 0x2071, 0xc600, 0x7073, ++ 0x0000, 0x7077, 0x0000, 0x080c, 0x2c62, 0x00ee, 0x04b0, 0x0156, ++ 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x5356, ++ 0x1530, 0x6000, 0xd0ec, 0x0518, 0x0046, 0x62a0, 0xa294, 0x00ff, ++ 0x8227, 0xa006, 0x2009, 0x0029, 0x080c, 0xc1a9, 0x6000, 0xc0e5, ++ 0xc0ec, 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700, 0x6006, ++ 0x2019, 0x0029, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, 0x080c, ++ 0x7a27, 0x2009, 0x0000, 0x080c, 0xbf10, 0x007e, 0x004e, 0x001e, ++ 0x8108, 0x1f04, 0x5675, 0x00ce, 0x015e, 0x0005, 0x00c6, 0x6018, ++ 0x2060, 0x6000, 0xc0ec, 0x6002, 0x00ce, 0x0005, 0x00c6, 0x00d6, ++ 0x080c, 0x15e5, 0x2d60, 0x0508, 0x2009, 0x00ff, 0x60a7, 0x0000, ++ 0x60ab, 0x0000, 0x080c, 0x4f60, 0x6007, 0x0006, 0x6013, 0x00ff, ++ 0x6017, 0xffff, 0x606f, 0x0200, 0x606c, 0x6093, 0x0002, 0x60bb, ++ 0x0520, 0x60a3, 0x00ff, 0x60b7, 0x0000, 0x60af, 0x0000, 0x2c08, ++ 0x2001, 0xc8d3, 0x2102, 0xa085, 0x0001, 0x00de, 0x00ce, 0x0005, ++ 0x7818, 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, 0xd0bc, 0x0005, ++ 0x0156, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x20a9, 0x00ff, 0x2009, ++ 0x0000, 0x0016, 0x080c, 0x5356, 0x1178, 0x2c70, 0x70ac, 0xa005, ++ 0x0158, 0x2060, 0x620c, 0x0026, 0x6010, 0x2068, 0x080c, 0x7633, ++ 0x002e, 0x2260, 0x82ff, 0x1db0, 0x001e, 0x8108, 0x1f04, 0x56e9, ++ 0x002e, 0x00ce, 0x00de, 0x00ee, 0x015e, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x6004, 0xa08c, 0x00ff, 0xa196, 0x0006, 0x0188, 0xa196, ++ 0x0004, 0x0170, 0xa196, 0x0005, 0x0158, 0xa08c, 0xff00, 0x810f, ++ 0xa196, 0x0006, 0x0128, 0xa196, 0x0004, 0x0110, 0xa196, 0x0005, ++ 0x002e, 0x001e, 0x000e, 0x0005, 0x00f6, 0x2001, 0xc7f9, 0x2004, ++ 0xa07d, 0x0110, 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, ++ 0x2091, 0x8000, 0x0006, 0x62a0, 0xa290, 0xc77b, 0x2204, 0xac06, ++ 0x190c, 0x1519, 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, ++ 0xc2fc, 0x6202, 0x002e, 0x012e, 0x0005, 0x2011, 0xc635, 0x2204, ++ 0xd0cc, 0x0138, 0x2001, 0xc8fa, 0x200c, 0x2011, 0x5752, 0x080c, ++ 0x704f, 0x0005, 0x2011, 0x5752, 0x080c, 0x6fc6, 0x2011, 0xc635, ++ 0x2204, 0xc0cc, 0x2012, 0x0005, 0x2071, 0xc734, 0x7003, 0x0001, ++ 0x7007, 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, ++ 0x701f, 0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, ++ 0x705b, 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xc8c3, ++ 0x7003, 0xc734, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xc8a3, ++ 0x7013, 0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, ++ 0x00e6, 0x2071, 0xc87b, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, ++ 0x2001, 0xc653, 0x2004, 0xd0fc, 0x1150, 0x2001, 0xc653, 0x2004, ++ 0xa00e, 0xd09c, 0x0108, 0x8108, 0x7102, 0x0804, 0x57ed, 0x2001, ++ 0xc672, 0x200c, 0xa184, 0x000f, 0x2009, 0xc673, 0x210c, 0x0002, ++ 0x5795, 0x57c8, 0x57cf, 0x57d9, 0x57de, 0x5795, 0x5795, 0x5795, ++ 0x57b8, 0x5795, 0x5795, 0x5795, 0x5795, 0x5795, 0x5795, 0x5795, ++ 0x7003, 0x0004, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1, ++ 0xc8cc, 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, ++ 0x708f, 0x0005, 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, ++ 0x0002, 0x7007, 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, ++ 0x0088, 0x7007, 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, ++ 0x2001, 0x0003, 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, ++ 0x8007, 0x709a, 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, ++ 0x00e6, 0x2071, 0xc734, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, ++ 0x702a, 0xa085, 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, ++ 0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, ++ 0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, ++ 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, ++ 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, ++ 0xa006, 0x00ee, 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, ++ 0x1904, 0x587c, 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xc600, ++ 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, ++ 0x1dc8, 0x702e, 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xc734, ++ 0x701c, 0xa005, 0x1904, 0x588c, 0x20a9, 0x0032, 0x0f04, 0x588a, ++ 0x0e04, 0x5846, 0x2071, 0xc87b, 0x7200, 0x82ff, 0x05d8, 0x6934, ++ 0xa186, 0x0103, 0x1904, 0x589a, 0x6948, 0x6844, 0xa105, 0x1540, ++ 0x2009, 0x8020, 0x2200, 0x0002, 0x588a, 0x5861, 0x5901, 0x590e, ++ 0x588a, 0x2071, 0x0000, 0x20a9, 0x0032, 0x0f04, 0x588a, 0x7018, ++ 0xd084, 0x1dd8, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, ++ 0x0001, 0x2091, 0x4080, 0x2071, 0xc600, 0x702c, 0x206a, 0x2d00, ++ 0x702e, 0x70b4, 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, ++ 0x6844, 0xa086, 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, ++ 0x8020, 0x0880, 0x2071, 0xc734, 0x2d08, 0x206b, 0x0000, 0x7010, ++ 0x8000, 0x7012, 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, ++ 0x711e, 0x0c10, 0xa18c, 0x00ff, 0xa186, 0x0013, 0x01e0, 0xa186, ++ 0x001b, 0x01c8, 0xa186, 0x0023, 0x01e8, 0xa186, 0x0017, 0x0130, ++ 0xa186, 0x001e, 0x0118, 0xa18e, 0x001f, 0x19e0, 0x684c, 0xd0cc, ++ 0x09c8, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1998, 0x2009, ++ 0x8021, 0x0804, 0x585a, 0x6848, 0xa005, 0x1960, 0x2009, 0x8022, ++ 0x0804, 0x585a, 0x2071, 0x0000, 0x7018, 0xd084, 0x1918, 0x00e6, ++ 0x2071, 0xc682, 0x7140, 0x00ee, 0x6838, 0xa102, 0x0a04, 0x588a, ++ 0x684c, 0xa005, 0x1158, 0x00e6, 0x2071, 0xc682, 0x7004, 0x00ee, ++ 0xd08c, 0x1904, 0x588a, 0x2001, 0x8024, 0x0040, 0x6848, 0xd084, ++ 0x1118, 0x2001, 0x8023, 0x0010, 0x2001, 0x8027, 0x7022, 0x6840, ++ 0x7026, 0x683c, 0x702a, 0x6850, 0x702e, 0x0026, 0x0036, 0x6b38, ++ 0x2e10, 0xa290, 0x0072, 0x2d00, 0xa080, 0x0015, 0x200c, 0x2112, ++ 0x8000, 0x200c, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x002e, 0x0804, ++ 0x586f, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x588a, 0x7186, ++ 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x0080, 0x7084, 0x8008, ++ 0xa092, 0x000f, 0x1a04, 0x588a, 0x7186, 0xae90, 0x0003, 0x8003, ++ 0xa210, 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, ++ 0x0a04, 0x5873, 0x718c, 0x7084, 0xa10a, 0x0a04, 0x5873, 0x2071, ++ 0x0000, 0x7018, 0xd084, 0x1904, 0x5873, 0x2071, 0xc87b, 0x7000, ++ 0xa086, 0x0002, 0x1150, 0x080c, 0x5b8e, 0x2071, 0x0000, 0x701b, ++ 0x0001, 0x2091, 0x4080, 0x0804, 0x5873, 0x080c, 0x5bb8, 0x2071, ++ 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x5873, 0x0006, ++ 0x684c, 0x0006, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, ++ 0x20a0, 0x2001, 0x0000, 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, ++ 0x000e, 0x684a, 0x6952, 0x0005, 0x2071, 0xc734, 0x7004, 0x0002, ++ 0x596a, 0x597b, 0x5b79, 0x5b7a, 0x5b87, 0x5b8d, 0x596b, 0x5b6a, ++ 0x5b00, 0x5b56, 0x0005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x597a, ++ 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, ++ 0x700b, 0x0000, 0x012e, 0x2069, 0xc93a, 0x683c, 0xa005, 0x03f8, ++ 0x11f0, 0x0126, 0x2091, 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, ++ 0xc740, 0x2004, 0xa10a, 0x0170, 0x0e04, 0x599e, 0x2069, 0x0000, ++ 0x6818, 0xd084, 0x1158, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, ++ 0x2091, 0x4080, 0x2069, 0xc93a, 0x683f, 0xffff, 0x012e, 0x2069, ++ 0xc600, 0x6848, 0x6968, 0xa102, 0x2069, 0xc87b, 0x688a, 0x6984, ++ 0x701c, 0xa06d, 0x0120, 0x81ff, 0x0904, 0x59f4, 0x00a0, 0x81ff, ++ 0x0904, 0x5aba, 0x2071, 0xc87b, 0x7184, 0x7088, 0xa10a, 0x1258, ++ 0x7190, 0x2071, 0xc93a, 0x7038, 0xa005, 0x0128, 0x1b04, 0x5aba, ++ 0x713a, 0x0804, 0x5aba, 0x2071, 0xc87b, 0x718c, 0x0126, 0x2091, ++ 0x8000, 0x7084, 0xa10a, 0x0a04, 0x5ad5, 0x0e04, 0x5a76, 0x2071, ++ 0x0000, 0x7018, 0xd084, 0x1904, 0x5a76, 0x2001, 0xffff, 0x2071, ++ 0xc93a, 0x703a, 0x2071, 0xc87b, 0x7000, 0xa086, 0x0002, 0x1150, ++ 0x080c, 0x5b8e, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, ++ 0x0804, 0x5a76, 0x080c, 0x5bb8, 0x2071, 0x0000, 0x701b, 0x0001, ++ 0x2091, 0x4080, 0x0804, 0x5a76, 0x2071, 0xc87b, 0x7000, 0xa005, ++ 0x0904, 0x5a9c, 0x6934, 0xa186, 0x0103, 0x1904, 0x5a79, 0x684c, ++ 0xd0bc, 0x1904, 0x5a9c, 0x6948, 0x6844, 0xa105, 0x1904, 0x5a91, ++ 0x2009, 0x8020, 0x2071, 0xc87b, 0x7000, 0x0002, 0x5a9c, 0x5a5c, ++ 0x5a34, 0x5a46, 0x5a13, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, ++ 0x20a1, 0xc8cc, 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, ++ 0x2071, 0xc8c3, 0xad80, 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, ++ 0x0002, 0x700b, 0x0000, 0x2e10, 0x080c, 0x164d, 0x2071, 0xc734, ++ 0x7007, 0x0009, 0x0804, 0x5aba, 0x7084, 0x8008, 0xa092, 0x001e, ++ 0x1a04, 0x5aba, 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, ++ 0x2071, 0xc734, 0x080c, 0x5c0f, 0x0804, 0x5aba, 0x7084, 0x8008, ++ 0xa092, 0x000f, 0x1a04, 0x5aba, 0xae90, 0x0003, 0x8003, 0xa210, ++ 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7186, 0x2071, 0xc734, ++ 0x080c, 0x5c0f, 0x0804, 0x5aba, 0x0126, 0x2091, 0x8000, 0x0e04, ++ 0x5a76, 0x2071, 0x0000, 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, ++ 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, ++ 0x2071, 0xc734, 0x080c, 0x5c0f, 0x0804, 0x5aba, 0x012e, 0x0804, ++ 0x5aba, 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, ++ 0x0118, 0xa18e, 0x001f, 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, ++ 0xa084, 0x00ff, 0xa086, 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, ++ 0x5a0a, 0x6844, 0xa086, 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, ++ 0x2009, 0x8020, 0x0804, 0x5a0a, 0x2071, 0xc734, 0x080c, 0x5c21, ++ 0x01c8, 0x2071, 0xc734, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, ++ 0xa086, 0x0003, 0x1130, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, ++ 0x710e, 0x7007, 0x0003, 0x080c, 0x5c3a, 0x7050, 0xa086, 0x0100, ++ 0x0904, 0x5b7a, 0x0126, 0x2091, 0x8000, 0x2071, 0xc734, 0x7008, ++ 0xa086, 0x0001, 0x1180, 0x0e04, 0x5ad3, 0x2009, 0x000d, 0x7030, ++ 0x200a, 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, ++ 0x1110, 0x7007, 0x0001, 0x012e, 0x0005, 0x2071, 0xc734, 0x080c, ++ 0x5c21, 0x0518, 0x2071, 0xc87b, 0x7084, 0x700a, 0x20a9, 0x0020, ++ 0x2099, 0xc87c, 0x20a1, 0xc8a3, 0x53a3, 0x7087, 0x0000, 0x2071, ++ 0xc734, 0x2069, 0xc8c3, 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, ++ 0x682e, 0x7078, 0x6832, 0x2d10, 0x080c, 0x164d, 0x7007, 0x0008, ++ 0x2001, 0xffff, 0x2071, 0xc93a, 0x703a, 0x012e, 0x0804, 0x5aba, ++ 0x2069, 0xc8c3, 0x6808, 0xa08e, 0x0000, 0x0904, 0x5b55, 0xa08e, ++ 0x0200, 0x0904, 0x5b53, 0xa08e, 0x0100, 0x1904, 0x5b55, 0x0126, ++ 0x2091, 0x8000, 0x0e04, 0x5b51, 0x2069, 0x0000, 0x6818, 0xd084, ++ 0x15c0, 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, ++ 0x706e, 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, ++ 0x1220, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, ++ 0x0000, 0x2001, 0xc8a0, 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, ++ 0xc87b, 0x689c, 0x699e, 0x2069, 0xc93a, 0xa102, 0x1118, 0x683c, ++ 0xa005, 0x1368, 0x2001, 0xc8a1, 0x200c, 0x810d, 0x693e, 0x0038, ++ 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, ++ 0x0001, 0x012e, 0x0010, 0x7007, 0x0005, 0x0005, 0x2001, 0xc8c5, ++ 0x2004, 0xa08e, 0x0100, 0x1128, 0x7007, 0x0001, 0x080c, 0x5c0f, ++ 0x0005, 0xa08e, 0x0000, 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, ++ 0x0005, 0x0005, 0x701c, 0xa06d, 0x0158, 0x080c, 0x5c21, 0x0140, ++ 0x7007, 0x0003, 0x080c, 0x5c3a, 0x7050, 0xa086, 0x0100, 0x0110, ++ 0x0005, 0x0005, 0x7050, 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, ++ 0x0030, 0xa086, 0x0200, 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, ++ 0x5bdd, 0x7006, 0x080c, 0x5c0f, 0x0005, 0x0005, 0x00e6, 0x0156, ++ 0x2071, 0xc87b, 0x7184, 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, ++ 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, ++ 0x5bb2, 0x2014, 0x722a, 0x8000, 0x0f04, 0x5bb2, 0x2014, 0x722e, ++ 0x8000, 0x0f04, 0x5bb2, 0x2014, 0x723a, 0x8000, 0x0f04, 0x5bb2, ++ 0x2014, 0x723e, 0xa180, 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, ++ 0x00e6, 0x0156, 0x2071, 0xc87b, 0x7184, 0x81ff, 0x01d8, 0xa006, ++ 0x7086, 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, ++ 0x8000, 0x2014, 0x722a, 0x8000, 0x0f04, 0x5bd4, 0x2014, 0x723a, ++ 0x8000, 0x2014, 0x723e, 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, ++ 0x8042, 0x7022, 0x015e, 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, ++ 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, ++ 0x706c, 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, ++ 0x7072, 0x7132, 0x700c, 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, ++ 0x8000, 0x0e04, 0x5c09, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, ++ 0x2001, 0x0001, 0x700b, 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, ++ 0x0005, 0x2001, 0x0006, 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, ++ 0xa06d, 0x0170, 0x0126, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, ++ 0x2d04, 0x701e, 0xa005, 0x1108, 0x701a, 0x012e, 0x080c, 0x1619, ++ 0x0005, 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, ++ 0x230c, 0xa10e, 0x0110, 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, ++ 0xa102, 0x1118, 0x2300, 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, ++ 0x8002, 0x0005, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, ++ 0x0000, 0x0126, 0x2091, 0x8000, 0x2009, 0xc959, 0x2104, 0xc08d, ++ 0x200a, 0x012e, 0x080c, 0x1669, 0x0005, 0x708c, 0xa08a, 0x0029, ++ 0x1220, 0xa082, 0x001d, 0x0033, 0x0010, 0x080c, 0x1519, 0x6027, ++ 0x1e00, 0x0005, 0x5d48, 0x5cc3, 0x5cdb, 0x5d18, 0x5d39, 0x5d73, ++ 0x5d85, 0x5cdb, 0x5d5f, 0x5c67, 0x5c95, 0x5c66, 0x0005, 0x00d6, ++ 0x2069, 0x0200, 0x6804, 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, ++ 0x708f, 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002, 0x080c, 0x603d, ++ 0x6028, 0xa085, 0x0600, 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, ++ 0xc90c, 0x2d04, 0x7002, 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, ++ 0x0036, 0x0046, 0x0056, 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, ++ 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, ++ 0x6804, 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, ++ 0x2069, 0xc90c, 0x2d04, 0x7002, 0x080c, 0x60ca, 0x6028, 0xa085, ++ 0x0600, 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c, 0x2d04, ++ 0x7002, 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, ++ 0x0056, 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, ++ 0x00ee, 0x00de, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, ++ 0x080c, 0x5df0, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, ++ 0x708f, 0x0020, 0x080c, 0x5df0, 0x0028, 0x708f, 0x001d, 0x0010, ++ 0x708f, 0x001f, 0x0005, 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, ++ 0xd1dc, 0x1568, 0xd1e4, 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, ++ 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f6b, 0x080c, 0x25fb, ++ 0x0156, 0x6803, 0x0100, 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, ++ 0x1f04, 0x5cf5, 0x0048, 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, ++ 0xd0d4, 0x1130, 0x1f04, 0x5cff, 0x080c, 0x5f8c, 0x015e, 0x0078, ++ 0x015e, 0x708f, 0x0028, 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, ++ 0x001d, 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, ++ 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f6b, 0x080c, ++ 0x25fb, 0x6803, 0x0080, 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, ++ 0xd1e4, 0x1130, 0xa184, 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, ++ 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, ++ 0x0005, 0x6803, 0x00a0, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, ++ 0x080c, 0x1f06, 0x708f, 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, ++ 0x080c, 0x5e62, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x5df0, 0x0016, ++ 0x080c, 0x1f06, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, ++ 0x001e, 0x0020, 0x708f, 0x001f, 0x080c, 0x5df0, 0x0005, 0x6803, ++ 0x00a0, 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, ++ 0xd1e4, 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, ++ 0x708f, 0x0021, 0x0005, 0x080c, 0x5e62, 0x6124, 0xd1d4, 0x1150, ++ 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, ++ 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, ++ 0xd1d4, 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, ++ 0x708f, 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, ++ 0x0010, 0x708f, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, ++ 0x0126, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, ++ 0x8000, 0x080c, 0x5f3b, 0x11e8, 0x2001, 0xc60c, 0x200c, 0xd1b4, ++ 0x01c0, 0xc1b4, 0x2102, 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, ++ 0xd0cc, 0x0158, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, ++ 0x2001, 0xc600, 0x2003, 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, ++ 0x0408, 0x080c, 0x5f57, 0x0150, 0x080c, 0x5f4d, 0x1138, 0x2001, ++ 0x0001, 0x080c, 0x296d, 0x080c, 0x5f12, 0x00a0, 0x080c, 0x5e5f, ++ 0x0178, 0x2001, 0x0001, 0x080c, 0x296d, 0x708c, 0xa086, 0x001e, ++ 0x0120, 0x708c, 0xa086, 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, ++ 0x708f, 0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, ++ 0x0026, 0x2011, 0x5e01, 0x080c, 0x7089, 0x002e, 0x0016, 0x0026, ++ 0x2009, 0x0064, 0x2011, 0x5e01, 0x080c, 0x7080, 0x002e, 0x001e, ++ 0x0005, 0x00e6, 0x00f6, 0x0016, 0x080c, 0x8c0e, 0x2071, 0xc600, ++ 0x080c, 0x5d9c, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, 0x8c0e, + 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000, +- 0x080c, 0x5f22, 0x11e8, 0x2001, 0xc60c, 0x200c, 0xd1b4, 0x01c0, +- 0xc1b4, 0x2102, 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc, +- 0x0158, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, +- 0xc600, 0x2003, 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, +- 0x080c, 0x5f3e, 0x0150, 0x080c, 0x5f34, 0x1138, 0x2001, 0x0001, +- 0x080c, 0x296d, 0x080c, 0x5ef9, 0x00a0, 0x080c, 0x5e46, 0x0178, +- 0x2001, 0x0001, 0x080c, 0x296d, 0x708c, 0xa086, 0x001e, 0x0120, +- 0x708c, 0xa086, 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, 0x708f, +- 0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, +- 0x2011, 0x5de8, 0x080c, 0x7070, 0x002e, 0x0016, 0x0026, 0x2009, +- 0x0064, 0x2011, 0x5de8, 0x080c, 0x7067, 0x002e, 0x001e, 0x0005, +- 0x00e6, 0x00f6, 0x0016, 0x080c, 0x8bf5, 0x2071, 0xc600, 0x080c, +- 0x5d83, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, +- 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, 0x8bf5, 0x2061, +- 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000, 0x6028, +- 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, +- 0x080c, 0x8f18, 0x080c, 0x8dee, 0x080c, 0x7024, 0x0036, 0x2019, +- 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x080c, 0xc579, +- 0x080c, 0xc594, 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008, +- 0x080c, 0x12e1, 0x2001, 0x0001, 0x080c, 0x296d, 0x012e, 0x00fe, +- 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x2001, +- 0xc600, 0x2004, 0xa086, 0x0004, 0x0140, 0x2001, 0xc8e5, 0x2003, +- 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c, +- 0x0005, 0x6800, 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156, +- 0x20a9, 0x002d, 0x1d04, 0x5e52, 0x2091, 0x6000, 0x1f04, 0x5e52, +- 0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, +- 0x0140, 0x2071, 0xc600, 0x2001, 0xc8e6, 0x200c, 0xa186, 0x0000, +- 0x0158, 0xa186, 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, 0xa186, +- 0x0003, 0x0158, 0x0804, 0x5ee7, 0x708f, 0x0022, 0x0040, 0x708f, +- 0x0021, 0x0028, 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, 0x6043, +- 0x0000, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, +- 0x2a1c, 0x0026, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, +- 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c, +- 0x8e79, 0x003e, 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b, +- 0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, 0x8000, +- 0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804, +- 0x5ef5, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4, +- 0x1130, 0x6803, 0x0100, 0x1f04, 0x5eaa, 0x080c, 0x5f73, 0x012e, +- 0x015e, 0x080c, 0x5f34, 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050, +- 0x0006, 0xa085, 0x0020, 0x6052, 0x080c, 0x5f73, 0xa006, 0x8001, +- 0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, +- 0x5f73, 0x0016, 0x0026, 0x2009, 0x00c8, 0x2011, 0x5df5, 0x080c, +- 0x7036, 0x002e, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0004, 0x080c, +- 0x5c34, 0x080c, 0x5f34, 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc, +- 0x1100, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce, +- 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, +- 0x2071, 0xc600, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x2001, 0xc8d6, +- 0x2003, 0x0000, 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000, +- 0x2001, 0x0000, 0x080c, 0x2a1c, 0x6803, 0x0000, 0x6043, 0x0090, +- 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, +- 0x00ce, 0x0005, 0x0006, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa, +- 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, +- 0xa086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, +- 0xa084, 0x0030, 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, 0x2001, +- 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, 0x0005, +- 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0020, +- 0x000e, 0x0005, 0x2001, 0xc60c, 0x2004, 0xd0a4, 0x0170, 0x080c, +- 0x2a3c, 0x0036, 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, 0x080c, +- 0x2e19, 0x001e, 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071, +- 0xc60c, 0x2e04, 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, 0xffef, +- 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec, +- 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x602f, +- 0x0100, 0x602f, 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, +- 0x602a, 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e, +- 0x60f2, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, +- 0x2a1c, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0, +- 0x000e, 0x6052, 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, +- 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, +- 0xc600, 0x6020, 0xa084, 0x0080, 0x0138, 0x2001, 0xc60c, 0x200c, +- 0xc1bd, 0x2102, 0x0804, 0x601c, 0x2001, 0xc60c, 0x200c, 0xc1bc, +- 0x2102, 0x6028, 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803, +- 0x0090, 0x20a9, 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5fcb, +- 0x2091, 0x6000, 0x1f04, 0x5fcb, 0x2011, 0x0003, 0x080c, 0x8f0e, +- 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x2019, 0x0000, +- 0x080c, 0x8e79, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, +- 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff, +- 0x1110, 0x080c, 0x1f06, 0x60e3, 0x0000, 0x2001, 0xc8d6, 0x2004, +- 0x080c, 0x2a1c, 0x60e2, 0x080c, 0x25fb, 0x6803, 0x0080, 0x20a9, +- 0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, +- 0x0138, 0x1d04, 0x6001, 0x2091, 0x6000, 0x1f04, 0x6001, 0x0820, +- 0x6028, 0xa085, 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887, +- 0x0001, 0x0008, 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, +- 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, +- 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, 0x2069, +- 0x0140, 0x6020, 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904, +- 0x6078, 0x6803, 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, +- 0x0000, 0x080c, 0x2a1c, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, +- 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027, +- 0x0400, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f, 0x0026, 0x7003, +- 0x0001, 0x20a9, 0x0002, 0x1d04, 0x605b, 0x2091, 0x6000, 0x1f04, +- 0x605b, 0x0804, 0x60a9, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, +- 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084, +- 0x1a00, 0x1508, 0x1d04, 0x6067, 0x2091, 0x6000, 0x1f04, 0x6067, +- 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, +- 0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x6803, 0x00a0, +- 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, +- 0xa085, 0x0001, 0x00b0, 0x080c, 0x25fb, 0x6803, 0x0080, 0x2069, +- 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, +- 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2, +- 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, +- 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, +- 0x2061, 0x0100, 0x2071, 0xc600, 0x6020, 0xa084, 0x00c0, 0x01e0, +- 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, +- 0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x2069, 0x0140, +- 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, +- 0x2003, 0x0001, 0x0804, 0x614e, 0x2001, 0xc60c, 0x200c, 0xd1b4, +- 0x1160, 0xc1b5, 0x2102, 0x080c, 0x5ddd, 0x2069, 0x0140, 0x080c, +- 0x25fb, 0x6803, 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, +- 0xa005, 0x1118, 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff, +- 0x602a, 0x6027, 0x0200, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f, +- 0x0027, 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x6105, 0x2091, +- 0x6000, 0x1f04, 0x6105, 0x0804, 0x614e, 0x6027, 0x1e00, 0x2009, +- 0x1e00, 0xe000, 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0, +- 0x1d04, 0x610d, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, +- 0x6f0a, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, +- 0xc93a, 0x7018, 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011, +- 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c, 0x7070, 0x002e, ++ 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, ++ 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, 0x080c, 0x703d, 0x0036, ++ 0x2019, 0x0000, 0x080c, 0x8e92, 0x003e, 0x60e3, 0x0000, 0x080c, ++ 0xc59f, 0x080c, 0xc5ba, 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, ++ 0x0008, 0x080c, 0x12e1, 0x2001, 0x0001, 0x080c, 0x296d, 0x012e, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, ++ 0x2001, 0xc600, 0x2004, 0xa086, 0x0004, 0x0140, 0x2001, 0xc8e5, ++ 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0005, 0x6020, ++ 0xd09c, 0x0005, 0x6800, 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, ++ 0x0156, 0x20a9, 0x002d, 0x1d04, 0x5e6b, 0x2091, 0x6000, 0x1f04, ++ 0x5e6b, 0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, ++ 0x2069, 0x0140, 0x2071, 0xc600, 0x2001, 0xc8e6, 0x200c, 0xa186, ++ 0x0000, 0x0158, 0xa186, 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, ++ 0xa186, 0x0003, 0x0158, 0x0804, 0x5f00, 0x708f, 0x0022, 0x0040, ++ 0x708f, 0x0021, 0x0028, 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, ++ 0x6043, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, ++ 0x080c, 0x2a1c, 0x0026, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, ++ 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, 0x0036, 0x2019, 0x0000, ++ 0x080c, 0x8e92, 0x003e, 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, ++ 0x602b, 0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, ++ 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, ++ 0x0804, 0x5f0e, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, ++ 0xd1d4, 0x1130, 0x6803, 0x0100, 0x1f04, 0x5ec3, 0x080c, 0x5f8c, ++ 0x012e, 0x015e, 0x080c, 0x5f4d, 0x01a8, 0x6044, 0xa005, 0x0168, ++ 0x6050, 0x0006, 0xa085, 0x0020, 0x6052, 0x080c, 0x5f8c, 0xa006, ++ 0x8001, 0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, ++ 0x080c, 0x5f8c, 0x0016, 0x0026, 0x2009, 0x00c8, 0x2011, 0x5e0e, ++ 0x080c, 0x704f, 0x002e, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0004, ++ 0x080c, 0x5c4d, 0x080c, 0x5f4d, 0x0148, 0x6804, 0xd0d4, 0x1130, ++ 0xd0dc, 0x1100, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x00ee, 0x00de, ++ 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0xc600, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x2001, ++ 0xc8d6, 0x2003, 0x0000, 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, ++ 0x0000, 0x2001, 0x0000, 0x080c, 0x2a1c, 0x6803, 0x0000, 0x6043, ++ 0x0090, 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, ++ 0x00de, 0x00ce, 0x0005, 0x0006, 0x2001, 0xc8e5, 0x2004, 0xa086, ++ 0xaaaa, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, ++ 0x0030, 0xa086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, ++ 0x2004, 0xa084, 0x0030, 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, ++ 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, ++ 0x0020, 0x000e, 0x0005, 0x2001, 0xc60c, 0x2004, 0xd0a4, 0x0170, ++ 0x080c, 0x2a3c, 0x0036, 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, ++ 0x080c, 0x2e19, 0x001e, 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, ++ 0x2071, 0xc60c, 0x2e04, 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, ++ 0xffef, 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, ++ 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, ++ 0x602f, 0x0100, 0x602f, 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, ++ 0x000e, 0x602a, 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, ++ 0x000e, 0x60f2, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, ++ 0x080c, 0x2a1c, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, ++ 0x00a0, 0x000e, 0x6052, 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, ++ 0x2071, 0xc600, 0x6020, 0xa084, 0x0080, 0x0138, 0x2001, 0xc60c, ++ 0x200c, 0xc1bd, 0x2102, 0x0804, 0x6035, 0x2001, 0xc60c, 0x200c, ++ 0xc1bc, 0x2102, 0x6028, 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, ++ 0x6803, 0x0090, 0x20a9, 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, ++ 0x5fe4, 0x2091, 0x6000, 0x1f04, 0x5fe4, 0x2011, 0x0003, 0x080c, ++ 0x8f27, 0x2011, 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, 0x2019, ++ 0x0000, 0x080c, 0x8e92, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, ++ 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, ++ 0x86ff, 0x1120, 0x080c, 0x1f06, 0x080c, 0x25fb, 0x60e3, 0x0000, ++ 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2, 0x6803, 0x0080, ++ 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, ++ 0xa10c, 0x0138, 0x1d04, 0x601a, 0x2091, 0x6000, 0x1f04, 0x601a, ++ 0x0820, 0x6028, 0xa085, 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, ++ 0x6887, 0x0001, 0x0008, 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, ++ 0x2069, 0x0140, 0x6020, 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, ++ 0x1904, 0x6091, 0x6803, 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, ++ 0x2001, 0x0000, 0x080c, 0x2a1c, 0x2069, 0x0200, 0x6804, 0xa005, ++ 0x1118, 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, ++ 0x6027, 0x0400, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f, 0x0026, ++ 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x6074, 0x2091, 0x6000, ++ 0x1f04, 0x6074, 0x0804, 0x60c2, 0x2069, 0x0140, 0x20a9, 0x0384, ++ 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, ++ 0xa084, 0x1a00, 0x1508, 0x1d04, 0x6080, 0x2091, 0x6000, 0x1f04, ++ 0x6080, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, 0x0002, 0x080c, ++ 0x8f31, 0x080c, 0x8e07, 0x2019, 0x0000, 0x080c, 0x8e92, 0x6803, ++ 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, ++ 0x0001, 0xa085, 0x0001, 0x00b0, 0x080c, 0x25fb, 0x6803, 0x0080, + 0x2069, 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, + 0x0001, 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c, +- 0x60e2, 0x2001, 0xc60c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, +- 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, +- 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, +- 0xc600, 0x7130, 0xd184, 0x1180, 0x2011, 0xc653, 0x2214, 0xd2ec, +- 0x0138, 0xc18d, 0x7132, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x1120, +- 0x7030, 0xd08c, 0x0904, 0x61bb, 0x7130, 0xc185, 0x7132, 0x2011, +- 0xc653, 0x220c, 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, 0x080c, +- 0xc100, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, 0x007e, +- 0x01a0, 0xa186, 0x0080, 0x0188, 0x080c, 0x533d, 0x1170, 0x8127, +- 0xa006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc183, 0x2009, 0x0001, +- 0x2011, 0x0100, 0x080c, 0x712e, 0x001e, 0x8108, 0x1f04, 0x6186, +- 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, +- 0x0004, 0x080c, 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, +- 0x2009, 0x0000, 0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108, +- 0x1f04, 0x61b2, 0x015e, 0x080c, 0x1f06, 0x2011, 0x0003, 0x080c, +- 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, +- 0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x2001, +- 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x00ee, 0x00ce, 0x004e, +- 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2071, 0xc702, 0x7003, +- 0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, +- 0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, +- 0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005, +- 0x00e6, 0x2071, 0xc702, 0x6848, 0xa005, 0x1130, 0x7028, 0xc085, +- 0x702a, 0xa085, 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a, +- 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, +- 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, +- 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, +- 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, +- 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc702, 0x7004, 0x0043, +- 0x700c, 0x0002, 0x6237, 0x622e, 0x622e, 0x622e, 0x622e, 0x0005, +- 0x628d, 0x628e, 0x62c0, 0x62c1, 0x628b, 0x630f, 0x6314, 0x6345, +- 0x6346, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6431, +- 0x6458, 0x700c, 0x0002, 0x6250, 0x628b, 0x628b, 0x628c, 0x628c, +- 0x7830, 0x7930, 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, 0x1510, +- 0x7030, 0xa10a, 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002, +- 0x12d0, 0x080c, 0x15e5, 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040, +- 0x2001, 0x0003, 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, +- 0x2009, 0xc959, 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, 0x012e, +- 0x080c, 0x1669, 0x0005, 0x080c, 0x15e5, 0x0de0, 0x2d00, 0x705a, +- 0x080c, 0x15e5, 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080, +- 0x2001, 0x0004, 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, +- 0x6295, 0x6298, 0x62a6, 0x62bf, 0x62bf, 0x080c, 0x6249, 0x0005, +- 0x0126, 0x8001, 0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120, +- 0x2091, 0x8000, 0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001, +- 0x700e, 0x080c, 0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, +- 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a, +- 0x1218, 0x00db, 0x012e, 0x0005, 0x012e, 0x080c, 0x6367, 0x0005, +- 0x0005, 0x0005, 0x00e6, 0x2071, 0xc702, 0x700c, 0x0002, 0x62cc, +- 0x62cc, 0x62cc, 0x62ce, 0x62d1, 0x00ee, 0x0005, 0x700f, 0x0001, +- 0x0010, 0x700f, 0x0002, 0x00ee, 0x0005, 0x6367, 0x6367, 0x6383, +- 0x6367, 0x653e, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6383, +- 0x6580, 0x65c3, 0x660c, 0x6620, 0x6367, 0x6367, 0x639f, 0x6383, +- 0x63b3, 0x6367, 0x640e, 0x66cc, 0x66e7, 0x6367, 0x639f, 0x6367, +- 0x63b3, 0x6367, 0x6367, 0x6404, 0x66e7, 0x6367, 0x6367, 0x6367, +- 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x63c8, 0x6367, +- 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, +- 0x6866, 0x6367, 0x67f2, 0x6367, 0x67f2, 0x6367, 0x63dd, 0x7020, +- 0x2068, 0x080c, 0x1619, 0x0005, 0x700c, 0x0002, 0x631b, 0x631e, +- 0x632c, 0x6344, 0x6344, 0x080c, 0x6249, 0x0005, 0x0126, 0x8001, +- 0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120, 0x2091, 0x8000, +- 0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, +- 0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, +- 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b, +- 0x012e, 0x0005, 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, 0x6367, +- 0x6383, 0x652a, 0x6367, 0x6383, 0x6367, 0x6383, 0x6383, 0x6367, +- 0x6383, 0x652a, 0x6383, 0x6383, 0x6383, 0x6383, 0x6383, 0x6367, +- 0x6383, 0x652a, 0x6367, 0x6367, 0x6383, 0x6367, 0x6367, 0x6367, +- 0x6383, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x7007, +- 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, +- 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, +- 0xc0ed, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, +- 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x6834, +- 0x8007, 0xa084, 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, 0x0001, +- 0x0804, 0x64c1, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, +- 0x704b, 0x64c1, 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, +- 0x6375, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x64de, 0x7007, +- 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x64de, 0x0005, +- 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x6375, 0x8001, 0x1120, +- 0x7007, 0x0001, 0x0804, 0x6507, 0x7007, 0x0006, 0x7012, 0x2d00, +- 0x7016, 0x701a, 0x704b, 0x6507, 0x0005, 0x6834, 0x8007, 0xa084, +- 0x00ff, 0xa086, 0x0001, 0x1904, 0x6375, 0x7007, 0x0001, 0x2009, +- 0xc631, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, 0x683a, +- 0x6853, 0x0000, 0x080c, 0x5116, 0x1108, 0x0005, 0x0126, 0x2091, +- 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x580a, 0x012e, +- 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, 0xa086, +- 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x66ff, 0x2d00, 0x7016, +- 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0xc72d, +- 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x6391, 0x6a84, +- 0xa28a, 0x0002, 0x1a04, 0x6391, 0x82ff, 0x1138, 0x6888, 0x698c, +- 0xa105, 0x0118, 0x2001, 0x6494, 0x0018, 0xa280, 0x648a, 0x2005, +- 0x70c6, 0x7010, 0xa015, 0x0904, 0x6476, 0x080c, 0x15e5, 0x1118, +- 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x2c05, +- 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, 0xa00e, +- 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0108, +- 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, 0x164d, +- 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, 0x7007, +- 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x1619, 0x7014, 0x2068, +- 0x0804, 0x6391, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000, +- 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x6431, 0x7014, 0x2068, +- 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, 0xa105, +- 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0904, +- 0x66ff, 0x04b8, 0x648c, 0x6490, 0x0002, 0x0011, 0x0007, 0x0004, +- 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004, +- 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, 0x6804, +- 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c, +- 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e, +- 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0c78, +- 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x00fe, +- 0x0005, 0x2009, 0xc631, 0x210c, 0x81ff, 0x1198, 0x6838, 0xa084, +- 0x00ff, 0x683a, 0x080c, 0x4fa6, 0x1108, 0x0005, 0x080c, 0x592e, +- 0x0126, 0x2091, 0x8000, 0x080c, 0xaefc, 0x080c, 0x580a, 0x012e, +- 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, 0xc631, +- 0x210c, 0x81ff, 0x11d8, 0x6858, 0xa005, 0x01d8, 0x2001, 0xc756, +- 0x2004, 0xa086, 0x0000, 0x01c0, 0x6838, 0xa084, 0x00ff, 0x683a, +- 0x6853, 0x0000, 0x080c, 0x5068, 0x1108, 0x0005, 0x684a, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0cb8, 0x2001, 0x0028, +- 0x0ca8, 0x2001, 0x0000, 0x0c90, 0x2001, 0x002c, 0x0c78, 0x2009, +- 0xc631, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838, +- 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x50ba, 0x1108, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x580a, +- 0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001, +- 0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, +- 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014, +- 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001, +- 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, +- 0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff, +- 0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c, +- 0x00ff, 0x080c, 0x533d, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x543c, +- 0x006e, 0x0088, 0x0046, 0x2011, 0xc60c, 0x2224, 0xc484, 0x2412, +- 0x004e, 0x00c6, 0x080c, 0x533d, 0x1110, 0x080c, 0x559d, 0x8108, +- 0x1f04, 0x656a, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x1619, +- 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, +- 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xc653, 0x2004, +- 0xd0a4, 0x0580, 0x2061, 0xc9bc, 0x6100, 0xd184, 0x0178, 0x6858, +- 0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005, +- 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, +- 0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, +- 0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, +- 0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, +- 0x0804, 0x67c3, 0x012e, 0x0804, 0x67bd, 0x012e, 0x0804, 0x67b7, +- 0x012e, 0x0804, 0x67ba, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, +- 0x2001, 0xc653, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xc9bc, 0x6000, +- 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484, +- 0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100, +- 0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0, +- 0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, +- 0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004, +- 0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000, +- 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x67c3, 0x012e, 0x0804, +- 0x67c0, 0x012e, 0x0804, 0x67bd, 0x0126, 0x2091, 0x8000, 0x7007, +- 0x0001, 0x2061, 0xc9bc, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, +- 0x0220, 0x630a, 0x012e, 0x0804, 0x67d1, 0x012e, 0x0804, 0x67c0, +- 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, +- 0x0148, 0x00c6, 0x2061, 0xc9bc, 0x6000, 0xa084, 0xfcff, 0x6002, +- 0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598, +- 0x2001, 0xc631, 0x2004, 0xa005, 0x0118, 0x080c, 0xae4d, 0x0068, +- 0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950, +- 0x6156, 0x2009, 0x0041, 0x080c, 0x960c, 0x6958, 0xa18c, 0xff00, +- 0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff, +- 0x080c, 0x712e, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xc9bc, +- 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, +- 0x012e, 0x0804, 0x67c3, 0x00ce, 0x012e, 0x0804, 0x67bd, 0x6954, +- 0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045, +- 0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xc60c, 0x200c, 0xc194, +- 0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18, +- 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x1960, 0x6000, +- 0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024, +- 0x2001, 0xc8fd, 0x2004, 0x6016, 0x0804, 0x665b, 0x685c, 0xa065, +- 0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xc631, 0x2004, 0xa005, +- 0x0150, 0x080c, 0xae4d, 0x8eff, 0x0118, 0x2e60, 0x080c, 0xae4d, +- 0x00ee, 0x0804, 0x665b, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60, +- 0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874, +- 0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x7999, 0x080c, +- 0x7e94, 0x00ee, 0x0804, 0x665b, 0x2061, 0xc9bc, 0x6000, 0xd084, +- 0x0190, 0xd08c, 0x1904, 0x67d1, 0x0126, 0x2091, 0x8000, 0x6204, +- 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x67d1, 0x012e, 0x6853, +- 0x0016, 0x0804, 0x67ca, 0x6853, 0x0007, 0x0804, 0x67ca, 0x6834, +- 0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x6375, 0x0078, 0x2030, +- 0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006, +- 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x66ff, 0x0005, 0x00e6, +- 0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xc631, 0x210c, 0x81ff, +- 0x1904, 0x677d, 0x2009, 0xc60c, 0x210c, 0xd194, 0x1904, 0x67a7, +- 0x6848, 0x2070, 0xae82, 0xce00, 0x0a04, 0x6771, 0x2001, 0xc617, +- 0x2004, 0xae02, 0x1a04, 0x6771, 0x711c, 0xa186, 0x0006, 0x1904, +- 0x6760, 0x7018, 0xa005, 0x0904, 0x677d, 0x2004, 0xd0e4, 0x1904, +- 0x67a2, 0x2061, 0xc9bc, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, +- 0x1550, 0x7020, 0xd0dc, 0x1904, 0x67aa, 0x6853, 0x0000, 0x6803, +- 0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4, +- 0x1904, 0x67ad, 0x2e60, 0x080c, 0x708a, 0x012e, 0x00ee, 0x0005, +- 0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4, +- 0x1904, 0x67ad, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853, +- 0x0006, 0x0804, 0x67ca, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8, +- 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x15d8, 0x6000, +- 0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002, +- 0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853, +- 0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xc672, 0x2004, +- 0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xce00, 0x02c0, 0x605c, +- 0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005, +- 0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086, +- 0x0007, 0x1904, 0x670a, 0x7003, 0x0002, 0x0804, 0x670a, 0x6853, +- 0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853, +- 0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002, +- 0x6017, 0x0014, 0x080c, 0xbd48, 0x012e, 0x00ee, 0x0005, 0x2009, +- 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, +- 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, +- 0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, +- 0x0005, 0x080c, 0x1619, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, +- 0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070, +- 0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076, +- 0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x7081, +- 0x00de, 0x0005, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904, +- 0x684d, 0x080c, 0x768f, 0x0904, 0x6850, 0x6868, 0xa084, 0x0007, +- 0x0904, 0x6844, 0x080c, 0x9586, 0x0904, 0x6847, 0x2d00, 0x6012, +- 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x1198, 0x2001, 0xc8e5, +- 0x2004, 0xa086, 0xaaaa, 0x0130, 0x2001, 0xc635, 0x2004, 0xa084, +- 0x0028, 0x05c8, 0x6008, 0xc0fd, 0x600a, 0x2001, 0xc8d3, 0x2004, +- 0x0098, 0x6870, 0xa084, 0x00ff, 0x696c, 0xa18c, 0xff00, 0xa105, +- 0x696c, 0xa18c, 0x00ff, 0x080c, 0x29c7, 0x11e0, 0x00c6, 0x080c, +- 0x533d, 0x2c00, 0x00ce, 0x11b0, 0x601a, 0x601f, 0x0001, 0x2009, +- 0x0040, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x0110, 0x2009, +- 0x0041, 0x080c, 0x960c, 0x0005, 0x684b, 0x0101, 0x0078, 0x684b, +- 0x002c, 0x0060, 0x684b, 0x0028, 0x0080, 0x684b, 0x0104, 0x0030, +- 0x684b, 0x0105, 0x0018, 0x684b, 0x0106, 0x0038, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x080c, 0x580a, 0x012e, 0x080c, 0x95dc, 0x0005, 0x00d6, 0x00c6, +- 0x0036, 0x0026, 0x0016, 0x7007, 0x0001, 0x6a44, 0xa282, 0x0004, +- 0x1a04, 0x68b1, 0xd284, 0x0170, 0x6a4c, 0xa290, 0xc77b, 0x2204, +- 0xa065, 0x6004, 0x05e0, 0x8007, 0xa084, 0x00ff, 0xa084, 0x0006, +- 0x1108, 0x04a8, 0x2c10, 0x080c, 0x9586, 0x1118, 0x080c, 0xaf06, +- 0x05a0, 0x621a, 0x6844, 0x0002, 0x6890, 0x6895, 0x6898, 0x689e, +- 0x2019, 0x0002, 0x080c, 0xc100, 0x0060, 0x080c, 0xc097, 0x0048, +- 0x2019, 0x0002, 0x6950, 0x080c, 0xc0b2, 0x0018, 0x6950, 0x080c, +- 0xc097, 0x080c, 0x95dc, 0x6857, 0x0000, 0x0126, 0x2091, 0x8000, +- 0x080c, 0x580a, 0x012e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de, +- 0x0005, 0x6857, 0x0006, 0x0c88, 0x6857, 0x0002, 0x0c70, 0x6857, +- 0x0005, 0x0c58, 0x6857, 0x0004, 0x0c40, 0x6857, 0x0007, 0x0c28, +- 0x00d6, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012, 0x00de, +- 0x0005, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, +- 0x7000, 0x0118, 0xa086, 0x1000, 0x15e0, 0x20e1, 0x0000, 0x3d00, +- 0xa094, 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x1160, +- 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x1558, 0x080c, 0x2f69, +- 0x1540, 0x080c, 0x6b32, 0x0400, 0x20e1, 0x0004, 0x3d60, 0xd1bc, +- 0x1170, 0x2100, 0xa084, 0xff00, 0xa086, 0x0500, 0x1138, 0x0026, +- 0x2c10, 0x080c, 0x6d90, 0x002e, 0x01a0, 0x0070, 0x3e60, 0xac84, +- 0x0007, 0x1178, 0xac82, 0xce00, 0x0260, 0x685c, 0xac02, 0x1248, +- 0x2009, 0x0047, 0x080c, 0x960c, 0x7a1c, 0xd284, 0x1904, 0x68c9, +- 0x0005, 0xa016, 0x080c, 0x1870, 0x0cb8, 0x0cd8, 0x781c, 0xd08c, +- 0x0500, 0x0156, 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28, +- 0xa584, 0x0076, 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8, +- 0x080c, 0x6991, 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c, +- 0x69ad, 0x014e, 0x013e, 0x015e, 0x2009, 0xc92f, 0x2104, 0xa005, +- 0x1108, 0x0005, 0x080c, 0x7e94, 0x0ce0, 0xa484, 0x7000, 0x1548, +- 0x080c, 0x6991, 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, +- 0x0d10, 0x00a0, 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, 0x1f2d, +- 0x080c, 0x25fb, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, +- 0x004e, 0x005e, 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, 0xc529, +- 0x20e1, 0x3000, 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e, +- 0x0880, 0x0439, 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, +- 0x1d68, 0x080c, 0xc529, 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056, +- 0x080c, 0x6e1f, 0x005e, 0x0c40, 0x2001, 0xc60e, 0x2004, 0xd08c, +- 0x0178, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1148, 0x0026, +- 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x407d, 0x003e, 0x002e, +- 0x0005, 0xa484, 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, 0x001f, +- 0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, +- 0x53a5, 0x0005, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, +- 0x020a, 0x53a5, 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00, +- 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, 0x6c37, +- 0x0005, 0xa196, 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118, +- 0x080c, 0x47cb, 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80, +- 0x080c, 0x6ce3, 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x6b2c, +- 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, 0xa196, +- 0x0023, 0x1904, 0x6b2c, 0xa08e, 0x0023, 0x1570, 0x080c, 0x6d7e, +- 0x0904, 0x6b2c, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150, +- 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0015, 0x080c, 0x960c, +- 0x0804, 0x6b2c, 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130, +- 0x2009, 0x0015, 0x080c, 0x960c, 0x0804, 0x6b2c, 0xa08e, 0x0100, +- 0x1904, 0x6b2c, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0016, +- 0x080c, 0x960c, 0x0804, 0x6b2c, 0xa08e, 0x0022, 0x1904, 0x6b2c, +- 0x7030, 0xa08e, 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5, +- 0x68d6, 0x7100, 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6, +- 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016, +- 0x2008, 0x080c, 0x29f1, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, +- 0x080c, 0x29c7, 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, +- 0x2071, 0xc600, 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, 0x6b2c, +- 0x2009, 0x0017, 0x0804, 0x6af2, 0xa08e, 0x0400, 0x1158, 0x7034, +- 0xa005, 0x1904, 0x6b2c, 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030, +- 0x0804, 0x6af2, 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, 0x1904, +- 0x6b2c, 0x2009, 0x0018, 0x0804, 0x6af2, 0xa08e, 0x2010, 0x1120, +- 0x2009, 0x0019, 0x0804, 0x6af2, 0xa08e, 0x2110, 0x1120, 0x2009, +- 0x001a, 0x0804, 0x6af2, 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005, +- 0x1904, 0x6b2c, 0x2009, 0x001b, 0x0804, 0x6af2, 0xa08e, 0x5000, +- 0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x001c, 0x0804, +- 0x6af2, 0xa08e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x6af2, +- 0xa08e, 0x1200, 0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, +- 0x0024, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1120, +- 0x2009, 0x002d, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x5300, +- 0x1120, 0x2009, 0x002a, 0x0804, 0x6af2, 0xa08e, 0x0f00, 0x1120, +- 0x2009, 0x0020, 0x0804, 0x6af2, 0xa08e, 0x5300, 0x1108, 0x00d8, +- 0xa08e, 0x6104, 0x11c0, 0x2011, 0xcc8d, 0x8208, 0x2204, 0xa082, +- 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108, +- 0x0046, 0x2124, 0x080c, 0x407d, 0x004e, 0x8108, 0x1f04, 0x6abc, +- 0x2009, 0x0023, 0x0438, 0xa08e, 0x6000, 0x1118, 0x2009, 0x003f, +- 0x0408, 0xa08e, 0x5400, 0x1158, 0x080c, 0x6e79, 0x1904, 0x6b2c, +- 0x2009, 0x0046, 0x0016, 0x2001, 0xc8d3, 0x2064, 0x0498, 0xa08e, +- 0x5500, 0x1140, 0x080c, 0x6eac, 0x2009, 0x0041, 0x0158, 0x2009, +- 0x0042, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0010, +- 0x2009, 0x001d, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, +- 0x080c, 0x29c7, 0x1598, 0x080c, 0x52e1, 0x1580, 0x6612, 0x6516, +- 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, 0x1158, 0x6870, +- 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, 0x1180, 0x6000, +- 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, 0xa606, 0x1138, +- 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, 0x0068, 0x00c6, +- 0x080c, 0x9586, 0x0168, 0x001e, 0x611a, 0x601f, 0x0004, 0x7120, +- 0x610a, 0x001e, 0x080c, 0x960c, 0x00ce, 0x0005, 0x001e, 0x0ce0, +- 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6b86, 0x1904, 0x6b83, +- 0xa28e, 0x0033, 0x11e8, 0x080c, 0x6d7e, 0x0904, 0x6b83, 0x7124, +- 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, 0xa005, 0x15d8, +- 0x2009, 0x0015, 0x080c, 0x960c, 0x04b0, 0xa08e, 0x0100, 0x1598, +- 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, 0x960c, 0x0458, +- 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, 0x1520, 0x2009, +- 0x0038, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c, +- 0x29c7, 0x11c0, 0x080c, 0x52e1, 0x11a8, 0x6612, 0x6516, 0x00c6, +- 0x080c, 0x9586, 0x0170, 0x001e, 0x611a, 0x080c, 0xb057, 0x601f, +- 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x960c, 0x080c, 0x7e94, +- 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, 0x00f6, 0x00d6, +- 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, 0x0006, 0x2079, +- 0x0030, 0x2069, 0x0200, 0x080c, 0x1fec, 0x1590, 0x080c, 0x1e97, +- 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, 0xa182, 0x0011, +- 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, 0x2099, 0x020a, +- 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x7a0c, 0x7808, +- 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, 0xa08a, 0x0140, +- 0x1a0c, 0x1519, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5, +- 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070, +- 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, 0x002e, 0x00de, +- 0x00fe, 0x0005, 0xa016, 0x080c, 0x1870, 0xa085, 0x0001, 0x0c80, +- 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, 0x000e, 0x0005, +- 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, 0x00ff, 0x1198, +- 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, 0x6c32, 0xa596, +- 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, 0xfffc, 0x1118, +- 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, 0xc635, 0x231c, +- 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b, +- 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, 0xc7fc, 0x2e1c, +- 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, 0x0080, 0x2368, +- 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, 0x1120, 0xa346, +- 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, 0x0d58, 0x8420, +- 0x8e70, 0x1f04, 0x6c0f, 0x82ff, 0x1118, 0xa085, 0x0001, 0x0018, +- 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, 0x0005, 0xa084, +- 0x0007, 0x000a, 0x0005, 0x6c43, 0x6c43, 0x6c43, 0x6e0c, 0x6c43, +- 0x6c44, 0x6c59, 0x6cce, 0x0005, 0x7110, 0xd1bc, 0x0188, 0x7120, +- 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xce00, 0x0248, 0x685c, +- 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, 0x960c, +- 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x6cac, 0x7110, 0xd1bc, +- 0x1904, 0x6cac, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c, +- 0x29c7, 0x1904, 0x6cac, 0x080c, 0x52e1, 0x15f0, 0x6612, 0x6516, +- 0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, +- 0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x11a0, +- 0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x9586, 0x001e, 0x0530, +- 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, 0x2009, +- 0x0044, 0x080c, 0x960c, 0x00c0, 0x00c6, 0x080c, 0x9586, 0x001e, +- 0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, +- 0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, +- 0x080c, 0x79df, 0x080c, 0x7e94, 0x00ce, 0x0005, 0x2001, 0xc60d, +- 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x407d, 0x00c6, +- 0x080c, 0xaf06, 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, 0x7120, +- 0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, 0x6007, +- 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94, 0x08f0, 0x7110, 0xd1bc, +- 0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, 0xce00, +- 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0045, +- 0x080c, 0x960c, 0x0005, 0x0006, 0x080c, 0x2f69, 0x000e, 0x1168, +- 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, 0xa084, +- 0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, 0x6cfc, 0x6cfd, +- 0x6cfc, 0x6cfc, 0x6d66, 0x6d72, 0x0005, 0x7110, 0xd1bc, 0x0120, +- 0x702c, 0xd084, 0x0904, 0x6d65, 0x700c, 0x7108, 0x080c, 0x29c7, +- 0x1904, 0x6d65, 0x080c, 0x52e1, 0x1904, 0x6d65, 0x6612, 0x6516, +- 0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, 0x0004, +- 0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, 0x6d7e, 0x00ce, +- 0x0904, 0x6d65, 0x00c6, 0x080c, 0x9586, 0x001e, 0x05f0, 0x611a, +- 0x080c, 0xb057, 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, +- 0x080c, 0x960c, 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0160, +- 0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004, +- 0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, 0x9586, 0x001e, +- 0x01e0, 0x611a, 0x080c, 0xb057, 0x601f, 0x0005, 0x7120, 0x610a, +- 0x2009, 0x0088, 0x080c, 0x960c, 0x0080, 0x00c6, 0x080c, 0x9586, +- 0x001e, 0x0158, 0x611a, 0x080c, 0xb057, 0x601f, 0x0004, 0x7120, +- 0x610a, 0x2009, 0x0001, 0x080c, 0x960c, 0x0005, 0x7110, 0xd1bc, +- 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, 0x080c, +- 0x960c, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, 0x7124, +- 0x610a, 0x2009, 0x008a, 0x080c, 0x960c, 0x0005, 0x7020, 0x2060, +- 0xac84, 0x0007, 0x1158, 0xac82, 0xce00, 0x0240, 0x2001, 0xc617, +- 0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, 0x0ce8, +- 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x2f69, 0x1904, 0x6e07, 0x2001, +- 0xc756, 0x2004, 0xa086, 0x0000, 0x0904, 0x6e07, 0x20e1, 0x0000, +- 0x3d08, 0xa18c, 0x00ff, 0xa18e, 0x00ff, 0x1500, 0x3e00, 0xa086, +- 0xffff, 0x11e0, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x0006, +- 0x0016, 0x2001, 0xc61d, 0x2004, 0x20e1, 0x0001, 0x3e08, 0xa106, +- 0x1130, 0x2001, 0xc61c, 0x2004, 0x3d08, 0xa106, 0x0118, 0x001e, +- 0x000e, 0x00a8, 0x001e, 0x000e, 0x0804, 0x6e07, 0x20e1, 0x0001, +- 0x3d08, 0x3e00, 0x0156, 0x080c, 0x29c7, 0x015e, 0x15c0, 0x080c, +- 0x533d, 0x0128, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x2138, +- 0x873f, 0x2c00, 0x2070, 0x20e1, 0x0003, 0x3d18, 0x831f, 0xa39c, +- 0x00ff, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0xa086, 0x1000, +- 0x0120, 0x080c, 0x75ea, 0x11d8, 0x0080, 0x080c, 0x9586, 0x01b8, +- 0x20e1, 0x0002, 0x3e08, 0xd19c, 0x0118, 0x6124, 0xc19d, 0x6126, +- 0x2e00, 0x601a, 0x620a, 0x601f, 0x0009, 0x2009, 0x0101, 0x080c, +- 0x960c, 0xa085, 0x0001, 0x00ee, 0x00de, 0x00ce, 0x0005, 0xa006, +- 0x00ee, 0x00de, 0x00ce, 0x0005, 0x7110, 0xd1bc, 0x1178, 0x7024, +- 0x2060, 0xac84, 0x0007, 0x1150, 0xac82, 0xce00, 0x0238, 0x685c, +- 0xac02, 0x1220, 0x2009, 0x0051, 0x080c, 0x960c, 0x0005, 0x2031, +- 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, 0x2031, +- 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6, +- 0x00d6, 0x00f6, 0x7000, 0xa084, 0xf000, 0xa086, 0xc000, 0x05b0, +- 0x080c, 0x9586, 0x0598, 0x0066, 0x00c6, 0x0046, 0x2011, 0xcc83, +- 0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x1580, 0x080c, 0x52e1, +- 0x1568, 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, 0x601a, 0x080c, +- 0xb057, 0x080c, 0x1602, 0x01f0, 0x2d00, 0x6056, 0x6803, 0x0000, +- 0x6837, 0x0000, 0x6c3a, 0xadf8, 0x000f, 0x20a9, 0x000e, 0x2fa0, +- 0x2e98, 0x53a3, 0x006e, 0x6612, 0x6007, 0x003e, 0x601f, 0x0001, +- 0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00fe, 0x00de, +- 0x00ce, 0x0005, 0x080c, 0x95dc, 0x006e, 0x0cc0, 0x004e, 0x00ce, +- 0x0cc8, 0x0156, 0x0046, 0x2e00, 0xa0a0, 0x000e, 0x2404, 0x2020, +- 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0003, 0x2019, +- 0xc606, 0x2011, 0xcc9b, 0x080c, 0xa0fc, 0x11d8, 0xd48c, 0x0148, +- 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011, 0xcc9f, 0x080c, 0xa0fc, +- 0x1180, 0xd494, 0x0170, 0x080c, 0x7694, 0x0148, 0x20a9, 0x0008, +- 0x2019, 0xc69a, 0x2011, 0xccaa, 0x080c, 0xa111, 0x0010, 0xa085, +- 0x0001, 0x004e, 0x015e, 0x0005, 0x0156, 0x0046, 0x2e00, 0xa0a0, +- 0x000e, 0x2404, 0x2020, 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148, +- 0x20a9, 0x0003, 0x2019, 0xc606, 0x2011, 0xcc93, 0x080c, 0xa0fc, +- 0x11d8, 0xd48c, 0x0148, 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011, +- 0xcc97, 0x080c, 0xa0fc, 0x1180, 0xd494, 0x0170, 0x080c, 0x7694, +- 0x0148, 0x20a9, 0x0008, 0x2019, 0xc69a, 0x2011, 0xcca2, 0x080c, +- 0xa111, 0x0010, 0xa085, 0x0001, 0x004e, 0x015e, 0x0005, 0x2071, +- 0xc93a, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7076, +- 0x7012, 0x7017, 0xce00, 0x7007, 0x0000, 0x7026, 0x702b, 0x8c0c, +- 0x7032, 0x7037, 0x8c6c, 0x703b, 0xffff, 0x703f, 0xffff, 0x7042, +- 0x7047, 0x4787, 0x704a, 0x705b, 0x703f, 0x2001, 0xc8e8, 0x2003, +- 0x0003, 0x2001, 0xc8ea, 0x2003, 0x0100, 0x3a00, 0xa084, 0x0005, +- 0x706e, 0x0005, 0x2071, 0xc93a, 0x1d04, 0x6f9c, 0x2091, 0x6000, +- 0x700c, 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, 0x0001, +- 0x0126, 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, 0x7142, +- 0x1110, 0x7044, 0x080f, 0x00c6, 0x2061, 0xc600, 0x6034, 0x00ce, +- 0xd0cc, 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, 0x0150, +- 0x706e, 0x2011, 0x8043, 0x2018, 0x080c, 0x407d, 0x0018, 0x0126, +- 0x2091, 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, 0x7022, +- 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, 0x1110, +- 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0xa00d, +- 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, +- 0x7132, 0x0128, 0xa184, 0x007f, 0x090c, 0x8cc8, 0x0010, 0x7034, +- 0x080f, 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, 0x703c, +- 0xa005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, 0x0168, +- 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e, +- 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, 0x01d8, +- 0x0016, 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, 0x1138, +- 0x7073, 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, 0x001e, +- 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, +- 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x6fc2, 0x6fc3, +- 0x6fdb, 0x00e6, 0x2071, 0xc93a, 0x7018, 0xa005, 0x1120, 0x711a, +- 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, +- 0xc93a, 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, +- 0x0005, 0x00e6, 0x2071, 0xc93a, 0x6088, 0xa102, 0x0208, 0x618a, +- 0x00ee, 0x0005, 0x0005, 0x7110, 0x080c, 0x533d, 0x1158, 0x6088, +- 0x8001, 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x7e94, 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, 0x7007, +- 0x0002, 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, +- 0x603c, 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, 0xaf45, +- 0x6014, 0xa005, 0x0518, 0x8001, 0x6016, 0x1500, 0x611c, 0xa186, +- 0x0003, 0x0130, 0xa186, 0x0006, 0x0118, 0xa186, 0x0009, 0x11a0, +- 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0270, 0xa082, 0x1999, +- 0x6856, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x800b, +- 0x810b, 0xa108, 0x6116, 0x0010, 0x080c, 0xaa15, 0x012e, 0xac88, +- 0x0018, 0x7116, 0x2001, 0xfe00, 0xa102, 0x0220, 0x7017, 0xce00, +- 0x7007, 0x0000, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7027, 0x07d0, +- 0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0xc943, 0x2003, 0x0000, +- 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7132, 0x702f, 0x0009, 0x00ee, +- 0x0005, 0x2011, 0xc946, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, +- 0xc93a, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00c6, +- 0x0026, 0x7054, 0x8000, 0x7056, 0x2061, 0xc8e8, 0x6008, 0xa086, +- 0x0000, 0x0158, 0x7068, 0x6032, 0x7064, 0x602e, 0x7060, 0x602a, +- 0x705c, 0x6026, 0x2c10, 0x080c, 0x164d, 0x002e, 0x00ce, 0x0005, +- 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x6f0a, +- 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, 0x00e6, +- 0x2071, 0xc93a, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005, +- 0x00e6, 0x0006, 0x2071, 0xc93a, 0x7078, 0xa206, 0x1110, 0x7076, +- 0x707a, 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0xc9bc, 0x00ce, +- 0x0005, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0xc9bc, +- 0x2060, 0x0005, 0x6854, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, +- 0xa005, 0x1150, 0x00c6, 0x2061, 0xc9bc, 0x6014, 0x00ce, 0xa005, +- 0x1138, 0x2001, 0x001e, 0x0020, 0xa08e, 0xffff, 0x1108, 0xa006, +- 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0, +- 0xa18e, 0x00c0, 0x05e8, 0xd0b4, 0x1138, 0xd0bc, 0x1550, 0x2009, +- 0x0006, 0x080c, 0x7105, 0x0005, 0xd0fc, 0x0138, 0xa084, 0x0003, +- 0x0120, 0xa086, 0x0003, 0x1904, 0x70ff, 0x6020, 0xd0d4, 0x0130, +- 0xc0d4, 0x6022, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xc674, +- 0x2104, 0xd084, 0x0138, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, +- 0x960c, 0x0005, 0x87ff, 0x1120, 0x2009, 0x0043, 0x080c, 0x960c, +- 0x0005, 0xd0fc, 0x0130, 0xa084, 0x0003, 0x0118, 0xa086, 0x0003, +- 0x11f0, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x960c, 0x0005, +- 0xd0fc, 0x0160, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0148, 0x87ff, +- 0x1120, 0x2009, 0x0041, 0x080c, 0x960c, 0x0005, 0x0061, 0x0ce8, +- 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x960c, 0x0cb0, 0x2009, +- 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6010, 0xa0ec, +- 0xf000, 0x0510, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, +- 0x1188, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x1158, 0x00c6, +- 0x2061, 0xc9bc, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208, +- 0x6206, 0x00ce, 0x080c, 0x580a, 0x6010, 0xa06d, 0x0076, 0x2039, +- 0x0000, 0x190c, 0x708a, 0x007e, 0x00de, 0x0005, 0x0156, 0x00c6, +- 0x2061, 0xc9bc, 0x6000, 0x81ff, 0x0110, 0xa205, 0x0008, 0xa204, +- 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808, +- 0xa005, 0x0120, 0x8001, 0x680a, 0xa085, 0x0001, 0x0005, 0x2071, +- 0xc755, 0x7003, 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, 0x7013, +- 0x0001, 0x702f, 0x0006, 0x7033, 0x0001, 0x7063, 0x0000, 0x0005, +- 0x00e6, 0x2071, 0xc755, 0x6a2c, 0x721e, 0x6b30, 0x7322, 0x6834, +- 0x7026, 0x705a, 0x6838, 0x702a, 0x705e, 0x6824, 0x7016, 0x683c, +- 0x701a, 0x2009, 0x0070, 0x200a, 0xa005, 0x0150, 0x2009, 0x0000, +- 0xa188, 0x000c, 0x8001, 0x1de0, 0x2100, 0xa210, 0x1208, 0x8318, +- 0x7252, 0x7356, 0x7010, 0xc084, 0x7012, 0x7007, 0x0001, 0x700f, +- 0x0000, 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc755, 0x7004, +- 0x004b, 0x700c, 0x0002, 0x718e, 0x7187, 0x7187, 0x0005, 0x7198, +- 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ff, 0x7200, 0x700c, 0x0cba, +- 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188, 0x0070, 0x210c, +- 0xa106, 0x0150, 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188, +- 0x0070, 0x210c, 0xa106, 0x15e0, 0x7018, 0xa10a, 0x1118, 0x080c, +- 0x722d, 0x04b0, 0x1210, 0x7114, 0xa10a, 0xa192, 0x000a, 0x0210, +- 0x2009, 0x000a, 0x00d6, 0x0016, 0x2001, 0xc682, 0xa080, 0x0011, +- 0x2014, 0x2001, 0xc76f, 0xa080, 0x0005, 0x2004, 0xa100, 0xa202, +- 0x001e, 0x00de, 0x0e20, 0x080c, 0x727c, 0x2200, 0xa102, 0x0208, +- 0x2208, 0x713a, 0x080c, 0x7377, 0x2100, 0x7042, 0x2001, 0x0002, +- 0x7037, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xc959, +- 0x2104, 0xc095, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x1669, +- 0x0005, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x71f1, 0x71f4, +- 0x71fe, 0x080c, 0x7196, 0x0005, 0x0126, 0x8001, 0x700e, 0x7138, +- 0x0041, 0x2091, 0x8000, 0x080c, 0x7196, 0x012e, 0x0005, 0x0005, +- 0x0005, 0x7018, 0xa100, 0x7214, 0xa21a, 0x1130, 0x701c, 0x7052, +- 0x7020, 0x7056, 0xa006, 0x0068, 0x0006, 0x080c, 0x7377, 0x2100, +- 0x7250, 0xa210, 0x7252, 0x1220, 0x7054, 0xa081, 0x0000, 0x7056, +- 0x000e, 0x2f08, 0xa188, 0x0070, 0x200a, 0x701a, 0x0005, 0x00e6, +- 0x2071, 0xc755, 0x700c, 0x0002, 0x7227, 0x7227, 0x7229, 0x00ee, +- 0x0005, 0x700f, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x00d6, 0x00e6, 0x2071, 0xc76f, 0x702c, 0xa005, 0x0178, 0x2068, +- 0x6964, 0x080c, 0x727c, 0x2100, 0x2208, 0xa102, 0x0238, 0x6800, +- 0x702e, 0x080c, 0x75b9, 0x080c, 0x1629, 0x0c70, 0x00ee, 0x00de, +- 0x012e, 0x0005, 0x00e6, 0x2071, 0xc76f, 0x702c, 0x6802, 0x2d00, +- 0x702e, 0x6858, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022, 0x685b, +- 0x0000, 0x00ee, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f, 0xa006, +- 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, 0x702a, 0x7026, +- 0x702f, 0x0000, 0x080c, 0x742b, 0x0168, 0x080c, 0x745d, 0x2d00, +- 0x7002, 0x700a, 0x701a, 0x7013, 0x0001, 0x701f, 0x0007, 0x00ee, +- 0x00de, 0x0005, 0xa00e, 0x0cd8, 0x00e6, 0x00d6, 0x00c6, 0x2071, +- 0xc76f, 0x721c, 0x2100, 0xa202, 0x1618, 0x080c, 0x745d, 0x090c, +- 0x1519, 0x7018, 0xa005, 0x1160, 0x2d00, 0x7002, 0x700a, 0x701a, +- 0xa006, 0x7006, 0x700e, 0x6806, 0x6802, 0x7012, 0x701e, 0x0038, +- 0x2060, 0x6806, 0x2d00, 0x6002, 0x701a, 0x6803, 0x0000, 0x7010, +- 0x8000, 0x7012, 0x701c, 0xa080, 0x0007, 0x701e, 0x721c, 0x08d0, +- 0x721c, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x0156, 0x0136, 0x0146, +- 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc76f, 0x7300, 0xa398, +- 0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318, 0x8003, +- 0x2228, 0x2021, 0x0054, 0xa402, 0xa532, 0x0208, 0x2028, 0x2500, +- 0x8004, 0x20a8, 0x23a0, 0xe000, 0xe000, 0xe000, 0x53a5, 0x2508, +- 0x080c, 0x7380, 0x2130, 0x7014, 0xa600, 0x7016, 0x2600, 0x711c, +- 0xa102, 0x701e, 0x7004, 0xa600, 0x2008, 0xa082, 0x0007, 0x1180, +- 0x7000, 0x2004, 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c, +- 0x727c, 0x002e, 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008, +- 0x7106, 0x2500, 0xa212, 0x1910, 0x012e, 0x00ee, 0x014e, 0x013e, +- 0x015e, 0x0005, 0x0016, 0x0026, 0x00e6, 0x00d6, 0x080c, 0x7340, +- 0x15e0, 0x2170, 0x2805, 0xac68, 0x2900, 0x0002, 0x7316, 0x7316, +- 0x731a, 0x7316, 0x731a, 0x7316, 0x7316, 0x7316, 0x7316, 0x7316, +- 0x7323, 0x7316, 0x7323, 0x7316, 0x7316, 0x7316, 0x080c, 0x1519, +- 0xa005, 0x00f0, 0x7000, 0x6802, 0x7004, 0x6806, 0x7010, 0x680a, +- 0x680f, 0x0000, 0x0060, 0x7010, 0x6812, 0x6817, 0x0000, 0x7000, +- 0x6802, 0x7004, 0x6806, 0x7008, 0x680a, 0x700c, 0x680e, 0x00de, +- 0x685c, 0x8000, 0x685e, 0x6858, 0x8001, 0x685a, 0x00d6, 0xa006, +- 0x00de, 0x00ee, 0x002e, 0x001e, 0x0005, 0xa085, 0x0001, 0x0cc0, +- 0x00e6, 0x0036, 0x2071, 0xc76f, 0x7014, 0xa005, 0x0568, 0x8001, +- 0x7016, 0x7020, 0x8001, 0x7022, 0x7008, 0xa080, 0x0003, 0x710c, +- 0x2110, 0x0429, 0x810c, 0xa118, 0x8210, 0xa282, 0x0007, 0x11b0, +- 0x7008, 0x2004, 0xa005, 0x0178, 0x00d6, 0x0006, 0x7008, 0x2068, +- 0x080c, 0x746c, 0x000e, 0x2068, 0x6807, 0x0000, 0x700a, 0x00de, +- 0x7010, 0x8001, 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, 0x2308, +- 0xa006, 0x003e, 0x00ee, 0x0005, 0xa085, 0x0001, 0x0cd0, 0x0006, +- 0x810b, 0x810b, 0x2100, 0x810b, 0xa100, 0x2008, 0x000e, 0x0005, +- 0x0006, 0x0026, 0x2100, 0xa005, 0x0160, 0xa092, 0x000c, 0x0248, +- 0x2009, 0x0000, 0x8108, 0xa082, 0x000c, 0x1de0, 0x002e, 0x000e, +- 0x0005, 0x2009, 0x0000, 0x0cd0, 0x2d00, 0xa0b8, 0x0008, 0x690c, +- 0x6810, 0x2019, 0x0001, 0x2031, 0x73c2, 0xa112, 0x0220, 0x0118, +- 0x8318, 0x2208, 0x0cd0, 0x6808, 0xa005, 0x0108, 0x8318, 0x233a, +- 0x6804, 0xd084, 0x2300, 0x2021, 0x0001, 0x1150, 0xa082, 0x0003, +- 0x0967, 0x0a67, 0x8420, 0xa082, 0x0007, 0x0967, 0x0a67, 0x0cd0, +- 0xa082, 0x0002, 0x0967, 0x0a67, 0x8420, 0xa082, 0x0005, 0x0967, +- 0x0a67, 0x0cd0, 0x6c1a, 0x2d00, 0xa0b8, 0x0007, 0x00e6, 0x2071, +- 0xc600, 0x7128, 0x6810, 0x2019, 0x0001, 0xa10a, 0x0118, 0x0210, +- 0x8318, 0x0cd8, 0x2031, 0x73d5, 0x0870, 0x6c16, 0x00ee, 0x0005, +- 0x00e6, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2e00, 0x2060, 0x2071, +- 0xc76f, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e, 0x7300, +- 0xa398, 0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318, +- 0x6834, 0xa084, 0x00ff, 0xa086, 0x0024, 0x00d6, 0x2368, 0x1138, +- 0x6000, 0x6802, 0x6004, 0x6806, 0x6008, 0x6812, 0x0050, 0x6000, +- 0x6802, 0x6004, 0x6806, 0x6008, 0x680a, 0x600c, 0x680e, 0x6010, +- 0x6812, 0x00de, 0x7014, 0x8000, 0x7016, 0x711c, 0x8109, 0x711e, +- 0x7004, 0x8000, 0x2008, 0xa082, 0x0007, 0x1180, 0x7000, 0x2004, +- 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e, +- 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008, 0x7106, 0x012e, +- 0x00ce, 0x00ee, 0x0005, 0x00d6, 0x0046, 0x0126, 0x2091, 0x8000, +- 0x2001, 0xc682, 0xa080, 0x0011, 0x2004, 0x8003, 0x2020, 0x080c, +- 0x15e5, 0x01d0, 0x2d00, 0x7026, 0x6803, 0x0000, 0x6807, 0x0000, +- 0x080c, 0x15e5, 0x0188, 0x7024, 0x6802, 0x6807, 0x0000, 0x2d00, +- 0x7026, 0xa4a2, 0x0007, 0x0110, 0x0208, 0x0c90, 0xa085, 0x0001, +- 0x012e, 0x004e, 0x00de, 0x0005, 0x7024, 0xa005, 0x0dc8, 0x2068, +- 0x2024, 0x080c, 0x1619, 0x2400, 0x0cc0, 0x0126, 0x2091, 0x8000, +- 0x7024, 0x2068, 0xa005, 0x0130, 0x2004, 0x7026, 0x6803, 0x0000, +- 0x6807, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7024, +- 0x6802, 0x2d00, 0x7026, 0x012e, 0x0005, 0x00d6, 0x2001, 0xc778, +- 0x2004, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619, +- 0x000e, 0x0cb8, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f, +- 0x7008, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619, +- 0x000e, 0x0cb8, 0xa006, 0x7002, 0x700a, 0x7006, 0x700e, 0x701a, +- 0x701e, 0x7022, 0x702a, 0x7026, 0x702e, 0x00ee, 0x00de, 0x0005, +- 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0086, 0x0046, 0x0056, 0x0026, +- 0x2031, 0x0000, 0x2001, 0xc756, 0x2004, 0xa005, 0x0904, 0x7532, +- 0x2071, 0xc682, 0x20e1, 0x0002, 0x3d08, 0xd19c, 0x0140, 0x2069, +- 0xc600, 0x6a28, 0x761c, 0x7114, 0x2041, 0x0000, 0x0028, 0x7118, +- 0x720c, 0x7620, 0x7008, 0x2040, 0x080c, 0x7627, 0x0904, 0x7532, +- 0x7004, 0xd084, 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, 0x0020, +- 0x2021, 0x002c, 0x2029, 0x000a, 0x080c, 0x1602, 0x0904, 0x752a, +- 0x2d00, 0x2060, 0x6436, 0x0016, 0x20e1, 0x0001, 0x3d08, 0x3e00, +- 0xa18c, 0x00ff, 0x6142, 0x603e, 0x001e, 0x6746, 0x2700, 0xa086, +- 0xff00, 0x1118, 0x6063, 0x0000, 0x0010, 0x6063, 0x0003, 0xa006, +- 0x6002, 0x602a, 0x602e, 0x6006, 0x603a, 0x604a, 0x6052, 0x6057, +- 0x0005, 0x605e, 0x6066, 0x604e, 0x2800, 0x606a, 0x604c, 0xc0ad, +- 0x604e, 0x665a, 0x2c00, 0x2078, 0x0479, 0x607f, 0xffff, 0x6083, +- 0x0000, 0x8109, 0x0180, 0x080c, 0x1602, 0x01c0, 0x2d00, 0x7806, +- 0x2f00, 0x6802, 0x6d36, 0xa006, 0x2d00, 0x2520, 0x00e9, 0x2d00, +- 0x2078, 0x8109, 0x1d80, 0x2c00, 0xa005, 0x002e, 0x005e, 0x004e, +- 0x008e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x2c00, 0x2068, +- 0x080c, 0x1629, 0x2600, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c, +- 0x1519, 0x7022, 0xa006, 0x0c48, 0x00d6, 0x00c6, 0x0136, 0x0146, +- 0x0156, 0x0016, 0x2068, 0x2400, 0xa084, 0x000f, 0xa080, 0x23c7, +- 0x2005, 0x2005, 0xad60, 0x2c00, 0x2d08, 0xa188, 0x0030, 0xa102, +- 0x20a8, 0x2c00, 0x20a0, 0x2001, 0xffff, 0x40a4, 0x001e, 0x015e, +- 0x014e, 0x013e, 0x00ce, 0x00de, 0x0005, 0x00c6, 0x00e6, 0x00f6, +- 0x6858, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022, +- 0x6960, 0x694e, 0x697c, 0x2009, 0xffff, 0x7818, 0xa102, 0xe000, +- 0x6852, 0x684b, 0x0000, 0x6868, 0xa005, 0x0118, 0x6848, 0xc085, +- 0x684a, 0x2d00, 0xa080, 0x0015, 0x2038, 0x2031, 0x0018, 0x6864, +- 0x2020, 0x683a, 0x685c, 0xa08a, 0x00ff, 0x1a0c, 0x1519, 0x2028, +- 0x2d00, 0x2060, 0x2078, 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7, +- 0x2145, 0x685c, 0x2050, 0xa005, 0x0530, 0x2805, 0xac70, 0x6834, +- 0xa084, 0x00ff, 0xa086, 0x0024, 0x1110, 0x7008, 0x0040, 0x6834, +- 0xa084, 0x00ff, 0xa086, 0x002c, 0x190c, 0x1519, 0x7010, 0x0006, +- 0x2400, 0xa005, 0x000e, 0x0168, 0x203a, 0x8738, 0x8631, 0x090c, +- 0x1519, 0x8421, 0x8529, 0x0138, 0x080c, 0x2389, 0x090c, 0x1519, +- 0x08e0, 0x080c, 0x73d8, 0x6837, 0x0023, 0x00fe, 0x00ee, 0x00ce, +- 0x0005, 0x00e6, 0x00c6, 0x00a6, 0x0086, 0x0056, 0x2d00, 0x2060, +- 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7, 0x2145, 0x685c, 0x2050, +- 0xa005, 0x01d0, 0x2028, 0x2805, 0xac70, 0x6834, 0xa084, 0x00ff, +- 0xa086, 0x0024, 0x1110, 0x7008, 0x0008, 0x7010, 0x0006, 0xa086, +- 0xffff, 0x000e, 0x0110, 0x080c, 0x73d8, 0x8529, 0x0128, 0x080c, +- 0x2389, 0x090c, 0x1519, 0x0c38, 0x005e, 0x008e, 0x00ae, 0x00ce, +- 0x00ee, 0x0005, 0x70ac, 0xa005, 0x0120, 0x2060, 0x6008, 0xa306, +- 0x0005, 0xa085, 0x0001, 0x0ce0, 0x70ac, 0x600e, 0x2c00, 0x70ae, +- 0x0005, 0x00f6, 0x00d6, 0x0036, 0x70ac, 0xa005, 0x01b8, 0x2068, +- 0x2079, 0x0000, 0x2c08, 0xa11e, 0x1118, 0x680c, 0x70ae, 0x0060, +- 0xa106, 0x0140, 0x2d00, 0x2078, 0x680c, 0xa005, 0x090c, 0x1519, +- 0x2068, 0x0cb0, 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x003e, 0x00de, +- 0x00fe, 0x0005, 0x00e6, 0x080c, 0x724a, 0x6018, 0x2070, 0xa006, +- 0x70b2, 0x70b6, 0x08b1, 0x080c, 0x95dc, 0x00ee, 0x0005, 0x00d6, +- 0x0026, 0x0016, 0x2061, 0xc76f, 0x6020, 0x6414, 0xa600, 0xa42a, +- 0x02f0, 0x6022, 0x2069, 0xc682, 0x6828, 0x6114, 0xa102, 0x1288, +- 0x685c, 0xd08c, 0x1130, 0xc08d, 0x685e, 0x2011, 0x8025, 0x080c, +- 0x407d, 0x2001, 0xc695, 0x2004, 0xa080, 0x0000, 0x200c, 0x8108, +- 0x2102, 0xa085, 0x0001, 0x001e, 0x002e, 0x00de, 0x0005, 0x2069, +- 0xc682, 0x6804, 0xd094, 0x0148, 0x685c, 0xd084, 0x1130, 0xc085, +- 0x685e, 0x2011, 0x8026, 0x080c, 0x407d, 0x2001, 0xc695, 0x2004, +- 0xa080, 0x0001, 0x200c, 0x8108, 0x2102, 0xa006, 0x2031, 0x0000, +- 0x0c10, 0x0006, 0x0016, 0x00c6, 0x6018, 0x2060, 0x6010, 0xa005, +- 0x0178, 0x2001, 0xc756, 0x2004, 0xa005, 0x0150, 0x2001, 0xc600, +- 0x2004, 0xa086, 0x0003, 0x1120, 0x2011, 0x8014, 0x080c, 0x407d, +- 0x00ce, 0x001e, 0x000e, 0x0005, 0x0016, 0x6834, 0xa08c, 0x00ff, +- 0xa186, 0x0024, 0x0110, 0xa186, 0x002c, 0x001e, 0x0005, 0x2001, +- 0xc683, 0x2004, 0xd09c, 0x0005, 0x2001, 0xc683, 0x2004, 0xd0a4, +- 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, +- 0x006e, 0x0005, 0x76b2, 0x76b2, 0x76b2, 0x76b4, 0x770f, 0x76b2, +- 0x76b2, 0x76b2, 0x774d, 0x76b2, 0x77aa, 0x76b2, 0x76b2, 0x76b2, +- 0x76b2, 0x76b2, 0x080c, 0x1519, 0xa182, 0x0100, 0x0002, 0x76c6, +- 0x76c6, 0x76c6, 0x76c8, 0x76e1, 0x76fb, 0x76c6, 0x76c6, 0x76c6, +- 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x080c, 0x1519, +- 0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, 0x2168, 0x684b, +- 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb, 0x0500, +- 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95dc, 0x00de, +- 0x0005, 0x080c, 0x7e47, 0x00f6, 0x00d6, 0x6110, 0x2178, 0x080c, +- 0xac8a, 0x0150, 0x00e6, 0x6018, 0x2070, 0xa006, 0x70b2, 0x70b6, +- 0x00ee, 0x2f68, 0x080c, 0x580a, 0x00de, 0x00fe, 0x080c, 0x95dc, +- 0x080c, 0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, +- 0x6110, 0x2168, 0x080c, 0xac8a, 0x0120, 0x684b, 0x0029, 0x080c, +- 0x580a, 0x00de, 0x080c, 0x95dc, 0x080c, 0x7f6e, 0x0005, 0xa182, +- 0x0100, 0x0002, 0x7721, 0x7723, 0x772b, 0x7721, 0x7721, 0x7721, +- 0x7748, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, +- 0x7721, 0x080c, 0x1519, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, +- 0x080c, 0x1870, 0x0005, 0x00d6, 0x00e6, 0x2001, 0xc756, 0x2004, +- 0xa086, 0x0000, 0x6110, 0x1118, 0x080c, 0x1629, 0x0028, 0x2168, +- 0x080c, 0x7555, 0x080c, 0x580a, 0x6018, 0x2070, 0xa006, 0x70b2, +- 0x70b6, 0x080c, 0x75f9, 0x00ee, 0x00de, 0x080c, 0x95dc, 0x0005, +- 0x080c, 0x761a, 0x080c, 0x56c7, 0x0005, 0xa182, 0x0100, 0x0002, +- 0x7762, 0x7788, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, +- 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, +- 0x080c, 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068, +- 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817, 0x0000, +- 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x8013, +- 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068, 0x080c, +- 0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, 0x012e, 0x0005, +- 0x6003, 0x0004, 0x630a, 0x080c, 0x74a0, 0x0168, 0x6012, 0x600f, +- 0x0000, 0x080c, 0x75f4, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, +- 0x080c, 0x1870, 0x0005, 0x2011, 0x0000, 0x080c, 0x1870, 0x00e6, +- 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x00ee, 0x080c, +- 0x95dc, 0x0005, 0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, +- 0x2168, 0x684b, 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, +- 0x68bb, 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, +- 0x95dc, 0x00de, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, +- 0x000b, 0x0005, 0x77da, 0x77da, 0x77da, 0x77dc, 0x77f1, 0x77da, +- 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, +- 0x77da, 0x77da, 0x080c, 0x1519, 0x080c, 0x90ef, 0x6110, 0x2168, +- 0x684b, 0x0006, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb, +- 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95dc, +- 0x0005, 0x080c, 0x761a, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, +- 0x1519, 0x000b, 0x0005, 0x780b, 0x780b, 0x780b, 0x780d, 0x781d, +- 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, +- 0x780b, 0x780b, 0x780b, 0x080c, 0x1519, 0x0036, 0x00e6, 0x2071, +- 0xc927, 0x703c, 0xac06, 0x1120, 0x2019, 0x0000, 0x080c, 0x8e79, +- 0x080c, 0x90ef, 0x00ee, 0x003e, 0x0005, 0x00d6, 0x6010, 0x2068, +- 0x080c, 0x761a, 0x00de, 0x0005, 0x080c, 0x7684, 0x1150, 0x6024, +- 0xd09c, 0x1138, 0x6810, 0x2009, 0xffff, 0xa102, 0x2020, 0x2019, +- 0x0000, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, +- 0x1208, 0xa200, 0x1f04, 0x7836, 0x8086, 0x818e, 0x0005, 0x0156, +- 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, 0x818d, +- 0x0228, 0xa11a, 0x1220, 0x1f04, 0x7846, 0x0028, 0xa11a, 0x2308, +- 0x8210, 0x1f04, 0x7846, 0x0006, 0x3200, 0xa084, 0xefff, 0x2080, +- 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, 0x0cb8, +- 0x0126, 0x2091, 0x2800, 0x2079, 0xc927, 0x012e, 0x00d6, 0x2069, +- 0xc927, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001, +- 0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, 0xa084, +- 0x0007, 0x0002, 0x7884, 0x78a5, 0x78f8, 0x788a, 0x78a5, 0x7884, +- 0x7882, 0x7882, 0x080c, 0x1519, 0x080c, 0x7024, 0x080c, 0x7e94, +- 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, 0x2011, +- 0x4e18, 0x080c, 0x6fad, 0x7828, 0xa092, 0x00c8, 0x1228, 0x8000, +- 0x782a, 0x080c, 0x4e52, 0x0c88, 0x080c, 0x4e18, 0x7807, 0x0003, +- 0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, 0x7024, 0x3c00, +- 0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, 0x20e0, +- 0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, +- 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c, 0x960c, 0x00ce, +- 0x0005, 0x3900, 0xa082, 0xca74, 0x1210, 0x080c, 0x91c4, 0x00c6, +- 0x7824, 0xa065, 0x090c, 0x1519, 0x7804, 0xa086, 0x0004, 0x0904, +- 0x7938, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, 0x00ce, +- 0x080c, 0x8be8, 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, 0x00e6, +- 0x2071, 0xc600, 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6, +- 0x2061, 0x0100, 0x2071, 0xc600, 0x080c, 0x4e5b, 0x00ee, 0x00ce, +- 0x080c, 0xc58e, 0x2009, 0x0014, 0x080c, 0x960c, 0x00ce, 0x0838, +- 0x2001, 0xc943, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b, +- 0x0000, 0x7824, 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c, +- 0x9660, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, 0xca74, +- 0x1210, 0x080c, 0x91c4, 0x7824, 0xa005, 0x090c, 0x1519, 0x781c, +- 0xa06d, 0x090c, 0x1519, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, +- 0x080c, 0x95dc, 0x693c, 0x81ff, 0x090c, 0x1519, 0x8109, 0x693e, +- 0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, 0x7807, +- 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7e94, 0x0888, +- 0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, 0x0804, +- 0x78d1, 0x7808, 0xac06, 0x0904, 0x78d1, 0x080c, 0x7db1, 0x080c, +- 0x79df, 0x00ce, 0x080c, 0x7e94, 0x0804, 0x78bf, 0x00c6, 0x6027, +- 0x0002, 0x62c8, 0x60c4, 0xa205, 0x11a8, 0x793c, 0xa1e5, 0x0000, +- 0x0160, 0x2009, 0x0049, 0x601c, 0xa086, 0x0009, 0x1110, 0x2009, +- 0x0103, 0x080c, 0x960c, 0x00ce, 0x0005, 0x2011, 0xc946, 0x2013, +- 0x0000, 0x0cc8, 0x3908, 0xa192, 0xca74, 0x1210, 0x080c, 0x91c4, +- 0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, 0x7530, 0x12f0, 0x8108, +- 0x7946, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x1138, +- 0x6014, 0xa084, 0x0184, 0xa085, 0x0012, 0x6016, 0x08e0, 0x793c, +- 0xa188, 0x0007, 0x210c, 0xa18e, 0x0009, 0x0d90, 0x6014, 0xa084, +- 0x0184, 0xa085, 0x0016, 0x6016, 0x0870, 0x7848, 0xc085, 0x784a, +- 0x0850, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, +- 0x0000, 0x2c08, 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6010, +- 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce, +- 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069, +- 0xc927, 0x6000, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, 0xa086, +- 0x0001, 0x1110, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, 0x0804, +- 0x7e9a, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0158, 0x6056, 0x605b, +- 0x0000, 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, 0xc927, +- 0x0c18, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x08e8, 0x0006, +- 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, +- 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0148, +- 0xa080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e, +- 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08, +- 0x2061, 0xc927, 0x6034, 0xa005, 0x0130, 0xa080, 0x0003, 0x2102, +- 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x0cd8, 0x00f6, 0x00e6, +- 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, 0x0016, +- 0x0006, 0x0126, 0xa02e, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678, +- 0x2091, 0x8000, 0x8cff, 0x0904, 0x7a87, 0x6018, 0xa080, 0x0028, +- 0x2004, 0xa206, 0x1904, 0x7a82, 0x87ff, 0x0120, 0x6050, 0xa106, +- 0x1904, 0x7a82, 0x703c, 0xac06, 0x1190, 0x0036, 0x2019, 0x0001, +- 0x080c, 0x8e79, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, +- 0x7047, 0x0000, 0x704b, 0x0000, 0x003e, 0x2029, 0x0001, 0x7038, +- 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, 0x2c00, +- 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, +- 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, +- 0x0000, 0x080c, 0xac8a, 0x01c8, 0x6010, 0x2068, 0x601c, 0xa086, +- 0x0003, 0x1580, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016, +- 0x0036, 0x0076, 0x080c, 0xaefc, 0x080c, 0xc4ca, 0x080c, 0x580a, +- 0x007e, 0x003e, 0x001e, 0x080c, 0xae41, 0x080c, 0xae4d, 0x00ce, +- 0x0804, 0x7a22, 0x2c78, 0x600c, 0x2060, 0x0804, 0x7a22, 0x85ff, +- 0x0120, 0x0036, 0x080c, 0x7f6e, 0x003e, 0x012e, 0x000e, 0x001e, +- 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, +- 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x0158, 0x601c, 0xa086, +- 0x0009, 0x1190, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, 0x95dc, +- 0x08b0, 0x0016, 0x0036, 0x0076, 0x080c, 0xc4ca, 0x080c, 0xc134, +- 0x007e, 0x003e, 0x001e, 0x0848, 0x601c, 0xa086, 0x000a, 0x0904, +- 0x7a6c, 0x0804, 0x7a6a, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x00f6, +- 0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, 0xc927, 0x7838, +- 0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, 0xac06, +- 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7833, 0x0000, +- 0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, +- 0x003e, 0x080c, 0xac8a, 0x0178, 0x6010, 0x2068, 0x601c, 0xa086, +- 0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, +- 0x580a, 0x080c, 0xae41, 0x080c, 0xae4d, 0x000e, 0x0888, 0x7e3a, +- 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, +- 0x601c, 0xa086, 0x0006, 0x0150, 0x601c, 0xa086, 0x0009, 0x1148, +- 0x6b4a, 0x080c, 0x580a, 0x080c, 0x95dc, 0x0c38, 0x080c, 0xc134, +- 0x0c10, 0x601c, 0xa086, 0x000a, 0x09b8, 0x08a0, 0x0016, 0x0026, +- 0x0086, 0x2041, 0x0000, 0x0099, 0x080c, 0x7be4, 0x008e, 0x002e, +- 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0xc927, 0x2091, 0x8000, +- 0x080c, 0x7c71, 0x080c, 0x7ce3, 0x012e, 0x00fe, 0x0005, 0x00f6, +- 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091, +- 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904, +- 0x7bba, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x7bb5, +- 0x88ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x7bb5, 0x7024, 0xac06, +- 0x1538, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x7024, +- 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90df, 0x7027, 0x0000, +- 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, +- 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, +- 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x04e8, +- 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, +- 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, ++ 0x60e2, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, 0x6020, 0xa084, 0x00c0, ++ 0x01e0, 0x2011, 0x0003, 0x080c, 0x8f27, 0x2011, 0x0002, 0x080c, ++ 0x8f31, 0x080c, 0x8e07, 0x2019, 0x0000, 0x080c, 0x8e92, 0x2069, ++ 0x0140, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, ++ 0xc600, 0x2003, 0x0001, 0x0804, 0x6167, 0x2001, 0xc60c, 0x200c, ++ 0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x5df6, 0x2069, 0x0140, ++ 0x080c, 0x25fb, 0x6803, 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, ++ 0x6804, 0xa005, 0x1118, 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, ++ 0xfdff, 0x602a, 0x6027, 0x0200, 0x2069, 0xc90c, 0x7000, 0x206a, ++ 0x708f, 0x0027, 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x611e, ++ 0x2091, 0x6000, 0x1f04, 0x611e, 0x0804, 0x6167, 0x6027, 0x1e00, ++ 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, ++ 0x11b0, 0x1d04, 0x6126, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, ++ 0x080c, 0x6f23, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, ++ 0x2071, 0xc93a, 0x7018, 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, ++ 0x2011, 0x5e0e, 0x080c, 0x6fc6, 0x2011, 0x5e01, 0x080c, 0x7089, ++ 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, ++ 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, ++ 0x2a1c, 0x60e2, 0x2001, 0xc60c, 0x200c, 0xc1b4, 0x2102, 0x00ee, ++ 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, ++ 0x2071, 0xc600, 0x7130, 0xd184, 0x1180, 0x2011, 0xc653, 0x2214, ++ 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011, 0xc653, 0x2214, 0xd2ac, ++ 0x1120, 0x7030, 0xd08c, 0x0904, 0x61d4, 0x7130, 0xc185, 0x7132, ++ 0x2011, 0xc653, 0x220c, 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, ++ 0x080c, 0xc126, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, ++ 0x007e, 0x01a0, 0xa186, 0x0080, 0x0188, 0x080c, 0x5356, 0x1170, ++ 0x8127, 0xa006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc1a9, 0x2009, ++ 0x0001, 0x2011, 0x0100, 0x080c, 0x7147, 0x001e, 0x8108, 0x1f04, ++ 0x619f, 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, ++ 0x2019, 0x0004, 0x080c, 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, ++ 0x007f, 0x2009, 0x0000, 0x080c, 0x5356, 0x1110, 0x080c, 0x4f60, ++ 0x8108, 0x1f04, 0x61cb, 0x015e, 0x080c, 0x1f06, 0x2011, 0x0003, ++ 0x080c, 0x8f27, 0x2011, 0x0002, 0x080c, 0x8f31, 0x080c, 0x8e07, ++ 0x0036, 0x2019, 0x0000, 0x080c, 0x8e92, 0x003e, 0x60e3, 0x0000, ++ 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e73, 0x00ee, 0x00ce, ++ 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2071, 0xc702, ++ 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, ++ 0x704f, 0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, ++ 0x7083, 0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, ++ 0x0005, 0x00e6, 0x2071, 0xc702, 0x6848, 0xa005, 0x1130, 0x7028, ++ 0xc085, 0x702a, 0xa085, 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, ++ 0x733a, 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, ++ 0x702e, 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, ++ 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, ++ 0x7272, 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, ++ 0x0000, 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc702, 0x7004, ++ 0x0043, 0x700c, 0x0002, 0x6250, 0x6247, 0x6247, 0x6247, 0x6247, ++ 0x0005, 0x62a6, 0x62a7, 0x62d9, 0x62da, 0x62a4, 0x6328, 0x632d, ++ 0x635e, 0x635f, 0x637a, 0x637b, 0x637c, 0x637d, 0x637e, 0x637f, ++ 0x644a, 0x6471, 0x700c, 0x0002, 0x6269, 0x62a4, 0x62a4, 0x62a5, ++ 0x62a5, 0x7830, 0x7930, 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, ++ 0x1510, 0x7030, 0xa10a, 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, ++ 0x0002, 0x12d0, 0x080c, 0x15e5, 0x01b0, 0x2d00, 0x705a, 0x7063, ++ 0x0040, 0x2001, 0x0003, 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, ++ 0x8000, 0x2009, 0xc959, 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, ++ 0x012e, 0x080c, 0x1669, 0x0005, 0x080c, 0x15e5, 0x0de0, 0x2d00, ++ 0x705a, 0x080c, 0x15e5, 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, ++ 0x0080, 0x2001, 0x0004, 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, ++ 0x0002, 0x62ae, 0x62b1, 0x62bf, 0x62d8, 0x62d8, 0x080c, 0x6262, ++ 0x0005, 0x0126, 0x8001, 0x700e, 0x7058, 0x0006, 0x080c, 0x67ed, ++ 0x0120, 0x2091, 0x8000, 0x080c, 0x6262, 0x00de, 0x0048, 0x0126, ++ 0x8001, 0x700e, 0x080c, 0x67ed, 0x7058, 0x2068, 0x7084, 0x705a, ++ 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, ++ 0x003a, 0x1218, 0x00db, 0x012e, 0x0005, 0x012e, 0x080c, 0x6380, ++ 0x0005, 0x0005, 0x0005, 0x00e6, 0x2071, 0xc702, 0x700c, 0x0002, ++ 0x62e5, 0x62e5, 0x62e5, 0x62e7, 0x62ea, 0x00ee, 0x0005, 0x700f, ++ 0x0001, 0x0010, 0x700f, 0x0002, 0x00ee, 0x0005, 0x6380, 0x6380, ++ 0x639c, 0x6380, 0x6557, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, ++ 0x639c, 0x6599, 0x65dc, 0x6625, 0x6639, 0x6380, 0x6380, 0x63b8, ++ 0x639c, 0x63cc, 0x6380, 0x6427, 0x66e5, 0x6700, 0x6380, 0x63b8, ++ 0x6380, 0x63cc, 0x6380, 0x6380, 0x641d, 0x6700, 0x6380, 0x6380, ++ 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x63e1, ++ 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, 0x6380, ++ 0x6380, 0x687f, 0x6380, 0x680b, 0x6380, 0x680b, 0x6380, 0x63f6, ++ 0x7020, 0x2068, 0x080c, 0x1619, 0x0005, 0x700c, 0x0002, 0x6334, ++ 0x6337, 0x6345, 0x635d, 0x635d, 0x080c, 0x6262, 0x0005, 0x0126, ++ 0x8001, 0x700e, 0x7058, 0x0006, 0x080c, 0x67ed, 0x0120, 0x2091, ++ 0x8000, 0x080c, 0x6262, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, ++ 0x080c, 0x67ed, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, ++ 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, ++ 0x003b, 0x012e, 0x0005, 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, ++ 0x6380, 0x639c, 0x6543, 0x6380, 0x639c, 0x6380, 0x639c, 0x639c, ++ 0x6380, 0x639c, 0x6543, 0x639c, 0x639c, 0x639c, 0x639c, 0x639c, ++ 0x6380, 0x639c, 0x6543, 0x6380, 0x6380, 0x639c, 0x6380, 0x6380, ++ 0x6380, 0x639c, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, ++ 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x5823, 0x012e, 0x0005, 0x7007, 0x0001, ++ 0x6838, 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x5823, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, ++ 0x00ff, 0xc0ed, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5823, ++ 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, ++ 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5823, 0x012e, 0x0005, ++ 0x6834, 0x8007, 0xa084, 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, ++ 0x0001, 0x0804, 0x64da, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, ++ 0x701a, 0x704b, 0x64da, 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, ++ 0x0904, 0x638e, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x64f7, ++ 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x64f7, ++ 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x638e, 0x8001, ++ 0x1120, 0x7007, 0x0001, 0x0804, 0x6520, 0x7007, 0x0006, 0x7012, ++ 0x2d00, 0x7016, 0x701a, 0x704b, 0x6520, 0x0005, 0x6834, 0x8007, ++ 0xa084, 0x00ff, 0xa086, 0x0001, 0x1904, 0x638e, 0x7007, 0x0001, ++ 0x2009, 0xc631, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, ++ 0x683a, 0x6853, 0x0000, 0x080c, 0x512f, 0x1108, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x5823, ++ 0x012e, 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, ++ 0xa086, 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x6718, 0x2d00, ++ 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, ++ 0xc72d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x63aa, ++ 0x6a84, 0xa28a, 0x0002, 0x1a04, 0x63aa, 0x82ff, 0x1138, 0x6888, ++ 0x698c, 0xa105, 0x0118, 0x2001, 0x64ad, 0x0018, 0xa280, 0x64a3, ++ 0x2005, 0x70c6, 0x7010, 0xa015, 0x0904, 0x648f, 0x080c, 0x15e5, ++ 0x1118, 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, ++ 0x2c05, 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, ++ 0xa00e, 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, ++ 0x0108, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, ++ 0x164d, 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, ++ 0x7007, 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x1619, 0x7014, ++ 0x2068, 0x0804, 0x63aa, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, ++ 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x644a, 0x7014, ++ 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, ++ 0xa105, 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, ++ 0x0904, 0x6718, 0x04b8, 0x64a5, 0x64a9, 0x0002, 0x0011, 0x0007, ++ 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, ++ 0x0004, 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, ++ 0x6804, 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, ++ 0x700c, 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, ++ 0x7e0e, 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, ++ 0x0c78, 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, ++ 0x00fe, 0x0005, 0x2009, 0xc631, 0x210c, 0x81ff, 0x1198, 0x6838, ++ 0xa084, 0x00ff, 0x683a, 0x080c, 0x4fbf, 0x1108, 0x0005, 0x080c, ++ 0x5947, 0x0126, 0x2091, 0x8000, 0x080c, 0xaf1c, 0x080c, 0x5823, ++ 0x012e, 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, ++ 0xc631, 0x210c, 0x81ff, 0x11d8, 0x6858, 0xa005, 0x01d8, 0x2001, ++ 0xc756, 0x2004, 0xa086, 0x0000, 0x01c0, 0x6838, 0xa084, 0x00ff, ++ 0x683a, 0x6853, 0x0000, 0x080c, 0x5081, 0x1108, 0x0005, 0x684a, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x5823, 0x012e, 0x0cb8, 0x2001, ++ 0x0028, 0x0ca8, 0x2001, 0x0000, 0x0c90, 0x2001, 0x002c, 0x0c78, ++ 0x2009, 0xc631, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, ++ 0x6838, 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x50d3, ++ 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, ++ 0x5823, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, ++ 0x2001, 0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, ++ 0x711a, 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, ++ 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, ++ 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, ++ 0x20a9, 0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, ++ 0x00ff, 0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, ++ 0xa18c, 0x00ff, 0x080c, 0x5356, 0x11b8, 0x0066, 0x6e50, 0x080c, ++ 0x5455, 0x006e, 0x0088, 0x0046, 0x2011, 0xc60c, 0x2224, 0xc484, ++ 0x2412, 0x004e, 0x00c6, 0x080c, 0x5356, 0x1110, 0x080c, 0x55b6, ++ 0x8108, 0x1f04, 0x6583, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, ++ 0x1619, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x5823, 0x012e, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xc653, ++ 0x2004, 0xd0a4, 0x0580, 0x2061, 0xc9bc, 0x6100, 0xd184, 0x0178, ++ 0x6858, 0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, ++ 0xa005, 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, ++ 0x0001, 0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, ++ 0x6858, 0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, ++ 0x00ff, 0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, ++ 0x012e, 0x0804, 0x67dc, 0x012e, 0x0804, 0x67d6, 0x012e, 0x0804, ++ 0x67d0, 0x012e, 0x0804, 0x67d3, 0x0126, 0x2091, 0x8000, 0x7007, ++ 0x0001, 0x2001, 0xc653, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xc9bc, ++ 0x6000, 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, ++ 0xa484, 0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, ++ 0x2100, 0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, ++ 0x02f0, 0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, ++ 0xa082, 0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, ++ 0x0004, 0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, ++ 0x8000, 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x67dc, 0x012e, ++ 0x0804, 0x67d9, 0x012e, 0x0804, 0x67d6, 0x0126, 0x2091, 0x8000, ++ 0x7007, 0x0001, 0x2061, 0xc9bc, 0x6300, 0xd38c, 0x1120, 0x6308, ++ 0x8318, 0x0220, 0x630a, 0x012e, 0x0804, 0x67ea, 0x012e, 0x0804, ++ 0x67d9, 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, ++ 0xd0ac, 0x0148, 0x00c6, 0x2061, 0xc9bc, 0x6000, 0xa084, 0xfcff, ++ 0x6002, 0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, ++ 0x0598, 0x2001, 0xc631, 0x2004, 0xa005, 0x0118, 0x080c, 0xae6d, ++ 0x0068, 0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, ++ 0x6950, 0x6156, 0x2009, 0x0041, 0x080c, 0x962c, 0x6958, 0xa18c, ++ 0xff00, 0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, ++ 0xfdff, 0x080c, 0x7147, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, ++ 0xc9bc, 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, ++ 0x00ce, 0x012e, 0x0804, 0x67dc, 0x00ce, 0x012e, 0x0804, 0x67d6, ++ 0x6954, 0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, ++ 0x0045, 0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xc60c, 0x200c, ++ 0xc194, 0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, ++ 0x1d18, 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x5356, 0x1960, ++ 0x6000, 0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, ++ 0x0024, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x0804, 0x6674, 0x685c, ++ 0xa065, 0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xc631, 0x2004, ++ 0xa005, 0x0150, 0x080c, 0xae6d, 0x8eff, 0x0118, 0x2e60, 0x080c, ++ 0xae6d, 0x00ee, 0x0804, 0x6674, 0x6020, 0xc0dc, 0xc0d5, 0x6022, ++ 0x2e60, 0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, ++ 0x6874, 0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x79b2, ++ 0x080c, 0x7ead, 0x00ee, 0x0804, 0x6674, 0x2061, 0xc9bc, 0x6000, ++ 0xd084, 0x0190, 0xd08c, 0x1904, 0x67ea, 0x0126, 0x2091, 0x8000, ++ 0x6204, 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x67ea, 0x012e, ++ 0x6853, 0x0016, 0x0804, 0x67e3, 0x6853, 0x0007, 0x0804, 0x67e3, ++ 0x6834, 0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x638e, 0x0078, ++ 0x2030, 0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, ++ 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x6718, 0x0005, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xc631, 0x210c, ++ 0x81ff, 0x1904, 0x6796, 0x2009, 0xc60c, 0x210c, 0xd194, 0x1904, ++ 0x67c0, 0x6848, 0x2070, 0xae82, 0xce00, 0x0a04, 0x678a, 0x2001, ++ 0xc617, 0x2004, 0xae02, 0x1a04, 0x678a, 0x711c, 0xa186, 0x0006, ++ 0x1904, 0x6779, 0x7018, 0xa005, 0x0904, 0x6796, 0x2004, 0xd0e4, ++ 0x1904, 0x67bb, 0x2061, 0xc9bc, 0x6100, 0xa184, 0x0301, 0xa086, ++ 0x0001, 0x1550, 0x7020, 0xd0dc, 0x1904, 0x67c3, 0x6853, 0x0000, ++ 0x6803, 0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, ++ 0xd0f4, 0x1904, 0x67c6, 0x2e60, 0x080c, 0x70a3, 0x012e, 0x00ee, ++ 0x0005, 0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, ++ 0xd0f4, 0x1904, 0x67c6, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, ++ 0x6853, 0x0006, 0x0804, 0x67e3, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, ++ 0x00b8, 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x5356, 0x15d8, ++ 0x6000, 0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, ++ 0x0002, 0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, ++ 0x6853, 0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xc672, ++ 0x2004, 0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xce00, 0x02c0, ++ 0x605c, 0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, ++ 0xa005, 0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, ++ 0xa086, 0x0007, 0x1904, 0x6723, 0x7003, 0x0002, 0x0804, 0x6723, ++ 0x6853, 0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, ++ 0x6853, 0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, ++ 0x0002, 0x6017, 0x0014, 0x080c, 0xbd6e, 0x012e, 0x00ee, 0x0005, ++ 0x2009, 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, ++ 0x0028, 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, ++ 0xff00, 0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x5823, ++ 0x012e, 0x0005, 0x080c, 0x1619, 0x0005, 0x702c, 0x7130, 0x8108, ++ 0xa102, 0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, ++ 0x7070, 0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, ++ 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, ++ 0x709a, 0x00de, 0x0005, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, ++ 0x0904, 0x6866, 0x080c, 0x76a8, 0x0904, 0x6869, 0x6868, 0xa084, ++ 0x0007, 0x0904, 0x685d, 0x080c, 0x95a6, 0x0904, 0x6860, 0x2d00, ++ 0x6012, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x1198, 0x2001, ++ 0xc8e5, 0x2004, 0xa086, 0xaaaa, 0x0130, 0x2001, 0xc635, 0x2004, ++ 0xa084, 0x0028, 0x05c8, 0x6008, 0xc0fd, 0x600a, 0x2001, 0xc8d3, ++ 0x2004, 0x0098, 0x6870, 0xa084, 0x00ff, 0x696c, 0xa18c, 0xff00, ++ 0xa105, 0x696c, 0xa18c, 0x00ff, 0x080c, 0x29c7, 0x11e0, 0x00c6, ++ 0x080c, 0x5356, 0x2c00, 0x00ce, 0x11b0, 0x601a, 0x601f, 0x0001, ++ 0x2009, 0x0040, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x0110, ++ 0x2009, 0x0041, 0x080c, 0x962c, 0x0005, 0x684b, 0x0101, 0x0078, ++ 0x684b, 0x002c, 0x0060, 0x684b, 0x0028, 0x0080, 0x684b, 0x0104, ++ 0x0030, 0x684b, 0x0105, 0x0018, 0x684b, 0x0106, 0x0038, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x5823, 0x012e, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x5823, 0x012e, 0x080c, 0x95fc, 0x0005, 0x00d6, ++ 0x00c6, 0x0036, 0x0026, 0x0016, 0x7007, 0x0001, 0x6a44, 0xa282, ++ 0x0004, 0x1a04, 0x68ca, 0xd284, 0x0170, 0x6a4c, 0xa290, 0xc77b, ++ 0x2204, 0xa065, 0x6004, 0x05e0, 0x8007, 0xa084, 0x00ff, 0xa084, ++ 0x0006, 0x1108, 0x04a8, 0x2c10, 0x080c, 0x95a6, 0x1118, 0x080c, ++ 0xaf26, 0x05a0, 0x621a, 0x6844, 0x0002, 0x68a9, 0x68ae, 0x68b1, ++ 0x68b7, 0x2019, 0x0002, 0x080c, 0xc126, 0x0060, 0x080c, 0xc0bd, ++ 0x0048, 0x2019, 0x0002, 0x6950, 0x080c, 0xc0d8, 0x0018, 0x6950, ++ 0x080c, 0xc0bd, 0x080c, 0x95fc, 0x6857, 0x0000, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x5823, 0x012e, 0x001e, 0x002e, 0x003e, 0x00ce, ++ 0x00de, 0x0005, 0x6857, 0x0006, 0x0c88, 0x6857, 0x0002, 0x0c70, ++ 0x6857, 0x0005, 0x0c58, 0x6857, 0x0004, 0x0c40, 0x6857, 0x0007, ++ 0x0c28, 0x00d6, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012, ++ 0x00de, 0x0005, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, ++ 0xa084, 0x7000, 0x0118, 0xa086, 0x1000, 0x15e0, 0x20e1, 0x0000, ++ 0x3d00, 0xa094, 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, ++ 0x1160, 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x1558, 0x080c, ++ 0x2f69, 0x1540, 0x080c, 0x6b4b, 0x0400, 0x20e1, 0x0004, 0x3d60, ++ 0xd1bc, 0x1170, 0x2100, 0xa084, 0xff00, 0xa086, 0x0500, 0x1138, ++ 0x0026, 0x2c10, 0x080c, 0x6da9, 0x002e, 0x01a0, 0x0070, 0x3e60, ++ 0xac84, 0x0007, 0x1178, 0xac82, 0xce00, 0x0260, 0x685c, 0xac02, ++ 0x1248, 0x2009, 0x0047, 0x080c, 0x962c, 0x7a1c, 0xd284, 0x1904, ++ 0x68e2, 0x0005, 0xa016, 0x080c, 0x1870, 0x0cb8, 0x0cd8, 0x781c, ++ 0xd08c, 0x0500, 0x0156, 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, ++ 0x3e28, 0xa584, 0x0076, 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, ++ 0x11a8, 0x080c, 0x69aa, 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, ++ 0x080c, 0x69c6, 0x014e, 0x013e, 0x015e, 0x2009, 0xc92f, 0x2104, ++ 0xa005, 0x1108, 0x0005, 0x080c, 0x7ead, 0x0ce0, 0xa484, 0x7000, ++ 0x1548, 0x080c, 0x69aa, 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, ++ 0x8100, 0x0d10, 0x00a0, 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, ++ 0x1f2d, 0x080c, 0x25fb, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, ++ 0x2202, 0x004e, 0x005e, 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, ++ 0xc54f, 0x20e1, 0x3000, 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, ++ 0x015e, 0x0880, 0x0439, 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, ++ 0x8100, 0x1d68, 0x080c, 0xc54f, 0x20e1, 0x3000, 0x7828, 0x7828, ++ 0x0056, 0x080c, 0x6e38, 0x005e, 0x0c40, 0x2001, 0xc60e, 0x2004, ++ 0xd08c, 0x0178, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1148, ++ 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x4096, 0x003e, ++ 0x002e, 0x0005, 0xa484, 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, ++ 0x001f, 0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, ++ 0x020a, 0x53a5, 0x0005, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, ++ 0x2099, 0x020a, 0x53a5, 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, ++ 0xff00, 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, ++ 0x6c50, 0x0005, 0xa196, 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, ++ 0x1118, 0x080c, 0x47e4, 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, ++ 0x1d80, 0x080c, 0x6cfc, 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, ++ 0x6b45, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, ++ 0xa196, 0x0023, 0x1904, 0x6b45, 0xa08e, 0x0023, 0x1570, 0x080c, ++ 0x6d97, 0x0904, 0x6b45, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, ++ 0x1150, 0x7034, 0xa005, 0x1904, 0x6b45, 0x2009, 0x0015, 0x080c, ++ 0x962c, 0x0804, 0x6b45, 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, ++ 0x1130, 0x2009, 0x0015, 0x080c, 0x962c, 0x0804, 0x6b45, 0xa08e, ++ 0x0100, 0x1904, 0x6b45, 0x7034, 0xa005, 0x1904, 0x6b45, 0x2009, ++ 0x0016, 0x080c, 0x962c, 0x0804, 0x6b45, 0xa08e, 0x0022, 0x1904, ++ 0x6b45, 0x7030, 0xa08e, 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, ++ 0xc0b5, 0x68d6, 0x7100, 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, ++ 0x00f6, 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, ++ 0x0016, 0x2008, 0x080c, 0x29f1, 0x7932, 0x7936, 0x001e, 0x000e, ++ 0x00fe, 0x080c, 0x29c7, 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, ++ 0x7086, 0x2071, 0xc600, 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, ++ 0x6b45, 0x2009, 0x0017, 0x0804, 0x6b0b, 0xa08e, 0x0400, 0x1158, ++ 0x7034, 0xa005, 0x1904, 0x6b45, 0x68d4, 0xc0a5, 0x68d6, 0x2009, ++ 0x0030, 0x0804, 0x6b0b, 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, ++ 0x1904, 0x6b45, 0x2009, 0x0018, 0x0804, 0x6b0b, 0xa08e, 0x2010, ++ 0x1120, 0x2009, 0x0019, 0x0804, 0x6b0b, 0xa08e, 0x2110, 0x1120, ++ 0x2009, 0x001a, 0x0804, 0x6b0b, 0xa08e, 0x5200, 0x1140, 0x7034, ++ 0xa005, 0x1904, 0x6b45, 0x2009, 0x001b, 0x0804, 0x6b0b, 0xa08e, ++ 0x5000, 0x1140, 0x7034, 0xa005, 0x1904, 0x6b45, 0x2009, 0x001c, ++ 0x0804, 0x6b0b, 0xa08e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, ++ 0x6b0b, 0xa08e, 0x1200, 0x1140, 0x7034, 0xa005, 0x1904, 0x6b45, ++ 0x2009, 0x0024, 0x0804, 0x6b0b, 0xa08c, 0xff00, 0xa18e, 0x2400, ++ 0x1120, 0x2009, 0x002d, 0x0804, 0x6b0b, 0xa08c, 0xff00, 0xa18e, ++ 0x5300, 0x1120, 0x2009, 0x002a, 0x0804, 0x6b0b, 0xa08e, 0x0f00, ++ 0x1120, 0x2009, 0x0020, 0x0804, 0x6b0b, 0xa08e, 0x5300, 0x1108, ++ 0x00d8, 0xa08e, 0x6104, 0x11c0, 0x2011, 0xcc8d, 0x8208, 0x2204, ++ 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, ++ 0x8108, 0x0046, 0x2124, 0x080c, 0x4096, 0x004e, 0x8108, 0x1f04, ++ 0x6ad5, 0x2009, 0x0023, 0x0438, 0xa08e, 0x6000, 0x1118, 0x2009, ++ 0x003f, 0x0408, 0xa08e, 0x5400, 0x1158, 0x080c, 0x6e92, 0x1904, ++ 0x6b45, 0x2009, 0x0046, 0x0016, 0x2001, 0xc8d3, 0x2064, 0x0498, ++ 0xa08e, 0x5500, 0x1140, 0x080c, 0x6ec5, 0x2009, 0x0041, 0x0158, ++ 0x2009, 0x0042, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, 0x0045, ++ 0x0010, 0x2009, 0x001d, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, ++ 0x220c, 0x080c, 0x29c7, 0x1598, 0x080c, 0x52fa, 0x1580, 0x6612, ++ 0x6516, 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, 0x1158, ++ 0x6870, 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, 0x1180, ++ 0x6000, 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, 0xa606, ++ 0x1138, 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, 0x0068, ++ 0x00c6, 0x080c, 0x95a6, 0x0168, 0x001e, 0x611a, 0x601f, 0x0004, ++ 0x7120, 0x610a, 0x001e, 0x080c, 0x962c, 0x00ce, 0x0005, 0x001e, ++ 0x0ce0, 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6b9f, 0x1904, ++ 0x6b9c, 0xa28e, 0x0033, 0x11e8, 0x080c, 0x6d97, 0x0904, 0x6b9c, ++ 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, 0xa005, ++ 0x15d8, 0x2009, 0x0015, 0x080c, 0x962c, 0x04b0, 0xa08e, 0x0100, ++ 0x1598, 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, 0x962c, ++ 0x0458, 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, 0x1520, ++ 0x2009, 0x0038, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x29c7, 0x11c0, 0x080c, 0x52fa, 0x11a8, 0x6612, 0x6516, ++ 0x00c6, 0x080c, 0x95a6, 0x0170, 0x001e, 0x611a, 0x080c, 0xb077, ++ 0x601f, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x962c, 0x080c, ++ 0x7ead, 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, 0x00f6, ++ 0x00d6, 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, 0x0006, ++ 0x2079, 0x0030, 0x2069, 0x0200, 0x080c, 0x1fec, 0x1590, 0x080c, ++ 0x1e97, 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, 0xa182, ++ 0x0011, 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, 0x2099, ++ 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x7a0c, ++ 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, 0xa08a, ++ 0x0140, 0x1a0c, 0x1519, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, ++ 0x53a5, 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, ++ 0x0070, 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, 0x002e, ++ 0x00de, 0x00fe, 0x0005, 0xa016, 0x080c, 0x1870, 0xa085, 0x0001, ++ 0x0c80, 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, 0x000e, ++ 0x0005, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, 0x00ff, ++ 0x1198, 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, 0x6c4b, ++ 0xa596, 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, 0xfffc, ++ 0x1118, 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, 0xc635, ++ 0x231c, 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, ++ 0xc77b, 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, 0xc7fc, ++ 0x2e1c, 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, 0x0080, ++ 0x2368, 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, 0x1120, ++ 0xa346, 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, 0x0d58, ++ 0x8420, 0x8e70, 0x1f04, 0x6c28, 0x82ff, 0x1118, 0xa085, 0x0001, ++ 0x0018, 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, 0x0005, ++ 0xa084, 0x0007, 0x000a, 0x0005, 0x6c5c, 0x6c5c, 0x6c5c, 0x6e25, ++ 0x6c5c, 0x6c5d, 0x6c72, 0x6ce7, 0x0005, 0x7110, 0xd1bc, 0x0188, ++ 0x7120, 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xce00, 0x0248, ++ 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, ++ 0x962c, 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x6cc5, 0x7110, ++ 0xd1bc, 0x1904, 0x6cc5, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x29c7, 0x1904, 0x6cc5, 0x080c, 0x52fa, 0x15f0, 0x6612, ++ 0x6516, 0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, 0x8217, ++ 0xa286, 0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, ++ 0x11a0, 0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x95a6, 0x001e, ++ 0x0530, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, ++ 0x2009, 0x0044, 0x080c, 0x962c, 0x00c0, 0x00c6, 0x080c, 0x95a6, ++ 0x001e, 0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, ++ 0x0004, 0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x79f8, 0x080c, 0x7ead, 0x00ce, 0x0005, 0x2001, ++ 0xc60d, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x4096, ++ 0x00c6, 0x080c, 0xaf26, 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, ++ 0x7120, 0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, ++ 0x6007, 0x0041, 0x080c, 0x79b2, 0x080c, 0x7ead, 0x08f0, 0x7110, ++ 0xd1bc, 0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, ++ 0xce00, 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, ++ 0x0045, 0x080c, 0x962c, 0x0005, 0x0006, 0x080c, 0x2f69, 0x000e, ++ 0x1168, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, ++ 0xa084, 0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, 0x6d15, ++ 0x6d16, 0x6d15, 0x6d15, 0x6d7f, 0x6d8b, 0x0005, 0x7110, 0xd1bc, ++ 0x0120, 0x702c, 0xd084, 0x0904, 0x6d7e, 0x700c, 0x7108, 0x080c, ++ 0x29c7, 0x1904, 0x6d7e, 0x080c, 0x52fa, 0x1904, 0x6d7e, 0x6612, ++ 0x6516, 0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, ++ 0x0004, 0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, 0x6d97, ++ 0x00ce, 0x0904, 0x6d7e, 0x00c6, 0x080c, 0x95a6, 0x001e, 0x05f0, ++ 0x611a, 0x080c, 0xb077, 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, ++ 0x0088, 0x080c, 0x962c, 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, ++ 0x0160, 0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, ++ 0x0004, 0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, 0x95a6, ++ 0x001e, 0x01e0, 0x611a, 0x080c, 0xb077, 0x601f, 0x0005, 0x7120, ++ 0x610a, 0x2009, 0x0088, 0x080c, 0x962c, 0x0080, 0x00c6, 0x080c, ++ 0x95a6, 0x001e, 0x0158, 0x611a, 0x080c, 0xb077, 0x601f, 0x0004, ++ 0x7120, 0x610a, 0x2009, 0x0001, 0x080c, 0x962c, 0x0005, 0x7110, ++ 0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, ++ 0x080c, 0x962c, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, ++ 0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x962c, 0x0005, 0x7020, ++ 0x2060, 0xac84, 0x0007, 0x1158, 0xac82, 0xce00, 0x0240, 0x2001, ++ 0xc617, 0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, ++ 0x0ce8, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x2f69, 0x1904, 0x6e20, ++ 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904, 0x6e20, 0x20e1, ++ 0x0000, 0x3d08, 0xa18c, 0x00ff, 0xa18e, 0x00ff, 0x1500, 0x3e00, ++ 0xa086, 0xffff, 0x11e0, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, ++ 0x0006, 0x0016, 0x2001, 0xc61d, 0x2004, 0x20e1, 0x0001, 0x3e08, ++ 0xa106, 0x1130, 0x2001, 0xc61c, 0x2004, 0x3d08, 0xa106, 0x0118, ++ 0x001e, 0x000e, 0x00a8, 0x001e, 0x000e, 0x0804, 0x6e20, 0x20e1, ++ 0x0001, 0x3d08, 0x3e00, 0x0156, 0x080c, 0x29c7, 0x015e, 0x15c0, ++ 0x080c, 0x5356, 0x0128, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, ++ 0x2138, 0x873f, 0x2c00, 0x2070, 0x20e1, 0x0003, 0x3d18, 0x831f, ++ 0xa39c, 0x00ff, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0xa086, ++ 0x1000, 0x0120, 0x080c, 0x7603, 0x11d8, 0x0080, 0x080c, 0x95a6, ++ 0x01b8, 0x20e1, 0x0002, 0x3e08, 0xd19c, 0x0118, 0x6124, 0xc19d, ++ 0x6126, 0x2e00, 0x601a, 0x620a, 0x601f, 0x0009, 0x2009, 0x0101, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x00ee, 0x00de, 0x00ce, 0x0005, ++ 0xa006, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x7110, 0xd1bc, 0x1178, ++ 0x7024, 0x2060, 0xac84, 0x0007, 0x1150, 0xac82, 0xce00, 0x0238, ++ 0x685c, 0xac02, 0x1220, 0x2009, 0x0051, 0x080c, 0x962c, 0x0005, ++ 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, ++ 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, ++ 0x00c6, 0x00d6, 0x00f6, 0x7000, 0xa084, 0xf000, 0xa086, 0xc000, ++ 0x05b0, 0x080c, 0x95a6, 0x0598, 0x0066, 0x00c6, 0x0046, 0x2011, ++ 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x1580, 0x080c, ++ 0x52fa, 0x1568, 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, 0x601a, ++ 0x080c, 0xb077, 0x080c, 0x1602, 0x01f0, 0x2d00, 0x6056, 0x6803, ++ 0x0000, 0x6837, 0x0000, 0x6c3a, 0xadf8, 0x000f, 0x20a9, 0x000e, ++ 0x2fa0, 0x2e98, 0x53a3, 0x006e, 0x6612, 0x6007, 0x003e, 0x601f, ++ 0x0001, 0x6003, 0x0001, 0x080c, 0x79f8, 0x080c, 0x7ead, 0x00fe, ++ 0x00de, 0x00ce, 0x0005, 0x080c, 0x95fc, 0x006e, 0x0cc0, 0x004e, ++ 0x00ce, 0x0cc8, 0x0156, 0x0046, 0x2e00, 0xa0a0, 0x000e, 0x2404, ++ 0x2020, 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0003, ++ 0x2019, 0xc606, 0x2011, 0xcc9b, 0x080c, 0xa11c, 0x11d8, 0xd48c, ++ 0x0148, 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011, 0xcc9f, 0x080c, ++ 0xa11c, 0x1180, 0xd494, 0x0170, 0x080c, 0x76ad, 0x0148, 0x20a9, ++ 0x0008, 0x2019, 0xc69a, 0x2011, 0xccaa, 0x080c, 0xa131, 0x0010, ++ 0xa085, 0x0001, 0x004e, 0x015e, 0x0005, 0x0156, 0x0046, 0x2e00, ++ 0xa0a0, 0x000e, 0x2404, 0x2020, 0x8427, 0xa4a4, 0x0007, 0xd484, ++ 0x0148, 0x20a9, 0x0003, 0x2019, 0xc606, 0x2011, 0xcc93, 0x080c, ++ 0xa11c, 0x11d8, 0xd48c, 0x0148, 0x20a9, 0x0003, 0x2019, 0xc602, ++ 0x2011, 0xcc97, 0x080c, 0xa11c, 0x1180, 0xd494, 0x0170, 0x080c, ++ 0x76ad, 0x0148, 0x20a9, 0x0008, 0x2019, 0xc69a, 0x2011, 0xcca2, ++ 0x080c, 0xa131, 0x0010, 0xa085, 0x0001, 0x004e, 0x015e, 0x0005, ++ 0x2071, 0xc93a, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, ++ 0x7076, 0x7012, 0x7017, 0xce00, 0x7007, 0x0000, 0x7026, 0x702b, ++ 0x8c25, 0x7032, 0x7037, 0x8c85, 0x703b, 0xffff, 0x703f, 0xffff, ++ 0x7042, 0x7047, 0x47a0, 0x704a, 0x705b, 0x7058, 0x2001, 0xc8e8, ++ 0x2003, 0x0003, 0x2001, 0xc8ea, 0x2003, 0x0100, 0x3a00, 0xa084, ++ 0x0005, 0x706e, 0x0005, 0x2071, 0xc93a, 0x1d04, 0x6fb5, 0x2091, ++ 0x6000, 0x700c, 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, ++ 0x0001, 0x0126, 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, ++ 0x7142, 0x1110, 0x7044, 0x080f, 0x00c6, 0x2061, 0xc600, 0x6034, ++ 0x00ce, 0xd0cc, 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, ++ 0x0150, 0x706e, 0x2011, 0x8043, 0x2018, 0x080c, 0x4096, 0x0018, ++ 0x0126, 0x2091, 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, ++ 0x7022, 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, ++ 0x1110, 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, ++ 0xa00d, 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, ++ 0x8109, 0x7132, 0x0128, 0xa184, 0x007f, 0x090c, 0x8ce1, 0x0010, ++ 0x7034, 0x080f, 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, ++ 0x703c, 0xa005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, ++ 0x0168, 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, ++ 0x714e, 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, ++ 0x01d8, 0x0016, 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, ++ 0x1138, 0x7073, 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, ++ 0x001e, 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, ++ 0x711a, 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x6fdb, ++ 0x6fdc, 0x6ff4, 0x00e6, 0x2071, 0xc93a, 0x7018, 0xa005, 0x1120, ++ 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, ++ 0x2071, 0xc93a, 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, ++ 0x00ee, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x6088, 0xa102, 0x0208, ++ 0x618a, 0x00ee, 0x0005, 0x0005, 0x7110, 0x080c, 0x5356, 0x1158, ++ 0x6088, 0x8001, 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x7ead, 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, ++ 0x7007, 0x0002, 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, ++ 0x8000, 0x603c, 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, ++ 0xaf65, 0x6014, 0xa005, 0x0518, 0x8001, 0x6016, 0x1500, 0x611c, ++ 0xa186, 0x0003, 0x0130, 0xa186, 0x0006, 0x0118, 0xa186, 0x0009, ++ 0x11a0, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0270, 0xa082, ++ 0x1999, 0x6856, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, ++ 0x800b, 0x810b, 0xa108, 0x6116, 0x0010, 0x080c, 0xaa35, 0x012e, ++ 0xac88, 0x0018, 0x7116, 0x2001, 0xfe00, 0xa102, 0x0220, 0x7017, ++ 0xce00, 0x7007, 0x0000, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7027, ++ 0x07d0, 0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0xc943, 0x2003, ++ 0x0000, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7132, 0x702f, 0x0009, ++ 0x00ee, 0x0005, 0x2011, 0xc946, 0x2013, 0x0000, 0x0005, 0x00e6, ++ 0x2071, 0xc93a, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, ++ 0x00c6, 0x0026, 0x7054, 0x8000, 0x7056, 0x2061, 0xc8e8, 0x6008, ++ 0xa086, 0x0000, 0x0158, 0x7068, 0x6032, 0x7064, 0x602e, 0x7060, ++ 0x602a, 0x705c, 0x6026, 0x2c10, 0x080c, 0x164d, 0x002e, 0x00ce, ++ 0x0005, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, ++ 0x6f23, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, ++ 0x00e6, 0x2071, 0xc93a, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, ++ 0x0005, 0x00e6, 0x0006, 0x2071, 0xc93a, 0x7078, 0xa206, 0x1110, ++ 0x7076, 0x707a, 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0xc9bc, ++ 0x00ce, 0x0005, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, ++ 0xc9bc, 0x2060, 0x0005, 0x6854, 0xa08a, 0x199a, 0x0210, 0x2001, ++ 0x1999, 0xa005, 0x1150, 0x00c6, 0x2061, 0xc9bc, 0x6014, 0x00ce, ++ 0xa005, 0x1138, 0x2001, 0x001e, 0x0020, 0xa08e, 0xffff, 0x1108, ++ 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, ++ 0x00c0, 0xa18e, 0x00c0, 0x05e8, 0xd0b4, 0x1138, 0xd0bc, 0x1550, ++ 0x2009, 0x0006, 0x080c, 0x711e, 0x0005, 0xd0fc, 0x0138, 0xa084, ++ 0x0003, 0x0120, 0xa086, 0x0003, 0x1904, 0x7118, 0x6020, 0xd0d4, ++ 0x0130, 0xc0d4, 0x6022, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, ++ 0xc674, 0x2104, 0xd084, 0x0138, 0x87ff, 0x1120, 0x2009, 0x0042, ++ 0x080c, 0x962c, 0x0005, 0x87ff, 0x1120, 0x2009, 0x0043, 0x080c, ++ 0x962c, 0x0005, 0xd0fc, 0x0130, 0xa084, 0x0003, 0x0118, 0xa086, ++ 0x0003, 0x11f0, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x962c, ++ 0x0005, 0xd0fc, 0x0160, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0148, ++ 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x962c, 0x0005, 0x0061, ++ 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x962c, 0x0cb0, ++ 0x2009, 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6010, ++ 0xa0ec, 0xf000, 0x0510, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, ++ 0x0001, 0x1188, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x1158, ++ 0x00c6, 0x2061, 0xc9bc, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, ++ 0x0208, 0x6206, 0x00ce, 0x080c, 0x5823, 0x6010, 0xa06d, 0x0076, ++ 0x2039, 0x0000, 0x190c, 0x70a3, 0x007e, 0x00de, 0x0005, 0x0156, ++ 0x00c6, 0x2061, 0xc9bc, 0x6000, 0x81ff, 0x0110, 0xa205, 0x0008, ++ 0xa204, 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, ++ 0x6808, 0xa005, 0x0120, 0x8001, 0x680a, 0xa085, 0x0001, 0x0005, ++ 0x2071, 0xc755, 0x7003, 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, ++ 0x7013, 0x0001, 0x702f, 0x0006, 0x7033, 0x0001, 0x7063, 0x0000, ++ 0x0005, 0x00e6, 0x2071, 0xc755, 0x6a2c, 0x721e, 0x6b30, 0x7322, ++ 0x6834, 0x7026, 0x705a, 0x6838, 0x702a, 0x705e, 0x6824, 0x7016, ++ 0x683c, 0x701a, 0x2009, 0x0070, 0x200a, 0xa005, 0x0150, 0x2009, ++ 0x0000, 0xa188, 0x000c, 0x8001, 0x1de0, 0x2100, 0xa210, 0x1208, ++ 0x8318, 0x7252, 0x7356, 0x7010, 0xc084, 0x7012, 0x7007, 0x0001, ++ 0x700f, 0x0000, 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc755, ++ 0x7004, 0x004b, 0x700c, 0x0002, 0x71a7, 0x71a0, 0x71a0, 0x0005, ++ 0x71b1, 0x7202, 0x7203, 0x7204, 0x7205, 0x7218, 0x7219, 0x700c, ++ 0x0cba, 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188, 0x0070, ++ 0x210c, 0xa106, 0x0150, 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, ++ 0xa188, 0x0070, 0x210c, 0xa106, 0x15e0, 0x7018, 0xa10a, 0x1118, ++ 0x080c, 0x7246, 0x04b0, 0x1210, 0x7114, 0xa10a, 0xa192, 0x000a, ++ 0x0210, 0x2009, 0x000a, 0x00d6, 0x0016, 0x2001, 0xc682, 0xa080, ++ 0x0011, 0x2014, 0x2001, 0xc76f, 0xa080, 0x0005, 0x2004, 0xa100, ++ 0xa202, 0x001e, 0x00de, 0x0e20, 0x080c, 0x7295, 0x2200, 0xa102, ++ 0x0208, 0x2208, 0x713a, 0x080c, 0x7390, 0x2100, 0x7042, 0x2001, ++ 0x0002, 0x7037, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, ++ 0xc959, 0x2104, 0xc095, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, ++ 0x1669, 0x0005, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x720a, ++ 0x720d, 0x7217, 0x080c, 0x71af, 0x0005, 0x0126, 0x8001, 0x700e, ++ 0x7138, 0x0041, 0x2091, 0x8000, 0x080c, 0x71af, 0x012e, 0x0005, ++ 0x0005, 0x0005, 0x7018, 0xa100, 0x7214, 0xa21a, 0x1130, 0x701c, ++ 0x7052, 0x7020, 0x7056, 0xa006, 0x0068, 0x0006, 0x080c, 0x7390, ++ 0x2100, 0x7250, 0xa210, 0x7252, 0x1220, 0x7054, 0xa081, 0x0000, ++ 0x7056, 0x000e, 0x2f08, 0xa188, 0x0070, 0x200a, 0x701a, 0x0005, ++ 0x00e6, 0x2071, 0xc755, 0x700c, 0x0002, 0x7240, 0x7240, 0x7242, ++ 0x00ee, 0x0005, 0x700f, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x00d6, 0x00e6, 0x2071, 0xc76f, 0x702c, 0xa005, 0x0178, ++ 0x2068, 0x6964, 0x080c, 0x7295, 0x2100, 0x2208, 0xa102, 0x0238, ++ 0x6800, 0x702e, 0x080c, 0x75d2, 0x080c, 0x1629, 0x0c70, 0x00ee, ++ 0x00de, 0x012e, 0x0005, 0x00e6, 0x2071, 0xc76f, 0x702c, 0x6802, ++ 0x2d00, 0x702e, 0x6858, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022, ++ 0x685b, 0x0000, 0x00ee, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f, ++ 0xa006, 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, 0x702a, ++ 0x7026, 0x702f, 0x0000, 0x080c, 0x7444, 0x0168, 0x080c, 0x7476, ++ 0x2d00, 0x7002, 0x700a, 0x701a, 0x7013, 0x0001, 0x701f, 0x0007, ++ 0x00ee, 0x00de, 0x0005, 0xa00e, 0x0cd8, 0x00e6, 0x00d6, 0x00c6, ++ 0x2071, 0xc76f, 0x721c, 0x2100, 0xa202, 0x1618, 0x080c, 0x7476, ++ 0x090c, 0x1519, 0x7018, 0xa005, 0x1160, 0x2d00, 0x7002, 0x700a, ++ 0x701a, 0xa006, 0x7006, 0x700e, 0x6806, 0x6802, 0x7012, 0x701e, ++ 0x0038, 0x2060, 0x6806, 0x2d00, 0x6002, 0x701a, 0x6803, 0x0000, ++ 0x7010, 0x8000, 0x7012, 0x701c, 0xa080, 0x0007, 0x701e, 0x721c, ++ 0x08d0, 0x721c, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x0156, 0x0136, ++ 0x0146, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc76f, 0x7300, ++ 0xa398, 0x0003, 0x7104, 0x080c, 0x7390, 0x810c, 0x2100, 0xa318, ++ 0x8003, 0x2228, 0x2021, 0x0054, 0xa402, 0xa532, 0x0208, 0x2028, ++ 0x2500, 0x8004, 0x20a8, 0x23a0, 0xe000, 0xe000, 0xe000, 0x53a5, ++ 0x2508, 0x080c, 0x7399, 0x2130, 0x7014, 0xa600, 0x7016, 0x2600, ++ 0x711c, 0xa102, 0x701e, 0x7004, 0xa600, 0x2008, 0xa082, 0x0007, ++ 0x1180, 0x7000, 0x2004, 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, ++ 0x080c, 0x7295, 0x002e, 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, ++ 0x0008, 0x7106, 0x2500, 0xa212, 0x1910, 0x012e, 0x00ee, 0x014e, ++ 0x013e, 0x015e, 0x0005, 0x0016, 0x0026, 0x00e6, 0x00d6, 0x080c, ++ 0x7359, 0x15e0, 0x2170, 0x2805, 0xac68, 0x2900, 0x0002, 0x732f, ++ 0x732f, 0x7333, 0x732f, 0x7333, 0x732f, 0x732f, 0x732f, 0x732f, ++ 0x732f, 0x733c, 0x732f, 0x733c, 0x732f, 0x732f, 0x732f, 0x080c, ++ 0x1519, 0xa005, 0x00f0, 0x7000, 0x6802, 0x7004, 0x6806, 0x7010, ++ 0x680a, 0x680f, 0x0000, 0x0060, 0x7010, 0x6812, 0x6817, 0x0000, ++ 0x7000, 0x6802, 0x7004, 0x6806, 0x7008, 0x680a, 0x700c, 0x680e, ++ 0x00de, 0x685c, 0x8000, 0x685e, 0x6858, 0x8001, 0x685a, 0x00d6, ++ 0xa006, 0x00de, 0x00ee, 0x002e, 0x001e, 0x0005, 0xa085, 0x0001, ++ 0x0cc0, 0x00e6, 0x0036, 0x2071, 0xc76f, 0x7014, 0xa005, 0x0568, ++ 0x8001, 0x7016, 0x7020, 0x8001, 0x7022, 0x7008, 0xa080, 0x0003, ++ 0x710c, 0x2110, 0x0429, 0x810c, 0xa118, 0x8210, 0xa282, 0x0007, ++ 0x11b0, 0x7008, 0x2004, 0xa005, 0x0178, 0x00d6, 0x0006, 0x7008, ++ 0x2068, 0x080c, 0x7485, 0x000e, 0x2068, 0x6807, 0x0000, 0x700a, ++ 0x00de, 0x7010, 0x8001, 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, ++ 0x2308, 0xa006, 0x003e, 0x00ee, 0x0005, 0xa085, 0x0001, 0x0cd0, ++ 0x0006, 0x810b, 0x810b, 0x2100, 0x810b, 0xa100, 0x2008, 0x000e, ++ 0x0005, 0x0006, 0x0026, 0x2100, 0xa005, 0x0160, 0xa092, 0x000c, ++ 0x0248, 0x2009, 0x0000, 0x8108, 0xa082, 0x000c, 0x1de0, 0x002e, ++ 0x000e, 0x0005, 0x2009, 0x0000, 0x0cd0, 0x2d00, 0xa0b8, 0x0008, ++ 0x690c, 0x6810, 0x2019, 0x0001, 0x2031, 0x73db, 0xa112, 0x0220, ++ 0x0118, 0x8318, 0x2208, 0x0cd0, 0x6808, 0xa005, 0x0108, 0x8318, ++ 0x233a, 0x6804, 0xd084, 0x2300, 0x2021, 0x0001, 0x1150, 0xa082, ++ 0x0003, 0x0967, 0x0a67, 0x8420, 0xa082, 0x0007, 0x0967, 0x0a67, ++ 0x0cd0, 0xa082, 0x0002, 0x0967, 0x0a67, 0x8420, 0xa082, 0x0005, ++ 0x0967, 0x0a67, 0x0cd0, 0x6c1a, 0x2d00, 0xa0b8, 0x0007, 0x00e6, ++ 0x2071, 0xc600, 0x7128, 0x6810, 0x2019, 0x0001, 0xa10a, 0x0118, ++ 0x0210, 0x8318, 0x0cd8, 0x2031, 0x73ee, 0x0870, 0x6c16, 0x00ee, ++ 0x0005, 0x00e6, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2e00, 0x2060, ++ 0x2071, 0xc76f, 0x2009, 0x0001, 0x0026, 0x080c, 0x7295, 0x002e, ++ 0x7300, 0xa398, 0x0003, 0x7104, 0x080c, 0x7390, 0x810c, 0x2100, ++ 0xa318, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0024, 0x00d6, 0x2368, ++ 0x1138, 0x6000, 0x6802, 0x6004, 0x6806, 0x6008, 0x6812, 0x0050, ++ 0x6000, 0x6802, 0x6004, 0x6806, 0x6008, 0x680a, 0x600c, 0x680e, ++ 0x6010, 0x6812, 0x00de, 0x7014, 0x8000, 0x7016, 0x711c, 0x8109, ++ 0x711e, 0x7004, 0x8000, 0x2008, 0xa082, 0x0007, 0x1180, 0x7000, ++ 0x2004, 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c, 0x7295, ++ 0x002e, 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008, 0x7106, ++ 0x012e, 0x00ce, 0x00ee, 0x0005, 0x00d6, 0x0046, 0x0126, 0x2091, ++ 0x8000, 0x2001, 0xc682, 0xa080, 0x0011, 0x2004, 0x8003, 0x2020, ++ 0x080c, 0x15e5, 0x01d0, 0x2d00, 0x7026, 0x6803, 0x0000, 0x6807, ++ 0x0000, 0x080c, 0x15e5, 0x0188, 0x7024, 0x6802, 0x6807, 0x0000, ++ 0x2d00, 0x7026, 0xa4a2, 0x0007, 0x0110, 0x0208, 0x0c90, 0xa085, ++ 0x0001, 0x012e, 0x004e, 0x00de, 0x0005, 0x7024, 0xa005, 0x0dc8, ++ 0x2068, 0x2024, 0x080c, 0x1619, 0x2400, 0x0cc0, 0x0126, 0x2091, ++ 0x8000, 0x7024, 0x2068, 0xa005, 0x0130, 0x2004, 0x7026, 0x6803, ++ 0x0000, 0x6807, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x7024, 0x6802, 0x2d00, 0x7026, 0x012e, 0x0005, 0x00d6, 0x2001, ++ 0xc778, 0x2004, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, ++ 0x1619, 0x000e, 0x0cb8, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x2071, ++ 0xc76f, 0x7008, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, ++ 0x1619, 0x000e, 0x0cb8, 0xa006, 0x7002, 0x700a, 0x7006, 0x700e, ++ 0x701a, 0x701e, 0x7022, 0x702a, 0x7026, 0x702e, 0x00ee, 0x00de, ++ 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0086, 0x0046, 0x0056, ++ 0x0026, 0x2031, 0x0000, 0x2001, 0xc756, 0x2004, 0xa005, 0x0904, ++ 0x754b, 0x2071, 0xc682, 0x20e1, 0x0002, 0x3d08, 0xd19c, 0x0140, ++ 0x2069, 0xc600, 0x6a28, 0x761c, 0x7114, 0x2041, 0x0000, 0x0028, ++ 0x7118, 0x720c, 0x7620, 0x7008, 0x2040, 0x080c, 0x7640, 0x0904, ++ 0x754b, 0x7004, 0xd084, 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, ++ 0x0020, 0x2021, 0x002c, 0x2029, 0x000a, 0x080c, 0x1602, 0x0904, ++ 0x7543, 0x2d00, 0x2060, 0x6436, 0x0016, 0x20e1, 0x0001, 0x3d08, ++ 0x3e00, 0xa18c, 0x00ff, 0x6142, 0x603e, 0x001e, 0x6746, 0x2700, ++ 0xa086, 0xff00, 0x1118, 0x6063, 0x0000, 0x0010, 0x6063, 0x0003, ++ 0xa006, 0x6002, 0x602a, 0x602e, 0x6006, 0x603a, 0x604a, 0x6052, ++ 0x6057, 0x0005, 0x605e, 0x6066, 0x604e, 0x2800, 0x606a, 0x604c, ++ 0xc0ad, 0x604e, 0x665a, 0x2c00, 0x2078, 0x0479, 0x607f, 0xffff, ++ 0x6083, 0x0000, 0x8109, 0x0180, 0x080c, 0x1602, 0x01c0, 0x2d00, ++ 0x7806, 0x2f00, 0x6802, 0x6d36, 0xa006, 0x2d00, 0x2520, 0x00e9, ++ 0x2d00, 0x2078, 0x8109, 0x1d80, 0x2c00, 0xa005, 0x002e, 0x005e, ++ 0x004e, 0x008e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x2c00, ++ 0x2068, 0x080c, 0x1629, 0x2600, 0x2071, 0xc76f, 0x7120, 0xa102, ++ 0x0a0c, 0x1519, 0x7022, 0xa006, 0x0c48, 0x00d6, 0x00c6, 0x0136, ++ 0x0146, 0x0156, 0x0016, 0x2068, 0x2400, 0xa084, 0x000f, 0xa080, ++ 0x23c7, 0x2005, 0x2005, 0xad60, 0x2c00, 0x2d08, 0xa188, 0x0030, ++ 0xa102, 0x20a8, 0x2c00, 0x20a0, 0x2001, 0xffff, 0x40a4, 0x001e, ++ 0x015e, 0x014e, 0x013e, 0x00ce, 0x00de, 0x0005, 0x00c6, 0x00e6, ++ 0x00f6, 0x6858, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c, 0x1519, ++ 0x7022, 0x6960, 0x694e, 0x697c, 0x2009, 0xffff, 0x7818, 0xa102, ++ 0xe000, 0x6852, 0x684b, 0x0000, 0x6868, 0xa005, 0x0118, 0x6848, ++ 0xc085, 0x684a, 0x2d00, 0xa080, 0x0015, 0x2038, 0x2031, 0x0018, ++ 0x6864, 0x2020, 0x683a, 0x685c, 0xa08a, 0x00ff, 0x1a0c, 0x1519, ++ 0x2028, 0x2d00, 0x2060, 0x2078, 0x6934, 0xa18c, 0x000f, 0xa188, ++ 0x23c7, 0x2145, 0x685c, 0x2050, 0xa005, 0x0530, 0x2805, 0xac70, ++ 0x6834, 0xa084, 0x00ff, 0xa086, 0x0024, 0x1110, 0x7008, 0x0040, ++ 0x6834, 0xa084, 0x00ff, 0xa086, 0x002c, 0x190c, 0x1519, 0x7010, ++ 0x0006, 0x2400, 0xa005, 0x000e, 0x0168, 0x203a, 0x8738, 0x8631, ++ 0x090c, 0x1519, 0x8421, 0x8529, 0x0138, 0x080c, 0x2389, 0x090c, ++ 0x1519, 0x08e0, 0x080c, 0x73f1, 0x6837, 0x0023, 0x00fe, 0x00ee, ++ 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x00a6, 0x0086, 0x0056, 0x2d00, ++ 0x2060, 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7, 0x2145, 0x685c, ++ 0x2050, 0xa005, 0x01d0, 0x2028, 0x2805, 0xac70, 0x6834, 0xa084, ++ 0x00ff, 0xa086, 0x0024, 0x1110, 0x7008, 0x0008, 0x7010, 0x0006, ++ 0xa086, 0xffff, 0x000e, 0x0110, 0x080c, 0x73f1, 0x8529, 0x0128, ++ 0x080c, 0x2389, 0x090c, 0x1519, 0x0c38, 0x005e, 0x008e, 0x00ae, ++ 0x00ce, 0x00ee, 0x0005, 0x70ac, 0xa005, 0x0120, 0x2060, 0x6008, ++ 0xa306, 0x0005, 0xa085, 0x0001, 0x0ce0, 0x70ac, 0x600e, 0x2c00, ++ 0x70ae, 0x0005, 0x00f6, 0x00d6, 0x0036, 0x70ac, 0xa005, 0x01b8, ++ 0x2068, 0x2079, 0x0000, 0x2c08, 0xa11e, 0x1118, 0x680c, 0x70ae, ++ 0x0060, 0xa106, 0x0140, 0x2d00, 0x2078, 0x680c, 0xa005, 0x090c, ++ 0x1519, 0x2068, 0x0cb0, 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x003e, ++ 0x00de, 0x00fe, 0x0005, 0x00e6, 0x080c, 0x7263, 0x6018, 0x2070, ++ 0xa006, 0x70b2, 0x70b6, 0x08b1, 0x080c, 0x95fc, 0x00ee, 0x0005, ++ 0x00d6, 0x0026, 0x0016, 0x2061, 0xc76f, 0x6020, 0x6414, 0xa600, ++ 0xa42a, 0x02f0, 0x6022, 0x2069, 0xc682, 0x6828, 0x6114, 0xa102, ++ 0x1288, 0x685c, 0xd08c, 0x1130, 0xc08d, 0x685e, 0x2011, 0x8025, ++ 0x080c, 0x4096, 0x2001, 0xc695, 0x2004, 0xa080, 0x0000, 0x200c, ++ 0x8108, 0x2102, 0xa085, 0x0001, 0x001e, 0x002e, 0x00de, 0x0005, ++ 0x2069, 0xc682, 0x6804, 0xd094, 0x0148, 0x685c, 0xd084, 0x1130, ++ 0xc085, 0x685e, 0x2011, 0x8026, 0x080c, 0x4096, 0x2001, 0xc695, ++ 0x2004, 0xa080, 0x0001, 0x200c, 0x8108, 0x2102, 0xa006, 0x2031, ++ 0x0000, 0x0c10, 0x0006, 0x0016, 0x00c6, 0x6018, 0x2060, 0x6010, ++ 0xa005, 0x0178, 0x2001, 0xc756, 0x2004, 0xa005, 0x0150, 0x2001, ++ 0xc600, 0x2004, 0xa086, 0x0003, 0x1120, 0x2011, 0x8014, 0x080c, ++ 0x4096, 0x00ce, 0x001e, 0x000e, 0x0005, 0x0016, 0x6834, 0xa08c, ++ 0x00ff, 0xa186, 0x0024, 0x0110, 0xa186, 0x002c, 0x001e, 0x0005, ++ 0x2001, 0xc683, 0x2004, 0xd09c, 0x0005, 0x2001, 0xc683, 0x2004, ++ 0xd0a4, 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, ++ 0x0013, 0x006e, 0x0005, 0x76cb, 0x76cb, 0x76cb, 0x76cd, 0x7728, ++ 0x76cb, 0x76cb, 0x76cb, 0x7766, 0x76cb, 0x77c3, 0x76cb, 0x76cb, ++ 0x76cb, 0x76cb, 0x76cb, 0x080c, 0x1519, 0xa182, 0x0100, 0x0002, ++ 0x76df, 0x76df, 0x76df, 0x76e1, 0x76fa, 0x7714, 0x76df, 0x76df, ++ 0x76df, 0x76df, 0x76df, 0x76df, 0x76df, 0x76df, 0x76df, 0x080c, ++ 0x1519, 0x00d6, 0x080c, 0x7e60, 0x080c, 0x7f87, 0x6110, 0x2168, ++ 0x684b, 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb, ++ 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x5823, 0x080c, 0x95fc, ++ 0x00de, 0x0005, 0x080c, 0x7e60, 0x00f6, 0x00d6, 0x6110, 0x2178, ++ 0x080c, 0xacaa, 0x0150, 0x00e6, 0x6018, 0x2070, 0xa006, 0x70b2, ++ 0x70b6, 0x00ee, 0x2f68, 0x080c, 0x5823, 0x00de, 0x00fe, 0x080c, ++ 0x95fc, 0x080c, 0x7f87, 0x0005, 0x080c, 0x7e60, 0x080c, 0x2e46, ++ 0x00d6, 0x6110, 0x2168, 0x080c, 0xacaa, 0x0120, 0x684b, 0x0029, ++ 0x080c, 0x5823, 0x00de, 0x080c, 0x95fc, 0x080c, 0x7f87, 0x0005, ++ 0xa182, 0x0100, 0x0002, 0x773a, 0x773c, 0x7744, 0x773a, 0x773a, ++ 0x773a, 0x7761, 0x773a, 0x773a, 0x773a, 0x773a, 0x773a, 0x773a, ++ 0x773a, 0x773a, 0x080c, 0x1519, 0x20e1, 0x0005, 0x3d18, 0x3e20, ++ 0x2c10, 0x080c, 0x1870, 0x0005, 0x00d6, 0x00e6, 0x2001, 0xc756, ++ 0x2004, 0xa086, 0x0000, 0x6110, 0x1118, 0x080c, 0x1629, 0x0028, ++ 0x2168, 0x080c, 0x756e, 0x080c, 0x5823, 0x6018, 0x2070, 0xa006, ++ 0x70b2, 0x70b6, 0x080c, 0x7612, 0x00ee, 0x00de, 0x080c, 0x95fc, ++ 0x0005, 0x080c, 0x7633, 0x080c, 0x56e0, 0x0005, 0xa182, 0x0100, ++ 0x0002, 0x777b, 0x77a1, 0x7779, 0x7779, 0x7779, 0x7779, 0x7779, ++ 0x7779, 0x7779, 0x7779, 0x7779, 0x7779, 0x7779, 0x7779, 0x7779, ++ 0x7779, 0x080c, 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, ++ 0x2068, 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817, ++ 0x0000, 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, ++ 0x8013, 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068, ++ 0x080c, 0x7a15, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f87, 0x012e, ++ 0x0005, 0x6003, 0x0004, 0x630a, 0x080c, 0x74b9, 0x0168, 0x6012, ++ 0x600f, 0x0000, 0x080c, 0x760d, 0x20e1, 0x0005, 0x3d18, 0x3e20, ++ 0x2c10, 0x080c, 0x1870, 0x0005, 0x2011, 0x0000, 0x080c, 0x1870, ++ 0x00e6, 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x00ee, ++ 0x080c, 0x95fc, 0x0005, 0x00d6, 0x080c, 0x7e60, 0x080c, 0x7f87, ++ 0x6110, 0x2168, 0x684b, 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, ++ 0x68b6, 0x68bb, 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x5823, ++ 0x080c, 0x95fc, 0x00de, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, ++ 0x1519, 0x000b, 0x0005, 0x77f3, 0x77f3, 0x77f3, 0x77f5, 0x780a, ++ 0x77f3, 0x77f3, 0x77f3, 0x77f3, 0x77f3, 0x77f3, 0x77f3, 0x77f3, ++ 0x77f3, 0x77f3, 0x77f3, 0x080c, 0x1519, 0x080c, 0x910f, 0x6110, ++ 0x2168, 0x684b, 0x0006, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, ++ 0x68bb, 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x5823, 0x080c, ++ 0x95fc, 0x0005, 0x080c, 0x7633, 0x0005, 0x6000, 0xa08a, 0x0010, ++ 0x1a0c, 0x1519, 0x000b, 0x0005, 0x7824, 0x7824, 0x7824, 0x7826, ++ 0x7836, 0x7824, 0x7824, 0x7824, 0x7824, 0x7824, 0x7824, 0x7824, ++ 0x7824, 0x7824, 0x7824, 0x7824, 0x080c, 0x1519, 0x0036, 0x00e6, ++ 0x2071, 0xc927, 0x703c, 0xac06, 0x1120, 0x2019, 0x0000, 0x080c, ++ 0x8e92, 0x080c, 0x910f, 0x00ee, 0x003e, 0x0005, 0x00d6, 0x6010, ++ 0x2068, 0x080c, 0x7633, 0x00de, 0x0005, 0x080c, 0x769d, 0x1150, ++ 0x6024, 0xd09c, 0x1138, 0x6810, 0x2009, 0xffff, 0xa102, 0x2020, ++ 0x2019, 0x0000, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, ++ 0x818e, 0x1208, 0xa200, 0x1f04, 0x784f, 0x8086, 0x818e, 0x0005, ++ 0x0156, 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, ++ 0x818d, 0x0228, 0xa11a, 0x1220, 0x1f04, 0x785f, 0x0028, 0xa11a, ++ 0x2308, 0x8210, 0x1f04, 0x785f, 0x0006, 0x3200, 0xa084, 0xefff, ++ 0x2080, 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, ++ 0x0cb8, 0x0126, 0x2091, 0x2800, 0x2079, 0xc927, 0x012e, 0x00d6, ++ 0x2069, 0xc927, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, ++ 0x8001, 0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, ++ 0xa084, 0x0007, 0x0002, 0x789d, 0x78be, 0x7911, 0x78a3, 0x78be, ++ 0x789d, 0x789b, 0x789b, 0x080c, 0x1519, 0x080c, 0x703d, 0x080c, ++ 0x7ead, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, ++ 0x2011, 0x4e31, 0x080c, 0x6fc6, 0x7828, 0xa092, 0x00c8, 0x1228, ++ 0x8000, 0x782a, 0x080c, 0x4e6b, 0x0c88, 0x080c, 0x4e31, 0x7807, ++ 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, 0x703d, ++ 0x3c00, 0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, ++ 0x20e0, 0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, ++ 0x7824, 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c, 0x962c, ++ 0x00ce, 0x0005, 0x3900, 0xa082, 0xca74, 0x1210, 0x080c, 0x91e4, ++ 0x00c6, 0x7824, 0xa065, 0x090c, 0x1519, 0x7804, 0xa086, 0x0004, ++ 0x0904, 0x7951, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, ++ 0x00ce, 0x080c, 0x8c01, 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, ++ 0x00e6, 0x2071, 0xc600, 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, ++ 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, 0x080c, 0x4e74, 0x00ee, ++ 0x00ce, 0x080c, 0xc5b4, 0x2009, 0x0014, 0x080c, 0x962c, 0x00ce, ++ 0x0838, 0x2001, 0xc943, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, ++ 0x782b, 0x0000, 0x7824, 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, ++ 0x080c, 0x9680, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, ++ 0xca74, 0x1210, 0x080c, 0x91e4, 0x7824, 0xa005, 0x090c, 0x1519, ++ 0x781c, 0xa06d, 0x090c, 0x1519, 0x6800, 0xc0dc, 0x6802, 0x7924, ++ 0x2160, 0x080c, 0x95fc, 0x693c, 0x81ff, 0x090c, 0x1519, 0x8109, ++ 0x693e, 0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, ++ 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7ead, ++ 0x0888, 0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, ++ 0x0804, 0x78ea, 0x7808, 0xac06, 0x0904, 0x78ea, 0x080c, 0x7dca, ++ 0x080c, 0x79f8, 0x00ce, 0x080c, 0x7ead, 0x0804, 0x78d8, 0x00c6, ++ 0x6027, 0x0002, 0x62c8, 0x60c4, 0xa205, 0x11a8, 0x793c, 0xa1e5, ++ 0x0000, 0x0160, 0x2009, 0x0049, 0x601c, 0xa086, 0x0009, 0x1110, ++ 0x2009, 0x0103, 0x080c, 0x962c, 0x00ce, 0x0005, 0x2011, 0xc946, ++ 0x2013, 0x0000, 0x0cc8, 0x3908, 0xa192, 0xca74, 0x1210, 0x080c, ++ 0x91e4, 0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, 0x7530, 0x12f0, ++ 0x8108, 0x7946, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, ++ 0x1138, 0x6014, 0xa084, 0x0184, 0xa085, 0x0012, 0x6016, 0x08e0, ++ 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0009, 0x0d90, 0x6014, ++ 0xa084, 0x0184, 0xa085, 0x0016, 0x6016, 0x0870, 0x7848, 0xc085, ++ 0x784a, 0x0850, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x600f, 0x0000, 0x2c08, 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, ++ 0x6010, 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x6112, 0x012e, ++ 0x00ce, 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, ++ 0x2069, 0xc927, 0x6000, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, ++ 0xa086, 0x0001, 0x1110, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, ++ 0x0804, 0x7eb3, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0158, 0x6056, ++ 0x605b, 0x0000, 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, ++ 0xc927, 0x0c18, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x08e8, ++ 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, ++ 0x2c08, 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, ++ 0x0148, 0xa080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, ++ 0x000e, 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, ++ 0x2c08, 0x2061, 0xc927, 0x6034, 0xa005, 0x0130, 0xa080, 0x0003, ++ 0x2102, 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x0cd8, 0x00f6, ++ 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, ++ 0x0016, 0x0006, 0x0126, 0xa02e, 0x2071, 0xc927, 0x7638, 0x2660, ++ 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, 0x7aa0, 0x6018, 0xa080, ++ 0x0028, 0x2004, 0xa206, 0x1904, 0x7a9b, 0x87ff, 0x0120, 0x6050, ++ 0xa106, 0x1904, 0x7a9b, 0x703c, 0xac06, 0x1190, 0x0036, 0x2019, ++ 0x0001, 0x080c, 0x8e92, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, ++ 0x0000, 0x7047, 0x0000, 0x704b, 0x0000, 0x003e, 0x2029, 0x0001, ++ 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, ++ 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, + 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, +- 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac8a, 0x01b8, 0x601c, +- 0xa086, 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x0016, 0x0036, 0x0086, 0x080c, 0xaefc, 0x080c, 0xc4ca, 0x080c, +- 0x580a, 0x008e, 0x003e, 0x001e, 0x080c, 0xae41, 0x080c, 0xae4d, +- 0x080c, 0x8fb7, 0x00ce, 0x0804, 0x7b3e, 0x2c78, 0x600c, 0x2060, +- 0x0804, 0x7b3e, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, +- 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016, +- 0x0036, 0x0086, 0x080c, 0xc4ca, 0x080c, 0xc134, 0x008e, 0x003e, +- 0x001e, 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, +- 0x0085, 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, 0x6004, +- 0xa086, 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, 0x2091, +- 0x8000, 0xa280, 0xc77b, 0x2004, 0xa065, 0x0904, 0x7c6d, 0x00f6, +- 0x00e6, 0x00d6, 0x0066, 0x2071, 0xc927, 0x6654, 0x7018, 0xac06, +- 0x1108, 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, 0x7018, +- 0x701e, 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, 0xa6ed, +- 0x0000, 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, +- 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904, 0x7c69, +- 0x7624, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0, +- 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x7024, +- 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90df, 0x7027, 0x0000, +- 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, +- 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, +- 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110, +- 0x8001, 0x603e, 0x2660, 0x080c, 0xae4d, 0x00ce, 0x0048, 0x00de, +- 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7c14, +- 0x8dff, 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, +- 0xaefc, 0x080c, 0xc4ca, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804, +- 0x7c14, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, +- 0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, 0x7814, +- 0xa065, 0x0904, 0x7cc3, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824, +- 0xac06, 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, +- 0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90df, 0x7827, ++ 0x600f, 0x0000, 0x080c, 0xacaa, 0x01c8, 0x6010, 0x2068, 0x601c, ++ 0xa086, 0x0003, 0x1580, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x0016, 0x0036, 0x0076, 0x080c, 0xaf1c, 0x080c, 0xc4f0, 0x080c, ++ 0x5823, 0x007e, 0x003e, 0x001e, 0x080c, 0xae61, 0x080c, 0xae6d, ++ 0x00ce, 0x0804, 0x7a3b, 0x2c78, 0x600c, 0x2060, 0x0804, 0x7a3b, ++ 0x85ff, 0x0120, 0x0036, 0x080c, 0x7f87, 0x003e, 0x012e, 0x000e, ++ 0x001e, 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x0158, 0x601c, ++ 0xa086, 0x0009, 0x1190, 0x684b, 0x0006, 0x080c, 0x5823, 0x080c, ++ 0x95fc, 0x08b0, 0x0016, 0x0036, 0x0076, 0x080c, 0xc4f0, 0x080c, ++ 0xc15a, 0x007e, 0x003e, 0x001e, 0x0848, 0x601c, 0xa086, 0x000a, ++ 0x0904, 0x7a85, 0x0804, 0x7a83, 0x0006, 0x0066, 0x00c6, 0x00d6, ++ 0x00f6, 0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, 0xc927, ++ 0x7838, 0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, ++ 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e92, 0x7833, ++ 0x0000, 0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, ++ 0x0000, 0x003e, 0x080c, 0xacaa, 0x0178, 0x6010, 0x2068, 0x601c, ++ 0xa086, 0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x080c, 0x5823, 0x080c, 0xae61, 0x080c, 0xae6d, 0x000e, 0x0888, ++ 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, ++ 0x0005, 0x601c, 0xa086, 0x0006, 0x0150, 0x601c, 0xa086, 0x0009, ++ 0x1148, 0x6b4a, 0x080c, 0x5823, 0x080c, 0x95fc, 0x0c38, 0x080c, ++ 0xc15a, 0x0c10, 0x601c, 0xa086, 0x000a, 0x09b8, 0x08a0, 0x0016, ++ 0x0026, 0x0086, 0x2041, 0x0000, 0x0099, 0x080c, 0x7bfd, 0x008e, ++ 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0xc927, 0x2091, ++ 0x8000, 0x080c, 0x7c8a, 0x080c, 0x7cfc, 0x012e, 0x00fe, 0x0005, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x8cff, ++ 0x0904, 0x7bd3, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, ++ 0x7bce, 0x88ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x7bce, 0x7024, ++ 0xac06, 0x1538, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, ++ 0x703d, 0x080c, 0x8c0e, 0x68c3, 0x0000, 0x080c, 0x90ff, 0x7027, + 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, +- 0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a, +- 0x2c30, 0x00b0, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0168, 0x601c, +- 0xa086, 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x080c, 0x580a, 0x080c, 0xae41, 0x080c, 0xae4d, 0x080c, 0x8fb7, +- 0x000e, 0x0804, 0x7c78, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e, +- 0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xc134, +- 0x0c58, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085, +- 0x09d0, 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, 0xa086, +- 0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x7818, +- 0xa065, 0x0904, 0x7d49, 0x6054, 0x0006, 0x6057, 0x0000, 0x605b, +- 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904, +- 0x7d46, 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, ++ 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, ++ 0x04e8, 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, ++ 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, ++ 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, ++ 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xacaa, 0x01b8, ++ 0x601c, 0xa086, 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, ++ 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, 0xaf1c, 0x080c, 0xc4f0, ++ 0x080c, 0x5823, 0x008e, 0x003e, 0x001e, 0x080c, 0xae61, 0x080c, ++ 0xae6d, 0x080c, 0x8fd0, 0x00ce, 0x0804, 0x7b57, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0x7b57, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, ++ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, ++ 0x0016, 0x0036, 0x0086, 0x080c, 0xc4f0, 0x080c, 0xc15a, 0x008e, ++ 0x003e, 0x001e, 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, ++ 0xa086, 0x0085, 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, ++ 0x6004, 0xa086, 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0xa280, 0xc77b, 0x2004, 0xa065, 0x0904, 0x7c86, ++ 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, 0xc927, 0x6654, 0x7018, ++ 0xac06, 0x1108, 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, ++ 0x7018, 0x701e, 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, ++ 0xa6ed, 0x0000, 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, ++ 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5281, 0x0904, ++ 0x7c82, 0x7624, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, + 0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, +- 0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90df, 0x7827, ++ 0x703d, 0x080c, 0x8c0e, 0x68c3, 0x0000, 0x080c, 0x90ff, 0x7027, + 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, + 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, +- 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0xae4d, 0x00ce, 0x0048, ++ 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0xae6d, 0x00ce, 0x0048, + 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, +- 0x7cf5, 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, +- 0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804, 0x7cf5, 0x000e, 0x0804, +- 0x7ce8, 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, +- 0x00e6, 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0xa06d, +- 0x0188, 0x6848, 0xa606, 0x1170, 0x2071, 0xc927, 0x7024, 0xa035, +- 0x0148, 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, 0xc0dc, +- 0x6002, 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079, +- 0x0100, 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009, +- 0x630a, 0x00ce, 0x04a0, 0x080c, 0x8bf5, 0x78c3, 0x0000, 0x080c, +- 0x90df, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0xa384, +- 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, 0x0100, +- 0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x90df, 0x003e, +- 0x080c, 0x5268, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e, +- 0x2660, 0x080c, 0x95dc, 0x00ce, 0x6837, 0x0103, 0x6b4a, 0x6847, +- 0x0000, 0x080c, 0xaefc, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x00fe, +- 0x0005, 0x00e6, 0x00c6, 0x2071, 0xc927, 0x7004, 0xa084, 0x0007, +- 0x0002, 0x7dc3, 0x7dc6, 0x7ddc, 0x7df5, 0x7e32, 0x7dc3, 0x7dc1, +- 0x7dc1, 0x080c, 0x1519, 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065, +- 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, 0x7216, +- 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, +- 0x0005, 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, 0x5268, +- 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, 0x6054, +- 0xa015, 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, +- 0x00ee, 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, 0x05b8, +- 0x700c, 0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120, +- 0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014, +- 0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120, 0x7216, +- 0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, 0xa086, +- 0x0003, 0x1198, 0x6018, 0x2060, 0x080c, 0x5268, 0x6000, 0xc0dc, +- 0x6002, 0x080c, 0x8fb7, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015, +- 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, +- 0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x8fb7, 0x600c, +- 0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x90df, 0x7027, +- 0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6, +- 0x2069, 0xc927, 0x6830, 0xa084, 0x0003, 0x0002, 0x7e54, 0x7e56, +- 0x7e7a, 0x7e52, 0x080c, 0x1519, 0x00de, 0x0005, 0x00c6, 0x6840, +- 0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015, +- 0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, +- 0x2011, 0xc946, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, +- 0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003, +- 0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b, +- 0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a, +- 0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a, +- 0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6804, +- 0xa084, 0x0007, 0x0006, 0xa005, 0x11c8, 0x2001, 0xc635, 0x2004, +- 0xa084, 0x0028, 0x1198, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa, +- 0x0168, 0x2001, 0xc696, 0x2004, 0xd08c, 0x1118, 0xd084, 0x1118, +- 0x0028, 0x080c, 0x7f6e, 0x000e, 0x00de, 0x0005, 0x000e, 0x0002, +- 0x7ec2, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f60, 0x7ec0, 0x7ec0, +- 0x080c, 0x1519, 0x6820, 0xa005, 0x1110, 0x00de, 0x0005, 0x00c6, +- 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, +- 0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x6814, 0xa065, 0x0150, +- 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, 0x7ff0, 0x00ce, +- 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, 0xa2f5, 0x0000, 0x0904, +- 0x7f5a, 0x704c, 0xa00d, 0x0118, 0x7088, 0xa005, 0x01a0, 0x7054, +- 0xa075, 0x0120, 0xa20e, 0x0904, 0x7f5a, 0x0028, 0x6818, 0xa20e, +- 0x0904, 0x7f5a, 0x2070, 0x704c, 0xa00d, 0x0d88, 0x7088, 0xa005, +- 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x1e40, 0x080c, +- 0x95b3, 0x0904, 0x7f5a, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, +- 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, 0x605a, 0xa180, 0x0014, +- 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0210, +- 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e, +- 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, +- 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, 0x7114, 0xa18c, 0x00ff, +- 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d, 0xa18c, +- 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, 0x8620, 0x7300, 0xc3dd, +- 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f, +- 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, 0x00ce, +- 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, 0x0cd0, 0x00de, 0x0005, +- 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, 0x0004, 0x6826, 0x682b, +- 0x0000, 0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x00f6, 0x00d6, +- 0x2069, 0xc927, 0x6830, 0xa086, 0x0000, 0x1904, 0x7fcb, 0x2001, +- 0xc60c, 0x200c, 0xd1bc, 0x1904, 0x7fe6, 0x6838, 0xa07d, 0x0904, +- 0x7fcb, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x11f8, 0x2001, +- 0xc8e5, 0x2004, 0xa086, 0xaaaa, 0x01c8, 0x781c, 0xa086, 0x0009, +- 0x11a8, 0x7808, 0xd0fc, 0x0190, 0x2001, 0xc928, 0x2004, 0xa005, +- 0x1138, 0x2001, 0xc696, 0x200c, 0xc185, 0xc18c, 0x2102, 0x0030, +- 0x2011, 0xc696, 0x2204, 0xc08d, 0x2012, 0x0428, 0x2f00, 0x6833, +- 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6, +- 0x2091, 0x2400, 0x002e, 0x080c, 0x20ef, 0x11c0, 0x012e, 0xe000, +- 0xe000, 0xe000, 0x6a3c, 0x2278, 0x781c, 0xa086, 0x0009, 0x1148, +- 0x7808, 0xd0fc, 0x0118, 0x080c, 0x8969, 0x0028, 0x080c, 0x89e2, +- 0x0010, 0x080c, 0x8a66, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000, +- 0x6843, 0x0000, 0x781c, 0xa086, 0x0009, 0x0110, 0x7803, 0x0002, +- 0x780c, 0xa015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, +- 0x683f, 0x0000, 0x0c40, 0x683a, 0x6836, 0x0cc0, 0xc1bc, 0x2102, +- 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0804, 0x7f7d, +- 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, 0x7ffe, 0x8003, 0x84c1, +- 0x85dd, 0x8003, 0x84c1, 0x85dd, 0x7ffe, 0x8003, 0x080c, 0x7db1, +- 0x080c, 0x7e94, 0x0005, 0x0156, 0x0136, 0x0146, 0x00c6, 0x00f6, +- 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0, +- 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900, +- 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, +- 0x0028, 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061, +- 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, 0x8077, 0x0033, 0x00fe, +- 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x8126, 0x8171, 0x819e, +- 0x826b, 0x8299, 0x82a1, 0x82c7, 0x82d8, 0x82e9, 0x82f1, 0x8307, +- 0x82f1, 0x8368, 0x82d8, 0x8389, 0x8391, 0x82e9, 0x8391, 0x83a2, +- 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, +- 0x8075, 0x8075, 0x8075, 0x8d1a, 0x8d3f, 0x8d54, 0x8d77, 0x8d98, +- 0x82c7, 0x8075, 0x82c7, 0x82f1, 0x8075, 0x819e, 0x826b, 0x8075, +- 0x91e1, 0x82f1, 0x8075, 0x9201, 0x82f1, 0x8075, 0x82e9, 0x811f, +- 0x808a, 0x8075, 0x9226, 0x929b, 0x9372, 0x8075, 0x9383, 0x82c2, +- 0x939f, 0x8075, 0x8dad, 0x93fa, 0x8075, 0x080c, 0x1519, 0x2100, +- 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x9451, +- 0x9500, 0x8088, 0x80be, 0x80dc, 0x80f2, 0x8088, 0x82c7, 0x8088, +- 0x080c, 0x1519, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810, +- 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x683c, +- 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x00de, 0x0005, 0x00d6, +- 0x7818, 0x2068, 0x68a0, 0x2069, 0xc600, 0x6ad4, 0xd2ac, 0x1110, +- 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, 0x0005, 0x00d6, 0x20a1, +- 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3, 0x0000, 0x7810, +- 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810, 0x20a2, +- 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3, 0x0010, +- 0x080c, 0x8be2, 0x00de, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, +- 0x080c, 0x83bf, 0x20a3, 0x7800, 0x20a3, 0x0000, 0x7808, 0x8007, +- 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x014e, +- 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x845b, +- 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0xdf10, 0x20a3, 0x0034, +- 0x2099, 0xc605, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xc601, 0x20a9, +- 0x0004, 0x53a6, 0x2099, 0xc90d, 0x20a9, 0x001a, 0x3304, 0x8007, +- 0x20a2, 0x9398, 0x1f04, 0x810e, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x60c3, 0x004c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x2001, +- 0xc615, 0x2004, 0x609a, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, +- 0x080c, 0x83bf, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x00d6, 0x2069, +- 0xc652, 0x6804, 0xd084, 0x0150, 0x6828, 0x20a3, 0x0000, 0x0016, +- 0x080c, 0x29db, 0x21a2, 0x001e, 0x00de, 0x0028, 0x00de, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6, +- 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x2001, 0xc635, 0x2004, +- 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, +- 0x0238, 0x2001, 0xc61c, 0x20a6, 0x2001, 0xc61d, 0x20a6, 0x0040, +- 0x20a3, 0x0000, 0x2001, 0xc615, 0x2004, 0xa084, 0x00ff, 0x20a2, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, 0x8be2, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3, +- 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, +- 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xc61c, 0x20a6, +- 0x2001, 0xc61d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xc615, +- 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0xc605, +- 0x53a6, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, +- 0x080c, 0x83bf, 0x00c6, 0x7818, 0x2060, 0x2001, 0x0000, 0x080c, +- 0x5715, 0x00ce, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, +- 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0010, 0x20a3, +- 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, +- 0x007e, 0x1904, 0x822d, 0x2001, 0xc635, 0x2004, 0xd0a4, 0x01c8, +- 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x20a3, 0x0000, 0x9398, 0x3304, +- 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x20a3, 0x0000, +- 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x33a6, +- 0x00d0, 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304, +- 0x080c, 0x5f22, 0x1118, 0xa084, 0x37ff, 0x0010, 0xa084, 0x3fff, +- 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6, +- 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x20a9, 0x0008, 0x20a3, +- 0x0000, 0x1f04, 0x8207, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, +- 0x820d, 0x2099, 0xc8dd, 0x3304, 0xc0dd, 0x20a2, 0x2001, 0xc672, +- 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398, +- 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, 0x0010, 0x20a9, 0x0007, +- 0x20a3, 0x0000, 0x1f04, 0x8228, 0x0468, 0x2001, 0xc635, 0x2004, +- 0xd0a4, 0x0140, 0x2001, 0xc8d6, 0x2004, 0x60e3, 0x0000, 0x080c, +- 0x2a1c, 0x60e2, 0x2099, 0xc8d5, 0x20a9, 0x0008, 0x53a6, 0x20a9, +- 0x0004, 0x2099, 0xc605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xc601, +- 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x824b, 0x20a9, +- 0x0008, 0x20a3, 0x0000, 0x1f04, 0x8251, 0x2099, 0xc8dd, 0x20a9, +- 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x825c, +- 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x8262, 0x60c3, 0x0074, +- 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, +- 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006, +- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079, 0xc652, +- 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4, 0x0110, +- 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, 0x0804, 0x834a, 0x20a2, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x5000, 0x0804, +- 0x81b9, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x2110, 0x20a3, +- 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, +- 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8453, 0x0020, 0x20a1, +- 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x0005, +- 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000, +- 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c, 0x8be2, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804, +- 0x81b9, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, +- 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, 0x0010, 0x20a3, 0x0003, +- 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x00d6, +- 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014, +- 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x1198, +- 0x699c, 0xa184, 0x0030, 0x0190, 0x6998, 0xa184, 0xc000, 0x1140, +- 0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, 0x20a3, 0x0100, 0x0040, +- 0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, 0x0010, 0x700f, 0x0800, ++ 0x7c2d, 0x8dff, 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, ++ 0x080c, 0xaf1c, 0x080c, 0xc4f0, 0x080c, 0x5823, 0x080c, 0x8fd0, ++ 0x0804, 0x7c2d, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, ++ 0x00ce, 0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, ++ 0x7814, 0xa065, 0x0904, 0x7cdc, 0x600c, 0x0006, 0x600f, 0x0000, ++ 0x7824, 0xac06, 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, ++ 0x080c, 0x703d, 0x080c, 0x8c0e, 0x68c3, 0x0000, 0x080c, 0x90ff, ++ 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, ++ 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, ++ 0x630a, 0x2c30, 0x00b0, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0168, ++ 0x601c, 0xa086, 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, ++ 0x0000, 0x080c, 0x5823, 0x080c, 0xae61, 0x080c, 0xae6d, 0x080c, ++ 0x8fd0, 0x000e, 0x0804, 0x7c91, 0x7e16, 0x7e12, 0x00de, 0x00ce, ++ 0x006e, 0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, ++ 0xc15a, 0x0c58, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, ++ 0x0085, 0x09d0, 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, ++ 0xa086, 0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, ++ 0x7818, 0xa065, 0x0904, 0x7d62, 0x6054, 0x0006, 0x6057, 0x0000, ++ 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5281, ++ 0x0904, 0x7d5f, 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, ++ 0xad06, 0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, ++ 0x080c, 0x703d, 0x080c, 0x8c0e, 0x68c3, 0x0000, 0x080c, 0x90ff, ++ 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, ++ 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, ++ 0xa005, 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0xae6d, 0x00ce, ++ 0x0048, 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, ++ 0x0804, 0x7d0e, 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, ++ 0x0000, 0x080c, 0x5823, 0x080c, 0x8fd0, 0x0804, 0x7d0e, 0x000e, ++ 0x0804, 0x7d01, 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, ++ 0x0005, 0x00e6, 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, ++ 0xa06d, 0x0188, 0x6848, 0xa606, 0x1170, 0x2071, 0xc927, 0x7024, ++ 0xa035, 0x0148, 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, ++ 0xc0dc, 0x6002, 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, ++ 0x2079, 0x0100, 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, ++ 0x0009, 0x630a, 0x00ce, 0x04a0, 0x080c, 0x8c0e, 0x78c3, 0x0000, ++ 0x080c, 0x90ff, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, ++ 0xa384, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, ++ 0x0100, 0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x90ff, ++ 0x003e, 0x080c, 0x5281, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, ++ 0x603e, 0x2660, 0x080c, 0x95fc, 0x00ce, 0x6837, 0x0103, 0x6b4a, ++ 0x6847, 0x0000, 0x080c, 0xaf1c, 0x080c, 0x5823, 0x080c, 0x8fd0, ++ 0x00fe, 0x0005, 0x00e6, 0x00c6, 0x2071, 0xc927, 0x7004, 0xa084, ++ 0x0007, 0x0002, 0x7ddc, 0x7ddf, 0x7df5, 0x7e0e, 0x7e4b, 0x7ddc, ++ 0x7dda, 0x7dda, 0x080c, 0x1519, 0x00ce, 0x00ee, 0x0005, 0x7024, ++ 0xa065, 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, ++ 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, ++ 0x00ee, 0x0005, 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, ++ 0x5281, 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, ++ 0x6054, 0xa015, 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, ++ 0x00ce, 0x00ee, 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, ++ 0x05b8, 0x700c, 0xac06, 0x1160, 0x080c, 0x8fd0, 0x600c, 0xa015, ++ 0x0120, 0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, ++ 0x7014, 0xac06, 0x1160, 0x080c, 0x8fd0, 0x600c, 0xa015, 0x0120, ++ 0x7216, 0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, ++ 0xa086, 0x0003, 0x1198, 0x6018, 0x2060, 0x080c, 0x5281, 0x6000, ++ 0xc0dc, 0x6002, 0x080c, 0x8fd0, 0x701c, 0xa065, 0x0138, 0x6054, ++ 0xa015, 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, ++ 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x8fd0, ++ 0x600c, 0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x90ff, ++ 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, ++ 0x00d6, 0x2069, 0xc927, 0x6830, 0xa084, 0x0003, 0x0002, 0x7e6d, ++ 0x7e6f, 0x7e93, 0x7e6b, 0x080c, 0x1519, 0x00de, 0x0005, 0x00c6, ++ 0x6840, 0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, ++ 0xa015, 0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, ++ 0x0000, 0x2011, 0xc946, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, ++ 0x683a, 0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, ++ 0x6003, 0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, ++ 0x684b, 0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, ++ 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, ++ 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xc927, ++ 0x6804, 0xa084, 0x0007, 0x0006, 0xa005, 0x11c8, 0x2001, 0xc635, ++ 0x2004, 0xa084, 0x0028, 0x1198, 0x2001, 0xc8e5, 0x2004, 0xa086, ++ 0xaaaa, 0x0168, 0x2001, 0xc696, 0x2004, 0xd08c, 0x1118, 0xd084, ++ 0x1118, 0x0028, 0x080c, 0x7f87, 0x000e, 0x00de, 0x0005, 0x000e, ++ 0x0002, 0x7edb, 0x7f77, 0x7f77, 0x7f77, 0x7f77, 0x7f79, 0x7ed9, ++ 0x7ed9, 0x080c, 0x1519, 0x6820, 0xa005, 0x1110, 0x00de, 0x0005, ++ 0x00c6, 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, 0x6826, 0x682b, ++ 0x0000, 0x080c, 0x8009, 0x00ce, 0x00de, 0x0005, 0x6814, 0xa065, ++ 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, 0x8009, ++ 0x00ce, 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, 0xa2f5, 0x0000, ++ 0x0904, 0x7f73, 0x704c, 0xa00d, 0x0118, 0x7088, 0xa005, 0x01a0, ++ 0x7054, 0xa075, 0x0120, 0xa20e, 0x0904, 0x7f73, 0x0028, 0x6818, ++ 0xa20e, 0x0904, 0x7f73, 0x2070, 0x704c, 0xa00d, 0x0d88, 0x7088, ++ 0xa005, 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x1e40, ++ 0x080c, 0x95d3, 0x0904, 0x7f73, 0x8318, 0x733e, 0x6112, 0x2e10, ++ 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, 0x605a, 0xa180, ++ 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, ++ 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, ++ 0x003e, 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xc635, 0x2004, 0xd0ac, ++ 0x1110, 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, 0x7114, 0xa18c, ++ 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d, ++ 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, 0x8639, 0x7300, ++ 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, ++ 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, ++ 0x00ce, 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, 0x0cd0, 0x00de, ++ 0x0005, 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, 0x0004, 0x6826, ++ 0x682b, 0x0000, 0x080c, 0x8009, 0x00ce, 0x00de, 0x0005, 0x00f6, ++ 0x00d6, 0x2069, 0xc927, 0x6830, 0xa086, 0x0000, 0x1904, 0x7fe4, ++ 0x2001, 0xc60c, 0x200c, 0xd1bc, 0x1904, 0x7fff, 0x6838, 0xa07d, ++ 0x0904, 0x7fe4, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x11f8, ++ 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa, 0x01c8, 0x781c, 0xa086, ++ 0x0009, 0x11a8, 0x7808, 0xd0fc, 0x0190, 0x2001, 0xc928, 0x2004, ++ 0xa005, 0x1138, 0x2001, 0xc696, 0x200c, 0xc185, 0xc18c, 0x2102, ++ 0x0030, 0x2011, 0xc696, 0x2204, 0xc08d, 0x2012, 0x0428, 0x2f00, ++ 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, ++ 0x00f6, 0x2091, 0x2400, 0x002e, 0x080c, 0x20ef, 0x11c0, 0x012e, ++ 0xe000, 0xe000, 0xe000, 0x6a3c, 0x2278, 0x781c, 0xa086, 0x0009, ++ 0x1148, 0x7808, 0xd0fc, 0x0118, 0x080c, 0x8982, 0x0028, 0x080c, ++ 0x89fb, 0x0010, 0x080c, 0x8a7f, 0x00de, 0x00fe, 0x0005, 0x012e, ++ 0xe000, 0x6843, 0x0000, 0x781c, 0xa086, 0x0009, 0x0110, 0x7803, ++ 0x0002, 0x780c, 0xa015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, ++ 0x0000, 0x683f, 0x0000, 0x0c40, 0x683a, 0x6836, 0x0cc0, 0xc1bc, ++ 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fbd, 0x006e, 0x0804, ++ 0x7f96, 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, 0x8017, 0x801c, ++ 0x84da, 0x85f6, 0x801c, 0x84da, 0x85f6, 0x8017, 0x801c, 0x080c, ++ 0x7dca, 0x080c, 0x7ead, 0x0005, 0x0156, 0x0136, 0x0146, 0x00c6, ++ 0x00f6, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x6118, 0x2178, ++ 0x79a0, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, ++ 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, ++ 0x0000, 0x0028, 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, ++ 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, 0x8090, 0x0033, ++ 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x813f, 0x818a, ++ 0x81b7, 0x8284, 0x82b2, 0x82ba, 0x82e0, 0x82f1, 0x8302, 0x830a, ++ 0x8320, 0x830a, 0x8381, 0x82f1, 0x83a2, 0x83aa, 0x8302, 0x83aa, ++ 0x83bb, 0x808e, 0x808e, 0x808e, 0x808e, 0x808e, 0x808e, 0x808e, ++ 0x808e, 0x808e, 0x808e, 0x808e, 0x8d33, 0x8d58, 0x8d6d, 0x8d90, ++ 0x8db1, 0x82e0, 0x808e, 0x82e0, 0x830a, 0x808e, 0x81b7, 0x8284, ++ 0x808e, 0x9201, 0x830a, 0x808e, 0x9221, 0x830a, 0x808e, 0x8302, ++ 0x8138, 0x80a3, 0x808e, 0x9246, 0x92bb, 0x9392, 0x808e, 0x93a3, ++ 0x82db, 0x93bf, 0x808e, 0x8dc6, 0x941a, 0x808e, 0x080c, 0x1519, ++ 0x2100, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, ++ 0x9471, 0x9520, 0x80a1, 0x80d7, 0x80f5, 0x810b, 0x80a1, 0x82e0, ++ 0x80a1, 0x080c, 0x1519, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x83d8, ++ 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800, ++ 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, 0x8bfb, 0x00de, 0x0005, ++ 0x00d6, 0x7818, 0x2068, 0x68a0, 0x2069, 0xc600, 0x6ad4, 0xd2ac, ++ 0x1110, 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, 0x0005, 0x00d6, ++ 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x0500, 0x20a3, 0x0000, ++ 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810, ++ 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3, ++ 0x0010, 0x080c, 0x8bfb, 0x00de, 0x0005, 0x0156, 0x0146, 0x20a1, ++ 0x020b, 0x080c, 0x83d8, 0x20a3, 0x7800, 0x20a3, 0x0000, 0x7808, ++ 0x8007, 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8bfb, ++ 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, ++ 0x8474, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0xdf10, 0x20a3, ++ 0x0034, 0x2099, 0xc605, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xc601, ++ 0x20a9, 0x0004, 0x53a6, 0x2099, 0xc90d, 0x20a9, 0x001a, 0x3304, ++ 0x8007, 0x20a2, 0x9398, 0x1f04, 0x8127, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x60c3, 0x004c, 0x080c, 0x8bfb, 0x014e, 0x015e, 0x0005, ++ 0x2001, 0xc615, 0x2004, 0x609a, 0x080c, 0x8bfb, 0x0005, 0x20a1, ++ 0x020b, 0x080c, 0x83d8, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x00d6, ++ 0x2069, 0xc652, 0x6804, 0xd084, 0x0150, 0x6828, 0x20a3, 0x0000, ++ 0x0016, 0x080c, 0x29db, 0x21a2, 0x001e, 0x00de, 0x0028, 0x00de, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, ++ 0x53a6, 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x2001, 0xc635, ++ 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, ++ 0x007f, 0x0238, 0x2001, 0xc61c, 0x20a6, 0x2001, 0xc61d, 0x20a6, ++ 0x0040, 0x20a3, 0x0000, 0x2001, 0xc615, 0x2004, 0xa084, 0x00ff, ++ 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, ++ 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x0500, ++ 0x20a3, 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1138, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xc61c, ++ 0x20a6, 0x2001, 0xc61d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, ++ 0xc615, 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, ++ 0xc605, 0x53a6, 0x60c3, 0x0010, 0x080c, 0x8bfb, 0x0005, 0x20a1, ++ 0x020b, 0x080c, 0x83d8, 0x00c6, 0x7818, 0x2060, 0x2001, 0x0000, ++ 0x080c, 0x572e, 0x00ce, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, ++ 0x007e, 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0010, ++ 0x20a3, 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, ++ 0xa086, 0x007e, 0x1904, 0x8246, 0x2001, 0xc635, 0x2004, 0xd0a4, ++ 0x01c8, 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x20a3, 0x0000, 0x9398, ++ 0x3304, 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x20a3, ++ 0x0000, 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, 0x33a6, 0x9398, ++ 0x33a6, 0x00d0, 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x33a6, 0x9398, ++ 0x3304, 0x080c, 0x5f3b, 0x1118, 0xa084, 0x37ff, 0x0010, 0xa084, ++ 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, ++ 0x53a6, 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x20a9, 0x0008, ++ 0x20a3, 0x0000, 0x1f04, 0x8220, 0x20a9, 0x0008, 0x20a3, 0x0000, ++ 0x1f04, 0x8226, 0x2099, 0xc8dd, 0x3304, 0xc0dd, 0x20a2, 0x2001, ++ 0xc672, 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x9398, 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, 0x0010, 0x20a9, ++ 0x0007, 0x20a3, 0x0000, 0x1f04, 0x8241, 0x0468, 0x2001, 0xc635, ++ 0x2004, 0xd0a4, 0x0140, 0x2001, 0xc8d6, 0x2004, 0x60e3, 0x0000, ++ 0x080c, 0x2a1c, 0x60e2, 0x2099, 0xc8d5, 0x20a9, 0x0008, 0x53a6, ++ 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6, 0x20a9, 0x0004, 0x2099, ++ 0xc601, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x8264, ++ 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x826a, 0x2099, 0xc8dd, ++ 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, ++ 0x8275, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x827b, 0x60c3, ++ 0x0074, 0x080c, 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83d8, ++ 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079, + 0xc652, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4, +- 0x0110, 0xa085, 0x0010, 0x2009, 0xc674, 0x210c, 0xd184, 0x1110, +- 0xa085, 0x0002, 0x0026, 0x2009, 0xc672, 0x210c, 0xd1e4, 0x0130, +- 0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, 0x0140, 0xd1ec, 0x0130, +- 0xa094, 0x0030, 0xa296, 0x0010, 0x0108, 0xc0bd, 0x002e, 0x20a2, +- 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, 0x8be2, 0x00de, 0x0005, +- 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014, +- 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x0110, 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, 0x0804, 0x8363, ++ 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, ++ 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x5000, ++ 0x0804, 0x81d2, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x2110, ++ 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804, +- 0x812c, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, ++ 0x080c, 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x846c, 0x0020, ++ 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0200, 0x20a3, 0x0000, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8bfb, ++ 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0100, 0x20a3, + 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c, +- 0x8be2, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b, +- 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b, +- 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x0026, +- 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0038, 0x0026, +- 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x20e1, 0x9080, +- 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, +- 0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffe, 0x20a3, 0x0000, +- 0x2011, 0xc615, 0x2214, 0x2001, 0xc8e5, 0x2004, 0xa005, 0x0118, +- 0x2011, 0xc61d, 0x2214, 0x22a2, 0x04d0, 0xa286, 0x007f, 0x1138, +- 0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x00c8, 0x2001, +- 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd2bc, 0x01c8, 0xa286, 0x0080, +- 0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0040, +- 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, +- 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, +- 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, +- 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485, +- 0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, 0x0000, 0x080c, 0x8bd1, +- 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x00d6, 0x2069, +- 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x2029, 0x20a3, +- 0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, +- 0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3300, +- 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2300, +- 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, +- 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, +- 0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, +- 0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, 0x1140, 0x6814, 0xa005, +- 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0028, 0x2069, 0xc61c, +- 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, 0xa0e8, 0xc77b, +- 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, +- 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485, 0x0098, 0x20a2, +- 0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, 0x8bd1, 0x22a2, 0x20a3, +- 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x002e, 0x0005, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08, +- 0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, +- 0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1519, +- 0xa08a, 0x008c, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0, 0x2011, +- 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900, 0xd1f4, +- 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, +- 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, +- 0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x84f8, +- 0x8502, 0x851d, 0x84f6, 0x84f6, 0x84f6, 0x84f8, 0x080c, 0x1519, +- 0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, 0x0000, 0x080c, 0x8be2, +- 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8569, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2, 0x20a3, +- 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, +- 0x000c, 0x080c, 0x8be2, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, +- 0x080c, 0x85a3, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x014e, 0x0005, +- 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, +- 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, +- 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x8100, +- 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, +- 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, +- 0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, +- 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0804, +- 0x8426, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, ++ 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0200, ++ 0x0804, 0x81d2, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0100, ++ 0x20a3, 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, 0x0010, 0x20a3, ++ 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8bfb, 0x0005, ++ 0x00d6, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0210, 0x20a3, ++ 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, ++ 0x1198, 0x699c, 0xa184, 0x0030, 0x0190, 0x6998, 0xa184, 0xc000, ++ 0x1140, 0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, 0x20a3, 0x0100, ++ 0x0040, 0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, 0x0010, 0x700f, ++ 0x0800, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, ++ 0x2079, 0xc652, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, ++ 0xd1a4, 0x0110, 0xa085, 0x0010, 0x2009, 0xc674, 0x210c, 0xd184, ++ 0x1110, 0xa085, 0x0002, 0x0026, 0x2009, 0xc672, 0x210c, 0xd1e4, ++ 0x0130, 0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, 0x0140, 0xd1ec, ++ 0x0130, 0xa094, 0x0030, 0xa296, 0x0010, 0x0108, 0xc0bd, 0x002e, ++ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, 0x8bfb, 0x00de, ++ 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0210, 0x20a3, ++ 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, ++ 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0200, ++ 0x0804, 0x8145, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0100, ++ 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, ++ 0x080c, 0x8bfb, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, ++ 0x020b, 0x080c, 0x8474, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, ++ 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8bfb, 0x0005, ++ 0x0026, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0038, ++ 0x0026, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x20e1, ++ 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, ++ 0x007e, 0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffe, 0x20a3, ++ 0x0000, 0x2011, 0xc615, 0x2214, 0x2001, 0xc8e5, 0x2004, 0xa005, ++ 0x0118, 0x2011, 0xc61d, 0x2214, 0x22a2, 0x04d0, 0xa286, 0x007f, ++ 0x1138, 0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x00c8, ++ 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd2bc, 0x01c8, 0xa286, ++ 0x0080, 0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffc, ++ 0x0040, 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, ++ 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, ++ 0x00d6, 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, ++ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, ++ 0xa485, 0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, 0x0000, 0x080c, ++ 0x8bea, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, 0x20e1, 0x9080, ++ 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x00d6, ++ 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x2029, ++ 0x20a3, 0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, ++ 0xfc02, 0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, ++ 0x3300, 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, ++ 0x2300, 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, ++ 0xa092, 0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, ++ 0xa305, 0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, 0x1140, 0x6814, ++ 0xa005, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0028, 0x2069, ++ 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, 0xa0e8, ++ 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x00de, ++ 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485, 0x0098, ++ 0x20a2, 0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, 0x8bea, 0x22a2, ++ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x002e, 0x0005, 0x080c, 0x8bea, 0x22a2, 0x20a3, 0x0000, ++ 0x7a08, 0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x002e, 0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0085, 0x0a0c, ++ 0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0, ++ 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900, ++ 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, ++ 0x0028, 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061, ++ 0x0100, 0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, 0x00ce, 0x0005, ++ 0x8511, 0x851b, 0x8536, 0x850f, 0x850f, 0x850f, 0x8511, 0x080c, ++ 0x1519, 0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, 0x0000, 0x080c, ++ 0x8bfb, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8582, ++ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2, ++ 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x60c3, 0x000c, 0x080c, 0x8bfb, 0x014e, 0x0005, 0x0146, 0x20a1, ++ 0x020b, 0x080c, 0x85bc, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8bfb, 0x014e, ++ 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, + 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, + 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, +- 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, ++ 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, + 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, +- 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, +- 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099, 0x20a2, 0x20a3, +- 0x0000, 0x0804, 0x84b2, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, +- 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, +- 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, +- 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, +- 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x00de, +- 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099, +- 0x20a2, 0x20a3, 0x0000, 0x0804, 0x84b2, 0x00c6, 0x00f6, 0x2c78, +- 0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c, +- 0x1519, 0x7918, 0x2160, 0x61a0, 0x2011, 0xc635, 0x2214, 0xd2ac, +- 0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, 0x0120, 0x6114, 0xa18c, +- 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d, +- 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x001b, +- 0x00fe, 0x00ce, 0x0005, 0x8620, 0x872c, 0x86c9, 0x88de, 0x861e, +- 0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x8f70, 0x8f80, +- 0x8f90, 0x8fa0, 0x861e, 0x93b0, 0x861e, 0x8f5f, 0x080c, 0x1519, +- 0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, 0x20a1, 0x020b, 0x080c, +- 0x8680, 0x7910, 0x2168, 0x6948, 0x7952, 0x21a2, 0xa016, 0x22a2, +- 0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, 0x1118, 0x2001, 0x0005, +- 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, 0xa084, 0x0006, +- 0x8004, 0x0016, 0x2008, 0x7858, 0xa084, 0x00ff, 0x8007, 0xa105, +- 0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, 0x0002, 0x0048, 0xd1b4, +- 0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, 0x0000, 0x2230, 0x0010, +- 0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, 0xad88, 0x0017, 0x2198, +- 0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, 0x020b, 0x22a2, 0x26a2, +- 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084, 0x0004, 0xa085, +- 0x0009, 0x6016, 0x2001, 0xc943, 0x2003, 0x07d0, 0x2001, 0xc942, +- 0x2003, 0x0009, 0x080c, 0x17f1, 0x014e, 0x015e, 0x00de, 0x0005, +- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, +- 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028, +- 0x2004, 0x2019, 0xc635, 0x231c, 0xd3ac, 0x1110, 0xd0bc, 0x0188, +- 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, +- 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, +- 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600, +- 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2009, 0xc615, +- 0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, 0x22a2, 0x20a3, +- 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x20a1, 0x020b, 0x00c1, +- 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2, +- 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3, +- 0x000c, 0x080c, 0x8be2, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, +- 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, +- 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, +- 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2, +- 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, +- 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500, +- 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, +- 0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x080c, 0x8bd1, +- 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, +- 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, +- 0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, 0x080c, 0x56bf, 0x0148, +- 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x1118, 0x7820, 0xc0cd, +- 0x7822, 0x20a1, 0x020b, 0x080c, 0x8894, 0xa016, 0x22a2, 0x22a2, +- 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x1130, 0x7810, +- 0xa084, 0x0700, 0x8007, 0x0043, 0x0010, 0xa006, 0x002b, 0x014e, +- 0x013e, 0x015e, 0x00de, 0x0005, 0x8766, 0x87fb, 0x880b, 0x883d, +- 0x8850, 0x886b, 0x8874, 0x8764, 0x080c, 0x1519, 0x0016, 0x0036, +- 0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, 0x0003, 0x1170, 0x6b78, +- 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, 0x20a2, 0x6864, +- 0x20a2, 0x003e, 0x001e, 0x0804, 0x8847, 0xa186, 0x0001, 0x190c, +- 0x1519, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, +- 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, +- 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0904, 0x87f5, 0xd3c4, +- 0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, 0x6874, 0xa108, 0x0156, +- 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000, +- 0x1f04, 0x87a4, 0x015e, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003, +- 0x0904, 0x87f5, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000, +- 0x0006, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, +- 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, +- 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, +- 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, +- 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de, +- 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x000e, 0x7b20, +- 0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a2, +- 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x003e, 0x001e, +- 0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x2001, 0xc60d, 0x2004, +- 0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5, +- 0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, 0x0016, 0x0036, 0x7828, +- 0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, 0xd3cc, 0x0108, 0xc2e5, +- 0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, 0xa016, 0x22a2, 0x20a3, +- 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, +- 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2, +- 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, +- 0x60c3, 0x0032, 0x080c, 0x8be2, 0x0005, 0x2011, 0x0028, 0x7820, +- 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, +- 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005, +- 0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, +- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, +- 0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020, +- 0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x7820, 0xd0cc, 0x0108, +- 0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, 0x7b10, 0xa384, 0xff00, +- 0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, 0x7820, 0xd0cc, 0x0108, +- 0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, 0x2021, 0x0800, 0x0006, +- 0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x24a2, 0x004e, 0x22a2, +- 0x20a2, 0x003e, 0x0804, 0x8847, 0x0026, 0x20e1, 0x9080, 0x20e1, +- 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, +- 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, +- 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, +- 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, +- 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de, +- 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x7820, 0xd0cc, +- 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a3, 0x0000, +- 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, +- 0x0136, 0x0146, 0x0016, 0x0036, 0x7810, 0xa084, 0x0700, 0x8007, +- 0x003b, 0x003e, 0x001e, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, +- 0x88f8, 0x88f8, 0x88fa, 0x88f8, 0x88f8, 0x88f8, 0x891c, 0x88f8, +- 0x080c, 0x1519, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912, +- 0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, 0x00d6, 0x2069, 0xc652, +- 0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, 0x00ff, 0x8007, 0x20a2, +- 0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, 0x22a2, 0x22a2, 0x60c3, +- 0x0001, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x2009, 0x0003, +- 0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, 0x20e1, 0x9080, 0x20e1, ++ 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, ++ 0x2011, 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000, ++ 0x0804, 0x843f, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, ++ 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, ++ 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, ++ 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, ++ 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, ++ 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, ++ 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099, 0x20a2, ++ 0x20a3, 0x0000, 0x0804, 0x84cb, 0x0026, 0x20e1, 0x9080, 0x20e1, + 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, +- 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, +- 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, +- 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, +- 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x00de, +- 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0888, +- 0xa18d, 0x0008, 0x21a2, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, +- 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, +- 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0036, +- 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c, 0x7818, +- 0x2068, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0110, 0x7370, +- 0x7474, 0x2500, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0140, +- 0x2001, 0x04ff, 0x6062, 0x6067, 0xffff, 0x636a, 0x646e, 0x0050, +- 0x2001, 0x00ff, 0xa085, 0x0400, 0x6062, 0x6067, 0xffff, 0x606b, +- 0x0000, 0x616e, 0x68b8, 0x6073, 0x0530, 0x6077, 0x0008, 0x688c, +- 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085, 0x0020, 0x607a, +- 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087, 0xffff, 0x7810, +- 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, +- 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, +- 0x0000, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x0128, 0x609f, +- 0x0000, 0x2001, 0x0092, 0x0048, 0x6028, 0xc0bd, 0x602a, 0x609f, +- 0x00ff, 0x6027, 0xffff, 0x2001, 0x00b2, 0x6016, 0x2009, 0x07d0, +- 0x080c, 0x7029, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, +- 0x00ee, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, ++ 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, ++ 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, ++ 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, ++ 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, ++ 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, ++ 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, 0x84cb, 0x00c6, 0x00f6, ++ 0x2c78, 0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, ++ 0x1a0c, 0x1519, 0x7918, 0x2160, 0x61a0, 0x2011, 0xc635, 0x2214, ++ 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, 0x0120, 0x6114, ++ 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, ++ 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, ++ 0x001b, 0x00fe, 0x00ce, 0x0005, 0x8639, 0x8745, 0x86e2, 0x88f7, ++ 0x8637, 0x8637, 0x8637, 0x8637, 0x8637, 0x8637, 0x8637, 0x8f89, ++ 0x8f99, 0x8fa9, 0x8fb9, 0x8637, 0x93d0, 0x8637, 0x8f78, 0x080c, ++ 0x1519, 0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, 0x20a1, 0x020b, ++ 0x080c, 0x8699, 0x7910, 0x2168, 0x6948, 0x7952, 0x21a2, 0xa016, ++ 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, 0x1118, 0x2001, ++ 0x0005, 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, 0xa084, ++ 0x0006, 0x8004, 0x0016, 0x2008, 0x7858, 0xa084, 0x00ff, 0x8007, ++ 0xa105, 0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, 0x0002, 0x0048, ++ 0xd1b4, 0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, 0x0000, 0x2230, ++ 0x0010, 0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, 0xad88, 0x0017, ++ 0x2198, 0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, 0x020b, 0x22a2, ++ 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084, 0x0004, ++ 0xa085, 0x0009, 0x6016, 0x2001, 0xc943, 0x2003, 0x07d0, 0x2001, ++ 0xc942, 0x2003, 0x0009, 0x080c, 0x17f1, 0x014e, 0x015e, 0x00de, ++ 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, ++ 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, ++ 0x0028, 0x2004, 0x2019, 0xc635, 0x231c, 0xd3ac, 0x1110, 0xd0bc, ++ 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600, ++ 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, ++ 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, ++ 0x0600, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2009, ++ 0xc615, 0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, 0x22a2, ++ 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x20a1, 0x020b, ++ 0x00c1, 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, ++ 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, ++ 0x60c3, 0x000c, 0x080c, 0x8bfb, 0x014e, 0x013e, 0x015e, 0x00de, ++ 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, ++ 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, ++ 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500, ++ 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, ++ 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, ++ 0x0500, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, ++ 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x080c, ++ 0x8bea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, 0x0136, ++ 0x0146, 0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, 0x080c, 0x56d8, ++ 0x0148, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x1118, 0x7820, ++ 0xc0cd, 0x7822, 0x20a1, 0x020b, 0x080c, 0x88ad, 0xa016, 0x22a2, ++ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x1130, ++ 0x7810, 0xa084, 0x0700, 0x8007, 0x0043, 0x0010, 0xa006, 0x002b, ++ 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x877f, 0x8814, 0x8824, ++ 0x8856, 0x8869, 0x8884, 0x888d, 0x877d, 0x080c, 0x1519, 0x0016, ++ 0x0036, 0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, 0x0003, 0x1170, ++ 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, 0x20a2, ++ 0x6864, 0x20a2, 0x003e, 0x001e, 0x0804, 0x8860, 0xa186, 0x0001, ++ 0x190c, 0x1519, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, ++ 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, ++ 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0904, 0x880e, ++ 0xd3c4, 0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, 0x6874, 0xa108, ++ 0x0156, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, ++ 0x8000, 0x1f04, 0x87bd, 0x015e, 0x22a2, 0x22a2, 0x22a2, 0xa184, ++ 0x0003, 0x0904, 0x880e, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, ++ 0x4000, 0x0006, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, ++ 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, ++ 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, ++ 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, ++ 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, ++ 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x000e, ++ 0x7b20, 0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, ++ 0x20a2, 0x080c, 0x8bea, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x003e, ++ 0x001e, 0x080c, 0x8bfb, 0x0005, 0x2011, 0x0008, 0x2001, 0xc60d, ++ 0x2004, 0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, ++ 0xc2e5, 0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, 0x0016, 0x0036, ++ 0x7828, 0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, 0xd3cc, 0x0108, ++ 0xc2e5, 0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, 0xa016, 0x22a2, ++ 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, ++ 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, ++ 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, ++ 0x22a2, 0x60c3, 0x0032, 0x080c, 0x8bfb, 0x0005, 0x2011, 0x0028, ++ 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, ++ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x080c, 0x8bfb, ++ 0x0005, 0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, ++ 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, ++ 0x22a2, 0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, ++ 0x0020, 0x080c, 0x8bfb, 0x0005, 0x2011, 0x0008, 0x7820, 0xd0cc, ++ 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, 0x7b10, 0xa384, ++ 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, 0x7820, 0xd0cc, ++ 0x0108, 0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, 0x2021, 0x0800, ++ 0x0006, 0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x24a2, 0x004e, ++ 0x22a2, 0x20a2, 0x003e, 0x0804, 0x8860, 0x0026, 0x20e1, 0x9080, ++ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, ++ 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, ++ 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, ++ 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, ++ 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, ++ 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x7820, ++ 0xd0cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a3, ++ 0x0000, 0x080c, 0x8bea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, ++ 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, ++ 0x0156, 0x0136, 0x0146, 0x0016, 0x0036, 0x7810, 0xa084, 0x0700, ++ 0x8007, 0x003b, 0x003e, 0x001e, 0x014e, 0x013e, 0x015e, 0x00de, ++ 0x0005, 0x8911, 0x8911, 0x8913, 0x8911, 0x8911, 0x8911, 0x8935, ++ 0x8911, 0x080c, 0x1519, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, ++ 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, 0x00d6, 0x2069, ++ 0xc652, 0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, 0x00ff, 0x8007, ++ 0x20a2, 0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, 0x22a2, 0x22a2, ++ 0x60c3, 0x0001, 0x080c, 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x2009, ++ 0x0003, 0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, 0x20e1, 0x9080, ++ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, ++ 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, ++ 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, ++ 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, ++ 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, ++ 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x20a3, ++ 0x0888, 0xa18d, 0x0008, 0x21a2, 0x080c, 0x8bea, 0x22a2, 0x20a3, ++ 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, ++ 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, + 0x0036, 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c, +- 0x7818, 0x2068, 0x68a0, 0x2028, 0x2031, 0xc635, 0x2634, 0xd6ac, +- 0x1160, 0xa582, 0x007e, 0x1248, 0x2500, 0xd0bc, 0x1130, 0xa080, +- 0x2f6e, 0x2015, 0xa294, 0x00ff, 0x0020, 0x6910, 0x6a14, 0x7370, +- 0x7474, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1128, 0xa582, 0x007e, +- 0x1210, 0xd5bc, 0x0138, 0xa185, 0x0400, 0x6062, 0x6266, 0x636a, +- 0x646e, 0x0030, 0x6063, 0x0400, 0x6266, 0x606b, 0x0000, 0x616e, +- 0x68b8, 0x6072, 0x6077, 0x0000, 0x6864, 0xd0a4, 0x0110, 0x6077, +- 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085, +- 0x0020, 0x607a, 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087, +- 0xffff, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, +- 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, +- 0x95d5, 0x60d7, 0x0000, 0xa582, 0x007e, 0x0210, 0x2011, 0x0000, +- 0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, 0x0000, 0x00fe, 0x2009, +- 0x0092, 0x6116, 0x2009, 0x07d0, 0x080c, 0x7029, 0x003e, 0x004e, +- 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x00e6, 0x00d6, +- 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xc600, +- 0x7154, 0x7818, 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130, +- 0xd0bc, 0x1120, 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14, +- 0x7370, 0x7474, 0x781c, 0xa0be, 0x0006, 0x0904, 0x8b1c, 0xa0be, +- 0x000a, 0x15e8, 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, 0x646e, +- 0x6073, 0x2029, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, +- 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, +- 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, +- 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, +- 0x0000, 0x609f, 0x0000, 0x080c, 0x944b, 0x2009, 0x07d0, 0x60c4, +- 0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7029, +- 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4, +- 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, +- 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, +- 0x0000, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000, +- 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, +- 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, +- 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, +- 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, +- 0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, +- 0x080c, 0x944b, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, +- 0x0110, 0x2009, 0x1b58, 0x080c, 0x7029, 0x003e, 0x004e, 0x005e, +- 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, 0xa084, +- 0x0003, 0xa086, 0x0002, 0x0904, 0x8b72, 0x2001, 0xc635, 0x2004, +- 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, +- 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, +- 0x0000, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, +- 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00, +- 0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, +- 0x60c6, 0x707c, 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, +- 0x7928, 0xa109, 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, +- 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, +- 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x9448, +- 0x0804, 0x8b0a, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd5bc, +- 0x0138, 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, +- 0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x080c, +- 0x56bf, 0x0180, 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084, +- 0x2020, 0xa086, 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073, +- 0x0889, 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, +- 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, +- 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, +- 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, +- 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, +- 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc, +- 0x0120, 0x080c, 0x944b, 0x0804, 0x8b0a, 0x080c, 0x9448, 0x0804, +- 0x8b0a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, +- 0x2202, 0x8217, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6843, 0x0001, +- 0x00de, 0x0005, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, +- 0x0019, 0x080c, 0x701b, 0x0005, 0x0006, 0x6014, 0xa084, 0x0004, +- 0xa085, 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, +- 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004, +- 0xa085, 0x0008, 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, 0xe000, +- 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, +- 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1198, 0x2001, +- 0xc943, 0x2004, 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c, +- 0x5fa4, 0x006e, 0x1118, 0x080c, 0x701b, 0x0468, 0x00c6, 0x2061, +- 0xc927, 0x00d8, 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, 0x6803, +- 0x1000, 0x6803, 0x0000, 0x00c6, 0x2061, 0xc927, 0x6128, 0xa192, +- 0x00c8, 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, +- 0x080c, 0x701b, 0x080c, 0x8bec, 0x0070, 0x6124, 0xa1e5, 0x0000, +- 0x0140, 0x080c, 0xc58e, 0x080c, 0x7024, 0x2009, 0x0014, 0x080c, +- 0x960c, 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, +- 0x2001, 0xc943, 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, 0xc927, +- 0x6128, 0xa192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, +- 0x701b, 0x080c, 0x4e5b, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016, +- 0x0026, 0x080c, 0x7031, 0x2071, 0xc927, 0x713c, 0x81ff, 0x0904, +- 0x8cc1, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1500, +- 0x0036, 0x2019, 0x0002, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160, +- 0x080c, 0xc58e, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138, +- 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c, +- 0x960c, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0408, +- 0x6904, 0xa194, 0x4000, 0x0518, 0x6803, 0x1000, 0x6803, 0x0000, +- 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160, +- 0x080c, 0xc58e, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138, +- 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c, +- 0x960c, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c00, +- 0x0026, 0x00e6, 0x2071, 0xc927, 0x7048, 0xd084, 0x01d8, 0x713c, +- 0x81ff, 0x01c0, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e, +- 0x0006, 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016, +- 0x0048, 0xa28e, 0x0009, 0x0db0, 0x7014, 0xa084, 0x0184, 0xa085, +- 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, +- 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, 0x6018, +- 0x2068, 0x6ca0, 0x2071, 0xc927, 0x7018, 0x2068, 0x8dff, 0x0188, +- 0x68a0, 0xa406, 0x0118, 0x6854, 0x2068, 0x0cc0, 0x6010, 0x2060, +- 0x643c, 0x6540, 0x6648, 0x2d60, 0x080c, 0x54ae, 0x0110, 0xa085, +- 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, +- 0x00ee, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x1200, +- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x781c, 0xa086, 0x0004, 0x1110, +- 0x6098, 0x0018, 0x2001, 0xc615, 0x2004, 0x20a2, 0x7834, 0x20a2, +- 0x7838, 0x20a2, 0x20a9, 0x0010, 0xa006, 0x20a2, 0x1f04, 0x8d35, +- 0x20a2, 0x20a2, 0x60c3, 0x002c, 0x080c, 0x8be2, 0x0005, 0x0156, +- 0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0f00, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c, +- 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, +- 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, +- 0x2011, 0xc640, 0x2019, 0xc641, 0x23a6, 0x22a6, 0xa398, 0x0002, +- 0xa290, 0x0002, 0x1f04, 0x8d64, 0x20a3, 0x0000, 0x20a3, 0x0000, +- 0x60c3, 0x001c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, +- 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x8434, 0x080c, +- 0x844a, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0015, 0x2098, +- 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, +- 0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e, 0x015e, 0x0005, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x6200, ++ 0x7818, 0x2068, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0110, ++ 0x7370, 0x7474, 0x2500, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, ++ 0x0140, 0x2001, 0x04ff, 0x6062, 0x6067, 0xffff, 0x636a, 0x646e, ++ 0x0050, 0x2001, 0x00ff, 0xa085, 0x0400, 0x6062, 0x6067, 0xffff, ++ 0x606b, 0x0000, 0x616e, 0x68b8, 0x6073, 0x0530, 0x6077, 0x0008, ++ 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085, 0x0020, ++ 0x607a, 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087, 0xffff, ++ 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, ++ 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x0128, ++ 0x609f, 0x0000, 0x2001, 0x0092, 0x0048, 0x6028, 0xc0bd, 0x602a, ++ 0x609f, 0x00ff, 0x6027, 0xffff, 0x2001, 0x00b2, 0x6016, 0x2009, ++ 0x07d0, 0x080c, 0x7042, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, ++ 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, ++ 0x210c, 0x7818, 0x2068, 0x68a0, 0x2028, 0x2031, 0xc635, 0x2634, ++ 0xd6ac, 0x1160, 0xa582, 0x007e, 0x1248, 0x2500, 0xd0bc, 0x1130, ++ 0xa080, 0x2f6e, 0x2015, 0xa294, 0x00ff, 0x0020, 0x6910, 0x6a14, ++ 0x7370, 0x7474, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1128, 0xa582, ++ 0x007e, 0x1210, 0xd5bc, 0x0138, 0xa185, 0x0400, 0x6062, 0x6266, ++ 0x636a, 0x646e, 0x0030, 0x6063, 0x0400, 0x6266, 0x606b, 0x0000, ++ 0x616e, 0x68b8, 0x6072, 0x6077, 0x0000, 0x6864, 0xd0a4, 0x0110, ++ 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, ++ 0xa085, 0x0020, 0x607a, 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, ++ 0x6087, 0xffff, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, ++ 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, ++ 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x007e, 0x0210, 0x2011, ++ 0x0000, 0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, 0x0000, 0x00fe, ++ 0x2009, 0x0092, 0x6116, 0x2009, 0x07d0, 0x080c, 0x7042, 0x003e, ++ 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x00e6, ++ 0x00d6, 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, ++ 0xc600, 0x7154, 0x7818, 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, ++ 0x1130, 0xd0bc, 0x1120, 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, ++ 0x6a14, 0x7370, 0x7474, 0x781c, 0xa0be, 0x0006, 0x0904, 0x8b35, ++ 0xa0be, 0x000a, 0x15e8, 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, ++ 0x646e, 0x6073, 0x2029, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, ++ 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, ++ 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, ++ 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0x609f, 0x0000, 0x080c, 0x946b, 0x2009, 0x07d0, ++ 0x60c4, 0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, ++ 0x7042, 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, ++ 0x70d4, 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, ++ 0x606b, 0x0000, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, ++ 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, ++ 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, ++ 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, ++ 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, ++ 0xd2f4, 0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, ++ 0x629e, 0x080c, 0x946b, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, ++ 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7042, 0x003e, 0x004e, ++ 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, ++ 0xa084, 0x0003, 0xa086, 0x0002, 0x0904, 0x8b8b, 0x2001, 0xc635, ++ 0x2004, 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, ++ 0x606b, 0x0000, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, ++ 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, ++ 0x2f00, 0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, ++ 0x7080, 0x60c6, 0x707c, 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, ++ 0x7080, 0x7928, 0xa109, 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, ++ 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, ++ 0x9468, 0x0804, 0x8b23, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, ++ 0xd5bc, 0x0138, 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, ++ 0x0038, 0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, ++ 0x080c, 0x56d8, 0x0180, 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, ++ 0xa084, 0x2020, 0xa086, 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, ++ 0x6073, 0x0889, 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, ++ 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, ++ 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, ++ 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, ++ 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, ++ 0xd0cc, 0x0120, 0x080c, 0x946b, 0x0804, 0x8b23, 0x080c, 0x9468, ++ 0x0804, 0x8b23, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, ++ 0x00ff, 0x2202, 0x8217, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6843, ++ 0x0001, 0x00de, 0x0005, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, ++ 0x9575, 0x0019, 0x080c, 0x7034, 0x0005, 0x0006, 0x6014, 0xa084, ++ 0x0004, 0xa085, 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, ++ 0x0006, 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, ++ 0x0004, 0xa085, 0x0008, 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, ++ 0xe000, 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, ++ 0x0026, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f3b, 0x1198, ++ 0x2001, 0xc943, 0x2004, 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, ++ 0x080c, 0x5fbd, 0x006e, 0x1118, 0x080c, 0x7034, 0x0468, 0x00c6, ++ 0x2061, 0xc927, 0x00d8, 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, ++ 0x6803, 0x1000, 0x6803, 0x0000, 0x00c6, 0x2061, 0xc927, 0x6128, ++ 0xa192, 0x00c8, 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, ++ 0x0198, 0x080c, 0x7034, 0x080c, 0x8c05, 0x0070, 0x6124, 0xa1e5, ++ 0x0000, 0x0140, 0x080c, 0xc5b4, 0x080c, 0x703d, 0x2009, 0x0014, ++ 0x080c, 0x962c, 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, ++ 0x0005, 0x2001, 0xc943, 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, ++ 0xc927, 0x6128, 0xa192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, ++ 0x080c, 0x7034, 0x080c, 0x4e74, 0x0c38, 0x00c6, 0x00d6, 0x00e6, ++ 0x0016, 0x0026, 0x080c, 0x704a, 0x2071, 0xc927, 0x713c, 0x81ff, ++ 0x0904, 0x8cda, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f3b, ++ 0x1500, 0x0036, 0x2019, 0x0002, 0x080c, 0x8e92, 0x003e, 0x713c, ++ 0x2160, 0x080c, 0xc5b4, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, ++ 0x1138, 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, ++ 0x080c, 0x962c, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fbd, 0x006e, ++ 0x0408, 0x6904, 0xa194, 0x4000, 0x0518, 0x6803, 0x1000, 0x6803, ++ 0x0000, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e92, 0x003e, 0x713c, ++ 0x2160, 0x080c, 0xc5b4, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, ++ 0x1138, 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, ++ 0x080c, 0x962c, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, ++ 0x0c00, 0x0026, 0x00e6, 0x2071, 0xc927, 0x7048, 0xd084, 0x01d8, ++ 0x713c, 0x81ff, 0x01c0, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, ++ 0xa28e, 0x0006, 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, ++ 0x7016, 0x0048, 0xa28e, 0x0009, 0x0db0, 0x7014, 0xa084, 0x0184, ++ 0xa085, 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00e6, 0x00d6, ++ 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x6018, 0x2068, 0x6ca0, 0x2071, 0xc927, 0x7018, 0x2068, 0x8dff, ++ 0x0188, 0x68a0, 0xa406, 0x0118, 0x6854, 0x2068, 0x0cc0, 0x6010, ++ 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60, 0x080c, 0x54c7, 0x0110, ++ 0xa085, 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, ++ 0x1200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x781c, 0xa086, 0x0004, ++ 0x1110, 0x6098, 0x0018, 0x2001, 0xc615, 0x2004, 0x20a2, 0x7834, ++ 0x20a2, 0x7838, 0x20a2, 0x20a9, 0x0010, 0xa006, 0x20a2, 0x1f04, ++ 0x8d4e, 0x20a2, 0x20a2, 0x60c3, 0x002c, 0x080c, 0x8bfb, 0x0005, ++ 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x0f00, + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, +- 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x0016, +- 0x0026, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810, 0xa080, 0x0000, +- 0x2004, 0xa080, 0x0017, 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, +- 0x53a6, 0x8003, 0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e, +- 0x015e, 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, +- 0x2071, 0xc927, 0x700c, 0x2060, 0x8cff, 0x0178, 0x080c, 0xae88, +- 0x1110, 0x080c, 0x9c02, 0x600c, 0x0006, 0x080c, 0xb04f, 0x080c, +- 0x95dc, 0x080c, 0x8fb7, 0x00ce, 0x0c78, 0x700f, 0x0000, 0x700b, +- 0x0000, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0156, +- 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091, +- 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xc927, 0x7024, +- 0x2060, 0x8cff, 0x05a0, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, +- 0x7024, 0x2009, 0x0013, 0x080c, 0x960c, 0x20a9, 0x01f4, 0x6824, ++ 0x080c, 0x8bfb, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, ++ 0x020b, 0x080c, 0x8474, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9, ++ 0x0006, 0x2011, 0xc640, 0x2019, 0xc641, 0x23a6, 0x22a6, 0xa398, ++ 0x0002, 0xa290, 0x0002, 0x1f04, 0x8d7d, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x60c3, 0x001c, 0x080c, 0x8bfb, 0x014e, 0x015e, 0x0005, ++ 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x844d, ++ 0x080c, 0x8463, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0015, ++ 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, ++ 0x8003, 0x60c2, 0x080c, 0x8bfb, 0x002e, 0x001e, 0x014e, 0x015e, ++ 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, ++ 0x6200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, ++ 0x0008, 0x080c, 0x8bfb, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, ++ 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x83d8, 0x7810, 0xa080, ++ 0x0000, 0x2004, 0xa080, 0x0017, 0x2098, 0x7808, 0xa088, 0x0002, ++ 0x21a8, 0x53a6, 0x8003, 0x60c2, 0x080c, 0x8bfb, 0x002e, 0x001e, ++ 0x014e, 0x015e, 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0xc927, 0x700c, 0x2060, 0x8cff, 0x0178, 0x080c, ++ 0xaea8, 0x1110, 0x080c, 0x9c22, 0x600c, 0x0006, 0x080c, 0xb06f, ++ 0x080c, 0x95fc, 0x080c, 0x8fd0, 0x00ce, 0x0c78, 0x700f, 0x0000, ++ 0x700b, 0x0000, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, 0x0126, ++ 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, ++ 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xc927, ++ 0x7024, 0x2060, 0x8cff, 0x05a0, 0x080c, 0x8c0e, 0x68c3, 0x0000, ++ 0x080c, 0x703d, 0x2009, 0x0013, 0x080c, 0x962c, 0x20a9, 0x01f4, ++ 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, ++ 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, ++ 0x6827, 0x0001, 0x0010, 0x1f04, 0x8e28, 0x7804, 0xa084, 0x1000, ++ 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, ++ 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, ++ 0x2001, 0xc600, 0x2004, 0xa096, 0x0001, 0x0590, 0xa096, 0x0004, ++ 0x0578, 0x080c, 0x703d, 0x6814, 0xa084, 0x0001, 0x0110, 0x68a7, ++ 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x4e31, 0x080c, ++ 0x6fc6, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, ++ 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, ++ 0x0078, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8e6b, ++ 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, ++ 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, ++ 0x012e, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, ++ 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, ++ 0x0140, 0x2071, 0xc927, 0x703c, 0x2060, 0x8cff, 0x0904, 0x8f1d, ++ 0xa386, 0x0002, 0x1128, 0x6814, 0xa084, 0x0002, 0x0904, 0x8f1d, ++ 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x1df0, ++ 0x68c7, 0x0000, 0x68cb, 0x0008, 0x080c, 0x704a, 0x080c, 0x22ee, ++ 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169, 0x2404, ++ 0xa084, 0x000f, 0xa086, 0x0004, 0x1500, 0x68af, 0x95f5, 0x68c7, ++ 0x0000, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0020, 0x2071, ++ 0xc992, 0x6814, 0xa084, 0x0184, 0xa085, 0x0012, 0x6816, 0x7803, ++ 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0xa386, 0x0002, 0x1128, ++ 0x7884, 0xa005, 0x1110, 0x7887, 0x0001, 0x2001, 0xc8f8, 0x2004, ++ 0x200a, 0x004e, 0xa39d, 0x0000, 0x1140, 0x2009, 0x0049, 0x601c, ++ 0xa086, 0x0009, 0x0110, 0x080c, 0x962c, 0x20a9, 0x03e8, 0x6824, + 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, +- 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827, +- 0x0001, 0x0010, 0x1f04, 0x8e0f, 0x7804, 0xa084, 0x1000, 0x0120, ++ 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, ++ 0x0002, 0x0010, 0x1f04, 0x8eff, 0x7804, 0xa084, 0x1000, 0x0120, + 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, +- 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, +- 0xc600, 0x2004, 0xa096, 0x0001, 0x0590, 0xa096, 0x0004, 0x0578, +- 0x080c, 0x7024, 0x6814, 0xa084, 0x0001, 0x0110, 0x68a7, 0x95f5, +- 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x4e18, 0x080c, 0x6fad, +- 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, +- 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, +- 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8e52, 0x7804, +- 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x000e, +- 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, +- 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, +- 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, +- 0x2071, 0xc927, 0x703c, 0x2060, 0x8cff, 0x0904, 0x8f04, 0xa386, +- 0x0002, 0x1128, 0x6814, 0xa084, 0x0002, 0x0904, 0x8f04, 0x68af, +- 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x1df0, 0x68c7, +- 0x0000, 0x68cb, 0x0008, 0x080c, 0x7031, 0x080c, 0x22ee, 0x0046, +- 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169, 0x2404, 0xa084, +- 0x000f, 0xa086, 0x0004, 0x1500, 0x68af, 0x95f5, 0x68c7, 0x0000, +- 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0020, 0x2071, 0xc992, +- 0x6814, 0xa084, 0x0184, 0xa085, 0x0012, 0x6816, 0x7803, 0x0008, +- 0x7003, 0x0000, 0x00fe, 0x00ee, 0xa386, 0x0002, 0x1128, 0x7884, +- 0xa005, 0x1110, 0x7887, 0x0001, 0x2001, 0xc8f8, 0x2004, 0x200a, +- 0x004e, 0xa39d, 0x0000, 0x1140, 0x2009, 0x0049, 0x601c, 0xa086, +- 0x0009, 0x0110, 0x080c, 0x960c, 0x20a9, 0x03e8, 0x6824, 0xd094, +- 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, +- 0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, 0x0002, +- 0x0010, 0x1f04, 0x8ee6, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, +- 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce, +- 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126, +- 0x2091, 0x8000, 0x2069, 0xc927, 0x6a06, 0x012e, 0x00de, 0x0005, +- 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xc927, 0x6a32, 0x012e, +- 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, 0x0126, +- 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, +- 0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, 0x660c, +- 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, +- 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, +- 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xae4d, +- 0x080c, 0x8fb7, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, 0x08b8, +- 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0156, +- 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, 0xa006, +- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, 0x8faf, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0478, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x00f8, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, +- 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, +- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x0089, +- 0x60c3, 0x0020, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x00e6, +- 0x2071, 0xc927, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, 0x00ee, +- 0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x8fc3, 0x20a2, 0x20a2, +- 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, +- 0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, +- 0x2039, 0x0001, 0x87ff, 0x0904, 0x9058, 0x8cff, 0x0904, 0x9058, +- 0x601c, 0xa086, 0x0006, 0x1904, 0x9053, 0x88ff, 0x0138, 0x2800, +- 0xac06, 0x1904, 0x9053, 0x2039, 0x0000, 0x0050, 0x6018, 0xa206, +- 0x1904, 0x9053, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x9053, +- 0x7024, 0xac06, 0x1560, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0518, +- 0x080c, 0x7024, 0x6820, 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, +- 0x0008, 0x68c3, 0x0000, 0x080c, 0x90df, 0x7027, 0x0000, 0x0036, +- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, +- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, +- 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x0460, 0x7014, ++ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, ++ 0x0126, 0x2091, 0x8000, 0x2069, 0xc927, 0x6a06, 0x012e, 0x00de, ++ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xc927, 0x6a32, ++ 0x012e, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, ++ 0x0126, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, ++ 0x8cff, 0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, ++ 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, ++ 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, ++ 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, ++ 0xae6d, 0x080c, 0x8fd0, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, ++ 0x08b8, 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, ++ 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8699, 0x7810, 0x20a2, ++ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, ++ 0x8fc8, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8699, 0x7810, ++ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, ++ 0x0478, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8699, 0x7810, ++ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, ++ 0x00f8, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8699, 0x7810, ++ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, ++ 0x0078, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8699, 0x7810, ++ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, ++ 0x0089, 0x60c3, 0x0020, 0x080c, 0x8bfb, 0x014e, 0x015e, 0x0005, ++ 0x00e6, 0x2071, 0xc927, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, ++ 0x00ee, 0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x8fdc, 0x20a2, ++ 0x20a2, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, ++ 0x2678, 0x2039, 0x0001, 0x87ff, 0x0904, 0x9078, 0x8cff, 0x0904, ++ 0x9078, 0x601c, 0xa086, 0x0006, 0x1904, 0x9073, 0x88ff, 0x0138, ++ 0x2800, 0xac06, 0x1904, 0x9073, 0x2039, 0x0000, 0x0050, 0x6018, ++ 0xa206, 0x1904, 0x9073, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, ++ 0x9073, 0x7024, 0xac06, 0x1598, 0x2069, 0x0100, 0x68c0, 0xa005, ++ 0x1160, 0x6824, 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x703d, ++ 0x080c, 0x90ff, 0x7027, 0x0000, 0x0410, 0x080c, 0x703d, 0x6820, ++ 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, ++ 0x080c, 0x90ff, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, ++ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7014, + 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, + 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, + 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, +- 0x1158, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0110, +- 0x080c, 0xc134, 0x080c, 0xae4d, 0x080c, 0x8fb7, 0x88ff, 0x1190, +- 0x00ce, 0x0804, 0x8fda, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8fda, ++ 0x1158, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0110, ++ 0x080c, 0xc15a, 0x080c, 0xae6d, 0x080c, 0x8fd0, 0x88ff, 0x1190, ++ 0x00ce, 0x0804, 0x8ff3, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8ff3, + 0xa006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, + 0x00fe, 0x0005, 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, 0x0c88, + 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, + 0x2091, 0x8000, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678, 0x8cff, +- 0x0904, 0x90cf, 0x601c, 0xa086, 0x0006, 0x1904, 0x90ca, 0x87ff, +- 0x0128, 0x2700, 0xac06, 0x1904, 0x90ca, 0x0048, 0x6018, 0xa206, +- 0x1904, 0x90ca, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, +- 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7033, ++ 0x0904, 0x90ef, 0x601c, 0xa086, 0x0006, 0x1904, 0x90ea, 0x87ff, ++ 0x0128, 0x2700, 0xac06, 0x1904, 0x90ea, 0x0048, 0x6018, 0xa206, ++ 0x1904, 0x90ea, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, ++ 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e92, 0x7033, + 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, + 0x0000, 0x003e, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, + 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, + 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, +- 0x0008, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac8a, +- 0x0110, 0x080c, 0xc134, 0x080c, 0xae4d, 0x87ff, 0x1190, 0x00ce, +- 0x0804, 0x9077, 0x2c78, 0x600c, 0x2060, 0x0804, 0x9077, 0xa006, ++ 0x0008, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xacaa, ++ 0x0110, 0x080c, 0xc15a, 0x080c, 0xae6d, 0x87ff, 0x1190, 0x00ce, ++ 0x0804, 0x9097, 0x2c78, 0x600c, 0x2060, 0x0804, 0x9097, 0xa006, + 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, + 0x0005, 0x6017, 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, 0x00e6, + 0x2071, 0xc927, 0x2001, 0xc600, 0x2004, 0xa086, 0x0002, 0x1118, +@@ -4192,38 +4197,38 @@ unsigned short risc_code01[] = { + 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, + 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, + 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x760c, 0x2660, +- 0x2678, 0x8cff, 0x0904, 0x91b5, 0x6018, 0xa080, 0x0028, 0x2004, +- 0xa206, 0x1904, 0x91b0, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, +- 0x68c0, 0xa005, 0x0904, 0x918c, 0x080c, 0x8bf5, 0x68c3, 0x0000, +- 0x080c, 0x90df, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0x2678, 0x8cff, 0x0904, 0x91d5, 0x6018, 0xa080, 0x0028, 0x2004, ++ 0xa206, 0x1904, 0x91d0, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, ++ 0x68c0, 0xa005, 0x0904, 0x91ac, 0x080c, 0x8c0e, 0x68c3, 0x0000, ++ 0x080c, 0x90ff, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, + 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, + 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, + 0xac36, 0x1110, 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, 0x2c00, + 0xaf36, 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, + 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, +- 0x0000, 0x080c, 0xae77, 0x1158, 0x080c, 0x2e6c, 0x080c, 0xae88, +- 0x11f0, 0x080c, 0x9c02, 0x00d8, 0x080c, 0x90df, 0x08c0, 0x080c, +- 0xae88, 0x1118, 0x080c, 0x9c02, 0x0090, 0x6010, 0x2068, 0x080c, +- 0xac8a, 0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, +- 0x6b4a, 0x6847, 0x0000, 0x080c, 0x580a, 0x080c, 0xae41, 0x080c, +- 0xb04f, 0x080c, 0xae4d, 0x080c, 0x8fb7, 0x00ce, 0x0804, 0x9139, +- 0x2c78, 0x600c, 0x2060, 0x0804, 0x9139, 0x012e, 0x000e, 0x006e, ++ 0x0000, 0x080c, 0xae97, 0x1158, 0x080c, 0x2e6c, 0x080c, 0xaea8, ++ 0x11f0, 0x080c, 0x9c22, 0x00d8, 0x080c, 0x90ff, 0x08c0, 0x080c, ++ 0xaea8, 0x1118, 0x080c, 0x9c22, 0x0090, 0x6010, 0x2068, 0x080c, ++ 0xacaa, 0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, ++ 0x6b4a, 0x6847, 0x0000, 0x080c, 0x5823, 0x080c, 0xae61, 0x080c, ++ 0xb06f, 0x080c, 0xae6d, 0x080c, 0x8fd0, 0x00ce, 0x0804, 0x9159, ++ 0x2c78, 0x600c, 0x2060, 0x0804, 0x9159, 0x012e, 0x000e, 0x006e, + 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, +- 0x1d30, 0x080c, 0xc134, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, ++ 0x1d30, 0x080c, 0xc15a, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, + 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2c61, 0x1118, + 0x8210, 0x8000, 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, 0x2198, + 0xa110, 0x22a0, 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, 0x003e, +- 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, ++ 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0200, + 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, + 0x2099, 0xc900, 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, 0x20a3, +- 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x8be2, 0x00de, +- 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0214, 0x20a3, ++ 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x8bfb, 0x00de, ++ 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0214, 0x20a3, + 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, + 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005, 0x00d6, 0x0016, +- 0x2f68, 0x2009, 0x0035, 0x080c, 0xb13a, 0x1904, 0x9294, 0x20a1, +- 0x020b, 0x080c, 0x83bf, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, ++ 0x0000, 0x60c3, 0x0018, 0x080c, 0x8bfb, 0x0005, 0x00d6, 0x0016, ++ 0x2f68, 0x2009, 0x0035, 0x080c, 0xb15a, 0x1904, 0x92b4, 0x20a1, ++ 0x020b, 0x080c, 0x83d8, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, + 0x2068, 0x681c, 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, 0x0028, + 0x2014, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x11d0, 0xa286, 0x007e, + 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, 0x007f, +@@ -4235,17 +4240,17 @@ unsigned short risc_code01[] = { + 0x0240, 0x00d6, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, + 0x0020, 0x20a3, 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, 0x7838, + 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, +- 0x8be2, 0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, ++ 0x8bfb, 0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, + 0x001e, 0x00de, 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, 0x691c, +- 0xa186, 0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x930a, 0xa186, +- 0x0005, 0x0904, 0x92f3, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, +- 0x0904, 0x92fb, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x9372, +- 0x002e, 0x00de, 0x0005, 0x080c, 0x932e, 0x2009, 0x4000, 0x6800, +- 0x0002, 0x92d4, 0x92df, 0x92d6, 0x92df, 0x92db, 0x92d4, 0x92d4, +- 0x92df, 0x92df, 0x92df, 0x92df, 0x92d4, 0x92d4, 0x92d4, 0x92d4, +- 0x92d4, 0x92df, 0x92d4, 0x92df, 0x080c, 0x1519, 0x6820, 0xd0e4, ++ 0xa186, 0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x932a, 0xa186, ++ 0x0005, 0x0904, 0x9313, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, ++ 0x0904, 0x931b, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x9392, ++ 0x002e, 0x00de, 0x0005, 0x080c, 0x934e, 0x2009, 0x4000, 0x6800, ++ 0x0002, 0x92f4, 0x92ff, 0x92f6, 0x92ff, 0x92fb, 0x92f4, 0x92f4, ++ 0x92ff, 0x92ff, 0x92ff, 0x92ff, 0x92f4, 0x92f4, 0x92f4, 0x92f4, ++ 0x92f4, 0x92ff, 0x92f4, 0x92ff, 0x080c, 0x1519, 0x6820, 0xd0e4, + 0x0110, 0xd0cc, 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, 0x6828, +- 0x20a2, 0x682c, 0x20a2, 0x0804, 0x9324, 0x080c, 0x932e, 0x20a3, ++ 0x20a2, 0x682c, 0x20a2, 0x0804, 0x9344, 0x080c, 0x934e, 0x20a3, + 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, 0x0002, + 0x1108, 0xa00e, 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, 0x0000, + 0x2009, 0x4000, 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, 0x0000, +@@ -4254,8 +4259,8 @@ unsigned short risc_code01[] = { + 0x6980, 0x6814, 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, 0x0000, + 0x2004, 0xa08e, 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, 0x2009, + 0x4000, 0x0010, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, +- 0x0018, 0x080c, 0x8be2, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, +- 0x0056, 0x0066, 0x20a1, 0x020b, 0x080c, 0x845b, 0xa006, 0x20a3, ++ 0x0018, 0x080c, 0x8bfb, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, ++ 0x0056, 0x0066, 0x20a1, 0x020b, 0x080c, 0x8474, 0xa006, 0x20a3, + 0x0200, 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, + 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, + 0x007e, 0x0268, 0x00d6, 0x2069, 0xc61c, 0x2d2c, 0x8d68, 0x2d34, +@@ -4263,26 +4268,26 @@ unsigned short risc_code01[] = { + 0x0000, 0x6498, 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, 0x0007, + 0x2004, 0xa086, 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, 0x24a2, + 0x0020, 0x23a2, 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, 0x004e, +- 0x003e, 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, ++ 0x003e, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8474, 0x20a3, 0x0100, + 0x20a3, 0x0000, 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, +- 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83b7, 0x20a3, ++ 0x080c, 0x8bfb, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83d0, 0x20a3, + 0x1400, 0x20a3, 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, + 0x20a2, 0x782c, 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, +- 0x20a3, 0x0000, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, +- 0x020b, 0x080c, 0x8453, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, +- 0x20a2, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, +- 0x0146, 0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x8be2, ++ 0x20a3, 0x0000, 0x60c3, 0x0010, 0x080c, 0x8bfb, 0x0005, 0x20a1, ++ 0x020b, 0x080c, 0x846c, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, ++ 0x20a2, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8bfb, 0x0005, ++ 0x0146, 0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x8bfb, + 0x014e, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, + 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, + 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0300, + 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, + 0x00de, 0x0078, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, + 0x0300, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x6234, +- 0x22a2, 0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x8bd1, 0x22a2, ++ 0x22a2, 0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x8bea, 0x22a2, + 0x20a3, 0x0000, 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, + 0x0000, 0x0005, 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, 0x20a3, + 0x0000, 0x60c3, 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, 0x080c, +- 0x8bec, 0x080c, 0x701b, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, ++ 0x8c05, 0x080c, 0x7034, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, + 0x00e6, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, 0xadf0, + 0x000f, 0x7210, 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, 0x7214, + 0xa294, 0x0300, 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, 0xa384, +@@ -4294,41 +4299,41 @@ unsigned short risc_code01[] = { + 0x0005, 0x609b, 0x0000, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, + 0x4000, 0x20a3, 0x22ff, 0x20a3, 0xffff, 0x00d6, 0x2069, 0xc61c, + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x0138, 0x20a3, 0x0000, +- 0x0026, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, ++ 0x0026, 0x080c, 0x8bea, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, + 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x20a3, 0x5400, +- 0x20a3, 0x0000, 0x080c, 0x768f, 0x11b8, 0x0016, 0x7810, 0xa080, ++ 0x20a3, 0x0000, 0x080c, 0x76a8, 0x11b8, 0x0016, 0x7810, 0xa080, + 0x000d, 0x20a9, 0x0014, 0x200c, 0x810f, 0x21a2, 0x8000, 0x1f04, +- 0x9483, 0x20a9, 0x0012, 0x2001, 0x0000, 0x20a3, 0x0000, 0x1f04, +- 0x948d, 0x001e, 0x0804, 0x94fb, 0x7810, 0x0016, 0x00c6, 0x00d6, ++ 0x94a3, 0x20a9, 0x0012, 0x2001, 0x0000, 0x20a3, 0x0000, 0x1f04, ++ 0x94ad, 0x001e, 0x0804, 0x951b, 0x7810, 0x0016, 0x00c6, 0x00d6, + 0x7810, 0x2068, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0x6968, + 0x810f, 0xa18c, 0xff00, 0xa105, 0x20a2, 0x6074, 0x20a2, 0x6968, + 0xa18c, 0xff00, 0x21a2, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2009, +- 0xc605, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94b1, 0x20a9, 0x0004, +- 0x2009, 0xc601, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94ba, 0x20a9, ++ 0xc605, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94d1, 0x20a9, 0x0004, ++ 0x2009, 0xc601, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94da, 0x20a9, + 0x0004, 0x2d08, 0xa188, 0x001d, 0x2104, 0x8007, 0x20a2, 0x8108, +- 0x1f04, 0x94c4, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x0021, 0x2104, +- 0x8007, 0x20a2, 0x8108, 0x1f04, 0x94cf, 0x080c, 0x7694, 0x1138, +- 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x94da, 0x0050, 0x20a9, ++ 0x1f04, 0x94e4, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x0021, 0x2104, ++ 0x8007, 0x20a2, 0x8108, 0x1f04, 0x94ef, 0x080c, 0x76ad, 0x1138, ++ 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x94fa, 0x0050, 0x20a9, + 0x0008, 0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, +- 0x94e3, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104, 0x8007, +- 0x20a2, 0x8108, 0x1f04, 0x94ee, 0x00de, 0x00ce, 0x001e, 0x20a3, +- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, +- 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x5500, 0x20a3, 0x0000, ++ 0x9503, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104, 0x8007, ++ 0x20a2, 0x8108, 0x1f04, 0x950e, 0x00de, 0x00ce, 0x001e, 0x20a3, ++ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x8bfb, 0x0005, ++ 0x20a1, 0x020b, 0x080c, 0x83d8, 0x20a3, 0x5500, 0x20a3, 0x0000, + 0x7810, 0x0016, 0x00c6, 0x00d6, 0x7810, 0x2068, 0x686c, 0xa084, + 0x00ff, 0x6968, 0x810f, 0xa18c, 0xff00, 0xa105, 0x20a2, 0x696c, + 0xa18c, 0xff00, 0x6870, 0xa084, 0x00ff, 0xa105, 0x20a2, 0x6968, + 0xa18c, 0xff00, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0xa10d, + 0x21a2, 0x6174, 0x21a2, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x001d, +- 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9530, 0x20a9, 0x0004, ++ 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9550, 0x20a9, 0x0004, + 0x2d08, 0xa188, 0x0021, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, +- 0x953b, 0x20a9, 0x0004, 0x2009, 0xc605, 0x2104, 0x20a2, 0x8108, +- 0x1f04, 0x9545, 0x20a9, 0x0004, 0x2009, 0xc601, 0x2104, 0x20a2, +- 0x8108, 0x1f04, 0x954e, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, +- 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9558, 0x080c, 0x7694, +- 0x1138, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x9563, 0x0050, ++ 0x955b, 0x20a9, 0x0004, 0x2009, 0xc605, 0x2104, 0x20a2, 0x8108, ++ 0x1f04, 0x9565, 0x20a9, 0x0004, 0x2009, 0xc601, 0x2104, 0x20a2, ++ 0x8108, 0x1f04, 0x956e, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, ++ 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9578, 0x080c, 0x76ad, ++ 0x1138, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x9583, 0x0050, + 0x20a9, 0x0008, 0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, +- 0x1f04, 0x956c, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000, 0x20a3, +- 0x0000, 0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, 0x2061, 0xce00, ++ 0x1f04, 0x958c, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000, 0x20a3, ++ 0x0000, 0x60c3, 0x004c, 0x080c, 0x8bfb, 0x0005, 0x2061, 0xce00, + 0x2a70, 0x7068, 0x704a, 0x704f, 0xce00, 0x0005, 0x00e6, 0x0126, + 0x2071, 0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010, 0x0608, + 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, +@@ -4346,102 +4351,102 @@ unsigned short risc_code01[] = { + 0x0000, 0x6052, 0x6056, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, + 0x6036, 0x603a, 0x603e, 0x6026, 0x2061, 0xc600, 0x6048, 0x8000, + 0x604a, 0xa086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x080c, 0x7e94, 0x012e, 0x0cc0, 0x601c, 0xa084, 0x000f, 0x0002, +- 0x961b, 0x962a, 0x9645, 0x9660, 0xb17e, 0xb199, 0xb1b4, 0x961b, +- 0x962a, 0x7699, 0x967b, 0xa186, 0x0013, 0x1128, 0x080c, 0x7db1, +- 0x080c, 0x7e94, 0x0005, 0xa18e, 0x0047, 0x1118, 0xa016, 0x080c, ++ 0x080c, 0x7ead, 0x012e, 0x0cc0, 0x601c, 0xa084, 0x000f, 0x0002, ++ 0x963b, 0x964a, 0x9665, 0x9680, 0xb1a2, 0xb1bd, 0xb1d8, 0x963b, ++ 0x964a, 0x76b2, 0x969b, 0xa186, 0x0013, 0x1128, 0x080c, 0x7dca, ++ 0x080c, 0x7ead, 0x0005, 0xa18e, 0x0047, 0x1118, 0xa016, 0x080c, + 0x1870, 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, +- 0x0013, 0x006e, 0x0005, 0x9643, 0x9a71, 0x9c3c, 0x9643, 0x9cb9, +- 0x9739, 0x9643, 0x9643, 0x9a03, 0xa11f, 0x9643, 0x9643, 0x9643, +- 0x9643, 0x9643, 0x9643, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, +- 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0x965e, 0xa752, +- 0x965e, 0x965e, 0x965e, 0x965e, 0x965e, 0x965e, 0xa6fd, 0xa8be, +- 0x965e, 0xa77f, 0xa7f6, 0xa77f, 0xa7f6, 0x965e, 0x080c, 0x1519, ++ 0x0013, 0x006e, 0x0005, 0x9663, 0x9a91, 0x9c5c, 0x9663, 0x9cd9, ++ 0x9759, 0x9663, 0x9663, 0x9a23, 0xa13f, 0x9663, 0x9663, 0x9663, ++ 0x9663, 0x9663, 0x9663, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, ++ 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0x967e, 0xa772, ++ 0x967e, 0x967e, 0x967e, 0x967e, 0x967e, 0x967e, 0xa71d, 0xa8de, ++ 0x967e, 0xa79f, 0xa816, 0xa79f, 0xa816, 0x967e, 0x080c, 0x1519, + 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, +- 0x0005, 0x9679, 0xa160, 0xa22a, 0xa365, 0xa4c1, 0x9679, 0x9679, +- 0x9679, 0xa13a, 0xa6ad, 0xa6b0, 0x9679, 0x9679, 0x9679, 0x9679, +- 0xa6da, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, +- 0x1519, 0x0013, 0x006e, 0x0005, 0x9694, 0x9694, 0x9694, 0x96c2, +- 0x970f, 0x9694, 0x9694, 0x9694, 0x9696, 0x9694, 0x9694, 0x9694, +- 0x9694, 0x9694, 0x9694, 0x9694, 0x080c, 0x1519, 0xa186, 0x0003, ++ 0x0005, 0x9699, 0xa180, 0xa24a, 0xa385, 0xa4e1, 0x9699, 0x9699, ++ 0x9699, 0xa15a, 0xa6cd, 0xa6d0, 0x9699, 0x9699, 0x9699, 0x9699, ++ 0xa6fa, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, ++ 0x1519, 0x0013, 0x006e, 0x0005, 0x96b4, 0x96b4, 0x96b4, 0x96e2, ++ 0x972f, 0x96b4, 0x96b4, 0x96b4, 0x96b6, 0x96b4, 0x96b4, 0x96b4, ++ 0x96b4, 0x96b4, 0x96b4, 0x96b4, 0x080c, 0x1519, 0xa186, 0x0003, + 0x190c, 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068, + 0x684f, 0x0040, 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, + 0x6817, 0x0000, 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, + 0x8003, 0x8013, 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, +- 0x2068, 0x080c, 0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, +- 0x012e, 0x0005, 0xa182, 0x0047, 0x0002, 0x96ce, 0x96ce, 0x96d0, +- 0x96e9, 0x96ce, 0x96ce, 0x96ce, 0x96ce, 0x96fb, 0x080c, 0x1519, +- 0x00d6, 0x0016, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6003, 0x0004, ++ 0x2068, 0x080c, 0x7a15, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f87, ++ 0x012e, 0x0005, 0xa182, 0x0047, 0x0002, 0x96ee, 0x96ee, 0x96f0, ++ 0x9709, 0x96ee, 0x96ee, 0x96ee, 0x96ee, 0x971b, 0x080c, 0x1519, ++ 0x00d6, 0x0016, 0x080c, 0x7e60, 0x080c, 0x7f87, 0x6003, 0x0004, + 0x6110, 0x2168, 0x684f, 0x0020, 0x685c, 0x685a, 0x6874, 0x687e, + 0x6878, 0x6882, 0x6897, 0x0000, 0x689b, 0x0000, 0x001e, 0x00de, +- 0x0005, 0x080c, 0x7e47, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac8a, +- 0x0120, 0x684b, 0x0006, 0x080c, 0x580a, 0x00de, 0x080c, 0x95dc, +- 0x080c, 0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, +- 0x6110, 0x2168, 0x080c, 0xac8a, 0x0120, 0x684b, 0x0029, 0x080c, +- 0x580a, 0x00de, 0x080c, 0x95dc, 0x080c, 0x7f6e, 0x0005, 0xa182, +- 0x0047, 0x0002, 0x971d, 0x972c, 0x971b, 0x971b, 0x971b, 0x971b, +- 0x971b, 0x971b, 0x971b, 0x080c, 0x1519, 0x00d6, 0x6010, 0x2068, ++ 0x0005, 0x080c, 0x7e60, 0x00d6, 0x6110, 0x2168, 0x080c, 0xacaa, ++ 0x0120, 0x684b, 0x0006, 0x080c, 0x5823, 0x00de, 0x080c, 0x95fc, ++ 0x080c, 0x7f87, 0x0005, 0x080c, 0x7e60, 0x080c, 0x2e46, 0x00d6, ++ 0x6110, 0x2168, 0x080c, 0xacaa, 0x0120, 0x684b, 0x0029, 0x080c, ++ 0x5823, 0x00de, 0x080c, 0x95fc, 0x080c, 0x7f87, 0x0005, 0xa182, ++ 0x0047, 0x0002, 0x973d, 0x974c, 0x973b, 0x973b, 0x973b, 0x973b, ++ 0x973b, 0x973b, 0x973b, 0x080c, 0x1519, 0x00d6, 0x6010, 0x2068, + 0x684c, 0xc0f4, 0x684e, 0x00de, 0x20e1, 0x0005, 0x3d18, 0x3e20, + 0x2c10, 0x080c, 0x1870, 0x0005, 0x00d6, 0x6110, 0x2168, 0x684b, +- 0x0000, 0x6853, 0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95dc, +- 0x0005, 0xa1b6, 0x0015, 0x1118, 0x080c, 0x95dc, 0x0030, 0xa1b6, +- 0x0016, 0x190c, 0x1519, 0x080c, 0x95dc, 0x0005, 0x20a9, 0x000e, ++ 0x0000, 0x6853, 0x0000, 0x080c, 0x5823, 0x00de, 0x080c, 0x95fc, ++ 0x0005, 0xa1b6, 0x0015, 0x1118, 0x080c, 0x95fc, 0x0030, 0xa1b6, ++ 0x0016, 0x190c, 0x1519, 0x080c, 0x95fc, 0x0005, 0x20a9, 0x000e, + 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, + 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, +- 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x1f04, 0x9754, +- 0x00e6, 0x080c, 0xac8a, 0x0130, 0x6010, 0x2070, 0x7007, 0x0000, +- 0x7037, 0x0103, 0x00ee, 0x080c, 0x95dc, 0x0005, 0x00d6, 0x0036, ++ 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x1f04, 0x9774, ++ 0x00e6, 0x080c, 0xacaa, 0x0130, 0x6010, 0x2070, 0x7007, 0x0000, ++ 0x7037, 0x0103, 0x00ee, 0x080c, 0x95fc, 0x0005, 0x00d6, 0x0036, + 0x7330, 0xa386, 0x0200, 0x1130, 0x6018, 0x2068, 0x6813, 0x00ff, + 0x6817, 0xfffd, 0x6010, 0xa005, 0x0130, 0x2068, 0x6807, 0x0000, +- 0x6837, 0x0103, 0x6b32, 0x080c, 0x95dc, 0x003e, 0x00de, 0x0005, ++ 0x6837, 0x0103, 0x6b32, 0x080c, 0x95fc, 0x003e, 0x00de, 0x0005, + 0x0016, 0x20a9, 0x002a, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, + 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a, 0x6010, 0xa080, 0x0001, + 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x00e6, 0x6010, 0x2004, +- 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95dc, 0x001e, 0x0005, ++ 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95fc, 0x001e, 0x0005, + 0x0016, 0x2009, 0x0000, 0x7030, 0xa086, 0x0100, 0x0140, 0x7038, + 0xa084, 0x00ff, 0x800c, 0x703c, 0xa084, 0x00ff, 0x8004, 0xa080, + 0x0004, 0xa108, 0x21a8, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, +- 0x0002, 0x20a0, 0x080c, 0x4ecb, 0x00e6, 0x080c, 0xac8a, 0x0140, ++ 0x0002, 0x20a0, 0x080c, 0x4ee4, 0x00e6, 0x080c, 0xacaa, 0x0140, + 0x6010, 0x2070, 0x7007, 0x0000, 0x7034, 0x70b2, 0x7037, 0x0103, +- 0x00ee, 0x080c, 0x95dc, 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, ++ 0x00ee, 0x080c, 0x95fc, 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, + 0x7030, 0xa086, 0x0200, 0x0110, 0x2009, 0x0001, 0x00d6, 0x6010, +- 0xa06d, 0x090c, 0x1519, 0x694a, 0x080c, 0x580a, 0x00de, 0x080c, +- 0x95dc, 0x001e, 0x0005, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2c68, +- 0x0016, 0x2009, 0x0035, 0x080c, 0xb13a, 0x001e, 0x1168, 0x0026, ++ 0xa06d, 0x090c, 0x1519, 0x694a, 0x080c, 0x5823, 0x00de, 0x080c, ++ 0x95fc, 0x001e, 0x0005, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2c68, ++ 0x0016, 0x2009, 0x0035, 0x080c, 0xb15a, 0x001e, 0x1168, 0x0026, + 0x6228, 0x2268, 0x002e, 0x2071, 0xcc8c, 0x6b1c, 0xa386, 0x0003, +- 0x0130, 0xa386, 0x0006, 0x0128, 0x080c, 0x95dc, 0x0020, 0x0031, +- 0x0010, 0x080c, 0x98cc, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6810, +- 0x2078, 0xa186, 0x0015, 0x0904, 0x98b3, 0xa18e, 0x0016, 0x1904, +- 0x98ca, 0x700c, 0xa08c, 0xff00, 0xa186, 0x1700, 0x0120, 0xa186, +- 0x0300, 0x1904, 0x9892, 0x8fff, 0x1138, 0x6800, 0xa086, 0x000f, +- 0x0904, 0x9876, 0x0804, 0x98c8, 0x6808, 0xa086, 0xffff, 0x1904, +- 0x98b5, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x1150, 0x797c, +- 0x7810, 0xa106, 0x1904, 0x98b5, 0x7980, 0x7814, 0xa106, 0x1904, +- 0x98b5, 0x080c, 0xae41, 0x6858, 0x7852, 0x784c, 0xc0dc, 0xc0f4, ++ 0x0130, 0xa386, 0x0006, 0x0128, 0x080c, 0x95fc, 0x0020, 0x0031, ++ 0x0010, 0x080c, 0x98ec, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6810, ++ 0x2078, 0xa186, 0x0015, 0x0904, 0x98d3, 0xa18e, 0x0016, 0x1904, ++ 0x98ea, 0x700c, 0xa08c, 0xff00, 0xa186, 0x1700, 0x0120, 0xa186, ++ 0x0300, 0x1904, 0x98b2, 0x8fff, 0x1138, 0x6800, 0xa086, 0x000f, ++ 0x0904, 0x9896, 0x0804, 0x98e8, 0x6808, 0xa086, 0xffff, 0x1904, ++ 0x98d5, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x1150, 0x797c, ++ 0x7810, 0xa106, 0x1904, 0x98d5, 0x7980, 0x7814, 0xa106, 0x1904, ++ 0x98d5, 0x080c, 0xae61, 0x6858, 0x7852, 0x784c, 0xc0dc, 0xc0f4, + 0xc0d4, 0x784e, 0x0026, 0xa00e, 0x6a14, 0x2001, 0x000a, 0x080c, +- 0x783f, 0x7854, 0xa20a, 0x0208, 0x8011, 0x7a56, 0x82ff, 0x002e, +- 0x1138, 0x00c6, 0x2d60, 0x080c, 0xaa39, 0x00ce, 0x0804, 0x98c8, +- 0x00c6, 0x00d6, 0x2f68, 0x6838, 0xd0fc, 0x1118, 0x080c, 0x4fa6, +- 0x0010, 0x080c, 0x51dd, 0x00de, 0x00ce, 0x1904, 0x98b5, 0x00c6, +- 0x2d60, 0x080c, 0x95dc, 0x00ce, 0x0804, 0x98c8, 0x00c6, 0x080c, +- 0xaf06, 0x0190, 0x6013, 0x0000, 0x6818, 0x601a, 0x080c, 0xb057, +- 0x601f, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x95dc, 0x00ce, +- 0x080c, 0x960c, 0x00ce, 0x04e0, 0x2001, 0xc8ff, 0x2004, 0x683e, ++ 0x7858, 0x7854, 0xa20a, 0x0208, 0x8011, 0x7a56, 0x82ff, 0x002e, ++ 0x1138, 0x00c6, 0x2d60, 0x080c, 0xaa59, 0x00ce, 0x0804, 0x98e8, ++ 0x00c6, 0x00d6, 0x2f68, 0x6838, 0xd0fc, 0x1118, 0x080c, 0x4fbf, ++ 0x0010, 0x080c, 0x51f6, 0x00de, 0x00ce, 0x1904, 0x98d5, 0x00c6, ++ 0x2d60, 0x080c, 0x95fc, 0x00ce, 0x0804, 0x98e8, 0x00c6, 0x080c, ++ 0xaf26, 0x0190, 0x6013, 0x0000, 0x6818, 0x601a, 0x080c, 0xb077, ++ 0x601f, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x95fc, 0x00ce, ++ 0x080c, 0x962c, 0x00ce, 0x04e0, 0x2001, 0xc8ff, 0x2004, 0x683e, + 0x00ce, 0x04b0, 0x7008, 0xa086, 0x000b, 0x11a0, 0x6018, 0x200c, + 0xc1bc, 0x2102, 0x00c6, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, +- 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, ++ 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x79b2, 0x080c, 0x7ead, + 0x00ce, 0x00f0, 0x700c, 0xa086, 0x2a00, 0x1138, 0x2001, 0xc8ff, + 0x2004, 0x683e, 0x00a8, 0x0481, 0x00a8, 0x8fff, 0x090c, 0x1519, + 0x00c6, 0x00d6, 0x2d60, 0x2f68, 0x6837, 0x0103, 0x684b, 0x0003, +- 0x080c, 0xa92d, 0x080c, 0xae41, 0x080c, 0xae4d, 0x00de, 0x00ce, +- 0x080c, 0x95dc, 0x00fe, 0x0005, 0xa186, 0x0015, 0x1128, 0x2001, ++ 0x080c, 0xa94d, 0x080c, 0xae61, 0x080c, 0xae6d, 0x00de, 0x00ce, ++ 0x080c, 0x95fc, 0x00fe, 0x0005, 0xa186, 0x0015, 0x1128, 0x2001, + 0xc8ff, 0x2004, 0x683e, 0x0068, 0xa18e, 0x0016, 0x1160, 0x00c6, +- 0x2d00, 0x2060, 0x080c, 0xc3d5, 0x080c, 0x7103, 0x080c, 0x95dc, +- 0x00ce, 0x080c, 0x95dc, 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, ++ 0x2d00, 0x2060, 0x080c, 0xc3fb, 0x080c, 0x711c, 0x080c, 0x95fc, ++ 0x00ce, 0x080c, 0x95fc, 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, + 0x7c80, 0x7b7c, 0xd2f4, 0x0130, 0x2001, 0xc8ff, 0x2004, 0x683e, +- 0x0804, 0x9946, 0x00c6, 0x2d60, 0x080c, 0xa94d, 0x00ce, 0x6804, ++ 0x0804, 0x9966, 0x00c6, 0x2d60, 0x080c, 0xa96d, 0x00ce, 0x6804, + 0xa086, 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, +- 0x6007, 0x0050, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ce, 0x04f0, ++ 0x6007, 0x0050, 0x080c, 0x79b2, 0x080c, 0x7ead, 0x00ce, 0x04f0, + 0x6800, 0xa086, 0x000f, 0x01c8, 0x8fff, 0x090c, 0x1519, 0x6820, + 0xd0dc, 0x1198, 0x6800, 0xa086, 0x0004, 0x1198, 0x784c, 0xd0ac, + 0x0180, 0x784c, 0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, +@@ -4449,235 +4454,235 @@ unsigned short risc_code01[] = { + 0x00c0, 0x784c, 0xd0b4, 0x1130, 0xd0ac, 0x0db8, 0x784c, 0xd0f4, + 0x1da0, 0x0c38, 0xd2ec, 0x1d88, 0x7024, 0xa306, 0x1118, 0x7020, + 0xa406, 0x0d58, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, +- 0x682e, 0x080c, 0xaf93, 0x080c, 0x7e94, 0x0010, 0x080c, 0x95dc, ++ 0x682e, 0x080c, 0xafb3, 0x080c, 0x7ead, 0x0010, 0x080c, 0x95fc, + 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x6034, +- 0x2068, 0x6a1c, 0xa286, 0x0007, 0x0904, 0x99aa, 0xa286, 0x0002, +- 0x0904, 0x99aa, 0xa286, 0x0000, 0x0904, 0x99aa, 0x6808, 0x6338, +- 0xa306, 0x1904, 0x99aa, 0x2071, 0xcc8c, 0xa186, 0x0015, 0x05e0, ++ 0x2068, 0x6a1c, 0xa286, 0x0007, 0x0904, 0x99ca, 0xa286, 0x0002, ++ 0x0904, 0x99ca, 0xa286, 0x0000, 0x0904, 0x99ca, 0x6808, 0x6338, ++ 0xa306, 0x1904, 0x99ca, 0x2071, 0xcc8c, 0xa186, 0x0015, 0x05e0, + 0xa18e, 0x0016, 0x1190, 0x6030, 0xa084, 0x00ff, 0xa086, 0x0001, + 0x1160, 0x700c, 0xa086, 0x2a00, 0x1140, 0x6034, 0xa080, 0x0008, + 0x200c, 0xc1dd, 0xc1f5, 0x2102, 0x0438, 0x00c6, 0x6034, 0x2060, + 0x6104, 0xa186, 0x004b, 0x01a0, 0xa186, 0x004c, 0x0188, 0xa186, + 0x004d, 0x0170, 0xa186, 0x004e, 0x0158, 0xa186, 0x0052, 0x0140, +- 0x6010, 0x2068, 0x080c, 0xac8a, 0x090c, 0x1519, 0x6853, 0x0003, +- 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, +- 0x080c, 0x7e94, 0x00ce, 0x0030, 0x6034, 0x2070, 0x2001, 0xc8ff, +- 0x2004, 0x703e, 0x080c, 0x95dc, 0x002e, 0x00de, 0x00ee, 0x0005, ++ 0x6010, 0x2068, 0x080c, 0xacaa, 0x090c, 0x1519, 0x6853, 0x0003, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x79b2, ++ 0x080c, 0x7ead, 0x00ce, 0x0030, 0x6034, 0x2070, 0x2001, 0xc8ff, ++ 0x2004, 0x703e, 0x080c, 0x95fc, 0x002e, 0x00de, 0x00ee, 0x0005, + 0x00d6, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, + 0x0015, 0x1558, 0x6018, 0x2068, 0x0156, 0x0036, 0x0026, 0xae90, + 0x000c, 0xa290, 0x0004, 0x20a9, 0x0004, 0xad98, 0x000a, 0x080c, +- 0xa0fc, 0x002e, 0x003e, 0x015e, 0x11d8, 0x0156, 0x0036, 0x0026, ++ 0xa11c, 0x002e, 0x003e, 0x015e, 0x11d8, 0x0156, 0x0036, 0x0026, + 0xae90, 0x000c, 0xa290, 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, +- 0x080c, 0xa0fc, 0x002e, 0x003e, 0x015e, 0x1150, 0x7038, 0x680a, +- 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802, 0x00de, 0x0804, 0x9760, +- 0x080c, 0x2e46, 0x00c6, 0x080c, 0x9586, 0x2f00, 0x601a, 0x6013, ++ 0x080c, 0xa11c, 0x002e, 0x003e, 0x015e, 0x1150, 0x7038, 0x680a, ++ 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802, 0x00de, 0x0804, 0x9780, ++ 0x080c, 0x2e46, 0x00c6, 0x080c, 0x95a6, 0x2f00, 0x601a, 0x6013, + 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, +- 0x0007, 0x080c, 0x5291, 0x080c, 0x52be, 0x080c, 0x79df, 0x080c, +- 0x7e94, 0x00ce, 0x0c10, 0x2100, 0xa1b2, 0x0080, 0x1a0c, 0x1519, +- 0xa1b2, 0x0040, 0x1a04, 0x9a67, 0x0002, 0x9a5b, 0x9a4f, 0x9a5b, +- 0x9a5b, 0x9a5b, 0x9a5b, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, +- 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, +- 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, +- 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a5b, 0x9a4d, 0x9a5b, 0x9a5b, +- 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a5b, 0x9a4d, 0x9a4d, +- 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a5b, +- 0x9a5b, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, 0x9a4d, +- 0x9a4d, 0x9a4d, 0x9a5b, 0x9a4d, 0x9a4d, 0x080c, 0x1519, 0x6003, +- 0x0001, 0x6106, 0x080c, 0x79df, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x7e94, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x79df, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x2600, +- 0x0002, 0x9a5b, 0x9a5b, 0x9a6f, 0x9a5b, 0x9a5b, 0x9a6f, 0x080c, ++ 0x0007, 0x080c, 0x52aa, 0x080c, 0x52d7, 0x080c, 0x79f8, 0x080c, ++ 0x7ead, 0x00ce, 0x0c10, 0x2100, 0xa1b2, 0x0080, 0x1a0c, 0x1519, ++ 0xa1b2, 0x0040, 0x1a04, 0x9a87, 0x0002, 0x9a7b, 0x9a6f, 0x9a7b, ++ 0x9a7b, 0x9a7b, 0x9a7b, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, ++ 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, ++ 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, ++ 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a7b, 0x9a6d, 0x9a7b, 0x9a7b, ++ 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a7b, 0x9a6d, 0x9a6d, ++ 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a7b, ++ 0x9a7b, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, 0x9a6d, ++ 0x9a6d, 0x9a6d, 0x9a7b, 0x9a6d, 0x9a6d, 0x080c, 0x1519, 0x6003, ++ 0x0001, 0x6106, 0x080c, 0x79f8, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x7ead, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x79f8, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x7ead, 0x012e, 0x0005, 0x2600, ++ 0x0002, 0x9a7b, 0x9a7b, 0x9a8f, 0x9a7b, 0x9a7b, 0x9a8f, 0x080c, + 0x1519, 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013, +- 0x0904, 0x9b21, 0xa1b6, 0x0027, 0x1904, 0x9ae7, 0x080c, 0x7db1, +- 0x6004, 0x080c, 0xae77, 0x0190, 0x080c, 0xae88, 0x0904, 0x9ae1, +- 0xa08e, 0x0021, 0x0904, 0x9ae4, 0xa08e, 0x0022, 0x0904, 0x9ae1, +- 0xa08e, 0x003d, 0x0904, 0x9ae4, 0x0804, 0x9ada, 0x080c, 0x2e6c, +- 0x2001, 0x0007, 0x080c, 0x5291, 0x6018, 0xa080, 0x0028, 0x200c, +- 0x080c, 0x9c02, 0xa186, 0x007e, 0x1148, 0x2001, 0xc635, 0x2014, +- 0xc285, 0x080c, 0x5f22, 0x1108, 0xc2ad, 0x2202, 0x0016, 0x0026, +- 0x0036, 0x2110, 0x0026, 0x2019, 0x0028, 0x080c, 0x912b, 0x002e, +- 0x080c, 0xc4d7, 0x003e, 0x002e, 0x001e, 0x0016, 0x0026, 0x0036, +- 0x2110, 0x2019, 0x0028, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, +- 0x080c, 0x7a0e, 0x00c6, 0x6018, 0xa065, 0x0110, 0x080c, 0x553e, +- 0x00ce, 0x2c08, 0x080c, 0xbeea, 0x007e, 0x003e, 0x002e, 0x001e, +- 0x080c, 0x5300, 0x080c, 0xb04f, 0x080c, 0x95dc, 0x080c, 0x7e94, +- 0x0005, 0x080c, 0x9c02, 0x0cb0, 0x080c, 0x9c30, 0x0c98, 0xa186, +- 0x0014, 0x1db0, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x080c, 0xae77, ++ 0x0904, 0x9b41, 0xa1b6, 0x0027, 0x1904, 0x9b07, 0x080c, 0x7dca, ++ 0x6004, 0x080c, 0xae97, 0x0190, 0x080c, 0xaea8, 0x0904, 0x9b01, ++ 0xa08e, 0x0021, 0x0904, 0x9b04, 0xa08e, 0x0022, 0x0904, 0x9b01, ++ 0xa08e, 0x003d, 0x0904, 0x9b04, 0x0804, 0x9afa, 0x080c, 0x2e6c, ++ 0x2001, 0x0007, 0x080c, 0x52aa, 0x6018, 0xa080, 0x0028, 0x200c, ++ 0x080c, 0x9c22, 0xa186, 0x007e, 0x1148, 0x2001, 0xc635, 0x2014, ++ 0xc285, 0x080c, 0x5f3b, 0x1108, 0xc2ad, 0x2202, 0x0016, 0x0026, ++ 0x0036, 0x2110, 0x0026, 0x2019, 0x0028, 0x080c, 0x914b, 0x002e, ++ 0x080c, 0xc4fd, 0x003e, 0x002e, 0x001e, 0x0016, 0x0026, 0x0036, ++ 0x2110, 0x2019, 0x0028, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, ++ 0x080c, 0x7a27, 0x00c6, 0x6018, 0xa065, 0x0110, 0x080c, 0x5557, ++ 0x00ce, 0x2c08, 0x080c, 0xbf10, 0x007e, 0x003e, 0x002e, 0x001e, ++ 0x080c, 0x5319, 0x080c, 0xb06f, 0x080c, 0x95fc, 0x080c, 0x7ead, ++ 0x0005, 0x080c, 0x9c22, 0x0cb0, 0x080c, 0x9c50, 0x0c98, 0xa186, ++ 0x0014, 0x1db0, 0x080c, 0x7dca, 0x080c, 0x2e46, 0x080c, 0xae97, + 0x1188, 0x080c, 0x2e6c, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, +- 0x9c02, 0xa186, 0x007e, 0x1128, 0x2001, 0xc635, 0x200c, 0xc185, +- 0x2102, 0x08c0, 0x080c, 0xae88, 0x1118, 0x080c, 0x9c02, 0x0890, ++ 0x9c22, 0xa186, 0x007e, 0x1128, 0x2001, 0xc635, 0x200c, 0xc185, ++ 0x2102, 0x08c0, 0x080c, 0xaea8, 0x1118, 0x080c, 0x9c22, 0x0890, + 0x6004, 0xa08e, 0x0032, 0x1158, 0x00e6, 0x00f6, 0x2071, 0xc6a2, + 0x2079, 0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x0818, 0x6004, +- 0xa08e, 0x0021, 0x0d50, 0xa08e, 0x0022, 0x090c, 0x9c02, 0x0804, +- 0x9ada, 0xa0b2, 0x0040, 0x1a04, 0x9be4, 0x2008, 0x0002, 0x9b69, +- 0x9b6a, 0x9b6d, 0x9b70, 0x9b73, 0x9b76, 0x9b67, 0x9b67, 0x9b67, +- 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, +- 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, +- 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b79, 0x9b88, 0x9b67, +- 0x9b8a, 0x9b88, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b88, +- 0x9b88, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, 0x9b67, +- 0x9b67, 0x9bc4, 0x9b88, 0x9b67, 0x9b84, 0x9b67, 0x9b67, 0x9b67, +- 0x9b85, 0x9b67, 0x9b67, 0x9b67, 0x9b88, 0x9bbb, 0x9b67, 0x080c, ++ 0xa08e, 0x0021, 0x0d50, 0xa08e, 0x0022, 0x090c, 0x9c22, 0x0804, ++ 0x9afa, 0xa0b2, 0x0040, 0x1a04, 0x9c04, 0x2008, 0x0002, 0x9b89, ++ 0x9b8a, 0x9b8d, 0x9b90, 0x9b93, 0x9b96, 0x9b87, 0x9b87, 0x9b87, ++ 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, ++ 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, ++ 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b99, 0x9ba8, 0x9b87, ++ 0x9baa, 0x9ba8, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9ba8, ++ 0x9ba8, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, 0x9b87, ++ 0x9b87, 0x9be4, 0x9ba8, 0x9b87, 0x9ba4, 0x9b87, 0x9b87, 0x9b87, ++ 0x9ba5, 0x9b87, 0x9b87, 0x9b87, 0x9ba8, 0x9bdb, 0x9b87, 0x080c, + 0x1519, 0x00f0, 0x2001, 0x000b, 0x0460, 0x2001, 0x0003, 0x0448, + 0x2001, 0x0005, 0x0430, 0x2001, 0x0001, 0x0418, 0x2001, 0x0009, +- 0x0400, 0x080c, 0x7db1, 0x6003, 0x0005, 0x2001, 0xc8ff, 0x2004, +- 0x603e, 0x080c, 0x7e94, 0x00a0, 0x0018, 0x0010, 0x080c, 0x5291, +- 0x0804, 0x9bd5, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004, 0x6016, +- 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003, 0x0004, 0x080c, 0x7e94, +- 0x0005, 0x080c, 0x5291, 0x080c, 0x7db1, 0x6003, 0x0002, 0x2001, ++ 0x0400, 0x080c, 0x7dca, 0x6003, 0x0005, 0x2001, 0xc8ff, 0x2004, ++ 0x603e, 0x080c, 0x7ead, 0x00a0, 0x0018, 0x0010, 0x080c, 0x52aa, ++ 0x0804, 0x9bf5, 0x080c, 0x7dca, 0x2001, 0xc8fd, 0x2004, 0x6016, ++ 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003, 0x0004, 0x080c, 0x7ead, ++ 0x0005, 0x080c, 0x52aa, 0x080c, 0x7dca, 0x6003, 0x0002, 0x2001, + 0xc8ff, 0x2004, 0x603e, 0x0036, 0x2019, 0xc65d, 0x2304, 0xa084, + 0xff00, 0x1120, 0x2001, 0xc8fd, 0x201c, 0x0040, 0x8007, 0xa09a, + 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e, +- 0x080c, 0x7e94, 0x08e8, 0x080c, 0x7db1, 0x080c, 0xb04f, 0x080c, +- 0x95dc, 0x080c, 0x7e94, 0x08a0, 0x00e6, 0x00f6, 0x2071, 0xc6a2, +- 0x2079, 0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x080c, 0x7db1, +- 0x080c, 0x95dc, 0x080c, 0x7e94, 0x0818, 0x080c, 0x7db1, 0x2001, ++ 0x080c, 0x7ead, 0x08e8, 0x080c, 0x7dca, 0x080c, 0xb06f, 0x080c, ++ 0x95fc, 0x080c, 0x7ead, 0x08a0, 0x00e6, 0x00f6, 0x2071, 0xc6a2, ++ 0x2079, 0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x080c, 0x7dca, ++ 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0818, 0x080c, 0x7dca, 0x2001, + 0xc8ff, 0x2004, 0x603e, 0x6003, 0x0002, 0x2001, 0xc8fd, 0x2004, +- 0x6016, 0x080c, 0x7e94, 0x0005, 0x2600, 0x2008, 0x0002, 0x9bef, +- 0x9bd5, 0x9bed, 0x9bd5, 0x9bd5, 0x9bed, 0x080c, 0x1519, 0x080c, +- 0x7db1, 0x00d6, 0x6010, 0x2068, 0x080c, 0x768f, 0x1118, 0x080c, +- 0x1619, 0x0010, 0x080c, 0x580a, 0x00de, 0x080c, 0x95dc, 0x080c, +- 0x7e94, 0x0005, 0x00e6, 0x0026, 0x0016, 0x080c, 0xac8a, 0x0508, ++ 0x6016, 0x080c, 0x7ead, 0x0005, 0x2600, 0x2008, 0x0002, 0x9c0f, ++ 0x9bf5, 0x9c0d, 0x9bf5, 0x9bf5, 0x9c0d, 0x080c, 0x1519, 0x080c, ++ 0x7dca, 0x00d6, 0x6010, 0x2068, 0x080c, 0x76a8, 0x1118, 0x080c, ++ 0x1619, 0x0010, 0x080c, 0x5823, 0x00de, 0x080c, 0x95fc, 0x080c, ++ 0x7ead, 0x0005, 0x00e6, 0x0026, 0x0016, 0x080c, 0xacaa, 0x0508, + 0x6010, 0x2070, 0x7034, 0xa086, 0x0139, 0x1148, 0x2001, 0x0030, +- 0x2009, 0x0000, 0x2011, 0x4005, 0x080c, 0xb106, 0x0090, 0x7038, ++ 0x2009, 0x0000, 0x2011, 0x4005, 0x080c, 0xb126, 0x0090, 0x7038, + 0xd0fc, 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0xa08e, 0x0021, + 0x0160, 0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, 0x0103, 0x7033, + 0x0100, 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc8, + 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, + 0x7023, 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, + 0xa084, 0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0x6604, +- 0xa6b6, 0x0043, 0x1120, 0x080c, 0xb0c2, 0x0804, 0x9ca9, 0x6604, +- 0xa6b6, 0x0033, 0x1120, 0x080c, 0xb072, 0x0804, 0x9ca9, 0x6604, +- 0xa6b6, 0x0028, 0x1120, 0x080c, 0xaeb8, 0x0804, 0x9ca9, 0x6604, +- 0xa6b6, 0x0029, 0x1120, 0x080c, 0xaecf, 0x0804, 0x9ca9, 0x6604, +- 0xa6b6, 0x001f, 0x1118, 0x080c, 0x9746, 0x04d8, 0x6604, 0xa6b6, +- 0x0000, 0x1118, 0x080c, 0x99b0, 0x04a0, 0x6604, 0xa6b6, 0x0022, +- 0x1118, 0x080c, 0x976e, 0x0468, 0x6604, 0xa6b6, 0x0035, 0x1118, +- 0x080c, 0x97eb, 0x0430, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, +- 0x994c, 0x00f8, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x9788, +- 0x00c0, 0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x97a8, 0x0088, +- 0x6604, 0xa6b6, 0x0041, 0x1118, 0x080c, 0x97d5, 0x0050, 0xa1b6, ++ 0xa6b6, 0x0043, 0x1120, 0x080c, 0xb0e2, 0x0804, 0x9cc9, 0x6604, ++ 0xa6b6, 0x0033, 0x1120, 0x080c, 0xb092, 0x0804, 0x9cc9, 0x6604, ++ 0xa6b6, 0x0028, 0x1120, 0x080c, 0xaed8, 0x0804, 0x9cc9, 0x6604, ++ 0xa6b6, 0x0029, 0x1120, 0x080c, 0xaeef, 0x0804, 0x9cc9, 0x6604, ++ 0xa6b6, 0x001f, 0x1118, 0x080c, 0x9766, 0x04d8, 0x6604, 0xa6b6, ++ 0x0000, 0x1118, 0x080c, 0x99d0, 0x04a0, 0x6604, 0xa6b6, 0x0022, ++ 0x1118, 0x080c, 0x978e, 0x0468, 0x6604, 0xa6b6, 0x0035, 0x1118, ++ 0x080c, 0x980b, 0x0430, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, ++ 0x996c, 0x00f8, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x97a8, ++ 0x00c0, 0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x97c8, 0x0088, ++ 0x6604, 0xa6b6, 0x0041, 0x1118, 0x080c, 0x97f5, 0x0050, 0xa1b6, + 0x0015, 0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, 0x1118, 0x0804, +- 0x9e8c, 0x0005, 0x080c, 0x9623, 0x0ce0, 0x9cd3, 0x9cd6, 0x9cd3, +- 0x9d1a, 0x9cd3, 0x9e13, 0x9e9a, 0x9cd3, 0x9cd3, 0x9e64, 0x9cd3, +- 0x9e7a, 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, 0x3e20, ++ 0x9eac, 0x0005, 0x080c, 0x9643, 0x0ce0, 0x9cf3, 0x9cf6, 0x9cf3, ++ 0x9d3a, 0x9cf3, 0x9e33, 0x9eba, 0x9cf3, 0x9cf3, 0x9e84, 0x9cf3, ++ 0x9e9a, 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, 0x3e20, + 0x2c10, 0x080c, 0x1870, 0x0005, 0x00e6, 0xacf0, 0x0004, 0x2e74, +- 0x7000, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95dc, 0x0005, +- 0x080c, 0x95dc, 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, +- 0xc600, 0x7084, 0xa086, 0x0074, 0x1530, 0x080c, 0xbec1, 0x11b0, ++ 0x7000, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95fc, 0x0005, ++ 0x080c, 0x95fc, 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, ++ 0xc600, 0x7084, 0xa086, 0x0074, 0x1530, 0x080c, 0xbee7, 0x11b0, + 0x00d6, 0x6018, 0x2068, 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, + 0x0110, 0xc0c5, 0x6802, 0x00e9, 0x00de, 0x2001, 0x0006, 0x080c, +- 0x5291, 0x080c, 0x2e6c, 0x080c, 0x95dc, 0x0088, 0x2001, 0x000a, +- 0x080c, 0x5291, 0x080c, 0x2e6c, 0x6003, 0x0001, 0x6007, 0x0001, +- 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9dee, 0x00ee, +- 0x0005, 0x6800, 0xd084, 0x0168, 0x2001, 0x0000, 0x080c, 0x527f, ++ 0x52aa, 0x080c, 0x2e6c, 0x080c, 0x95fc, 0x0088, 0x2001, 0x000a, ++ 0x080c, 0x52aa, 0x080c, 0x2e6c, 0x6003, 0x0001, 0x6007, 0x0001, ++ 0x080c, 0x79f8, 0x0020, 0x2001, 0x0001, 0x080c, 0x9e0e, 0x00ee, ++ 0x0005, 0x6800, 0xd084, 0x0168, 0x2001, 0x0000, 0x080c, 0x5298, + 0x2069, 0xc652, 0x6804, 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, +- 0x52be, 0x0005, 0x00d6, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, +- 0x1904, 0x9de9, 0x6018, 0x2068, 0x6aa0, 0xa286, 0x007e, 0x1120, +- 0x080c, 0x9fbc, 0x0804, 0x9d88, 0x080c, 0x9fb2, 0x6018, 0x2068, ++ 0x52d7, 0x0005, 0x00d6, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, ++ 0x1904, 0x9e09, 0x6018, 0x2068, 0x6aa0, 0xa286, 0x007e, 0x1120, ++ 0x080c, 0x9fdc, 0x0804, 0x9da8, 0x080c, 0x9fd2, 0x6018, 0x2068, + 0xa080, 0x0028, 0x2014, 0xa286, 0x0080, 0x11c0, 0x6813, 0x00ff, + 0x6817, 0xfffc, 0x6010, 0xa005, 0x0138, 0x2068, 0x6807, 0x0000, +- 0x6837, 0x0103, 0x6833, 0x0200, 0x2001, 0x0006, 0x080c, 0x5291, +- 0x080c, 0x2e6c, 0x080c, 0x95dc, 0x0804, 0x9dec, 0x00e6, 0x2071, ++ 0x6837, 0x0103, 0x6833, 0x0200, 0x2001, 0x0006, 0x080c, 0x52aa, ++ 0x080c, 0x2e6c, 0x080c, 0x95fc, 0x0804, 0x9e0c, 0x00e6, 0x2071, + 0xc635, 0x2e04, 0xd09c, 0x0188, 0x2071, 0xcc80, 0x7108, 0x720c, + 0xa18c, 0x00ff, 0x1118, 0xa284, 0xff00, 0x0138, 0x6018, 0x2070, + 0x70a0, 0xd0bc, 0x1110, 0x7112, 0x7216, 0x00ee, 0x6010, 0xa005, + 0x0198, 0x2068, 0x6838, 0xd0f4, 0x0178, 0x6834, 0xa084, 0x00ff, + 0xa086, 0x0039, 0x1958, 0x2001, 0x0000, 0x2009, 0x0000, 0x2011, +- 0x4000, 0x080c, 0xb106, 0x0840, 0x2001, 0x0004, 0x080c, 0x5291, +- 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x79df, 0x0804, 0x9dec, +- 0x685c, 0xd0e4, 0x01d8, 0x080c, 0xb002, 0x080c, 0x5f22, 0x0118, +- 0xd0dc, 0x1904, 0x9d44, 0x2011, 0xc635, 0x2204, 0xc0ad, 0x2012, ++ 0x4000, 0x080c, 0xb126, 0x0840, 0x2001, 0x0004, 0x080c, 0x52aa, ++ 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x79f8, 0x0804, 0x9e0c, ++ 0x685c, 0xd0e4, 0x01d8, 0x080c, 0xb022, 0x080c, 0x5f3b, 0x0118, ++ 0xd0dc, 0x1904, 0x9d64, 0x2011, 0xc635, 0x2204, 0xc0ad, 0x2012, + 0x2001, 0xc8d6, 0x2004, 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, +- 0x080c, 0x2a1c, 0x78e2, 0x00fe, 0x0804, 0x9d44, 0x080c, 0xb038, +- 0x2011, 0xc635, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xc016, +- 0x000e, 0x1904, 0x9d44, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, +- 0x5291, 0x2001, 0x0000, 0x080c, 0x527f, 0x00c6, 0x2009, 0x00ef, ++ 0x080c, 0x2a1c, 0x78e2, 0x00fe, 0x0804, 0x9d64, 0x080c, 0xb058, ++ 0x2011, 0xc635, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xc03c, ++ 0x000e, 0x1904, 0x9d64, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, ++ 0x52aa, 0x2001, 0x0000, 0x080c, 0x5298, 0x00c6, 0x2009, 0x00ef, + 0x00f6, 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, 0x00fe, 0x080c, + 0x29f1, 0x00f6, 0x2079, 0xc600, 0x7976, 0x2100, 0x2009, 0x0000, +- 0x080c, 0x29c7, 0x7952, 0x00fe, 0x8108, 0x080c, 0x52e1, 0x2c00, +- 0x00ce, 0x1904, 0x9d44, 0x601a, 0x2001, 0x0002, 0x080c, 0x5291, +- 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, ++ 0x080c, 0x29c7, 0x7952, 0x00fe, 0x8108, 0x080c, 0x52fa, 0x2c00, ++ 0x00ce, 0x1904, 0x9d64, 0x601a, 0x2001, 0x0002, 0x080c, 0x52aa, ++ 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79f8, + 0x0018, 0x2001, 0x0001, 0x0011, 0x00de, 0x0005, 0x0066, 0x2030, +- 0xa005, 0x0170, 0x2001, 0x0007, 0x080c, 0x5291, 0x2001, 0xc600, +- 0x2004, 0xa086, 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x52be, ++ 0xa005, 0x0170, 0x2001, 0x0007, 0x080c, 0x52aa, 0x2001, 0xc600, ++ 0x2004, 0xa086, 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x52d7, + 0x2600, 0xa005, 0x1150, 0x6010, 0xa080, 0x000e, 0x2004, 0xd0fc, +- 0x1120, 0x2011, 0x8014, 0x080c, 0x407d, 0x080c, 0x2e6c, 0x080c, +- 0x95dc, 0x006e, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xc600, ++ 0x1120, 0x2011, 0x8014, 0x080c, 0x4096, 0x080c, 0x2e6c, 0x080c, ++ 0x95fc, 0x006e, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xc600, + 0x7084, 0xa086, 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, 0x1128, +- 0x6010, 0xa005, 0x1110, 0x080c, 0x40ef, 0x00d6, 0x6018, 0x2068, +- 0x080c, 0x53df, 0x080c, 0x9d09, 0x00de, 0x080c, 0xa06b, 0x1550, ++ 0x6010, 0xa005, 0x1110, 0x080c, 0x4108, 0x00d6, 0x6018, 0x2068, ++ 0x080c, 0x53f8, 0x080c, 0x9d29, 0x00de, 0x080c, 0xa08b, 0x1550, + 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, 0x2001, +- 0x0006, 0x080c, 0x5291, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, ++ 0x0006, 0x080c, 0x52aa, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, + 0xa084, 0x00ff, 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, 0x2009, +- 0x0000, 0x2011, 0x4000, 0x080c, 0xb106, 0x0030, 0x7007, 0x0000, ++ 0x0000, 0x2011, 0x4000, 0x080c, 0xb126, 0x0030, 0x7007, 0x0000, + 0x7037, 0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2e6c, 0x080c, +- 0x95dc, 0x0030, 0x080c, 0x9c02, 0x2001, 0x0000, 0x080c, 0x9dee, ++ 0x95fc, 0x0030, 0x080c, 0x9c22, 0x2001, 0x0000, 0x080c, 0x9e0e, + 0x001e, 0x002e, 0x00ee, 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, +- 0x0014, 0x1158, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, +- 0x6007, 0x0001, 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, +- 0x9dee, 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0004, 0x1138, +- 0x2001, 0x0007, 0x080c, 0x5291, 0x080c, 0x95dc, 0x0020, 0x2001, +- 0x0001, 0x080c, 0x9dee, 0x0005, 0x000b, 0x0005, 0x9cd3, 0x9ea5, +- 0x9cd3, 0x9edb, 0x9cd3, 0x9f68, 0x9e9a, 0x9cd0, 0x9cd3, 0x9f7d, +- 0x9cd3, 0x9f8f, 0x6604, 0xa686, 0x0003, 0x0904, 0x9e13, 0xa6b6, +- 0x001e, 0x1110, 0x080c, 0x95dc, 0x0005, 0x00d6, 0x00c6, 0x080c, +- 0x9fa1, 0x1178, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, +- 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, ++ 0x0014, 0x1158, 0x2001, 0x0002, 0x080c, 0x52aa, 0x6003, 0x0001, ++ 0x6007, 0x0001, 0x080c, 0x79f8, 0x0020, 0x2001, 0x0001, 0x080c, ++ 0x9e0e, 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0004, 0x1138, ++ 0x2001, 0x0007, 0x080c, 0x52aa, 0x080c, 0x95fc, 0x0020, 0x2001, ++ 0x0001, 0x080c, 0x9e0e, 0x0005, 0x000b, 0x0005, 0x9cf3, 0x9ec5, ++ 0x9cf3, 0x9efb, 0x9cf3, 0x9f88, 0x9eba, 0x9cf0, 0x9cf3, 0x9f9d, ++ 0x9cf3, 0x9faf, 0x6604, 0xa686, 0x0003, 0x0904, 0x9e33, 0xa6b6, ++ 0x001e, 0x1110, 0x080c, 0x95fc, 0x0005, 0x00d6, 0x00c6, 0x080c, ++ 0x9fc1, 0x1178, 0x2001, 0x0000, 0x080c, 0x5298, 0x2001, 0x0002, ++ 0x080c, 0x52aa, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79f8, + 0x00f8, 0x2009, 0xcc8e, 0x2104, 0xa086, 0x0009, 0x1160, 0x6018, + 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0170, 0x8001, 0x6842, + 0x6017, 0x000a, 0x0068, 0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, +- 0xa086, 0x1900, 0x1108, 0x08d0, 0x2001, 0x0001, 0x080c, 0x9dee, +- 0x00ce, 0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x9faf, ++ 0xa086, 0x1900, 0x1108, 0x08d0, 0x2001, 0x0001, 0x080c, 0x9e0e, ++ 0x00ce, 0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x9fcf, + 0x00d6, 0x2069, 0xc8e5, 0x2d04, 0xa005, 0x0168, 0x6018, 0x2068, + 0x68a0, 0xa086, 0x007e, 0x1138, 0x2069, 0xc61d, 0x2d04, 0x8000, + 0x206a, 0x00de, 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, 0x080c, +- 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, +- 0x0002, 0x080c, 0x79df, 0x0490, 0x00d6, 0x6010, 0x2068, 0x080c, +- 0xac8a, 0x00de, 0x0108, 0x6a34, 0x080c, 0x9c02, 0x2009, 0xcc8e, ++ 0x5298, 0x2001, 0x0002, 0x080c, 0x52aa, 0x6003, 0x0001, 0x6007, ++ 0x0002, 0x080c, 0x79f8, 0x0490, 0x00d6, 0x6010, 0x2068, 0x080c, ++ 0xacaa, 0x00de, 0x0108, 0x6a34, 0x080c, 0x9c22, 0x2009, 0xcc8e, + 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0510, 0xa686, 0x000b, + 0x01c8, 0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, 0x1118, 0xa686, + 0x0009, 0x01b0, 0xa086, 0x1900, 0x1168, 0xa686, 0x0009, 0x0180, +- 0x2001, 0x0004, 0x080c, 0x5291, 0x2001, 0x0028, 0x6016, 0x6007, +- 0x004b, 0x0020, 0x2001, 0x0001, 0x080c, 0x9dee, 0x002e, 0x0005, +- 0x00d6, 0xa286, 0x0139, 0x0160, 0x6010, 0x2068, 0x080c, 0xac8a, ++ 0x2001, 0x0004, 0x080c, 0x52aa, 0x2001, 0x0028, 0x6016, 0x6007, ++ 0x004b, 0x0020, 0x2001, 0x0001, 0x080c, 0x9e0e, 0x002e, 0x0005, ++ 0x00d6, 0xa286, 0x0139, 0x0160, 0x6010, 0x2068, 0x080c, 0xacaa, + 0x0148, 0x6834, 0xa086, 0x0139, 0x0118, 0x6838, 0xd0fc, 0x0110, + 0x00de, 0x0c40, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, + 0x0140, 0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x00de, + 0x08e8, 0x68a0, 0xa086, 0x007e, 0x1138, 0x00e6, 0x2071, 0xc600, +- 0x080c, 0x4f02, 0x00ee, 0x0010, 0x080c, 0x2e46, 0x00de, 0x0850, +- 0x080c, 0x9faf, 0x1158, 0x2001, 0x0004, 0x080c, 0x5291, 0x6003, +- 0x0001, 0x6007, 0x0003, 0x080c, 0x79df, 0x0030, 0x080c, 0x9c02, +- 0x2001, 0x0000, 0x080c, 0x9dee, 0x0005, 0x0489, 0x1158, 0x2001, +- 0x0008, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, +- 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9dee, 0x0005, 0x00f9, +- 0x1158, 0x2001, 0x000a, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, +- 0x0001, 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9dee, ++ 0x080c, 0x4f1b, 0x00ee, 0x0010, 0x080c, 0x2e46, 0x00de, 0x0850, ++ 0x080c, 0x9fcf, 0x1158, 0x2001, 0x0004, 0x080c, 0x52aa, 0x6003, ++ 0x0001, 0x6007, 0x0003, 0x080c, 0x79f8, 0x0030, 0x080c, 0x9c22, ++ 0x2001, 0x0000, 0x080c, 0x9e0e, 0x0005, 0x0489, 0x1158, 0x2001, ++ 0x0008, 0x080c, 0x52aa, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, ++ 0x79f8, 0x0020, 0x2001, 0x0001, 0x080c, 0x9e0e, 0x0005, 0x00f9, ++ 0x1158, 0x2001, 0x000a, 0x080c, 0x52aa, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x79f8, 0x0020, 0x2001, 0x0001, 0x080c, 0x9e0e, + 0x0005, 0x2009, 0xcc8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, + 0xcc8f, 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, + 0x0001, 0x0005, 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, +- 0x534c, 0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, ++ 0x5365, 0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, + 0x0016, 0x6018, 0x2068, 0x2071, 0xc635, 0x2e04, 0xa085, 0x0003, +- 0x2072, 0x080c, 0xa040, 0x0560, 0x2009, 0xc635, 0x2104, 0xc0cd, ++ 0x2072, 0x080c, 0xa060, 0x0560, 0x2009, 0xc635, 0x2104, 0xc0cd, + 0x200a, 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, +- 0x2009, 0x002a, 0x080c, 0xc183, 0x2001, 0xc60c, 0x200c, 0xc195, ++ 0x2009, 0x002a, 0x080c, 0xc1a9, 0x2001, 0xc60c, 0x200c, 0xc195, + 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x080c, 0x2e19, 0x2071, + 0xc600, 0x080c, 0x2c62, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, +- 0x007f, 0x080c, 0x2f41, 0x8108, 0x1f04, 0x9ff1, 0x015e, 0x00ce, +- 0x080c, 0x9fb2, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xcc80, ++ 0x007f, 0x080c, 0x2f41, 0x8108, 0x1f04, 0xa011, 0x015e, 0x00ce, ++ 0x080c, 0x9fd2, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xcc80, + 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xc61c, 0x206a, + 0x78e6, 0x0006, 0x8e70, 0x2e04, 0x2069, 0xc61d, 0x206a, 0x78ea, + 0x7832, 0x7836, 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, + 0xc628, 0x200a, 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x29f1, +- 0x080c, 0x5f22, 0x0170, 0x2069, 0xcc8e, 0x2071, 0xc8f9, 0x6810, ++ 0x080c, 0x5f3b, 0x0170, 0x2069, 0xcc8e, 0x2071, 0xc8f9, 0x6810, + 0x2072, 0x6814, 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, +- 0xb002, 0x0040, 0x2001, 0x0006, 0x080c, 0x5291, 0x080c, 0x2e6c, +- 0x080c, 0x95dc, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, ++ 0xb022, 0x0040, 0x2001, 0x0006, 0x080c, 0x52aa, 0x080c, 0x2e6c, ++ 0x080c, 0x95fc, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, + 0x0026, 0x0036, 0x00e6, 0x0156, 0x2019, 0xc628, 0x231c, 0x83ff, + 0x01e8, 0x2071, 0xcc80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, + 0xff00, 0xa205, 0xa306, 0x1190, 0x2011, 0xcc96, 0xad98, 0x000a, +- 0x20a9, 0x0004, 0x080c, 0xa0fc, 0x1148, 0x2011, 0xcc9a, 0xad98, +- 0x0006, 0x20a9, 0x0004, 0x080c, 0xa0fc, 0x1100, 0x015e, 0x00ee, ++ 0x20a9, 0x0004, 0x080c, 0xa11c, 0x1148, 0x2011, 0xcc9a, 0xad98, ++ 0x0006, 0x20a9, 0x0004, 0x080c, 0xa11c, 0x1100, 0x015e, 0x00ee, + 0x003e, 0x002e, 0x0005, 0x00e6, 0x2071, 0xcc8c, 0x7004, 0xa086, + 0x0014, 0x11a8, 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, + 0x0160, 0xa084, 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, +@@ -4685,103 +4690,103 @@ unsigned short risc_code01[] = { + 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, + 0x0006, 0x0126, 0x2091, 0x8000, 0x2029, 0xc930, 0x252c, 0x2021, + 0xc936, 0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7248, 0x7068, +- 0xa202, 0x16f0, 0x080c, 0xc1ab, 0x05a0, 0x671c, 0xa786, 0x0001, ++ 0xa202, 0x16f0, 0x080c, 0xc1d1, 0x05a0, 0x671c, 0xa786, 0x0001, + 0x0580, 0xa786, 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, + 0xac06, 0x0538, 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, +- 0x1953, 0xa786, 0x0008, 0x1148, 0x080c, 0xae88, 0x1130, 0x00ce, +- 0x080c, 0x9c02, 0x080c, 0xae4d, 0x00a0, 0x6010, 0x2068, 0x080c, +- 0xac8a, 0x0160, 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, +- 0x6847, 0x0000, 0x080c, 0x580a, 0x080c, 0xae41, 0x080c, 0xae4d, +- 0x00ce, 0xace0, 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0xa09e, ++ 0x1953, 0xa786, 0x0008, 0x1148, 0x080c, 0xaea8, 0x1130, 0x00ce, ++ 0x080c, 0x9c22, 0x080c, 0xae6d, 0x00a0, 0x6010, 0x2068, 0x080c, ++ 0xacaa, 0x0160, 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, ++ 0x6847, 0x0000, 0x080c, 0x5823, 0x080c, 0xae61, 0x080c, 0xae6d, ++ 0x00ce, 0xace0, 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0xa0be, + 0x012e, 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, +- 0x00ee, 0x0005, 0xa786, 0x0006, 0x1118, 0x080c, 0xc134, 0x0c30, +- 0xa786, 0x0009, 0x1128, 0x2009, 0x0106, 0x080c, 0x960c, 0x0c00, ++ 0x00ee, 0x0005, 0xa786, 0x0006, 0x1118, 0x080c, 0xc15a, 0x0c30, ++ 0xa786, 0x0009, 0x1128, 0x2009, 0x0106, 0x080c, 0x962c, 0x0c00, + 0xa786, 0x000a, 0x09a0, 0x0888, 0x220c, 0x2304, 0xa106, 0x1130, +- 0x8210, 0x8318, 0x1f04, 0xa0fc, 0xa006, 0x0005, 0x2304, 0xa102, ++ 0x8210, 0x8318, 0x1f04, 0xa11c, 0xa006, 0x0005, 0x2304, 0xa102, + 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, + 0x0005, 0x220c, 0x810f, 0x2304, 0xa106, 0x1130, 0x8210, 0x8318, +- 0x1f04, 0xa111, 0xa006, 0x0005, 0xa18d, 0x0001, 0x0005, 0x6004, +- 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x080c, 0xae77, 0x0120, 0x080c, +- 0xae88, 0x0168, 0x0028, 0x080c, 0x2e6c, 0x080c, 0xae88, 0x0138, +- 0x080c, 0x7db1, 0x080c, 0x95dc, 0x080c, 0x7e94, 0x0005, 0x080c, +- 0x9c02, 0x0cb0, 0xa182, 0x0040, 0x0002, 0xa150, 0xa150, 0xa150, +- 0xa150, 0xa150, 0xa150, 0xa150, 0xa150, 0xa150, 0xa150, 0xa150, +- 0xa152, 0xa152, 0xa152, 0xa152, 0xa150, 0xa150, 0xa150, 0xa152, ++ 0x1f04, 0xa131, 0xa006, 0x0005, 0xa18d, 0x0001, 0x0005, 0x6004, ++ 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x080c, 0xae97, 0x0120, 0x080c, ++ 0xaea8, 0x0168, 0x0028, 0x080c, 0x2e6c, 0x080c, 0xaea8, 0x0138, ++ 0x080c, 0x7dca, 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0005, 0x080c, ++ 0x9c22, 0x0cb0, 0xa182, 0x0040, 0x0002, 0xa170, 0xa170, 0xa170, ++ 0xa170, 0xa170, 0xa170, 0xa170, 0xa170, 0xa170, 0xa170, 0xa170, ++ 0xa172, 0xa172, 0xa172, 0xa172, 0xa170, 0xa170, 0xa170, 0xa172, + 0x080c, 0x1519, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, +- 0x7999, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, +- 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0xa1ec, +- 0xa186, 0x0027, 0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, +- 0x6110, 0x2168, 0x080c, 0xac8a, 0x0168, 0x6837, 0x0103, 0x684b, +- 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x580a, +- 0x080c, 0xae41, 0x00de, 0x080c, 0x95dc, 0x080c, 0x7e94, 0x0005, ++ 0x79b2, 0x0126, 0x2091, 0x8000, 0x080c, 0x7ead, 0x012e, 0x0005, ++ 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0xa20c, ++ 0xa186, 0x0027, 0x11e8, 0x080c, 0x7dca, 0x080c, 0x2e46, 0x00d6, ++ 0x6110, 0x2168, 0x080c, 0xacaa, 0x0168, 0x6837, 0x0103, 0x684b, ++ 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x5823, ++ 0x080c, 0xae61, 0x00de, 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0005, + 0xa186, 0x0014, 0x1120, 0x6004, 0xa082, 0x0040, 0x0428, 0xa186, + 0x0046, 0x0138, 0xa186, 0x0045, 0x0120, 0xa186, 0x0047, 0x190c, + 0x1519, 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, 0x0126, 0x2091, +- 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x7873, 0x002e, 0x001e, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x788c, 0x002e, 0x001e, + 0x000e, 0x012e, 0xe000, 0x6000, 0xa086, 0x0002, 0x1110, 0x0804, +- 0xa22a, 0x080c, 0x9623, 0x0005, 0x0002, 0xa1ca, 0xa1c8, 0xa1c8, +- 0xa1c8, 0xa1c8, 0xa1c8, 0xa1c8, 0xa1c8, 0xa1c8, 0xa1c8, 0xa1c8, +- 0xa1e5, 0xa1e5, 0xa1e5, 0xa1e5, 0xa1c8, 0xa1e5, 0xa1c8, 0xa1e5, +- 0x080c, 0x1519, 0x080c, 0x7db1, 0x00d6, 0x6110, 0x2168, 0x080c, +- 0xac8a, 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, +- 0x6850, 0xc0ec, 0x6852, 0x080c, 0x580a, 0x080c, 0xae41, 0x00de, +- 0x080c, 0x95dc, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, +- 0x95dc, 0x080c, 0x7e94, 0x0005, 0x0002, 0xa202, 0xa200, 0xa200, +- 0xa200, 0xa200, 0xa200, 0xa200, 0xa200, 0xa200, 0xa200, 0xa200, +- 0xa214, 0xa214, 0xa214, 0xa214, 0xa200, 0xa223, 0xa200, 0xa214, +- 0x080c, 0x1519, 0x080c, 0x7db1, 0x2001, 0xc8ff, 0x2004, 0x603e, +- 0x6003, 0x0002, 0x080c, 0x7e94, 0x6010, 0xa088, 0x0013, 0x2104, +- 0xa085, 0x0400, 0x200a, 0x0005, 0x080c, 0x7db1, 0x2001, 0xc8fd, ++ 0xa24a, 0x080c, 0x9643, 0x0005, 0x0002, 0xa1ea, 0xa1e8, 0xa1e8, ++ 0xa1e8, 0xa1e8, 0xa1e8, 0xa1e8, 0xa1e8, 0xa1e8, 0xa1e8, 0xa1e8, ++ 0xa205, 0xa205, 0xa205, 0xa205, 0xa1e8, 0xa205, 0xa1e8, 0xa205, ++ 0x080c, 0x1519, 0x080c, 0x7dca, 0x00d6, 0x6110, 0x2168, 0x080c, ++ 0xacaa, 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, ++ 0x6850, 0xc0ec, 0x6852, 0x080c, 0x5823, 0x080c, 0xae61, 0x00de, ++ 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0005, 0x080c, 0x7dca, 0x080c, ++ 0x95fc, 0x080c, 0x7ead, 0x0005, 0x0002, 0xa222, 0xa220, 0xa220, ++ 0xa220, 0xa220, 0xa220, 0xa220, 0xa220, 0xa220, 0xa220, 0xa220, ++ 0xa234, 0xa234, 0xa234, 0xa234, 0xa220, 0xa243, 0xa220, 0xa234, ++ 0x080c, 0x1519, 0x080c, 0x7dca, 0x2001, 0xc8ff, 0x2004, 0x603e, ++ 0x6003, 0x0002, 0x080c, 0x7ead, 0x6010, 0xa088, 0x0013, 0x2104, ++ 0xa085, 0x0400, 0x200a, 0x0005, 0x080c, 0x7dca, 0x2001, 0xc8fd, + 0x2004, 0x6016, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003, 0x000f, +- 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, 0x95dc, 0x080c, +- 0x7e94, 0x0005, 0xa182, 0x0040, 0x0002, 0xa240, 0xa240, 0xa240, +- 0xa240, 0xa240, 0xa242, 0xa327, 0xa356, 0xa240, 0xa240, 0xa240, +- 0xa240, 0xa240, 0xa240, 0xa240, 0xa240, 0xa240, 0xa240, 0xa240, ++ 0x080c, 0x7ead, 0x0005, 0x080c, 0x7dca, 0x080c, 0x95fc, 0x080c, ++ 0x7ead, 0x0005, 0xa182, 0x0040, 0x0002, 0xa260, 0xa260, 0xa260, ++ 0xa260, 0xa260, 0xa262, 0xa347, 0xa376, 0xa260, 0xa260, 0xa260, ++ 0xa260, 0xa260, 0xa260, 0xa260, 0xa260, 0xa260, 0xa260, 0xa260, + 0x080c, 0x1519, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2071, 0xcc80, + 0x7124, 0x610a, 0x2071, 0xcc8c, 0x6110, 0x2168, 0x7614, 0xa6b4, +- 0x0fff, 0x86ff, 0x0904, 0xa2f0, 0xa68c, 0x0c00, 0x0518, 0x00f6, +- 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x01c8, 0x684c, 0xd0ac, 0x01b0, ++ 0x0fff, 0x86ff, 0x0904, 0xa310, 0xa68c, 0x0c00, 0x0518, 0x00f6, ++ 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x01c8, 0x684c, 0xd0ac, 0x01b0, + 0x6020, 0xd0dc, 0x1198, 0x6850, 0xd0bc, 0x1180, 0x7318, 0x6814, +- 0xa306, 0x1904, 0xa303, 0x731c, 0x6810, 0xa31e, 0x0138, 0xd6d4, +- 0x0904, 0xa303, 0x6b14, 0xa305, 0x1904, 0xa303, 0x7318, 0x6b62, ++ 0xa306, 0x1904, 0xa323, 0x731c, 0x6810, 0xa31e, 0x0138, 0xd6d4, ++ 0x0904, 0xa323, 0x6b14, 0xa305, 0x1904, 0xa323, 0x7318, 0x6b62, + 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0518, 0xa186, +- 0x0028, 0x1128, 0x080c, 0xae66, 0x684b, 0x001c, 0x00e8, 0xd6dc, ++ 0x0028, 0x1128, 0x080c, 0xae86, 0x684b, 0x001c, 0x00e8, 0xd6dc, + 0x01a0, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, 0x6914, 0x6a10, + 0x2100, 0xa205, 0x0148, 0x7018, 0xa106, 0x1118, 0x701c, 0xa206, + 0x0118, 0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0x684b, + 0x0007, 0x0010, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, + 0xd6c4, 0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, 0xcc99, 0x2004, +- 0xa005, 0x1118, 0xc6c4, 0x0804, 0xa251, 0x7328, 0x732c, 0x6b56, ++ 0xa005, 0x1118, 0xc6c4, 0x0804, 0xa271, 0x7328, 0x732c, 0x6b56, + 0x83ff, 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, +- 0x2308, 0x2019, 0xcc98, 0xad90, 0x0019, 0x080c, 0xa93d, 0x003e, +- 0xd6cc, 0x0904, 0xa316, 0x7124, 0x695a, 0x81ff, 0x0904, 0xa316, ++ 0x2308, 0x2019, 0xcc98, 0xad90, 0x0019, 0x080c, 0xa95d, 0x003e, ++ 0xd6cc, 0x0904, 0xa336, 0x7124, 0x695a, 0x81ff, 0x0904, 0xa336, + 0xa192, 0x0021, 0x1260, 0x2071, 0xcc98, 0x831c, 0x2300, 0xae18, +- 0xad90, 0x001d, 0x080c, 0xa93d, 0x080c, 0xb167, 0x04b8, 0x6838, ++ 0xad90, 0x001d, 0x080c, 0xa95d, 0x080c, 0xb187, 0x04b8, 0x6838, + 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, 0x00f6, 0x2d78, +- 0x080c, 0xa8e2, 0x00fe, 0x080c, 0xb167, 0x080c, 0xa92d, 0x0440, +- 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0190, 0x684c, 0xd0ac, ++ 0x080c, 0xa902, 0x00fe, 0x080c, 0xb187, 0x080c, 0xa94d, 0x0440, ++ 0x00f6, 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x0190, 0x684c, 0xd0ac, + 0x0178, 0x6020, 0xd0dc, 0x1160, 0x6850, 0xd0bc, 0x1148, 0x6810, +- 0x6914, 0xa105, 0x0128, 0x080c, 0xaf65, 0x00de, 0x00ee, 0x00f0, ++ 0x6914, 0xa105, 0x0128, 0x080c, 0xaf85, 0x00de, 0x00ee, 0x00f0, + 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0130, +- 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0xa4b3, 0x080c, 0x580a, ++ 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0xa4d3, 0x080c, 0x5823, + 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x080c, +- 0xaf33, 0x00de, 0x00ee, 0x1110, 0x080c, 0x95dc, 0x0005, 0x00f6, ++ 0xaf53, 0x00de, 0x00ee, 0x1110, 0x080c, 0x95fc, 0x0005, 0x00f6, + 0x6003, 0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, + 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, 0x0002, 0x00fe, + 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0x797c, 0xa10a, 0x2300, + 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, 0x0e90, 0x7c12, + 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, 0x2c10, 0x080c, +- 0x2068, 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0005, 0x2001, 0xc8ff, ++ 0x2068, 0x080c, 0x7a15, 0x080c, 0x7f87, 0x0005, 0x2001, 0xc8ff, + 0x2004, 0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, + 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0xa182, 0x0040, 0x0002, +- 0xa37b, 0xa37b, 0xa37b, 0xa37b, 0xa37b, 0xa37d, 0xa410, 0xa37b, +- 0xa37b, 0xa426, 0xa48a, 0xa37b, 0xa37b, 0xa37b, 0xa37b, 0xa499, +- 0xa37b, 0xa37b, 0xa37b, 0x080c, 0x1519, 0x0076, 0x00f6, 0x00e6, ++ 0xa39b, 0xa39b, 0xa39b, 0xa39b, 0xa39b, 0xa39d, 0xa430, 0xa39b, ++ 0xa39b, 0xa446, 0xa4aa, 0xa39b, 0xa39b, 0xa39b, 0xa39b, 0xa4b9, ++ 0xa39b, 0xa39b, 0xa39b, 0x080c, 0x1519, 0x0076, 0x00f6, 0x00e6, + 0x00d6, 0x2071, 0xcc8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, + 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, +- 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904, 0xa40b, 0xa694, 0xff00, ++ 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904, 0xa42b, 0xa694, 0xff00, + 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, +- 0x0300, 0x0904, 0xa40b, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, ++ 0x0300, 0x0904, 0xa42b, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, + 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, + 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, + 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, +@@ -4790,43 +4795,43 @@ unsigned short risc_code01[] = { + 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, + 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, + 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, +- 0xcc98, 0xad90, 0x0019, 0x080c, 0xa93d, 0x003e, 0xd6cc, 0x01d8, ++ 0xcc98, 0xad90, 0x0019, 0x080c, 0xa95d, 0x003e, 0xd6cc, 0x01d8, + 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, +- 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa93d, ++ 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa95d, + 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, +- 0x2d78, 0x080c, 0xa8e2, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, ++ 0x2d78, 0x080c, 0xa902, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, + 0x00f6, 0x6003, 0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, + 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, +- 0x2c10, 0x080c, 0x2068, 0x080c, 0x8bdb, 0x0005, 0x00d6, 0x00f6, +- 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0120, 0x2001, 0xc8ff, 0x2004, +- 0x603e, 0x6003, 0x0002, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, +- 0x2168, 0x694c, 0xd1e4, 0x0904, 0xa488, 0xd1cc, 0x0540, 0x6948, ++ 0x2c10, 0x080c, 0x2068, 0x080c, 0x8bf4, 0x0005, 0x00d6, 0x00f6, ++ 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x0120, 0x2001, 0xc8ff, 0x2004, ++ 0x603e, 0x6003, 0x0002, 0x080c, 0x7e60, 0x080c, 0x7f87, 0x6110, ++ 0x2168, 0x694c, 0xd1e4, 0x0904, 0xa4a8, 0xd1cc, 0x0540, 0x6948, + 0x6838, 0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, + 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x0156, 0x21a8, +- 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa450, 0x015e, 0x000e, ++ 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa470, 0x015e, 0x000e, + 0x6852, 0x000e, 0x684e, 0x001e, 0x2168, 0x080c, 0x1629, 0x0418, +- 0x0016, 0x080c, 0x1629, 0x00de, 0x080c, 0xa92d, 0x00e0, 0x6837, ++ 0x0016, 0x080c, 0x1629, 0x00de, 0x080c, 0xa94d, 0x00e0, 0x6837, + 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0180, 0xa086, + 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, 0x0118, 0x684b, + 0x0015, 0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, +- 0x0000, 0x080c, 0x580a, 0x080c, 0xaf33, 0x1110, 0x080c, 0x95dc, +- 0x00de, 0x0005, 0x2019, 0x0001, 0x080c, 0x8e79, 0x6003, 0x0002, +- 0x2001, 0xc8ff, 0x2004, 0x603e, 0x080c, 0x7e47, 0x080c, 0x7f6e, +- 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, 0x6110, 0x2168, +- 0x080c, 0xac8a, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, 0x6847, +- 0x0000, 0x080c, 0x580a, 0x080c, 0xae41, 0x00de, 0x080c, 0x95dc, +- 0x080c, 0x7f6e, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, 0x684b, ++ 0x0000, 0x080c, 0x5823, 0x080c, 0xaf53, 0x1110, 0x080c, 0x95fc, ++ 0x00de, 0x0005, 0x2019, 0x0001, 0x080c, 0x8e92, 0x6003, 0x0002, ++ 0x2001, 0xc8ff, 0x2004, 0x603e, 0x080c, 0x7e60, 0x080c, 0x7f87, ++ 0x0005, 0x080c, 0x7e60, 0x080c, 0x2e46, 0x00d6, 0x6110, 0x2168, ++ 0x080c, 0xacaa, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, 0x6847, ++ 0x0000, 0x080c, 0x5823, 0x080c, 0xae61, 0x00de, 0x080c, 0x95fc, ++ 0x080c, 0x7f87, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, 0x684b, + 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, +- 0x0005, 0xa182, 0x0040, 0x0002, 0xa4d7, 0xa4d7, 0xa4d7, 0xa4d7, +- 0xa4d7, 0xa4d9, 0xa4d7, 0xa594, 0xa5a0, 0xa4d7, 0xa4d7, 0xa4d7, +- 0xa4d7, 0xa4d7, 0xa4d7, 0xa4d7, 0xa4d7, 0xa4d7, 0xa4d7, 0x080c, ++ 0x0005, 0xa182, 0x0040, 0x0002, 0xa4f7, 0xa4f7, 0xa4f7, 0xa4f7, ++ 0xa4f7, 0xa4f9, 0xa4f7, 0xa5b4, 0xa5c0, 0xa4f7, 0xa4f7, 0xa4f7, ++ 0xa4f7, 0xa4f7, 0xa4f7, 0xa4f7, 0xa4f7, 0xa4f7, 0xa4f7, 0x080c, + 0x1519, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xcc8c, 0x6110, +- 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, 0x56c3, ++ 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, 0x56dc, + 0x00fe, 0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, 0xd0f4, 0x0120, +- 0x080c, 0xaf65, 0x0804, 0xa58f, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, ++ 0x080c, 0xaf85, 0x0804, 0xa5af, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, + 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, +- 0x0904, 0xa585, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, +- 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0xa583, 0xa686, ++ 0x0904, 0xa5a5, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, ++ 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0xa5a3, 0xa686, + 0x0100, 0x1140, 0x2001, 0xcc99, 0x2004, 0xa005, 0x1118, 0xc6c4, + 0x7e46, 0x0c28, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, 0x784a, + 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, +@@ -4837,314 +4842,314 @@ unsigned short risc_code01[] = { + 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, + 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, + 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, +- 0xcc98, 0xad90, 0x0019, 0x080c, 0xa93d, 0x003e, 0xd6cc, 0x01d8, ++ 0xcc98, 0xad90, 0x0019, 0x080c, 0xa95d, 0x003e, 0xd6cc, 0x01d8, + 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, +- 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa93d, ++ 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa95d, + 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, +- 0x2d78, 0x080c, 0xa8e2, 0xd6dc, 0x1110, 0xa006, 0x0030, 0x2001, ++ 0x2d78, 0x080c, 0xa902, 0xd6dc, 0x1110, 0xa006, 0x0030, 0x2001, + 0x0001, 0x2071, 0xcc8c, 0x7218, 0x731c, 0x080c, 0x18b8, 0x00de, + 0x00ee, 0x00fe, 0x007e, 0x0005, 0x2001, 0xc8ff, 0x2004, 0x603e, + 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, + 0x2001, 0xc8ff, 0x2004, 0x603e, 0x00d6, 0x6003, 0x0002, 0x6110, +- 0x2168, 0x694c, 0xd1e4, 0x0904, 0xa6ab, 0x603f, 0x0000, 0x00f6, +- 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0560, 0x6814, 0x6910, 0xa115, ++ 0x2168, 0x694c, 0xd1e4, 0x0904, 0xa6cb, 0x603f, 0x0000, 0x00f6, ++ 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x0560, 0x6814, 0x6910, 0xa115, + 0x0540, 0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, 0x0510, 0x684c, + 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000, + 0x6020, 0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, 0x603a, 0x6980, + 0x6814, 0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, 0x00d6, 0x6018, +- 0x2068, 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0xaf65, 0x0804, +- 0xa6ab, 0x694c, 0xd1cc, 0x0904, 0xa67b, 0x6948, 0x6838, 0xd0fc, +- 0x0904, 0xa63e, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0x00f6, ++ 0x2068, 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0xaf85, 0x0804, ++ 0xa6cb, 0x694c, 0xd1cc, 0x0904, 0xa69b, 0x6948, 0x6838, 0xd0fc, ++ 0x0904, 0xa65e, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0x00f6, + 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, + 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, +- 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0ef, 0x0118, ++ 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb10f, 0x0118, + 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, + 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, +- 0xa115, 0x0110, 0x080c, 0xa4b3, 0x6848, 0x784a, 0x6860, 0x7862, ++ 0xa115, 0x0110, 0x080c, 0xa4d3, 0x6848, 0x784a, 0x6860, 0x7862, + 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, 0x2009, 0x0020, +- 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa62a, +- 0x015e, 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, 0xb167, +- 0x001e, 0x2168, 0x080c, 0x1629, 0x0804, 0xa6a6, 0x0016, 0x00f6, ++ 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa64a, ++ 0x015e, 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, 0xb187, ++ 0x001e, 0x2168, 0x080c, 0x1629, 0x0804, 0xa6c6, 0x0016, 0x00f6, + 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, + 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, +- 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0ef, 0x0118, ++ 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb10f, 0x0118, + 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, + 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, +- 0xa115, 0x0110, 0x080c, 0xa4b3, 0x6860, 0x7862, 0x685c, 0x785e, +- 0x684c, 0x784e, 0x00fe, 0x080c, 0x1629, 0x00de, 0x080c, 0xb167, +- 0x080c, 0xa92d, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, ++ 0xa115, 0x0110, 0x080c, 0xa4d3, 0x6860, 0x7862, 0x685c, 0x785e, ++ 0x684c, 0x784e, 0x00fe, 0x080c, 0x1629, 0x00de, 0x080c, 0xb187, ++ 0x080c, 0xa94d, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, + 0xa0b6, 0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, +- 0x00d8, 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xb0ef, 0x0118, ++ 0x00d8, 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xb10f, 0x0118, + 0x6944, 0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, 0x684b, 0x0007, + 0x0058, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, +- 0xa115, 0x0110, 0x080c, 0xa4b3, 0x080c, 0x580a, 0x080c, 0xaf33, +- 0x1110, 0x080c, 0x95dc, 0x00de, 0x0005, 0x080c, 0x7db1, 0x0010, +- 0x080c, 0x7e47, 0x080c, 0xac8a, 0x01c0, 0x00d6, 0x6110, 0x2168, ++ 0xa115, 0x0110, 0x080c, 0xa4d3, 0x080c, 0x5823, 0x080c, 0xaf53, ++ 0x1110, 0x080c, 0x95fc, 0x00de, 0x0005, 0x080c, 0x7dca, 0x0010, ++ 0x080c, 0x7e60, 0x080c, 0xacaa, 0x01c0, 0x00d6, 0x6110, 0x2168, + 0x6837, 0x0103, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x11c0, 0xd184, +- 0x1198, 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, 0xc4ca, +- 0x6847, 0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95dc, 0x080c, +- 0x7e94, 0x080c, 0x7f6e, 0x0005, 0x684b, 0x0004, 0x0c88, 0x684b, +- 0x0004, 0x0c70, 0xa182, 0x0040, 0x0002, 0xa6f0, 0xa6f0, 0xa6f0, +- 0xa6f0, 0xa6f0, 0xa6f2, 0xa6f0, 0xa6f5, 0xa6f0, 0xa6f0, 0xa6f0, +- 0xa6f0, 0xa6f0, 0xa6f0, 0xa6f0, 0xa6f0, 0xa6f0, 0xa6f0, 0xa6f0, +- 0x080c, 0x1519, 0x080c, 0x95dc, 0x0005, 0x0006, 0x0026, 0xa016, ++ 0x1198, 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, 0xc4f0, ++ 0x6847, 0x0000, 0x080c, 0x5823, 0x00de, 0x080c, 0x95fc, 0x080c, ++ 0x7ead, 0x080c, 0x7f87, 0x0005, 0x684b, 0x0004, 0x0c88, 0x684b, ++ 0x0004, 0x0c70, 0xa182, 0x0040, 0x0002, 0xa710, 0xa710, 0xa710, ++ 0xa710, 0xa710, 0xa712, 0xa710, 0xa715, 0xa710, 0xa710, 0xa710, ++ 0xa710, 0xa710, 0xa710, 0xa710, 0xa710, 0xa710, 0xa710, 0xa710, ++ 0x080c, 0x1519, 0x080c, 0x95fc, 0x0005, 0x0006, 0x0026, 0xa016, + 0x080c, 0x1870, 0x002e, 0x000e, 0x0005, 0xa182, 0x0085, 0x0002, +- 0xa709, 0xa707, 0xa707, 0xa715, 0xa707, 0xa707, 0xa707, 0x080c, +- 0x1519, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091, +- 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, +- 0x00e6, 0x2071, 0xcc80, 0x7224, 0x6212, 0x7220, 0x080c, 0xac7a, ++ 0xa729, 0xa727, 0xa727, 0xa735, 0xa727, 0xa727, 0xa727, 0x080c, ++ 0x1519, 0x6003, 0x0001, 0x6106, 0x080c, 0x79b2, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x7ead, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, ++ 0x00e6, 0x2071, 0xcc80, 0x7224, 0x6212, 0x7220, 0x080c, 0xac9a, + 0x01a0, 0x2268, 0x6800, 0xa086, 0x0000, 0x0178, 0x6018, 0x6d18, +- 0xa52e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0xa94d, 0x00ce, 0x0128, ++ 0xa52e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0xa96d, 0x00ce, 0x0128, + 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, +- 0x0001, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00f6, 0x2278, 0x080c, +- 0x56c3, 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, 0x2260, +- 0x603f, 0x0000, 0x080c, 0xaf65, 0x00ce, 0x00ee, 0x00de, 0x005e, ++ 0x0001, 0x080c, 0x79b2, 0x080c, 0x7ead, 0x00f6, 0x2278, 0x080c, ++ 0x56dc, 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, 0x2260, ++ 0x603f, 0x0000, 0x080c, 0xaf85, 0x00ce, 0x00ee, 0x00de, 0x005e, + 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, + 0x0a0c, 0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519, 0xa082, 0x0085, + 0x0072, 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, +- 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, 0x7e94, 0x0005, 0xa776, +- 0xa778, 0xa778, 0xa776, 0xa776, 0xa776, 0xa776, 0x080c, 0x1519, +- 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, 0x7e94, 0x0005, 0xa186, ++ 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, 0xa796, ++ 0xa798, 0xa798, 0xa796, 0xa796, 0xa796, 0xa796, 0x080c, 0x1519, ++ 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, 0xa186, + 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x04a8, 0xa186, +- 0x0027, 0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, 0x6010, +- 0x2068, 0x080c, 0xac8a, 0x0150, 0x6837, 0x0103, 0x6847, 0x0000, +- 0x684b, 0x0029, 0x080c, 0x580a, 0x080c, 0xae41, 0x00de, 0x080c, +- 0x95dc, 0x080c, 0x7e94, 0x0005, 0x080c, 0x9623, 0x0ce0, 0xa186, +- 0x0014, 0x1dd0, 0x080c, 0x7db1, 0x00d6, 0x6010, 0x2068, 0x080c, +- 0xac8a, 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, 0x0006, +- 0x6850, 0xc0ec, 0x6852, 0x08f0, 0x0002, 0xa7c6, 0xa7c4, 0xa7c4, +- 0xa7c4, 0xa7c4, 0xa7c4, 0xa7de, 0x080c, 0x1519, 0x080c, 0x7db1, ++ 0x0027, 0x11e8, 0x080c, 0x7dca, 0x080c, 0x2e46, 0x00d6, 0x6010, ++ 0x2068, 0x080c, 0xacaa, 0x0150, 0x6837, 0x0103, 0x6847, 0x0000, ++ 0x684b, 0x0029, 0x080c, 0x5823, 0x080c, 0xae61, 0x00de, 0x080c, ++ 0x95fc, 0x080c, 0x7ead, 0x0005, 0x080c, 0x9643, 0x0ce0, 0xa186, ++ 0x0014, 0x1dd0, 0x080c, 0x7dca, 0x00d6, 0x6010, 0x2068, 0x080c, ++ 0xacaa, 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, 0x0006, ++ 0x6850, 0xc0ec, 0x6852, 0x08f0, 0x0002, 0xa7e6, 0xa7e4, 0xa7e4, ++ 0xa7e4, 0xa7e4, 0xa7e4, 0xa7fe, 0x080c, 0x1519, 0x080c, 0x7dca, + 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, + 0x0035, 0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, +- 0x6016, 0x6003, 0x000c, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, ++ 0x6016, 0x6003, 0x000c, 0x080c, 0x7ead, 0x0005, 0x080c, 0x7dca, + 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, + 0x0035, 0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, +- 0x6016, 0x6003, 0x000e, 0x080c, 0x7e94, 0x0005, 0xa182, 0x008c, +- 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x9623, 0x0005, +- 0xa807, 0xa807, 0xa807, 0xa807, 0xa809, 0xa862, 0xa807, 0x080c, +- 0x1519, 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0168, ++ 0x6016, 0x6003, 0x000e, 0x080c, 0x7ead, 0x0005, 0xa182, 0x008c, ++ 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x9643, 0x0005, ++ 0xa827, 0xa827, 0xa827, 0xa827, 0xa829, 0xa882, 0xa827, 0x080c, ++ 0x1519, 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x0168, + 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, +- 0x0035, 0x1118, 0x00de, 0x0804, 0xa875, 0x080c, 0xac8a, 0x1118, +- 0x080c, 0xae41, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x1110, +- 0x080c, 0xae41, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0x684b, ++ 0x0035, 0x1118, 0x00de, 0x0804, 0xa895, 0x080c, 0xacaa, 0x1118, ++ 0x080c, 0xae61, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x1110, ++ 0x080c, 0xae61, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0x684b, + 0x0006, 0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, +- 0x0020, 0x684b, 0x0005, 0x080c, 0xaf02, 0x6847, 0x0000, 0x080c, +- 0x580a, 0x2c68, 0x080c, 0x9586, 0x01c0, 0x6003, 0x0001, 0x6007, ++ 0x0020, 0x684b, 0x0005, 0x080c, 0xaf22, 0x6847, 0x0000, 0x080c, ++ 0x5823, 0x2c68, 0x080c, 0x95a6, 0x01c0, 0x6003, 0x0001, 0x6007, + 0x001e, 0x600b, 0xffff, 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, +- 0xcc8f, 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0xb057, 0x6950, +- 0x6152, 0x601f, 0x0001, 0x080c, 0x7999, 0x2d60, 0x080c, 0x95dc, +- 0x00de, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0598, ++ 0xcc8f, 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0xb077, 0x6950, ++ 0x6152, 0x601f, 0x0001, 0x080c, 0x79b2, 0x2d60, 0x080c, 0x95fc, ++ 0x00de, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56dc, 0x00fe, 0x0598, + 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, 0x0130, 0xa186, + 0x001e, 0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, 0x2c68, 0x080c, +- 0xb13a, 0x1904, 0xa8ba, 0x080c, 0x9586, 0x01d8, 0x6106, 0x6003, ++ 0xb15a, 0x1904, 0xa8da, 0x080c, 0x95a6, 0x01d8, 0x6106, 0x6003, + 0x0001, 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, + 0x612e, 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, +- 0x613a, 0x6950, 0x6152, 0x080c, 0xb057, 0x080c, 0x7999, 0x080c, +- 0x7e94, 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac8a, ++ 0x613a, 0x6950, 0x6152, 0x080c, 0xb077, 0x080c, 0x79b2, 0x080c, ++ 0x7ead, 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, 0xacaa, + 0x01c8, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0xc0ec, 0x6852, + 0x684b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020, +- 0x684b, 0x0005, 0x080c, 0xaf02, 0x6847, 0x0000, 0x080c, 0x580a, +- 0x080c, 0xae41, 0x00de, 0x080c, 0x95dc, 0x0005, 0x0016, 0x00d6, +- 0x6010, 0x2068, 0x080c, 0xac8a, 0x0140, 0x6837, 0x0103, 0x684b, +- 0x0028, 0x6847, 0x0000, 0x080c, 0x580a, 0x00de, 0x001e, 0xa186, ++ 0x684b, 0x0005, 0x080c, 0xaf22, 0x6847, 0x0000, 0x080c, 0x5823, ++ 0x080c, 0xae61, 0x00de, 0x080c, 0x95fc, 0x0005, 0x0016, 0x00d6, ++ 0x6010, 0x2068, 0x080c, 0xacaa, 0x0140, 0x6837, 0x0103, 0x684b, ++ 0x0028, 0x6847, 0x0000, 0x080c, 0x5823, 0x00de, 0x001e, 0xa186, + 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, +- 0x080c, 0x9623, 0x0030, 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, +- 0x7e94, 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, ++ 0x080c, 0x9643, 0x0030, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, ++ 0x7ead, 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, + 0xa182, 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x2069, + 0xcc98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d, +- 0x080c, 0xa93d, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, 0x080c, ++ 0x080c, 0xa95d, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, 0x080c, + 0x1629, 0x080c, 0x1602, 0x0500, 0x8528, 0x6837, 0x0110, 0x683b, + 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, 0x2608, 0xad90, + 0x000f, 0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, + 0xad90, 0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, 0xa5ad, 0x0003, + 0x7d36, 0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, 0xa5ad, 0x0003, + 0x7d36, 0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, 0x8dff, 0x0158, +- 0x6804, 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x580a, 0x2f68, +- 0x0cb8, 0x080c, 0x580a, 0x00fe, 0x0005, 0x0156, 0xa184, 0x0001, ++ 0x6804, 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x5823, 0x2f68, ++ 0x0cb8, 0x080c, 0x5823, 0x00fe, 0x0005, 0x0156, 0xa184, 0x0001, + 0x0108, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, +- 0x8210, 0x1f04, 0xa944, 0x015e, 0x0005, 0x0066, 0x0126, 0x2091, ++ 0x8210, 0x1f04, 0xa964, 0x015e, 0x0005, 0x0066, 0x0126, 0x2091, + 0x8000, 0x2031, 0x0001, 0x601c, 0xa084, 0x000f, 0x0083, 0x012e, + 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, +- 0x601c, 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xa984, +- 0xa984, 0xa97f, 0xa9a6, 0xa972, 0xa97f, 0xa9a6, 0xa97f, 0xa972, +- 0x77f4, 0xa97f, 0x080c, 0x1519, 0x0036, 0x2019, 0x0010, 0x080c, +- 0xbd48, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0xa006, ++ 0x601c, 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xa9a4, ++ 0xa9a4, 0xa99f, 0xa9c6, 0xa992, 0xa99f, 0xa9c6, 0xa99f, 0xa992, ++ 0x780d, 0xa99f, 0x080c, 0x1519, 0x0036, 0x2019, 0x0010, 0x080c, ++ 0xbd6e, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0xa006, + 0x0005, 0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, 0x11d8, 0x6010, +- 0x2068, 0x080c, 0xac8a, 0x01c0, 0x6834, 0xa086, 0x0139, 0x1128, ++ 0x2068, 0x080c, 0xacaa, 0x01c0, 0x6834, 0xa086, 0x0139, 0x1128, + 0x684b, 0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, 0x2001, 0x0005, +- 0x080c, 0x592e, 0x080c, 0xaf02, 0x080c, 0x580a, 0x080c, 0x95dc, ++ 0x080c, 0x5947, 0x080c, 0xaf22, 0x080c, 0x5823, 0x080c, 0x95fc, + 0xa085, 0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, 0x6000, 0xa08a, +- 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xa9bd, 0xa9de, 0xa9bf, +- 0xa9fd, 0xa9db, 0xa9bd, 0xa97f, 0xa984, 0xa984, 0xa97f, 0xa97f, +- 0xa97f, 0xa97f, 0xa97f, 0xa97f, 0xa97f, 0x080c, 0x1519, 0x86ff, ++ 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xa9dd, 0xa9fe, 0xa9df, ++ 0xaa1d, 0xa9fb, 0xa9dd, 0xa99f, 0xa9a4, 0xa9a4, 0xa99f, 0xa99f, ++ 0xa99f, 0xa99f, 0xa99f, 0xa99f, 0xa99f, 0x080c, 0x1519, 0x86ff, + 0x11b8, 0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, 0x6010, 0x2068, +- 0x080c, 0xac8a, 0x0110, 0x080c, 0xaf02, 0x00de, 0x6007, 0x0085, +- 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, ++ 0x080c, 0xacaa, 0x0110, 0x080c, 0xaf22, 0x00de, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x79b2, 0x080c, 0x7ead, + 0xa085, 0x0001, 0x0005, 0x080c, 0x1953, 0x0c08, 0x00e6, 0x2071, +- 0xc927, 0x7024, 0xac06, 0x1110, 0x080c, 0x8dee, 0x601c, 0xa084, ++ 0xc927, 0x7024, 0xac06, 0x1110, 0x080c, 0x8e07, 0x601c, 0xa084, + 0x000f, 0xa086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, +- 0x2c40, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x0010, 0x080c, 0x8ced, +- 0x00ee, 0x1928, 0x080c, 0xa97f, 0x0005, 0x0036, 0x00e6, 0x2071, +- 0xc927, 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, 0x8e79, +- 0x00ee, 0x003e, 0x0804, 0xa9bf, 0x080c, 0x90ef, 0x00ee, 0x003e, +- 0x1904, 0xa9bf, 0x080c, 0xa97f, 0x0005, 0x00c6, 0x601c, 0xa084, +- 0x000f, 0x0013, 0x00ce, 0x0005, 0xaa2e, 0xaa9b, 0xabe9, 0xaa39, +- 0xae4d, 0xaa2e, 0xbd3a, 0x95dc, 0xaa9b, 0x77c3, 0xac54, 0x080c, +- 0x1519, 0x080c, 0xae88, 0x1110, 0x080c, 0x9c02, 0x0005, 0x080c, +- 0x7db1, 0x080c, 0x7e94, 0x080c, 0x95dc, 0x0005, 0x6017, 0x0001, +- 0x0005, 0x080c, 0xac8a, 0x0120, 0x6010, 0xa080, 0x0019, 0x2c02, +- 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xaa57, +- 0xaa59, 0xaa79, 0xaa8b, 0xaa98, 0xaa57, 0xaa2e, 0xaa2e, 0xaa2e, +- 0xaa8b, 0xaa8b, 0xaa57, 0xaa57, 0xaa57, 0xaa57, 0xaa95, 0x080c, ++ 0x2c40, 0x080c, 0x8fe2, 0x009e, 0x008e, 0x0010, 0x080c, 0x8d06, ++ 0x00ee, 0x1928, 0x080c, 0xa99f, 0x0005, 0x0036, 0x00e6, 0x2071, ++ 0xc927, 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, 0x8e92, ++ 0x00ee, 0x003e, 0x0804, 0xa9df, 0x080c, 0x910f, 0x00ee, 0x003e, ++ 0x1904, 0xa9df, 0x080c, 0xa99f, 0x0005, 0x00c6, 0x601c, 0xa084, ++ 0x000f, 0x0013, 0x00ce, 0x0005, 0xaa4e, 0xaabb, 0xac09, 0xaa59, ++ 0xae6d, 0xaa4e, 0xbd60, 0xb19e, 0xaabb, 0x77dc, 0xac74, 0x080c, ++ 0x1519, 0x080c, 0xaea8, 0x1110, 0x080c, 0x9c22, 0x0005, 0x080c, ++ 0x7dca, 0x080c, 0x7ead, 0x080c, 0x95fc, 0x0005, 0x6017, 0x0001, ++ 0x0005, 0x080c, 0xacaa, 0x0120, 0x6010, 0xa080, 0x0019, 0x2c02, ++ 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xaa77, ++ 0xaa79, 0xaa99, 0xaaab, 0xaab8, 0xaa77, 0xaa4e, 0xaa4e, 0xaa4e, ++ 0xaaab, 0xaaab, 0xaa77, 0xaa77, 0xaa77, 0xaa77, 0xaab5, 0x080c, + 0x1519, 0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, +- 0xc927, 0x7024, 0xac06, 0x0190, 0x080c, 0x8ced, 0x6007, 0x0085, ++ 0xc927, 0x7024, 0xac06, 0x0190, 0x080c, 0x8d06, 0x6007, 0x0085, + 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xc8fe, 0x2004, 0x6016, +- 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ee, 0x0005, 0x6017, 0x0001, ++ 0x080c, 0x79b2, 0x080c, 0x7ead, 0x00ee, 0x0005, 0x6017, 0x0001, + 0x0cd8, 0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, +- 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, +- 0x080c, 0x7e94, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, 0x2068, +- 0x6850, 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x95dc, 0x0005, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x79b2, ++ 0x080c, 0x7ead, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, 0x2068, ++ 0x6850, 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x95fc, 0x0005, + 0x080c, 0x1953, 0x08f0, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, +- 0x000b, 0x0005, 0xaab2, 0xaa36, 0xaab4, 0xaab2, 0xaab4, 0xaab4, +- 0xaa2f, 0xaab2, 0xaa29, 0xaa29, 0xaab2, 0xaab2, 0xaab2, 0xaab2, +- 0xaab2, 0xaab2, 0x080c, 0x1519, 0x00d6, 0x6018, 0x2068, 0x6804, ++ 0x000b, 0x0005, 0xaad2, 0xaa56, 0xaad4, 0xaad2, 0xaad4, 0xaad4, ++ 0xaa4f, 0xaad2, 0xaa49, 0xaa49, 0xaad2, 0xaad2, 0xaad2, 0xaad2, ++ 0xaad2, 0xaad2, 0x080c, 0x1519, 0x00d6, 0x6018, 0x2068, 0x6804, + 0xa084, 0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, 0x1519, 0x000b, +- 0x0005, 0xaacd, 0xab8f, 0xaacf, 0xab0d, 0xaacf, 0xab0d, 0xaacf, +- 0xaadd, 0xaacd, 0xab0d, 0xaacd, 0xaaf9, 0x080c, 0x1519, 0x6004, ++ 0x0005, 0xaaed, 0xabaf, 0xaaef, 0xab2d, 0xaaef, 0xab2d, 0xaaef, ++ 0xaafd, 0xaaed, 0xab2d, 0xaaed, 0xab19, 0x080c, 0x1519, 0x6004, + 0xa08e, 0x0016, 0x05a8, 0xa08e, 0x0004, 0x0590, 0xa08e, 0x0002, +- 0x0578, 0xa08e, 0x004b, 0x0904, 0xab8b, 0x6004, 0x080c, 0xae88, +- 0x0904, 0xaba8, 0xa08e, 0x0021, 0x0904, 0xabac, 0xa08e, 0x0022, +- 0x0904, 0xaba8, 0xa08e, 0x003d, 0x0904, 0xabac, 0xa08e, 0x0039, +- 0x0904, 0xabb0, 0xa08e, 0x0035, 0x0904, 0xabb0, 0xa08e, 0x001e, ++ 0x0578, 0xa08e, 0x004b, 0x0904, 0xabab, 0x6004, 0x080c, 0xaea8, ++ 0x0904, 0xabc8, 0xa08e, 0x0021, 0x0904, 0xabcc, 0xa08e, 0x0022, ++ 0x0904, 0xabc8, 0xa08e, 0x003d, 0x0904, 0xabcc, 0xa08e, 0x0039, ++ 0x0904, 0xabd0, 0xa08e, 0x0035, 0x0904, 0xabd0, 0xa08e, 0x001e, + 0x0188, 0xa08e, 0x0001, 0x1150, 0x00d6, 0x6018, 0x2068, 0x6804, + 0xa084, 0x00ff, 0x00de, 0xa086, 0x0006, 0x0110, 0x080c, 0x2e46, +- 0x080c, 0x9c02, 0x080c, 0xae4d, 0x0005, 0x00c6, 0x00d6, 0x6104, +- 0xa186, 0x0016, 0x0904, 0xab7c, 0xa186, 0x0002, 0x15d8, 0x2001, +- 0xc635, 0x2004, 0xd08c, 0x1198, 0x080c, 0x5f22, 0x1180, 0x2001, ++ 0x080c, 0x9c22, 0x080c, 0xae6d, 0x0005, 0x00c6, 0x00d6, 0x6104, ++ 0xa186, 0x0016, 0x0904, 0xab9c, 0xa186, 0x0002, 0x15d8, 0x2001, ++ 0xc635, 0x2004, 0xd08c, 0x1198, 0x080c, 0x5f3b, 0x1180, 0x2001, + 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, +- 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0804, 0xabd2, 0x6018, +- 0x2068, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1904, 0xabd2, 0x68a0, +- 0xd0bc, 0x1904, 0xabd2, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, ++ 0x0001, 0x080c, 0x5f7f, 0x080c, 0x5e73, 0x0804, 0xabf2, 0x6018, ++ 0x2068, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1904, 0xabf2, 0x68a0, ++ 0xd0bc, 0x1904, 0xabf2, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, + 0x8001, 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, +- 0x603f, 0x0000, 0x080c, 0x9586, 0x0128, 0x2d00, 0x601a, 0x601f, ++ 0x603f, 0x0000, 0x080c, 0x95a6, 0x0128, 0x2d00, 0x601a, 0x601f, + 0x0001, 0x0450, 0x00de, 0x00ce, 0x6004, 0xa08e, 0x0002, 0x11a8, + 0x6018, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x1170, 0x2009, + 0xc635, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0xc600, 0x080c, +- 0x4f02, 0x00ee, 0x080c, 0x9c02, 0x0020, 0x080c, 0x9c02, 0x080c, ++ 0x4f1b, 0x00ee, 0x080c, 0x9c22, 0x0020, 0x080c, 0x9c22, 0x080c, + 0x2e46, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x012e, +- 0x00ee, 0x080c, 0xae4d, 0x0005, 0x2001, 0x0002, 0x080c, 0x5291, +- 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c, 0x7e94, +- 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2e6c, 0x0804, 0xab08, 0x00c6, ++ 0x00ee, 0x080c, 0xae6d, 0x0005, 0x2001, 0x0002, 0x080c, 0x52aa, ++ 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79f8, 0x080c, 0x7ead, ++ 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2e6c, 0x0804, 0xab28, 0x00c6, + 0x00d6, 0x6104, 0xa186, 0x0016, 0x0d38, 0x6018, 0x2068, 0x6840, +- 0xa084, 0x00ff, 0xa005, 0x0904, 0xab52, 0x8001, 0x6842, 0x6003, +- 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00de, 0x00ce, 0x0898, +- 0x080c, 0x9c02, 0x0804, 0xab0a, 0x080c, 0x9c30, 0x0804, 0xab0a, +- 0x00d6, 0x2c68, 0x6104, 0x080c, 0xb13a, 0x00de, 0x0118, 0x080c, +- 0x95dc, 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, ++ 0xa084, 0x00ff, 0xa005, 0x0904, 0xab72, 0x8001, 0x6842, 0x6003, ++ 0x0001, 0x080c, 0x79f8, 0x080c, 0x7ead, 0x00de, 0x00ce, 0x0898, ++ 0x080c, 0x9c22, 0x0804, 0xab2a, 0x080c, 0x9c50, 0x0804, 0xab2a, ++ 0x00d6, 0x2c68, 0x6104, 0x080c, 0xb15a, 0x00de, 0x0118, 0x080c, ++ 0x95fc, 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, + 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038, +- 0x600a, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x7999, 0x080c, +- 0x7e94, 0x0005, 0x00de, 0x00ce, 0x080c, 0x9c02, 0x080c, 0x2e46, ++ 0x600a, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x79b2, 0x080c, ++ 0x7ead, 0x0005, 0x00de, 0x00ce, 0x080c, 0x9c22, 0x080c, 0x2e46, + 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x6013, 0x0000, + 0x601f, 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x012e, 0x00ee, + 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, +- 0xac00, 0xac00, 0xac00, 0xac00, 0xac00, 0xac00, 0xac00, 0xac00, +- 0xac00, 0xaa2e, 0xac00, 0xaa36, 0xac02, 0xaa36, 0xac0f, 0xac00, ++ 0xac20, 0xac20, 0xac20, 0xac20, 0xac20, 0xac20, 0xac20, 0xac20, ++ 0xac20, 0xaa4e, 0xac20, 0xaa56, 0xac22, 0xaa56, 0xac2f, 0xac20, + 0x080c, 0x1519, 0x6004, 0xa086, 0x008b, 0x0148, 0x6007, 0x008b, +- 0x6003, 0x000d, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0005, 0x080c, +- 0xae41, 0x080c, 0xac8a, 0x0580, 0x080c, 0x2e46, 0x00d6, 0x080c, +- 0xac8a, 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, +- 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x580a, 0x2c68, +- 0x080c, 0x9586, 0x0150, 0x6818, 0x601a, 0x080c, 0xb057, 0x00c6, +- 0x2d60, 0x080c, 0xae4d, 0x00ce, 0x0008, 0x2d60, 0x00de, 0x6013, ++ 0x6003, 0x000d, 0x080c, 0x79b2, 0x080c, 0x7ead, 0x0005, 0x080c, ++ 0xae61, 0x080c, 0xacaa, 0x0580, 0x080c, 0x2e46, 0x00d6, 0x080c, ++ 0xacaa, 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, ++ 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x5823, 0x2c68, ++ 0x080c, 0x95a6, 0x0150, 0x6818, 0x601a, 0x080c, 0xb077, 0x00c6, ++ 0x2d60, 0x080c, 0xae6d, 0x00ce, 0x0008, 0x2d60, 0x00de, 0x6013, + 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, +- 0x79df, 0x080c, 0x7e94, 0x0078, 0x6030, 0xa08c, 0xff00, 0x810f, ++ 0x79f8, 0x080c, 0x7ead, 0x0078, 0x6030, 0xa08c, 0xff00, 0x810f, + 0xa186, 0x0039, 0x0118, 0xa186, 0x0035, 0x1118, 0x080c, 0x2e46, +- 0x08b0, 0x080c, 0xae4d, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, +- 0x1519, 0x000b, 0x0005, 0xac6b, 0xac6b, 0xac6b, 0xac6d, 0xac6d, +- 0xac6b, 0xac6b, 0xac6b, 0xac6b, 0xac6b, 0xac6b, 0xac6b, 0xac6b, +- 0xac6b, 0xac6b, 0xac6b, 0x080c, 0x1519, 0x080c, 0x90ef, 0x190c, +- 0x1519, 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, +- 0x95dc, 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xce00, 0x0240, ++ 0x08b0, 0x080c, 0xae6d, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, ++ 0x1519, 0x000b, 0x0005, 0xac8b, 0xac8b, 0xac8b, 0xac8d, 0xac8d, ++ 0xac8b, 0xac8b, 0xac8b, 0xac8b, 0xac8b, 0xac8b, 0xac8b, 0xac8b, ++ 0xac8b, 0xac8b, 0xac8b, 0x080c, 0x1519, 0x080c, 0x910f, 0x190c, ++ 0x1519, 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x5823, 0x080c, ++ 0x95fc, 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xce00, 0x0240, + 0x2001, 0xc617, 0x2004, 0xa202, 0x1218, 0xa085, 0x0001, 0x0005, + 0xa006, 0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, 0x002e, 0x0005, + 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, + 0xce00, 0x2071, 0xc600, 0x7348, 0x7068, 0xa302, 0x12a8, 0x601c, +- 0xa206, 0x1160, 0x080c, 0xafe2, 0x0148, 0x080c, 0xae88, 0x1110, +- 0x080c, 0x9c02, 0x00c6, 0x080c, 0x95dc, 0x00ce, 0xace0, 0x0018, ++ 0xa206, 0x1160, 0x080c, 0xb002, 0x0148, 0x080c, 0xaea8, 0x1110, ++ 0x080c, 0x9c22, 0x00c6, 0x080c, 0x95fc, 0x00ce, 0xace0, 0x0018, + 0x705c, 0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, 0x00ce, + 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, 0xc77b, 0x210c, + 0x81ff, 0x0128, 0x2061, 0xca3c, 0x611a, 0x080c, 0x2e46, 0xa006, + 0x0010, 0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, +- 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x9586, 0x005e, +- 0x0180, 0x6612, 0x651a, 0x080c, 0xb057, 0x601f, 0x0003, 0x2009, +- 0x004b, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, ++ 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x95a6, 0x005e, ++ 0x0180, 0x6612, 0x651a, 0x080c, 0xb077, 0x601f, 0x0003, 0x2009, ++ 0x004b, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, + 0x0005, 0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, +- 0x62a0, 0x00c6, 0x080c, 0xaf06, 0x005e, 0x0550, 0x6013, 0x0000, +- 0x651a, 0x080c, 0xb057, 0x601f, 0x0003, 0x0016, 0x00c6, 0x2560, +- 0x080c, 0x553e, 0x00ce, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, +- 0x080c, 0x7a0e, 0x2c08, 0x080c, 0xbeea, 0x007e, 0x001e, 0xd184, +- 0x0128, 0x080c, 0x95dc, 0xa085, 0x0001, 0x0030, 0x2009, 0x004c, +- 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, +- 0xa006, 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x9586, ++ 0x62a0, 0x00c6, 0x080c, 0xaf26, 0x005e, 0x0550, 0x6013, 0x0000, ++ 0x651a, 0x080c, 0xb077, 0x601f, 0x0003, 0x0016, 0x00c6, 0x2560, ++ 0x080c, 0x5557, 0x00ce, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, ++ 0x080c, 0x7a27, 0x2c08, 0x080c, 0xbf10, 0x007e, 0x001e, 0xd184, ++ 0x0128, 0x080c, 0x95fc, 0xa085, 0x0001, 0x0030, 0x2009, 0x004c, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, ++ 0xa006, 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x95a6, + 0x2c78, 0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, +- 0x2021, 0x0005, 0x080c, 0xad80, 0x2f60, 0x2009, 0x004d, 0x080c, +- 0x960c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, +- 0x00c6, 0x0046, 0x00c6, 0x080c, 0x9586, 0x2c78, 0x00ce, 0x0178, ++ 0x2021, 0x0005, 0x080c, 0xada0, 0x2f60, 0x2009, 0x004d, 0x080c, ++ 0x962c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, ++ 0x00c6, 0x0046, 0x00c6, 0x080c, 0x95a6, 0x2c78, 0x00ce, 0x0178, + 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x0481, +- 0x2f60, 0x2009, 0x004e, 0x080c, 0x960c, 0xa085, 0x0001, 0x004e, ++ 0x2f60, 0x2009, 0x004e, 0x080c, 0x962c, 0xa085, 0x0001, 0x004e, + 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, +- 0x9586, 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, 0x781f, ++ 0x95a6, 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, 0x781f, + 0x0003, 0x2021, 0x0004, 0x00a1, 0x2001, 0xc8e7, 0x2004, 0xd0fc, +- 0x0120, 0x2f60, 0x080c, 0x95dc, 0x0028, 0x2f60, 0x2009, 0x0052, +- 0x080c, 0x960c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, +- 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x54e0, 0x0118, +- 0x2001, 0xad85, 0x0028, 0x080c, 0x54b0, 0x0158, 0x2001, 0xad8b, +- 0x0006, 0xa00e, 0x2400, 0x080c, 0x592e, 0x080c, 0x580a, 0x000e, +- 0x0807, 0x2418, 0x080c, 0x7d50, 0x62a0, 0x0086, 0x2041, 0x0001, +- 0x2039, 0x0001, 0x2608, 0x080c, 0x7b2f, 0x008e, 0x080c, 0x7a0e, +- 0x2f08, 0x2648, 0x080c, 0xbeea, 0x613c, 0x81ff, 0x090c, 0x7be4, +- 0x080c, 0x7e94, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, +- 0x2091, 0x8000, 0x00c6, 0x080c, 0x9586, 0x001e, 0x0188, 0x660a, +- 0x611a, 0x080c, 0xb057, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, +- 0x001f, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x0120, 0x2f60, 0x080c, 0x95fc, 0x0028, 0x2f60, 0x2009, 0x0052, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, ++ 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x54f9, 0x0118, ++ 0x2001, 0xada5, 0x0028, 0x080c, 0x54c9, 0x0158, 0x2001, 0xadab, ++ 0x0006, 0xa00e, 0x2400, 0x080c, 0x5947, 0x080c, 0x5823, 0x000e, ++ 0x0807, 0x2418, 0x080c, 0x7d69, 0x62a0, 0x0086, 0x2041, 0x0001, ++ 0x2039, 0x0001, 0x2608, 0x080c, 0x7b48, 0x008e, 0x080c, 0x7a27, ++ 0x2f08, 0x2648, 0x080c, 0xbf10, 0x613c, 0x81ff, 0x090c, 0x7bfd, ++ 0x080c, 0x7ead, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x00c6, 0x080c, 0x95a6, 0x001e, 0x0188, 0x660a, ++ 0x611a, 0x080c, 0xb077, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x001f, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, + 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, +- 0x9586, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0xb057, 0x601f, +- 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x960c, 0xa085, ++ 0x95a6, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0xb077, 0x601f, ++ 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x962c, 0xa085, + 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, +- 0x2091, 0x8000, 0x00c6, 0x080c, 0x9586, 0x001e, 0x0188, 0x660a, +- 0x611a, 0x080c, 0xb057, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, +- 0x003d, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x2091, 0x8000, 0x00c6, 0x080c, 0x95a6, 0x001e, 0x0188, 0x660a, ++ 0x611a, 0x080c, 0xb077, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x003d, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, + 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, +- 0xaf06, 0x001e, 0x0180, 0x611a, 0x080c, 0xb057, 0x601f, 0x0001, +- 0x2d00, 0x6012, 0x2009, 0x0000, 0x080c, 0x960c, 0xa085, 0x0001, ++ 0xaf26, 0x001e, 0x0180, 0x611a, 0x080c, 0xb077, 0x601f, 0x0001, ++ 0x2d00, 0x6012, 0x2009, 0x0000, 0x080c, 0x962c, 0xa085, 0x0001, + 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, +- 0x8000, 0x00c6, 0x080c, 0x9586, 0x001e, 0x0188, 0x660a, 0x611a, +- 0x080c, 0xb057, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0044, +- 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, ++ 0x8000, 0x00c6, 0x080c, 0x95a6, 0x001e, 0x0188, 0x660a, 0x611a, ++ 0x080c, 0xb077, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0044, ++ 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, + 0x0cd8, 0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, + 0x8211, 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x6000, 0xa086, + 0x0000, 0x0190, 0x6013, 0x0000, 0x601f, 0x0007, 0x2001, 0xc8fd, + 0x2004, 0x0006, 0xa082, 0x0051, 0x000e, 0x0208, 0x8004, 0x6016, +- 0x080c, 0xc3d5, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, 0x00c6, ++ 0x080c, 0xc3fb, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, 0x00c6, + 0x00d6, 0x2031, 0xc653, 0x2634, 0xd6e4, 0x0128, 0x6618, 0x2660, +- 0x6e48, 0x080c, 0x5469, 0x00de, 0x00ce, 0x006e, 0x0005, 0x0006, ++ 0x6e48, 0x080c, 0x5482, 0x00de, 0x00ce, 0x006e, 0x0005, 0x0006, + 0x0016, 0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, 0x0003, 0x0128, + 0xa08e, 0x0004, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e, 0x0005, + 0x0006, 0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, 0xa086, 0x0139, + 0x0138, 0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, + 0x00de, 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, +- 0x080c, 0x9586, 0x001e, 0x0190, 0x611a, 0x080c, 0xb057, 0x601f, ++ 0x080c, 0x95a6, 0x001e, 0x0190, 0x611a, 0x080c, 0xb077, 0x601f, + 0x0001, 0x2d00, 0x6012, 0x080c, 0x2e46, 0x2009, 0x0028, 0x080c, +- 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, ++ 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, + 0xa186, 0x0015, 0x1178, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, +- 0x1148, 0x080c, 0x9fb2, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, +- 0x79df, 0x0020, 0x080c, 0x9c02, 0x080c, 0x95dc, 0x0005, 0xa186, +- 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x5291, 0x00e8, 0xa186, ++ 0x1148, 0x080c, 0x9fd2, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, ++ 0x79f8, 0x0020, 0x080c, 0x9c22, 0x080c, 0x95fc, 0x0005, 0xa186, ++ 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x52aa, 0x00e8, 0xa186, + 0x0015, 0x11e8, 0x2011, 0xc621, 0x2204, 0xa086, 0x0014, 0x11b8, +- 0x00d6, 0x6018, 0x2068, 0x080c, 0x53df, 0x00de, 0x080c, 0xa06b, ++ 0x00d6, 0x6018, 0x2068, 0x080c, 0x53f8, 0x00de, 0x080c, 0xa08b, + 0x1170, 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0138, +- 0x2001, 0x0006, 0x080c, 0x5291, 0x080c, 0x9760, 0x0020, 0x080c, +- 0x9c02, 0x080c, 0x95dc, 0x0005, 0x6848, 0xa086, 0x0005, 0x1108, ++ 0x2001, 0x0006, 0x080c, 0x52aa, 0x080c, 0x9780, 0x0020, 0x080c, ++ 0x9c22, 0x080c, 0x95fc, 0x0005, 0x6848, 0xa086, 0x0005, 0x1108, + 0x0009, 0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, 0x00e6, 0x0126, + 0x2071, 0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, 0x0608, + 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, +@@ -5153,24 +5158,24 @@ unsigned short risc_code01[] = { + 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xce00, + 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xcc8c, 0x7014, 0xd0e4, + 0x0150, 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, +- 0x7999, 0x080c, 0x7e94, 0x00ee, 0x0005, 0x00c6, 0x00f6, 0x2c78, +- 0x080c, 0x56c3, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, 0x0013, +- 0x00ce, 0x0005, 0xaa2e, 0xaf5d, 0xaf60, 0xaf63, 0xc1c2, 0xc1dd, +- 0xc1e0, 0xaa2e, 0xaa2e, 0x080c, 0x1519, 0xe000, 0xe000, 0x0005, ++ 0x79b2, 0x080c, 0x7ead, 0x00ee, 0x0005, 0x00c6, 0x00f6, 0x2c78, ++ 0x080c, 0x56dc, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, 0x0013, ++ 0x00ce, 0x0005, 0xaa4e, 0xaf7d, 0xaf80, 0xaf83, 0xc1e8, 0xc203, ++ 0xc206, 0xaa4e, 0xaa4e, 0x080c, 0x1519, 0xe000, 0xe000, 0x0005, + 0xe000, 0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, 0x2c78, 0x080c, +- 0x56c3, 0x0538, 0x080c, 0x9586, 0x1128, 0x2001, 0xc8ff, 0x2004, +- 0x783e, 0x00f8, 0x7818, 0x601a, 0x080c, 0xb057, 0x781c, 0xa086, ++ 0x56dc, 0x0538, 0x080c, 0x95a6, 0x1128, 0x2001, 0xc8ff, 0x2004, ++ 0x783e, 0x00f8, 0x7818, 0x601a, 0x080c, 0xb077, 0x781c, 0xa086, + 0x0003, 0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, 0x0020, 0x7808, + 0x603a, 0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, +- 0x6003, 0x0001, 0x7950, 0x6152, 0x080c, 0x7999, 0x080c, 0x7e94, ++ 0x6003, 0x0001, 0x7950, 0x6152, 0x080c, 0x79b2, 0x080c, 0x7ead, + 0x2f60, 0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, 0x6032, 0xa08e, + 0x0001, 0x0138, 0xa086, 0x0005, 0x0140, 0xa006, 0x602a, 0x602e, + 0x00a0, 0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, 0x2078, 0x787c, + 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, 0x6834, 0x602a, + 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, 0x6808, + 0x603a, 0x6918, 0x611a, 0x6950, 0x6152, 0x601f, 0x0001, 0x6007, +- 0x0039, 0x6003, 0x0001, 0x080c, 0x7999, 0x6803, 0x0002, 0x00fe, +- 0x001e, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x1118, 0xa085, ++ 0x0039, 0x6003, 0x0001, 0x080c, 0x79b2, 0x6803, 0x0002, 0x00fe, ++ 0x001e, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56dc, 0x1118, 0xa085, + 0x0001, 0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, 0x6022, 0x6010, + 0x2078, 0x7828, 0x603a, 0x782c, 0x6036, 0x080c, 0x1953, 0xa006, + 0x00fe, 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0034, 0x01b8, +@@ -5178,705 +5183,705 @@ unsigned short risc_code01[] = { + 0x0170, 0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, 0x0140, 0xa08e, + 0x003a, 0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, 0x0001, 0x001e, + 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, +- 0xc8f9, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x783f, ++ 0xc8f9, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x7858, + 0x2001, 0xc8fd, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, + 0xc8fb, 0x200c, 0x8000, 0x2014, 0x2071, 0xc8d5, 0x711a, 0x721e, +- 0x2001, 0x0064, 0x080c, 0x783f, 0x2001, 0xc8fe, 0x82ff, 0x1110, ++ 0x2001, 0x0064, 0x080c, 0x7858, 0x2001, 0xc8fe, 0x82ff, 0x1110, + 0x2011, 0x0014, 0x2202, 0x2009, 0xc8ff, 0xa280, 0x000a, 0x200a, +- 0x080c, 0x572c, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, ++ 0x080c, 0x5745, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, + 0x0006, 0x00e6, 0x2001, 0xc8fd, 0x2003, 0x0028, 0x2001, 0xc8fe, + 0x2003, 0x0014, 0x2071, 0xc8d5, 0x701b, 0x0000, 0x701f, 0x07d0, + 0x2001, 0xc8ff, 0x2003, 0x001e, 0x00ee, 0x000e, 0x0005, 0x00d6, + 0x6054, 0xa06d, 0x0110, 0x080c, 0x1619, 0x00de, 0x0005, 0x0005, +- 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x9586, 0x001e, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x95a6, 0x001e, + 0x0178, 0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, +- 0x0033, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x0033, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, + 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, + 0x0015, 0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, 0x6010, 0x2068, +- 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x80af, 0x01d8, 0x7070, ++ 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x80c8, 0x01d8, 0x7070, + 0x6a50, 0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, 0x1140, 0x6218, + 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x080c, +- 0x9760, 0x0020, 0x080c, 0x9c02, 0x080c, 0x95dc, 0x00fe, 0x00ee, ++ 0x9780, 0x0020, 0x080c, 0x9c22, 0x080c, 0x95fc, 0x00fe, 0x00ee, + 0x00de, 0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, 0x0c80, 0x00c6, +- 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x9586, 0x001e, 0x0180, +- 0x611a, 0x080c, 0xb057, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, +- 0x0043, 0x080c, 0x960c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x95a6, 0x001e, 0x0180, ++ 0x611a, 0x080c, 0xb077, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, ++ 0x0043, 0x080c, 0x962c, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, + 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, + 0x0015, 0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, 0x6010, 0xa0e8, +- 0x000f, 0x2c78, 0x080c, 0x80af, 0x01a8, 0x7070, 0x6a08, 0xa206, ++ 0x000f, 0x2c78, 0x080c, 0x80c8, 0x01a8, 0x7070, 0x6a08, 0xa206, + 0x1130, 0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, 0x2e46, 0x080c, +- 0x9760, 0x0020, 0x080c, 0x9c02, 0x080c, 0x95dc, 0x00fe, 0x00ee, ++ 0x9780, 0x0020, 0x080c, 0x9c22, 0x080c, 0x95fc, 0x00fe, 0x00ee, + 0x00de, 0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, 0x0c80, 0x0016, + 0x0026, 0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, 0x2100, 0xa205, + 0x0150, 0x6860, 0xa106, 0x1118, 0x685c, 0xa206, 0x0120, 0x6962, + 0x6a5e, 0xa085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00d6, 0x0036, + 0x6310, 0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, 0x11a0, 0x00c6, + 0x6318, 0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1140, 0x080c, +- 0x55de, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x6a66, ++ 0x55f7, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x6a66, + 0x696a, 0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, 0x0006, 0x231c, + 0x686b, 0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, 0x6004, 0xa084, +- 0x00ff, 0x686e, 0x00ce, 0x080c, 0x580a, 0x6013, 0x0000, 0x003e, ++ 0x00ff, 0x686e, 0x00ce, 0x080c, 0x5823, 0x6013, 0x0000, 0x003e, + 0x00de, 0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, 0x0035, 0x0110, +- 0x6a34, 0x0008, 0x6a28, 0x080c, 0xac7a, 0x01f0, 0x2260, 0x611c, ++ 0x6a34, 0x0008, 0x6a28, 0x080c, 0xac9a, 0x01f0, 0x2260, 0x611c, + 0xa186, 0x0003, 0x0118, 0xa186, 0x0006, 0x1190, 0x6834, 0xa206, + 0x0140, 0x6838, 0xa206, 0x1160, 0x6108, 0x6834, 0xa106, 0x1140, + 0x0020, 0x6008, 0x6938, 0xa106, 0x1118, 0x6018, 0x6918, 0xa106, + 0x001e, 0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, 0x0cc8, 0x6944, + 0xd1cc, 0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x1170, 0xad88, + 0x001e, 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x1128, +- 0x6810, 0x6914, 0xa115, 0x190c, 0xa4b3, 0x0005, 0x0066, 0x6000, +- 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0xb197, +- 0xb6ae, 0xb7d6, 0xb197, 0xb197, 0xb197, 0xb197, 0xb197, 0xb1cf, +- 0xb85a, 0xb197, 0xb197, 0xb197, 0xb197, 0xb197, 0xb197, 0x080c, +- 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, +- 0x006e, 0x0005, 0xb1b2, 0xbcdf, 0xb1b2, 0xb1b2, 0xb1b2, 0xb1b2, +- 0xb1b2, 0xb1b2, 0xbca3, 0xbd27, 0xb1b2, 0xc307, 0xc337, 0xc307, +- 0xc337, 0xb1b2, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, +- 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0xb1cd, 0xb9aa, 0xba77, +- 0xbaa4, 0xbb28, 0xb1cd, 0xbc15, 0xbbc0, 0xb866, 0xbc79, 0xbc8e, +- 0xb1cd, 0xb1cd, 0xb1cd, 0xb1cd, 0xb1cd, 0x080c, 0x1519, 0xa1b2, +- 0x0080, 0x1a0c, 0x1519, 0x2100, 0xa1b2, 0x0040, 0x1a04, 0xb5e6, +- 0x0002, 0xb219, 0xb3e4, 0xb219, 0xb219, 0xb219, 0xb3eb, 0xb219, +- 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, +- 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, +- 0xb21b, 0xb279, 0xb288, 0xb2d6, 0xb2f4, 0xb372, 0xb3d1, 0xb219, +- 0xb219, 0xb3ee, 0xb219, 0xb219, 0xb401, 0xb40c, 0xb219, 0xb219, +- 0xb219, 0xb219, 0xb219, 0xb497, 0xb219, 0xb219, 0xb4aa, 0xb219, +- 0xb219, 0xb462, 0xb219, 0xb219, 0xb219, 0xb4c2, 0xb219, 0xb219, +- 0xb219, 0xb53c, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, 0xb219, +- 0xb5ad, 0x080c, 0x1519, 0x080c, 0x570b, 0x1150, 0x2001, 0xc635, +- 0x2004, 0xd0cc, 0x1128, 0xa084, 0x0009, 0xa086, 0x0008, 0x1140, +- 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000, 0x0804, 0xb3df, +- 0x080c, 0x568d, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6218, +- 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, 0x7b16, 0x0076, +- 0x2039, 0x0000, 0x080c, 0x7a0e, 0x2c08, 0x080c, 0xbeea, 0x007e, +- 0x001e, 0x2e60, 0x080c, 0x553e, 0x001e, 0x002e, 0x003e, 0x00ce, +- 0x00ee, 0x6618, 0x00c6, 0x2660, 0x080c, 0x534c, 0x00ce, 0xa6b0, +- 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0278, 0x080c, +- 0xbe2e, 0x1904, 0xb2d0, 0x080c, 0xbdce, 0x1120, 0x6007, 0x0008, +- 0x0804, 0xb3df, 0x6007, 0x0009, 0x0804, 0xb3df, 0x080c, 0xc016, +- 0x0128, 0x080c, 0xbe2e, 0x0d78, 0x0804, 0xb2d0, 0x6013, 0x1900, +- 0x0c88, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x6106, 0x080c, 0xbd88, +- 0x6007, 0x0006, 0x0804, 0xb3df, 0x6007, 0x0007, 0x0804, 0xb3df, +- 0x080c, 0xc36b, 0x1904, 0xb5e3, 0x080c, 0x2f69, 0x1904, 0xb5e3, +- 0x00d6, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, 0xa082, 0x0006, +- 0x1220, 0x2001, 0x0001, 0x080c, 0x527f, 0xa6b4, 0xff00, 0x8637, +- 0xa686, 0x0006, 0x0188, 0xa686, 0x0004, 0x0170, 0x6e04, 0xa6b4, +- 0x00ff, 0xa686, 0x0006, 0x0140, 0xa686, 0x0004, 0x0128, 0xa686, +- 0x0005, 0x0110, 0x00de, 0x00e0, 0x080c, 0xbe8c, 0x11a0, 0xa686, +- 0x0006, 0x1150, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, +- 0x0000, 0x080c, 0x2e8b, 0x002e, 0x080c, 0x53df, 0x6007, 0x000a, +- 0x00de, 0x0804, 0xb3df, 0x6007, 0x000b, 0x00de, 0x0804, 0xb3df, +- 0x080c, 0x2e46, 0x6007, 0x0001, 0x0804, 0xb3df, 0x080c, 0xc36b, +- 0x1904, 0xb5e3, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x6618, 0x00d6, +- 0x2668, 0x6e04, 0x00de, 0xa686, 0x0707, 0x0d50, 0x0026, 0x6218, ++ 0x6810, 0x6914, 0xa115, 0x190c, 0xa4d3, 0x0005, 0x080c, 0x95fc, ++ 0x0804, 0x7ead, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, ++ 0x0013, 0x006e, 0x0005, 0xb1bb, 0xb6d2, 0xb7fa, 0xb1bb, 0xb1bb, ++ 0xb1bb, 0xb1bb, 0xb1bb, 0xb1f3, 0xb87e, 0xb1bb, 0xb1bb, 0xb1bb, ++ 0xb1bb, 0xb1bb, 0xb1bb, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, ++ 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0xb1d6, 0xbd05, ++ 0xb1d6, 0xb1d6, 0xb1d6, 0xb1d6, 0xb1d6, 0xb1d6, 0xbcc7, 0xbd4d, ++ 0xb1d6, 0xc32d, 0xc35d, 0xc32d, 0xc35d, 0xb1d6, 0x080c, 0x1519, ++ 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, ++ 0x0005, 0xb1f1, 0xb9ce, 0xba9b, 0xbac8, 0xbb4c, 0xb1f1, 0xbc39, ++ 0xbbe4, 0xb88a, 0xbc9d, 0xbcb2, 0xb1f1, 0xb1f1, 0xb1f1, 0xb1f1, ++ 0xb1f1, 0x080c, 0x1519, 0xa1b2, 0x0080, 0x1a0c, 0x1519, 0x2100, ++ 0xa1b2, 0x0040, 0x1a04, 0xb60a, 0x0002, 0xb23d, 0xb408, 0xb23d, ++ 0xb23d, 0xb23d, 0xb40f, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, ++ 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, ++ 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23f, 0xb29d, 0xb2ac, 0xb2fa, ++ 0xb318, 0xb396, 0xb3f5, 0xb23d, 0xb23d, 0xb412, 0xb23d, 0xb23d, ++ 0xb425, 0xb430, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb4bb, ++ 0xb23d, 0xb23d, 0xb4ce, 0xb23d, 0xb23d, 0xb486, 0xb23d, 0xb23d, ++ 0xb23d, 0xb4e6, 0xb23d, 0xb23d, 0xb23d, 0xb560, 0xb23d, 0xb23d, ++ 0xb23d, 0xb23d, 0xb23d, 0xb23d, 0xb5d1, 0x080c, 0x1519, 0x080c, ++ 0x5724, 0x1150, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x1128, 0xa084, ++ 0x0009, 0xa086, 0x0008, 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, ++ 0x6013, 0x0000, 0x0804, 0xb403, 0x080c, 0x56a6, 0x00e6, 0x00c6, ++ 0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, ++ 0x0029, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a27, ++ 0x2c08, 0x080c, 0xbf10, 0x007e, 0x001e, 0x2e60, 0x080c, 0x5557, ++ 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, ++ 0x080c, 0x5365, 0x00ce, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, ++ 0xa082, 0x0006, 0x0278, 0x080c, 0xbe54, 0x1904, 0xb2f4, 0x080c, ++ 0xbdf4, 0x1120, 0x6007, 0x0008, 0x0804, 0xb403, 0x6007, 0x0009, ++ 0x0804, 0xb403, 0x080c, 0xc03c, 0x0128, 0x080c, 0xbe54, 0x0d78, ++ 0x0804, 0xb2f4, 0x6013, 0x1900, 0x0c88, 0x080c, 0x2f69, 0x1904, ++ 0xb607, 0x6106, 0x080c, 0xbdae, 0x6007, 0x0006, 0x0804, 0xb403, ++ 0x6007, 0x0007, 0x0804, 0xb403, 0x080c, 0xc391, 0x1904, 0xb607, ++ 0x080c, 0x2f69, 0x1904, 0xb607, 0x00d6, 0x6618, 0x2668, 0x6e04, ++ 0xa684, 0x00ff, 0xa082, 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, ++ 0x5298, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, ++ 0x0004, 0x0170, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, ++ 0xa686, 0x0004, 0x0128, 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, ++ 0x080c, 0xbeb2, 0x11a0, 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, + 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x002e, +- 0x6007, 0x000c, 0x0804, 0xb3df, 0x080c, 0x570b, 0x1140, 0x2001, +- 0xc635, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110, 0x0804, +- 0xb228, 0x080c, 0x568d, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, +- 0x00ff, 0xa082, 0x0006, 0x06e8, 0x1138, 0x0026, 0x2001, 0x0006, +- 0x080c, 0x52be, 0x002e, 0x0050, 0xa6b4, 0xff00, 0x8637, 0xa686, +- 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xb2d0, 0x080c, 0xbe99, +- 0x1120, 0x6007, 0x000e, 0x0804, 0xb3df, 0x0046, 0x6418, 0xa4a0, +- 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x0046, 0x080c, 0x2e46, +- 0x004e, 0x0016, 0xa006, 0x2009, 0xc653, 0x210c, 0xd1a4, 0x0158, +- 0x2009, 0x0029, 0x080c, 0xc183, 0x6018, 0x00d6, 0x2068, 0x6800, +- 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, 0x0001, 0x0804, +- 0xb3df, 0x2001, 0x0001, 0x080c, 0x527f, 0x0156, 0x0016, 0x0026, +- 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605, 0x2011, 0xcc90, 0x080c, +- 0xa0fc, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005, 0x0168, 0xa6b4, +- 0xff00, 0x8637, 0xa682, 0x0004, 0x0a04, 0xb2d0, 0xa682, 0x0007, +- 0x0a04, 0xb31e, 0x0804, 0xb2d0, 0x6013, 0x1900, 0x6007, 0x0009, +- 0x0804, 0xb3df, 0x080c, 0x570b, 0x1140, 0x2001, 0xc635, 0x2004, +- 0xa084, 0x0009, 0xa086, 0x0008, 0x1110, 0x0804, 0xb228, 0x080c, +- 0x568d, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, +- 0x0006, 0x06b8, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0004, 0x0120, +- 0xa686, 0x0006, 0x1904, 0xb2d0, 0x080c, 0xbec1, 0x1138, 0x080c, +- 0xbdce, 0x1120, 0x6007, 0x0010, 0x0804, 0xb3df, 0x0046, 0x6418, +- 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x0046, 0x080c, +- 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009, 0xc653, 0x210c, 0xd1a4, +- 0x0158, 0x2009, 0x0029, 0x080c, 0xc183, 0x6018, 0x00d6, 0x2068, +- 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, 0x0001, +- 0x00f0, 0x080c, 0xc016, 0x0140, 0xa6b4, 0xff00, 0x8637, 0xa686, +- 0x0006, 0x0950, 0x0804, 0xb2d0, 0x6013, 0x1900, 0x6007, 0x0009, +- 0x0070, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x080c, 0xc36b, 0x1904, +- 0xb5e3, 0x080c, 0xb647, 0x1904, 0xb2d0, 0x6007, 0x0012, 0x6003, +- 0x0001, 0x080c, 0x79df, 0x0005, 0x6007, 0x0001, 0x6003, 0x0001, +- 0x080c, 0x79df, 0x0cc0, 0x6007, 0x0005, 0x0cc0, 0x080c, 0xc36b, +- 0x1904, 0xb5e3, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x080c, 0xb647, +- 0x1904, 0xb2d0, 0x6007, 0x0020, 0x6003, 0x0001, 0x080c, 0x79df, +- 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x6007, 0x0023, 0x6003, +- 0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0xc36b, 0x1904, 0xb5e3, +- 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x080c, 0xb647, 0x1904, 0xb2d0, +- 0x0016, 0x0026, 0x2011, 0xcc91, 0x2214, 0xa286, 0xffff, 0x0190, +- 0x2c08, 0x080c, 0xac7a, 0x01e0, 0x2260, 0x2011, 0xcc90, 0x2214, +- 0x6008, 0xa206, 0x11a8, 0x6018, 0xa190, 0x0006, 0x2214, 0xa206, +- 0x01e8, 0x0070, 0x2011, 0xcc90, 0x2214, 0x2c08, 0xa006, 0x080c, +- 0xc155, 0x11a0, 0x2011, 0xcc91, 0x2214, 0xa286, 0xffff, 0x01c0, +- 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, 0xcc89, 0x2214, +- 0xa296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x601c, 0xa086, +- 0x0007, 0x1d70, 0x6004, 0xa086, 0x0024, 0x1110, 0x080c, 0x95dc, +- 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x79df, 0x002e, +- 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x527f, 0x0156, 0x0016, +- 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605, 0x2011, 0xcc96, +- 0x080c, 0xa0fc, 0x003e, 0x002e, 0x001e, 0x015e, 0x0120, 0x6007, +- 0x0031, 0x0804, 0xb3df, 0x080c, 0x9dee, 0x080c, 0x5f22, 0x11b0, +- 0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e, 0x1158, 0x2001, 0xc8e6, +- 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a, +- 0x0010, 0x080c, 0x5ef9, 0x003e, 0x002e, 0x000e, 0x0005, 0x080c, +- 0x2f69, 0x1904, 0xb5e3, 0x080c, 0xb647, 0x1904, 0xb2d0, 0x6106, +- 0x080c, 0xb663, 0x6007, 0x002b, 0x0804, 0xb3df, 0x6007, 0x002c, +- 0x0804, 0xb3df, 0x080c, 0xc36b, 0x1904, 0xb5e3, 0x080c, 0x2f69, +- 0x1904, 0xb5e3, 0x080c, 0xb647, 0x1904, 0xb2d0, 0x6106, 0x080c, +- 0xb667, 0x1120, 0x6007, 0x002e, 0x0804, 0xb3df, 0x6007, 0x002f, +- 0x0804, 0xb3df, 0x080c, 0x2f69, 0x1904, 0xb5e3, 0x00e6, 0x00d6, +- 0x00c6, 0x6018, 0xa080, 0x0001, 0x200c, 0xa184, 0x00ff, 0xa086, +- 0x0006, 0x0158, 0xa184, 0xff00, 0x8007, 0xa086, 0x0006, 0x0128, +- 0x00ce, 0x00de, 0x00ee, 0x0804, 0xb3e4, 0x2001, 0xc672, 0x2004, +- 0xd0e4, 0x0904, 0xb539, 0x2071, 0xcc8c, 0x7010, 0x6036, 0x7014, +- 0x603a, 0x7108, 0x720c, 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0140, +- 0x6018, 0x2068, 0x6810, 0xa106, 0x1118, 0x6814, 0xa206, 0x01f8, +- 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1590, 0x2069, 0xc600, 0x6874, +- 0xa206, 0x1568, 0x6870, 0xa106, 0x1550, 0x7210, 0x080c, 0xac7a, +- 0x0558, 0x080c, 0xc1ef, 0x0540, 0x622a, 0x6007, 0x0036, 0x6003, +- 0x0001, 0x080c, 0x7999, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, +- 0xa286, 0xffff, 0x0150, 0x080c, 0xac7a, 0x01b0, 0xa280, 0x0002, +- 0x2004, 0x7110, 0xa106, 0x1180, 0x0c08, 0x7210, 0x2c08, 0xa085, +- 0x0001, 0x080c, 0xc155, 0x2c10, 0x2160, 0x0130, 0x08b8, 0x6007, +- 0x0037, 0x6013, 0x1500, 0x08d8, 0x6007, 0x0037, 0x6013, 0x1700, +- 0x08b0, 0x6007, 0x0012, 0x0898, 0x080c, 0x2f69, 0x1904, 0xb5e3, +- 0x6018, 0xa080, 0x0001, 0x2004, 0xa084, 0xff00, 0x8007, 0xa086, +- 0x0006, 0x1904, 0xb3e4, 0x00e6, 0x00d6, 0x00c6, 0x2001, 0xc672, +- 0x2004, 0xd0e4, 0x0904, 0xb5a5, 0x2069, 0xc600, 0x2071, 0xcc8c, +- 0x7008, 0x6036, 0x720c, 0x623a, 0xa286, 0xffff, 0x1150, 0x7208, +- 0x00c6, 0x2c08, 0xa085, 0x0001, 0x080c, 0xc155, 0x2c10, 0x00ce, +- 0x0588, 0x080c, 0xac7a, 0x0570, 0x00c6, 0x0026, 0x2260, 0x080c, +- 0xa94d, 0x002e, 0x00ce, 0x7118, 0xa18c, 0xff00, 0x810f, 0xa186, +- 0x0001, 0x0158, 0xa186, 0x0005, 0x0118, 0xa186, 0x0007, 0x1178, +- 0xa280, 0x0004, 0x2004, 0xa005, 0x0150, 0x0056, 0x7510, 0x7614, +- 0x080c, 0xc206, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x6007, +- 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003, 0x0001, 0x080c, +- 0x7999, 0x0c88, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x1700, +- 0x6003, 0x0001, 0x080c, 0x7999, 0x0c30, 0x6007, 0x003b, 0x602b, +- 0x000b, 0x6013, 0x0000, 0x0804, 0xb50f, 0x00e6, 0x0026, 0x080c, +- 0x570b, 0x0558, 0x080c, 0x568d, 0x080c, 0xc3e6, 0x1520, 0x2071, +- 0xc600, 0x70d4, 0xc085, 0x70d6, 0x00f6, 0x2079, 0x0100, 0x72a0, +- 0xa284, 0x00ff, 0x7072, 0x78e6, 0xa284, 0xff00, 0x7274, 0xa205, +- 0x7076, 0x78ea, 0x00fe, 0x70df, 0x0000, 0x2001, 0xc653, 0x2004, +- 0xd0a4, 0x0120, 0x2011, 0xc940, 0x2013, 0x07d0, 0xd0ac, 0x1128, +- 0x080c, 0x2c62, 0x0010, 0x080c, 0xc412, 0x002e, 0x00ee, 0x080c, +- 0x95dc, 0x0804, 0xb3e3, 0x080c, 0x95dc, 0x0005, 0x2600, 0x0002, +- 0xb5f1, 0xb625, 0xb636, 0xb5f1, 0xb5f1, 0xb5f3, 0xb60c, 0xb5f1, +- 0xb5f1, 0x080c, 0x1519, 0x080c, 0xc36b, 0x1d68, 0x080c, 0x2f69, +- 0x1d50, 0x080c, 0xb647, 0x1138, 0x6007, 0x0045, 0x6003, 0x0001, +- 0x080c, 0x79df, 0x0005, 0x080c, 0x2e46, 0x6007, 0x0001, 0x6003, +- 0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0x2f69, 0x19a0, 0x080c, +- 0x768f, 0x1160, 0x2e00, 0xa080, 0x0010, 0x2004, 0x8007, 0xd084, +- 0x0110, 0x080c, 0xc41b, 0x080c, 0x95dc, 0x0005, 0x2009, 0x0046, +- 0x080c, 0xc441, 0x080c, 0x95dc, 0x0005, 0x080c, 0x2f69, 0x1904, +- 0xb5e3, 0x2009, 0x0041, 0x080c, 0xc441, 0x6007, 0x0047, 0x6003, +- 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x0005, 0x080c, 0x2f69, +- 0x1904, 0xb5e3, 0x2009, 0x0042, 0x080c, 0xc441, 0x6007, 0x0047, +- 0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x0005, 0x00d6, +- 0x0066, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, +- 0x0006, 0x0170, 0xa686, 0x0004, 0x0158, 0x6e04, 0xa6b4, 0x00ff, +- 0xa686, 0x0006, 0x0128, 0xa686, 0x0004, 0x0110, 0xa085, 0x0001, +- 0x006e, 0x00de, 0x0005, 0x00d6, 0x0449, 0x00de, 0x0005, 0x00d6, +- 0x0491, 0x11f0, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, +- 0xa115, 0x6212, 0x6824, 0x602a, 0xd1e4, 0x0118, 0x2009, 0x0001, +- 0x0060, 0xd1ec, 0x0168, 0x6920, 0xa18c, 0x00ff, 0x6824, 0x080c, +- 0x29c7, 0x1130, 0x2110, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x0018, +- 0xa085, 0x0001, 0x0008, 0xa006, 0x00de, 0x0005, 0x2069, 0xcc8d, +- 0x6800, 0xa082, 0x0010, 0x1228, 0x6013, 0x0000, 0xa085, 0x0001, +- 0x0008, 0xa006, 0x0005, 0x6013, 0x0000, 0x2069, 0xcc8c, 0x6808, +- 0xa084, 0xff00, 0xa086, 0x0800, 0x1140, 0x6800, 0xa084, 0x00ff, +- 0xa08e, 0x0014, 0x0110, 0xa08e, 0x0010, 0x0005, 0x6004, 0xa0b2, +- 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013, 0x1130, 0x2008, 0xa1b2, +- 0x0040, 0x1a04, 0xb7b0, 0x0092, 0xa1b6, 0x0027, 0x0120, 0xa1b6, +- 0x0014, 0x190c, 0x1519, 0x2001, 0x0007, 0x080c, 0x52be, 0x080c, +- 0x7db1, 0x080c, 0xae4d, 0x080c, 0x7e94, 0x0005, 0xb70e, 0xb710, +- 0xb70e, 0xb70e, 0xb70e, 0xb710, 0xb722, 0xb7a9, 0xb772, 0xb7a9, +- 0xb785, 0xb7a9, 0xb722, 0xb7a9, 0xb7a1, 0xb7a9, 0xb7a1, 0xb7a9, +- 0xb7a9, 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0xb70e, +- 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0xb710, 0xb70e, 0xb7a9, 0xb70e, +- 0xb70e, 0xb7a9, 0xb70e, 0xb7a6, 0xb7a9, 0xb70e, 0xb70e, 0xb70e, +- 0xb70e, 0xb7a9, 0xb7a9, 0xb70e, 0xb7a9, 0xb7a9, 0xb70e, 0xb71c, +- 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0xb7a5, 0xb7a9, 0xb70e, 0xb70e, +- 0xb7a9, 0xb7a9, 0xb70e, 0xb70e, 0xb70e, 0xb70e, 0x080c, 0x1519, +- 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x6003, 0x0002, +- 0x080c, 0x7e94, 0x0804, 0xb7af, 0x2001, 0x0000, 0x080c, 0x527f, +- 0x0804, 0xb7a9, 0x00f6, 0x2079, 0xc652, 0x7804, 0x00fe, 0xd0ac, +- 0x1904, 0xb7a9, 0x2001, 0x0000, 0x080c, 0x527f, 0x6018, 0xa080, +- 0x0004, 0x2004, 0xa086, 0x00ff, 0x1140, 0x00f6, 0x2079, 0xc600, +- 0x7898, 0x8000, 0x789a, 0x00fe, 0x00e0, 0x00c6, 0x6018, 0x2060, +- 0x6000, 0xd0f4, 0x1140, 0x6010, 0xa005, 0x0128, 0x00ce, 0x080c, +- 0x40ef, 0x0804, 0xb7a9, 0x00ce, 0x2001, 0xc600, 0x2004, 0xa086, +- 0x0002, 0x1138, 0x00f6, 0x2079, 0xc600, 0x7898, 0x8000, 0x789a, +- 0x00fe, 0x2001, 0x0002, 0x080c, 0x5291, 0x080c, 0x7db1, 0x601f, +- 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c, +- 0x7e94, 0x00c6, 0x6118, 0x2160, 0x2009, 0x0001, 0x080c, 0x6fb9, +- 0x00ce, 0x04e8, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa6b4, +- 0xff00, 0x8637, 0xa686, 0x0006, 0x0560, 0xa686, 0x0004, 0x0548, +- 0x080c, 0x7669, 0x2001, 0x0004, 0x0410, 0x2001, 0xc600, 0x2004, +- 0xa086, 0x0003, 0x1110, 0x080c, 0x40ef, 0x2001, 0x0006, 0x04a1, +- 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, +- 0xa686, 0x0006, 0x0170, 0x2001, 0x0006, 0x0048, 0x2001, 0x0004, +- 0x0030, 0x2001, 0x0006, 0x0401, 0x0020, 0x0018, 0x0010, 0x080c, +- 0x52be, 0x080c, 0x7db1, 0x080c, 0x95dc, 0x080c, 0x7e94, 0x0005, +- 0x2600, 0x0002, 0xb7bb, 0xb7bb, 0xb7bb, 0xb7bb, 0xb7bb, 0xb7bd, +- 0xb7bb, 0xb7bd, 0xb7bb, 0x080c, 0x1519, 0x080c, 0x7db1, 0x080c, +- 0x95dc, 0x080c, 0x7e94, 0x0005, 0x0016, 0x00d6, 0x6118, 0x2168, +- 0x6900, 0xd184, 0x0140, 0x080c, 0x5291, 0x2001, 0x0000, 0x080c, +- 0x527f, 0x080c, 0x2e6c, 0x00de, 0x001e, 0x0005, 0x00d6, 0x6618, +- 0x2668, 0x6804, 0xa084, 0xff00, 0x8007, 0x00de, 0xa0b2, 0x000c, +- 0x1a0c, 0x1519, 0xa1b6, 0x0015, 0x1110, 0x003b, 0x0028, 0xa1b6, +- 0x0016, 0x190c, 0x1519, 0x006b, 0x0005, 0x9cd3, 0x9cd3, 0x9cd3, +- 0x9cd3, 0x9cd3, 0x9cd3, 0xb846, 0xb805, 0x9cd3, 0x9cd3, 0x9cd3, +- 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0xb846, +- 0xb84d, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0x00f6, 0x2079, 0xc652, +- 0x7804, 0xd0ac, 0x11e0, 0x6018, 0xa07d, 0x01c8, 0x7800, 0xd0f4, +- 0x1118, 0x7810, 0xa005, 0x1198, 0x2001, 0x0000, 0x080c, 0x527f, +- 0x2001, 0x0002, 0x080c, 0x5291, 0x601f, 0x0001, 0x6003, 0x0001, +- 0x6007, 0x0002, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00e8, 0x2011, +- 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x11a8, 0x00c6, +- 0x080c, 0x533d, 0x0120, 0x00ce, 0x080c, 0x95dc, 0x0068, 0x6010, +- 0x0006, 0x6014, 0x0006, 0x080c, 0x4f47, 0x000e, 0x6016, 0x000e, +- 0x6012, 0x00ce, 0x080c, 0x95dc, 0x00fe, 0x0005, 0x6604, 0xa6b6, +- 0x001e, 0x1110, 0x080c, 0x95dc, 0x0005, 0x080c, 0x9faf, 0x1138, +- 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x79df, 0x0010, 0x080c, +- 0x95dc, 0x0005, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x080c, +- 0x7db1, 0x080c, 0xae4d, 0x080c, 0x7e94, 0x0005, 0xa182, 0x0040, +- 0x0002, 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0xb87e, 0xb87c, 0xb87c, +- 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0xb87c, +- 0xb87c, 0xb87c, 0xb87c, 0xb87c, 0x080c, 0x1519, 0x00d6, 0x00e6, +- 0x00f6, 0x0156, 0x0046, 0x0026, 0x6218, 0xa280, 0x002f, 0x2004, +- 0xa005, 0x0120, 0x2021, 0x0000, 0x080c, 0xc3b7, 0x6106, 0x2071, +- 0xcc80, 0x7444, 0xa4a4, 0xff00, 0x0904, 0xb8e2, 0xa486, 0x2000, +- 0x1130, 0x2009, 0x0001, 0x2011, 0x0200, 0x080c, 0x712e, 0x080c, +- 0x1602, 0x090c, 0x1519, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, +- 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, +- 0x68b2, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x0016, +- 0xa084, 0xff00, 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6857, +- 0x0036, 0x080c, 0x580a, 0x001e, 0xa486, 0x2000, 0x1130, 0x2019, +- 0x0017, 0x080c, 0xc100, 0x0804, 0xb93f, 0xa486, 0x0400, 0x1130, +- 0x2019, 0x0002, 0x080c, 0xc0b2, 0x0804, 0xb93f, 0xa486, 0x0200, +- 0x1110, 0x080c, 0xc097, 0xa486, 0x1000, 0x1110, 0x080c, 0xc0e5, +- 0x0804, 0xb93f, 0x2069, 0xc9bc, 0x6a00, 0xd284, 0x0904, 0xb9a6, +- 0xa284, 0x0300, 0x1904, 0xb99f, 0x6804, 0xa005, 0x0904, 0xb987, +- 0x2d78, 0x6003, 0x0007, 0x080c, 0x15e5, 0x0904, 0xb946, 0x7800, +- 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6013, 0x0000, 0x6803, +- 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x6008, 0x68b2, 0x2c00, +- 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x6986, 0x6846, +- 0x7928, 0x698a, 0x792c, 0x698e, 0x7930, 0x6992, 0x7934, 0x6996, +- 0x6853, 0x003d, 0x7244, 0xa294, 0x0003, 0xa286, 0x0002, 0x1118, +- 0x684f, 0x0040, 0x0040, 0xa286, 0x0001, 0x1118, 0x684f, 0x0080, +- 0x0010, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001, 0xcc90, 0xad90, +- 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210, 0x1f04, 0xb931, +- 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x080c, 0x580a, 0x002e, +- 0x004e, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x0005, 0x2001, 0xc60e, +- 0x2004, 0xd084, 0x0120, 0x080c, 0x1602, 0x1904, 0xb8f7, 0x6013, +- 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7999, 0x080c, +- 0x7e94, 0x0c28, 0x2069, 0xcc92, 0x2d04, 0xa084, 0xff00, 0xa086, +- 0x1200, 0x11a8, 0x2069, 0xcc80, 0x686c, 0xa084, 0x00ff, 0x0016, +- 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x001e, 0x6003, 0x0001, +- 0x6007, 0x0043, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0840, 0x6868, +- 0x602a, 0x686c, 0x602e, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, +- 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0804, 0xb93f, 0x2001, +- 0xc60d, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x407d, +- 0x6013, 0x0300, 0x0010, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, +- 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0804, 0xb93f, 0x6013, +- 0x0500, 0x0c98, 0x6013, 0x0600, 0x0804, 0xb95a, 0x6013, 0x0200, +- 0x0804, 0xb95a, 0xa186, 0x0013, 0x1170, 0x6004, 0xa08a, 0x0040, +- 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c, 0x1519, 0xa082, 0x0040, +- 0x2008, 0x0804, 0xba34, 0xa186, 0x0051, 0x0138, 0xa186, 0x0047, +- 0x11d8, 0x6004, 0xa086, 0x0041, 0x0518, 0x2001, 0x0109, 0x2004, +- 0xd084, 0x01f0, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, +- 0x080c, 0x7873, 0x002e, 0x001e, 0x000e, 0x012e, 0x6000, 0xa086, +- 0x0002, 0x1170, 0x0804, 0xba77, 0xa186, 0x0027, 0x0120, 0xa186, +- 0x0014, 0x190c, 0x1519, 0x6004, 0xa082, 0x0040, 0x2008, 0x001a, +- 0x080c, 0x9623, 0x0005, 0xb9fe, 0xba00, 0xba00, 0xba24, 0xb9fe, +- 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, +- 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0xb9fe, 0x080c, 0x1519, +- 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0036, 0x00d6, 0x6010, 0xa06d, +- 0x01c0, 0xad84, 0xf000, 0x01a8, 0x6003, 0x0002, 0x6018, 0x2004, +- 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, 0xc134, 0x6013, 0x0000, +- 0x6014, 0xa005, 0x1120, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x6003, +- 0x0007, 0x00de, 0x003e, 0x0005, 0x00d6, 0x080c, 0x7db1, 0x080c, +- 0x7e94, 0x080c, 0xac8a, 0x0120, 0x6010, 0x2068, 0x080c, 0x1619, +- 0x080c, 0xae4d, 0x00de, 0x0005, 0x0002, 0xba48, 0xba65, 0xba51, +- 0xba71, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, +- 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, 0xba48, +- 0x080c, 0x1519, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, +- 0x200a, 0x080c, 0x7db1, 0x6010, 0xa080, 0x0013, 0x2004, 0xd0b4, +- 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c, 0x960c, 0x0010, +- 0x6003, 0x0002, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, +- 0xc372, 0x1120, 0x080c, 0x7103, 0x080c, 0x95dc, 0x080c, 0x7e94, +- 0x0005, 0x080c, 0x7db1, 0x2009, 0x0041, 0x0804, 0xbbc0, 0xa182, +- 0x0040, 0x0002, 0xba8d, 0xba8f, 0xba8d, 0xba8d, 0xba8d, 0xba8d, +- 0xba8d, 0xba90, 0xba8d, 0xba8d, 0xba8d, 0xba8d, 0xba8d, 0xba8d, +- 0xba8d, 0xba8d, 0xba8d, 0xba9b, 0xba8d, 0x080c, 0x1519, 0x0005, +- 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, +- 0x080c, 0x1870, 0x0005, 0x00d6, 0x080c, 0x7103, 0x00de, 0x080c, +- 0xc3d5, 0x080c, 0x95dc, 0x0005, 0xa182, 0x0040, 0x0002, 0xbaba, +- 0xbaba, 0xbaba, 0xbaba, 0xbaba, 0xbaba, 0xbaba, 0xbabc, 0xbaba, +- 0xbabf, 0xbaf8, 0xbaba, 0xbaba, 0xbaba, 0xbaba, 0xbaf8, 0xbaba, +- 0xbaba, 0xbaba, 0x080c, 0x1519, 0x080c, 0x9623, 0x0005, 0x2001, +- 0xc672, 0x2004, 0xd0e4, 0x0158, 0x2001, 0x0100, 0x2004, 0xa082, +- 0x0005, 0x0228, 0x2001, 0x011f, 0x2004, 0x6036, 0x0010, 0x6037, +- 0x0000, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6010, 0x00d6, 0x2068, +- 0x684c, 0xd0fc, 0x0150, 0xa08c, 0x0003, 0xa18e, 0x0002, 0x0168, +- 0x2009, 0x0041, 0x00de, 0x0804, 0xbbc0, 0x6003, 0x0007, 0x6017, +- 0x0000, 0x080c, 0x7103, 0x00de, 0x0005, 0x080c, 0xc372, 0x0110, +- 0x00de, 0x0005, 0x080c, 0x7103, 0x080c, 0x95dc, 0x00de, 0x0ca0, +- 0x0036, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6010, 0x00d6, 0x2068, +- 0x6018, 0x2004, 0xd0bc, 0x0188, 0x684c, 0xa084, 0x0003, 0xa086, +- 0x0002, 0x0140, 0x687c, 0x632c, 0xa31a, 0x632e, 0x6880, 0x6328, +- 0xa31b, 0x632a, 0x6003, 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, +- 0xc134, 0x6014, 0xa005, 0x1128, 0x2001, 0xc8fe, 0x2004, 0x8003, +- 0x6016, 0x6013, 0x0000, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, +- 0xa186, 0x0013, 0x1150, 0x6004, 0xa086, 0x0042, 0x190c, 0x1519, +- 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0005, 0xa186, 0x0027, 0x0118, +- 0xa186, 0x0014, 0x1180, 0x6004, 0xa086, 0x0042, 0x190c, 0x1519, +- 0x2001, 0x0007, 0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0xae4d, +- 0x080c, 0x7e94, 0x0005, 0xa182, 0x0040, 0x0002, 0xbb61, 0xbb61, +- 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb63, 0xbb6f, 0xbb61, +- 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb61, 0xbb61, +- 0xbb61, 0x080c, 0x1519, 0x0036, 0x0046, 0x20e1, 0x0005, 0x3d18, +- 0x3e20, 0x2c10, 0x080c, 0x1870, 0x004e, 0x003e, 0x0005, 0x6010, +- 0x00d6, 0x2068, 0x6810, 0x6a14, 0x0006, 0x0046, 0x0056, 0x6c7c, +- 0xa422, 0x6d80, 0x2200, 0xa52b, 0x602c, 0xa420, 0x642e, 0x6028, +- 0xa529, 0x652a, 0x005e, 0x004e, 0x000e, 0xa20d, 0x1178, 0x684c, +- 0xd0fc, 0x0120, 0x2009, 0x0041, 0x00de, 0x0490, 0x6003, 0x0007, +- 0x6017, 0x0000, 0x080c, 0x7103, 0x00de, 0x0005, 0x0006, 0x00f6, +- 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x000e, 0x0120, 0x6003, 0x0002, +- 0x00de, 0x0005, 0x2009, 0xc60d, 0x210c, 0xd19c, 0x0118, 0x6003, +- 0x0007, 0x0010, 0x6003, 0x0006, 0x0021, 0x080c, 0x7105, 0x00de, +- 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000, 0x8212, 0xa291, 0x0000, +- 0x2009, 0x0009, 0x0010, 0x2009, 0x0015, 0x6a6a, 0x6866, 0x0005, +- 0xa182, 0x0040, 0x0208, 0x0062, 0xa186, 0x0013, 0x0120, 0xa186, +- 0x0014, 0x190c, 0x1519, 0x6020, 0xd0dc, 0x090c, 0x1519, 0x0005, +- 0xbbe3, 0xbbea, 0xbbf6, 0xbc02, 0xbbe3, 0xbbe3, 0xbbe3, 0xbc11, +- 0xbbe3, 0xbbe5, 0xbbe5, 0xbbe3, 0xbbe3, 0xbbe3, 0xbbe3, 0xbbe5, +- 0xbbe3, 0xbbe5, 0xbbe3, 0x080c, 0x1519, 0x6020, 0xd0dc, 0x090c, +- 0x1519, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, +- 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x6003, 0x0001, +- 0x6106, 0x080c, 0x7999, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, +- 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x2068, +- 0x0126, 0x2091, 0x8000, 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x012e, +- 0x0005, 0xa016, 0x080c, 0x1870, 0x0005, 0x0126, 0x2091, 0x8000, +- 0x0036, 0x00d6, 0xa182, 0x0040, 0x0023, 0x00de, 0x003e, 0x012e, +- 0x0005, 0xbc31, 0xbc33, 0xbc45, 0xbc60, 0xbc31, 0xbc31, 0xbc31, +- 0xbc75, 0xbc31, 0xbc31, 0xbc31, 0xbc31, 0xbc31, 0xbc31, 0xbc31, +- 0xbc31, 0x080c, 0x1519, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x01f8, +- 0xa09c, 0x0003, 0xa39e, 0x0003, 0x01d0, 0x6003, 0x0001, 0x6106, +- 0x080c, 0x7999, 0x080c, 0x7e94, 0x0498, 0x6010, 0x2068, 0x684c, +- 0xd0fc, 0x0168, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0140, 0x6003, +- 0x0001, 0x6106, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0408, 0x6013, +- 0x0000, 0x6017, 0x0000, 0x2019, 0x0004, 0x080c, 0xc134, 0x00c0, +- 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0d90, 0xa09c, 0x0003, 0xa39e, +- 0x0003, 0x0d68, 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x2068, +- 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0018, 0xa016, 0x080c, 0x1870, +- 0x0005, 0x080c, 0x7db1, 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168, +- 0x080c, 0xc4ca, 0x0036, 0x2019, 0x0029, 0x080c, 0xc134, 0x003e, +- 0x00de, 0x080c, 0xae4d, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7e47, +- 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168, 0x080c, 0xc4ca, 0x0036, +- 0x2019, 0x0029, 0x080c, 0xc134, 0x003e, 0x00de, 0x080c, 0xae4d, +- 0x080c, 0x7f6e, 0x0005, 0xa182, 0x0085, 0x0002, 0xbcaf, 0xbcad, +- 0xbcad, 0xbcbb, 0xbcad, 0xbcad, 0xbcad, 0x080c, 0x1519, 0x6003, +- 0x000b, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091, 0x8000, 0x080c, +- 0x7e94, 0x012e, 0x0005, 0x0026, 0x00e6, 0x080c, 0xc36b, 0x0118, +- 0x080c, 0x95dc, 0x00c8, 0x2071, 0xcc80, 0x7224, 0x6212, 0x7220, +- 0x080c, 0xbfe2, 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, 0x0087, +- 0x7224, 0xa296, 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, 0x0001, +- 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ee, 0x002e, 0x0005, 0xa186, +- 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1519, 0xa08a, +- 0x008c, 0x1a0c, 0x1519, 0xa082, 0x0085, 0x00a2, 0xa186, 0x0027, +- 0x0130, 0xa186, 0x0014, 0x0118, 0x080c, 0x9623, 0x0050, 0x2001, +- 0x0007, 0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, +- 0x7e94, 0x0005, 0xbd09, 0xbd0b, 0xbd0b, 0xbd09, 0xbd09, 0xbd09, +- 0xbd09, 0x080c, 0x1519, 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, +- 0x7e94, 0x0005, 0xa182, 0x0085, 0x0a0c, 0x1519, 0xa182, 0x008c, +- 0x1a0c, 0x1519, 0xa182, 0x0085, 0x0002, 0xbd24, 0xbd24, 0xbd24, +- 0xbd26, 0xbd24, 0xbd24, 0xbd24, 0x080c, 0x1519, 0x0005, 0xa186, +- 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, +- 0x080c, 0x9623, 0x0030, 0x080c, 0x7db1, 0x080c, 0xae4d, 0x080c, +- 0x7e94, 0x0005, 0x0036, 0x080c, 0xc3d5, 0x603f, 0x0000, 0x2019, +- 0x000b, 0x0031, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, +- 0x0126, 0x0036, 0x2091, 0x8000, 0x0086, 0x2c40, 0x0096, 0x2049, +- 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x1578, 0x0076, 0x2c38, +- 0x080c, 0x9068, 0x007e, 0x1548, 0x6000, 0xa086, 0x0000, 0x0528, +- 0x601c, 0xa086, 0x0007, 0x0508, 0x00d6, 0x6000, 0xa086, 0x0004, +- 0x1150, 0x080c, 0xc3d5, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, +- 0x6016, 0x080c, 0x1953, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0110, +- 0x080c, 0xc134, 0x00de, 0x6013, 0x0000, 0x080c, 0xc3d5, 0x601f, +- 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x003e, 0x012e, 0x0005, +- 0x00f6, 0x00c6, 0x0036, 0x0156, 0x2079, 0xcc80, 0x7938, 0x783c, +- 0x080c, 0x29c7, 0x15b0, 0x0016, 0x00c6, 0x080c, 0x533d, 0x1578, +- 0x001e, 0x002e, 0x0026, 0x0016, 0x2019, 0x0029, 0x080c, 0x912b, +- 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x007e, +- 0x001e, 0x0076, 0x2039, 0x0000, 0x080c, 0xbeea, 0x007e, 0x080c, +- 0x553e, 0x0026, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, +- 0x0118, 0xa286, 0x0004, 0x1118, 0x62a0, 0x080c, 0x2eff, 0x002e, +- 0x001e, 0x080c, 0x4f47, 0x6612, 0x6516, 0xa006, 0x0010, 0x00ce, +- 0x001e, 0x015e, 0x003e, 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, +- 0x00e6, 0x0016, 0x2009, 0xc621, 0x2104, 0xa086, 0x0074, 0x1904, +- 0xbe23, 0x2069, 0xcc8e, 0x690c, 0xa182, 0x0100, 0x06c0, 0x6908, +- 0xa184, 0x8000, 0x05e8, 0x2001, 0xc8e5, 0x2004, 0xa005, 0x1160, +- 0x6018, 0x2070, 0x7010, 0xa084, 0x00ff, 0x0118, 0x7000, 0xd0f4, +- 0x0118, 0xa184, 0x0800, 0x0560, 0x6910, 0xa18a, 0x0001, 0x0610, +- 0x6914, 0x2069, 0xccae, 0x6904, 0x81ff, 0x1198, 0x690c, 0xa182, +- 0x0100, 0x02a8, 0x6908, 0x81ff, 0x1178, 0x6910, 0xa18a, 0x0001, +- 0x0288, 0x6918, 0xa18a, 0x0001, 0x0298, 0x00d0, 0x6013, 0x0100, +- 0x00a0, 0x6013, 0x0300, 0x0088, 0x6013, 0x0500, 0x0070, 0x6013, +- 0x0700, 0x0058, 0x6013, 0x0900, 0x0040, 0x6013, 0x0b00, 0x0028, +- 0x6013, 0x0f00, 0x0010, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0008, +- 0xa006, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, +- 0x0026, 0x0036, 0x0156, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, +- 0xa286, 0x0006, 0x0190, 0xa286, 0x0004, 0x0178, 0xa394, 0xff00, +- 0x8217, 0xa286, 0x0006, 0x0148, 0xa286, 0x0004, 0x0130, 0x00c6, +- 0x2d60, 0x080c, 0x534c, 0x00ce, 0x04c0, 0x2011, 0xcc96, 0xad98, +- 0x000a, 0x20a9, 0x0004, 0x080c, 0xa0fc, 0x1580, 0x2011, 0xcc9a, +- 0xad98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa0fc, 0x1538, 0x0046, +- 0x0016, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xc653, +- 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xc183, 0x6800, +- 0xc0e5, 0x6802, 0x2019, 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, +- 0x0000, 0x080c, 0x7a0e, 0x2c08, 0x080c, 0xbeea, 0x007e, 0x2001, +- 0x0007, 0x080c, 0x52be, 0x001e, 0x004e, 0xa006, 0x015e, 0x003e, +- 0x002e, 0x00de, 0x00ce, 0x0005, 0x00d6, 0x2069, 0xcc8e, 0x6800, +- 0xa086, 0x0800, 0x0118, 0x6013, 0x0000, 0x0008, 0xa006, 0x00de, +- 0x0005, 0x00c6, 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, +- 0xcc8c, 0x7930, 0x7834, 0x080c, 0x29c7, 0x11a0, 0x080c, 0x533d, +- 0x1188, 0x2011, 0xcc90, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, +- 0xa0fc, 0x1140, 0x2011, 0xcc94, 0xac98, 0x0006, 0x20a9, 0x0004, +- 0x080c, 0xa0fc, 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, +- 0x0005, 0x00c6, 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, +- 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x11a0, 0x080c, +- 0x533d, 0x1188, 0x2011, 0xcc96, 0xac98, 0x000a, 0x20a9, 0x0004, +- 0x080c, 0xa0fc, 0x1140, 0x2011, 0xcc9a, 0xac98, 0x0006, 0x20a9, +- 0x0004, 0x080c, 0xa0fc, 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, +- 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, +- 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, 0xc930, +- 0x252c, 0x2021, 0xc936, 0x2424, 0x2061, 0xce00, 0x2071, 0xc600, +- 0x7648, 0x7068, 0x81ff, 0x0150, 0x0006, 0xa186, 0xca3c, 0x000e, +- 0x0128, 0x8001, 0xa602, 0x1a04, 0xbf6b, 0x0018, 0xa606, 0x0904, +- 0xbf6b, 0x2100, 0xac06, 0x0904, 0xbf62, 0x080c, 0xc1ab, 0x0904, +- 0xbf62, 0x671c, 0xa786, 0x0001, 0x0904, 0xbfb4, 0xa786, 0x0004, +- 0x0904, 0xbfb4, 0xa786, 0x0007, 0x05e8, 0x2500, 0xac06, 0x05d0, +- 0x2400, 0xac06, 0x05b8, 0x080c, 0xc1bb, 0x15a0, 0x88ff, 0x0118, +- 0x6050, 0xa906, 0x1578, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1120, +- 0x0016, 0x080c, 0x1953, 0x001e, 0xa786, 0x0008, 0x1148, 0x080c, +- 0xae88, 0x1130, 0x080c, 0x9c02, 0x00de, 0x080c, 0xae4d, 0x00d0, +- 0x6010, 0x2068, 0x080c, 0xac8a, 0x0190, 0xa786, 0x0003, 0x1528, +- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xc4ca, 0x0016, +- 0x080c, 0xaefc, 0x080c, 0x580a, 0x001e, 0x080c, 0xae41, 0x00de, +- 0x080c, 0xae4d, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, +- 0x1210, 0x0804, 0xbefe, 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, +- 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0xa786, 0x0006, 0x1150, +- 0xa386, 0x0005, 0x0128, 0x080c, 0xc4ca, 0x080c, 0xc134, 0x08f8, +- 0x00de, 0x0c00, 0xa786, 0x0009, 0x1548, 0x6000, 0xa086, 0x0004, +- 0x1128, 0x00c6, 0x080c, 0x761a, 0x00ce, 0x00e8, 0x6000, 0xa086, +- 0x0003, 0x11c8, 0x080c, 0x7e47, 0x00e6, 0x00d6, 0x6110, 0x2168, +- 0x080c, 0xac8a, 0x0140, 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, +- 0x0000, 0x080c, 0x580a, 0x00de, 0x00ee, 0x00c6, 0x080c, 0x95dc, +- 0x00ce, 0x080c, 0x7f6e, 0x00de, 0x0804, 0xbf62, 0xa786, 0x000a, +- 0x0904, 0xbf52, 0x0804, 0xbf50, 0x080c, 0xc1bb, 0x1904, 0xbf62, +- 0x81ff, 0x0904, 0xbf62, 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, +- 0x0138, 0xa180, 0x0001, 0x2004, 0xa086, 0x002d, 0x1904, 0xbf62, +- 0x6000, 0xa086, 0x0002, 0x1904, 0xbf62, 0x080c, 0xae77, 0x0138, +- 0x080c, 0xae88, 0x1904, 0xbf62, 0x080c, 0x9c02, 0x0038, 0x080c, +- 0x2e6c, 0x080c, 0xae88, 0x1110, 0x080c, 0x9c02, 0x080c, 0xae4d, +- 0x0804, 0xbf62, 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, +- 0x080c, 0xc155, 0x001e, 0x0120, 0x601c, 0xa084, 0x000f, 0x001b, +- 0x00ee, 0x00ce, 0x0005, 0xbffb, 0xbffb, 0xbffb, 0xbffb, 0xbffb, +- 0xbffb, 0xbffd, 0xbffb, 0xa006, 0x0005, 0x0046, 0x0016, 0x7018, +- 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, +- 0x0020, 0x080c, 0xc183, 0x001e, 0x004e, 0x0036, 0x2019, 0x0002, +- 0x080c, 0xbd48, 0x003e, 0xa085, 0x0001, 0x0005, 0x2001, 0x0001, +- 0x080c, 0x527f, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, +- 0x2019, 0xc605, 0x2011, 0xcc96, 0x080c, 0xa0fc, 0x003e, 0x002e, +- 0x001e, 0x015e, 0xa005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, +- 0x0076, 0x0066, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, +- 0xce00, 0x2079, 0x0001, 0x8fff, 0x0904, 0xc08a, 0x2071, 0xc600, +- 0x7648, 0x7068, 0x8001, 0xa602, 0x1a04, 0xc08a, 0x88ff, 0x0128, +- 0x2800, 0xac06, 0x15b0, 0x2079, 0x0000, 0x080c, 0xc1ab, 0x0588, +- 0x2400, 0xac06, 0x0570, 0x671c, 0xa786, 0x0006, 0x1550, 0xa786, +- 0x0007, 0x0538, 0x88ff, 0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, +- 0x0118, 0x6050, 0xa106, 0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, +- 0x1150, 0x080c, 0xc3d5, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, +- 0x6016, 0x080c, 0x1953, 0x6010, 0x2068, 0x080c, 0xac8a, 0x0120, +- 0x0046, 0x080c, 0xc134, 0x004e, 0x00de, 0x080c, 0xae4d, 0x88ff, +- 0x1198, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, +- 0x0804, 0xc03b, 0xa006, 0x012e, 0x002e, 0x006e, 0x007e, 0x008e, +- 0x00ce, 0x00ee, 0x00fe, 0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, +- 0x0056, 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, +- 0x0002, 0x6218, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, +- 0x008e, 0x2039, 0x0000, 0x080c, 0x9068, 0x080c, 0xc02c, 0x005e, +- 0x007e, 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, +- 0x2c20, 0x2128, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, +- 0x080c, 0x533d, 0x11b0, 0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, +- 0x2508, 0x2029, 0x0001, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, +- 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x9068, 0x080c, 0xc02c, +- 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xc0be, 0x015e, 0x00ce, +- 0x007e, 0x005e, 0x004e, 0x002e, 0x0005, 0x0076, 0x0056, 0x6218, +- 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, +- 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039, 0x0000, +- 0x080c, 0x9068, 0x2c20, 0x080c, 0xc02c, 0x005e, 0x007e, 0x0005, +- 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, +- 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x533d, 0x11c0, +- 0x2c10, 0x0086, 0x2041, 0x0000, 0x2828, 0x0046, 0x2021, 0x0001, +- 0x080c, 0xc3b7, 0x004e, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, +- 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x9068, 0x080c, 0xc02c, +- 0x003e, 0x001e, 0x8108, 0x1f04, 0xc10b, 0x015e, 0x00ce, 0x007e, +- 0x005e, 0x004e, 0x002e, 0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, +- 0x0130, 0xad82, 0x1000, 0x02b0, 0xad82, 0xc600, 0x0230, 0xad82, +- 0xfe00, 0x0280, 0xad82, 0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, +- 0x6803, 0x0000, 0x6b52, 0x080c, 0x580a, 0x2f68, 0x0cb0, 0x6b52, +- 0x080c, 0x580a, 0x00fe, 0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, +- 0x2061, 0xce00, 0xa005, 0x1138, 0x2071, 0xc600, 0x7448, 0x7068, +- 0x8001, 0xa402, 0x12d8, 0x2100, 0xac06, 0x0168, 0x6000, 0xa086, +- 0x0000, 0x0148, 0x6008, 0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, +- 0x2424, 0xa406, 0x0140, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, +- 0xac02, 0x1220, 0x0c40, 0xa085, 0x0001, 0x0008, 0xa006, 0x003e, +- 0x004e, 0x00ee, 0x0005, 0x00d6, 0x0006, 0x080c, 0x1602, 0x000e, +- 0x090c, 0x1519, 0x6837, 0x010d, 0x685e, 0x0026, 0x2010, 0x080c, +- 0xac7a, 0x2001, 0x0000, 0x0120, 0x2200, 0xa080, 0x0014, 0x2004, +- 0x002e, 0x684a, 0x6956, 0x6c46, 0x684f, 0x0000, 0x2001, 0xc905, +- 0x2004, 0x6852, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, +- 0x580a, 0x00de, 0x0005, 0x6700, 0xa786, 0x0000, 0x0158, 0xa786, +- 0x0001, 0x0140, 0xa786, 0x000a, 0x0128, 0xa786, 0x0009, 0x0110, +- 0xa085, 0x0001, 0x0005, 0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, +- 0x00ee, 0x0005, 0x0016, 0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, +- 0x6130, 0xa18c, 0x00ff, 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, +- 0x000b, 0x601f, 0x0005, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, +- 0x7999, 0x080c, 0x7e94, 0x001e, 0x0005, 0xe000, 0xe000, 0x0005, +- 0x6020, 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0xaf65, 0x0030, +- 0x080c, 0xc3d5, 0x080c, 0x7103, 0x080c, 0x95dc, 0x0005, 0xa280, +- 0x0007, 0x2004, 0xa084, 0x000f, 0x0002, 0xc1fe, 0xc1fe, 0xc1fe, +- 0xc203, 0xc1fe, 0xc200, 0xc200, 0xc1fe, 0xc200, 0xa006, 0x0005, +- 0x00c6, 0x2260, 0x00ce, 0xa085, 0x0001, 0x0005, 0xa280, 0x0007, +- 0x2004, 0xa084, 0x000f, 0x0002, 0xc215, 0xc215, 0xc215, 0xc215, +- 0xc215, 0xc215, 0xc220, 0xc215, 0xc215, 0x6007, 0x003b, 0x602b, +- 0x0009, 0x6013, 0x2a00, 0x6003, 0x0001, 0x080c, 0x7999, 0x0005, +- 0x00c6, 0x2260, 0x080c, 0xc3d5, 0x603f, 0x0000, 0x6020, 0xc0f4, +- 0xc0cc, 0x6022, 0x6037, 0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, +- 0x0007, 0x1904, 0xc27b, 0x6810, 0xa005, 0x0138, 0xa080, 0x0013, +- 0x2004, 0xd0fc, 0x1110, 0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, +- 0x0001, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00c6, 0x2d60, 0x6100, +- 0xa186, 0x0002, 0x1904, 0xc304, 0x6010, 0xa005, 0x1138, 0x6000, +- 0xa086, 0x0007, 0x190c, 0x1519, 0x0804, 0xc304, 0xa08c, 0xf000, +- 0x1130, 0x0028, 0x2068, 0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, +- 0x0013, 0x2004, 0xa084, 0x0003, 0xa086, 0x0002, 0x1180, 0x6010, +- 0x2068, 0x684c, 0xc0dc, 0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, +- 0x6852, 0x2009, 0x0043, 0x080c, 0xbbc0, 0x0804, 0xc304, 0x2009, +- 0x0041, 0x0804, 0xc2fe, 0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, +- 0x0013, 0x2004, 0xd0bc, 0x1118, 0x00de, 0x0804, 0xc215, 0xd0b4, +- 0x0128, 0xd0fc, 0x090c, 0x1519, 0x0804, 0xc233, 0x6007, 0x003a, +- 0x6003, 0x0001, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00c6, 0x2d60, +- 0x6100, 0xa186, 0x0002, 0x0120, 0xa186, 0x0004, 0x1904, 0xc304, +- 0x2071, 0xc96a, 0x7000, 0xa086, 0x0003, 0x1128, 0x7004, 0xac06, +- 0x1110, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, +- 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, +- 0x2009, 0x0042, 0x0804, 0xc2fe, 0x0036, 0x00d6, 0x00d6, 0x080c, +- 0x1602, 0x003e, 0x090c, 0x1519, 0x6837, 0x010d, 0x6803, 0x0000, +- 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, +- 0x6862, 0x6034, 0x6872, 0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, +- 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, +- 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, +- 0x0001, 0x080c, 0x580a, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, +- 0xbd48, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, +- 0x0000, 0x603f, 0x0000, 0x00de, 0x003e, 0x0038, 0x603f, 0x0000, +- 0x6003, 0x0007, 0x080c, 0xbbc0, 0x00ce, 0x00de, 0x0005, 0xa186, +- 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, +- 0x0027, 0x1178, 0x080c, 0x7db1, 0x0036, 0x00d6, 0x6010, 0x2068, +- 0x2019, 0x0004, 0x080c, 0xc134, 0x00de, 0x003e, 0x080c, 0x7e94, +- 0x0005, 0xa186, 0x0014, 0x0d70, 0x080c, 0x9623, 0x0005, 0xc330, +- 0xc32e, 0xc32e, 0xc32e, 0xc32e, 0xc32e, 0xc330, 0x080c, 0x1519, +- 0x080c, 0x7db1, 0x6003, 0x000c, 0x080c, 0x7e94, 0x0005, 0xa182, +- 0x008c, 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x9623, +- 0x0005, 0xc348, 0xc348, 0xc348, 0xc348, 0xc34a, 0xc368, 0xc348, +- 0x080c, 0x1519, 0x00d6, 0x2c68, 0x080c, 0x9586, 0x01a0, 0x6003, +- 0x0001, 0x6007, 0x001e, 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, +- 0xcc8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a, 0x601f, +- 0x0004, 0x080c, 0x7999, 0x2d60, 0x080c, 0x95dc, 0x00de, 0x0005, +- 0x080c, 0x95dc, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, +- 0x00ee, 0x0005, 0x6010, 0xa08c, 0xf000, 0x0904, 0xc3b6, 0xa080, +- 0x0013, 0x200c, 0xd1ec, 0x05d0, 0x2001, 0xc672, 0x2004, 0xd0ec, +- 0x05a8, 0x6003, 0x0002, 0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, +- 0x00f6, 0x2c78, 0x080c, 0x56bf, 0x00fe, 0x0150, 0x2001, 0xc8ff, +- 0x2004, 0x603e, 0x2009, 0xc672, 0x210c, 0xd1f4, 0x11e8, 0x0080, +- 0x2009, 0xc672, 0x210c, 0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, +- 0xa006, 0x00a0, 0x2001, 0xc8ff, 0x200c, 0x8103, 0xa100, 0x603e, +- 0x6018, 0xa088, 0x002f, 0x2104, 0xa005, 0x0118, 0xa088, 0x0003, +- 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0xa085, 0x0001, 0x0005, 0x0016, +- 0x00c6, 0x00e6, 0x6150, 0xa2f0, 0x002f, 0x2e04, 0x2060, 0x8cff, +- 0x0180, 0x84ff, 0x1118, 0x6050, 0xa106, 0x1138, 0x600c, 0x2072, +- 0x080c, 0x7103, 0x080c, 0x95dc, 0x0010, 0xacf0, 0x0003, 0x2e64, +- 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, +- 0x002f, 0x2d04, 0xa005, 0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, +- 0x0003, 0x0cb8, 0x600c, 0x206a, 0x00de, 0x0005, 0x0026, 0x0036, +- 0x0156, 0x2011, 0xc628, 0x2204, 0xa084, 0x00ff, 0x2019, 0xcc8e, +- 0x2334, 0xa636, 0x11d8, 0x8318, 0x2334, 0x2204, 0xa084, 0xff00, +- 0xa636, 0x11a0, 0x2011, 0xcc90, 0x6018, 0xa098, 0x000a, 0x20a9, +- 0x0004, 0x080c, 0xa0fc, 0x1150, 0x2011, 0xcc94, 0x6018, 0xa098, +- 0x0006, 0x20a9, 0x0004, 0x080c, 0xa0fc, 0x1100, 0x015e, 0x003e, +- 0x002e, 0x0005, 0x00e6, 0x2071, 0xc600, 0x080c, 0x4f02, 0x080c, +- 0x2c62, 0x00ee, 0x0005, 0x00d6, 0x080c, 0x15e5, 0x0500, 0x2d10, +- 0xa290, 0x000d, 0x2013, 0x0134, 0x8210, 0x2013, 0x0000, 0x8210, +- 0x703c, 0x2012, 0x8210, 0x7038, 0x2012, 0x8210, 0x2218, 0x7048, +- 0x2012, 0x8210, 0x704c, 0x2012, 0x8210, 0x7050, 0x2012, 0x8210, +- 0x7054, 0x2012, 0x2300, 0x080c, 0x3e8f, 0x080c, 0x580a, 0x00de, +- 0x0005, 0x00d6, 0x0026, 0x080c, 0x1602, 0x090c, 0x1519, 0xad90, +- 0x000e, 0x20a9, 0x000c, 0x22a0, 0xa016, 0x42a4, 0xa186, 0x0046, +- 0x1118, 0x6837, 0x0136, 0x0038, 0x6837, 0x0138, 0xa186, 0x0041, +- 0x0110, 0x684b, 0x0001, 0x7038, 0xa084, 0xff00, 0x7240, 0xa294, +- 0xff00, 0x8007, 0xa215, 0x6a6a, 0xa186, 0x0046, 0x1168, 0x7038, +- 0xa084, 0x00ff, 0x723c, 0xa294, 0xff00, 0xa215, 0x6a6e, 0x723c, +- 0xa294, 0x00ff, 0x6a72, 0x0060, 0x7040, 0xa084, 0x00ff, 0x7244, +- 0xa294, 0xff00, 0xa215, 0x6a6e, 0x7244, 0xa294, 0x00ff, 0x6a72, +- 0xa186, 0x0046, 0x1118, 0xae90, 0x0012, 0x0010, 0xae90, 0x001a, +- 0x2204, 0x8007, 0x6876, 0x8210, 0x2204, 0x8007, 0x687a, 0x8210, +- 0x2204, 0x8007, 0x687e, 0x8210, 0x2204, 0x8007, 0x6882, 0x8210, +- 0xa186, 0x0046, 0x1118, 0xae90, 0x0016, 0x0010, 0xae90, 0x001e, +- 0x2204, 0x8007, 0x6886, 0x8210, 0x2204, 0x8007, 0x688a, 0x8210, +- 0x2204, 0x8007, 0x688e, 0x8210, 0x2204, 0x8007, 0x6892, 0x8210, +- 0xa186, 0x0046, 0x1118, 0xae90, 0x0022, 0x0010, 0xae90, 0x002a, +- 0x00d6, 0xade8, 0x0025, 0x20a9, 0x0008, 0x2204, 0x8007, 0x206a, +- 0x8210, 0x8d68, 0x1f04, 0xc4bd, 0x00de, 0x002e, 0x080c, 0x580a, +- 0x00de, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0108, +- 0x0011, 0x00ee, 0x0005, 0x6850, 0xc0e5, 0x6852, 0x0005, 0x00e6, +- 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0016, 0x0126, +- 0x2091, 0x8000, 0x2029, 0xc930, 0x252c, 0x2021, 0xc936, 0x2424, +- 0x2061, 0xce00, 0x2071, 0xc600, 0x7648, 0x7068, 0xa606, 0x0578, +- 0x671c, 0xa786, 0x0001, 0x0118, 0xa786, 0x0008, 0x1500, 0x2500, +- 0xac06, 0x01e8, 0x2400, 0xac06, 0x01d0, 0x080c, 0xc1ab, 0x01b8, +- 0x080c, 0xc1bb, 0x11a0, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, +- 0x080c, 0x1953, 0x001e, 0x080c, 0xae77, 0x1110, 0x080c, 0x2e6c, +- 0x080c, 0xae88, 0x1110, 0x080c, 0x9c02, 0x080c, 0xae4d, 0xace0, +- 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1208, 0x0858, 0x012e, +- 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, +- 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, +- 0xc640, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, +- 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, +- 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, +- 0x0118, 0x2071, 0xc64a, 0x04c9, 0x001e, 0x00ee, 0x000e, 0x012e, +- 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, +- 0xc640, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, +- 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, +- 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, +- 0x0118, 0x2071, 0xc64a, 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, +- 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xc642, +- 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, +- 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, +- 0xc640, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xc644, 0x0c69, +- 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, +- 0xc640, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, +- 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, +- 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, +- 0x28b5 ++ 0x080c, 0x53f8, 0x6007, 0x000a, 0x00de, 0x0804, 0xb403, 0x6007, ++ 0x000b, 0x00de, 0x0804, 0xb403, 0x080c, 0x2e46, 0x6007, 0x0001, ++ 0x0804, 0xb403, 0x080c, 0xc391, 0x1904, 0xb607, 0x080c, 0x2f69, ++ 0x1904, 0xb607, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, ++ 0x0707, 0x0d50, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, ++ 0x0000, 0x080c, 0x2e8b, 0x002e, 0x6007, 0x000c, 0x0804, 0xb403, ++ 0x080c, 0x5724, 0x1140, 0x2001, 0xc635, 0x2004, 0xa084, 0x0009, ++ 0xa086, 0x0008, 0x1110, 0x0804, 0xb24c, 0x080c, 0x56a6, 0x6618, ++ 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, ++ 0x1138, 0x0026, 0x2001, 0x0006, 0x080c, 0x52d7, 0x002e, 0x0050, ++ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, ++ 0x1904, 0xb2f4, 0x080c, 0xbebf, 0x1120, 0x6007, 0x000e, 0x0804, ++ 0xb403, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, ++ 0x8427, 0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009, ++ 0xc653, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xc1a9, ++ 0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, ++ 0x004e, 0x6007, 0x0001, 0x0804, 0xb403, 0x2001, 0x0001, 0x080c, ++ 0x5298, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0xc605, 0x2011, 0xcc90, 0x080c, 0xa11c, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0xa005, 0x0168, 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, ++ 0x0a04, 0xb2f4, 0xa682, 0x0007, 0x0a04, 0xb342, 0x0804, 0xb2f4, ++ 0x6013, 0x1900, 0x6007, 0x0009, 0x0804, 0xb403, 0x080c, 0x5724, ++ 0x1140, 0x2001, 0xc635, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, ++ 0x1110, 0x0804, 0xb24c, 0x080c, 0x56a6, 0x6618, 0xa6b0, 0x0001, ++ 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, ++ 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xb2f4, ++ 0x080c, 0xbee7, 0x1138, 0x080c, 0xbdf4, 0x1120, 0x6007, 0x0010, ++ 0x0804, 0xb403, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, ++ 0x00ff, 0x8427, 0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, ++ 0x2009, 0xc653, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, ++ 0xc1a9, 0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, ++ 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xc03c, 0x0140, ++ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0950, 0x0804, 0xb2f4, ++ 0x6013, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2f69, 0x1904, ++ 0xb607, 0x080c, 0xc391, 0x1904, 0xb607, 0x080c, 0xb66b, 0x1904, ++ 0xb2f4, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x79f8, 0x0005, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79f8, 0x0cc0, 0x6007, ++ 0x0005, 0x0cc0, 0x080c, 0xc391, 0x1904, 0xb607, 0x080c, 0x2f69, ++ 0x1904, 0xb607, 0x080c, 0xb66b, 0x1904, 0xb2f4, 0x6007, 0x0020, ++ 0x6003, 0x0001, 0x080c, 0x79f8, 0x0005, 0x080c, 0x2f69, 0x1904, ++ 0xb607, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x79f8, 0x0005, ++ 0x080c, 0xc391, 0x1904, 0xb607, 0x080c, 0x2f69, 0x1904, 0xb607, ++ 0x080c, 0xb66b, 0x1904, 0xb2f4, 0x0016, 0x0026, 0x2011, 0xcc91, ++ 0x2214, 0xa286, 0xffff, 0x0190, 0x2c08, 0x080c, 0xac9a, 0x01e0, ++ 0x2260, 0x2011, 0xcc90, 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, ++ 0xa190, 0x0006, 0x2214, 0xa206, 0x01e8, 0x0070, 0x2011, 0xcc90, ++ 0x2214, 0x2c08, 0xa006, 0x080c, 0xc17b, 0x11a0, 0x2011, 0xcc91, ++ 0x2214, 0xa286, 0xffff, 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, ++ 0x1700, 0x2011, 0xcc89, 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, ++ 0x0025, 0x0068, 0x601c, 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, ++ 0x0024, 0x1110, 0x080c, 0x95fc, 0x2160, 0x6007, 0x0025, 0x6003, ++ 0x0001, 0x080c, 0x79f8, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, ++ 0x080c, 0x5298, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, ++ 0x2019, 0xc605, 0x2011, 0xcc96, 0x080c, 0xa11c, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xb403, 0x080c, ++ 0x9e0e, 0x080c, 0x5f3b, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, ++ 0x5f57, 0x1158, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, ++ 0x2003, 0x0001, 0x080c, 0x5e73, 0x0010, 0x080c, 0x5f12, 0x003e, ++ 0x002e, 0x000e, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb607, 0x080c, ++ 0xb66b, 0x1904, 0xb2f4, 0x6106, 0x080c, 0xb687, 0x6007, 0x002b, ++ 0x0804, 0xb403, 0x6007, 0x002c, 0x0804, 0xb403, 0x080c, 0xc391, ++ 0x1904, 0xb607, 0x080c, 0x2f69, 0x1904, 0xb607, 0x080c, 0xb66b, ++ 0x1904, 0xb2f4, 0x6106, 0x080c, 0xb68b, 0x1120, 0x6007, 0x002e, ++ 0x0804, 0xb403, 0x6007, 0x002f, 0x0804, 0xb403, 0x080c, 0x2f69, ++ 0x1904, 0xb607, 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, 0x0001, ++ 0x200c, 0xa184, 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, 0xff00, ++ 0x8007, 0xa086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, ++ 0xb408, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb55d, 0x2071, ++ 0xcc8c, 0x7010, 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, ++ 0xc653, 0x2004, 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, 0xa106, ++ 0x1118, 0x6814, 0xa206, 0x01f8, 0x2001, 0xc653, 0x2004, 0xd0ac, ++ 0x1590, 0x2069, 0xc600, 0x6874, 0xa206, 0x1568, 0x6870, 0xa106, ++ 0x1550, 0x7210, 0x080c, 0xac9a, 0x0558, 0x080c, 0xc215, 0x0540, ++ 0x622a, 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x79b2, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, 0x080c, ++ 0xac9a, 0x01b0, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x1180, ++ 0x0c08, 0x7210, 0x2c08, 0xa085, 0x0001, 0x080c, 0xc17b, 0x2c10, ++ 0x2160, 0x0130, 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, 0x08d8, ++ 0x6007, 0x0037, 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, 0x0898, ++ 0x080c, 0x2f69, 0x1904, 0xb607, 0x6018, 0xa080, 0x0001, 0x2004, ++ 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x1904, 0xb408, 0x00e6, ++ 0x00d6, 0x00c6, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb5c9, ++ 0x2069, 0xc600, 0x2071, 0xcc8c, 0x7008, 0x6036, 0x720c, 0x623a, ++ 0xa286, 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, 0x0001, ++ 0x080c, 0xc17b, 0x2c10, 0x00ce, 0x0588, 0x080c, 0xac9a, 0x0570, ++ 0x00c6, 0x0026, 0x2260, 0x080c, 0xa96d, 0x002e, 0x00ce, 0x7118, ++ 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, 0x0005, ++ 0x0118, 0xa186, 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, 0xa005, ++ 0x0150, 0x0056, 0x7510, 0x7614, 0x080c, 0xc22c, 0x005e, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, ++ 0x2a00, 0x6003, 0x0001, 0x080c, 0x79b2, 0x0c88, 0x6007, 0x003b, ++ 0x602b, 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, 0x79b2, ++ 0x0c30, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0804, ++ 0xb533, 0x00e6, 0x0026, 0x080c, 0x5724, 0x0558, 0x080c, 0x56a6, ++ 0x080c, 0xc40c, 0x1520, 0x2071, 0xc600, 0x70d4, 0xc085, 0x70d6, ++ 0x00f6, 0x2079, 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, 0x78e6, ++ 0xa284, 0xff00, 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, 0x70df, ++ 0x0000, 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0120, 0x2011, 0xc940, ++ 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2c62, 0x0010, 0x080c, ++ 0xc438, 0x002e, 0x00ee, 0x080c, 0x95fc, 0x0804, 0xb407, 0x080c, ++ 0x95fc, 0x0005, 0x2600, 0x0002, 0xb615, 0xb649, 0xb65a, 0xb615, ++ 0xb615, 0xb617, 0xb630, 0xb615, 0xb615, 0x080c, 0x1519, 0x080c, ++ 0xc391, 0x1d68, 0x080c, 0x2f69, 0x1d50, 0x080c, 0xb66b, 0x1138, ++ 0x6007, 0x0045, 0x6003, 0x0001, 0x080c, 0x79f8, 0x0005, 0x080c, ++ 0x2e46, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79f8, 0x0005, ++ 0x080c, 0x2f69, 0x19a0, 0x080c, 0x76a8, 0x1160, 0x2e00, 0xa080, ++ 0x0010, 0x2004, 0x8007, 0xd084, 0x0110, 0x080c, 0xc441, 0x080c, ++ 0x95fc, 0x0005, 0x2009, 0x0046, 0x080c, 0xc467, 0x080c, 0x95fc, ++ 0x0005, 0x080c, 0x2f69, 0x1904, 0xb607, 0x2009, 0x0041, 0x080c, ++ 0xc467, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79f8, 0x080c, ++ 0x7ead, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb607, 0x2009, 0x0042, ++ 0x080c, 0xc467, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79f8, ++ 0x080c, 0x7ead, 0x0005, 0x00d6, 0x0066, 0x6618, 0x2668, 0x6e04, ++ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0xa686, 0x0004, ++ 0x0158, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0128, 0xa686, ++ 0x0004, 0x0110, 0xa085, 0x0001, 0x006e, 0x00de, 0x0005, 0x00d6, ++ 0x0449, 0x00de, 0x0005, 0x00d6, 0x0491, 0x11f0, 0x680c, 0xa08c, ++ 0xff00, 0x6820, 0xa084, 0x00ff, 0xa115, 0x6212, 0x6824, 0x602a, ++ 0xd1e4, 0x0118, 0x2009, 0x0001, 0x0060, 0xd1ec, 0x0168, 0x6920, ++ 0xa18c, 0x00ff, 0x6824, 0x080c, 0x29c7, 0x1130, 0x2110, 0x2009, ++ 0x0000, 0x080c, 0x2e8b, 0x0018, 0xa085, 0x0001, 0x0008, 0xa006, ++ 0x00de, 0x0005, 0x2069, 0xcc8d, 0x6800, 0xa082, 0x0010, 0x1228, ++ 0x6013, 0x0000, 0xa085, 0x0001, 0x0008, 0xa006, 0x0005, 0x6013, ++ 0x0000, 0x2069, 0xcc8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, ++ 0x1140, 0x6800, 0xa084, 0x00ff, 0xa08e, 0x0014, 0x0110, 0xa08e, ++ 0x0010, 0x0005, 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, ++ 0x0013, 0x1130, 0x2008, 0xa1b2, 0x0040, 0x1a04, 0xb7d4, 0x0092, ++ 0xa1b6, 0x0027, 0x0120, 0xa1b6, 0x0014, 0x190c, 0x1519, 0x2001, ++ 0x0007, 0x080c, 0x52d7, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, ++ 0x7ead, 0x0005, 0xb732, 0xb734, 0xb732, 0xb732, 0xb732, 0xb734, ++ 0xb746, 0xb7cd, 0xb796, 0xb7cd, 0xb7a9, 0xb7cd, 0xb746, 0xb7cd, ++ 0xb7c5, 0xb7cd, 0xb7c5, 0xb7cd, 0xb7cd, 0xb732, 0xb732, 0xb732, ++ 0xb732, 0xb732, 0xb732, 0xb732, 0xb732, 0xb732, 0xb732, 0xb732, ++ 0xb734, 0xb732, 0xb7cd, 0xb732, 0xb732, 0xb7cd, 0xb732, 0xb7ca, ++ 0xb7cd, 0xb732, 0xb732, 0xb732, 0xb732, 0xb7cd, 0xb7cd, 0xb732, ++ 0xb7cd, 0xb7cd, 0xb732, 0xb740, 0xb732, 0xb732, 0xb732, 0xb732, ++ 0xb7c9, 0xb7cd, 0xb732, 0xb732, 0xb7cd, 0xb7cd, 0xb732, 0xb732, ++ 0xb732, 0xb732, 0x080c, 0x1519, 0x080c, 0x7dca, 0x2001, 0xc8fd, ++ 0x2004, 0x6016, 0x6003, 0x0002, 0x080c, 0x7ead, 0x0804, 0xb7d3, ++ 0x2001, 0x0000, 0x080c, 0x5298, 0x0804, 0xb7cd, 0x00f6, 0x2079, ++ 0xc652, 0x7804, 0x00fe, 0xd0ac, 0x1904, 0xb7cd, 0x2001, 0x0000, ++ 0x080c, 0x5298, 0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, ++ 0x1140, 0x00f6, 0x2079, 0xc600, 0x7898, 0x8000, 0x789a, 0x00fe, ++ 0x00e0, 0x00c6, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x1140, 0x6010, ++ 0xa005, 0x0128, 0x00ce, 0x080c, 0x4108, 0x0804, 0xb7cd, 0x00ce, ++ 0x2001, 0xc600, 0x2004, 0xa086, 0x0002, 0x1138, 0x00f6, 0x2079, ++ 0xc600, 0x7898, 0x8000, 0x789a, 0x00fe, 0x2001, 0x0002, 0x080c, ++ 0x52aa, 0x080c, 0x7dca, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, ++ 0x0002, 0x080c, 0x79f8, 0x080c, 0x7ead, 0x00c6, 0x6118, 0x2160, ++ 0x2009, 0x0001, 0x080c, 0x6fd2, 0x00ce, 0x04e8, 0x6618, 0x00d6, ++ 0x2668, 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, ++ 0x0560, 0xa686, 0x0004, 0x0548, 0x080c, 0x7682, 0x2001, 0x0004, ++ 0x0410, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1110, 0x080c, ++ 0x4108, 0x2001, 0x0006, 0x04a1, 0x6618, 0x00d6, 0x2668, 0x6e04, ++ 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0x2001, ++ 0x0006, 0x0048, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0401, ++ 0x0020, 0x0018, 0x0010, 0x080c, 0x52d7, 0x080c, 0x7dca, 0x080c, ++ 0x95fc, 0x080c, 0x7ead, 0x0005, 0x2600, 0x0002, 0xb7df, 0xb7df, ++ 0xb7df, 0xb7df, 0xb7df, 0xb7e1, 0xb7df, 0xb7e1, 0xb7df, 0x080c, ++ 0x1519, 0x080c, 0x7dca, 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0005, ++ 0x0016, 0x00d6, 0x6118, 0x2168, 0x6900, 0xd184, 0x0140, 0x080c, ++ 0x52aa, 0x2001, 0x0000, 0x080c, 0x5298, 0x080c, 0x2e6c, 0x00de, ++ 0x001e, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, ++ 0x8007, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0xa1b6, 0x0015, ++ 0x1110, 0x003b, 0x0028, 0xa1b6, 0x0016, 0x190c, 0x1519, 0x006b, ++ 0x0005, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0xb86a, ++ 0xb829, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, ++ 0x9cf3, 0x9cf3, 0x9cf3, 0xb86a, 0xb871, 0x9cf3, 0x9cf3, 0x9cf3, ++ 0x9cf3, 0x00f6, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x11e0, 0x6018, ++ 0xa07d, 0x01c8, 0x7800, 0xd0f4, 0x1118, 0x7810, 0xa005, 0x1198, ++ 0x2001, 0x0000, 0x080c, 0x5298, 0x2001, 0x0002, 0x080c, 0x52aa, ++ 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79f8, ++ 0x080c, 0x7ead, 0x00e8, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x29c7, 0x11a8, 0x00c6, 0x080c, 0x5356, 0x0120, 0x00ce, ++ 0x080c, 0x95fc, 0x0068, 0x6010, 0x0006, 0x6014, 0x0006, 0x080c, ++ 0x4f60, 0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, 0x080c, 0x95fc, ++ 0x00fe, 0x0005, 0x6604, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x95fc, ++ 0x0005, 0x080c, 0x9fcf, 0x1138, 0x6003, 0x0001, 0x6007, 0x0001, ++ 0x080c, 0x79f8, 0x0010, 0x080c, 0x95fc, 0x0005, 0x6004, 0xa08a, ++ 0x0080, 0x1a0c, 0x1519, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, ++ 0x7ead, 0x0005, 0xa182, 0x0040, 0x0002, 0xb8a0, 0xb8a0, 0xb8a0, ++ 0xb8a0, 0xb8a2, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, ++ 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, ++ 0x080c, 0x1519, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0046, 0x0026, ++ 0x6218, 0xa280, 0x002f, 0x2004, 0xa005, 0x0120, 0x2021, 0x0000, ++ 0x080c, 0xc3dd, 0x6106, 0x2071, 0xcc80, 0x7444, 0xa4a4, 0xff00, ++ 0x0904, 0xb906, 0xa486, 0x2000, 0x1130, 0x2009, 0x0001, 0x2011, ++ 0x0200, 0x080c, 0x7147, 0x080c, 0x1602, 0x090c, 0x1519, 0x6003, ++ 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, ++ 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2, 0x6018, 0x2078, 0x78a0, ++ 0x8007, 0x7130, 0x694a, 0x0016, 0xa084, 0xff00, 0x6846, 0x684f, ++ 0x0000, 0x6853, 0x0000, 0x6857, 0x0036, 0x080c, 0x5823, 0x001e, ++ 0xa486, 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, 0xc126, 0x0804, ++ 0xb963, 0xa486, 0x0400, 0x1130, 0x2019, 0x0002, 0x080c, 0xc0d8, ++ 0x0804, 0xb963, 0xa486, 0x0200, 0x1110, 0x080c, 0xc0bd, 0xa486, ++ 0x1000, 0x1110, 0x080c, 0xc10b, 0x0804, 0xb963, 0x2069, 0xc9bc, ++ 0x6a00, 0xd284, 0x0904, 0xb9ca, 0xa284, 0x0300, 0x1904, 0xb9c3, ++ 0x6804, 0xa005, 0x0904, 0xb9ab, 0x2d78, 0x6003, 0x0007, 0x080c, ++ 0x15e5, 0x0904, 0xb96a, 0x7800, 0xd08c, 0x1118, 0x7804, 0x8001, ++ 0x7806, 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, ++ 0x0000, 0x6008, 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, ++ 0x8007, 0x7130, 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, ++ 0x7930, 0x6992, 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, ++ 0x0003, 0xa286, 0x0002, 0x1118, 0x684f, 0x0040, 0x0040, 0xa286, ++ 0x0001, 0x1118, 0x684f, 0x0080, 0x0010, 0x684f, 0x0000, 0x20a9, ++ 0x000a, 0x2001, 0xcc90, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, ++ 0x8000, 0x8210, 0x1f04, 0xb955, 0x200c, 0x6982, 0x8000, 0x200c, ++ 0x697e, 0x080c, 0x5823, 0x002e, 0x004e, 0x015e, 0x00fe, 0x00ee, ++ 0x00de, 0x0005, 0x2001, 0xc60e, 0x2004, 0xd084, 0x0120, 0x080c, ++ 0x1602, 0x1904, 0xb91b, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, ++ 0x0041, 0x080c, 0x79b2, 0x080c, 0x7ead, 0x0c28, 0x2069, 0xcc92, ++ 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, 0x11a8, 0x2069, 0xcc80, ++ 0x686c, 0xa084, 0x00ff, 0x0016, 0x6110, 0xa18c, 0x0700, 0xa10d, ++ 0x6112, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, 0x79b2, ++ 0x080c, 0x7ead, 0x0840, 0x6868, 0x602a, 0x686c, 0x602e, 0x6013, ++ 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x79b2, 0x080c, ++ 0x7ead, 0x0804, 0xb963, 0x2001, 0xc60d, 0x2004, 0xd0ec, 0x0120, ++ 0x2011, 0x8049, 0x080c, 0x4096, 0x6013, 0x0300, 0x0010, 0x6013, ++ 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x79b2, 0x080c, ++ 0x7ead, 0x0804, 0xb963, 0x6013, 0x0500, 0x0c98, 0x6013, 0x0600, ++ 0x0804, 0xb97e, 0x6013, 0x0200, 0x0804, 0xb97e, 0xa186, 0x0013, ++ 0x1170, 0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, ++ 0x1a0c, 0x1519, 0xa082, 0x0040, 0x2008, 0x0804, 0xba58, 0xa186, ++ 0x0051, 0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, 0xa086, 0x0041, ++ 0x0518, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x788c, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0x6000, 0xa086, 0x0002, 0x1170, 0x0804, 0xba9b, ++ 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6004, ++ 0xa082, 0x0040, 0x2008, 0x001a, 0x080c, 0x9643, 0x0005, 0xba22, ++ 0xba24, 0xba24, 0xba48, 0xba22, 0xba22, 0xba22, 0xba22, 0xba22, ++ 0xba22, 0xba22, 0xba22, 0xba22, 0xba22, 0xba22, 0xba22, 0xba22, ++ 0xba22, 0xba22, 0x080c, 0x1519, 0x080c, 0x7dca, 0x080c, 0x7ead, ++ 0x0036, 0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, 0xf000, 0x01a8, ++ 0x6003, 0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, 0x2019, 0x0004, ++ 0x080c, 0xc15a, 0x6013, 0x0000, 0x6014, 0xa005, 0x1120, 0x2001, ++ 0xc8fe, 0x2004, 0x6016, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, ++ 0x00d6, 0x080c, 0x7dca, 0x080c, 0x7ead, 0x080c, 0xacaa, 0x0120, ++ 0x6010, 0x2068, 0x080c, 0x1619, 0x080c, 0xae6d, 0x00de, 0x0005, ++ 0x0002, 0xba6c, 0xba89, 0xba75, 0xba95, 0xba6c, 0xba6c, 0xba6c, ++ 0xba6c, 0xba6c, 0xba6c, 0xba6c, 0xba6c, 0xba6c, 0xba6c, 0xba6c, ++ 0xba6c, 0xba6c, 0xba6c, 0xba6c, 0x080c, 0x1519, 0x6010, 0xa088, ++ 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x080c, 0x7dca, 0x6010, ++ 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, ++ 0x0043, 0x080c, 0x962c, 0x0010, 0x6003, 0x0002, 0x080c, 0x7ead, ++ 0x0005, 0x080c, 0x7dca, 0x080c, 0xc398, 0x1120, 0x080c, 0x711c, ++ 0x080c, 0x95fc, 0x080c, 0x7ead, 0x0005, 0x080c, 0x7dca, 0x2009, ++ 0x0041, 0x0804, 0xbbe4, 0xa182, 0x0040, 0x0002, 0xbab1, 0xbab3, ++ 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbab4, 0xbab1, 0xbab1, ++ 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbab1, 0xbabf, ++ 0xbab1, 0x080c, 0x1519, 0x0005, 0x6003, 0x0004, 0x6110, 0x20e1, ++ 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0x00d6, ++ 0x080c, 0x711c, 0x00de, 0x080c, 0xc3fb, 0x080c, 0x95fc, 0x0005, ++ 0xa182, 0x0040, 0x0002, 0xbade, 0xbade, 0xbade, 0xbade, 0xbade, ++ 0xbade, 0xbade, 0xbae0, 0xbade, 0xbae3, 0xbb1c, 0xbade, 0xbade, ++ 0xbade, 0xbade, 0xbb1c, 0xbade, 0xbade, 0xbade, 0x080c, 0x1519, ++ 0x080c, 0x9643, 0x0005, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0158, ++ 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x0228, 0x2001, 0x011f, ++ 0x2004, 0x6036, 0x0010, 0x6037, 0x0000, 0x080c, 0x7e60, 0x080c, ++ 0x7f87, 0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, 0x0150, 0xa08c, ++ 0x0003, 0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, 0x00de, 0x0804, ++ 0xbbe4, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x711c, 0x00de, ++ 0x0005, 0x080c, 0xc398, 0x0110, 0x00de, 0x0005, 0x080c, 0x711c, ++ 0x080c, 0x95fc, 0x00de, 0x0ca0, 0x0036, 0x080c, 0x7e60, 0x080c, ++ 0x7f87, 0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0188, ++ 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0140, 0x687c, 0x632c, ++ 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, 0x6003, 0x0002, ++ 0x0080, 0x2019, 0x0004, 0x080c, 0xc15a, 0x6014, 0xa005, 0x1128, ++ 0x2001, 0xc8fe, 0x2004, 0x8003, 0x6016, 0x6013, 0x0000, 0x6003, ++ 0x0007, 0x00de, 0x003e, 0x0005, 0xa186, 0x0013, 0x1150, 0x6004, ++ 0xa086, 0x0042, 0x190c, 0x1519, 0x080c, 0x7dca, 0x080c, 0x7ead, ++ 0x0005, 0xa186, 0x0027, 0x0118, 0xa186, 0x0014, 0x1180, 0x6004, ++ 0xa086, 0x0042, 0x190c, 0x1519, 0x2001, 0x0007, 0x080c, 0x52d7, ++ 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, 0xa182, ++ 0x0040, 0x0002, 0xbb85, 0xbb85, 0xbb85, 0xbb85, 0xbb85, 0xbb85, ++ 0xbb85, 0xbb87, 0xbb93, 0xbb85, 0xbb85, 0xbb85, 0xbb85, 0xbb85, ++ 0xbb85, 0xbb85, 0xbb85, 0xbb85, 0xbb85, 0x080c, 0x1519, 0x0036, ++ 0x0046, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, ++ 0x004e, 0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, 0x6810, 0x6a14, ++ 0x0006, 0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, 0x2200, 0xa52b, ++ 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x005e, 0x004e, ++ 0x000e, 0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, 0x2009, 0x0041, ++ 0x00de, 0x0490, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x711c, ++ 0x00de, 0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, 0x56dc, 0x00fe, ++ 0x000e, 0x0120, 0x6003, 0x0002, 0x00de, 0x0005, 0x2009, 0xc60d, ++ 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, ++ 0x0021, 0x080c, 0x711e, 0x00de, 0x0005, 0xd2fc, 0x0140, 0x8002, ++ 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, ++ 0x0015, 0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, 0x0208, 0x0062, ++ 0xa186, 0x0013, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6020, ++ 0xd0dc, 0x090c, 0x1519, 0x0005, 0xbc07, 0xbc0e, 0xbc1a, 0xbc26, ++ 0xbc07, 0xbc07, 0xbc07, 0xbc35, 0xbc07, 0xbc09, 0xbc09, 0xbc07, ++ 0xbc07, 0xbc07, 0xbc07, 0xbc09, 0xbc07, 0xbc09, 0xbc07, 0x080c, ++ 0x1519, 0x6020, 0xd0dc, 0x090c, 0x1519, 0x0005, 0x6003, 0x0001, ++ 0x6106, 0x080c, 0x79b2, 0x0126, 0x2091, 0x8000, 0x080c, 0x7ead, ++ 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x79b2, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x7ead, 0x012e, 0x0005, 0x6003, 0x0003, ++ 0x6106, 0x2c10, 0x080c, 0x2068, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x7a15, 0x080c, 0x7f87, 0x012e, 0x0005, 0xa016, 0x080c, 0x1870, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0xa182, 0x0040, ++ 0x0023, 0x00de, 0x003e, 0x012e, 0x0005, 0xbc55, 0xbc57, 0xbc69, ++ 0xbc84, 0xbc55, 0xbc55, 0xbc55, 0xbc99, 0xbc55, 0xbc55, 0xbc55, ++ 0xbc55, 0xbc55, 0xbc55, 0xbc55, 0xbc55, 0x080c, 0x1519, 0x6010, ++ 0x2068, 0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, 0xa39e, 0x0003, ++ 0x01d0, 0x6003, 0x0001, 0x6106, 0x080c, 0x79b2, 0x080c, 0x7ead, ++ 0x0498, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, 0xa09c, 0x0003, ++ 0xa39e, 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x79b2, ++ 0x080c, 0x7ead, 0x0408, 0x6013, 0x0000, 0x6017, 0x0000, 0x2019, ++ 0x0004, 0x080c, 0xc15a, 0x00c0, 0x6010, 0x2068, 0x684c, 0xd0fc, ++ 0x0d90, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, 0x6003, 0x0003, ++ 0x6106, 0x2c10, 0x080c, 0x2068, 0x080c, 0x7a15, 0x080c, 0x7f87, ++ 0x0018, 0xa016, 0x080c, 0x1870, 0x0005, 0x080c, 0x7dca, 0x6110, ++ 0x81ff, 0x0158, 0x00d6, 0x2168, 0x080c, 0xc4f0, 0x0036, 0x2019, ++ 0x0029, 0x080c, 0xc15a, 0x003e, 0x00de, 0x080c, 0xae6d, 0x080c, ++ 0x7ead, 0x0005, 0x080c, 0x7e60, 0x6110, 0x81ff, 0x0158, 0x00d6, ++ 0x2168, 0x080c, 0xc4f0, 0x0036, 0x2019, 0x0029, 0x080c, 0xc15a, ++ 0x003e, 0x00de, 0x080c, 0xae6d, 0x080c, 0x7f87, 0x0005, 0xa182, ++ 0x0085, 0x0002, 0xbcd3, 0xbcd1, 0xbcd1, 0xbcdf, 0xbcd1, 0xbcd1, ++ 0xbcd1, 0x080c, 0x1519, 0x6003, 0x000b, 0x6106, 0x080c, 0x79b2, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x7ead, 0x012e, 0x0005, 0x0026, ++ 0x00e6, 0x080c, 0xc391, 0x0118, 0x080c, 0x95fc, 0x00d8, 0x2071, ++ 0xcc80, 0x7224, 0x6212, 0x7220, 0x080c, 0xc008, 0x0118, 0x6007, ++ 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x1110, ++ 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, 0x79b2, 0x080c, 0x7ead, ++ 0x080c, 0x7f87, 0x00ee, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, ++ 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1519, 0xa08a, 0x008c, 0x1a0c, ++ 0x1519, 0xa082, 0x0085, 0x00a2, 0xa186, 0x0027, 0x0130, 0xa186, ++ 0x0014, 0x0118, 0x080c, 0x9643, 0x0050, 0x2001, 0x0007, 0x080c, ++ 0x52d7, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, ++ 0xbd2f, 0xbd31, 0xbd31, 0xbd2f, 0xbd2f, 0xbd2f, 0xbd2f, 0x080c, ++ 0x1519, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, ++ 0xa182, 0x0085, 0x0a0c, 0x1519, 0xa182, 0x008c, 0x1a0c, 0x1519, ++ 0xa182, 0x0085, 0x0002, 0xbd4a, 0xbd4a, 0xbd4a, 0xbd4c, 0xbd4a, ++ 0xbd4a, 0xbd4a, 0x080c, 0x1519, 0x0005, 0xa186, 0x0013, 0x0148, ++ 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, 0x080c, 0x9643, ++ 0x0030, 0x080c, 0x7dca, 0x080c, 0xae6d, 0x080c, 0x7ead, 0x0005, ++ 0x0036, 0x080c, 0xc3fb, 0x603f, 0x0000, 0x2019, 0x000b, 0x0031, ++ 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, ++ 0x2091, 0x8000, 0x0086, 0x2c40, 0x0096, 0x2049, 0x0000, 0x080c, ++ 0x8fe2, 0x009e, 0x008e, 0x1578, 0x0076, 0x2c38, 0x080c, 0x9088, ++ 0x007e, 0x1548, 0x6000, 0xa086, 0x0000, 0x0528, 0x601c, 0xa086, ++ 0x0007, 0x0508, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, ++ 0xc3fb, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, ++ 0x1953, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0110, 0x080c, 0xc15a, ++ 0x00de, 0x6013, 0x0000, 0x080c, 0xc3fb, 0x601f, 0x0007, 0x2001, ++ 0xc8fd, 0x2004, 0x6016, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, ++ 0x0036, 0x0156, 0x2079, 0xcc80, 0x7938, 0x783c, 0x080c, 0x29c7, ++ 0x15b0, 0x0016, 0x00c6, 0x080c, 0x5356, 0x1578, 0x001e, 0x002e, ++ 0x0026, 0x0016, 0x2019, 0x0029, 0x080c, 0x914b, 0x080c, 0x7b2f, ++ 0x0076, 0x2039, 0x0000, 0x080c, 0x7a27, 0x007e, 0x001e, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0xbf10, 0x007e, 0x080c, 0x5557, 0x0026, ++ 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0118, 0xa286, ++ 0x0004, 0x1118, 0x62a0, 0x080c, 0x2eff, 0x002e, 0x001e, 0x080c, ++ 0x4f60, 0x6612, 0x6516, 0xa006, 0x0010, 0x00ce, 0x001e, 0x015e, ++ 0x003e, 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, ++ 0x2009, 0xc621, 0x2104, 0xa086, 0x0074, 0x1904, 0xbe49, 0x2069, ++ 0xcc8e, 0x690c, 0xa182, 0x0100, 0x06c0, 0x6908, 0xa184, 0x8000, ++ 0x05e8, 0x2001, 0xc8e5, 0x2004, 0xa005, 0x1160, 0x6018, 0x2070, ++ 0x7010, 0xa084, 0x00ff, 0x0118, 0x7000, 0xd0f4, 0x0118, 0xa184, ++ 0x0800, 0x0560, 0x6910, 0xa18a, 0x0001, 0x0610, 0x6914, 0x2069, ++ 0xccae, 0x6904, 0x81ff, 0x1198, 0x690c, 0xa182, 0x0100, 0x02a8, ++ 0x6908, 0x81ff, 0x1178, 0x6910, 0xa18a, 0x0001, 0x0288, 0x6918, ++ 0xa18a, 0x0001, 0x0298, 0x00d0, 0x6013, 0x0100, 0x00a0, 0x6013, ++ 0x0300, 0x0088, 0x6013, 0x0500, 0x0070, 0x6013, 0x0700, 0x0058, ++ 0x6013, 0x0900, 0x0040, 0x6013, 0x0b00, 0x0028, 0x6013, 0x0f00, ++ 0x0010, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0008, 0xa006, 0x001e, ++ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x0026, 0x0036, ++ 0x0156, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, ++ 0x0190, 0xa286, 0x0004, 0x0178, 0xa394, 0xff00, 0x8217, 0xa286, ++ 0x0006, 0x0148, 0xa286, 0x0004, 0x0130, 0x00c6, 0x2d60, 0x080c, ++ 0x5365, 0x00ce, 0x04c0, 0x2011, 0xcc96, 0xad98, 0x000a, 0x20a9, ++ 0x0004, 0x080c, 0xa11c, 0x1580, 0x2011, 0xcc9a, 0xad98, 0x0006, ++ 0x20a9, 0x0004, 0x080c, 0xa11c, 0x1538, 0x0046, 0x0016, 0x6aa0, ++ 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xc653, 0x210c, 0xd1a4, ++ 0x0138, 0x2009, 0x0029, 0x080c, 0xc1a9, 0x6800, 0xc0e5, 0x6802, ++ 0x2019, 0x0029, 0x080c, 0x7b2f, 0x0076, 0x2039, 0x0000, 0x080c, ++ 0x7a27, 0x2c08, 0x080c, 0xbf10, 0x007e, 0x2001, 0x0007, 0x080c, ++ 0x52d7, 0x001e, 0x004e, 0xa006, 0x015e, 0x003e, 0x002e, 0x00de, ++ 0x00ce, 0x0005, 0x00d6, 0x2069, 0xcc8e, 0x6800, 0xa086, 0x0800, ++ 0x0118, 0x6013, 0x0000, 0x0008, 0xa006, 0x00de, 0x0005, 0x00c6, ++ 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0xcc8c, 0x7930, ++ 0x7834, 0x080c, 0x29c7, 0x11a0, 0x080c, 0x5356, 0x1188, 0x2011, ++ 0xcc90, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa11c, 0x1140, ++ 0x2011, 0xcc94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa11c, ++ 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, 0x0005, 0x00c6, ++ 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, 0xcc83, 0x2204, ++ 0x8211, 0x220c, 0x080c, 0x29c7, 0x11a0, 0x080c, 0x5356, 0x1188, ++ 0x2011, 0xcc96, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa11c, ++ 0x1140, 0x2011, 0xcc9a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, ++ 0xa11c, 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, 0x00ce, 0x0005, ++ 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, ++ 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, 0xc930, 0x252c, 0x2021, ++ 0xc936, 0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7648, 0x7068, ++ 0x81ff, 0x0150, 0x0006, 0xa186, 0xca3c, 0x000e, 0x0128, 0x8001, ++ 0xa602, 0x1a04, 0xbf91, 0x0018, 0xa606, 0x0904, 0xbf91, 0x2100, ++ 0xac06, 0x0904, 0xbf88, 0x080c, 0xc1d1, 0x0904, 0xbf88, 0x671c, ++ 0xa786, 0x0001, 0x0904, 0xbfda, 0xa786, 0x0004, 0x0904, 0xbfda, ++ 0xa786, 0x0007, 0x05e8, 0x2500, 0xac06, 0x05d0, 0x2400, 0xac06, ++ 0x05b8, 0x080c, 0xc1e1, 0x15a0, 0x88ff, 0x0118, 0x6050, 0xa906, ++ 0x1578, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, ++ 0x1953, 0x001e, 0xa786, 0x0008, 0x1148, 0x080c, 0xaea8, 0x1130, ++ 0x080c, 0x9c22, 0x00de, 0x080c, 0xae6d, 0x00d0, 0x6010, 0x2068, ++ 0x080c, 0xacaa, 0x0190, 0xa786, 0x0003, 0x1528, 0x6837, 0x0103, ++ 0x6b4a, 0x6847, 0x0000, 0x080c, 0xc4f0, 0x0016, 0x080c, 0xaf1c, ++ 0x080c, 0x5823, 0x001e, 0x080c, 0xae61, 0x00de, 0x080c, 0xae6d, ++ 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, ++ 0xbf24, 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, ++ 0x00ce, 0x00ee, 0x0005, 0xa786, 0x0006, 0x1150, 0xa386, 0x0005, ++ 0x0128, 0x080c, 0xc4f0, 0x080c, 0xc15a, 0x08f8, 0x00de, 0x0c00, ++ 0xa786, 0x0009, 0x1548, 0x6000, 0xa086, 0x0004, 0x1128, 0x00c6, ++ 0x080c, 0x7633, 0x00ce, 0x00e8, 0x6000, 0xa086, 0x0003, 0x11c8, ++ 0x080c, 0x7e60, 0x00e6, 0x00d6, 0x6110, 0x2168, 0x080c, 0xacaa, ++ 0x0140, 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x080c, ++ 0x5823, 0x00de, 0x00ee, 0x00c6, 0x080c, 0x95fc, 0x00ce, 0x080c, ++ 0x7f87, 0x00de, 0x0804, 0xbf88, 0xa786, 0x000a, 0x0904, 0xbf78, ++ 0x0804, 0xbf76, 0x080c, 0xc1e1, 0x1904, 0xbf88, 0x81ff, 0x0904, ++ 0xbf88, 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x0138, 0xa180, ++ 0x0001, 0x2004, 0xa086, 0x002d, 0x1904, 0xbf88, 0x6000, 0xa086, ++ 0x0002, 0x1904, 0xbf88, 0x080c, 0xae97, 0x0138, 0x080c, 0xaea8, ++ 0x1904, 0xbf88, 0x080c, 0x9c22, 0x0038, 0x080c, 0x2e6c, 0x080c, ++ 0xaea8, 0x1110, 0x080c, 0x9c22, 0x080c, 0xae6d, 0x0804, 0xbf88, ++ 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, 0x080c, 0xc17b, ++ 0x001e, 0x0120, 0x601c, 0xa084, 0x000f, 0x001b, 0x00ee, 0x00ce, ++ 0x0005, 0xc021, 0xc021, 0xc021, 0xc021, 0xc021, 0xc021, 0xc023, ++ 0xc021, 0xa006, 0x0005, 0x0046, 0x0016, 0x7018, 0xa080, 0x0028, ++ 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x080c, ++ 0xc1a9, 0x001e, 0x004e, 0x0036, 0x2019, 0x0002, 0x080c, 0xbd6e, ++ 0x003e, 0xa085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x5298, ++ 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605, ++ 0x2011, 0xcc96, 0x080c, 0xa11c, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0xa005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, ++ 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0xce00, 0x2079, ++ 0x0001, 0x8fff, 0x0904, 0xc0b0, 0x2071, 0xc600, 0x7648, 0x7068, ++ 0x8001, 0xa602, 0x1a04, 0xc0b0, 0x88ff, 0x0128, 0x2800, 0xac06, ++ 0x15b0, 0x2079, 0x0000, 0x080c, 0xc1d1, 0x0588, 0x2400, 0xac06, ++ 0x0570, 0x671c, 0xa786, 0x0006, 0x1550, 0xa786, 0x0007, 0x0538, ++ 0x88ff, 0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, 0x0118, 0x6050, ++ 0xa106, 0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, ++ 0xc3fb, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, ++ 0x1953, 0x6010, 0x2068, 0x080c, 0xacaa, 0x0120, 0x0046, 0x080c, ++ 0xc15a, 0x004e, 0x00de, 0x080c, 0xae6d, 0x88ff, 0x1198, 0xace0, ++ 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, 0xc061, ++ 0xa006, 0x012e, 0x002e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, ++ 0x00fe, 0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, 0x0056, 0x0086, ++ 0x2041, 0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, ++ 0x0096, 0x2049, 0x0000, 0x080c, 0x8fe2, 0x009e, 0x008e, 0x2039, ++ 0x0000, 0x080c, 0x9088, 0x080c, 0xc052, 0x005e, 0x007e, 0x0005, ++ 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128, ++ 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x5356, ++ 0x11b0, 0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, 0x2508, 0x2029, ++ 0x0001, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fe2, 0x009e, 0x008e, ++ 0x2039, 0x0000, 0x080c, 0x9088, 0x080c, 0xc052, 0x005e, 0x003e, ++ 0x001e, 0x8108, 0x1f04, 0xc0e4, 0x015e, 0x00ce, 0x007e, 0x005e, ++ 0x004e, 0x002e, 0x0005, 0x0076, 0x0056, 0x6218, 0x0086, 0x2041, ++ 0x0000, 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, 0x2049, 0x0000, ++ 0x080c, 0x8fe2, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x9088, ++ 0x2c20, 0x080c, 0xc052, 0x005e, 0x007e, 0x0005, 0x0026, 0x0046, ++ 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x007f, 0x2009, ++ 0x0000, 0x0016, 0x0036, 0x080c, 0x5356, 0x11c0, 0x2c10, 0x0086, ++ 0x2041, 0x0000, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xc3dd, ++ 0x004e, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fe2, 0x009e, 0x008e, ++ 0x2039, 0x0000, 0x080c, 0x9088, 0x080c, 0xc052, 0x003e, 0x001e, ++ 0x8108, 0x1f04, 0xc131, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, ++ 0x002e, 0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, 0x0130, 0xad82, ++ 0x1000, 0x02b0, 0xad82, 0xc600, 0x0230, 0xad82, 0xfe00, 0x0280, ++ 0xad82, 0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, 0x6803, 0x0000, ++ 0x6b52, 0x080c, 0x5823, 0x2f68, 0x0cb0, 0x6b52, 0x080c, 0x5823, ++ 0x00fe, 0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, 0x2061, 0xce00, ++ 0xa005, 0x1138, 0x2071, 0xc600, 0x7448, 0x7068, 0x8001, 0xa402, ++ 0x12d8, 0x2100, 0xac06, 0x0168, 0x6000, 0xa086, 0x0000, 0x0148, ++ 0x6008, 0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406, ++ 0x0140, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1220, ++ 0x0c40, 0xa085, 0x0001, 0x0008, 0xa006, 0x003e, 0x004e, 0x00ee, ++ 0x0005, 0x00d6, 0x0006, 0x080c, 0x1602, 0x000e, 0x090c, 0x1519, ++ 0x6837, 0x010d, 0x685e, 0x0026, 0x2010, 0x080c, 0xac9a, 0x2001, ++ 0x0000, 0x0120, 0x2200, 0xa080, 0x0014, 0x2004, 0x002e, 0x684a, ++ 0x6956, 0x6c46, 0x684f, 0x0000, 0x2001, 0xc905, 0x2004, 0x6852, ++ 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, 0x5823, 0x00de, ++ 0x0005, 0x6700, 0xa786, 0x0000, 0x0158, 0xa786, 0x0001, 0x0140, ++ 0xa786, 0x000a, 0x0128, 0xa786, 0x0009, 0x0110, 0xa085, 0x0001, ++ 0x0005, 0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, 0x00ee, 0x0005, ++ 0x0016, 0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, 0x6130, 0xa18c, ++ 0x00ff, 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, ++ 0x0005, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x79b2, 0x080c, ++ 0x7ead, 0x001e, 0x0005, 0xe000, 0xe000, 0x0005, 0x6020, 0xd0e4, ++ 0x0158, 0xd0cc, 0x0118, 0x080c, 0xaf85, 0x0030, 0x080c, 0xc3fb, ++ 0x080c, 0x711c, 0x080c, 0x95fc, 0x0005, 0xa280, 0x0007, 0x2004, ++ 0xa084, 0x000f, 0x0002, 0xc224, 0xc224, 0xc224, 0xc229, 0xc224, ++ 0xc226, 0xc226, 0xc224, 0xc226, 0xa006, 0x0005, 0x00c6, 0x2260, ++ 0x00ce, 0xa085, 0x0001, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084, ++ 0x000f, 0x0002, 0xc23b, 0xc23b, 0xc23b, 0xc23b, 0xc23b, 0xc23b, ++ 0xc246, 0xc23b, 0xc23b, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, ++ 0x2a00, 0x6003, 0x0001, 0x080c, 0x79b2, 0x0005, 0x00c6, 0x2260, ++ 0x080c, 0xc3fb, 0x603f, 0x0000, 0x6020, 0xc0f4, 0xc0cc, 0x6022, ++ 0x6037, 0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, 0x0007, 0x1904, ++ 0xc2a1, 0x6810, 0xa005, 0x0138, 0xa080, 0x0013, 0x2004, 0xd0fc, ++ 0x1110, 0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, ++ 0x79b2, 0x080c, 0x7ead, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002, ++ 0x1904, 0xc32a, 0x6010, 0xa005, 0x1138, 0x6000, 0xa086, 0x0007, ++ 0x190c, 0x1519, 0x0804, 0xc32a, 0xa08c, 0xf000, 0x1130, 0x0028, ++ 0x2068, 0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, 0x0013, 0x2004, ++ 0xa084, 0x0003, 0xa086, 0x0002, 0x1180, 0x6010, 0x2068, 0x684c, ++ 0xc0dc, 0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, ++ 0x0043, 0x080c, 0xbbe4, 0x0804, 0xc32a, 0x2009, 0x0041, 0x0804, ++ 0xc324, 0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, 0x0013, 0x2004, ++ 0xd0bc, 0x1118, 0x00de, 0x0804, 0xc23b, 0xd0b4, 0x0128, 0xd0fc, ++ 0x090c, 0x1519, 0x0804, 0xc259, 0x6007, 0x003a, 0x6003, 0x0001, ++ 0x080c, 0x79b2, 0x080c, 0x7ead, 0x00c6, 0x2d60, 0x6100, 0xa186, ++ 0x0002, 0x0120, 0xa186, 0x0004, 0x1904, 0xc32a, 0x2071, 0xc96a, ++ 0x7000, 0xa086, 0x0003, 0x1128, 0x7004, 0xac06, 0x1110, 0x7003, ++ 0x0000, 0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, 0xc1dc, 0x2102, ++ 0x8000, 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, 0x2009, 0x0042, ++ 0x0804, 0xc324, 0x0036, 0x00d6, 0x00d6, 0x080c, 0x1602, 0x003e, ++ 0x090c, 0x1519, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, ++ 0x685b, 0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, 0x6862, 0x6034, ++ 0x6872, 0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, 0xa080, 0x0028, ++ 0x2004, 0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, 0x6846, 0x684f, ++ 0x0000, 0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, 0x0001, 0x080c, ++ 0x5823, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xbd6e, 0x2d00, ++ 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, 0x0000, 0x603f, ++ 0x0000, 0x00de, 0x003e, 0x0038, 0x603f, 0x0000, 0x6003, 0x0007, ++ 0x080c, 0xbbe4, 0x00ce, 0x00de, 0x0005, 0xa186, 0x0013, 0x1128, ++ 0x6004, 0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, 0x0027, 0x1178, ++ 0x080c, 0x7dca, 0x0036, 0x00d6, 0x6010, 0x2068, 0x2019, 0x0004, ++ 0x080c, 0xc15a, 0x00de, 0x003e, 0x080c, 0x7ead, 0x0005, 0xa186, ++ 0x0014, 0x0d70, 0x080c, 0x9643, 0x0005, 0xc356, 0xc354, 0xc354, ++ 0xc354, 0xc354, 0xc354, 0xc356, 0x080c, 0x1519, 0x080c, 0x7dca, ++ 0x6003, 0x000c, 0x080c, 0x7ead, 0x0005, 0xa182, 0x008c, 0x1220, ++ 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x9643, 0x0005, 0xc36e, ++ 0xc36e, 0xc36e, 0xc36e, 0xc370, 0xc38e, 0xc36e, 0x080c, 0x1519, ++ 0x00d6, 0x2c68, 0x080c, 0x95a6, 0x01a0, 0x6003, 0x0001, 0x6007, ++ 0x001e, 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, 0xcc8f, 0x210c, ++ 0x613a, 0x600b, 0xffff, 0x6918, 0x611a, 0x601f, 0x0004, 0x080c, ++ 0x79b2, 0x2d60, 0x080c, 0x95fc, 0x00de, 0x0005, 0x080c, 0x95fc, ++ 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, 0x00ee, 0x0005, ++ 0x6010, 0xa08c, 0xf000, 0x0904, 0xc3dc, 0xa080, 0x0013, 0x200c, ++ 0xd1ec, 0x05d0, 0x2001, 0xc672, 0x2004, 0xd0ec, 0x05a8, 0x6003, ++ 0x0002, 0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, 0x00f6, 0x2c78, ++ 0x080c, 0x56d8, 0x00fe, 0x0150, 0x2001, 0xc8ff, 0x2004, 0x603e, ++ 0x2009, 0xc672, 0x210c, 0xd1f4, 0x11e8, 0x0080, 0x2009, 0xc672, ++ 0x210c, 0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, 0xa006, 0x00a0, ++ 0x2001, 0xc8ff, 0x200c, 0x8103, 0xa100, 0x603e, 0x6018, 0xa088, ++ 0x002f, 0x2104, 0xa005, 0x0118, 0xa088, 0x0003, 0x0cd0, 0x2c0a, ++ 0x600f, 0x0000, 0xa085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, ++ 0x6150, 0xa2f0, 0x002f, 0x2e04, 0x2060, 0x8cff, 0x0180, 0x84ff, ++ 0x1118, 0x6050, 0xa106, 0x1138, 0x600c, 0x2072, 0x080c, 0x711c, ++ 0x080c, 0x95fc, 0x0010, 0xacf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, ++ 0x00ce, 0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, 0x002f, 0x2d04, ++ 0xa005, 0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, 0x0003, 0x0cb8, ++ 0x600c, 0x206a, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, ++ 0xc628, 0x2204, 0xa084, 0x00ff, 0x2019, 0xcc8e, 0x2334, 0xa636, ++ 0x11d8, 0x8318, 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x11a0, ++ 0x2011, 0xcc90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x080c, ++ 0xa11c, 0x1150, 0x2011, 0xcc94, 0x6018, 0xa098, 0x0006, 0x20a9, ++ 0x0004, 0x080c, 0xa11c, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, ++ 0x00e6, 0x2071, 0xc600, 0x080c, 0x4f1b, 0x080c, 0x2c62, 0x00ee, ++ 0x0005, 0x00d6, 0x080c, 0x15e5, 0x0500, 0x2d10, 0xa290, 0x000d, ++ 0x2013, 0x0134, 0x8210, 0x2013, 0x0000, 0x8210, 0x703c, 0x2012, ++ 0x8210, 0x7038, 0x2012, 0x8210, 0x2218, 0x7048, 0x2012, 0x8210, ++ 0x704c, 0x2012, 0x8210, 0x7050, 0x2012, 0x8210, 0x7054, 0x2012, ++ 0x2300, 0x080c, 0x3e91, 0x080c, 0x5823, 0x00de, 0x0005, 0x00d6, ++ 0x0026, 0x080c, 0x1602, 0x090c, 0x1519, 0xad90, 0x000e, 0x20a9, ++ 0x000c, 0x22a0, 0xa016, 0x42a4, 0xa186, 0x0046, 0x1118, 0x6837, ++ 0x0136, 0x0038, 0x6837, 0x0138, 0xa186, 0x0041, 0x0110, 0x684b, ++ 0x0001, 0x7038, 0xa084, 0xff00, 0x7240, 0xa294, 0xff00, 0x8007, ++ 0xa215, 0x6a6a, 0xa186, 0x0046, 0x1168, 0x7038, 0xa084, 0x00ff, ++ 0x723c, 0xa294, 0xff00, 0xa215, 0x6a6e, 0x723c, 0xa294, 0x00ff, ++ 0x6a72, 0x0060, 0x7040, 0xa084, 0x00ff, 0x7244, 0xa294, 0xff00, ++ 0xa215, 0x6a6e, 0x7244, 0xa294, 0x00ff, 0x6a72, 0xa186, 0x0046, ++ 0x1118, 0xae90, 0x0012, 0x0010, 0xae90, 0x001a, 0x2204, 0x8007, ++ 0x6876, 0x8210, 0x2204, 0x8007, 0x687a, 0x8210, 0x2204, 0x8007, ++ 0x687e, 0x8210, 0x2204, 0x8007, 0x6882, 0x8210, 0xa186, 0x0046, ++ 0x1118, 0xae90, 0x0016, 0x0010, 0xae90, 0x001e, 0x2204, 0x8007, ++ 0x6886, 0x8210, 0x2204, 0x8007, 0x688a, 0x8210, 0x2204, 0x8007, ++ 0x688e, 0x8210, 0x2204, 0x8007, 0x6892, 0x8210, 0xa186, 0x0046, ++ 0x1118, 0xae90, 0x0022, 0x0010, 0xae90, 0x002a, 0x00d6, 0xade8, ++ 0x0025, 0x20a9, 0x0008, 0x2204, 0x8007, 0x206a, 0x8210, 0x8d68, ++ 0x1f04, 0xc4e3, 0x00de, 0x002e, 0x080c, 0x5823, 0x00de, 0x0005, ++ 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0108, 0x0011, 0x00ee, ++ 0x0005, 0x6850, 0xc0e5, 0x6852, 0x0005, 0x00e6, 0x00c6, 0x0076, ++ 0x0066, 0x0056, 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, ++ 0x2029, 0xc930, 0x252c, 0x2021, 0xc936, 0x2424, 0x2061, 0xce00, ++ 0x2071, 0xc600, 0x7648, 0x7068, 0xa606, 0x0578, 0x671c, 0xa786, ++ 0x0001, 0x0118, 0xa786, 0x0008, 0x1500, 0x2500, 0xac06, 0x01e8, ++ 0x2400, 0xac06, 0x01d0, 0x080c, 0xc1d1, 0x01b8, 0x080c, 0xc1e1, ++ 0x11a0, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1953, ++ 0x001e, 0x080c, 0xae97, 0x1110, 0x080c, 0x2e6c, 0x080c, 0xaea8, ++ 0x1110, 0x080c, 0x9c22, 0x080c, 0xae6d, 0xace0, 0x0018, 0x2001, ++ 0xc617, 0x2004, 0xac02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, ++ 0x004e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, ++ 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, ++ 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, ++ 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, ++ 0xc64a, 0x04c9, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, ++ 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, ++ 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, ++ 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, ++ 0xc64a, 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, ++ 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xc642, 0x0021, 0x00ee, ++ 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, ++ 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, 0xc640, 0x0c99, ++ 0x00ee, 0x0005, 0x00e6, 0x2071, 0xc644, 0x0c69, 0x00ee, 0x0005, ++ 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xc640, 0x7044, ++ 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0001, 0x0002, ++ 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, ++ 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xaedc + }; + #ifdef UNIQUE_FW_NAME +-unsigned short fw2200ip_length01 = 0xb5b9; ++unsigned short fw2200ip_length01 = 0xb5df; + #else +-unsigned short risc_code_length01 = 0xb5b9; ++unsigned short risc_code_length01 = 0xb5df; + #endif + +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2300flx_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2300flx_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2300flx_fw.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2300flx_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,6903 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, 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. ++ * ++ ******************************************************************************/ ++ ++/************************************************************************ ++ * * ++ * --- ISP2300 Initiator/Target Firmware --- * ++ * with Fabric (Public Loop), Point-point, * ++ * expanded LUN addressing for FCTAPE, and 2K port logins * ++ * FibreLite enabled * ++ * * ++ ********************************************************************** */ ++/* ++ * Firmware Version 3.02.28 (13:56 Apr 03, 2004) ++ */ ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300flx_version = 3*1024+2; ++#else ++unsigned short risc_code_version = 3*1024+2; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned char fw2300flx_version_str[] = {3, 2,28}; ++#else ++unsigned char firmware_version[] = {3, 2,28}; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++#define fw2300flx_VERSION_STRING "3.02.28" ++#else ++#define FW_VERSION_STRING "3.02.28" ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300flx_addr01 = 0x0800 ; ++#else ++unsigned short risc_code_addr01 = 0x0800 ; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300flx_code01[] = { ++#else ++unsigned short risc_code01[] = { ++#endif ++ 0x0470, 0x0000, 0x0000, 0xd59a, 0x0000, 0x0003, 0x0002, 0x001c, ++ 0x0317, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, ++ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, ++ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972, ++ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, ++ 0x332e, 0x3032, 0x2e32, 0x3820, 0x2020, 0x2020, 0x2400, 0x20a9, ++ 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f, ++ 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001, ++ 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000, ++ 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, ++ 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, ++ 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00, ++ 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001, ++ 0x0000, 0x20c1, 0x0004, 0x20c9, 0x1bff, 0x2059, 0x0000, 0x2b78, ++ 0x7883, 0x0004, 0x2089, 0x2b4e, 0x2051, 0x1800, 0x2a70, 0x20e1, ++ 0x0001, 0x20e9, 0x0001, 0x2009, 0x0000, 0x080c, 0x0e2f, 0x2029, ++ 0x2480, 0x2031, 0xffff, 0x2039, 0x2450, 0x2021, 0x0050, 0x20e9, ++ 0x0001, 0x20a1, 0x0000, 0x20a9, 0x0800, 0x900e, 0x4104, 0x20e9, ++ 0x0001, 0x20a1, 0x1000, 0x900e, 0x2001, 0x0cc0, 0x9084, 0x0fff, ++ 0x20a8, 0x4104, 0x2001, 0x0000, 0x9086, 0x0000, 0x0120, 0x21a8, ++ 0x4104, 0x8001, 0x1de0, 0x756a, 0x766e, 0x7766, 0x7472, 0x7476, ++ 0x00e6, 0x2071, 0x1a98, 0x2472, 0x00ee, 0x20a1, 0x1cd0, 0x716c, ++ 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x000f, 0x2001, 0x0001, ++ 0x9112, 0x900e, 0x21a8, 0x4104, 0x8211, 0x1de0, 0x716c, 0x3400, ++ 0x8001, 0x9102, 0x0120, 0x0218, 0x20a8, 0x900e, 0x4104, 0x2009, ++ 0x1800, 0x810d, 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x001f, ++ 0x2001, 0x0001, 0x9112, 0x20e9, 0x0001, 0x20a1, 0x0800, 0x900e, ++ 0x20a9, 0x0800, 0x4104, 0x8211, 0x1dd8, 0x080c, 0x0f03, 0x080c, ++ 0x5cdf, 0x080c, 0x9dc8, 0x080c, 0x10ba, 0x080c, 0x129f, 0x080c, ++ 0x1a53, 0x080c, 0x0d46, 0x080c, 0x103f, 0x080c, 0x3238, 0x080c, ++ 0x72aa, 0x080c, 0x661d, 0x080c, 0x7f73, 0x080c, 0x230a, 0x080c, ++ 0x82a0, 0x080c, 0x7933, 0x080c, 0x2147, 0x080c, 0x227b, 0x080c, ++ 0x22ff, 0x2091, 0x3009, 0x7883, 0x0000, 0x1004, 0x091d, 0x7880, ++ 0x9086, 0x0002, 0x1190, 0x7883, 0x4000, 0x7837, 0x4000, 0x7833, ++ 0x0010, 0x0e04, 0x0911, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x2071, 0x1800, 0x7003, ++ 0x0000, 0x2071, 0x1800, 0x7000, 0x908e, 0x0003, 0x1168, 0x080c, ++ 0x499e, 0x080c, 0x325f, 0x080c, 0x731b, 0x080c, 0x6add, 0x080c, ++ 0x7f9c, 0x080c, 0x2ab8, 0x0c68, 0x000b, 0x0c88, 0x0940, 0x0941, ++ 0x0ad8, 0x093e, 0x0b8f, 0x0d45, 0x0d45, 0x0d45, 0x080c, 0x0db4, ++ 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0x9086, 0x0001, ++ 0x1904, 0x0aab, 0x080c, 0x0e71, 0x080c, 0x6fb2, 0x0150, 0x080c, ++ 0x6fd5, 0x15a0, 0x2079, 0x0100, 0x7828, 0x9085, 0x1800, 0x782a, ++ 0x0468, 0x080c, 0x6ee4, 0x7000, 0x9086, 0x0001, 0x1904, 0x0aab, ++ 0x7094, 0x9086, 0x0028, 0x1904, 0x0aab, 0x080c, 0x7f6b, 0x080c, ++ 0x7f5d, 0x2001, 0x0161, 0x2003, 0x0001, 0x2079, 0x0100, 0x7827, ++ 0xffff, 0x7a28, 0x9295, 0x5e2f, 0x7a2a, 0x2011, 0x6e33, 0x080c, ++ 0x8038, 0x2011, 0x6e26, 0x080c, 0x810c, 0x2011, 0x5b3a, 0x080c, ++ 0x8038, 0x2011, 0x8030, 0x901e, 0x7392, 0x04d0, 0x080c, 0x53e7, ++ 0x2079, 0x0100, 0x7844, 0x9005, 0x1904, 0x0aab, 0x2011, 0x5b3a, ++ 0x080c, 0x8038, 0x2011, 0x6e33, 0x080c, 0x8038, 0x2011, 0x6e26, ++ 0x080c, 0x810c, 0x2001, 0x0265, 0x2001, 0x0205, 0x2003, 0x0000, ++ 0x7840, 0x9084, 0xfffb, 0x7842, 0x2001, 0x1977, 0x2004, 0x9005, ++ 0x1140, 0x00c6, 0x2061, 0x0100, 0x080c, 0x5c87, 0x00ce, 0x0804, ++ 0x0aab, 0x780f, 0x006b, 0x7a28, 0x080c, 0x6fba, 0x0118, 0x9295, ++ 0x5e2f, 0x0010, 0x9295, 0x402f, 0x7a2a, 0x2011, 0x8010, 0x73d4, ++ 0x2001, 0x1978, 0x2003, 0x0001, 0x080c, 0x297e, 0x080c, 0x48d9, ++ 0x7244, 0xc284, 0x7246, 0x2001, 0x180c, 0x200c, 0xc1ac, 0xc1cc, ++ 0x2102, 0x080c, 0x963f, 0x2011, 0x0004, 0x080c, 0xbb27, 0x080c, ++ 0x6461, 0x080c, 0x6fb2, 0x1120, 0x080c, 0x29c2, 0x02e0, 0x0400, ++ 0x080c, 0x5c8e, 0x0140, 0x7093, 0x0001, 0x70cf, 0x0000, 0x080c, ++ 0x55b4, 0x0804, 0x0aab, 0x080c, 0x5386, 0xd094, 0x0188, 0x2011, ++ 0x180c, 0x2204, 0xc0cd, 0x2012, 0x080c, 0x538a, 0xd0d4, 0x1118, ++ 0x080c, 0x29c2, 0x1270, 0x2011, 0x180c, 0x2204, 0xc0bc, 0x0088, ++ 0x080c, 0x538a, 0xd0d4, 0x1db8, 0x2011, 0x180c, 0x2204, 0xc0bd, ++ 0x0040, 0x2011, 0x180c, 0x2204, 0xc0bd, 0x2012, 0x080c, 0x655a, ++ 0x0008, 0x2012, 0x080c, 0x6520, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, ++ 0x00a8, 0x707b, 0x0000, 0x080c, 0x6fb2, 0x1130, 0x70ac, 0x9005, ++ 0x1168, 0x080c, 0xbf63, 0x0050, 0x080c, 0xbf63, 0x70d8, 0xd09c, ++ 0x1128, 0x70ac, 0x9005, 0x0110, 0x080c, 0x5c64, 0x70e3, 0x0000, ++ 0x70df, 0x0000, 0x70a3, 0x0000, 0x080c, 0x29ca, 0x0228, 0x2011, ++ 0x0101, 0x2204, 0xc0c4, 0x2012, 0x72d8, 0x080c, 0x6fb2, 0x1178, ++ 0x9016, 0x0016, 0x2009, 0x0002, 0x2019, 0x193e, 0x211a, 0x001e, ++ 0x705b, 0xffff, 0x705f, 0x00ef, 0x707f, 0x0000, 0x0020, 0x2019, ++ 0x193e, 0x201b, 0x0000, 0x2079, 0x1853, 0x7804, 0xd0ac, 0x0108, ++ 0xc295, 0x72da, 0x080c, 0x6fb2, 0x0118, 0x9296, 0x0004, 0x0548, ++ 0x2011, 0x0001, 0x080c, 0xbb27, 0x70a7, 0x0000, 0x70ab, 0xffff, ++ 0x7003, 0x0002, 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0x9085, ++ 0x0003, 0x782a, 0x00fe, 0x080c, 0x2dbb, 0x2011, 0x0005, 0x080c, ++ 0x9771, 0x080c, 0x8973, 0x080c, 0x6fb2, 0x0148, 0x00c6, 0x2061, ++ 0x0100, 0x0016, 0x2009, 0x0002, 0x61e2, 0x001e, 0x00ce, 0x012e, ++ 0x0420, 0x70a7, 0x0000, 0x70ab, 0xffff, 0x7003, 0x0002, 0x00f6, ++ 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, ++ 0x00fe, 0x2011, 0x0005, 0x080c, 0x9771, 0x080c, 0x8973, 0x080c, ++ 0x6fb2, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x2009, 0x0002, ++ 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x00b6, ++ 0x080c, 0x6fb2, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, 0x0782, ++ 0x080c, 0x6fb2, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, 0x86ff, ++ 0x0138, 0x9180, 0x1000, 0x2004, 0x905d, 0x0110, 0xb800, 0xd0bc, ++ 0x090c, 0x30d5, 0x8108, 0x1f04, 0x0abf, 0x707b, 0x0000, 0x707c, ++ 0x9084, 0x00ff, 0x707e, 0x70af, 0x0000, 0x00be, 0x00ce, 0x0005, ++ 0x00b6, 0x0126, 0x2091, 0x8000, 0x7000, 0x9086, 0x0002, 0x1904, ++ 0x0b8c, 0x70a8, 0x9086, 0xffff, 0x0130, 0x080c, 0x2dbb, 0x080c, ++ 0x8973, 0x0804, 0x0b8c, 0x70d8, 0xd0ac, 0x1110, 0xd09c, 0x0540, ++ 0xd084, 0x0530, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, ++ 0xd08c, 0x01f0, 0x70dc, 0x9086, 0xffff, 0x01b0, 0x080c, 0x2f46, ++ 0x080c, 0x8973, 0x70d8, 0xd094, 0x1904, 0x0b8c, 0x2011, 0x0001, ++ 0x080c, 0xc212, 0x0110, 0x2011, 0x0003, 0x901e, 0x080c, 0x2f80, ++ 0x080c, 0x8973, 0x0804, 0x0b8c, 0x70e0, 0x9005, 0x1904, 0x0b8c, ++ 0x70a4, 0x9005, 0x1904, 0x0b8c, 0x70d8, 0xd0a4, 0x0118, 0xd0b4, ++ 0x0904, 0x0b8c, 0x080c, 0x6520, 0x1904, 0x0b8c, 0x080c, 0x6573, ++ 0x1904, 0x0b8c, 0x080c, 0x655a, 0x01c0, 0x0156, 0x00c6, 0x20a9, ++ 0x007f, 0x900e, 0x0016, 0x080c, 0x623e, 0x1118, 0xb800, 0xd0ec, ++ 0x1138, 0x001e, 0x8108, 0x1f04, 0x0b32, 0x00ce, 0x015e, 0x0028, ++ 0x001e, 0x00ce, 0x015e, 0x0804, 0x0b8c, 0x0006, 0x2001, 0x0103, ++ 0x2003, 0x006b, 0x000e, 0x2011, 0x1984, 0x080c, 0x0f73, 0x2011, ++ 0x199e, 0x080c, 0x0f73, 0x7030, 0xc08c, 0x7032, 0x7003, 0x0003, ++ 0x70ab, 0xffff, 0x080c, 0x0e53, 0x9006, 0x080c, 0x260c, 0x0036, ++ 0x0046, 0x2019, 0xffff, 0x2021, 0x0006, 0x080c, 0x4a76, 0x004e, ++ 0x003e, 0x00f6, 0x2079, 0x0100, 0x080c, 0x6fd5, 0x0150, 0x080c, ++ 0x6fb2, 0x7828, 0x0118, 0x9084, 0xe1ff, 0x0010, 0x9084, 0xffdf, ++ 0x782a, 0x00fe, 0x2001, 0x19b9, 0x2004, 0x9086, 0x0005, 0x1120, ++ 0x2011, 0x0000, 0x080c, 0x9771, 0x2011, 0x0000, 0x080c, 0x977b, ++ 0x080c, 0x8973, 0x080c, 0x8a4e, 0x012e, 0x00be, 0x0005, 0x0016, ++ 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x7904, ++ 0x918c, 0xfffd, 0x7906, 0x2009, 0x00f7, 0x080c, 0x5c4d, 0x7940, ++ 0x918c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, ++ 0xd19c, 0x0110, 0x7827, 0x0008, 0x0006, 0x0036, 0x0156, 0x7954, ++ 0xd1ac, 0x1904, 0x0c1c, 0x2001, 0x1978, 0x2004, 0x9005, 0x1518, ++ 0x080c, 0x2a45, 0x1148, 0x2001, 0x0001, 0x080c, 0x29ad, 0x2001, ++ 0x0001, 0x080c, 0x2990, 0x00b8, 0x080c, 0x2a4d, 0x1138, 0x9006, ++ 0x080c, 0x29ad, 0x9006, 0x080c, 0x2990, 0x0068, 0x080c, 0x2a55, ++ 0x1d50, 0x2001, 0x1969, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, ++ 0x27a7, 0x0804, 0x0cfc, 0x080c, 0x6fc3, 0x0148, 0x080c, 0x6fd5, ++ 0x1118, 0x080c, 0x72a5, 0x0050, 0x080c, 0x6fba, 0x0dd0, 0x080c, ++ 0x72a0, 0x080c, 0x7296, 0x080c, 0x6ee4, 0x0058, 0x080c, 0x6fb2, ++ 0x0140, 0x2009, 0x00f8, 0x080c, 0x5c4d, 0x7843, 0x0090, 0x7843, ++ 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138, 0x080c, 0x6fb2, ++ 0x0138, 0x7824, 0xd0ac, 0x1904, 0x0d01, 0x1f04, 0x0bfb, 0x0070, ++ 0x7824, 0x080c, 0x6fcc, 0x0118, 0xd0ac, 0x1904, 0x0d01, 0x9084, ++ 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, 0x0d01, 0x2001, 0x0001, ++ 0x080c, 0x260c, 0x0804, 0x0d14, 0x2001, 0x1978, 0x2004, 0x9005, ++ 0x1518, 0x080c, 0x2a45, 0x1148, 0x2001, 0x0001, 0x080c, 0x29ad, ++ 0x2001, 0x0001, 0x080c, 0x2990, 0x00b8, 0x080c, 0x2a4d, 0x1138, ++ 0x9006, 0x080c, 0x29ad, 0x9006, 0x080c, 0x2990, 0x0068, 0x080c, ++ 0x2a55, 0x1d50, 0x2001, 0x1969, 0x2004, 0xd0fc, 0x0108, 0x0020, ++ 0x080c, 0x27a7, 0x0804, 0x0cfc, 0x7850, 0x9085, 0x0040, 0x7852, ++ 0x7938, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x2a5d, 0x9085, ++ 0x2000, 0x7852, 0x793a, 0x20a9, 0x0046, 0x1d04, 0x0c55, 0x080c, ++ 0x80ec, 0x1f04, 0x0c55, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf, ++ 0x7852, 0x793a, 0x080c, 0x6fc3, 0x0148, 0x080c, 0x6fd5, 0x1118, ++ 0x080c, 0x72a5, 0x0050, 0x080c, 0x6fba, 0x0dd0, 0x080c, 0x72a0, ++ 0x080c, 0x7296, 0x080c, 0x6ee4, 0x0020, 0x2009, 0x00f8, 0x080c, ++ 0x5c4d, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x0c7b, 0x7850, 0x9085, ++ 0x1400, 0x7852, 0x080c, 0x6fb2, 0x0120, 0x7843, 0x0090, 0x7843, ++ 0x0010, 0x2021, 0xe678, 0x2019, 0xea60, 0x0d0c, 0x80ec, 0x7820, ++ 0xd09c, 0x1588, 0x080c, 0x6fb2, 0x0904, 0x0ce1, 0x7824, 0xd0ac, ++ 0x1904, 0x0d01, 0x080c, 0x6fd5, 0x1530, 0x0046, 0x2021, 0x0320, ++ 0x8421, 0x1df0, 0x004e, 0x7827, 0x1800, 0x080c, 0x2a5d, 0x7824, ++ 0x9084, 0x1800, 0x1168, 0x9484, 0x0fff, 0x1140, 0x2001, 0x1810, ++ 0x2004, 0x9084, 0x9000, 0x0110, 0x080c, 0x0d22, 0x8421, 0x1158, ++ 0x1d04, 0x0cbc, 0x080c, 0x80ec, 0x080c, 0x72a0, 0x080c, 0x7296, ++ 0x7003, 0x0001, 0x04f0, 0x8319, 0x1940, 0x1d04, 0x0cc9, 0x080c, ++ 0x80ec, 0x2009, 0x196c, 0x2104, 0x9005, 0x0118, 0x8001, 0x200a, ++ 0x1178, 0x200b, 0x000a, 0x7827, 0x0048, 0x20a9, 0x0002, 0x080c, ++ 0x2a3e, 0x7924, 0x080c, 0x2a5d, 0xd19c, 0x0110, 0x080c, 0x297e, ++ 0x00d8, 0x080c, 0x6fc3, 0x1140, 0x94a2, 0x03e8, 0x1128, 0x080c, ++ 0x6f8a, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0x080c, 0x2a5d, ++ 0x7824, 0x080c, 0x6fcc, 0x0110, 0xd0ac, 0x1158, 0x9084, 0x1800, ++ 0x0950, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x260c, ++ 0x0078, 0x2009, 0x180c, 0x210c, 0xd19c, 0x1120, 0x7904, 0x918d, ++ 0x0002, 0x7906, 0x7827, 0x0048, 0x7828, 0x9085, 0x0028, 0x782a, ++ 0x7850, 0x9085, 0x0400, 0x7852, 0x2001, 0x1978, 0x2003, 0x0000, ++ 0x9006, 0x78f2, 0x015e, 0x003e, 0x000e, 0x012e, 0x00fe, 0x004e, ++ 0x001e, 0x0005, 0x0006, 0x0016, 0x0036, 0x0046, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0069, 0x0d0c, 0x80ec, 0x015e, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x004e, 0x003e, 0x001e, ++ 0x000e, 0x0005, 0x00e6, 0x2071, 0x1894, 0x7004, 0x9086, 0x0001, ++ 0x1110, 0x080c, 0x325f, 0x00ee, 0x0005, 0x0005, 0x2a70, 0x2061, ++ 0x197c, 0x2063, 0x0003, 0x6007, 0x0002, 0x600b, 0x001c, 0x600f, ++ 0x0317, 0x2001, 0x194d, 0x900e, 0x2102, 0x7192, 0x2001, 0x0100, ++ 0x2004, 0x9082, 0x0002, 0x0218, 0x705b, 0xffff, 0x0008, 0x715a, ++ 0x7063, 0xffff, 0x717a, 0x717e, 0x080c, 0xbf63, 0x70e7, 0x00c0, ++ 0x2061, 0x193d, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, 0x600f, ++ 0x0200, 0x6013, 0x00ff, 0x6017, 0x000f, 0x611a, 0x601f, 0x07d0, ++ 0x2061, 0x1945, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, 0x0200, ++ 0x6013, 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, 0x195a, ++ 0x6003, 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, ++ 0x2001, 0x182b, 0x2102, 0x0005, 0x9016, 0x080c, 0x623e, 0x1178, ++ 0xb804, 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, 0xff00, ++ 0x98c6, 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, 0x8108, ++ 0x9186, 0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, 0x2079, ++ 0x0000, 0x000e, 0x00f6, 0x0010, 0x2091, 0x8000, 0x0e04, 0x0db6, ++ 0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, 0x000e, ++ 0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, 0x7886, ++ 0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, 0x00d6, ++ 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1a72, 0x7a08, 0x226a, ++ 0x2069, 0x1a73, 0x7a18, 0x226a, 0x8d68, 0x7a1c, 0x226a, 0x782c, ++ 0x2019, 0x1a80, 0x201a, 0x2019, 0x1a83, 0x9016, 0x7808, 0xd09c, ++ 0x0168, 0x7820, 0x201a, 0x8210, 0x8318, 0x9386, 0x1a98, 0x0108, ++ 0x0ca8, 0x7808, 0xd09c, 0x0110, 0x2011, 0xdead, 0x2019, 0x1a81, ++ 0x782c, 0x201a, 0x8318, 0x221a, 0x7803, 0x0000, 0x2069, 0x1a52, ++ 0x901e, 0x20a9, 0x0020, 0x7b26, 0x7a28, 0x226a, 0x8d68, 0x8318, ++ 0x1f04, 0x0e03, 0x002e, 0x003e, 0x00de, 0x015e, 0x2079, 0x1800, ++ 0x7803, 0x0005, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x0180, 0x2001, 0x19ea, 0x2004, 0x9005, 0x0128, 0x2001, 0x008b, ++ 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, 0x2003, ++ 0x1001, 0x080c, 0x5395, 0x1108, 0x0099, 0x0cd8, 0x0005, 0x918c, ++ 0x03ff, 0x2001, 0x0003, 0x2004, 0x9084, 0x0600, 0x1118, 0x918d, ++ 0x2800, 0x0010, 0x918d, 0x2000, 0x2001, 0x017f, 0x2102, 0x0005, ++ 0x0026, 0x0126, 0x2011, 0x0080, 0x080c, 0x0ecb, 0x20a9, 0x0900, ++ 0x080c, 0x0eec, 0x2011, 0x0040, 0x080c, 0x0ecb, 0x20a9, 0x0900, ++ 0x080c, 0x0eec, 0x0c78, 0x0026, 0x080c, 0x0ed8, 0x1118, 0x2011, ++ 0x0040, 0x0098, 0x2011, 0x010e, 0x2214, 0x9294, 0x0007, 0x9296, ++ 0x0007, 0x0118, 0x2011, 0xa880, 0x0010, 0x2011, 0x6840, 0xd0e4, ++ 0x70eb, 0x0000, 0x1128, 0x70eb, 0x0fa0, 0x080c, 0x0edd, 0x002e, ++ 0x0005, 0x0026, 0x080c, 0x0ed8, 0x0128, 0xd0a4, 0x1138, 0x2011, ++ 0xcdd5, 0x0010, 0x2011, 0x0080, 0x080c, 0x0edd, 0x002e, 0x0005, ++ 0x0026, 0x70eb, 0x0000, 0x080c, 0x0ed8, 0x1148, 0x080c, 0x2a55, ++ 0x1118, 0x2011, 0x8484, 0x0058, 0x2011, 0x8282, 0x0040, 0x080c, ++ 0x2a55, 0x1118, 0x2011, 0xcdc5, 0x0010, 0x2011, 0xcac2, 0x080c, ++ 0x0edd, 0x002e, 0x0005, 0x00e6, 0x0006, 0x2071, 0x1800, 0xd0b4, ++ 0x70e4, 0x1110, 0xc0e4, 0x0048, 0x0006, 0x3b00, 0x9084, 0xff3f, ++ 0x20d8, 0x000e, 0x70eb, 0x0000, 0xc0e5, 0x0079, 0x000e, 0x00ee, ++ 0x0005, 0x00e6, 0x2071, 0x1800, 0xd0e4, 0x70e4, 0x1110, 0xc0dc, ++ 0x0008, 0xc0dd, 0x0011, 0x00ee, 0x0005, 0x70e6, 0x7000, 0x9084, ++ 0x0007, 0x000b, 0x0005, 0x0e9a, 0x0e71, 0x0e71, 0x0e53, 0x0e80, ++ 0x0e71, 0x0e71, 0x0e80, 0x0016, 0x3b08, 0x3a00, 0x9104, 0x918d, ++ 0x00c0, 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0, 0x001e, 0x0005, ++ 0x2001, 0x1839, 0x2004, 0xd0dc, 0x0005, 0x9e86, 0x1800, 0x190c, ++ 0x0db4, 0x70e4, 0xd0e4, 0x0108, 0xc2e5, 0x72e6, 0xd0e4, 0x1118, ++ 0x9294, 0x00c0, 0x0c01, 0x0005, 0x1d04, 0x0eec, 0x2091, 0x6000, ++ 0x1f04, 0x0eec, 0x0005, 0x890e, 0x810e, 0x810f, 0x9194, 0x003f, ++ 0x918c, 0xffc0, 0x0005, 0x0006, 0x2200, 0x914d, 0x894f, 0x894d, ++ 0x894d, 0x000e, 0x0005, 0x01d6, 0x0146, 0x0036, 0x0096, 0x2061, ++ 0x1883, 0x600b, 0x0000, 0x600f, 0x0000, 0x6003, 0x0000, 0x6007, ++ 0x0000, 0x2009, 0xffc0, 0x2105, 0x0006, 0x2001, 0xaaaa, 0x200f, ++ 0x2019, 0x5555, 0x9016, 0x2049, 0x0bff, 0xab02, 0xa001, 0xa001, ++ 0xa800, 0x9306, 0x1138, 0x2105, 0x9306, 0x0120, 0x8210, 0x99c8, ++ 0x0400, 0x0c98, 0x000e, 0x200f, 0x2001, 0x1893, 0x928a, 0x000e, ++ 0x1638, 0x928a, 0x0006, 0x2011, 0x0006, 0x1210, 0x2011, 0x0000, ++ 0x2202, 0x9006, 0x2008, 0x82ff, 0x01b0, 0x8200, 0x600a, 0x600f, ++ 0xffff, 0x6003, 0x0002, 0x6007, 0x0000, 0x0026, 0x2019, 0x0010, ++ 0x9280, 0x0001, 0x20e8, 0x21a0, 0x21a8, 0x4104, 0x8319, 0x1de0, ++ 0x8211, 0x1da0, 0x002e, 0x009e, 0x003e, 0x014e, 0x01de, 0x0005, ++ 0x2011, 0x000e, 0x08e8, 0x0016, 0x0026, 0x0096, 0x3348, 0x080c, ++ 0x0ef3, 0x2100, 0x9300, 0x2098, 0x22e0, 0x009e, 0x002e, 0x001e, ++ 0x0036, 0x3518, 0x20a9, 0x0001, 0x4002, 0x8007, 0x4004, 0x8319, ++ 0x1dd8, 0x003e, 0x0005, 0x20e9, 0x0001, 0x71b4, 0x81ff, 0x11c0, ++ 0x9006, 0x2009, 0x0200, 0x20a9, 0x0002, 0x9298, 0x0018, 0x23a0, ++ 0x4001, 0x2009, 0x0700, 0x20a9, 0x0002, 0x9298, 0x0008, 0x23a0, ++ 0x4001, 0x7078, 0x8007, 0x717c, 0x810f, 0x20a9, 0x0002, 0x4001, ++ 0x9298, 0x000c, 0x23a0, 0x900e, 0x080c, 0x0d94, 0x2001, 0x0000, ++ 0x810f, 0x20a9, 0x0002, 0x4001, 0x0005, 0x89ff, 0x0140, 0xa804, ++ 0xa807, 0x0000, 0x0006, 0x080c, 0x101d, 0x009e, 0x0cb0, 0x0005, ++ 0x00e6, 0x2071, 0x1800, 0x080c, 0x1096, 0x090c, 0x0db4, 0x00ee, ++ 0x0005, 0x0086, 0x00e6, 0x0006, 0x0026, 0x0036, 0x0126, 0x2091, ++ 0x8000, 0x00c9, 0x2071, 0x1800, 0x73bc, 0x702c, 0x9016, 0x9045, ++ 0x0158, 0x8210, 0x9906, 0x090c, 0x0db4, 0x2300, 0x9202, 0x0120, ++ 0x1a0c, 0x0db4, 0xa000, 0x0c98, 0x012e, 0x003e, 0x002e, 0x000e, ++ 0x00ee, 0x008e, 0x0005, 0x0086, 0x00e6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1906, 0x7010, 0x9005, 0x0140, 0x7018, 0x9045, ++ 0x0128, 0x9906, 0x090c, 0x0db4, 0xa000, 0x0cc8, 0x012e, 0x000e, ++ 0x00ee, 0x008e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x0126, 0x2091, ++ 0x8000, 0x70bc, 0x8001, 0x0270, 0x70be, 0x702c, 0x2048, 0x9085, ++ 0x0001, 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, ++ 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x1800, 0x70bc, 0x90ca, 0x0040, 0x0268, 0x8001, 0x70be, ++ 0x702c, 0x2048, 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, ++ 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, ++ 0x8000, 0x0016, 0x890e, 0x810e, 0x810f, 0x9184, 0x003f, 0xa862, ++ 0x9184, 0xffc0, 0xa85e, 0x001e, 0x0020, 0x00e6, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, ++ 0x8000, 0x70be, 0x080c, 0x7f5d, 0x012e, 0x00ee, 0x0005, 0x2071, ++ 0x1800, 0x9026, 0x2009, 0x0000, 0x2049, 0x0400, 0x2900, 0x702e, ++ 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, ++ 0x0440, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, 0x1883, ++ 0x7000, 0x9005, 0x11a0, 0x2001, 0x0492, 0xa802, 0x2048, 0x2009, ++ 0x2480, 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, ++ 0x9886, 0x0800, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, ++ 0x1883, 0x7104, 0x7200, 0x82ff, 0x01d0, 0x7308, 0x8318, 0x831f, ++ 0x831b, 0x831b, 0x7312, 0x8319, 0x2001, 0x0800, 0xa802, 0x2048, ++ 0x8900, 0xa802, 0x2040, 0xa95e, 0xaa62, 0x8420, 0x2300, 0x9906, ++ 0x0130, 0x2848, 0x9188, 0x0040, 0x9291, 0x0000, 0x0c88, 0xa803, ++ 0x0000, 0x2071, 0x1800, 0x74ba, 0x74be, 0x0005, 0x00e6, 0x0016, ++ 0x9984, 0xfc00, 0x01e8, 0x908c, 0xf800, 0x1168, 0x9982, 0x0400, ++ 0x02b8, 0x9982, 0x0440, 0x0278, 0x9982, 0x0492, 0x0288, 0x9982, ++ 0x0800, 0x1270, 0x0040, 0x9982, 0x0800, 0x0250, 0x2071, 0x1883, ++ 0x7010, 0x9902, 0x1228, 0x9085, 0x0001, 0x001e, 0x00ee, 0x0005, ++ 0x9006, 0x0cd8, 0x00e6, 0x2071, 0x19e9, 0x7007, 0x0000, 0x9006, ++ 0x701e, 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085, 0x8044, ++ 0x7012, 0x2071, 0x0080, 0x9006, 0x20a9, 0x0040, 0x7022, 0x1f04, ++ 0x10ce, 0x702b, 0x0020, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x00e6, 0xa06f, 0x0000, 0x2071, 0x19e9, 0x701c, 0x9088, 0x19f3, ++ 0x280a, 0x8000, 0x9084, 0x003f, 0x701e, 0x7120, 0x9106, 0x090c, ++ 0x0db4, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x00a9, ++ 0x00fe, 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, ++ 0x2071, 0x19e9, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, ++ 0x0021, 0x00fe, 0x00ee, 0x012e, 0x0005, 0x7004, 0x9086, 0x0000, ++ 0x1110, 0x7007, 0x0006, 0x7000, 0x0002, 0x1117, 0x1115, 0x1115, ++ 0x1115, 0x128e, 0x128e, 0x128e, 0x128e, 0x080c, 0x0db4, 0x701c, ++ 0x7120, 0x9106, 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, ++ 0x1110, 0x7007, 0x0000, 0x0005, 0x0096, 0x9180, 0x19f3, 0x2004, ++ 0x700a, 0x2048, 0x8108, 0x918c, 0x003f, 0x7122, 0x782b, 0x0026, ++ 0xa88c, 0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, ++ 0xa878, 0x700e, 0xa870, 0x7016, 0xa874, 0x701a, 0xa868, 0x009e, ++ 0xd084, 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, ++ 0x00b1, 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, ++ 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, ++ 0x782b, 0x0020, 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, ++ 0x0026, 0x0136, 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, ++ 0x20e9, 0x0000, 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, ++ 0x0040, 0x9182, 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, ++ 0x4006, 0x8203, 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, ++ 0x0001, 0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, ++ 0x19e9, 0x2104, 0xc095, 0x200a, 0x080c, 0x10f4, 0x0005, 0x0016, ++ 0x00e6, 0x2071, 0x19e9, 0x00f6, 0x2079, 0x0080, 0x792c, 0xd1bc, ++ 0x190c, 0x0dad, 0x782b, 0x0002, 0xd1fc, 0x0120, 0x918c, 0x0700, ++ 0x7004, 0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x1105, 0x11ad, ++ 0x11e1, 0x0db4, 0x0db4, 0x129a, 0x0db4, 0x918c, 0x0700, 0x1550, ++ 0x0136, 0x0146, 0x0156, 0x7014, 0x20e8, 0x7018, 0x20a0, 0x20e1, ++ 0x0000, 0x2099, 0x0088, 0x782b, 0x0040, 0x7010, 0x20a8, 0x4005, ++ 0x3400, 0x701a, 0x015e, 0x014e, 0x013e, 0x700c, 0x9005, 0x0578, ++ 0x7800, 0x7802, 0x7804, 0x7806, 0x080c, 0x114a, 0x0005, 0x7008, ++ 0x0096, 0x2048, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x080c, ++ 0x1105, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e, ++ 0x0ca0, 0x918c, 0x0700, 0x1150, 0x700c, 0x9005, 0x0180, 0x7800, ++ 0x7802, 0x7804, 0x7806, 0x080c, 0x115f, 0x0005, 0x7008, 0x0096, ++ 0x2048, 0xa86f, 0x0200, 0x009e, 0x7007, 0x0000, 0x0080, 0x0096, ++ 0x7008, 0x2048, 0x7800, 0xa88e, 0x7804, 0xa892, 0x7808, 0xa896, ++ 0x780c, 0xa89a, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x0096, ++ 0x00d6, 0x7008, 0x2048, 0x2001, 0x18af, 0x2004, 0x9906, 0x1128, ++ 0xa89c, 0x080f, 0x00de, 0x009e, 0x00a0, 0x00de, 0x009e, 0x0096, ++ 0x00d6, 0x7008, 0x2048, 0x0081, 0x0150, 0xa89c, 0x0086, 0x2940, ++ 0x080f, 0x008e, 0x00de, 0x009e, 0x080c, 0x10f4, 0x0005, 0x00de, ++ 0x009e, 0x080c, 0x10f4, 0x0005, 0xa8a8, 0xd08c, 0x0005, 0x0096, ++ 0xa0a0, 0x904d, 0x090c, 0x0db4, 0xa06c, 0x908e, 0x0100, 0x0130, ++ 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4002, 0x080c, 0x687f, ++ 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x2848, 0x080c, 0x101d, 0x009e, ++ 0x0005, 0x00a6, 0xa0a0, 0x904d, 0x090c, 0x0db4, 0xa06c, 0x908e, ++ 0x0100, 0x0128, 0xa87b, 0x0001, 0xa883, 0x0000, 0x00c0, 0xa80c, ++ 0x2050, 0xb004, 0x9005, 0x0198, 0xa80e, 0x2050, 0x8006, 0x8006, ++ 0x8007, 0x908c, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xa076, ++ 0xa172, 0xb000, 0xa07a, 0x2810, 0x080c, 0x10d5, 0x00e8, 0xa97c, ++ 0xa894, 0x0016, 0x0006, 0x080c, 0x687f, 0x000e, 0x001e, 0xd1fc, ++ 0x1138, 0xd1f4, 0x0128, 0x00c6, 0x2060, 0x080c, 0x9e32, 0x00ce, ++ 0x7008, 0x2048, 0xa89f, 0x0000, 0xa8a3, 0x0000, 0x080c, 0x101d, ++ 0x7007, 0x0000, 0x080c, 0x10f4, 0x00ae, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x782b, 0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, ++ 0x012e, 0x0005, 0x7007, 0x0000, 0x080c, 0x1105, 0x0005, 0x0126, ++ 0x2091, 0x2200, 0x2079, 0x0300, 0x2071, 0x1a33, 0x7003, 0x0000, ++ 0x78bf, 0x00f6, 0x781b, 0x4800, 0x00c1, 0x7803, 0x0003, 0x780f, ++ 0x0000, 0x20a9, 0x0254, 0x2061, 0xd8e3, 0x2c0d, 0x7912, 0xe104, ++ 0x9ce0, 0x0002, 0x7916, 0x1f04, 0x12b5, 0x7807, 0x0007, 0x7803, ++ 0x0000, 0x7803, 0x0001, 0x012e, 0x0005, 0x00c6, 0x7803, 0x0000, ++ 0x7808, 0xd09c, 0x0110, 0x7820, 0x0cd8, 0x2001, 0x1a34, 0x2003, ++ 0x0000, 0x78ab, 0x0004, 0x78ac, 0xd0ac, 0x1de8, 0x78ab, 0x0002, ++ 0x7807, 0x0007, 0x7827, 0x0030, 0x782b, 0x0400, 0x7827, 0x0031, ++ 0x782b, 0x1a52, 0x781f, 0xff00, 0x781b, 0xb700, 0x2001, 0x0200, ++ 0x2004, 0xd0dc, 0x0110, 0x781f, 0x0303, 0x2061, 0x1a52, 0x602f, ++ 0x1cd0, 0x2001, 0x1819, 0x2004, 0x9082, 0x1cd0, 0x6032, 0x603b, ++ 0x1f26, 0x2001, 0x3138, 0xd0fc, 0x190c, 0x0db4, 0x2001, 0x0003, ++ 0x2004, 0xd0d4, 0x1118, 0x783f, 0x3138, 0x0020, 0x9084, 0xc000, ++ 0x783f, 0xb138, 0x00ce, 0x0005, 0x0126, 0x2091, 0x2200, 0x7908, ++ 0x9184, 0x0070, 0x190c, 0x0dad, 0xd19c, 0x0158, 0x7820, 0x908c, ++ 0xf000, 0x15e8, 0x908a, 0x0024, 0x1a0c, 0x0db4, 0x0023, 0x012e, ++ 0x0005, 0x012e, 0x0005, 0x1347, 0x1347, 0x135e, 0x1363, 0x1367, ++ 0x136c, 0x1394, 0x1398, 0x13a6, 0x13aa, 0x1347, 0x1434, 0x1438, ++ 0x149b, 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, ++ 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, 0x136e, 0x1347, ++ 0x1347, 0x1347, 0x1347, 0x1347, 0x1347, 0x134b, 0x1349, 0x080c, ++ 0x0db4, 0x080c, 0x0dad, 0x080c, 0x14a2, 0x2009, 0x1a4b, 0x2104, ++ 0x8000, 0x200a, 0x080c, 0x7a07, 0x080c, 0x1958, 0x0005, 0x2009, ++ 0x0048, 0x2060, 0x080c, 0x9eac, 0x012e, 0x0005, 0x7004, 0xc085, ++ 0xc0b5, 0x7006, 0x0005, 0x7004, 0xc085, 0x7006, 0x0005, 0x080c, ++ 0x14a2, 0x080c, 0x15de, 0x0005, 0x080c, 0x0db4, 0x080c, 0x14a2, ++ 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, ++ 0x0048, 0x080c, 0x9eac, 0x2001, 0x015d, 0x2003, 0x0000, 0x2009, ++ 0x03e8, 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, ++ 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110, 0x080c, 0x14a7, 0x2001, ++ 0x0307, 0x2003, 0x8000, 0x0005, 0x7004, 0xc095, 0x7006, 0x0005, ++ 0x080c, 0x14a2, 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b, 0xffff, ++ 0x009e, 0x2009, 0x0048, 0x080c, 0x9eac, 0x0005, 0x080c, 0x14a2, ++ 0x080c, 0x0db4, 0x080c, 0x14a2, 0x080c, 0x141f, 0x7827, 0x0018, ++ 0x79ac, 0xd1dc, 0x0540, 0x7827, 0x0015, 0x7828, 0x782b, 0x0000, ++ 0x9065, 0x0138, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, ++ 0x0400, 0x7004, 0x9005, 0x1180, 0x78ab, 0x0004, 0x7827, 0x0018, ++ 0x782b, 0x0000, 0xd1bc, 0x090c, 0x0db4, 0x2001, 0x020d, 0x2003, ++ 0x0050, 0x2003, 0x0020, 0x0480, 0x78ab, 0x0004, 0x7803, 0x0001, ++ 0x080c, 0x1438, 0x0005, 0x7828, 0x782b, 0x0000, 0x9065, 0x090c, ++ 0x0db4, 0x6014, 0x2048, 0x78ab, 0x0004, 0x918c, 0x0700, 0x0198, ++ 0x080c, 0x7a07, 0x080c, 0x1958, 0x080c, 0xbb17, 0x0158, 0xa9ac, ++ 0xa936, 0xa9b0, 0xa93a, 0xa83f, 0xffff, 0xa843, 0xffff, 0xa880, ++ 0xc0bd, 0xa882, 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x6024, 0x190c, 0xbefc, 0x2029, 0x00c8, 0x8529, 0x0128, ++ 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x7dbc, 0x080c, 0xd88c, ++ 0xd5a4, 0x1118, 0x080c, 0x14a7, 0x0005, 0x080c, 0x7a07, 0x080c, ++ 0x1958, 0x0005, 0x781f, 0x0300, 0x7803, 0x0001, 0x0005, 0x0016, ++ 0x0066, 0x0076, 0x00f6, 0x2079, 0x0300, 0x7908, 0x918c, 0x0007, ++ 0x9186, 0x0003, 0x0120, 0x2001, 0x0016, 0x080c, 0x1518, 0x00fe, ++ 0x007e, 0x006e, 0x001e, 0x0005, 0x7004, 0xc09d, 0x7006, 0x0005, ++ 0x7104, 0x9184, 0x0004, 0x190c, 0x0db4, 0xd184, 0x1189, 0xd19c, ++ 0x0158, 0xc19c, 0x7106, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, ++ 0x0020, 0x080c, 0x14a7, 0x0005, 0x81ff, 0x190c, 0x0db4, 0x0005, ++ 0xc184, 0xd1b4, 0xc1b4, 0x7106, 0x0016, 0x00e6, 0x15e0, 0x2071, ++ 0x0200, 0x080c, 0x15d2, 0x6014, 0x9005, 0x05a8, 0x0096, 0x2048, ++ 0xa864, 0x009e, 0x9084, 0x00ff, 0x908e, 0x0029, 0x0160, 0x908e, ++ 0x0048, 0x1548, 0x601c, 0xd084, 0x11d8, 0x00f6, 0x2c78, 0x080c, ++ 0x1648, 0x00fe, 0x00a8, 0x00f6, 0x2c78, 0x080c, 0x1790, 0x00fe, ++ 0x2009, 0x01f4, 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, ++ 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110, 0x0401, 0x0040, ++ 0x2001, 0x020d, 0x2003, 0x0020, 0x080c, 0x12c5, 0x7803, 0x0001, ++ 0x00ee, 0x001e, 0x0005, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, ++ 0x0020, 0x0069, 0x0ca8, 0x0031, 0x2060, 0x2009, 0x0053, 0x080c, ++ 0x9eac, 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, 0x080c, ++ 0x141f, 0x00d6, 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, 0x0510, ++ 0x6804, 0x9005, 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, 0x79bc, ++ 0xd1a4, 0x1528, 0x79b8, 0x918c, 0x0fff, 0x0180, 0x9182, 0x0841, ++ 0x1268, 0x9188, 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, 0x810c, ++ 0x080c, 0x150a, 0x6827, 0x0001, 0x8109, 0x1dd0, 0x04d9, 0x6827, ++ 0x0002, 0x04c1, 0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, 0x1500, ++ 0x6804, 0x9005, 0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c0, 0x080c, ++ 0x7a07, 0x080c, 0x1958, 0x0090, 0x7827, 0x0015, 0x782b, 0x0000, ++ 0x7827, 0x0018, 0x782b, 0x0000, 0x2001, 0x020d, 0x2003, 0x0020, ++ 0x2001, 0x0307, 0x2003, 0x0300, 0x7803, 0x0001, 0x00de, 0x0005, ++ 0x682c, 0x9084, 0x5400, 0x9086, 0x5400, 0x0d30, 0x7827, 0x0015, ++ 0x782b, 0x0000, 0x7803, 0x0001, 0x6800, 0x9085, 0x1800, 0x6802, ++ 0x00de, 0x0005, 0x6824, 0x9084, 0x0003, 0x1de0, 0x0005, 0x2001, ++ 0x0030, 0x2c08, 0x621c, 0x0021, 0x7830, 0x9086, 0x0041, 0x0005, ++ 0x00f6, 0x2079, 0x0300, 0x0006, 0x7808, 0xd09c, 0x0140, 0x0016, ++ 0x0026, 0x00c6, 0x080c, 0x130c, 0x00ce, 0x002e, 0x001e, 0x000e, ++ 0x0006, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, 0x0059, 0x1118, ++ 0x000e, 0x00fe, 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, 0x2004, ++ 0x080c, 0x0db4, 0x2009, 0x180c, 0x2104, 0xc0f4, 0x200a, 0x2009, ++ 0xff00, 0x8109, 0x0904, 0x1596, 0x7a18, 0x9284, 0x0030, 0x0904, ++ 0x1591, 0x9284, 0x0048, 0x9086, 0x0008, 0x1904, 0x1591, 0x2001, ++ 0x0109, 0x2004, 0xd08c, 0x01f0, 0x0006, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x0126, 0x2091, 0x2800, 0x00f6, 0x0026, 0x0016, ++ 0x2009, 0x1a4d, 0x2104, 0x8000, 0x0208, 0x200a, 0x080c, 0x83aa, ++ 0x001e, 0x002e, 0x00fe, 0x012e, 0x015e, 0x014e, 0x013e, 0x01de, ++ 0x01ce, 0x000e, 0x2001, 0x009b, 0x2004, 0xd0fc, 0x01d0, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x00f6, 0x0016, ++ 0x2009, 0x1a4e, 0x2104, 0x8000, 0x0208, 0x200a, 0x080c, 0x1d4a, ++ 0x001e, 0x00fe, 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, ++ 0x000e, 0x7818, 0xd0bc, 0x1904, 0x1541, 0x0005, 0x2001, 0x180c, ++ 0x2004, 0xd0f4, 0x1528, 0x7a18, 0x9284, 0x0030, 0x0508, 0x9284, ++ 0x0048, 0x9086, 0x0008, 0x11e0, 0x2001, 0x19c7, 0x2004, 0x9005, ++ 0x01b8, 0x2001, 0x1a36, 0x2004, 0x9086, 0x0000, 0x0188, 0x2009, ++ 0x1a4c, 0x2104, 0x8000, 0x0208, 0x200a, 0x080c, 0x9430, 0x2009, ++ 0x180c, 0x2104, 0xc0f5, 0x200a, 0x2009, 0xff00, 0x0804, 0x1541, ++ 0x9085, 0x0001, 0x0005, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, ++ 0x080c, 0x153a, 0x1108, 0x0005, 0x792c, 0x3900, 0x8000, 0x2004, ++ 0x080c, 0x0db4, 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, ++ 0x2060, 0xd1bc, 0x1110, 0x7054, 0x2060, 0x0005, 0x00e6, 0x0016, ++ 0x2071, 0x0200, 0x0c79, 0x6124, 0xd1dc, 0x01f8, 0x701c, 0xd08c, ++ 0x0904, 0x163d, 0x7017, 0x0000, 0x2001, 0x0264, 0x2004, 0xd0bc, ++ 0x0904, 0x163d, 0x2001, 0x0268, 0x00c6, 0x2064, 0x6104, 0x6038, ++ 0x00ce, 0x918e, 0x0039, 0x1904, 0x163d, 0x9c06, 0x15f0, 0x0126, ++ 0x2091, 0x2600, 0x080c, 0x794e, 0x012e, 0x7358, 0x745c, 0x6014, ++ 0x905d, 0x0598, 0x2b48, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x190c, 0xbed7, 0xab42, 0xac3e, 0x2001, 0x1875, 0x2004, ++ 0xd0b4, 0x1170, 0x601c, 0xd0e4, 0x1158, 0x6010, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x1120, 0xa83b, 0x7fff, 0xa837, 0xffff, ++ 0x080c, 0x1f46, 0x1190, 0x080c, 0x17eb, 0x2a00, 0xa816, 0x0130, ++ 0x2800, 0xa80e, 0x2c05, 0xa80a, 0x2c00, 0xa812, 0x7037, 0x0020, ++ 0x781f, 0x0300, 0x001e, 0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, ++ 0x0020, 0x001e, 0x00ee, 0x080c, 0x14a7, 0x0005, 0x080c, 0x0db4, ++ 0x0016, 0x2009, 0x00a0, 0x8109, 0xa001, 0xa001, 0xa001, 0x1dd8, ++ 0x001e, 0x2ff0, 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, ++ 0x2048, 0x2940, 0x903e, 0x2730, 0xa864, 0x2068, 0xa81a, 0x9d84, ++ 0x000f, 0x9088, 0x1f26, 0x2165, 0x0002, 0x167c, 0x16c9, 0x167c, ++ 0x167c, 0x167c, 0x16ab, 0x167c, 0x1680, 0x1675, 0x16c0, 0x167c, ++ 0x167c, 0x167c, 0x1785, 0x1694, 0x168a, 0xa964, 0x918c, 0x00ff, ++ 0x918e, 0x0048, 0x0904, 0x16c0, 0x9085, 0x0001, 0x0804, 0x177c, ++ 0xa87c, 0xd0bc, 0x0dc8, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, ++ 0x0804, 0x16d0, 0xa87c, 0xd0bc, 0x0d78, 0xa890, 0xa842, 0xa88c, ++ 0xa83e, 0xa888, 0x0804, 0x171f, 0xa87c, 0xd0bc, 0x0d28, 0xa890, ++ 0xa842, 0xa88c, 0xa83e, 0xa804, 0x9045, 0x090c, 0x0db4, 0xa164, ++ 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1f26, 0x2065, 0xa888, 0xd19c, ++ 0x1904, 0x171f, 0x0428, 0xa87c, 0xd0ac, 0x0970, 0xa804, 0x9045, ++ 0x090c, 0x0db4, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1f26, ++ 0x2065, 0x9006, 0xa842, 0xa83e, 0xd19c, 0x1904, 0x171f, 0x0080, ++ 0xa87c, 0xd0ac, 0x0904, 0x167c, 0x9006, 0xa842, 0xa83e, 0x0804, ++ 0x171f, 0xa87c, 0xd0ac, 0x0904, 0x167c, 0x9006, 0xa842, 0xa83e, ++ 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x9082, 0x001b, 0x0002, ++ 0x16f3, 0x16f3, 0x16f5, 0x16f3, 0x16f3, 0x16f3, 0x16fb, 0x16f3, ++ 0x16f3, 0x16f3, 0x1701, 0x16f3, 0x16f3, 0x16f3, 0x1707, 0x16f3, ++ 0x16f3, 0x16f3, 0x170d, 0x16f3, 0x16f3, 0x16f3, 0x1713, 0x16f3, ++ 0x16f3, 0x16f3, 0x1719, 0x080c, 0x0db4, 0xa574, 0xa478, 0xa37c, ++ 0xa280, 0x0804, 0x1764, 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, ++ 0x1764, 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x1764, 0xa5a4, ++ 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x1764, 0xa5b4, 0xa4b8, 0xa3bc, ++ 0xa2c0, 0x0804, 0x1764, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, ++ 0x1764, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x1764, 0x2c05, ++ 0x908a, 0x0034, 0x1a0c, 0x0db4, 0x9082, 0x001b, 0x0002, 0x1742, ++ 0x1740, 0x1740, 0x1740, 0x1740, 0x1740, 0x1749, 0x1740, 0x1740, ++ 0x1740, 0x1740, 0x1740, 0x1750, 0x1740, 0x1740, 0x1740, 0x1740, ++ 0x1740, 0x1757, 0x1740, 0x1740, 0x1740, 0x1740, 0x1740, 0x175e, ++ 0x080c, 0x0db4, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, ++ 0x00d8, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, 0x00a0, ++ 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, 0x0068, 0xa5b4, ++ 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0030, 0xa5cc, 0xa4d0, ++ 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0xab2e, 0xaa32, 0xad1e, 0xac22, ++ 0xaf26, 0xae2a, 0xa988, 0x8c60, 0x2c1d, 0xa8ac, 0xaab0, 0xa836, ++ 0xaa3a, 0x8109, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, 0x601e, ++ 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, 0x2800, ++ 0xa80e, 0xab0a, 0x2c00, 0xa812, 0x0c78, 0x0804, 0x167c, 0x0016, ++ 0x2009, 0x00a0, 0x8109, 0xa001, 0xa001, 0xa001, 0x1dd8, 0x001e, ++ 0x2ff0, 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, 0x2048, ++ 0x2940, 0xa80e, 0x2061, 0x1f21, 0xa813, 0x1f21, 0x2c05, 0xa80a, ++ 0xa964, 0xa91a, 0xa87c, 0xd0ac, 0x090c, 0x0db4, 0x9006, 0xa842, ++ 0xa83e, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, 0xadcc, 0xacd0, ++ 0xafd4, 0xaed8, 0xabdc, 0xaae0, 0xab2e, 0xaa32, 0xad1e, 0xac22, ++ 0xaf26, 0xae2a, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0xa988, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x0008, 0x1120, 0x8109, 0xa916, 0x0128, ++ 0x0078, 0x918a, 0x0002, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, ++ 0x601e, 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, ++ 0xa804, 0x9045, 0x090c, 0x0db4, 0xa80e, 0xa064, 0xa81a, 0x9084, ++ 0x000f, 0x9080, 0x1f26, 0x2015, 0x82ff, 0x090c, 0x0db4, 0xaa12, ++ 0x2205, 0xa80a, 0x0c10, 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, ++ 0x2d00, 0x0002, 0x18e0, 0x1842, 0x1842, 0x18e0, 0x18e0, 0x18da, ++ 0x18e0, 0x1842, 0x1891, 0x1891, 0x1891, 0x18e0, 0x18e0, 0x18e0, ++ 0x18d7, 0x1891, 0xc0fc, 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, ++ 0xdd9c, 0x0904, 0x18e2, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, ++ 0x9082, 0x001b, 0x0002, 0x182e, 0x182c, 0x182c, 0x182c, 0x182c, ++ 0x182c, 0x1832, 0x182c, 0x182c, 0x182c, 0x182c, 0x182c, 0x1836, ++ 0x182c, 0x182c, 0x182c, 0x182c, 0x182c, 0x183a, 0x182c, 0x182c, ++ 0x182c, 0x182c, 0x182c, 0x183e, 0x080c, 0x0db4, 0xa774, 0xa678, ++ 0x0804, 0x18e2, 0xa78c, 0xa690, 0x0804, 0x18e2, 0xa7a4, 0xa6a8, ++ 0x0804, 0x18e2, 0xa7bc, 0xa6c0, 0x0804, 0x18e2, 0xa7d4, 0xa6d8, ++ 0x0804, 0x18e2, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x9082, ++ 0x001b, 0x0002, 0x1865, 0x1865, 0x1867, 0x1865, 0x1865, 0x1865, ++ 0x186d, 0x1865, 0x1865, 0x1865, 0x1873, 0x1865, 0x1865, 0x1865, ++ 0x1879, 0x1865, 0x1865, 0x1865, 0x187f, 0x1865, 0x1865, 0x1865, ++ 0x1885, 0x1865, 0x1865, 0x1865, 0x188b, 0x080c, 0x0db4, 0xa574, ++ 0xa478, 0xa37c, 0xa280, 0x0804, 0x18e2, 0xa584, 0xa488, 0xa38c, ++ 0xa290, 0x0804, 0x18e2, 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, ++ 0x18e2, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x18e2, 0xa5b4, ++ 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x18e2, 0xa5c4, 0xa4c8, 0xa3cc, ++ 0xa2d0, 0x0804, 0x18e2, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, ++ 0x18e2, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, 0x9082, 0x001b, ++ 0x0002, 0x18b4, 0x18b2, 0x18b2, 0x18b2, 0x18b2, 0x18b2, 0x18bb, ++ 0x18b2, 0x18b2, 0x18b2, 0x18b2, 0x18b2, 0x18c2, 0x18b2, 0x18b2, ++ 0x18b2, 0x18b2, 0x18b2, 0x18c9, 0x18b2, 0x18b2, 0x18b2, 0x18b2, ++ 0x18b2, 0x18d0, 0x080c, 0x0db4, 0xa56c, 0xa470, 0xa774, 0xa678, ++ 0xa37c, 0xa280, 0x0438, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, ++ 0xa298, 0x0400, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, ++ 0x00c8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0090, ++ 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0x0058, 0x9d86, ++ 0x000e, 0x1130, 0x080c, 0x1ede, 0x1904, 0x17eb, 0x900e, 0x0050, ++ 0x080c, 0x0db4, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, ++ 0x080c, 0x1ede, 0x0005, 0x6014, 0x2048, 0x6118, 0x810c, 0x810c, ++ 0x810c, 0x81ff, 0x1118, 0xa887, 0x0001, 0x0008, 0xa986, 0x601b, ++ 0x0002, 0xa974, 0xd1dc, 0x1108, 0x0005, 0xa934, 0xa88c, 0x9106, ++ 0x1158, 0xa938, 0xa890, 0x9106, 0x1138, 0x601c, 0xc084, 0x601e, ++ 0x2009, 0x0048, 0x0804, 0x9eac, 0x0005, 0x0126, 0x00c6, 0x2091, ++ 0x2200, 0x00ce, 0x7908, 0x918c, 0x0007, 0x9186, 0x0000, 0x05b0, ++ 0x9186, 0x0003, 0x0598, 0x6020, 0x6023, 0x0000, 0x0006, 0x2031, ++ 0x0008, 0x00c6, 0x781f, 0x0808, 0x7808, 0xd09c, 0x0120, 0x080c, ++ 0x130c, 0x8631, 0x1db8, 0x00ce, 0x781f, 0x0800, 0x2031, 0x0168, ++ 0x00c6, 0x7808, 0xd09c, 0x190c, 0x130c, 0x00ce, 0x2001, 0x0038, ++ 0x080c, 0x19e5, 0x7930, 0x9186, 0x0040, 0x0160, 0x9186, 0x0042, ++ 0x190c, 0x0db4, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631, 0x1d40, ++ 0x080c, 0x19f4, 0x000e, 0x6022, 0x012e, 0x0005, 0x080c, 0x19e1, ++ 0x7827, 0x0015, 0x7828, 0x9c06, 0x1db8, 0x782b, 0x0000, 0x0ca0, ++ 0x00f6, 0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, ++ 0x080c, 0x6fb2, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, ++ 0x0160, 0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, ++ 0x1de0, 0x0081, 0x0066, 0x2031, 0x0000, 0x080c, 0x7062, 0x006e, ++ 0x0005, 0x0479, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, ++ 0x2202, 0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x2a69, 0x2009, ++ 0x003c, 0x080c, 0x2268, 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, ++ 0x9084, 0x003c, 0x1de0, 0x080c, 0x7f5d, 0x70a0, 0x70a2, 0x7098, ++ 0x709a, 0x709c, 0x709e, 0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, ++ 0x2079, 0x0300, 0x080c, 0x12c5, 0x7803, 0x0001, 0x00fe, 0x00ee, ++ 0x0005, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, ++ 0x202c, 0x2003, 0x0000, 0x080c, 0x6fb2, 0x1108, 0x0005, 0x2021, ++ 0x0260, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, ++ 0x201c, 0x939c, 0x0048, 0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, ++ 0x1110, 0x8421, 0x1d70, 0x2001, 0x015d, 0x2003, 0x0000, 0x0005, ++ 0x0046, 0x2021, 0x0019, 0x2003, 0x0048, 0xa001, 0xa001, 0x201c, ++ 0x939c, 0x0048, 0x0120, 0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, ++ 0x0c40, 0x601c, 0xc084, 0x601e, 0x0005, 0x2c08, 0x621c, 0x080c, ++ 0x1518, 0x7930, 0x0005, 0x2c08, 0x621c, 0x080c, 0x15c3, 0x7930, ++ 0x0005, 0x8001, 0x1df0, 0x0005, 0x2031, 0x0005, 0x781c, 0x9084, ++ 0x0007, 0x0170, 0x2001, 0x0038, 0x0c41, 0x9186, 0x0040, 0x0904, ++ 0x1a52, 0x2001, 0x001e, 0x0c69, 0x8631, 0x1d80, 0x080c, 0x0db4, ++ 0x781f, 0x0202, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0b10, ++ 0x0c01, 0x781c, 0xd084, 0x0110, 0x0861, 0x04e0, 0x2001, 0x0030, ++ 0x0891, 0x9186, 0x0040, 0x0568, 0x781c, 0xd084, 0x1da8, 0x781f, ++ 0x0101, 0x2001, 0x0014, 0x0869, 0x2001, 0x0037, 0x0821, 0x9186, ++ 0x0040, 0x0140, 0x2001, 0x0030, 0x080c, 0x19eb, 0x9186, 0x0040, ++ 0x190c, 0x0db4, 0x00d6, 0x2069, 0x0200, 0x692c, 0xd1f4, 0x1170, ++ 0xd1c4, 0x0160, 0xd19c, 0x0130, 0x6800, 0x9085, 0x1800, 0x6802, ++ 0x00de, 0x0080, 0x6908, 0x9184, 0x0007, 0x1db0, 0x00de, 0x781f, ++ 0x0100, 0x791c, 0x9184, 0x0007, 0x090c, 0x0db4, 0xa001, 0xa001, ++ 0x781f, 0x0200, 0x0005, 0x0126, 0x2091, 0x2400, 0x2071, 0x1a36, ++ 0x2079, 0x0090, 0x012e, 0x0005, 0x9280, 0x0005, 0x2004, 0x2048, ++ 0xa97c, 0xd1dc, 0x1904, 0x1ae7, 0xa964, 0x9184, 0x0007, 0x0002, ++ 0x1a70, 0x1ad2, 0x1a87, 0x1a87, 0x1a87, 0x1aba, 0x1a9a, 0x1a89, ++ 0x918c, 0x00ff, 0x9186, 0x0008, 0x1170, 0xa87c, 0xd0b4, 0x0904, ++ 0x1d05, 0x9006, 0xa842, 0xa83e, 0xa988, 0x2900, 0xa85a, 0xa813, ++ 0x1f21, 0x0804, 0x1ae3, 0x9186, 0x0048, 0x0904, 0x1ad2, 0x080c, ++ 0x0db4, 0xa87c, 0xd0b4, 0x0904, 0x1d05, 0xa890, 0xa842, 0xa83a, ++ 0xa88c, 0xa83e, 0xa836, 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0xa988, ++ 0x0804, 0x1ada, 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x1d38, ++ 0xa87c, 0xd0b4, 0x0904, 0x1d05, 0xa890, 0xa842, 0xa83a, 0xa88c, ++ 0xa83e, 0xa836, 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0xa804, 0xa85a, ++ 0x2040, 0xa064, 0x9084, 0x000f, 0x9080, 0x1f26, 0x2005, 0xa812, ++ 0xa988, 0x0448, 0x918c, 0x00ff, 0x9186, 0x0015, 0x1540, 0xa87c, ++ 0xd0b4, 0x0904, 0x1d05, 0xa804, 0xa85a, 0x2040, 0xa064, 0x9084, ++ 0x000f, 0x9080, 0x1f26, 0x2005, 0xa812, 0xa988, 0x9006, 0xa842, ++ 0xa83e, 0x0088, 0xa87c, 0xd0b4, 0x0904, 0x1d05, 0xa988, 0x9006, ++ 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa864, 0x9084, 0x000f, 0x9080, ++ 0x1f26, 0x2005, 0xa812, 0xa916, 0xa87c, 0xc0dd, 0xa87e, 0x0005, ++ 0x00f6, 0x2079, 0x0090, 0x782c, 0xd0fc, 0x190c, 0x1d4a, 0x00e6, ++ 0x2071, 0x1a36, 0x7000, 0x9005, 0x1904, 0x1b50, 0x7206, 0x9280, ++ 0x0005, 0x204c, 0x9280, 0x0004, 0x2004, 0x782b, 0x0004, 0x00f6, ++ 0x2079, 0x0200, 0x7803, 0x0040, 0x00fe, 0x00b6, 0x2058, 0xb86c, ++ 0x7836, 0xb890, 0x00be, 0x00f6, 0x2079, 0x0200, 0x7803, 0x0040, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x781a, 0x2079, ++ 0x0100, 0x8004, 0x78d6, 0x00fe, 0xa814, 0x2050, 0xa858, 0x2040, ++ 0xa810, 0x2060, 0xa064, 0x90ec, 0x000f, 0xa944, 0x791a, 0x7116, ++ 0xa848, 0x781e, 0x701a, 0x9006, 0x700e, 0x7012, 0x7004, 0xa940, ++ 0xa838, 0x9106, 0x1500, 0xa93c, 0xa834, 0x9106, 0x11e0, 0x0006, ++ 0x0016, 0xa938, 0xa834, 0x9105, 0x0118, 0x001e, 0x000e, 0x0098, ++ 0x001e, 0x000e, 0x8aff, 0x01c8, 0x0126, 0x2091, 0x8000, 0x2009, ++ 0x0306, 0x200b, 0x0808, 0x00d9, 0x0108, 0x00c9, 0x012e, 0x9006, ++ 0x00ee, 0x00fe, 0x0005, 0x0036, 0x0046, 0xab38, 0xac34, 0x080c, ++ 0x1f46, 0x004e, 0x003e, 0x0d30, 0x0c98, 0x9085, 0x0001, 0x0c80, ++ 0x2009, 0x0306, 0x200b, 0x4800, 0x7027, 0x0000, 0x0005, 0x0076, ++ 0x0066, 0x0056, 0x0046, 0x0036, 0x0026, 0x8aff, 0x0904, 0x1cfe, ++ 0x700c, 0x7214, 0x923a, 0x7010, 0x7218, 0x9203, 0x0a04, 0x1cfd, ++ 0x9705, 0x0904, 0x1cfd, 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, ++ 0x2d00, 0x0002, 0x1c92, 0x1bd2, 0x1bd2, 0x1c92, 0x1c92, 0x1c6f, ++ 0x1c92, 0x1bd2, 0x1c76, 0x1c21, 0x1c21, 0x1c92, 0x1c92, 0x1c92, ++ 0x1c69, 0x1c21, 0xc0fc, 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, ++ 0xdd9c, 0x0904, 0x1c94, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, ++ 0x9082, 0x001b, 0x0002, 0x1bbe, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bbc, ++ 0x1bbc, 0x1bc2, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bc6, ++ 0x1bbc, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bbc, 0x1bca, 0x1bbc, 0x1bbc, ++ 0x1bbc, 0x1bbc, 0x1bbc, 0x1bce, 0x080c, 0x0db4, 0xa774, 0xa678, ++ 0x0804, 0x1c94, 0xa78c, 0xa690, 0x0804, 0x1c94, 0xa7a4, 0xa6a8, ++ 0x0804, 0x1c94, 0xa7bc, 0xa6c0, 0x0804, 0x1c94, 0xa7d4, 0xa6d8, ++ 0x0804, 0x1c94, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x9082, ++ 0x001b, 0x0002, 0x1bf5, 0x1bf5, 0x1bf7, 0x1bf5, 0x1bf5, 0x1bf5, ++ 0x1bfd, 0x1bf5, 0x1bf5, 0x1bf5, 0x1c03, 0x1bf5, 0x1bf5, 0x1bf5, ++ 0x1c09, 0x1bf5, 0x1bf5, 0x1bf5, 0x1c0f, 0x1bf5, 0x1bf5, 0x1bf5, ++ 0x1c15, 0x1bf5, 0x1bf5, 0x1bf5, 0x1c1b, 0x080c, 0x0db4, 0xa574, ++ 0xa478, 0xa37c, 0xa280, 0x0804, 0x1c94, 0xa584, 0xa488, 0xa38c, ++ 0xa290, 0x0804, 0x1c94, 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, ++ 0x1c94, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x1c94, 0xa5b4, ++ 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x1c94, 0xa5c4, 0xa4c8, 0xa3cc, ++ 0xa2d0, 0x0804, 0x1c94, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, ++ 0x1c94, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, 0x9082, 0x001b, ++ 0x0002, 0x1c44, 0x1c42, 0x1c42, 0x1c42, 0x1c42, 0x1c42, 0x1c4c, ++ 0x1c42, 0x1c42, 0x1c42, 0x1c42, 0x1c42, 0x1c54, 0x1c42, 0x1c42, ++ 0x1c42, 0x1c42, 0x1c42, 0x1c5b, 0x1c42, 0x1c42, 0x1c42, 0x1c42, ++ 0x1c42, 0x1c62, 0x080c, 0x0db4, 0xa56c, 0xa470, 0xa774, 0xa678, ++ 0xa37c, 0xa280, 0x0804, 0x1c94, 0xa584, 0xa488, 0xa78c, 0xa690, ++ 0xa394, 0xa298, 0x0804, 0x1c94, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, ++ 0xa3ac, 0xa2b0, 0x04c8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, ++ 0xa2c8, 0x0490, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, ++ 0x0458, 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x1518, 0x080c, ++ 0x1ede, 0x1904, 0x1b6d, 0x900e, 0x0804, 0x1cfe, 0xab64, 0x939c, ++ 0x00ff, 0x9386, 0x0048, 0x1180, 0x00c6, 0x7004, 0x2060, 0x6004, ++ 0x9086, 0x0043, 0x00ce, 0x0904, 0x1c21, 0xab9c, 0x9016, 0xad8c, ++ 0xac90, 0xaf94, 0xae98, 0x0040, 0x9386, 0x0008, 0x0904, 0x1c21, ++ 0x080c, 0x0db4, 0x080c, 0x0db4, 0x2009, 0x030f, 0x2104, 0xd0fc, ++ 0x0530, 0x0066, 0x2009, 0x0306, 0x2104, 0x9084, 0x0030, 0x15c8, ++ 0x2031, 0x1000, 0x200b, 0x4000, 0x2600, 0x9302, 0x928b, 0x0000, ++ 0xa82e, 0xa932, 0x0278, 0x9105, 0x0168, 0x2011, 0x0000, 0x2618, ++ 0x2600, 0x9500, 0xa81e, 0x9481, 0x0000, 0xa822, 0xa880, 0xc0fd, ++ 0xa882, 0x0020, 0xa82f, 0x0000, 0xa833, 0x0000, 0x006e, 0x7b12, ++ 0x7a16, 0x7d02, 0x7c06, 0x7f0a, 0x7e0e, 0x782b, 0x0001, 0x7000, ++ 0x8000, 0x7002, 0xa83c, 0x9300, 0xa83e, 0xa840, 0x9201, 0xa842, ++ 0x700c, 0x9300, 0x700e, 0x7010, 0x9201, 0x7012, 0x080c, 0x1ede, ++ 0x0428, 0x2031, 0x0080, 0x9584, 0x007f, 0x0108, 0x9632, 0x7124, ++ 0x7000, 0x9086, 0x0000, 0x1198, 0xc185, 0x7126, 0x2009, 0x0306, ++ 0x2104, 0xd0b4, 0x1904, 0x1ca4, 0x200b, 0x4040, 0x2009, 0x1a4f, ++ 0x2104, 0x8000, 0x0a04, 0x1ca4, 0x200a, 0x0804, 0x1ca4, 0xc18d, ++ 0x7126, 0xd184, 0x1d58, 0x0804, 0x1ca4, 0x9006, 0x002e, 0x003e, ++ 0x004e, 0x005e, 0x006e, 0x007e, 0x0005, 0x080c, 0x0db4, 0x0026, ++ 0x2001, 0x0105, 0x2003, 0x0010, 0x782b, 0x0004, 0x7003, 0x0000, ++ 0x7004, 0x0016, 0x080c, 0x1b60, 0x001e, 0x2060, 0x6014, 0x2048, ++ 0x080c, 0xbb17, 0x0118, 0xa880, 0xc0bd, 0xa882, 0x6020, 0x9086, ++ 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8, 0x2001, 0x00fa, 0x8001, ++ 0x1df0, 0x60c8, 0x9206, 0x1dc0, 0x60c4, 0xa89a, 0x60c8, 0xa896, ++ 0x7004, 0x2060, 0x00c6, 0x080c, 0xb74a, 0x00ce, 0x2001, 0x19c7, ++ 0x2004, 0x9c06, 0x1160, 0x2009, 0x0040, 0x080c, 0x2268, 0x080c, ++ 0x98ea, 0x2011, 0x0000, 0x080c, 0x977b, 0x080c, 0x8a4e, 0x002e, ++ 0x0804, 0x1e8e, 0x0126, 0x2091, 0x2400, 0xa858, 0x2040, 0x792c, ++ 0x782b, 0x0002, 0x9184, 0x0700, 0x1904, 0x1d07, 0x7000, 0x0002, ++ 0x1e8e, 0x1d5c, 0x1ddc, 0x1e8c, 0x8001, 0x7002, 0x7027, 0x0000, ++ 0xd19c, 0x1158, 0x8aff, 0x0904, 0x1da9, 0x080c, 0x1b67, 0x0904, ++ 0x1e8e, 0x080c, 0x1b67, 0x0804, 0x1e8e, 0x782b, 0x0004, 0xd194, ++ 0x0148, 0xa880, 0xc0fc, 0xa882, 0x8aff, 0x1518, 0xa87c, 0xc0f5, ++ 0xa87e, 0x00f8, 0x0026, 0x0036, 0xab3c, 0xaa40, 0x0016, 0x7910, ++ 0xa82c, 0x9100, 0xa82e, 0x7914, 0xa830, 0x9101, 0xa832, 0x001e, ++ 0x7810, 0x931a, 0x7814, 0x9213, 0x7800, 0xa81e, 0x7804, 0xa822, ++ 0xab3e, 0xaa42, 0x003e, 0x002e, 0x080c, 0x1ef9, 0xa880, 0xc0fd, ++ 0xa882, 0x2a00, 0xa816, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x7003, ++ 0x0000, 0x2009, 0x0306, 0x200b, 0x4800, 0x7027, 0x0000, 0x0804, ++ 0x1e8e, 0x00f6, 0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079, ++ 0x0100, 0x7a14, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816, 0x0036, ++ 0x2019, 0x1000, 0x8319, 0x090c, 0x0db4, 0x7820, 0xd0bc, 0x1dd0, ++ 0x003e, 0x79c8, 0x000e, 0x9102, 0x001e, 0x0006, 0x0016, 0x79c4, ++ 0x000e, 0x9103, 0x78c6, 0x000e, 0x78ca, 0x9284, 0x1984, 0x9085, ++ 0x0012, 0x7816, 0x002e, 0x00fe, 0x782b, 0x0008, 0x7003, 0x0000, ++ 0x080c, 0x1b60, 0x0804, 0x1e8e, 0x8001, 0x7002, 0x7024, 0x8004, ++ 0x7026, 0xd194, 0x0170, 0x782c, 0xd0fc, 0x1904, 0x1d4f, 0xd19c, ++ 0x1904, 0x1e8a, 0x8aff, 0x0904, 0x1e8e, 0x080c, 0x1b67, 0x0804, ++ 0x1e8e, 0x0026, 0x0036, 0xab3c, 0xaa40, 0x080c, 0x1ef9, 0xdd9c, ++ 0x1904, 0x1e49, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x9082, ++ 0x001b, 0x0002, 0x1e1d, 0x1e1d, 0x1e1f, 0x1e1d, 0x1e1d, 0x1e1d, ++ 0x1e25, 0x1e1d, 0x1e1d, 0x1e1d, 0x1e2b, 0x1e1d, 0x1e1d, 0x1e1d, ++ 0x1e31, 0x1e1d, 0x1e1d, 0x1e1d, 0x1e37, 0x1e1d, 0x1e1d, 0x1e1d, ++ 0x1e3d, 0x1e1d, 0x1e1d, 0x1e1d, 0x1e43, 0x080c, 0x0db4, 0xa07c, ++ 0x931a, 0xa080, 0x9213, 0x0804, 0x1d7e, 0xa08c, 0x931a, 0xa090, ++ 0x9213, 0x0804, 0x1d7e, 0xa09c, 0x931a, 0xa0a0, 0x9213, 0x0804, ++ 0x1d7e, 0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1d7e, 0xa0bc, ++ 0x931a, 0xa0c0, 0x9213, 0x0804, 0x1d7e, 0xa0cc, 0x931a, 0xa0d0, ++ 0x9213, 0x0804, 0x1d7e, 0xa0dc, 0x931a, 0xa0e0, 0x9213, 0x0804, ++ 0x1d7e, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0db4, 0x9082, 0x001b, ++ 0x0002, 0x1e6c, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e72, ++ 0x1e6a, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e78, 0x1e6a, 0x1e6a, ++ 0x1e6a, 0x1e6a, 0x1e6a, 0x1e7e, 0x1e6a, 0x1e6a, 0x1e6a, 0x1e6a, ++ 0x1e6a, 0x1e84, 0x080c, 0x0db4, 0xa07c, 0x931a, 0xa080, 0x9213, ++ 0x0804, 0x1d7e, 0xa094, 0x931a, 0xa098, 0x9213, 0x0804, 0x1d7e, ++ 0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1d7e, 0xa0c4, 0x931a, ++ 0xa0c8, 0x9213, 0x0804, 0x1d7e, 0xa0dc, 0x931a, 0xa0e0, 0x9213, ++ 0x0804, 0x1d7e, 0x0804, 0x1d7a, 0x080c, 0x0db4, 0x012e, 0x0005, ++ 0x00f6, 0x00e6, 0x2071, 0x1a36, 0x7000, 0x9086, 0x0000, 0x0904, ++ 0x1ed9, 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, 0xd194, 0x01b8, ++ 0x2009, 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, 0x080c, 0xd8d5, ++ 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0db4, 0x0016, 0x2009, ++ 0x0040, 0x080c, 0x2268, 0x001e, 0x2001, 0x020c, 0x2102, 0x2009, ++ 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, ++ 0x0040, 0x080c, 0x2268, 0x782c, 0xd0fc, 0x09a8, 0x080c, 0x1d4a, ++ 0x7000, 0x9086, 0x0000, 0x1978, 0x782b, 0x0004, 0x782c, 0xd0ac, ++ 0x1de8, 0x2009, 0x0040, 0x080c, 0x2268, 0x782b, 0x0002, 0x7003, ++ 0x0000, 0x080c, 0x1b60, 0x00ee, 0x00fe, 0x0005, 0xa880, 0xd0fc, ++ 0x11a8, 0x8c60, 0x2c05, 0x9005, 0x0110, 0x8a51, 0x0005, 0xa004, ++ 0x9005, 0x0168, 0xa85a, 0x2040, 0xa064, 0x9084, 0x000f, 0x9080, ++ 0x1f26, 0x2065, 0x8cff, 0x090c, 0x0db4, 0x8a51, 0x0005, 0x2050, ++ 0x0005, 0xa880, 0xd0fc, 0x11b8, 0x8a50, 0x8c61, 0x2c05, 0x9005, ++ 0x1190, 0x2800, 0x9906, 0x0120, 0xa000, 0x9005, 0x1108, 0x2900, ++ 0x2040, 0xa85a, 0xa064, 0x9084, 0x000f, 0x9080, 0x1f36, 0x2065, ++ 0x8cff, 0x090c, 0x0db4, 0x0005, 0x0000, 0x001d, 0x0021, 0x0025, ++ 0x0029, 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, 0x0021, 0x0027, ++ 0x002d, 0x0033, 0x0000, 0x0000, 0x0023, 0x0000, 0x0000, 0x1f19, ++ 0x1f15, 0x0000, 0x0000, 0x1f23, 0x0000, 0x1f19, 0x1f20, 0x1f20, ++ 0x1f1d, 0x0000, 0x0000, 0x0000, 0x1f23, 0x1f20, 0x0000, 0x1f1b, ++ 0x1f1b, 0x0000, 0x0000, 0x1f23, 0x0000, 0x1f1b, 0x1f21, 0x1f21, ++ 0x1f21, 0x0000, 0x0000, 0x0000, 0x1f23, 0x1f21, 0x00c6, 0x00d6, ++ 0x0086, 0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, 0x2125, 0x2940, ++ 0xa064, 0x90ec, 0x000f, 0x9084, 0x00ff, 0x9086, 0x0008, 0x1118, ++ 0x2061, 0x1f21, 0x00d0, 0x9de0, 0x1f26, 0x9d86, 0x0007, 0x0130, ++ 0x9d86, 0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, 0xa08c, 0x9422, ++ 0xa090, 0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, 0x0804, 0x2125, ++ 0xa004, 0x9045, 0x0904, 0x2125, 0x08d8, 0x2c05, 0x9005, 0x0904, ++ 0x200d, 0xdd9c, 0x1904, 0x1fc9, 0x908a, 0x0036, 0x1a0c, 0x0db4, ++ 0x9082, 0x001b, 0x0002, 0x1f9e, 0x1f9e, 0x1fa0, 0x1f9e, 0x1f9e, ++ 0x1f9e, 0x1fa6, 0x1f9e, 0x1f9e, 0x1f9e, 0x1fac, 0x1f9e, 0x1f9e, ++ 0x1f9e, 0x1fb2, 0x1f9e, 0x1f9e, 0x1f9e, 0x1fb8, 0x1f9e, 0x1f9e, ++ 0x1f9e, 0x1fbe, 0x1f9e, 0x1f9e, 0x1f9e, 0x1fc4, 0x080c, 0x0db4, ++ 0xa07c, 0x9422, 0xa080, 0x931b, 0x0804, 0x2003, 0xa08c, 0x9422, ++ 0xa090, 0x931b, 0x0804, 0x2003, 0xa09c, 0x9422, 0xa0a0, 0x931b, ++ 0x0804, 0x2003, 0xa0ac, 0x9422, 0xa0b0, 0x931b, 0x0804, 0x2003, ++ 0xa0bc, 0x9422, 0xa0c0, 0x931b, 0x0804, 0x2003, 0xa0cc, 0x9422, ++ 0xa0d0, 0x931b, 0x0804, 0x2003, 0xa0dc, 0x9422, 0xa0e0, 0x931b, ++ 0x04d0, 0x908a, 0x0034, 0x1a0c, 0x0db4, 0x9082, 0x001b, 0x0002, ++ 0x1feb, 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ff0, 0x1fe9, ++ 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ff5, 0x1fe9, 0x1fe9, 0x1fe9, ++ 0x1fe9, 0x1fe9, 0x1ffa, 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, ++ 0x1fff, 0x080c, 0x0db4, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0098, ++ 0xa094, 0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, 0x9422, 0xa0b0, ++ 0x931b, 0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, 0x0020, 0xa0dc, ++ 0x9422, 0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, 0x0160, 0x8a51, ++ 0x0904, 0x2125, 0x8c60, 0x0804, 0x1f75, 0xa004, 0x9045, 0x0904, ++ 0x2125, 0x0804, 0x1f50, 0x8a51, 0x0904, 0x2125, 0x8c60, 0x2c05, ++ 0x9005, 0x1158, 0xa004, 0x9045, 0x0904, 0x2125, 0xa064, 0x90ec, ++ 0x000f, 0x9de0, 0x1f26, 0x2c05, 0x2060, 0xa880, 0xc0fc, 0xa882, ++ 0x0804, 0x211a, 0x2c05, 0x8422, 0x8420, 0x831a, 0x9399, 0x0000, ++ 0xac2e, 0xab32, 0xdd9c, 0x1904, 0x20b7, 0x9082, 0x001b, 0x0002, ++ 0x2053, 0x2053, 0x2055, 0x2053, 0x2053, 0x2053, 0x2063, 0x2053, ++ 0x2053, 0x2053, 0x2071, 0x2053, 0x2053, 0x2053, 0x207f, 0x2053, ++ 0x2053, 0x2053, 0x208d, 0x2053, 0x2053, 0x2053, 0x209b, 0x2053, ++ 0x2053, 0x2053, 0x20a9, 0x080c, 0x0db4, 0xa17c, 0x2400, 0x9122, ++ 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa074, 0x9420, 0xa078, ++ 0x9319, 0x0804, 0x2115, 0xa18c, 0x2400, 0x9122, 0xa190, 0x2300, ++ 0x911b, 0x0a0c, 0x0db4, 0xa084, 0x9420, 0xa088, 0x9319, 0x0804, ++ 0x2115, 0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, 0x911b, 0x0a0c, ++ 0x0db4, 0xa094, 0x9420, 0xa098, 0x9319, 0x0804, 0x2115, 0xa1ac, ++ 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa0a4, ++ 0x9420, 0xa0a8, 0x9319, 0x0804, 0x2115, 0xa1bc, 0x2400, 0x9122, ++ 0xa1c0, 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa0b4, 0x9420, 0xa0b8, ++ 0x9319, 0x0804, 0x2115, 0xa1cc, 0x2400, 0x9122, 0xa1d0, 0x2300, ++ 0x911b, 0x0a0c, 0x0db4, 0xa0c4, 0x9420, 0xa0c8, 0x9319, 0x0804, ++ 0x2115, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, ++ 0x0db4, 0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, 0x2115, 0x9082, ++ 0x001b, 0x0002, 0x20d5, 0x20d3, 0x20d3, 0x20d3, 0x20d3, 0x20d3, ++ 0x20e2, 0x20d3, 0x20d3, 0x20d3, 0x20d3, 0x20d3, 0x20ef, 0x20d3, ++ 0x20d3, 0x20d3, 0x20d3, 0x20d3, 0x20fc, 0x20d3, 0x20d3, 0x20d3, ++ 0x20d3, 0x20d3, 0x2109, 0x080c, 0x0db4, 0xa17c, 0x2400, 0x9122, ++ 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa06c, 0x9420, 0xa070, ++ 0x9319, 0x0498, 0xa194, 0x2400, 0x9122, 0xa198, 0x2300, 0x911b, ++ 0x0a0c, 0x0db4, 0xa084, 0x9420, 0xa088, 0x9319, 0x0430, 0xa1ac, ++ 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa09c, ++ 0x9420, 0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, 0x9122, 0xa1c8, ++ 0x2300, 0x911b, 0x0a0c, 0x0db4, 0xa0b4, 0x9420, 0xa0b8, 0x9319, ++ 0x0060, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, ++ 0x0db4, 0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, 0xab22, 0xa880, ++ 0xc0fd, 0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x2a00, 0xa816, ++ 0x000e, 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, 0x00de, 0x00ce, ++ 0x9085, 0x0001, 0x0005, 0x2001, 0x0005, 0x2004, 0xd0bc, 0x190c, ++ 0x0dad, 0x9084, 0x0007, 0x0002, 0x2146, 0x1d4a, 0x2146, 0x213c, ++ 0x213f, 0x2142, 0x213f, 0x2142, 0x080c, 0x1d4a, 0x0005, 0x080c, ++ 0x118f, 0x0005, 0x080c, 0x1d4a, 0x080c, 0x118f, 0x0005, 0x0126, ++ 0x2091, 0x2600, 0x2079, 0x0200, 0x2071, 0x0260, 0x2069, 0x1800, ++ 0x7817, 0x0000, 0x789b, 0x0814, 0x78a3, 0x0406, 0x789f, 0x0410, ++ 0x2009, 0x013b, 0x200b, 0x0400, 0x781b, 0x0002, 0x783b, 0x001f, ++ 0x7837, 0x0020, 0x7803, 0x1600, 0x012e, 0x0005, 0x2091, 0x2600, ++ 0x781c, 0xd0a4, 0x190c, 0x2265, 0x7900, 0xd1dc, 0x1118, 0x9084, ++ 0x0006, 0x001a, 0x9084, 0x000e, 0x0002, 0x218d, 0x2185, 0x794e, ++ 0x2185, 0x2187, 0x2187, 0x2187, 0x2187, 0x7934, 0x2185, 0x2189, ++ 0x2185, 0x2187, 0x2185, 0x2187, 0x2185, 0x080c, 0x0db4, 0x0031, ++ 0x0020, 0x080c, 0x7934, 0x080c, 0x794e, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x080c, 0xd8d5, 0x7930, 0x9184, 0x0003, 0x01c0, 0x2001, ++ 0x19c7, 0x2004, 0x9005, 0x0170, 0x2001, 0x0133, 0x2004, 0x9005, ++ 0x090c, 0x0db4, 0x00c6, 0x2001, 0x19c7, 0x2064, 0x080c, 0xb74a, ++ 0x00ce, 0x00f8, 0x2009, 0x0040, 0x080c, 0x2268, 0x00d0, 0x9184, ++ 0x0014, 0x01a0, 0x6a00, 0x9286, 0x0003, 0x0160, 0x080c, 0x6fb2, ++ 0x1138, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x080c, 0x6ee4, 0x0010, ++ 0x080c, 0x5b90, 0x080c, 0x79fd, 0x0041, 0x0018, 0x9184, 0x9540, ++ 0x1dc8, 0x002e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x0036, 0x0046, ++ 0x0056, 0x2071, 0x1a33, 0x080c, 0x1958, 0x005e, 0x004e, 0x003e, ++ 0x00ee, 0x0005, 0x0126, 0x2091, 0x2e00, 0x2071, 0x1800, 0x7128, ++ 0x2001, 0x1940, 0x2102, 0x2001, 0x1948, 0x2102, 0x2001, 0x013b, ++ 0x2102, 0x2079, 0x0200, 0x2001, 0x0201, 0x789e, 0x78a3, 0x0200, ++ 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, 0x0005, 0x2320, ++ 0x9182, 0x0204, 0x1230, 0x2011, 0x0008, 0x8423, 0x8423, 0x8423, ++ 0x0488, 0x9182, 0x024c, 0x1240, 0x2011, 0x0007, 0x8403, 0x8003, ++ 0x9400, 0x9400, 0x9420, 0x0430, 0x9182, 0x02bc, 0x1238, 0x2011, ++ 0x0006, 0x8403, 0x8003, 0x9400, 0x9420, 0x00e0, 0x9182, 0x034c, ++ 0x1230, 0x2011, 0x0005, 0x8403, 0x8003, 0x9420, 0x0098, 0x9182, ++ 0x042c, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, 0x0058, 0x9182, ++ 0x059c, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, 0x0018, 0x2011, ++ 0x0002, 0x8423, 0x9482, 0x0228, 0x8002, 0x8020, 0x8301, 0x9402, ++ 0x0110, 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, 0x789a, 0x012e, ++ 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6814, 0x9084, 0xffc0, ++ 0x910d, 0x6916, 0x00de, 0x000e, 0x0005, 0x00d6, 0x2069, 0x0200, ++ 0x9005, 0x6810, 0x0110, 0xc0a5, 0x0008, 0xc0a4, 0x6812, 0x00de, ++ 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6810, 0x9084, 0xfff8, ++ 0x910d, 0x6912, 0x00de, 0x000e, 0x0005, 0x7938, 0x080c, 0x0dad, ++ 0x00f6, 0x2079, 0x0200, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0x00fe, 0x0005, 0x0126, 0x2091, 0x2800, 0x2061, 0x0100, ++ 0x2071, 0x1800, 0x2009, 0x0000, 0x080c, 0x2a63, 0x080c, 0x297e, ++ 0x6054, 0x8004, 0x8004, 0x8004, 0x8004, 0x9084, 0x000c, 0x6150, ++ 0x918c, 0xfff3, 0x9105, 0x6052, 0x6050, 0x9084, 0xb17f, 0x9085, ++ 0x2000, 0x6052, 0x2009, 0x196e, 0x2011, 0x196f, 0x6358, 0x939c, ++ 0x38f0, 0x2320, 0x080c, 0x29c2, 0x1238, 0x939d, 0x4003, 0x94a5, ++ 0x8603, 0x230a, 0x2412, 0x0030, 0x939d, 0x0203, 0x94a5, 0x8603, ++ 0x230a, 0x2412, 0x9006, 0x080c, 0x29ad, 0x9006, 0x080c, 0x2990, ++ 0x20a9, 0x0012, 0x1d04, 0x22ba, 0x2091, 0x6000, 0x1f04, 0x22ba, ++ 0x602f, 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, 0x0400, 0x9084, ++ 0xdfff, 0x6052, 0x6024, 0x6026, 0x080c, 0x269c, 0x2009, 0x00ef, ++ 0x6132, 0x6136, 0x080c, 0x26ac, 0x60e7, 0x0000, 0x61ea, 0x60e3, ++ 0x0002, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, ++ 0x0000, 0x6007, 0x149f, 0x60bb, 0x0000, 0x20a9, 0x0018, 0x60bf, ++ 0x0000, 0x1f04, 0x22e7, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, ++ 0x0012, 0x60bf, 0x0320, 0x60bf, 0x0018, 0x601b, 0x00f0, 0x601f, ++ 0x001e, 0x600f, 0x006b, 0x602b, 0x402f, 0x012e, 0x0005, 0x00f6, ++ 0x2079, 0x0140, 0x78c3, 0x0080, 0x78c3, 0x0083, 0x78c3, 0x0000, ++ 0x00fe, 0x0005, 0x2001, 0x1834, 0x2003, 0x0000, 0x2001, 0x1833, ++ 0x2003, 0x0001, 0x0005, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, ++ 0x0026, 0x6124, 0x9184, 0x5e2c, 0x1118, 0x9184, 0x0007, 0x002a, ++ 0x9195, 0x0004, 0x9284, 0x0007, 0x0002, 0x2347, 0x232d, 0x2330, ++ 0x2333, 0x2338, 0x233a, 0x233e, 0x2342, 0x080c, 0x82dd, 0x00b8, ++ 0x080c, 0x83aa, 0x00a0, 0x080c, 0x83aa, 0x080c, 0x82dd, 0x0078, ++ 0x0099, 0x0068, 0x080c, 0x82dd, 0x0079, 0x0048, 0x080c, 0x83aa, ++ 0x0059, 0x0028, 0x080c, 0x83aa, 0x080c, 0x82dd, 0x0029, 0x002e, ++ 0x001e, 0x000e, 0x012e, 0x0005, 0x00a6, 0x6124, 0x6028, 0xd09c, ++ 0x0118, 0xd19c, 0x1904, 0x2595, 0xd1f4, 0x190c, 0x0dad, 0x080c, ++ 0x6fb2, 0x0904, 0x23a2, 0x080c, 0xc212, 0x1120, 0x7000, 0x9086, ++ 0x0003, 0x0570, 0x6024, 0x9084, 0x1800, 0x0550, 0x080c, 0x6fd5, ++ 0x0118, 0x080c, 0x6fc3, 0x1520, 0x6027, 0x0020, 0x6043, 0x0000, ++ 0x080c, 0xc212, 0x0168, 0x080c, 0x6fd5, 0x1150, 0x2001, 0x1978, ++ 0x2003, 0x0001, 0x6027, 0x1800, 0x080c, 0x6e33, 0x0804, 0x2598, ++ 0x70a0, 0x9005, 0x1150, 0x70a3, 0x0001, 0x00d6, 0x2069, 0x0140, ++ 0x080c, 0x7009, 0x00de, 0x1904, 0x2598, 0x080c, 0x72a0, 0x0428, ++ 0x080c, 0x6fd5, 0x1590, 0x6024, 0x9084, 0x1800, 0x1108, 0x0468, ++ 0x080c, 0x72a0, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x080c, 0x6ee4, ++ 0x0804, 0x2595, 0xd1ac, 0x1508, 0x6024, 0xd0dc, 0x1170, 0xd0e4, ++ 0x1178, 0xd0d4, 0x1190, 0xd0cc, 0x0130, 0x7094, 0x9086, 0x0028, ++ 0x1110, 0x080c, 0x7185, 0x0804, 0x2595, 0x080c, 0x729b, 0x0048, ++ 0x2001, 0x194e, 0x2003, 0x0002, 0x0020, 0x080c, 0x70eb, 0x0804, ++ 0x2595, 0x080c, 0x721f, 0x0804, 0x2595, 0xd1ac, 0x0904, 0x24b6, ++ 0x080c, 0x6fb2, 0x11c0, 0x6027, 0x0020, 0x0006, 0x0026, 0x0036, ++ 0x080c, 0x6fcc, 0x1158, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x080c, ++ 0x6ee4, 0x003e, 0x002e, 0x000e, 0x00ae, 0x0005, 0x003e, 0x002e, ++ 0x000e, 0x080c, 0x6f8a, 0x0016, 0x0046, 0x00c6, 0x644c, 0x9486, ++ 0xf0f0, 0x1138, 0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, ++ 0x0010, 0x74d6, 0x948c, 0xff00, 0x7038, 0xd084, 0x0178, 0x9186, ++ 0xf800, 0x1160, 0x7044, 0xd084, 0x1148, 0xc085, 0x7046, 0x0036, ++ 0x2418, 0x2011, 0x8016, 0x080c, 0x48d9, 0x003e, 0x080c, 0xc20b, ++ 0x1904, 0x2493, 0x9196, 0xff00, 0x05a8, 0x705c, 0x9084, 0x00ff, ++ 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, 0xd184, 0x1550, ++ 0x080c, 0x3133, 0x0128, 0xc18d, 0x7132, 0x080c, 0x655a, 0x1510, ++ 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, 0xff00, 0x9296, ++ 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x2493, 0x7038, 0xd08c, ++ 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, 0x2493, 0xc1ad, ++ 0x2102, 0x0036, 0x73d4, 0x2011, 0x8013, 0x080c, 0x48d9, 0x003e, ++ 0x0804, 0x2493, 0x7038, 0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, ++ 0xd1ac, 0x1904, 0x2493, 0xc1ad, 0x2102, 0x0036, 0x73d4, 0x2011, ++ 0x8013, 0x080c, 0x48d9, 0x003e, 0x7130, 0xc185, 0x7132, 0x2011, ++ 0x1854, 0x220c, 0x00f0, 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, ++ 0x080c, 0x822f, 0x2019, 0x000e, 0x00c6, 0x2061, 0x0000, 0x080c, ++ 0xd4a6, 0x00ce, 0x9484, 0x00ff, 0x9080, 0x3138, 0x200d, 0x918c, ++ 0xff00, 0x810f, 0x2120, 0x9006, 0x2009, 0x000e, 0x080c, 0xd52a, ++ 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0002, 0x2019, 0x0004, ++ 0x080c, 0x2fa5, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9, 0x007f, ++ 0x900e, 0x080c, 0x623e, 0x1110, 0x080c, 0x5ceb, 0x8108, 0x1f04, ++ 0x2489, 0x00be, 0x015e, 0x00ce, 0x004e, 0x080c, 0x9db8, 0x60e3, ++ 0x0000, 0x001e, 0x2001, 0x1800, 0x2014, 0x9296, 0x0004, 0x1170, ++ 0xd19c, 0x11a0, 0x2011, 0x180c, 0x2214, 0xd29c, 0x1120, 0x6204, ++ 0x9295, 0x0002, 0x6206, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, ++ 0x2001, 0x1825, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0904, ++ 0x2595, 0x0016, 0x6220, 0xd2b4, 0x0904, 0x253e, 0x080c, 0x80b8, ++ 0x080c, 0x93ac, 0x6027, 0x0004, 0x00f6, 0x2019, 0x19c1, 0x2304, ++ 0x907d, 0x0904, 0x250d, 0x7804, 0x9086, 0x0032, 0x15f0, 0x00d6, ++ 0x00c6, 0x00e6, 0x0096, 0x2069, 0x0140, 0x782c, 0x685e, 0x7808, ++ 0x685a, 0x6043, 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, ++ 0x0000, 0x2001, 0x003c, 0x8001, 0x1df0, 0x080c, 0x2b24, 0x2001, ++ 0x001e, 0x8001, 0x0240, 0x20a9, 0x0009, 0x080c, 0x2a3e, 0x6904, ++ 0xd1dc, 0x1140, 0x0cb0, 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, ++ 0x080c, 0x2b14, 0x080c, 0x886e, 0x080c, 0x8973, 0x7814, 0x2048, ++ 0xa867, 0x0103, 0x2f60, 0x080c, 0x9e32, 0x009e, 0x00ee, 0x00ce, ++ 0x00de, 0x00fe, 0x001e, 0x00ae, 0x0005, 0x00fe, 0x00d6, 0x2069, ++ 0x0140, 0x6804, 0x9084, 0x4000, 0x0110, 0x080c, 0x2b24, 0x00de, ++ 0x00c6, 0x2061, 0x19b8, 0x6028, 0x080c, 0xc212, 0x0120, 0x909a, ++ 0x0003, 0x1258, 0x0018, 0x909a, 0x00c8, 0x1238, 0x8000, 0x602a, ++ 0x00ce, 0x080c, 0x9388, 0x0804, 0x2594, 0x2061, 0x0100, 0x62c0, ++ 0x080c, 0x9c43, 0x2019, 0x19c1, 0x2304, 0x9065, 0x0120, 0x2009, ++ 0x0027, 0x080c, 0x9eac, 0x00ce, 0x0804, 0x2594, 0xd2bc, 0x0904, ++ 0x2581, 0x080c, 0x80c5, 0x6014, 0x9084, 0x1984, 0x9085, 0x0010, ++ 0x6016, 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, ++ 0x4000, 0x0110, 0x080c, 0x2b24, 0x00de, 0x00c6, 0x2061, 0x19b8, ++ 0x6044, 0x080c, 0xc212, 0x0120, 0x909a, 0x0003, 0x1628, 0x0018, ++ 0x909a, 0x00c8, 0x1608, 0x8000, 0x6046, 0x603c, 0x00ce, 0x9005, ++ 0x0558, 0x2009, 0x07d0, 0x080c, 0x80bd, 0x9080, 0x0008, 0x2004, ++ 0x9086, 0x0006, 0x1138, 0x6114, 0x918c, 0x1984, 0x918d, 0x0012, ++ 0x6116, 0x00d0, 0x6114, 0x918c, 0x1984, 0x918d, 0x0016, 0x6116, ++ 0x0098, 0x6027, 0x0004, 0x0080, 0x0036, 0x2019, 0x0001, 0x080c, ++ 0x96d8, 0x003e, 0x2019, 0x19c7, 0x2304, 0x9065, 0x0120, 0x2009, ++ 0x004f, 0x080c, 0x9eac, 0x00ce, 0x001e, 0xd19c, 0x0904, 0x2607, ++ 0x7038, 0xd0ac, 0x1904, 0x25dc, 0x0016, 0x0156, 0x6027, 0x0008, ++ 0x6050, 0x9085, 0x0040, 0x6052, 0x6050, 0x9084, 0xfbcf, 0x6052, ++ 0x080c, 0x2a5d, 0x9085, 0x2000, 0x6052, 0x20a9, 0x0012, 0x1d04, ++ 0x25af, 0x080c, 0x80ec, 0x1f04, 0x25af, 0x6050, 0x9085, 0x0400, ++ 0x9084, 0xdfbf, 0x6052, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x25bd, ++ 0x6150, 0x9185, 0x1400, 0x6052, 0x20a9, 0x0366, 0x1d04, 0x25c6, ++ 0x080c, 0x80ec, 0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, ++ 0x6027, 0x0008, 0x04a0, 0x080c, 0x2a25, 0x1f04, 0x25c6, 0x015e, ++ 0x6152, 0x001e, 0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, ++ 0x080c, 0x9db8, 0x60e3, 0x0000, 0x080c, 0xd8b4, 0x080c, 0xd8cf, ++ 0x080c, 0x538a, 0xd0fc, 0x1138, 0x080c, 0xc20b, 0x1120, 0x9085, ++ 0x0001, 0x080c, 0x6ff9, 0x9006, 0x080c, 0x2b14, 0x2009, 0x0002, ++ 0x080c, 0x2a63, 0x00e6, 0x2071, 0x1800, 0x7003, 0x0004, 0x080c, ++ 0x0e80, 0x00ee, 0x6027, 0x0008, 0x080c, 0x0b8f, 0x001e, 0x918c, ++ 0xffd0, 0x6126, 0x00ae, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, ++ 0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x71cc, ++ 0x70ce, 0x9116, 0x0904, 0x265b, 0x81ff, 0x01a0, 0x2009, 0x0000, ++ 0x080c, 0x2a63, 0x2011, 0x8011, 0x2019, 0x010e, 0x231c, 0x939e, ++ 0x0007, 0x1118, 0x2019, 0x0001, 0x0010, 0x2019, 0x0000, 0x080c, ++ 0x48d9, 0x0448, 0x2001, 0x1979, 0x200c, 0x81ff, 0x1140, 0x2001, ++ 0x0109, 0x2004, 0xd0b4, 0x0118, 0x2019, 0x0003, 0x0008, 0x2118, ++ 0x2011, 0x8012, 0x080c, 0x48d9, 0x080c, 0x0e80, 0x080c, 0x538a, ++ 0xd0fc, 0x1188, 0x080c, 0xc20b, 0x1170, 0x00c6, 0x080c, 0x26f7, ++ 0x080c, 0x963f, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0002, ++ 0x080c, 0x2fa5, 0x00ce, 0x012e, 0x00fe, 0x00ee, 0x003e, 0x002e, ++ 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, ++ 0xff00, 0x11f0, 0x2011, 0x1836, 0x2214, 0xd2ac, 0x11c8, 0x81ff, ++ 0x01e8, 0x2011, 0x181e, 0x2204, 0x9106, 0x1190, 0x2011, 0x181f, ++ 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, 0x9206, 0x1148, 0x2011, ++ 0x181f, 0x2214, 0x9294, 0x00ff, 0x9584, 0x00ff, 0x9206, 0x1120, ++ 0x2500, 0x080c, 0x7c57, 0x0048, 0x9584, 0x00ff, 0x9080, 0x3138, ++ 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005, 0x9080, 0x3138, ++ 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069, 0x0140, 0x2001, ++ 0x1817, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006, 0x6852, 0x6856, ++ 0x1f04, 0x26a7, 0x00de, 0x0005, 0x0006, 0x00d6, 0x0026, 0x2069, ++ 0x0140, 0x2001, 0x1817, 0x2102, 0x8114, 0x8214, 0x8214, 0x8214, ++ 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff, 0x1128, 0x9184, ++ 0x000f, 0x9080, 0xdd89, 0x2005, 0x6856, 0x8211, 0x1f04, 0x26bc, ++ 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061, 0x1800, 0x6030, ++ 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce, 0x0005, 0x0156, ++ 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140, 0x6980, 0x9116, ++ 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8, 0x2001, 0x0402, ++ 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04, 0x26ec, 0x680f, ++ 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e, 0x0005, 0x080c, ++ 0x5386, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006, 0x0046, 0x2020, ++ 0x2009, 0x002e, 0x080c, 0xd52a, 0x004e, 0x0005, 0x00f6, 0x0016, ++ 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904, 0x2763, 0x080c, ++ 0x29c2, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600, 0x1120, 0x2011, ++ 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120, 0x2011, 0x8000, ++ 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016, 0x2009, 0x0001, ++ 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009, 0x0002, 0x00b0, ++ 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004, 0x0078, 0x908e, ++ 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040, 0x9084, 0x0700, ++ 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058, 0x2300, 0x9080, ++ 0x0020, 0x2018, 0x080c, 0x8270, 0x928c, 0xff00, 0x0110, 0x2011, ++ 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2, 0x2009, 0x0138, ++ 0x220a, 0x080c, 0x6fb2, 0x1118, 0x2009, 0x193e, 0x220a, 0x002e, ++ 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, 0x200c, 0x8000, ++ 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0dad, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004, 0xd0dc, 0x0168, ++ 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e, 0x004c, 0x1128, ++ 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e, 0x2001, 0x0227, ++ 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x2001, 0x0226, ++ 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x0005, 0x0018, ++ 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000, 0x1800, 0x0156, ++ 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x1961, 0x2004, 0x908a, ++ 0x0007, 0x1a0c, 0x0db4, 0x0033, 0x00ee, 0x002e, 0x001e, 0x000e, ++ 0x015e, 0x0005, 0x27c1, 0x27df, 0x2803, 0x2805, 0x282e, 0x2830, ++ 0x2832, 0x2001, 0x0001, 0x080c, 0x260c, 0x080c, 0x2a20, 0x2001, ++ 0x1963, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7, 0x782a, 0x9006, ++ 0x20a9, 0x0009, 0x080c, 0x29de, 0x2001, 0x1961, 0x2003, 0x0006, ++ 0x2009, 0x001e, 0x2011, 0x2833, 0x080c, 0x80ca, 0x0005, 0x2009, ++ 0x1966, 0x200b, 0x0000, 0x2001, 0x196b, 0x2003, 0x0036, 0x2001, ++ 0x196a, 0x2003, 0x002a, 0x2001, 0x1963, 0x2003, 0x0001, 0x9006, ++ 0x080c, 0x2990, 0x2001, 0xffff, 0x20a9, 0x0009, 0x080c, 0x29de, ++ 0x2001, 0x1961, 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x2833, ++ 0x080c, 0x80ca, 0x0005, 0x080c, 0x0db4, 0x2001, 0x196b, 0x2003, ++ 0x0036, 0x2001, 0x1963, 0x2003, 0x0003, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x2990, 0x2001, 0x1967, 0x2003, 0x0000, 0x2001, 0xffff, 0x20a9, ++ 0x0009, 0x080c, 0x29de, 0x2001, 0x1961, 0x2003, 0x0006, 0x2009, ++ 0x001e, 0x2011, 0x2833, 0x080c, 0x80ca, 0x0005, 0x080c, 0x0db4, ++ 0x080c, 0x0db4, 0x0005, 0x0006, 0x0016, 0x0026, 0x00e6, 0x00f6, ++ 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x2001, 0x1963, ++ 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0db4, 0x0043, 0x012e, 0x015e, ++ 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, 0x2855, 0x2875, ++ 0x28b5, 0x28e5, 0x2909, 0x2919, 0x291b, 0x080c, 0x29d2, 0x11b0, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1969, 0x2104, 0x7a38, ++ 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d, 0x0008, 0xc085, ++ 0x200a, 0x2001, 0x1961, 0x2003, 0x0001, 0x0030, 0x080c, 0x293f, ++ 0x2001, 0xffff, 0x080c, 0x27d0, 0x0005, 0x080c, 0x291d, 0x05e0, ++ 0x2009, 0x196a, 0x2104, 0x8001, 0x200a, 0x080c, 0x29d2, 0x1178, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294, 0x0005, 0x9296, ++ 0x0005, 0x0518, 0x2009, 0x1969, 0x2104, 0xc085, 0x200a, 0x2009, ++ 0x1966, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0118, 0x080c, ++ 0x2925, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, ++ 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x29ad, ++ 0x2001, 0x1963, 0x2003, 0x0002, 0x0028, 0x2001, 0x1961, 0x2003, ++ 0x0003, 0x0010, 0x080c, 0x27f2, 0x0005, 0x080c, 0x291d, 0x0560, ++ 0x2009, 0x196a, 0x2104, 0x8001, 0x200a, 0x080c, 0x29d2, 0x1168, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x1961, 0x2003, 0x0003, ++ 0x2001, 0x1962, 0x2003, 0x0000, 0x00b8, 0x2009, 0x196a, 0x2104, ++ 0x9005, 0x1118, 0x080c, 0x2962, 0x0010, 0x080c, 0x2932, 0x080c, ++ 0x2925, 0x2009, 0x1966, 0x200b, 0x0000, 0x2001, 0x1963, 0x2003, ++ 0x0001, 0x080c, 0x27f2, 0x0000, 0x0005, 0x04b9, 0x0508, 0x080c, ++ 0x29d2, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1967, ++ 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108, 0x0078, 0x2001, ++ 0x196c, 0x2003, 0x000a, 0x2009, 0x1969, 0x2104, 0xc0fd, 0x200a, ++ 0x0038, 0x0419, 0x2001, 0x1963, 0x2003, 0x0004, 0x080c, 0x281d, ++ 0x0005, 0x0099, 0x0168, 0x080c, 0x29d2, 0x1138, 0x7850, 0x9084, ++ 0xefff, 0x7852, 0x080c, 0x2809, 0x0018, 0x0079, 0x080c, 0x281d, ++ 0x0005, 0x080c, 0x0db4, 0x080c, 0x0db4, 0x2009, 0x196b, 0x2104, ++ 0x8001, 0x200a, 0x090c, 0x297e, 0x0005, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x29ad, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, 0x0110, ++ 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x2990, 0x0005, 0x2009, ++ 0x1966, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0108, 0x0068, ++ 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, 0x0110, ++ 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x29ad, 0x0005, 0x0086, 0x2001, 0x1969, 0x2004, 0x9084, 0x7fff, ++ 0x090c, 0x0db4, 0x2009, 0x1968, 0x2144, 0x8846, 0x280a, 0x9844, ++ 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, 0x080c, 0x0db4, 0x9006, ++ 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, 0x0005, 0x0006, 0x0156, ++ 0x2001, 0x1961, 0x20a9, 0x0009, 0x2003, 0x0000, 0x8000, 0x1f04, ++ 0x2984, 0x2001, 0x1968, 0x2003, 0x8000, 0x015e, 0x000e, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0158, 0x7838, 0x9084, ++ 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, 0x196e, 0x210c, 0x795a, ++ 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0006, 0x783a, 0x2009, ++ 0x196f, 0x210c, 0x795a, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0100, ++ 0x9085, 0x0000, 0x0138, 0x7838, 0x9084, 0xfffa, 0x9085, 0x0004, ++ 0x783a, 0x0030, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0005, 0x783a, ++ 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0007, ++ 0x000e, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0009, ++ 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, 0x7820, 0x080c, 0x2a5d, ++ 0xd09c, 0x1110, 0x1f04, 0x29d5, 0x015e, 0x0005, 0x0126, 0x0016, ++ 0x0006, 0x2091, 0x8000, 0x7850, 0x9085, 0x0040, 0x7852, 0x7850, ++ 0x9084, 0xfbcf, 0x7852, 0x080c, 0x2a5d, 0x9085, 0x2000, 0x7852, ++ 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, 0x783b, 0x0007, 0x0090, ++ 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, 0x0060, 0x9186, 0x0002, ++ 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, 0x0003, 0x1118, 0x783b, ++ 0x0004, 0x0000, 0x0006, 0x1d04, 0x2a0b, 0x080c, 0x80ec, 0x1f04, ++ 0x2a0b, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf, 0x7852, 0x080c, ++ 0x2a5d, 0x9085, 0x1000, 0x7852, 0x000e, 0x001e, 0x012e, 0x0005, ++ 0x7850, 0x9084, 0xffcf, 0x7852, 0x0005, 0x0006, 0x0156, 0x00f6, ++ 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac, 0x1130, 0x7820, ++ 0xd0e4, 0x1140, 0x1f04, 0x2a2f, 0x0028, 0x7854, 0xd08c, 0x1110, ++ 0x1f04, 0x2a35, 0x00fe, 0x015e, 0x000e, 0x0005, 0x1d04, 0x2a3e, ++ 0x080c, 0x80ec, 0x1f04, 0x2a3e, 0x0005, 0x0006, 0x2001, 0x196d, ++ 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, 0x196d, ++ 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, 0x0006, 0x2001, 0x196d, ++ 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0x0005, 0x0006, 0x2001, 0x1979, 0x2102, 0x000e, ++ 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, 0x0140, 0x2009, 0x0170, ++ 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, 0x200a, 0x0005, 0x0036, ++ 0x0046, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00, 0x9186, 0x2000, ++ 0x0118, 0x9186, 0x0100, 0x1588, 0x2009, 0x00a2, 0x080c, 0x0e2f, ++ 0x2019, 0x0160, 0x2324, 0x2011, 0x0003, 0x2009, 0x0169, 0x2104, ++ 0x9084, 0x0007, 0x210c, 0x918c, 0x0007, 0x910e, 0x1db0, 0x9086, ++ 0x0003, 0x11b8, 0x2304, 0x9402, 0x02a0, 0x1d60, 0x8211, 0x1d68, ++ 0x84ff, 0x0170, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00, 0x9186, ++ 0x0100, 0x0130, 0x2009, 0x180c, 0x2104, 0xc0dd, 0x200a, 0x0008, ++ 0x0419, 0x2009, 0x0000, 0x080c, 0x0e2f, 0x004e, 0x003e, 0x0005, ++ 0x2001, 0x180c, 0x2004, 0xd0dc, 0x01b0, 0x2001, 0x0160, 0x2004, ++ 0x9005, 0x0140, 0x2001, 0x0141, 0x2004, 0x9084, 0xff00, 0x9086, ++ 0x0100, 0x1148, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026, 0x0021, ++ 0x002e, 0x001e, 0x012e, 0x0005, 0x00c6, 0x2061, 0x0100, 0x6014, ++ 0x0006, 0x2001, 0x0161, 0x2003, 0x0000, 0x6017, 0x0018, 0xa001, ++ 0xa001, 0x602f, 0x0008, 0x6104, 0x918e, 0x0010, 0x6106, 0x918e, ++ 0x0010, 0x6106, 0x6017, 0x0040, 0x04b9, 0x001e, 0x9184, 0x0003, ++ 0x01e0, 0x0036, 0x0016, 0x2019, 0x0141, 0x6124, 0x918c, 0x0028, ++ 0x1120, 0x2304, 0x9084, 0x2800, 0x0dc0, 0x001e, 0x919c, 0xffe4, ++ 0x9184, 0x0001, 0x0118, 0x9385, 0x0009, 0x6016, 0x9184, 0x0002, ++ 0x0118, 0x9385, 0x0012, 0x6016, 0x003e, 0x2001, 0x180c, 0x200c, ++ 0xc1dc, 0x2102, 0x00ce, 0x0005, 0x0016, 0x0026, 0x080c, 0x6fcc, ++ 0x0108, 0xc0bc, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, ++ 0x220a, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, ++ 0x2114, 0x9294, 0x0001, 0x9285, 0x1000, 0x200a, 0x220a, 0x002e, ++ 0x001e, 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, ++ 0x0001, 0x9215, 0x220a, 0x002e, 0x001e, 0x0005, 0x0006, 0x0016, ++ 0x2009, 0x0140, 0x2104, 0x1128, 0x080c, 0x6fcc, 0x0110, 0xc0bc, ++ 0x0008, 0xc0bd, 0x200a, 0x001e, 0x000e, 0x0005, 0x2dba, 0x2dba, ++ 0x2bde, 0x2bde, 0x2bea, 0x2bea, 0x2bf6, 0x2bf6, 0x2c04, 0x2c04, ++ 0x2c10, 0x2c10, 0x2c1e, 0x2c1e, 0x2c2c, 0x2c2c, 0x2c3e, 0x2c3e, ++ 0x2c4a, 0x2c4a, 0x2c58, 0x2c58, 0x2c76, 0x2c76, 0x2c96, 0x2c96, ++ 0x2c66, 0x2c66, 0x2c86, 0x2c86, 0x2ca4, 0x2ca4, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2cb6, 0x2cb6, ++ 0x2cc2, 0x2cc2, 0x2cd0, 0x2cd0, 0x2cde, 0x2cde, 0x2cee, 0x2cee, ++ 0x2cfc, 0x2cfc, 0x2d0c, 0x2d0c, 0x2d1c, 0x2d1c, 0x2d2e, 0x2d2e, ++ 0x2d3c, 0x2d3c, 0x2d4c, 0x2d4c, 0x2d6e, 0x2d6e, 0x2d90, 0x2d90, ++ 0x2d5c, 0x2d5c, 0x2d7f, 0x2d7f, 0x2d9f, 0x2d9f, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, ++ 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x2c3c, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2313, ++ 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x212b, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, ++ 0x080c, 0x2313, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2166, 0x0804, 0x2db2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2313, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, 0x080c, 0x2313, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0xa001, 0x0cf0, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x130c, ++ 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2313, 0x080c, 0x130c, 0x0804, 0x2db2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x212b, 0x080c, 0x130c, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2313, ++ 0x080c, 0x130c, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, ++ 0x080c, 0x2313, 0x080c, 0x130c, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, ++ 0x080c, 0x130c, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x130c, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x212b, 0x080c, 0x2313, ++ 0x080c, 0x130c, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, ++ 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x2313, 0x0804, 0x2db2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2766, 0x080c, 0x212b, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, ++ 0x080c, 0x212b, 0x080c, 0x2313, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x2313, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x212b, ++ 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x212b, ++ 0x080c, 0x2313, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, ++ 0x080c, 0x130c, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x2313, ++ 0x080c, 0x130c, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x212b, ++ 0x080c, 0x130c, 0x0804, 0x2db2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, 0x080c, 0x2313, ++ 0x080c, 0x130c, 0x080c, 0x2166, 0x0804, 0x2db2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2766, ++ 0x080c, 0x212b, 0x080c, 0x2313, 0x080c, 0x130c, 0x0498, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2766, 0x080c, 0x212b, 0x080c, 0x130c, 0x080c, 0x2166, 0x0410, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2766, 0x080c, 0x130c, 0x080c, 0x2166, 0x0098, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2766, 0x080c, 0x212b, 0x080c, 0x2313, 0x080c, 0x130c, 0x080c, ++ 0x2166, 0x0000, 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, ++ 0x000e, 0x010e, 0x000d, 0x00b6, 0x00c6, 0x0026, 0x0046, 0x9026, ++ 0x080c, 0x6520, 0x1904, 0x2ec1, 0x72d8, 0x2001, 0x194d, 0x2004, ++ 0x9005, 0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, ++ 0x2ec1, 0x080c, 0x2ec6, 0x0804, 0x2ec1, 0xd2cc, 0x1904, 0x2ec1, ++ 0x080c, 0x6fb2, 0x1120, 0x70ab, 0xffff, 0x0804, 0x2ec1, 0xd294, ++ 0x0120, 0x70ab, 0xffff, 0x0804, 0x2ec1, 0x080c, 0x312e, 0x0160, ++ 0x080c, 0xc212, 0x0128, 0x2001, 0x1817, 0x203c, 0x0804, 0x2e53, ++ 0x70ab, 0xffff, 0x0804, 0x2ec1, 0x2001, 0x1817, 0x203c, 0x7290, ++ 0xd284, 0x0904, 0x2e53, 0xd28c, 0x1904, 0x2e53, 0x0036, 0x73a8, ++ 0x938e, 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1c80, ++ 0x2c04, 0x938c, 0x0001, 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, ++ 0x9084, 0x00ff, 0x970e, 0x05a8, 0x908e, 0x0000, 0x0590, 0x908e, ++ 0x00ff, 0x1150, 0x7230, 0xd284, 0x1588, 0x7290, 0xc28d, 0x7292, ++ 0x70ab, 0xffff, 0x003e, 0x0478, 0x0026, 0x2011, 0x0010, 0x080c, ++ 0x6586, 0x002e, 0x0118, 0x70ab, 0xffff, 0x0410, 0x900e, 0x080c, ++ 0x2663, 0x080c, 0x61de, 0x11c0, 0x080c, 0x6562, 0x1168, 0x7030, ++ 0xd08c, 0x0130, 0xb800, 0xd0bc, 0x0138, 0x080c, 0x645e, 0x0120, ++ 0x080c, 0x2edf, 0x0148, 0x0028, 0x080c, 0x301f, 0x080c, 0x2f0b, ++ 0x0118, 0x8318, 0x0804, 0x2e05, 0x73aa, 0x0010, 0x70ab, 0xffff, ++ 0x003e, 0x0804, 0x2ec1, 0x9780, 0x3138, 0x203d, 0x97bc, 0xff00, ++ 0x873f, 0x2041, 0x007e, 0x70a8, 0x9096, 0xffff, 0x1118, 0x900e, ++ 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, 0x20a8, 0x0020, ++ 0x70ab, 0xffff, 0x0804, 0x2ec1, 0x2700, 0x0156, 0x0016, 0x9106, ++ 0x0904, 0x2eb6, 0x0026, 0x2011, 0x0010, 0x080c, 0x6586, 0x002e, ++ 0x0120, 0x2009, 0xffff, 0x0804, 0x2ebe, 0xc484, 0x080c, 0x623e, ++ 0x0138, 0x080c, 0xc212, 0x1590, 0x080c, 0x61de, 0x15b8, 0x0008, ++ 0xc485, 0x080c, 0x6562, 0x1130, 0x7030, 0xd08c, 0x01f8, 0xb800, ++ 0xd0bc, 0x11e0, 0x7290, 0xd28c, 0x0180, 0x080c, 0x6562, 0x9082, ++ 0x0006, 0x02e0, 0xd484, 0x1118, 0x080c, 0x6202, 0x0028, 0x080c, ++ 0x30aa, 0x01a0, 0x080c, 0x30d5, 0x0088, 0x080c, 0x301f, 0x080c, ++ 0xc212, 0x1160, 0x080c, 0x2f0b, 0x0188, 0x0040, 0x080c, 0xc212, ++ 0x1118, 0x080c, 0x30aa, 0x0110, 0x0451, 0x0140, 0x001e, 0x8108, ++ 0x015e, 0x1f04, 0x2e6c, 0x70ab, 0xffff, 0x0018, 0x001e, 0x015e, ++ 0x71aa, 0x004e, 0x002e, 0x00ce, 0x00be, 0x0005, 0x00c6, 0x0016, ++ 0x70ab, 0x0001, 0x2009, 0x007e, 0x080c, 0x61de, 0x1168, 0xb813, ++ 0x00ff, 0xb817, 0xfffe, 0x080c, 0x301f, 0x04a9, 0x0128, 0x70d8, ++ 0xc0bd, 0x70da, 0x080c, 0xbf63, 0x001e, 0x00ce, 0x0005, 0x0016, ++ 0x0076, 0x00d6, 0x00c6, 0x2001, 0x1858, 0x2004, 0x9084, 0x00ff, ++ 0xb842, 0x080c, 0x9e7f, 0x01d0, 0x2b00, 0x6012, 0x080c, 0xbf8c, ++ 0x6023, 0x0001, 0x9006, 0x080c, 0x617b, 0x2001, 0x0000, 0x080c, ++ 0x618f, 0x0126, 0x2091, 0x8000, 0x70a4, 0x8000, 0x70a6, 0x012e, ++ 0x2009, 0x0004, 0x080c, 0x9eac, 0x9085, 0x0001, 0x00ce, 0x00de, ++ 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001, ++ 0x1858, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0x9e7f, 0x0548, ++ 0x2b00, 0x6012, 0xb800, 0xc0c4, 0xb802, 0xb8a0, 0x9086, 0x007e, ++ 0x0140, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1110, 0x080c, ++ 0x2fda, 0x080c, 0xbf8c, 0x6023, 0x0001, 0x9006, 0x080c, 0x617b, ++ 0x2001, 0x0002, 0x080c, 0x618f, 0x0126, 0x2091, 0x8000, 0x70a4, ++ 0x8000, 0x70a6, 0x012e, 0x2009, 0x0002, 0x080c, 0x9eac, 0x9085, ++ 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00b6, 0x00c6, ++ 0x0026, 0x2009, 0x0080, 0x080c, 0x61de, 0x1140, 0xb813, 0x00ff, ++ 0xb817, 0xfffc, 0x0039, 0x0110, 0x70df, 0xffff, 0x002e, 0x00ce, ++ 0x00be, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x080c, 0x9ddc, ++ 0x01d0, 0x2b00, 0x6012, 0x080c, 0xbf8c, 0x6023, 0x0001, 0x9006, ++ 0x080c, 0x617b, 0x2001, 0x0002, 0x080c, 0x618f, 0x0126, 0x2091, ++ 0x8000, 0x70e0, 0x8000, 0x70e2, 0x012e, 0x2009, 0x0002, 0x080c, ++ 0x9eac, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, ++ 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c, ++ 0x61de, 0x11b8, 0xb813, 0x00ff, 0xb817, 0xfffd, 0xb8bf, 0x0004, ++ 0x080c, 0x9ddc, 0x0170, 0x2b00, 0x6012, 0x6316, 0x6023, 0x0001, ++ 0x620a, 0x080c, 0xbf8c, 0x2009, 0x0022, 0x080c, 0x9eac, 0x9085, ++ 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066, ++ 0x0036, 0x0026, 0x00b6, 0x21f0, 0x080c, 0x857c, 0x080c, 0x850b, ++ 0x080c, 0x9c8a, 0x080c, 0xad77, 0x3e08, 0x2130, 0x81ff, 0x0120, ++ 0x20a9, 0x007e, 0x900e, 0x0018, 0x20a9, 0x007f, 0x900e, 0x0016, ++ 0x080c, 0x623e, 0x1140, 0x9686, 0x0002, 0x1118, 0xb800, 0xd0bc, ++ 0x1110, 0x080c, 0x5ceb, 0x001e, 0x8108, 0x1f04, 0x2fbf, 0x9686, ++ 0x0001, 0x190c, 0x3102, 0x00be, 0x002e, 0x003e, 0x006e, 0x00ce, ++ 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0046, 0x0036, 0x0026, 0x0016, ++ 0x00b6, 0x6210, 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, ++ 0x8571, 0x0076, 0x2039, 0x0000, 0x080c, 0x8469, 0x2c08, 0x080c, ++ 0xd29b, 0x007e, 0x001e, 0xba10, 0xbb14, 0xbcb0, 0x080c, 0x5ceb, ++ 0xba12, 0xbb16, 0xbcb2, 0x00be, 0x001e, 0x002e, 0x003e, 0x004e, ++ 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x00b6, 0x6010, 0x2058, ++ 0xb8a0, 0x00be, 0x9086, 0x0080, 0x0150, 0x2071, 0x1800, 0x70a4, ++ 0x9005, 0x0110, 0x8001, 0x70a6, 0x000e, 0x00ee, 0x0005, 0x2071, ++ 0x1800, 0x70e0, 0x9005, 0x0dc0, 0x8001, 0x70e2, 0x0ca8, 0xb800, ++ 0xc08c, 0xb802, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x00b6, 0x0046, ++ 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, ++ 0x0001, 0x0070, 0x080c, 0x5386, 0xd0c4, 0x0138, 0x0030, 0x9006, ++ 0x2020, 0x2009, 0x002d, 0x080c, 0xd52a, 0x20a9, 0x0800, 0x9016, ++ 0x0026, 0x928e, 0x007e, 0x0904, 0x3089, 0x928e, 0x007f, 0x0904, ++ 0x3089, 0x928e, 0x0080, 0x05e8, 0x9288, 0x1000, 0x210c, 0x81ff, ++ 0x05c0, 0x8fff, 0x1148, 0x2001, 0x195f, 0x0006, 0x2003, 0x0001, ++ 0x04f1, 0x000e, 0x2003, 0x0000, 0x00b6, 0x00c6, 0x2158, 0x2001, ++ 0x0001, 0x080c, 0x652c, 0x00ce, 0x00be, 0x2019, 0x0029, 0x080c, ++ 0x8571, 0x0076, 0x2039, 0x0000, 0x080c, 0x8469, 0x00b6, 0x00c6, ++ 0x0026, 0x2158, 0xba04, 0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, ++ 0xb807, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0x9215, 0xba06, ++ 0x002e, 0x00ce, 0x00be, 0x0016, 0x2c08, 0x080c, 0xd29b, 0x001e, ++ 0x007e, 0x002e, 0x8210, 0x1f04, 0x3040, 0x015e, 0x001e, 0x002e, ++ 0x003e, 0x004e, 0x00be, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, ++ 0x0026, 0x0016, 0x080c, 0x5386, 0xd0c4, 0x0140, 0xd0a4, 0x0130, ++ 0x9006, 0x2220, 0x2009, 0x0029, 0x080c, 0xd52a, 0x001e, 0x002e, ++ 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x7290, 0x82ff, ++ 0x01e8, 0x080c, 0x655a, 0x11d0, 0x2100, 0x080c, 0x2696, 0x81ff, ++ 0x01b8, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1c80, 0x2c04, 0xd384, ++ 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x9116, ++ 0x0138, 0x9096, 0x00ff, 0x0110, 0x8318, 0x0c68, 0x9085, 0x0001, ++ 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x0036, 0x2019, 0x0029, 0x00a9, 0x003e, 0x9180, ++ 0x1000, 0x2004, 0x9065, 0x0158, 0x0016, 0x00c6, 0x2061, 0x1a80, ++ 0x001e, 0x6112, 0x080c, 0x2fda, 0x001e, 0x080c, 0x6202, 0x012e, ++ 0x00ce, 0x001e, 0x0005, 0x0016, 0x0026, 0x2110, 0x080c, 0x9926, ++ 0x080c, 0xd7e2, 0x002e, 0x001e, 0x0005, 0x2001, 0x1836, 0x2004, ++ 0xd0cc, 0x0005, 0x00c6, 0x00b6, 0x080c, 0x6fb2, 0x1118, 0x20a9, ++ 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c, 0x6fb2, 0x1110, 0x900e, ++ 0x0010, 0x2009, 0x007e, 0x9180, 0x1000, 0x2004, 0x905d, 0x0130, ++ 0x86ff, 0x0110, 0xb800, 0xd0bc, 0x090c, 0x6202, 0x8108, 0x1f04, ++ 0x3113, 0x2061, 0x1800, 0x607b, 0x0000, 0x607c, 0x9084, 0x00ff, ++ 0x607e, 0x60af, 0x0000, 0x00be, 0x00ce, 0x0005, 0x2001, 0x1875, ++ 0x2004, 0xd0bc, 0x0005, 0x2011, 0x1854, 0x2214, 0xd2ec, 0x0005, ++ 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, ++ 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, ++ 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, ++ 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, ++ 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, ++ 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, ++ 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, ++ 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, ++ 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, ++ 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, ++ 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, ++ 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, ++ 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, ++ 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, ++ 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, ++ 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, ++ 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, ++ 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, ++ 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, ++ 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, ++ 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, ++ 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, ++ 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, ++ 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, ++ 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, ++ 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, ++ 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, ++ 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, ++ 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x2071, 0x1894, 0x7003, 0x0002, 0x9006, 0x7016, 0x701a, 0x704a, ++ 0x704e, 0x700e, 0x7042, 0x7046, 0x703b, 0x18b0, 0x703f, 0x18b0, ++ 0x7007, 0x0001, 0x080c, 0x1004, 0x090c, 0x0db4, 0x2900, 0x706a, ++ 0xa867, 0x0002, 0xa8ab, 0xdcb0, 0x080c, 0x1004, 0x090c, 0x0db4, ++ 0x2900, 0x706e, 0xa867, 0x0002, 0xa8ab, 0xdcb0, 0x0005, 0x2071, ++ 0x1894, 0x7004, 0x0002, 0x3267, 0x3268, 0x327b, 0x328f, 0x0005, ++ 0x1004, 0x3278, 0x0e04, 0x3278, 0x2079, 0x0000, 0x0126, 0x2091, ++ 0x8000, 0x700c, 0x9005, 0x1128, 0x700f, 0x0001, 0x012e, 0x0468, ++ 0x0005, 0x012e, 0x0ce8, 0x2079, 0x0000, 0x2061, 0x18ae, 0x2c4c, ++ 0xa86c, 0x908e, 0x0100, 0x0128, 0x9086, 0x0200, 0x0904, 0x3363, ++ 0x0005, 0x7018, 0x2048, 0x2061, 0x1800, 0x701c, 0x0807, 0x7014, ++ 0x2048, 0xa864, 0x9094, 0x00ff, 0x9296, 0x0029, 0x1120, 0xaa78, ++ 0xd2fc, 0x0128, 0x0005, 0x9086, 0x0103, 0x0108, 0x0005, 0x2079, ++ 0x0000, 0x2061, 0x1800, 0x701c, 0x0807, 0x2061, 0x1800, 0x7880, ++ 0x908a, 0x0040, 0x1210, 0x61cc, 0x0042, 0x2100, 0x908a, 0x003f, ++ 0x1a04, 0x3360, 0x61cc, 0x0804, 0x32f5, 0x3337, 0x336f, 0x3379, ++ 0x337d, 0x3387, 0x338d, 0x3391, 0x33a1, 0x33a4, 0x33ae, 0x33b3, ++ 0x33b8, 0x33c3, 0x33ce, 0x33dd, 0x33ec, 0x33fa, 0x3411, 0x342c, ++ 0x3360, 0x34d5, 0x3513, 0x35b9, 0x35ca, 0x35ed, 0x3360, 0x3360, ++ 0x3360, 0x3625, 0x3641, 0x364a, 0x3679, 0x367f, 0x3360, 0x36c5, ++ 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x36d0, 0x36d9, 0x36e1, ++ 0x36e3, 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x370f, ++ 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x372c, 0x3787, 0x3360, ++ 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x0002, 0x37b1, 0x37b4, ++ 0x3813, 0x382c, 0x385c, 0x3afa, 0x3360, 0x4f5f, 0x3360, 0x3360, ++ 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x3360, 0x33ae, 0x33b3, ++ 0x401b, 0x53aa, 0x4031, 0x4fee, 0x503f, 0x5142, 0x3360, 0x51a4, ++ 0x51e0, 0x5211, 0x5315, 0x523e, 0x5295, 0x3360, 0x4035, 0x41d6, ++ 0x41ec, 0x4211, 0x4276, 0x42ea, 0x430a, 0x4381, 0x43dd, 0x4439, ++ 0x443c, 0x4461, 0x4501, 0x4567, 0x456f, 0x46a1, 0x4803, 0x4837, ++ 0x4a81, 0x3360, 0x4a9f, 0x4b62, 0x4c38, 0x3360, 0x3360, 0x3360, ++ 0x3360, 0x4c9e, 0x4cb9, 0x456f, 0x4eff, 0x714c, 0x0000, 0x2021, ++ 0x4000, 0x080c, 0x48b5, 0x0126, 0x2091, 0x8000, 0x0e04, 0x3341, ++ 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, ++ 0x0011, 0x0010, 0x7833, 0x0010, 0x7c82, 0x7986, 0x7a8a, 0x7b8e, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, ++ 0x7007, 0x0001, 0x2091, 0x5000, 0x700f, 0x0000, 0x012e, 0x0005, ++ 0x2021, 0x4001, 0x08b0, 0x2021, 0x4002, 0x0898, 0x2021, 0x4003, ++ 0x0880, 0x2021, 0x4005, 0x0868, 0x2021, 0x4006, 0x0850, 0x2039, ++ 0x0001, 0x902e, 0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, ++ 0x48c2, 0x7883, 0x0004, 0x7884, 0x0807, 0x2039, 0x0001, 0x902e, ++ 0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x48c5, 0x7984, ++ 0x7888, 0x2114, 0x200a, 0x0804, 0x3337, 0x7984, 0x2114, 0x0804, ++ 0x3337, 0x20e1, 0x0000, 0x2099, 0x0021, 0x20e9, 0x0000, 0x20a1, ++ 0x0021, 0x20a9, 0x001f, 0x4003, 0x7984, 0x7a88, 0x7b8c, 0x0804, ++ 0x3337, 0x7884, 0x2060, 0x04d8, 0x2009, 0x0003, 0x2011, 0x0002, ++ 0x2019, 0x001c, 0x789b, 0x0317, 0x0804, 0x3337, 0x2039, 0x0001, ++ 0x7d98, 0x7c9c, 0x0800, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0848, ++ 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x336c, 0x2138, 0x7d98, ++ 0x7c9c, 0x0804, 0x3373, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, ++ 0x336c, 0x2138, 0x7d98, 0x7c9c, 0x0804, 0x3381, 0x79a0, 0x9182, ++ 0x0040, 0x0210, 0x0804, 0x336c, 0x21e8, 0x7984, 0x7888, 0x20a9, ++ 0x0001, 0x21a0, 0x4004, 0x0804, 0x3337, 0x2061, 0x0800, 0xe10c, ++ 0x9006, 0x2c15, 0x9200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0x9005, ++ 0x0904, 0x3337, 0x0804, 0x3366, 0x79a0, 0x9182, 0x0040, 0x0210, ++ 0x0804, 0x336c, 0x21e0, 0x20a9, 0x0001, 0x7984, 0x2198, 0x4012, ++ 0x0804, 0x3337, 0x2069, 0x1853, 0x7884, 0x7990, 0x911a, 0x1a04, ++ 0x336c, 0x8019, 0x0904, 0x336c, 0x684a, 0x6942, 0x788c, 0x6852, ++ 0x7888, 0x6856, 0x9006, 0x685a, 0x685e, 0x080c, 0x72c7, 0x0804, ++ 0x3337, 0x2069, 0x1853, 0x7884, 0x7994, 0x911a, 0x1a04, 0x336c, ++ 0x8019, 0x0904, 0x336c, 0x684e, 0x6946, 0x788c, 0x6862, 0x7888, ++ 0x6866, 0x9006, 0x686a, 0x686e, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6664, 0x012e, 0x0804, 0x3337, 0x902e, 0x2520, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x3369, 0x7984, 0x7b88, 0x7a8c, 0x20a9, ++ 0x0005, 0x20e9, 0x0001, 0x20a1, 0x189c, 0x4101, 0x080c, 0x4879, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, 0x2009, 0x0020, 0xa85c, ++ 0x9080, 0x0019, 0xaf60, 0x080c, 0x48c2, 0x701f, 0x3450, 0x0005, ++ 0xa864, 0x2008, 0x9084, 0x00ff, 0x9096, 0x0011, 0x0168, 0x9096, ++ 0x0019, 0x0150, 0x9096, 0x0015, 0x0138, 0x9096, 0x0048, 0x0120, ++ 0x9096, 0x0029, 0x1904, 0x3369, 0x810f, 0x918c, 0x00ff, 0x0904, ++ 0x3369, 0x7112, 0x7010, 0x8001, 0x0560, 0x7012, 0x080c, 0x4879, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, 0x2009, 0x0020, 0x7068, ++ 0x2040, 0xa28c, 0xa390, 0xa494, 0xa598, 0x9290, 0x0040, 0x9399, ++ 0x0000, 0x94a1, 0x0000, 0x95a9, 0x0000, 0xa85c, 0x9080, 0x0019, ++ 0xaf60, 0x080c, 0x48c2, 0x701f, 0x348e, 0x0005, 0xa864, 0x9084, ++ 0x00ff, 0x9096, 0x0002, 0x0120, 0x9096, 0x000a, 0x1904, 0x3369, ++ 0x0888, 0x7014, 0x2048, 0xa868, 0xc0fd, 0xa86a, 0xa864, 0x9084, ++ 0x00ff, 0x9096, 0x0029, 0x1160, 0xc2fd, 0xaa7a, 0x080c, 0x5ddd, ++ 0x0150, 0x0126, 0x2091, 0x8000, 0xa87a, 0xa982, 0x012e, 0x0050, ++ 0x080c, 0x60f4, 0x1128, 0x7007, 0x0003, 0x701f, 0x34ba, 0x0005, ++ 0x080c, 0x6ac6, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x20e1, ++ 0x0001, 0x2099, 0x189c, 0x400a, 0x2100, 0x9210, 0x9399, 0x0000, ++ 0x94a1, 0x0000, 0x95a9, 0x0000, 0xa85c, 0x9080, 0x0019, 0x2009, ++ 0x0020, 0x012e, 0xaf60, 0x0804, 0x48c5, 0x2091, 0x8000, 0x7837, ++ 0x4000, 0x7833, 0x0010, 0x7883, 0x4000, 0x7887, 0x4953, 0x788b, ++ 0x5020, 0x788f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7892, 0x3f00, ++ 0x7896, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, ++ 0x9205, 0x789a, 0x2009, 0x04fd, 0x2104, 0x789e, 0x2091, 0x5000, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x0180, 0x2001, ++ 0x19ea, 0x2004, 0x9005, 0x0128, 0x2001, 0x008b, 0x2004, 0xd0fc, ++ 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, 0x2003, 0x1001, 0x2071, ++ 0x0080, 0x0804, 0x0427, 0x81ff, 0x1904, 0x3369, 0x7984, 0x080c, ++ 0x623e, 0x1904, 0x336c, 0x7e98, 0x9684, 0x3fff, 0x9082, 0x4000, ++ 0x1a04, 0x336c, 0x7c88, 0x7d8c, 0x080c, 0x63a1, 0x080c, 0x6370, ++ 0x0000, 0x1518, 0x2061, 0x1cd0, 0x0126, 0x2091, 0x8000, 0x6000, ++ 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130, 0xa86c, 0x9406, ++ 0x1118, 0xa870, 0x9506, 0x0150, 0x012e, 0x9ce0, 0x0018, 0x2001, ++ 0x1819, 0x2004, 0x9c02, 0x1a04, 0x3369, 0x0c30, 0x080c, 0xb74a, ++ 0x012e, 0x0904, 0x3369, 0x0804, 0x3337, 0x900e, 0x2001, 0x0005, ++ 0x080c, 0x6ac6, 0x0126, 0x2091, 0x8000, 0x080c, 0xbe0c, 0x080c, ++ 0x688c, 0x012e, 0x0804, 0x3337, 0x00a6, 0x2950, 0xb198, 0x080c, ++ 0x623e, 0x1904, 0x35a6, 0xb6a4, 0x9684, 0x3fff, 0x9082, 0x4000, ++ 0x16e8, 0xb49c, 0xb5a0, 0x080c, 0x63a1, 0x080c, 0x6370, 0x1520, ++ 0x2061, 0x1cd0, 0x0126, 0x2091, 0x8000, 0x6000, 0x9086, 0x0000, ++ 0x0148, 0x6014, 0x904d, 0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, ++ 0x9506, 0x0158, 0x012e, 0x9ce0, 0x0018, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x2009, 0x000d, 0x12b0, 0x0c28, 0x080c, 0xb74a, 0x012e, ++ 0x2009, 0x0003, 0x0178, 0x00e0, 0x900e, 0x2001, 0x0005, 0x080c, ++ 0x6ac6, 0x0126, 0x2091, 0x8000, 0x080c, 0xbe0c, 0x080c, 0x687f, ++ 0x012e, 0x0070, 0xb097, 0x4005, 0xb19a, 0x0010, 0xb097, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x2a48, 0x00ae, 0x0005, ++ 0xb097, 0x4000, 0x9006, 0x918d, 0x0001, 0x2008, 0x2a48, 0x00ae, ++ 0x0005, 0x81ff, 0x1904, 0x3369, 0x080c, 0x4890, 0x0904, 0x336c, ++ 0x080c, 0x6305, 0x0904, 0x3369, 0x080c, 0x63a7, 0x0904, 0x3369, ++ 0x0804, 0x4301, 0x81ff, 0x1904, 0x3369, 0x080c, 0x48ac, 0x0904, ++ 0x336c, 0x080c, 0x6435, 0x0904, 0x3369, 0x2019, 0x0005, 0x79a8, ++ 0x080c, 0x63c2, 0x0904, 0x3369, 0x7888, 0x908a, 0x1000, 0x1a04, ++ 0x336c, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x8046, 0x7984, ++ 0xd184, 0x1904, 0x3337, 0x0804, 0x4301, 0x0126, 0x2091, 0x8000, ++ 0x81ff, 0x0118, 0x2009, 0x0001, 0x0450, 0x2029, 0x07ff, 0x6458, ++ 0x2400, 0x9506, 0x01f8, 0x2508, 0x080c, 0x623e, 0x11d8, 0x080c, ++ 0x6435, 0x1128, 0x2009, 0x0002, 0x62bc, 0x2518, 0x00c0, 0x2019, ++ 0x0004, 0x900e, 0x080c, 0x63c2, 0x1118, 0x2009, 0x0006, 0x0078, ++ 0x7884, 0x908a, 0x1000, 0x1270, 0x8003, 0x800b, 0x810b, 0x9108, ++ 0x080c, 0x8046, 0x8529, 0x1ae0, 0x012e, 0x0804, 0x3337, 0x012e, ++ 0x0804, 0x3369, 0x012e, 0x0804, 0x336c, 0x080c, 0x4890, 0x0904, ++ 0x336c, 0x080c, 0x6305, 0x0904, 0x3369, 0xbaa0, 0x2019, 0x0005, ++ 0x00c6, 0x9066, 0x080c, 0x8571, 0x0076, 0x903e, 0x080c, 0x8469, ++ 0x900e, 0x080c, 0xd29b, 0x007e, 0x00ce, 0x080c, 0x63a1, 0x0804, ++ 0x3337, 0x080c, 0x4890, 0x0904, 0x336c, 0x080c, 0x63a1, 0x2208, ++ 0x0804, 0x3337, 0x0156, 0x00d6, 0x00e6, 0x2069, 0x1906, 0x6810, ++ 0x6914, 0x910a, 0x1208, 0x900e, 0x6816, 0x9016, 0x901e, 0x20a9, ++ 0x007e, 0x2069, 0x1000, 0x2d04, 0x905d, 0x0118, 0xb84c, 0x0059, ++ 0x9210, 0x8d68, 0x1f04, 0x365b, 0x2300, 0x9218, 0x00ee, 0x00de, ++ 0x015e, 0x0804, 0x3337, 0x00f6, 0x0016, 0x907d, 0x0138, 0x9006, ++ 0x8000, 0x2f0c, 0x81ff, 0x0110, 0x2178, 0x0cd0, 0x001e, 0x00fe, ++ 0x0005, 0x2069, 0x1906, 0x6910, 0x62b8, 0x0804, 0x3337, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x3369, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x539a, 0x0128, 0x2009, 0x0007, 0x012e, 0x0804, 0x3369, ++ 0x012e, 0x6158, 0x9190, 0x3138, 0x2215, 0x9294, 0x00ff, 0x6378, ++ 0x83ff, 0x0108, 0x627c, 0x67d8, 0x97c4, 0x000a, 0x98c6, 0x000a, ++ 0x1118, 0x2031, 0x0001, 0x00e8, 0x97c4, 0x0022, 0x98c6, 0x0022, ++ 0x1118, 0x2031, 0x0003, 0x00a8, 0x97c4, 0x0012, 0x98c6, 0x0012, ++ 0x1118, 0x2031, 0x0002, 0x0068, 0x080c, 0x6fb2, 0x1118, 0x2031, ++ 0x0004, 0x0038, 0xd79c, 0x0120, 0x2009, 0x0005, 0x0804, 0x3369, ++ 0x9036, 0x7e9a, 0x7f9e, 0x0804, 0x3337, 0x6148, 0x624c, 0x2019, ++ 0x1957, 0x231c, 0x2001, 0x1958, 0x2004, 0x789a, 0x0804, 0x3337, ++ 0x0126, 0x2091, 0x8000, 0x6138, 0x623c, 0x6340, 0x012e, 0x0804, ++ 0x3337, 0x080c, 0x48ac, 0x0904, 0x336c, 0xba44, 0xbb38, 0x0804, ++ 0x3337, 0x080c, 0x0db4, 0x080c, 0x48ac, 0x2110, 0x0904, 0x336c, ++ 0xb804, 0x908c, 0x00ff, 0x918e, 0x0006, 0x0140, 0x9084, 0xff00, ++ 0x9086, 0x0600, 0x2009, 0x0009, 0x1904, 0x3369, 0x0126, 0x2091, ++ 0x8000, 0x2019, 0x0005, 0x00c6, 0x9066, 0x080c, 0x9926, 0x080c, ++ 0x8571, 0x0076, 0x903e, 0x080c, 0x8469, 0x900e, 0x080c, 0xd29b, ++ 0x007e, 0x00ce, 0xb807, 0x0407, 0x012e, 0x0804, 0x3337, 0x6148, ++ 0x624c, 0x7884, 0x604a, 0x7b88, 0x634e, 0x2069, 0x1853, 0x831f, ++ 0x9305, 0x6816, 0x788c, 0x2069, 0x1957, 0x2d1c, 0x206a, 0x7e98, ++ 0x9682, 0x0014, 0x1210, 0x2031, 0x07d0, 0x2069, 0x1958, 0x2d04, ++ 0x266a, 0x789a, 0x0804, 0x3337, 0x0126, 0x2091, 0x8000, 0x6138, ++ 0x7884, 0x603a, 0x910e, 0xd1b4, 0x190c, 0x0e9b, 0xd0c4, 0x01a8, ++ 0x00d6, 0x78a8, 0x2009, 0x196e, 0x200a, 0x78ac, 0x2011, 0x196f, ++ 0x2012, 0x2069, 0x0100, 0x6838, 0x9086, 0x0007, 0x1118, 0x2214, ++ 0x6a5a, 0x0010, 0x210c, 0x695a, 0x00de, 0x7888, 0x603e, 0x2011, ++ 0x0114, 0x220c, 0x7888, 0xd08c, 0x0118, 0x918d, 0x0080, 0x0010, ++ 0x918c, 0xff7f, 0x2112, 0x6140, 0x788c, 0x6042, 0x910e, 0xd1e4, ++ 0x190c, 0x0eb1, 0x6040, 0xd0cc, 0x0120, 0x78b0, 0x2011, 0x0114, ++ 0x2012, 0x012e, 0x0804, 0x3337, 0x00f6, 0x2079, 0x1800, 0x7a38, ++ 0xa898, 0x9084, 0xfebf, 0x9215, 0xa89c, 0x9084, 0xfebf, 0x8002, ++ 0x9214, 0x7838, 0x9084, 0x0140, 0x9215, 0x7a3a, 0xa897, 0x4000, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x00fe, 0x0005, 0x7898, ++ 0x9005, 0x01a8, 0x7888, 0x9025, 0x0904, 0x336c, 0x788c, 0x902d, ++ 0x0904, 0x336c, 0x900e, 0x080c, 0x623e, 0x1120, 0xba44, 0xbb38, ++ 0xbc46, 0xbd3a, 0x9186, 0x07ff, 0x0190, 0x8108, 0x0ca0, 0x080c, ++ 0x48ac, 0x0904, 0x336c, 0x7888, 0x900d, 0x0904, 0x336c, 0x788c, ++ 0x9005, 0x0904, 0x336c, 0xba44, 0xb946, 0xbb38, 0xb83a, 0x0804, ++ 0x3337, 0x2011, 0xbc09, 0x0010, 0x2011, 0xbc05, 0x080c, 0x539a, ++ 0x1904, 0x3369, 0x00c6, 0x2061, 0x0100, 0x7984, 0x9186, 0x00ff, ++ 0x1130, 0x2001, 0x1817, 0x2004, 0x9085, 0xff00, 0x0088, 0x9182, ++ 0x007f, 0x16e0, 0x9188, 0x3138, 0x210d, 0x918c, 0x00ff, 0x2001, ++ 0x1817, 0x2004, 0x0026, 0x9116, 0x002e, 0x0580, 0x810f, 0x9105, ++ 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x9ddc, 0x000e, 0x0510, ++ 0x602e, 0x620a, 0x7984, 0x00b6, 0x080c, 0x61e4, 0x2b08, 0x00be, ++ 0x1500, 0x6112, 0x6023, 0x0001, 0x080c, 0x4879, 0x01d0, 0x9006, ++ 0xa866, 0x7007, 0x0003, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x701f, ++ 0x380c, 0x2900, 0x6016, 0x2009, 0x0032, 0x080c, 0x9eac, 0x012e, ++ 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x3369, 0x00ce, 0x0804, ++ 0x336c, 0x080c, 0x9e32, 0x0cb0, 0xa830, 0x9086, 0x0100, 0x0904, ++ 0x3369, 0x0804, 0x3337, 0x2061, 0x1a41, 0x0126, 0x2091, 0x8000, ++ 0x6000, 0xd084, 0x0170, 0x6104, 0x6208, 0x2061, 0x1800, 0x6350, ++ 0x6070, 0x789a, 0x60bc, 0x789e, 0x60b8, 0x78aa, 0x012e, 0x0804, ++ 0x3337, 0x900e, 0x2110, 0x0c88, 0x81ff, 0x1904, 0x3369, 0x080c, ++ 0x6fb2, 0x0904, 0x3369, 0x0126, 0x2091, 0x8000, 0x6250, 0x6070, ++ 0x9202, 0x0248, 0x9085, 0x0001, 0x080c, 0x26cc, 0x080c, 0x55b4, ++ 0x012e, 0x0804, 0x3337, 0x012e, 0x0804, 0x336c, 0x0006, 0x0016, ++ 0x00c6, 0x00e6, 0x2001, 0x197a, 0x2070, 0x2061, 0x1853, 0x6008, ++ 0x2072, 0x900e, 0x2011, 0x1400, 0x080c, 0x8270, 0x7206, 0x00ee, ++ 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, ++ 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, 0x3339, 0x7884, 0xd0fc, ++ 0x0148, 0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x0288, 0x012e, ++ 0x0804, 0x336c, 0x2001, 0x002a, 0x2004, 0x2069, 0x1853, 0x6908, ++ 0x9102, 0x1230, 0x012e, 0x0804, 0x336c, 0x012e, 0x0804, 0x3369, ++ 0x080c, 0x9db1, 0x0dd0, 0x7884, 0xd0fc, 0x0904, 0x38d7, 0x00c6, ++ 0x080c, 0x4879, 0x00ce, 0x0d88, 0xa867, 0x0000, 0x7884, 0xa80a, ++ 0x7898, 0xa80e, 0x789c, 0xa812, 0x2001, 0x002e, 0x2004, 0xa81a, ++ 0x2001, 0x002f, 0x2004, 0xa81e, 0x2001, 0x0030, 0x2004, 0xa822, ++ 0x2001, 0x0031, 0x2004, 0xa826, 0x2001, 0x0034, 0x2004, 0xa82a, ++ 0x2001, 0x0035, 0x2004, 0xa82e, 0x2001, 0x002a, 0x2004, 0x9080, ++ 0x0003, 0x9084, 0x00fc, 0x8004, 0xa816, 0x080c, 0x3a5d, 0x0928, ++ 0x7014, 0x2048, 0xad2c, 0xac28, 0xab1c, 0xaa18, 0xa930, 0xa808, ++ 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x080c, ++ 0x48c2, 0x701f, 0x399a, 0x7023, 0x0001, 0x012e, 0x0005, 0x0046, ++ 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, ++ 0x080c, 0x3846, 0x2001, 0x1970, 0x2003, 0x0000, 0x2021, 0x000a, ++ 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb, 0x0000, 0x60bf, 0x32e1, ++ 0x60bf, 0x0012, 0x080c, 0x3acc, 0x080c, 0x3a8b, 0x00f6, 0x00e6, ++ 0x0086, 0x2940, 0x2071, 0x1a36, 0x2079, 0x0090, 0x00d6, 0x2069, ++ 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001, 0x0035, 0x2004, 0x780e, ++ 0x2001, 0x0034, 0x2004, 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, ++ 0x3e5f, 0x008e, 0x00ee, 0x00fe, 0x080c, 0x3d8c, 0x080c, 0x3c91, ++ 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140, 0x1db8, 0x080c, ++ 0x3ed3, 0x00f6, 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, 0x0070, ++ 0x1560, 0x2071, 0x0200, 0x7037, 0x0000, 0x7050, 0x9084, 0xff00, ++ 0x9086, 0x3200, 0x1510, 0x7037, 0x0001, 0x7050, 0x9084, 0xff00, ++ 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000, 0x7054, 0x7037, 0x0000, ++ 0x715c, 0x9106, 0x1190, 0x2001, 0x181f, 0x2004, 0x9106, 0x1168, ++ 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084, 0x1e00, 0x00ce, 0x0138, ++ 0x080c, 0x3c9b, 0x080c, 0x3a86, 0x0058, 0x080c, 0x3a86, 0x080c, ++ 0x3df7, 0x080c, 0x3d82, 0x2001, 0x020b, 0x2004, 0xd0e4, 0x0dd8, ++ 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, 0x0100, 0x6027, 0x0002, ++ 0x001e, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020, 0x60bb, 0x0000, ++ 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001, 0x0004, 0x200c, 0x918c, ++ 0xfffd, 0x2102, 0x080c, 0x129f, 0x2009, 0x0028, 0x080c, 0x2268, ++ 0x2001, 0x0227, 0x200c, 0x2102, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x00be, 0x00ae, 0x009e, 0x008e, 0x004e, 0x2001, 0x1970, 0x2004, ++ 0x9005, 0x1118, 0x012e, 0x0804, 0x3337, 0x012e, 0x2021, 0x400c, ++ 0x0804, 0x3339, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, ++ 0x0086, 0x0096, 0x00d6, 0x0156, 0x7014, 0x2048, 0x7020, 0x20a8, ++ 0x8000, 0x7022, 0xa804, 0x9005, 0x0904, 0x39f6, 0x2048, 0x1f04, ++ 0x39aa, 0x7068, 0x2040, 0xa28c, 0xa390, 0xa494, 0xa598, 0xa930, ++ 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x0096, ++ 0x7014, 0x2048, 0xa864, 0x009e, 0x9086, 0x0103, 0x0170, 0x8906, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, ++ 0x080c, 0x48c2, 0x701f, 0x399a, 0x00b0, 0x8906, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, ++ 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c, 0x0f68, 0x000e, 0x080c, ++ 0x48c5, 0x701f, 0x399a, 0x015e, 0x00de, 0x009e, 0x008e, 0x007e, ++ 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0005, 0x7014, 0x2048, ++ 0xa864, 0x9086, 0x0103, 0x1118, 0x701f, 0x3a5b, 0x0450, 0x7014, ++ 0x2048, 0xa868, 0xc0fd, 0xa86a, 0x2009, 0x007f, 0x080c, 0x61de, ++ 0x0110, 0x9006, 0x0030, 0xb813, 0x00ff, 0xb817, 0xfffd, 0x080c, ++ 0xbfdb, 0x015e, 0x00de, 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, ++ 0x003e, 0x002e, 0x001e, 0x0904, 0x3369, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, 0x0156, 0x701f, ++ 0x3a2d, 0x7007, 0x0003, 0x0804, 0x39eb, 0xa830, 0x9086, 0x0100, ++ 0x2021, 0x400c, 0x0904, 0x3339, 0x0076, 0xad10, 0xac0c, 0xab24, ++ 0xaa20, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, ++ 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, ++ 0x080c, 0x0f68, 0x000e, 0x080c, 0x48c5, 0x007e, 0x701f, 0x399a, ++ 0x7023, 0x0001, 0x0005, 0x0804, 0x3337, 0x0156, 0x00c6, 0xa814, ++ 0x908a, 0x001e, 0x0218, 0xa833, 0x001e, 0x0010, 0xa832, 0x0078, ++ 0x81ff, 0x0168, 0x0016, 0x080c, 0x4879, 0x001e, 0x0130, 0xa800, ++ 0x2040, 0xa008, 0xa80a, 0x2100, 0x0c58, 0x9006, 0x0010, 0x9085, ++ 0x0001, 0x00ce, 0x015e, 0x0005, 0x0006, 0x00f6, 0x2079, 0x0000, ++ 0x7880, 0x9086, 0x0044, 0x00fe, 0x000e, 0x0005, 0x2001, 0x1970, ++ 0x2003, 0x0001, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, ++ 0x2001, 0x197b, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001, 0x197a, ++ 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106, 0x080c, 0x4879, 0xa813, ++ 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, ++ 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, 0x2061, 0x0090, 0x2079, ++ 0x0100, 0x2001, 0x197a, 0x2004, 0x6036, 0x2009, 0x0040, 0x080c, ++ 0x2268, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, 0x601a, ++ 0xa873, 0x0000, 0x601f, 0x0000, 0x78ca, 0x9006, 0x600a, 0x600e, ++ 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, 0x080c, 0x4879, 0x2940, ++ 0xa013, 0x0019, 0xa017, 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030, ++ 0x2004, 0xa866, 0x2001, 0x0031, 0x2004, 0xa86a, 0x2001, 0x002a, ++ 0x2004, 0x9084, 0xfff8, 0xa86e, 0xa873, 0x0000, 0x2001, 0x032a, ++ 0x2003, 0x0004, 0x2001, 0x0300, 0x2003, 0x0000, 0x2001, 0x020d, ++ 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, 0x918d, 0x0002, 0x2102, ++ 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0148, 0x080c, ++ 0x2a55, 0x1130, 0x9006, 0x080c, 0x29ad, 0x9006, 0x080c, 0x2990, ++ 0x7884, 0x9084, 0x0007, 0x0002, 0x3b17, 0x3b20, 0x3b29, 0x3b14, ++ 0x3b14, 0x3b14, 0x3b14, 0x3b14, 0x012e, 0x0804, 0x336c, 0x2009, ++ 0x0114, 0x2104, 0x9085, 0x0800, 0x200a, 0x080c, 0x3ce5, 0x00c0, ++ 0x2009, 0x0114, 0x2104, 0x9085, 0x4000, 0x200a, 0x080c, 0x3ce5, ++ 0x0078, 0x080c, 0x6fb2, 0x1128, 0x012e, 0x2009, 0x0016, 0x0804, ++ 0x3369, 0x81ff, 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, 0x3339, ++ 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, ++ 0x080c, 0x3846, 0x2009, 0x0101, 0x210c, 0x0016, 0x7ec8, 0x7dcc, ++ 0x9006, 0x2068, 0x2060, 0x2058, 0x080c, 0x3fae, 0x080c, 0x3efe, ++ 0x903e, 0x2720, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x1a36, ++ 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0120, ++ 0x68d4, 0x780e, 0x68d0, 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, ++ 0x3e5f, 0x080c, 0x2a5d, 0x080c, 0x2a5d, 0x080c, 0x2a5d, 0x080c, ++ 0x2a5d, 0x080c, 0x3e5f, 0x008e, 0x00ee, 0x00fe, 0x080c, 0x3d8c, ++ 0x2009, 0x9c40, 0x8109, 0x11b0, 0x080c, 0x3c9b, 0x2001, 0x0004, ++ 0x200c, 0x918c, 0xfffd, 0x2102, 0x001e, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x2009, 0x0017, 0x080c, ++ 0x3369, 0x0cf8, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140, 0x1d10, ++ 0x00f6, 0x2079, 0x0000, 0x7884, 0x00fe, 0xd0bc, 0x0178, 0x2001, ++ 0x0201, 0x200c, 0x81ff, 0x0150, 0x080c, 0x3d6a, 0x2d00, 0x9c05, ++ 0x9b05, 0x0120, 0x080c, 0x3c9b, 0x0804, 0x3c48, 0x080c, 0x3ed3, ++ 0x080c, 0x3df7, 0x080c, 0x3d4d, 0x080c, 0x3d82, 0x00f6, 0x2079, ++ 0x0100, 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x3c9b, 0x00fe, ++ 0x0804, 0x3c48, 0x00fe, 0x080c, 0x3c91, 0x1150, 0x8d68, 0x2001, ++ 0x0032, 0x2602, 0x2001, 0x0033, 0x2502, 0x080c, 0x3c9b, 0x0080, ++ 0x87ff, 0x0138, 0x2001, 0x0201, 0x2004, 0x9005, 0x1908, 0x8739, ++ 0x0038, 0x2001, 0x1a33, 0x2004, 0x9086, 0x0000, 0x1904, 0x3b98, ++ 0x2001, 0x032f, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, ++ 0x9605, 0x0904, 0x3c48, 0x7884, 0xd0bc, 0x0128, 0x2d00, 0x9c05, ++ 0x9b05, 0x1904, 0x3c48, 0xa013, 0x0019, 0x2001, 0x032a, 0x2003, ++ 0x0004, 0x7884, 0xd0ac, 0x1148, 0x2001, 0x1a33, 0x2003, 0x0003, ++ 0x2001, 0x032a, 0x2003, 0x0009, 0x0030, 0xa017, 0x0001, 0x78b4, ++ 0x9005, 0x0108, 0xa016, 0x2800, 0xa05a, 0x2009, 0x0040, 0x080c, ++ 0x2268, 0x2900, 0xa85a, 0xa813, 0x0019, 0x7884, 0xd0a4, 0x1180, ++ 0xa817, 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0090, 0x602b, ++ 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, 0x3c1f, 0x00ce, 0x0030, ++ 0xa817, 0x0001, 0x78b0, 0x9005, 0x0108, 0xa816, 0x00f6, 0x00c6, ++ 0x2079, 0x0100, 0x2061, 0x0090, 0x7827, 0x0002, 0x2001, 0x002a, ++ 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, ++ 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804, 0x3b52, ++ 0x001e, 0x00c6, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, 0x0100, ++ 0x6027, 0x0002, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020, 0x2001, ++ 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x129f, 0x7884, ++ 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x2009, 0x0028, 0x080c, ++ 0x2268, 0x2001, 0x0227, 0x200c, 0x2102, 0x6050, 0x9084, 0xb7ef, ++ 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, 0x0090, 0x6043, ++ 0x0010, 0x00ce, 0x2d08, 0x2c10, 0x2b18, 0x2b00, 0x9c05, 0x9d05, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, ++ 0x1118, 0x012e, 0x0804, 0x3337, 0x012e, 0x2021, 0x400c, 0x0804, ++ 0x3339, 0x9085, 0x0001, 0x1d04, 0x3c9a, 0x2091, 0x6000, 0x8420, ++ 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010, 0x2001, ++ 0x032a, 0x2003, 0x0004, 0x2001, 0x1a33, 0x2003, 0x0000, 0x0071, ++ 0x2009, 0x0048, 0x080c, 0x2268, 0x2001, 0x0227, 0x2024, 0x2402, ++ 0x2001, 0x0109, 0x2003, 0x4000, 0x9026, 0x0005, 0x00f6, 0x00e6, ++ 0x2071, 0x1a36, 0x7000, 0x9086, 0x0000, 0x0520, 0x2079, 0x0090, ++ 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, ++ 0x2009, 0x0040, 0x080c, 0x2268, 0x782c, 0xd0fc, 0x0d88, 0x080c, ++ 0x3ed3, 0x7000, 0x9086, 0x0000, 0x1d58, 0x782b, 0x0004, 0x782c, ++ 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, 0x2268, 0x782b, 0x0002, ++ 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0100, ++ 0x2001, 0x1817, 0x200c, 0x7932, 0x7936, 0x080c, 0x26ac, 0x7850, ++ 0x9084, 0xfbff, 0x9085, 0x0030, 0x7852, 0x2019, 0x01f4, 0x8319, ++ 0x1df0, 0x9084, 0xffcf, 0x9085, 0x2000, 0x7852, 0x20a9, 0x0046, ++ 0x1d04, 0x3d00, 0x2091, 0x6000, 0x1f04, 0x3d00, 0x7850, 0x9085, ++ 0x0400, 0x9084, 0xdfff, 0x7852, 0x2001, 0x0021, 0x2004, 0x9084, ++ 0x0003, 0x9086, 0x0001, 0x1120, 0x7850, 0x9084, 0xdfff, 0x7852, ++ 0x784b, 0xf7f7, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x0028, ++ 0xa001, 0x1f04, 0x3d20, 0x7850, 0x9085, 0x1400, 0x7852, 0x2019, ++ 0x61a8, 0x7854, 0xa001, 0xa001, 0xd08c, 0x1110, 0x8319, 0x1dc8, ++ 0x7827, 0x0048, 0x7850, 0x9085, 0x0400, 0x7852, 0x7843, 0x0040, ++ 0x2019, 0x01f4, 0xa001, 0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, ++ 0x080c, 0x2b14, 0x7827, 0x0020, 0x7843, 0x0000, 0x9006, 0x080c, ++ 0x2b14, 0x7827, 0x0048, 0x00fe, 0x0005, 0x7884, 0xd0ac, 0x11c8, ++ 0x00f6, 0x00e6, 0x2071, 0x1a33, 0x2079, 0x0320, 0x2001, 0x0201, ++ 0x2004, 0x9005, 0x0160, 0x7000, 0x9086, 0x0000, 0x1140, 0x0051, ++ 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, 0x782b, 0x0019, 0x00ee, ++ 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, ++ 0x0070, 0x0178, 0x2009, 0x0032, 0x260a, 0x2009, 0x0033, 0x250a, ++ 0xd0b4, 0x0108, 0x8c60, 0xd0ac, 0x0108, 0x8d68, 0xd0a4, 0x0108, ++ 0x8b58, 0x0005, 0x00f6, 0x2079, 0x0200, 0x781c, 0xd084, 0x0110, ++ 0x7837, 0x0050, 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0100, 0x2001, ++ 0x197b, 0x2004, 0x70e2, 0x080c, 0x3a7c, 0x1188, 0x2001, 0x181f, ++ 0x2004, 0x2009, 0x181e, 0x210c, 0x918c, 0x00ff, 0x706e, 0x716a, ++ 0x7066, 0x918d, 0x3200, 0x7162, 0x7073, 0xe109, 0x0080, 0x702c, ++ 0x9085, 0x0002, 0x702e, 0x2009, 0x1817, 0x210c, 0x716e, 0x7063, ++ 0x0100, 0x7166, 0x719e, 0x706b, 0x0000, 0x7073, 0x0809, 0x7077, ++ 0x0008, 0x7078, 0x9080, 0x0100, 0x707a, 0x7080, 0x8000, 0x7082, ++ 0x7087, 0xaaaa, 0x9006, 0x708a, 0x708e, 0x707e, 0x70d6, 0x70ab, ++ 0x0036, 0x70af, 0x95d5, 0x7014, 0x9084, 0x1984, 0x9085, 0x0092, ++ 0x7016, 0x080c, 0x3ed3, 0x00f6, 0x2071, 0x1a33, 0x2079, 0x0320, ++ 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0120, 0x689c, 0x780e, ++ 0x6898, 0x780a, 0x00de, 0x2009, 0x03e8, 0x8109, 0x1df0, 0x792c, ++ 0xd1fc, 0x0110, 0x782b, 0x0004, 0x2011, 0x0011, 0x080c, 0x3e5f, ++ 0x2011, 0x0001, 0x080c, 0x3e5f, 0x00fe, 0x00ee, 0x0005, 0x00f6, ++ 0x00e6, 0x2071, 0x1a33, 0x2079, 0x0320, 0x792c, 0xd1fc, 0x0904, ++ 0x3e5c, 0x782b, 0x0002, 0x9026, 0xd19c, 0x1904, 0x3e58, 0x7000, ++ 0x0002, 0x3e5c, 0x3e0d, 0x3e3d, 0x3e58, 0xd1bc, 0x1170, 0xd1dc, ++ 0x1190, 0x8001, 0x7002, 0x2011, 0x0001, 0x080c, 0x3e5f, 0x0904, ++ 0x3e5c, 0x080c, 0x3e5f, 0x0804, 0x3e5c, 0x00f6, 0x2079, 0x0300, ++ 0x78bf, 0x0000, 0x00fe, 0x7810, 0x7914, 0x782b, 0x0004, 0x7812, ++ 0x7916, 0x2001, 0x0201, 0x200c, 0x81ff, 0x0de8, 0x080c, 0x3d6a, ++ 0x2009, 0x0001, 0x00f6, 0x2079, 0x0300, 0x78b8, 0x00fe, 0xd0ec, ++ 0x0110, 0x2009, 0x0011, 0x792a, 0x00f8, 0x8001, 0x7002, 0x9184, ++ 0x0880, 0x1140, 0x782c, 0xd0fc, 0x1904, 0x3e01, 0x2011, 0x0001, ++ 0x00b1, 0x0090, 0xa010, 0x9092, 0x0004, 0x9086, 0x0015, 0x1120, ++ 0xa000, 0xa05a, 0x2011, 0x0031, 0xa212, 0xd1dc, 0x1960, 0x0828, ++ 0x782b, 0x0004, 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, 0xa014, ++ 0x9005, 0x0550, 0x8001, 0x0036, 0x0096, 0xa016, 0xa058, 0x2048, ++ 0xa010, 0x2009, 0x0031, 0x911a, 0x831c, 0x831c, 0x938a, 0x0007, ++ 0x1a0c, 0x0db4, 0x9398, 0x3e8d, 0x231d, 0x083f, 0x9080, 0x0004, ++ 0x7a2a, 0x7100, 0x8108, 0x7102, 0x009e, 0x003e, 0x908a, 0x0035, ++ 0x1140, 0x0096, 0xa058, 0x2048, 0xa804, 0xa05a, 0x2001, 0x0019, ++ 0x009e, 0xa012, 0x9085, 0x0001, 0x0005, 0x3eca, 0x3ec1, 0x3eb8, ++ 0x3eaf, 0x3ea6, 0x3e9d, 0x3e94, 0xa964, 0x7902, 0xa968, 0x7906, ++ 0xa96c, 0x7912, 0xa970, 0x7916, 0x0005, 0xa974, 0x7902, 0xa978, ++ 0x7906, 0xa97c, 0x7912, 0xa980, 0x7916, 0x0005, 0xa984, 0x7902, ++ 0xa988, 0x7906, 0xa98c, 0x7912, 0xa990, 0x7916, 0x0005, 0xa994, ++ 0x7902, 0xa998, 0x7906, 0xa99c, 0x7912, 0xa9a0, 0x7916, 0x0005, ++ 0xa9a4, 0x7902, 0xa9a8, 0x7906, 0xa9ac, 0x7912, 0xa9b0, 0x7916, ++ 0x0005, 0xa9b4, 0x7902, 0xa9b8, 0x7906, 0xa9bc, 0x7912, 0xa9c0, ++ 0x7916, 0x0005, 0xa9c4, 0x7902, 0xa9c8, 0x7906, 0xa9cc, 0x7912, ++ 0xa9d0, 0x7916, 0x0005, 0x00f6, 0x00e6, 0x0086, 0x2071, 0x1a36, ++ 0x2079, 0x0090, 0x792c, 0xd1fc, 0x01e8, 0x782b, 0x0002, 0x2940, ++ 0x9026, 0x7000, 0x0002, 0x3efa, 0x3ee6, 0x3ef1, 0x8001, 0x7002, ++ 0xd19c, 0x1180, 0x2011, 0x0001, 0x080c, 0x3e5f, 0x190c, 0x3e5f, ++ 0x0048, 0x8001, 0x7002, 0x782c, 0xd0fc, 0x1d38, 0x2011, 0x0001, ++ 0x080c, 0x3e5f, 0x008e, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, ++ 0x00c6, 0x0086, 0x2061, 0x0200, 0x2001, 0x197b, 0x2004, 0x601a, ++ 0x2061, 0x0100, 0x2001, 0x197a, 0x2004, 0x60ce, 0x6104, 0xc1ac, ++ 0x6106, 0x2001, 0x002c, 0x2004, 0x9005, 0x0520, 0x2038, 0x2001, ++ 0x002e, 0x2024, 0x2001, 0x002f, 0x201c, 0x080c, 0x4879, 0xa813, ++ 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, 0x0220, 0x2138, ++ 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, 0xa858, 0x2048, ++ 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, 0x3f76, 0x1d68, 0x2900, ++ 0xa85a, 0x00d0, 0x080c, 0x4879, 0xa813, 0x0019, 0xa817, 0x0001, ++ 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, ++ 0x2004, 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, ++ 0x2001, 0x002b, 0x2004, 0xa872, 0x2061, 0x0090, 0x2079, 0x0100, ++ 0x2001, 0x197a, 0x2004, 0x6036, 0x2009, 0x0040, 0x080c, 0x2268, ++ 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, 0x2001, ++ 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x9006, 0x600a, ++ 0x600e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, 0x2071, ++ 0x0080, 0xaa60, 0x22e8, 0x20a0, 0x20e1, 0x0000, 0x2099, 0x0088, ++ 0x702b, 0x0026, 0x7402, 0x7306, 0x9006, 0x700a, 0x700e, 0x810b, ++ 0x810b, 0x21a8, 0x810b, 0x7112, 0x702b, 0x0041, 0x702c, 0xd0fc, ++ 0x0de8, 0x702b, 0x0002, 0x702b, 0x0040, 0x4005, 0x7400, 0x7304, ++ 0x87ff, 0x0190, 0x0086, 0x0096, 0x2940, 0x0086, 0x080c, 0x4879, ++ 0x008e, 0xa058, 0x00a6, 0x2050, 0x2900, 0xb006, 0xa05a, 0x00ae, ++ 0x009e, 0x008e, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, 0x2001, ++ 0x002d, 0x2004, 0x9005, 0x0528, 0x2038, 0x2001, 0x0030, 0x2024, ++ 0x2001, 0x0031, 0x201c, 0x080c, 0x4879, 0x2940, 0xa813, 0x0019, ++ 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, 0x0220, 0x2138, 0x2009, ++ 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, 0xa858, 0x2048, 0xa85c, ++ 0x9080, 0x0019, 0x009e, 0x080c, 0x3f76, 0x1d68, 0x2900, 0xa85a, ++ 0x00d8, 0x080c, 0x4879, 0x2940, 0xa013, 0x0019, 0xa017, 0x0001, ++ 0x2800, 0xa05a, 0x2001, 0x0030, 0x2004, 0xa066, 0x2001, 0x0031, ++ 0x2004, 0xa06a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa06e, ++ 0x2001, 0x002b, 0x2004, 0xa072, 0x2001, 0x032a, 0x2003, 0x0004, ++ 0x7884, 0xd0ac, 0x1180, 0x2001, 0x0101, 0x200c, 0x918d, 0x0200, ++ 0x2102, 0xa017, 0x0000, 0x2001, 0x1a33, 0x2003, 0x0003, 0x2001, ++ 0x032a, 0x2003, 0x0009, 0x2001, 0x0300, 0x2003, 0x0000, 0x2001, ++ 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, 0x918d, 0x0002, ++ 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0013, ++ 0x20a1, 0x1840, 0x20e9, 0x0001, 0x9006, 0x4004, 0x2009, 0x013c, ++ 0x200a, 0x012e, 0x7880, 0x9086, 0x0052, 0x0108, 0x0005, 0x0804, ++ 0x3337, 0x7d98, 0x7c9c, 0x0804, 0x342e, 0x080c, 0x6fb2, 0x190c, ++ 0x5c96, 0x2069, 0x1853, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, ++ 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x080c, 0x48c2, 0x701f, 0x4049, ++ 0x0005, 0x080c, 0x5395, 0x1130, 0x3b00, 0x3a08, 0xc194, 0xc095, ++ 0x20d8, 0x21d0, 0x2069, 0x1853, 0x6800, 0x9005, 0x0904, 0x336c, ++ 0x6804, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138, 0x6200, ++ 0x9292, 0x0005, 0x0218, 0x918c, 0xffdf, 0x0010, 0x918d, 0x0020, ++ 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0118, ++ 0x918d, 0x0010, 0x0010, 0x918c, 0xffef, 0x6106, 0x00ce, 0xd084, ++ 0x0158, 0x6a28, 0x928a, 0x007f, 0x1a04, 0x336c, 0x9288, 0x3138, ++ 0x210d, 0x918c, 0x00ff, 0x6162, 0xd0dc, 0x0130, 0x6828, 0x908a, ++ 0x007f, 0x1a04, 0x336c, 0x605a, 0x6888, 0x9084, 0x0030, 0x8004, ++ 0x8004, 0x8004, 0x8004, 0x0006, 0x2009, 0x1982, 0x9080, 0x279f, ++ 0x2005, 0x200a, 0x000e, 0x2009, 0x1983, 0x9080, 0x27a3, 0x2005, ++ 0x200a, 0x6808, 0x908a, 0x0100, 0x0a04, 0x336c, 0x908a, 0x0841, ++ 0x1a04, 0x336c, 0x9084, 0x0007, 0x1904, 0x336c, 0x680c, 0x9005, ++ 0x0904, 0x336c, 0x6810, 0x9005, 0x0904, 0x336c, 0x6848, 0x6940, ++ 0x910a, 0x1a04, 0x336c, 0x8001, 0x0904, 0x336c, 0x684c, 0x6944, ++ 0x910a, 0x1a04, 0x336c, 0x8001, 0x0904, 0x336c, 0x2009, 0x1952, ++ 0x200b, 0x0000, 0x2001, 0x1875, 0x2004, 0xd0c4, 0x0140, 0x7884, ++ 0x200a, 0x2009, 0x017f, 0x200a, 0x3b00, 0xc085, 0x20d8, 0x6814, ++ 0x908c, 0x00ff, 0x614a, 0x8007, 0x9084, 0x00ff, 0x604e, 0x080c, ++ 0x72c7, 0x080c, 0x662f, 0x080c, 0x6664, 0x6808, 0x602a, 0x080c, ++ 0x21da, 0x2009, 0x0170, 0x200b, 0x0080, 0xa001, 0xa001, 0x200b, ++ 0x0000, 0x0036, 0x6b08, 0x080c, 0x2706, 0x003e, 0x6000, 0x9086, ++ 0x0000, 0x1904, 0x41c6, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, ++ 0x810f, 0x8217, 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, ++ 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, ++ 0x8217, 0x831f, 0x0010, 0x9084, 0xf0ff, 0x6006, 0x610a, 0x620e, ++ 0x6312, 0x8007, 0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, 0x20a1, ++ 0x1984, 0x20e9, 0x0001, 0x4001, 0x20a9, 0x0004, 0x20a1, 0x199e, ++ 0x20e9, 0x0001, 0x4001, 0x080c, 0x8141, 0x00c6, 0x900e, 0x20a9, ++ 0x0001, 0x6b70, 0xd384, 0x0510, 0x0068, 0x2009, 0x0100, 0x210c, ++ 0x918e, 0x0008, 0x1110, 0x839d, 0x0010, 0x83f5, 0x3e18, 0x12b0, ++ 0x3508, 0x8109, 0x080c, 0x7892, 0x6878, 0x6016, 0x6874, 0x2008, ++ 0x9084, 0xff00, 0x8007, 0x600a, 0x9184, 0x00ff, 0x6006, 0x8108, ++ 0x1118, 0x6003, 0x0003, 0x0010, 0x6003, 0x0001, 0x1f04, 0x4135, ++ 0x00ce, 0x00c6, 0x2061, 0x196d, 0x2063, 0x0001, 0x9006, 0x080c, ++ 0x29ad, 0x9006, 0x080c, 0x2990, 0x0000, 0x00ce, 0x00e6, 0x2c70, ++ 0x080c, 0x0e80, 0x00ee, 0x6888, 0xd0ec, 0x0130, 0x2011, 0x0114, ++ 0x2204, 0x9085, 0x0100, 0x2012, 0x6a80, 0x9284, 0x0030, 0x9086, ++ 0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, 0x6a82, 0x2001, ++ 0x194d, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, 0x0170, 0x928e, ++ 0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c, ++ 0x277b, 0x2001, 0x193e, 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061, ++ 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x6fb2, ++ 0x0128, 0x080c, 0x4c92, 0x0110, 0x080c, 0x26cc, 0x60d0, 0x9005, ++ 0x01c0, 0x6003, 0x0001, 0x2009, 0x41ae, 0x00d0, 0x080c, 0x6fb2, ++ 0x1168, 0x2011, 0x6e33, 0x080c, 0x8038, 0x2011, 0x6e26, 0x080c, ++ 0x810c, 0x080c, 0x729b, 0x080c, 0x6ee4, 0x0040, 0x080c, 0x5b90, ++ 0x0028, 0x6003, 0x0004, 0x2009, 0x41c6, 0x0010, 0x0804, 0x3337, ++ 0x2001, 0x0170, 0x2004, 0x9084, 0x00ff, 0x9086, 0x004c, 0x1118, ++ 0x2091, 0x30bd, 0x0817, 0x2091, 0x303d, 0x0817, 0x6000, 0x9086, ++ 0x0000, 0x0904, 0x3369, 0x2069, 0x1853, 0x7890, 0x6842, 0x7894, ++ 0x6846, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0x2039, 0x0001, 0x0804, 0x48c5, 0x9006, 0x080c, 0x26cc, 0x81ff, ++ 0x1904, 0x3369, 0x080c, 0x6fb2, 0x11b0, 0x080c, 0x7296, 0x080c, ++ 0x5cd1, 0x080c, 0x3133, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c, ++ 0xc212, 0x0130, 0x080c, 0x6fd5, 0x1118, 0x080c, 0x6f8a, 0x0038, ++ 0x080c, 0x6ee4, 0x0020, 0x080c, 0x5c96, 0x080c, 0x5b90, 0x0804, ++ 0x3337, 0x81ff, 0x1904, 0x3369, 0x080c, 0x6fb2, 0x1110, 0x0804, ++ 0x3369, 0x6190, 0x81ff, 0x01a8, 0x704f, 0x0000, 0x2001, 0x1c80, ++ 0x2009, 0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, ++ 0x8000, 0x2039, 0x0001, 0x080c, 0x48c5, 0x701f, 0x3335, 0x012e, ++ 0x0005, 0x704f, 0x0001, 0x00d6, 0x2069, 0x1c80, 0x20a9, 0x0040, ++ 0x20e9, 0x0001, 0x20a1, 0x1c80, 0x2019, 0xffff, 0x4304, 0x6558, ++ 0x9588, 0x3138, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, ++ 0x0002, 0x2100, 0x9506, 0x01a8, 0x080c, 0x623e, 0x1190, 0xb814, ++ 0x821c, 0x0238, 0x9398, 0x1c80, 0x9085, 0xff00, 0x8007, 0x201a, ++ 0x0038, 0x9398, 0x1c80, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, ++ 0x8210, 0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, ++ 0x2d0c, 0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1c80, ++ 0x2099, 0x1c80, 0x080c, 0x5c21, 0x0804, 0x421e, 0x080c, 0x48ac, ++ 0x0904, 0x336c, 0x080c, 0x4879, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x3369, 0x080c, 0x5386, 0xd0b4, 0x0558, 0x7884, 0x908e, 0x007e, ++ 0x0538, 0x908e, 0x007f, 0x0520, 0x908e, 0x0080, 0x0508, 0x080c, ++ 0x312e, 0x1148, 0xb800, 0xd08c, 0x11d8, 0xb804, 0x9084, 0x00ff, ++ 0x9086, 0x0006, 0x11a8, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, ++ 0x080c, 0xbce0, 0x1120, 0x2009, 0x0003, 0x0804, 0x3369, 0x7007, ++ 0x0003, 0x701f, 0x42ac, 0x0005, 0x080c, 0x48ac, 0x0904, 0x336c, ++ 0x20a9, 0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860, 0x20e8, ++ 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, ++ 0x0006, 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, ++ 0x080c, 0x0f68, 0x0070, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x000a, ++ 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, ++ 0x0f68, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0002, 0x2009, 0x002b, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0x0804, 0x48c5, 0x81ff, 0x1904, 0x3369, 0x080c, 0x4890, 0x0904, ++ 0x336c, 0x080c, 0x63b0, 0x0904, 0x3369, 0x0058, 0xa878, 0x9005, ++ 0x0120, 0x2009, 0x0004, 0x0804, 0x3369, 0xa974, 0xaa94, 0x0804, ++ 0x3337, 0x080c, 0x538e, 0x0904, 0x3337, 0x701f, 0x42f6, 0x7007, ++ 0x0003, 0x0005, 0x81ff, 0x1904, 0x3369, 0x7888, 0x908a, 0x1000, ++ 0x1a04, 0x336c, 0x080c, 0x48ac, 0x0904, 0x336c, 0x080c, 0x6562, ++ 0x0120, 0x080c, 0x656a, 0x1904, 0x336c, 0x080c, 0x6435, 0x0904, ++ 0x3369, 0x2019, 0x0004, 0x900e, 0x080c, 0x63c2, 0x0904, 0x3369, ++ 0x7984, 0x7a88, 0x04c9, 0x08a8, 0xa89c, 0x908a, 0x1000, 0x12f8, ++ 0x080c, 0x48aa, 0x01e0, 0x080c, 0x6562, 0x0118, 0x080c, 0x656a, ++ 0x11b0, 0x080c, 0x6435, 0x2009, 0x0002, 0x0168, 0x2009, 0x0002, ++ 0x2019, 0x0004, 0x080c, 0x63c2, 0x2009, 0x0003, 0x0120, 0xa998, ++ 0xaa9c, 0x00d1, 0x0060, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, ++ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, ++ 0x4000, 0x080c, 0x538e, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0000, 0x0005, 0x9186, 0x00ff, 0x0110, 0x0071, ++ 0x0060, 0x2029, 0x007e, 0x2061, 0x1800, 0x6458, 0x2400, 0x9506, ++ 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x623e, ++ 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x8046, ++ 0x0005, 0x81ff, 0x1904, 0x3369, 0x798c, 0x2001, 0x1951, 0x918c, ++ 0x8000, 0x2102, 0x080c, 0x4890, 0x0904, 0x336c, 0x080c, 0x6562, ++ 0x0120, 0x080c, 0x656a, 0x1904, 0x336c, 0x080c, 0x6305, 0x0904, ++ 0x3369, 0x080c, 0x63b9, 0x0904, 0x3369, 0x2001, 0x1951, 0x2004, ++ 0xd0fc, 0x1904, 0x3337, 0x0804, 0x4301, 0xa9a0, 0x2001, 0x1951, ++ 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, 0x489d, 0x01a0, 0x080c, ++ 0x6562, 0x0118, 0x080c, 0x656a, 0x1170, 0x080c, 0x6305, 0x2009, ++ 0x0002, 0x0128, 0x080c, 0x63b9, 0x1170, 0x2009, 0x0003, 0xa897, ++ 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, 0x1951, 0x2004, ++ 0xd0fc, 0x1128, 0x080c, 0x538e, 0x0110, 0x9006, 0x0018, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x81ff, 0x1904, 0x3369, ++ 0x798c, 0x2001, 0x1950, 0x918c, 0x8000, 0x2102, 0x080c, 0x4890, ++ 0x0904, 0x336c, 0x080c, 0x6562, 0x0120, 0x080c, 0x656a, 0x1904, ++ 0x336c, 0x080c, 0x6305, 0x0904, 0x3369, 0x080c, 0x63a7, 0x0904, ++ 0x3369, 0x2001, 0x1950, 0x2004, 0xd0fc, 0x1904, 0x3337, 0x0804, ++ 0x4301, 0xa9a0, 0x2001, 0x1950, 0x918c, 0x8000, 0xc18d, 0x2102, ++ 0x080c, 0x489d, 0x01a0, 0x080c, 0x6562, 0x0118, 0x080c, 0x656a, ++ 0x1170, 0x080c, 0x6305, 0x2009, 0x0002, 0x0128, 0x080c, 0x63a7, ++ 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, ++ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, ++ 0x4000, 0x2001, 0x1950, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x538e, ++ 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, ++ 0x0005, 0x6100, 0x0804, 0x3337, 0x080c, 0x48ac, 0x0904, 0x336c, ++ 0x080c, 0x539a, 0x1904, 0x3369, 0x79a8, 0xd184, 0x1158, 0xb834, ++ 0x8007, 0x789e, 0xb830, 0x8007, 0x789a, 0xbb2c, 0x831f, 0xba28, ++ 0x8217, 0x0050, 0xb824, 0x8007, 0x789e, 0xb820, 0x8007, 0x789a, ++ 0xbb1c, 0x831f, 0xba18, 0x8217, 0xb900, 0x918c, 0x0200, 0x0804, ++ 0x3337, 0x78a8, 0x909c, 0x0003, 0xd0b4, 0x1148, 0x939a, 0x0003, ++ 0x1a04, 0x3369, 0x6258, 0x7884, 0x9206, 0x1904, 0x44b1, 0x2031, ++ 0x1848, 0x2009, 0x013c, 0x2136, 0x2001, 0x1840, 0x2009, 0x000c, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x0006, 0x78a8, ++ 0x9084, 0x0080, 0x11c8, 0x0006, 0x0036, 0x2001, 0x1a4f, 0x201c, ++ 0x7b9a, 0x2003, 0x0000, 0x2001, 0x1a50, 0x201c, 0x7b9e, 0x2003, ++ 0x0000, 0x2001, 0x1a51, 0x201c, 0x7ba2, 0x2003, 0x0000, 0x003e, ++ 0x000e, 0x000e, 0x0804, 0x48c5, 0x000e, 0x2031, 0x0000, 0x2061, ++ 0x18ae, 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, ++ 0xa496, 0xa59a, 0x080c, 0x10d5, 0x7007, 0x0002, 0x701f, 0x44d1, ++ 0x0005, 0x81ff, 0x1904, 0x3369, 0x080c, 0x48ac, 0x0904, 0x336c, ++ 0x080c, 0x6562, 0x1904, 0x3369, 0x00c6, 0x080c, 0x4879, 0x00ce, ++ 0x0904, 0x3369, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x7ea8, ++ 0x080c, 0xbc86, 0x0904, 0x3369, 0x7007, 0x0003, 0x701f, 0x44eb, ++ 0x0005, 0x080c, 0x401b, 0x0006, 0x0036, 0x2001, 0x1a4f, 0x201c, ++ 0x7b9a, 0x2003, 0x0000, 0x2001, 0x1a50, 0x201c, 0x7b9e, 0x2003, ++ 0x0000, 0x2001, 0x1a51, 0x201c, 0x7ba2, 0x2003, 0x0000, 0x003e, ++ 0x000e, 0x0804, 0x3337, 0xa830, 0x9086, 0x0100, 0x0904, 0x3369, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, ++ 0x48c5, 0x9006, 0x080c, 0x26cc, 0x78a8, 0x9084, 0x00ff, 0x9086, ++ 0x00ff, 0x0118, 0x81ff, 0x1904, 0x3369, 0x080c, 0x6fb2, 0x0110, ++ 0x080c, 0x5c96, 0x7888, 0x908a, 0x1000, 0x1a04, 0x336c, 0x7984, ++ 0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x336c, 0x2100, ++ 0x080c, 0x2696, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061, ++ 0x19cb, 0x601b, 0x0000, 0x601f, 0x0000, 0x6073, 0x0000, 0x6077, ++ 0x0000, 0x080c, 0x6fb2, 0x1158, 0x080c, 0x7296, 0x080c, 0x5cd1, ++ 0x9085, 0x0001, 0x080c, 0x6ff9, 0x080c, 0x6ee4, 0x00d0, 0x080c, ++ 0x9db8, 0x2061, 0x0100, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, ++ 0x810f, 0x9105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, ++ 0x196a, 0x200b, 0x0000, 0x2009, 0x002d, 0x2011, 0x5bbc, 0x080c, ++ 0x80ca, 0x7984, 0x080c, 0x6fb2, 0x1110, 0x2009, 0x00ff, 0x7a88, ++ 0x080c, 0x4364, 0x012e, 0x00ce, 0x002e, 0x0804, 0x3337, 0x7984, ++ 0x080c, 0x61de, 0x2b08, 0x1904, 0x336c, 0x0804, 0x3337, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x3369, 0x60d8, 0xd0ac, 0x1130, ++ 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x3369, 0x080c, 0x4879, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, 0x7984, 0x9192, 0x0021, ++ 0x1a04, 0x336c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, ++ 0x0019, 0x702a, 0xaf60, 0x7736, 0x080c, 0x48c2, 0x701f, 0x459f, ++ 0x7880, 0x9086, 0x006e, 0x0110, 0x701f, 0x4e44, 0x0005, 0x2009, ++ 0x0080, 0x080c, 0x623e, 0x1118, 0x080c, 0x6562, 0x0120, 0x2021, ++ 0x400a, 0x0804, 0x3339, 0x00d6, 0x0096, 0xa964, 0xaa6c, 0xab70, ++ 0xac74, 0xad78, 0xae7c, 0xa884, 0x90be, 0x0100, 0x0904, 0x4638, ++ 0x90be, 0x0112, 0x0904, 0x4638, 0x90be, 0x0113, 0x0904, 0x4638, ++ 0x90be, 0x0114, 0x0904, 0x4638, 0x90be, 0x0117, 0x0904, 0x4638, ++ 0x90be, 0x011a, 0x0904, 0x4638, 0x90be, 0x011c, 0x0904, 0x4638, ++ 0x90be, 0x0121, 0x0904, 0x461f, 0x90be, 0x0131, 0x0904, 0x461f, ++ 0x90be, 0x0171, 0x0904, 0x4638, 0x90be, 0x0173, 0x0904, 0x4638, ++ 0x90be, 0x01a1, 0x1128, 0xa894, 0x8007, 0xa896, 0x0804, 0x4643, ++ 0x90be, 0x0212, 0x0904, 0x462c, 0x90be, 0x0213, 0x05e8, 0x90be, ++ 0x0214, 0x0500, 0x90be, 0x0217, 0x0188, 0x90be, 0x021a, 0x1120, ++ 0xa89c, 0x8007, 0xa89e, 0x04e0, 0x90be, 0x021f, 0x05c8, 0x90be, ++ 0x0300, 0x05b0, 0x009e, 0x00de, 0x0804, 0x336c, 0x7028, 0x9080, ++ 0x0010, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0007, ++ 0x080c, 0x4681, 0x7028, 0x9080, 0x000e, 0x2098, 0x20a0, 0x7034, ++ 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x4681, 0x00c8, 0x7028, ++ 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, ++ 0x0001, 0x080c, 0x468e, 0x00b8, 0x7028, 0x9080, 0x000e, 0x2098, ++ 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x468e, ++ 0x7028, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, ++ 0x20a9, 0x0001, 0x04f1, 0x00c6, 0x080c, 0x4879, 0x0550, 0xa868, ++ 0xc0fd, 0xa86a, 0xa867, 0x0119, 0x9006, 0xa882, 0xa87f, 0x0020, ++ 0xa88b, 0x0001, 0x810b, 0xa9ae, 0xa8b2, 0xaab6, 0xabba, 0xacbe, ++ 0xadc2, 0xa9c6, 0xa8ca, 0x00ce, 0x009e, 0x00de, 0xa866, 0xa822, ++ 0xa868, 0xc0fd, 0xa86a, 0xa804, 0x2048, 0x080c, 0xbca1, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x3369, 0x7007, 0x0003, 0x701f, 0x4678, ++ 0x0005, 0x00ce, 0x009e, 0x00de, 0x2009, 0x0002, 0x0804, 0x3369, ++ 0xa820, 0x9086, 0x8001, 0x1904, 0x3337, 0x2009, 0x0004, 0x0804, ++ 0x3369, 0x0016, 0x0026, 0x3510, 0x20a9, 0x0002, 0x4002, 0x4104, ++ 0x4004, 0x8211, 0x1dc8, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, ++ 0x0036, 0x0046, 0x3520, 0x20a9, 0x0004, 0x4002, 0x4304, 0x4204, ++ 0x4104, 0x4004, 0x8421, 0x1db8, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3369, 0x60d8, ++ 0xd0ac, 0x1160, 0xd09c, 0x0120, 0x2009, 0x0016, 0x0804, 0x3369, ++ 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x3369, 0x7984, 0x78a8, ++ 0x2040, 0x080c, 0x9db1, 0x1120, 0x9182, 0x007f, 0x0a04, 0x336c, ++ 0x9186, 0x00ff, 0x0904, 0x336c, 0x9182, 0x0800, 0x1a04, 0x336c, ++ 0x7a8c, 0x7b88, 0x6078, 0x9306, 0x1140, 0x607c, 0x924e, 0x0904, ++ 0x336c, 0x99cc, 0xff00, 0x0904, 0x336c, 0x0126, 0x2091, 0x8000, ++ 0x0026, 0x2011, 0x8008, 0x080c, 0x6586, 0x002e, 0x0140, 0x918d, ++ 0x8000, 0x080c, 0x65d0, 0x1118, 0x2001, 0x4009, 0x0458, 0x080c, ++ 0x4793, 0x0560, 0x90c6, 0x4000, 0x1170, 0x00c6, 0x0006, 0x900e, ++ 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x000e, 0x00ce, 0x00b8, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0090, ++ 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0060, 0x90c6, 0x4009, ++ 0x1108, 0x0040, 0x90c6, 0x4006, 0x1108, 0x0020, 0x2001, 0x4005, ++ 0x2009, 0x000a, 0x2020, 0x012e, 0x0804, 0x3339, 0x2b00, 0x7026, ++ 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x9e7f, 0x0904, ++ 0x4760, 0x2b00, 0x6012, 0x080c, 0xbf8c, 0x2e58, 0x00ee, 0x00e6, ++ 0x00c6, 0x080c, 0x4879, 0x00ce, 0x2b70, 0x1158, 0x080c, 0x9e32, ++ 0x00ee, 0x00ce, 0x00be, 0x001e, 0x012e, 0x2009, 0x0002, 0x0804, ++ 0x3369, 0x900e, 0xa966, 0xa96a, 0x2900, 0x6016, 0xa932, 0xa868, ++ 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0xa86a, 0x080c, 0x2fda, 0x6023, ++ 0x0001, 0x9006, 0x080c, 0x617b, 0x2001, 0x0002, 0x080c, 0x618f, ++ 0x2009, 0x0002, 0x080c, 0x9eac, 0x78a8, 0xd094, 0x0138, 0x00ee, ++ 0x7024, 0x00e6, 0x2058, 0xb8bc, 0xc08d, 0xb8be, 0x9085, 0x0001, ++ 0x00ee, 0x00ce, 0x00be, 0x001e, 0x012e, 0x1120, 0x2009, 0x0003, ++ 0x0804, 0x3369, 0x7007, 0x0003, 0x701f, 0x476f, 0x0005, 0xa830, ++ 0x2008, 0x918e, 0xdead, 0x1120, 0x2021, 0x4009, 0x0804, 0x3339, ++ 0x9086, 0x0100, 0x7024, 0x2058, 0x1138, 0x2009, 0x0004, 0xba04, ++ 0x9294, 0x00ff, 0x0804, 0x52e3, 0x900e, 0xa868, 0xd0f4, 0x1904, ++ 0x3337, 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, ++ 0xc18d, 0x0804, 0x3337, 0x00e6, 0x00d6, 0x0096, 0x83ff, 0x0904, ++ 0x47db, 0x902e, 0x080c, 0x9db1, 0x0130, 0x9026, 0x20a9, 0x0800, ++ 0x2071, 0x1000, 0x0030, 0x2021, 0x007f, 0x20a9, 0x0781, 0x2071, ++ 0x107f, 0x2e04, 0x9005, 0x11b0, 0x2100, 0x9406, 0x15e8, 0x2428, ++ 0x94ce, 0x007f, 0x1120, 0x92ce, 0xfffd, 0x1528, 0x0030, 0x94ce, ++ 0x0080, 0x1130, 0x92ce, 0xfffc, 0x11f0, 0x93ce, 0x00ff, 0x11d8, ++ 0xc5fd, 0x0450, 0x2058, 0xbf10, 0x2700, 0x9306, 0x11b8, 0xbe14, ++ 0x2600, 0x9206, 0x1198, 0x2400, 0x9106, 0x1150, 0xd884, 0x0568, ++ 0xd894, 0x1558, 0x080c, 0x6562, 0x1540, 0x2001, 0x4000, 0x0430, ++ 0x2001, 0x4007, 0x0418, 0x2001, 0x4006, 0x0400, 0x2400, 0x9106, ++ 0x1158, 0xbe14, 0x87ff, 0x1128, 0x86ff, 0x0948, 0x080c, 0x9db1, ++ 0x1930, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, 0x47a9, ++ 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, 0x0030, ++ 0x080c, 0x61de, 0x1dd0, 0xbb12, 0xba16, 0x9006, 0x9005, 0x009e, ++ 0x00de, 0x00ee, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x3369, 0x080c, 0x4879, 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, ++ 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x7884, 0x9005, 0x0904, ++ 0x336c, 0x9096, 0x00ff, 0x0120, 0x9092, 0x0004, 0x1a04, 0x336c, ++ 0x2010, 0x2918, 0x080c, 0x2f80, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x3369, 0x7007, 0x0003, 0x701f, 0x482e, 0x0005, 0xa830, 0x9086, ++ 0x0100, 0x1904, 0x3337, 0x2009, 0x0004, 0x0804, 0x3369, 0x7984, ++ 0x080c, 0x9db1, 0x1120, 0x9182, 0x007f, 0x0a04, 0x336c, 0x9186, ++ 0x00ff, 0x0904, 0x336c, 0x9182, 0x0800, 0x1a04, 0x336c, 0x2001, ++ 0x9000, 0x080c, 0x533e, 0x1904, 0x3369, 0x0804, 0x3337, 0xa998, ++ 0x080c, 0x9db1, 0x1118, 0x9182, 0x007f, 0x0280, 0x9186, 0x00ff, ++ 0x0168, 0x9182, 0x0800, 0x1250, 0x2001, 0x9000, 0x080c, 0x533e, ++ 0x11a8, 0x0060, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x2009, 0x000a, ++ 0x0c48, 0x080c, 0x0feb, 0x0198, 0x9006, 0xa802, 0x7014, 0x9005, ++ 0x1120, 0x2900, 0x7016, 0x701a, 0x0040, 0x7018, 0xa802, 0x0086, ++ 0x2040, 0x2900, 0xa006, 0x701a, 0x008e, 0x9085, 0x0001, 0x0005, ++ 0x7984, 0x080c, 0x623e, 0x1130, 0x7e88, 0x9684, 0x3fff, 0x9082, ++ 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005, 0xa998, 0x080c, 0x623e, ++ 0x1130, 0xae9c, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, ++ 0x8bff, 0x0005, 0xae98, 0x0008, 0x7e84, 0x2608, 0x080c, 0x623e, ++ 0x1108, 0x0008, 0x905e, 0x8bff, 0x0005, 0x0016, 0x7114, 0x81ff, ++ 0x0128, 0x2148, 0xa904, 0x080c, 0x101d, 0x0cc8, 0x7116, 0x711a, ++ 0x001e, 0x0005, 0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, ++ 0x18ae, 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, ++ 0xa496, 0xa59a, 0x080c, 0x10d5, 0x7007, 0x0002, 0x701f, 0x3337, ++ 0x0005, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, ++ 0x18a6, 0x2004, 0x9005, 0x1190, 0x0e04, 0x48f6, 0x7a36, 0x7833, ++ 0x0012, 0x7a82, 0x7b86, 0x7c8a, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x1187, 0x0804, 0x495c, 0x0016, 0x0086, ++ 0x0096, 0x00c6, 0x00e6, 0x2071, 0x1894, 0x7044, 0x9005, 0x1540, ++ 0x7148, 0x9182, 0x0010, 0x0288, 0x7038, 0x2060, 0x080c, 0x0feb, ++ 0x0904, 0x4954, 0xa84b, 0x0000, 0x2900, 0x7046, 0x2001, 0x0002, ++ 0x9080, 0x1f26, 0x2005, 0xa846, 0x0098, 0x7038, 0x90e0, 0x0004, ++ 0x2001, 0x18b0, 0x9c82, 0x18f0, 0x0210, 0x2061, 0x18b0, 0x2c00, ++ 0x703a, 0x7148, 0x81ff, 0x1108, 0x703e, 0x8108, 0x714a, 0x0460, ++ 0x7148, 0x8108, 0x714a, 0x7044, 0x2040, 0xa144, 0x2105, 0x0016, ++ 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x2060, 0x001e, 0x8108, 0x2105, ++ 0x9005, 0xa146, 0x1520, 0x080c, 0x0feb, 0x1130, 0x8109, 0xa946, ++ 0x7148, 0x8109, 0x714a, 0x00d8, 0x9006, 0xa806, 0xa84a, 0xa046, ++ 0x2800, 0xa802, 0x2900, 0xa006, 0x7046, 0x2001, 0x0002, 0x9080, ++ 0x1f26, 0x2005, 0xa846, 0x0058, 0x2262, 0x6306, 0x640a, 0x00ee, ++ 0x00ce, 0x009e, 0x008e, 0x001e, 0x012e, 0x00fe, 0x0005, 0x2c00, ++ 0x9082, 0x001b, 0x0002, 0x497e, 0x497e, 0x4980, 0x497e, 0x497e, ++ 0x497e, 0x4984, 0x497e, 0x497e, 0x497e, 0x4988, 0x497e, 0x497e, ++ 0x497e, 0x498c, 0x497e, 0x497e, 0x497e, 0x4990, 0x497e, 0x497e, ++ 0x497e, 0x4994, 0x497e, 0x497e, 0x497e, 0x4999, 0x080c, 0x0db4, ++ 0xa276, 0xa37a, 0xa47e, 0x0898, 0xa286, 0xa38a, 0xa48e, 0x0878, ++ 0xa296, 0xa39a, 0xa49e, 0x0858, 0xa2a6, 0xa3aa, 0xa4ae, 0x0838, ++ 0xa2b6, 0xa3ba, 0xa4be, 0x0818, 0xa2c6, 0xa3ca, 0xa4ce, 0x0804, ++ 0x4957, 0xa2d6, 0xa3da, 0xa4de, 0x0804, 0x4957, 0x00e6, 0x2071, ++ 0x1894, 0x7048, 0x9005, 0x0904, 0x4a30, 0x0126, 0x2091, 0x8000, ++ 0x0e04, 0x4a2f, 0x00f6, 0x2079, 0x0000, 0x00c6, 0x0096, 0x0086, ++ 0x0076, 0x9006, 0x2038, 0x7040, 0x2048, 0x9005, 0x0500, 0xa948, ++ 0x2105, 0x0016, 0x908a, 0x0036, 0x1a0c, 0x0db4, 0x2060, 0x001e, ++ 0x8108, 0x2105, 0x9005, 0xa94a, 0x1904, 0x4a32, 0xa804, 0x9005, ++ 0x090c, 0x0db4, 0x7042, 0x2938, 0x2040, 0xa003, 0x0000, 0x2001, ++ 0x0002, 0x9080, 0x1f26, 0x2005, 0xa04a, 0x0804, 0x4a32, 0x703c, ++ 0x2060, 0x2c14, 0x6304, 0x6408, 0x650c, 0x2200, 0x7836, 0x7833, ++ 0x0012, 0x7882, 0x2300, 0x7886, 0x2400, 0x788a, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x87ff, 0x0118, ++ 0x2748, 0x080c, 0x101d, 0x7048, 0x8001, 0x704a, 0x9005, 0x1170, ++ 0x7040, 0x2048, 0x9005, 0x0128, 0x080c, 0x101d, 0x9006, 0x7042, ++ 0x7046, 0x703b, 0x18b0, 0x703f, 0x18b0, 0x0420, 0x7040, 0x9005, ++ 0x1508, 0x7238, 0x2c00, 0x9206, 0x0148, 0x9c80, 0x0004, 0x90fa, ++ 0x18f0, 0x0210, 0x2001, 0x18b0, 0x703e, 0x00a0, 0x9006, 0x703e, ++ 0x703a, 0x7044, 0x9005, 0x090c, 0x0db4, 0x2048, 0xa800, 0x9005, ++ 0x1de0, 0x2900, 0x7042, 0x2001, 0x0002, 0x9080, 0x1f26, 0x2005, ++ 0xa84a, 0x0000, 0x007e, 0x008e, 0x009e, 0x00ce, 0x00fe, 0x012e, ++ 0x00ee, 0x0005, 0x2c00, 0x9082, 0x001b, 0x0002, 0x4a51, 0x4a51, ++ 0x4a53, 0x4a51, 0x4a51, 0x4a51, 0x4a58, 0x4a51, 0x4a51, 0x4a51, ++ 0x4a5d, 0x4a51, 0x4a51, 0x4a51, 0x4a62, 0x4a51, 0x4a51, 0x4a51, ++ 0x4a67, 0x4a51, 0x4a51, 0x4a51, 0x4a6c, 0x4a51, 0x4a51, 0x4a51, ++ 0x4a71, 0x080c, 0x0db4, 0xaa74, 0xab78, 0xac7c, 0x0804, 0x49dd, ++ 0xaa84, 0xab88, 0xac8c, 0x0804, 0x49dd, 0xaa94, 0xab98, 0xac9c, ++ 0x0804, 0x49dd, 0xaaa4, 0xaba8, 0xacac, 0x0804, 0x49dd, 0xaab4, ++ 0xabb8, 0xacbc, 0x0804, 0x49dd, 0xaac4, 0xabc8, 0xaccc, 0x0804, ++ 0x49dd, 0xaad4, 0xabd8, 0xacdc, 0x0804, 0x49dd, 0x0026, 0x080c, ++ 0x5386, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x48d9, 0x002e, ++ 0x0005, 0x81ff, 0x1904, 0x3369, 0x0126, 0x2091, 0x8000, 0x6030, ++ 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x6fb2, 0x1158, 0x080c, ++ 0x7296, 0x080c, 0x5cd1, 0x9085, 0x0001, 0x080c, 0x6ff9, 0x080c, ++ 0x6ee4, 0x0010, 0x080c, 0x5b90, 0x012e, 0x0804, 0x3337, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x3369, 0x080c, 0x539a, 0x0120, ++ 0x2009, 0x0007, 0x0804, 0x3369, 0x080c, 0x655a, 0x0120, 0x2009, ++ 0x0008, 0x0804, 0x3369, 0x0026, 0x2011, 0x0010, 0x080c, 0x6586, ++ 0x002e, 0x0140, 0x7984, 0x080c, 0x65d0, 0x1120, 0x2009, 0x4009, ++ 0x0804, 0x3369, 0x080c, 0x312e, 0x0128, 0x7984, 0x080c, 0x61de, ++ 0x1904, 0x336c, 0x080c, 0x48ac, 0x0904, 0x336c, 0x2b00, 0x7026, ++ 0x080c, 0x6562, 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, 0x900e, ++ 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x0804, 0x3337, 0x080c, 0x4879, 0x0904, 0x3369, 0x9006, 0xa866, ++ 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xbd3a, 0x0904, 0x3369, ++ 0x7888, 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x7007, 0x0003, ++ 0x701f, 0x4b47, 0x0005, 0x2061, 0x1800, 0x080c, 0x539a, 0x2009, ++ 0x0007, 0x1578, 0x080c, 0x655a, 0x0118, 0x2009, 0x0008, 0x0448, ++ 0x080c, 0x312e, 0x0120, 0xa998, 0x080c, 0x61de, 0x1530, 0x080c, ++ 0x48aa, 0x0518, 0x080c, 0x6562, 0xa89c, 0x1168, 0x9084, 0x0005, ++ 0x1150, 0x900e, 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, ++ 0x0108, 0xc18d, 0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, 0xbd3a, ++ 0x11e0, 0xa89c, 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x2009, ++ 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0xa99a, ++ 0x9006, 0x918d, 0x0001, 0x2008, 0x0005, 0x9006, 0x0005, 0xa830, ++ 0x2008, 0x918e, 0xdead, 0x1120, 0x2021, 0x4009, 0x0804, 0x3339, ++ 0x9086, 0x0100, 0x7024, 0x2058, 0x1110, 0x0804, 0x52e3, 0x900e, ++ 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x0804, 0x3337, 0x080c, 0x539a, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x3369, 0x7f84, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, 0x4879, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, 0x900e, 0x2130, 0x7126, ++ 0x7132, 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0005, 0x702a, ++ 0x20a0, 0x080c, 0x623e, 0x1904, 0x4be5, 0x080c, 0x6562, 0x0120, ++ 0x080c, 0x656a, 0x1904, 0x4be5, 0x080c, 0x655a, 0x1130, 0x080c, ++ 0x645e, 0x1118, 0xd79c, 0x0904, 0x4be5, 0xd794, 0x1110, 0xd784, ++ 0x01a8, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x3400, ++ 0xd794, 0x0160, 0x20a9, 0x0008, 0x4003, 0x2098, 0x20a0, 0x3d00, ++ 0x20e0, 0x20a9, 0x0002, 0x080c, 0x468e, 0x0048, 0x20a9, 0x0004, ++ 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x468e, 0x4104, ++ 0xd794, 0x0528, 0xb8b4, 0x20e0, 0xb8b8, 0x2060, 0x9c80, 0x0000, ++ 0x2098, 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, 0x2098, 0x20a9, ++ 0x0001, 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002, ++ 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x4681, 0x9c80, ++ 0x0026, 0x2098, 0xb8b4, 0x20e0, 0x20a9, 0x0002, 0x4003, 0xd794, ++ 0x0110, 0x96b0, 0x000b, 0x96b0, 0x0005, 0x8108, 0x080c, 0x9db1, ++ 0x0118, 0x9186, 0x0800, 0x0040, 0xd78c, 0x0120, 0x9186, 0x0800, ++ 0x0170, 0x0018, 0x9186, 0x007e, 0x0150, 0xd794, 0x0118, 0x9686, ++ 0x0020, 0x0010, 0x9686, 0x0028, 0x0150, 0x0804, 0x4b81, 0x86ff, ++ 0x1120, 0x7124, 0x810b, 0x0804, 0x3337, 0x7033, 0x0001, 0x7122, ++ 0x7024, 0x9600, 0x7026, 0x772e, 0x2061, 0x18ae, 0x2c44, 0xa06b, ++ 0x0000, 0xa67a, 0x7034, 0xa072, 0x7028, 0xa076, 0xa28e, 0xa392, ++ 0xa496, 0xa59a, 0x080c, 0x10d5, 0x7007, 0x0002, 0x701f, 0x4c21, ++ 0x0005, 0x7030, 0x9005, 0x1180, 0x7120, 0x7028, 0x20a0, 0x772c, ++ 0x9036, 0x7034, 0x20e8, 0x2061, 0x18ae, 0x2c44, 0xa28c, 0xa390, ++ 0xa494, 0xa598, 0x0804, 0x4b81, 0x7124, 0x810b, 0x0804, 0x3337, ++ 0x2029, 0x007e, 0x7984, 0x7a88, 0x7b8c, 0x7c98, 0x9184, 0xff00, ++ 0x8007, 0x90e2, 0x0020, 0x0a04, 0x336c, 0x9502, 0x0a04, 0x336c, ++ 0x9184, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x336c, 0x9502, 0x0a04, ++ 0x336c, 0x9284, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x336c, ++ 0x9502, 0x0a04, 0x336c, 0x9284, 0x00ff, 0x90e2, 0x0020, 0x0a04, ++ 0x336c, 0x9502, 0x0a04, 0x336c, 0x9384, 0xff00, 0x8007, 0x90e2, ++ 0x0020, 0x0a04, 0x336c, 0x9502, 0x0a04, 0x336c, 0x9384, 0x00ff, ++ 0x90e2, 0x0020, 0x0a04, 0x336c, 0x9502, 0x0a04, 0x336c, 0x9484, ++ 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x336c, 0x9502, 0x0a04, ++ 0x336c, 0x9484, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x336c, 0x9502, ++ 0x0a04, 0x336c, 0x2061, 0x195a, 0x6102, 0x6206, 0x630a, 0x640e, ++ 0x0804, 0x3337, 0x0006, 0x080c, 0x5386, 0xd0cc, 0x000e, 0x0005, ++ 0x0006, 0x080c, 0x538a, 0xd0bc, 0x000e, 0x0005, 0x6170, 0x7a84, ++ 0x6300, 0x82ff, 0x1118, 0x7986, 0x0804, 0x3337, 0x83ff, 0x1904, ++ 0x336c, 0x2001, 0xfff0, 0x9200, 0x1a04, 0x336c, 0x2019, 0xffff, ++ 0x6074, 0x9302, 0x9200, 0x0a04, 0x336c, 0x7986, 0x6272, 0x0804, ++ 0x3337, 0x080c, 0x539a, 0x1904, 0x3369, 0x7c88, 0x7d84, 0x7e98, ++ 0x7f8c, 0x080c, 0x4879, 0x0904, 0x3369, 0x900e, 0x901e, 0x7326, ++ 0x7332, 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0003, 0x702a, ++ 0x20a0, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6562, ++ 0x0118, 0x080c, 0x656a, 0x1148, 0x20a9, 0x0001, 0xb814, 0x4004, ++ 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, ++ 0x0120, 0x9386, 0x003c, 0x0170, 0x0c20, 0x83ff, 0x1148, 0x7224, ++ 0x900e, 0x2001, 0x0003, 0x080c, 0x8270, 0x2208, 0x0804, 0x3337, ++ 0x7033, 0x0001, 0x7122, 0x7024, 0x9300, 0x7026, 0x2061, 0x18ae, ++ 0x2c44, 0xa06b, 0x0000, 0xa37a, 0x7028, 0xa076, 0x7034, 0xa072, ++ 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, 0x10d5, 0x7007, 0x0002, ++ 0x701f, 0x4d13, 0x0005, 0x7030, 0x9005, 0x1178, 0x7120, 0x7028, ++ 0x20a0, 0x901e, 0x7034, 0x20e8, 0x2061, 0x18ae, 0x2c44, 0xa48c, ++ 0xa590, 0xa694, 0xa798, 0x0804, 0x4cd1, 0x7224, 0x900e, 0x2001, ++ 0x0003, 0x080c, 0x8270, 0x2208, 0x0804, 0x3337, 0x00f6, 0x00e6, ++ 0x080c, 0x539a, 0x2009, 0x0007, 0x1904, 0x4da6, 0x2071, 0x1894, ++ 0x745c, 0x84ff, 0x2009, 0x000e, 0x1904, 0x4da6, 0xac9c, 0xad98, ++ 0xaea4, 0xafa0, 0x0096, 0x080c, 0x1004, 0x2009, 0x0002, 0x0904, ++ 0x4da6, 0x2900, 0x705e, 0x900e, 0x901e, 0x7356, 0x7362, 0xa860, ++ 0x7066, 0xa85c, 0x9080, 0x0003, 0x705a, 0x20a0, 0x91d8, 0x1000, ++ 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6562, 0x0118, 0x080c, 0x656a, ++ 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, 0x4104, ++ 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c, ++ 0x01e8, 0x0c20, 0x83ff, 0x11c0, 0x7254, 0x900e, 0x2001, 0x0003, ++ 0x080c, 0x8270, 0x2208, 0x009e, 0xa897, 0x4000, 0xa99a, 0x715c, ++ 0x81ff, 0x090c, 0x0db4, 0x2148, 0x080c, 0x101d, 0x9006, 0x705e, ++ 0x918d, 0x0001, 0x2008, 0x0418, 0x7063, 0x0001, 0x7152, 0x7054, ++ 0x9300, 0x7056, 0x2061, 0x18af, 0x2c44, 0xa37a, 0x7058, 0xa076, ++ 0x7064, 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0xa09f, 0x4db2, ++ 0x000e, 0xa0a2, 0x080c, 0x10d5, 0x9006, 0x0048, 0x009e, 0xa897, ++ 0x4005, 0xa99a, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ee, ++ 0x00fe, 0x0005, 0x00f6, 0xa0a0, 0x904d, 0x090c, 0x0db4, 0x00e6, ++ 0x2071, 0x1894, 0xa06c, 0x908e, 0x0100, 0x0138, 0xa87b, 0x0030, ++ 0xa883, 0x0000, 0xa897, 0x4002, 0x00d8, 0x7060, 0x9005, 0x1158, ++ 0x7150, 0x7058, 0x20a0, 0x901e, 0x7064, 0x20e8, 0xa48c, 0xa590, ++ 0xa694, 0xa798, 0x0428, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, ++ 0x4000, 0x7254, 0x900e, 0x2001, 0x0003, 0x080c, 0x8270, 0xaa9a, ++ 0x715c, 0x81ff, 0x090c, 0x0db4, 0x2148, 0x080c, 0x101d, 0x705f, ++ 0x0000, 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x688c, ++ 0x012e, 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x00ee, 0x00fe, 0x0005, ++ 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6562, 0x0118, ++ 0x080c, 0x656a, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, ++ 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, ++ 0x9386, 0x003c, 0x0518, 0x0c20, 0x83ff, 0x11f0, 0x7154, 0x810c, ++ 0xa99a, 0xa897, 0x4000, 0x715c, 0x81ff, 0x090c, 0x0db4, 0x2148, ++ 0x080c, 0x101d, 0x9006, 0x705e, 0x918d, 0x0001, 0x2008, 0xa0a0, ++ 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x688c, 0x012e, 0xa09f, ++ 0x0000, 0xa0a3, 0x0000, 0x0070, 0x7063, 0x0001, 0x7152, 0x7054, ++ 0x9300, 0x7056, 0xa37a, 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, ++ 0x10d5, 0x9006, 0x00ee, 0x0005, 0x0096, 0xa88c, 0x90be, 0x7000, ++ 0x0148, 0x90be, 0x7100, 0x0130, 0x90be, 0x7200, 0x0118, 0x009e, ++ 0x0804, 0x336c, 0xa884, 0xa988, 0x080c, 0x2663, 0x1518, 0x080c, ++ 0x61de, 0x1500, 0x7126, 0xbe12, 0xbd16, 0xae7c, 0x080c, 0x4879, ++ 0x01c8, 0x080c, 0x4879, 0x01b0, 0x009e, 0xa867, 0x0000, 0xa868, ++ 0xc0fd, 0xa86a, 0xa823, 0x0000, 0xa804, 0x2048, 0x080c, 0xbcc1, ++ 0x1120, 0x2009, 0x0003, 0x0804, 0x3369, 0x7007, 0x0003, 0x701f, ++ 0x4e7f, 0x0005, 0x009e, 0x2009, 0x0002, 0x0804, 0x3369, 0x7124, ++ 0x080c, 0x30d5, 0xa820, 0x9086, 0x8001, 0x1120, 0x2009, 0x0004, ++ 0x0804, 0x3369, 0x2900, 0x7022, 0xa804, 0x0096, 0x2048, 0x8906, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x009e, 0x9080, ++ 0x0002, 0x0076, 0x0006, 0x2098, 0x20a0, 0x27e0, 0x27e8, 0x20a9, ++ 0x002a, 0x080c, 0x0f68, 0xaa6c, 0xab70, 0xac74, 0xad78, 0x2061, ++ 0x18ae, 0x2c44, 0xa06b, 0x0000, 0xae64, 0xaf8c, 0x97c6, 0x7000, ++ 0x0118, 0x97c6, 0x7100, 0x1148, 0x96c2, 0x0004, 0x0600, 0x2009, ++ 0x0004, 0x000e, 0x007e, 0x0804, 0x48c5, 0x97c6, 0x7200, 0x11b8, ++ 0x96c2, 0x0054, 0x02a0, 0x000e, 0x007e, 0x2061, 0x18ae, 0x2c44, ++ 0xa076, 0xa772, 0xa07b, 0x002a, 0xa28e, 0xa392, 0xa496, 0xa59a, ++ 0x080c, 0x10d5, 0x7007, 0x0002, 0x701f, 0x4edb, 0x0005, 0x000e, ++ 0x007e, 0x0804, 0x336c, 0x7020, 0x2048, 0xa804, 0x2048, 0xa804, ++ 0x2048, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0002, 0x2098, 0x20a0, 0x27e0, 0x27e8, 0x20a9, 0x002a, ++ 0x080c, 0x0f68, 0x2100, 0x2238, 0x2061, 0x18ae, 0x2c44, 0xa28c, ++ 0xa390, 0xa494, 0xa598, 0x2009, 0x002a, 0x0804, 0x48c5, 0x81ff, ++ 0x1904, 0x3369, 0x798c, 0x2001, 0x194f, 0x918c, 0x8000, 0x2102, ++ 0x080c, 0x4890, 0x0904, 0x336c, 0x080c, 0x6562, 0x0120, 0x080c, ++ 0x656a, 0x1904, 0x336c, 0x080c, 0x6305, 0x0904, 0x3369, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x63cb, 0x012e, 0x0904, 0x3369, 0x2001, ++ 0x194f, 0x2004, 0xd0fc, 0x1904, 0x3337, 0x0804, 0x4301, 0xa9a0, ++ 0x2001, 0x194f, 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, 0x489d, ++ 0x01a0, 0x080c, 0x6562, 0x0118, 0x080c, 0x656a, 0x1170, 0x080c, ++ 0x6305, 0x2009, 0x0002, 0x0128, 0x080c, 0x63cb, 0x1170, 0x2009, ++ 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, ++ 0x194f, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x538e, 0x0110, 0x9006, ++ 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x78a8, ++ 0xd08c, 0x1118, 0xd084, 0x0904, 0x4276, 0x080c, 0x48ac, 0x0904, ++ 0x336c, 0x080c, 0x4879, 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, ++ 0x080c, 0x6562, 0x0130, 0x908e, 0x0004, 0x0118, 0x908e, 0x0005, ++ 0x15a0, 0x78a8, 0xd08c, 0x0120, 0xb800, 0xc08c, 0xb802, 0x0028, ++ 0x080c, 0x5386, 0xd0b4, 0x0904, 0x42b0, 0x7884, 0x908e, 0x007e, ++ 0x0904, 0x42b0, 0x908e, 0x007f, 0x0904, 0x42b0, 0x908e, 0x0080, ++ 0x0904, 0x42b0, 0xb800, 0xd08c, 0x1904, 0x42b0, 0xa867, 0x0000, ++ 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xbce0, 0x1120, 0x2009, 0x0003, ++ 0x0804, 0x3369, 0x7007, 0x0003, 0x701f, 0x4fa7, 0x0005, 0x080c, ++ 0x48ac, 0x0904, 0x336c, 0x0804, 0x42b0, 0x080c, 0x312e, 0x0108, ++ 0x0005, 0x2009, 0x1833, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x3369, 0x080c, 0x539a, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x3369, 0x080c, 0x655a, 0x0120, 0x2009, 0x0008, 0x0804, 0x3369, ++ 0xb89c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x42b0, 0x9006, 0xa866, ++ 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xbd3a, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x3369, 0x7007, 0x0003, 0x701f, 0x4fe0, 0x0005, ++ 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x52e3, ++ 0x080c, 0x48ac, 0x0904, 0x336c, 0x0804, 0x4f79, 0x81ff, 0x2009, ++ 0x0001, 0x1904, 0x3369, 0x080c, 0x539a, 0x2009, 0x0007, 0x1904, ++ 0x3369, 0x080c, 0x655a, 0x0120, 0x2009, 0x0008, 0x0804, 0x3369, ++ 0x080c, 0x48ac, 0x0904, 0x336c, 0x080c, 0x6562, 0x2009, 0x0009, ++ 0x1904, 0x3369, 0x080c, 0x4879, 0x2009, 0x0002, 0x0904, 0x3369, ++ 0x9006, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x7988, 0x9194, ++ 0xff00, 0x918c, 0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, 0xa952, ++ 0x798c, 0xa956, 0x0038, 0x928e, 0x0100, 0x1904, 0x336c, 0xc0e5, ++ 0xa952, 0xa956, 0xa83e, 0x080c, 0xbf8d, 0x2009, 0x0003, 0x0904, ++ 0x3369, 0x7007, 0x0003, 0x701f, 0x5036, 0x0005, 0xa830, 0x9086, ++ 0x0100, 0x2009, 0x0004, 0x0904, 0x3369, 0x0804, 0x3337, 0x7aa8, ++ 0x9284, 0xc000, 0x0148, 0xd2ec, 0x01a0, 0x080c, 0x539a, 0x1188, ++ 0x2009, 0x0014, 0x0804, 0x3369, 0xd2dc, 0x1568, 0x81ff, 0x2009, ++ 0x0001, 0x1904, 0x3369, 0x080c, 0x539a, 0x2009, 0x0007, 0x1904, ++ 0x3369, 0xd2f4, 0x0130, 0x9284, 0x5000, 0x080c, 0x5361, 0x0804, ++ 0x3337, 0xd2fc, 0x0158, 0x080c, 0x48ac, 0x0904, 0x336c, 0x7984, ++ 0x9284, 0x9000, 0x080c, 0x533e, 0x0804, 0x3337, 0x080c, 0x48ac, ++ 0x0904, 0x336c, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x2009, ++ 0x0009, 0x1904, 0x511f, 0x080c, 0x4879, 0x2009, 0x0002, 0x0904, ++ 0x511f, 0xa85c, 0x9080, 0x001b, 0xaf60, 0x2009, 0x0008, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x080c, 0x48c2, 0x701f, 0x5090, 0x0005, ++ 0xa86c, 0x9086, 0x0500, 0x1138, 0xa870, 0x9005, 0x1120, 0xa874, ++ 0x9084, 0xff00, 0x0110, 0x1904, 0x336c, 0xa866, 0xa832, 0xa868, ++ 0xc0fd, 0xa86a, 0x080c, 0x48ac, 0x1110, 0x0804, 0x336c, 0x2009, ++ 0x0043, 0x080c, 0xbff5, 0x2009, 0x0003, 0x0904, 0x511f, 0x7007, ++ 0x0003, 0x701f, 0x50b4, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009, ++ 0x0004, 0x0904, 0x511f, 0x7984, 0x7aa8, 0x9284, 0x1000, 0x080c, ++ 0x533e, 0x0804, 0x3337, 0x00c6, 0xaab0, 0x9284, 0xc000, 0x0140, ++ 0xd2ec, 0x0168, 0x080c, 0x539a, 0x1150, 0x2009, 0x0014, 0x04f0, ++ 0x2061, 0x1800, 0x080c, 0x539a, 0x2009, 0x0007, 0x15b8, 0xd2f4, ++ 0x0128, 0x9284, 0x5000, 0x080c, 0x5361, 0x0050, 0xd2fc, 0x0178, ++ 0x080c, 0x48aa, 0x0588, 0xa998, 0x9284, 0x9000, 0x080c, 0x533e, ++ 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0438, 0x080c, ++ 0x48aa, 0x0510, 0x080c, 0x6562, 0x2009, 0x0009, 0x11b8, 0xa8c4, ++ 0x9086, 0x0500, 0x11c8, 0xa8c8, 0x9005, 0x11b0, 0xa8cc, 0x9084, ++ 0xff00, 0x1190, 0x080c, 0x48aa, 0x1108, 0x0070, 0x2009, 0x004b, ++ 0x080c, 0xbff5, 0x2009, 0x0003, 0x0108, 0x0078, 0x0429, 0x19c0, ++ 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0030, 0x00ce, 0x0005, 0x9006, 0x0ce0, 0x7aa8, ++ 0xd2dc, 0x0904, 0x3369, 0x0016, 0x7984, 0x9284, 0x1000, 0xc0fd, ++ 0x080c, 0x533e, 0x001e, 0x1904, 0x3369, 0x0804, 0x3337, 0x00f6, ++ 0x2d78, 0x0011, 0x00fe, 0x0005, 0xaab0, 0xd2dc, 0x0150, 0x0016, ++ 0xa998, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x533e, 0x001e, 0x9085, ++ 0x0001, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3369, ++ 0x080c, 0x539a, 0x0120, 0x2009, 0x0007, 0x0804, 0x3369, 0x7984, ++ 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x623e, 0x1904, 0x336c, 0x9186, ++ 0x007f, 0x0138, 0x080c, 0x6562, 0x0120, 0x2009, 0x0009, 0x0804, ++ 0x3369, 0x080c, 0x4879, 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, ++ 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x2001, 0x0100, 0x8007, ++ 0xa80a, 0x080c, 0xbcfa, 0x1120, 0x2009, 0x0003, 0x0804, 0x3369, ++ 0x7007, 0x0003, 0x701f, 0x517d, 0x0005, 0xa808, 0x8007, 0x9086, ++ 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x3369, 0xa8e0, 0xa866, ++ 0xa810, 0x8007, 0x9084, 0x00ff, 0x800c, 0xa814, 0x8007, 0x9084, ++ 0x00ff, 0x8004, 0x9080, 0x0002, 0x9108, 0x8906, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0004, 0x7a8c, 0x7b88, ++ 0x7c9c, 0x7d98, 0x0804, 0x48c5, 0x080c, 0x4879, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x3369, 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, ++ 0x8217, 0x82ff, 0x1118, 0x7023, 0x1984, 0x0040, 0x92c6, 0x0001, ++ 0x1118, 0x7023, 0x199e, 0x0010, 0x0804, 0x336c, 0x2009, 0x001a, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, ++ 0x080c, 0x48c2, 0x701f, 0x51cd, 0x0005, 0x2001, 0x182d, 0x2003, ++ 0x0001, 0xa85c, 0x9080, 0x0019, 0x2098, 0xa860, 0x20e0, 0x20a9, ++ 0x001a, 0x7020, 0x20a0, 0x20e9, 0x0001, 0x4003, 0x0804, 0x3337, ++ 0x080c, 0x4879, 0x1120, 0x2009, 0x0002, 0x0804, 0x3369, 0x7984, ++ 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, 0x2099, ++ 0x1984, 0x0040, 0x92c6, 0x0001, 0x1118, 0x2099, 0x199e, 0x0010, ++ 0x0804, 0x336c, 0xa85c, 0x9080, 0x0019, 0x20a0, 0xa860, 0x20e8, ++ 0x20a9, 0x001a, 0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x0804, ++ 0x48c5, 0x7884, 0x908a, 0x1000, 0x1a04, 0x336c, 0x0126, 0x2091, ++ 0x8000, 0x8003, 0x800b, 0x810b, 0x9108, 0x00c6, 0x2061, 0x19cb, ++ 0x6142, 0x00ce, 0x012e, 0x0804, 0x3337, 0x00c6, 0x080c, 0x6fb2, ++ 0x1160, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x9085, 0x0001, 0x080c, ++ 0x6ff9, 0x080c, 0x6ee4, 0x080c, 0x0db4, 0x2061, 0x1800, 0x6030, ++ 0xc09d, 0x6032, 0x080c, 0x5b90, 0x00ce, 0x0005, 0x00c6, 0x2001, ++ 0x1800, 0x2004, 0x908e, 0x0000, 0x0904, 0x3369, 0x7884, 0x9005, ++ 0x0188, 0x7888, 0x2061, 0x196d, 0x2c0c, 0x2062, 0x080c, 0x2a45, ++ 0x01a0, 0x080c, 0x2a4d, 0x0188, 0x080c, 0x2a55, 0x0170, 0x2162, ++ 0x0804, 0x336c, 0x2061, 0x0100, 0x6038, 0x9086, 0x0007, 0x1118, ++ 0x2009, 0x0001, 0x0010, 0x2009, 0x0000, 0x7884, 0x9086, 0x0002, ++ 0x1548, 0x2061, 0x0100, 0x6028, 0xc09c, 0x602a, 0x0026, 0x2011, ++ 0x0003, 0x080c, 0x9771, 0x2011, 0x0002, 0x080c, 0x977b, 0x002e, ++ 0x080c, 0x9662, 0x0036, 0x901e, 0x080c, 0x96d8, 0x003e, 0x60e3, ++ 0x0000, 0x080c, 0xd8b4, 0x080c, 0xd8cf, 0x9085, 0x0001, 0x080c, ++ 0x6ff9, 0x9006, 0x080c, 0x2b14, 0x2001, 0x1800, 0x2003, 0x0004, ++ 0x6027, 0x0008, 0x00ce, 0x0804, 0x3337, 0x81ff, 0x0120, 0x2009, ++ 0x0001, 0x0804, 0x3369, 0x080c, 0x539a, 0x0120, 0x2009, 0x0007, ++ 0x0804, 0x3369, 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x623e, ++ 0x1904, 0x336c, 0x9186, 0x007f, 0x0138, 0x080c, 0x6562, 0x0120, ++ 0x2009, 0x0009, 0x0804, 0x3369, 0x080c, 0x4879, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x3369, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, ++ 0x080c, 0xbcfd, 0x1120, 0x2009, 0x0003, 0x0804, 0x3369, 0x7007, ++ 0x0003, 0x701f, 0x52cc, 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, ++ 0x2009, 0x0004, 0x0804, 0x3369, 0xa8e0, 0xa866, 0xa834, 0x8007, ++ 0x800c, 0xa85c, 0x9080, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0xaf60, 0x0804, 0x48c5, 0xa898, 0x9086, 0x000d, 0x1904, 0x3369, ++ 0x2021, 0x4005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x52f0, 0x0010, ++ 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, ++ 0x0010, 0x7833, 0x0010, 0x7883, 0x4005, 0xa998, 0x7986, 0xa9a4, ++ 0x799a, 0xa9a8, 0x799e, 0x080c, 0x48b5, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x7007, 0x0001, 0x2091, ++ 0x5000, 0x700f, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x00c6, 0x2061, 0x19cb, 0x7984, 0x6152, 0x614e, 0x6057, 0x0000, ++ 0x604b, 0x0009, 0x7898, 0x606a, 0x789c, 0x6066, 0x7888, 0x6062, ++ 0x788c, 0x605e, 0x2001, 0x19d9, 0x2044, 0x2001, 0x19e0, 0xa076, ++ 0xa060, 0xa072, 0xa07b, 0x0001, 0xa07f, 0x0002, 0xa06b, 0x0000, ++ 0xa09f, 0x0000, 0x00ce, 0x012e, 0x0804, 0x3337, 0x0126, 0x2091, ++ 0x8000, 0x00b6, 0x00c6, 0x90e4, 0xc000, 0x0128, 0x0006, 0x080c, ++ 0xbb64, 0x000e, 0x1198, 0xd0e4, 0x0160, 0x9180, 0x1000, 0x2004, ++ 0x905d, 0x0160, 0x080c, 0x5ceb, 0x080c, 0x9db1, 0x0110, 0xb817, ++ 0x0000, 0x9006, 0x00ce, 0x00be, 0x012e, 0x0005, 0x9085, 0x0001, ++ 0x0cc8, 0x0126, 0x2091, 0x8000, 0x0156, 0x2010, 0x900e, 0x20a9, ++ 0x0800, 0x0016, 0x9180, 0x1000, 0x2004, 0x9005, 0x0180, 0x9186, ++ 0x007e, 0x0168, 0x9186, 0x007f, 0x0150, 0x9186, 0x0080, 0x0138, ++ 0x9186, 0x00ff, 0x0120, 0x0026, 0x2200, 0x0801, 0x002e, 0x001e, ++ 0x8108, 0x1f04, 0x5369, 0x015e, 0x012e, 0x0005, 0x2001, 0x1854, ++ 0x2004, 0x0005, 0x2001, 0x1873, 0x2004, 0x0005, 0x0006, 0x2001, ++ 0x1810, 0x2004, 0xd0d4, 0x000e, 0x0005, 0x2001, 0x180e, 0x2004, ++ 0xd0b4, 0x0005, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x0005, ++ 0x0016, 0x00e6, 0x2071, 0x1894, 0x7108, 0x910d, 0x710a, 0x00ee, ++ 0x001e, 0x0005, 0x79a4, 0x9182, 0x0081, 0x1a04, 0x336c, 0x810c, ++ 0x0016, 0x080c, 0x4879, 0x080c, 0x0ef3, 0x2100, 0x2238, 0x7d84, ++ 0x7c88, 0x7b8c, 0x7a90, 0x001e, 0x080c, 0x48c2, 0x701f, 0x53c1, ++ 0x0005, 0x2079, 0x0000, 0x7d94, 0x7c98, 0x7ba8, 0x7aac, 0x79a4, ++ 0x810c, 0x2061, 0x18ae, 0x2c44, 0xa770, 0xa074, 0x2071, 0x1894, ++ 0x080c, 0x48c5, 0x701f, 0x53d5, 0x0005, 0x2061, 0x18ae, 0x2c44, ++ 0x0016, 0x0026, 0xa270, 0xa174, 0x080c, 0x0efb, 0x002e, 0x001e, ++ 0x080c, 0x0fa8, 0x9006, 0xa802, 0xa806, 0x0804, 0x3337, 0x0126, ++ 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x2061, 0x0100, 0x2069, 0x0200, 0x2071, 0x1800, 0x6044, ++ 0xd0a4, 0x11e8, 0xd084, 0x0118, 0x080c, 0x5590, 0x0068, 0xd08c, ++ 0x0118, 0x080c, 0x5499, 0x0040, 0xd094, 0x0118, 0x080c, 0x5469, ++ 0x0018, 0xd09c, 0x0108, 0x0099, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x012e, 0x0005, 0x0016, ++ 0x6128, 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, 0x0c68, 0x0006, ++ 0x7094, 0x9005, 0x000e, 0x0120, 0x7097, 0x0000, 0x708f, 0x0000, ++ 0x624c, 0x9286, 0xf0f0, 0x1150, 0x6048, 0x9086, 0xf0f0, 0x0130, ++ 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0x9294, 0xff00, ++ 0x9296, 0xf700, 0x0178, 0x7138, 0xd1a4, 0x1160, 0x6240, 0x9295, ++ 0x0100, 0x6242, 0x9294, 0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, ++ 0x5c4d, 0x00f0, 0x6040, 0x9084, 0x0010, 0x9085, 0x0140, 0x6042, ++ 0x6043, 0x0000, 0x7083, 0x0000, 0x709f, 0x0001, 0x70c3, 0x0000, ++ 0x70db, 0x0000, 0x2009, 0x1c80, 0x200b, 0x0000, 0x7093, 0x0000, ++ 0x7087, 0x000f, 0x2009, 0x000f, 0x2011, 0x5b33, 0x080c, 0x80ca, ++ 0x0005, 0x2001, 0x1875, 0x2004, 0xd08c, 0x0110, 0x705b, 0xffff, ++ 0x7084, 0x9005, 0x1528, 0x2011, 0x5b33, 0x080c, 0x8038, 0x6040, ++ 0x9094, 0x0010, 0x9285, 0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, ++ 0xd08c, 0x1168, 0x1f04, 0x547f, 0x6242, 0x7097, 0x0000, 0x6040, ++ 0x9094, 0x0010, 0x9285, 0x0080, 0x6042, 0x6242, 0x0048, 0x6242, ++ 0x7097, 0x0000, 0x708b, 0x0000, 0x9006, 0x080c, 0x5cd6, 0x0000, ++ 0x0005, 0x7088, 0x908a, 0x0003, 0x1a0c, 0x0db4, 0x000b, 0x0005, ++ 0x54a3, 0x54f4, 0x558f, 0x00f6, 0x0016, 0x6900, 0x918c, 0x0800, ++ 0x708b, 0x0001, 0x2001, 0x015d, 0x2003, 0x0000, 0x6803, 0x00fc, ++ 0x20a9, 0x0004, 0x6800, 0x9084, 0x00fc, 0x0120, 0x1f04, 0x54b2, ++ 0x080c, 0x0db4, 0x68a0, 0x68a2, 0x689c, 0x689e, 0x6898, 0x689a, ++ 0xa001, 0x918d, 0x1600, 0x6902, 0x001e, 0x6837, 0x0020, 0x080c, ++ 0x5cb2, 0x2079, 0x1c00, 0x7833, 0x1101, 0x7837, 0x0000, 0x20e1, ++ 0x0001, 0x2099, 0x1805, 0x20e9, 0x0001, 0x20a1, 0x1c0e, 0x20a9, ++ 0x0004, 0x4003, 0x080c, 0x9c3f, 0x20e1, 0x0001, 0x2099, 0x1c00, ++ 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, ++ 0x000c, 0x600f, 0x0000, 0x080c, 0x5b64, 0x00fe, 0x9006, 0x708e, ++ 0x6043, 0x0008, 0x6042, 0x0005, 0x00f6, 0x708c, 0x708f, 0x0000, ++ 0x9025, 0x0904, 0x556c, 0x6020, 0xd0b4, 0x1904, 0x556a, 0x719c, ++ 0x81ff, 0x0904, 0x5558, 0x9486, 0x000c, 0x1904, 0x5565, 0x9480, ++ 0x0018, 0x8004, 0x20a8, 0x080c, 0x5cab, 0x2011, 0x0260, 0x2019, ++ 0x1c00, 0x220c, 0x2304, 0x9106, 0x11e8, 0x8210, 0x8318, 0x1f04, ++ 0x5511, 0x6043, 0x0004, 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, ++ 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0006, 0x708b, 0x0002, 0x7097, ++ 0x0002, 0x2009, 0x07d0, 0x2011, 0x5b3a, 0x080c, 0x80ca, 0x080c, ++ 0x5cb2, 0x04c0, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7930, 0x918e, ++ 0x1101, 0x1558, 0x7834, 0x9005, 0x1540, 0x7900, 0x918c, 0x00ff, ++ 0x1118, 0x7804, 0x9005, 0x0190, 0x080c, 0x5cab, 0x2011, 0x026e, ++ 0x2019, 0x1805, 0x20a9, 0x0004, 0x220c, 0x2304, 0x9102, 0x0230, ++ 0x11a0, 0x8210, 0x8318, 0x1f04, 0x554c, 0x0078, 0x709f, 0x0000, ++ 0x080c, 0x5cab, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0001, ++ 0x20a1, 0x1c00, 0x20a9, 0x0014, 0x4003, 0x6043, 0x0008, 0x6043, ++ 0x0000, 0x0010, 0x00fe, 0x0005, 0x6040, 0x9085, 0x0100, 0x6042, ++ 0x6020, 0xd0b4, 0x1db8, 0x080c, 0x9c3f, 0x20e1, 0x0001, 0x2099, ++ 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, ++ 0x60c3, 0x000c, 0x2011, 0x19c2, 0x2013, 0x0000, 0x708f, 0x0000, ++ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x93a3, 0x08d8, 0x0005, ++ 0x7094, 0x908a, 0x001d, 0x1a0c, 0x0db4, 0x000b, 0x0005, 0x55c1, ++ 0x55d4, 0x55fd, 0x561d, 0x5643, 0x5672, 0x5698, 0x56d0, 0x56f6, ++ 0x5724, 0x575f, 0x5797, 0x57b5, 0x57e0, 0x5802, 0x581d, 0x5827, ++ 0x585b, 0x5881, 0x58b0, 0x58d6, 0x590e, 0x5952, 0x598f, 0x59b0, ++ 0x5a09, 0x5a2b, 0x5a59, 0x5a59, 0x00c6, 0x2061, 0x1800, 0x6003, ++ 0x0007, 0x2061, 0x0100, 0x6004, 0x9084, 0xfff9, 0x6006, 0x00ce, ++ 0x0005, 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, ++ 0x0100, 0x6043, 0x0002, 0x7097, 0x0001, 0x2009, 0x07d0, 0x2011, ++ 0x5b3a, 0x080c, 0x80ca, 0x0005, 0x00f6, 0x708c, 0x9086, 0x0014, ++ 0x1510, 0x6042, 0x6020, 0xd0b4, 0x11f0, 0x080c, 0x5cab, 0x2079, ++ 0x0260, 0x7a30, 0x9296, 0x1102, 0x11a0, 0x7834, 0x9005, 0x1188, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, ++ 0x2011, 0x5b3a, 0x080c, 0x8038, 0x7097, 0x0010, 0x080c, 0x5827, ++ 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0003, ++ 0x6043, 0x0004, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x080c, 0x5c2f, ++ 0x2079, 0x0240, 0x7833, 0x1102, 0x7837, 0x0000, 0x20a9, 0x0008, ++ 0x9f88, 0x000e, 0x200b, 0x0000, 0x8108, 0x1f04, 0x5612, 0x60c3, ++ 0x0014, 0x080c, 0x5b64, 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, ++ 0x0500, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x9086, 0x0014, 0x11b8, ++ 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x1178, ++ 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, ++ 0x1110, 0x70c3, 0x0001, 0x7097, 0x0004, 0x0029, 0x0010, 0x080c, ++ 0x5c87, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0005, 0x080c, 0x5c2f, ++ 0x2079, 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, 0x5cab, ++ 0x080c, 0x5c8e, 0x1170, 0x7080, 0x9005, 0x1158, 0x7158, 0x9186, ++ 0xffff, 0x0138, 0x2011, 0x0008, 0x080c, 0x5ae7, 0x0168, 0x080c, ++ 0x5c64, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, ++ 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b64, ++ 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, 0x5b3a, ++ 0x080c, 0x8038, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cab, 0x2079, ++ 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, ++ 0x7097, 0x0006, 0x0029, 0x0010, 0x080c, 0x5c87, 0x00fe, 0x0005, ++ 0x00f6, 0x7097, 0x0007, 0x080c, 0x5c2f, 0x2079, 0x0240, 0x7833, ++ 0x1104, 0x7837, 0x0000, 0x080c, 0x5cab, 0x080c, 0x5c8e, 0x11b8, ++ 0x7080, 0x9005, 0x11a0, 0x7160, 0x9186, 0xffff, 0x0180, 0x9180, ++ 0x3138, 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, ++ 0x5ae7, 0x0180, 0x080c, 0x4c98, 0x0110, 0x080c, 0x26cc, 0x20a9, ++ 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b64, 0x00fe, 0x0005, ++ 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, 0x5b3a, 0x080c, 0x8038, ++ 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x0008, ++ 0x0029, 0x0010, 0x080c, 0x5c87, 0x00fe, 0x0005, 0x00f6, 0x7097, ++ 0x0009, 0x080c, 0x5c2f, 0x2079, 0x0240, 0x7833, 0x1105, 0x7837, ++ 0x0100, 0x080c, 0x5c8e, 0x1150, 0x7080, 0x9005, 0x1138, 0x080c, ++ 0x5a5a, 0x1188, 0x9085, 0x0001, 0x080c, 0x26cc, 0x20a9, 0x0008, ++ 0x080c, 0x5cab, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b64, 0x0010, ++ 0x080c, 0x55b4, 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, 0x05a8, ++ 0x2011, 0x5b3a, 0x080c, 0x8038, 0x9086, 0x0014, 0x1560, 0x080c, ++ 0x5cab, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, 0x1520, 0x7834, ++ 0x9084, 0x0100, 0x2011, 0x0100, 0x921e, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x000a, ++ 0x00b1, 0x0098, 0x9005, 0x1178, 0x7a38, 0xd2fc, 0x0128, 0x70c0, ++ 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0000, 0x7097, 0x000e, ++ 0x080c, 0x5802, 0x0010, 0x080c, 0x5c87, 0x00fe, 0x0005, 0x00f6, ++ 0x7097, 0x000b, 0x2011, 0x1c0e, 0x20e9, 0x0001, 0x22a0, 0x20a9, ++ 0x0040, 0x2019, 0xffff, 0x4304, 0x080c, 0x5c2f, 0x2079, 0x0240, ++ 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x5c8e, 0x0118, 0x2013, ++ 0x0000, 0x0020, 0x705c, 0x9085, 0x0100, 0x2012, 0x20a9, 0x0040, ++ 0x2009, 0x024e, 0x2011, 0x1c0e, 0x220e, 0x8210, 0x8108, 0x9186, ++ 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x1f04, ++ 0x5784, 0x60c3, 0x0084, 0x080c, 0x5b64, 0x00fe, 0x0005, 0x00f6, ++ 0x708c, 0x9005, 0x01c0, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x9086, ++ 0x0084, 0x1178, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1106, 0x1138, 0x7834, 0x9005, 0x1120, 0x7097, 0x000c, 0x0029, ++ 0x0010, 0x080c, 0x5c87, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x000d, ++ 0x080c, 0x5c2f, 0x2079, 0x0240, 0x7833, 0x1107, 0x7837, 0x0000, ++ 0x080c, 0x5cab, 0x20a9, 0x0040, 0x2011, 0x026e, 0x2009, 0x024e, ++ 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, 0x8000, ++ 0x6812, 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, 0x0260, ++ 0x1f04, 0x57c8, 0x60c3, 0x0084, 0x080c, 0x5b64, 0x00fe, 0x0005, ++ 0x00f6, 0x708c, 0x9005, 0x01e0, 0x2011, 0x5b3a, 0x080c, 0x8038, ++ 0x9086, 0x0084, 0x1198, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, 0x7093, 0x0001, ++ 0x080c, 0x5c01, 0x7097, 0x000e, 0x0029, 0x0010, 0x080c, 0x5c87, ++ 0x00fe, 0x0005, 0x918d, 0x0001, 0x080c, 0x5cd6, 0x7097, 0x000f, ++ 0x708f, 0x0000, 0x2061, 0x0140, 0x605b, 0xbc85, 0x605f, 0xb5b5, ++ 0x2061, 0x0100, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, ++ 0x2011, 0x5b3a, 0x080c, 0x802c, 0x0005, 0x708c, 0x9005, 0x0130, ++ 0x2011, 0x5b3a, 0x080c, 0x8038, 0x7097, 0x0000, 0x0005, 0x7097, ++ 0x0011, 0x080c, 0x9c3f, 0x080c, 0x5cab, 0x20e1, 0x0000, 0x2099, ++ 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x748c, 0x9480, 0x0018, ++ 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x4003, 0x080c, ++ 0x5c8e, 0x11a0, 0x7178, 0x81ff, 0x0188, 0x900e, 0x707c, 0x9084, ++ 0x00ff, 0x0160, 0x080c, 0x2663, 0x9186, 0x007e, 0x0138, 0x9186, ++ 0x0080, 0x0120, 0x2011, 0x0008, 0x080c, 0x5ae7, 0x60c3, 0x0014, ++ 0x080c, 0x5b64, 0x0005, 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, ++ 0x5b3a, 0x080c, 0x8038, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cab, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, ++ 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, ++ 0x0001, 0x7097, 0x0012, 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, ++ 0x0005, 0x00f6, 0x7097, 0x0013, 0x080c, 0x5c3d, 0x2079, 0x0240, ++ 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, 0x5cab, 0x080c, 0x5c8e, ++ 0x1170, 0x7080, 0x9005, 0x1158, 0x7158, 0x9186, 0xffff, 0x0138, ++ 0x2011, 0x0008, 0x080c, 0x5ae7, 0x0168, 0x080c, 0x5c64, 0x20a9, ++ 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b64, 0x00fe, 0x0005, ++ 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, 0x5b3a, 0x080c, 0x8038, ++ 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, ++ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x0014, ++ 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7097, ++ 0x0015, 0x080c, 0x5c3d, 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, ++ 0x0000, 0x080c, 0x5cab, 0x080c, 0x5c8e, 0x11b8, 0x7080, 0x9005, ++ 0x11a0, 0x7160, 0x9186, 0xffff, 0x0180, 0x9180, 0x3138, 0x200d, ++ 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, 0x5ae7, 0x0180, ++ 0x080c, 0x4c98, 0x0110, 0x080c, 0x26cc, 0x20a9, 0x0008, 0x20e1, ++ 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, ++ 0x60c3, 0x0014, 0x080c, 0x5b64, 0x00fe, 0x0005, 0x00f6, 0x708c, ++ 0x9005, 0x05f0, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x9086, 0x0014, ++ 0x15a8, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, ++ 0x1568, 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e, 0x1168, ++ 0x9085, 0x0001, 0x080c, 0x5cd6, 0x7a38, 0xd2fc, 0x0128, 0x70c0, ++ 0x9005, 0x1110, 0x70c3, 0x0001, 0x0080, 0x9005, 0x11b8, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x9085, ++ 0x0001, 0x080c, 0x5cd6, 0x7093, 0x0000, 0x7a38, 0xd2f4, 0x0110, ++ 0x70db, 0x0008, 0x7097, 0x0016, 0x0029, 0x0010, 0x708f, 0x0000, ++ 0x00fe, 0x0005, 0x080c, 0x9c3f, 0x080c, 0x5cab, 0x20e1, 0x0000, ++ 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000e, ++ 0x4003, 0x2011, 0x026d, 0x2204, 0x9084, 0x0100, 0x2011, 0x024d, ++ 0x2012, 0x2011, 0x026e, 0x7097, 0x0017, 0x080c, 0x5c8e, 0x1150, ++ 0x7080, 0x9005, 0x1138, 0x080c, 0x5a5a, 0x1188, 0x9085, 0x0001, ++ 0x080c, 0x26cc, 0x20a9, 0x0008, 0x080c, 0x5cab, 0x20e1, 0x0000, ++ 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, ++ 0x0014, 0x080c, 0x5b64, 0x0010, 0x080c, 0x55b4, 0x0005, 0x00f6, ++ 0x708c, 0x9005, 0x01d8, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x9086, ++ 0x0084, 0x1190, 0x080c, 0x5cab, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1106, 0x1150, 0x7834, 0x9005, 0x1138, 0x9006, 0x080c, 0x5cd6, ++ 0x7097, 0x0018, 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, ++ 0x00f6, 0x7097, 0x0019, 0x080c, 0x5c3d, 0x2079, 0x0240, 0x7833, ++ 0x1106, 0x7837, 0x0000, 0x080c, 0x5cab, 0x2009, 0x026e, 0x2039, ++ 0x1c0e, 0x20a9, 0x0040, 0x213e, 0x8738, 0x8108, 0x9186, 0x0280, ++ 0x1128, 0x6814, 0x8000, 0x6816, 0x2009, 0x0260, 0x1f04, 0x59c3, ++ 0x2039, 0x1c0e, 0x080c, 0x5c8e, 0x11e8, 0x2728, 0x2514, 0x8207, ++ 0x9084, 0x00ff, 0x8000, 0x2018, 0x9294, 0x00ff, 0x8007, 0x9205, ++ 0x202a, 0x705c, 0x2310, 0x8214, 0x92a0, 0x1c0e, 0x2414, 0x938c, ++ 0x0001, 0x0118, 0x9294, 0xff00, 0x0018, 0x9294, 0x00ff, 0x8007, ++ 0x9215, 0x2222, 0x20a9, 0x0040, 0x2009, 0x024e, 0x270e, 0x8738, ++ 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, 0x2009, ++ 0x0240, 0x1f04, 0x59f6, 0x60c3, 0x0084, 0x080c, 0x5b64, 0x00fe, ++ 0x0005, 0x00f6, 0x708c, 0x9005, 0x01e0, 0x2011, 0x5b3a, 0x080c, ++ 0x8038, 0x9086, 0x0084, 0x1198, 0x080c, 0x5cab, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, 0x7093, ++ 0x0001, 0x080c, 0x5c01, 0x7097, 0x001a, 0x0029, 0x0010, 0x708f, ++ 0x0000, 0x00fe, 0x0005, 0x9085, 0x0001, 0x080c, 0x5cd6, 0x7097, ++ 0x001b, 0x080c, 0x9c3f, 0x080c, 0x5cab, 0x2011, 0x0260, 0x2009, ++ 0x0240, 0x748c, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, ++ 0x8004, 0x20a8, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, ++ 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, ++ 0x2011, 0x0260, 0x1f04, 0x5a42, 0x60c3, 0x0084, 0x080c, 0x5b64, ++ 0x0005, 0x0005, 0x0086, 0x0096, 0x2029, 0x1854, 0x252c, 0x20a9, ++ 0x0008, 0x2041, 0x1c0e, 0x20e9, 0x0001, 0x28a0, 0x080c, 0x5cab, ++ 0x20e1, 0x0000, 0x2099, 0x026e, 0x4003, 0x20a9, 0x0008, 0x2011, ++ 0x0007, 0xd5d4, 0x0108, 0x9016, 0x2800, 0x9200, 0x200c, 0x91a6, ++ 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, ++ 0x5a74, 0x0804, 0x5ae3, 0x82ff, 0x1160, 0xd5d4, 0x0120, 0x91a6, ++ 0x3fff, 0x0d90, 0x0020, 0x91a6, 0x3fff, 0x0904, 0x5ae3, 0x918d, ++ 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, ++ 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, ++ 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, 0x5a9a, 0x04d8, ++ 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, 0x5aac, 0x2328, ++ 0x8529, 0x92be, 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, ++ 0x973a, 0x000e, 0x27a8, 0x95a8, 0x0010, 0x1f04, 0x5abb, 0x755a, ++ 0x95c8, 0x3138, 0x292d, 0x95ac, 0x00ff, 0x757e, 0x6532, 0x6536, ++ 0x0016, 0x2508, 0x080c, 0x26ac, 0x001e, 0x60e7, 0x0000, 0x65ea, ++ 0x2018, 0x2304, 0x9405, 0x201a, 0x7083, 0x0001, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x20e1, 0x0001, 0x2898, 0x20a9, 0x0008, 0x4003, ++ 0x9085, 0x0001, 0x0008, 0x9006, 0x009e, 0x008e, 0x0005, 0x0156, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x22a8, 0x20e1, 0x0000, 0x2099, ++ 0x026e, 0x20e9, 0x0000, 0x2011, 0x024e, 0x22a0, 0x4003, 0x014e, ++ 0x013e, 0x01de, 0x01ce, 0x015e, 0x2118, 0x9026, 0x2001, 0x0007, ++ 0x939a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, ++ 0x0120, 0x939a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, ++ 0x0118, 0x8423, 0x8319, 0x1de8, 0x9238, 0x2029, 0x026e, 0x9528, ++ 0x2504, 0x942c, 0x11b8, 0x9405, 0x203a, 0x715a, 0x91a0, 0x3138, ++ 0x242d, 0x95ac, 0x00ff, 0x757e, 0x6532, 0x6536, 0x0016, 0x2508, ++ 0x080c, 0x26ac, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x7083, 0x0001, ++ 0x9084, 0x0000, 0x0005, 0x00e6, 0x2071, 0x1800, 0x7087, 0x0000, ++ 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, ++ 0x080c, 0x5bf0, 0x080c, 0x93ac, 0x7004, 0x9084, 0x4000, 0x0110, ++ 0x080c, 0x2b24, 0x0126, 0x2091, 0x8000, 0x2071, 0x1825, 0x2073, ++ 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x5c4d, ++ 0x001e, 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, 0x7a42, 0x002e, ++ 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x29ca, 0x0228, 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, 0x2011, ++ 0x19c2, 0x2013, 0x0000, 0x708f, 0x0000, 0x012e, 0x60a3, 0x0056, ++ 0x60a7, 0x9575, 0x080c, 0x93a3, 0x6144, 0xd184, 0x0120, 0x7194, ++ 0x918d, 0x2000, 0x0018, 0x7188, 0x918d, 0x1000, 0x2011, 0x196a, ++ 0x2112, 0x2009, 0x07d0, 0x2011, 0x5b3a, 0x080c, 0x80ca, 0x0005, ++ 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9db8, ++ 0x2009, 0x00f7, 0x080c, 0x5c4d, 0x2061, 0x19cb, 0x900e, 0x611a, ++ 0x611e, 0x6172, 0x6176, 0x2061, 0x1800, 0x6003, 0x0001, 0x2061, ++ 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x196a, 0x200b, ++ 0x0000, 0x2009, 0x002d, 0x2011, 0x5bbc, 0x080c, 0x802c, 0x012e, ++ 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x0471, 0x2071, 0x0100, 0x080c, 0x93ac, 0x2071, 0x0140, ++ 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, 0x2b24, 0x080c, 0x6fba, ++ 0x0188, 0x080c, 0x6fd5, 0x1170, 0x080c, 0x72a0, 0x0016, 0x080c, ++ 0x277b, 0x2001, 0x193e, 0x2102, 0x001e, 0x080c, 0x729b, 0x080c, ++ 0x6ee4, 0x0050, 0x2009, 0x0001, 0x080c, 0x2a63, 0x2001, 0x0001, ++ 0x080c, 0x260c, 0x080c, 0x5b90, 0x012e, 0x000e, 0x00ee, 0x0005, ++ 0x2001, 0x180e, 0x2004, 0xd0bc, 0x0158, 0x0026, 0x0036, 0x2011, ++ 0x8017, 0x2001, 0x196a, 0x201c, 0x080c, 0x48d9, 0x003e, 0x002e, ++ 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001, 0x20a1, 0x1c80, 0x080c, ++ 0x5cab, 0x20e9, 0x0000, 0x2099, 0x026e, 0x0099, 0x20a9, 0x0020, ++ 0x080c, 0x5ca5, 0x2099, 0x0260, 0x20a1, 0x1c92, 0x0051, 0x20a9, ++ 0x000e, 0x080c, 0x5ca8, 0x2099, 0x0260, 0x20a1, 0x1cb2, 0x0009, ++ 0x0005, 0x0016, 0x0026, 0x3410, 0x3308, 0x2104, 0x8007, 0x2012, ++ 0x8108, 0x8210, 0x1f04, 0x5c25, 0x002e, 0x001e, 0x0005, 0x080c, ++ 0x9c3f, 0x20e1, 0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x080c, 0x9c3f, 0x080c, ++ 0x5cab, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x00c6, 0x0006, 0x2061, ++ 0x0100, 0x810f, 0x2001, 0x1833, 0x2004, 0x9005, 0x1138, 0x2001, ++ 0x1817, 0x2004, 0x9084, 0x00ff, 0x9105, 0x0010, 0x9185, 0x00f7, ++ 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, 0x0046, 0x080c, 0x655e, ++ 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, 0x080c, 0xd52a, 0x2001, ++ 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x900e, 0x080c, ++ 0x2fa5, 0x080c, 0xc212, 0x0140, 0x0036, 0x2019, 0xffff, 0x2021, ++ 0x0007, 0x080c, 0x4a76, 0x003e, 0x004e, 0x001e, 0x0005, 0x080c, ++ 0x5b90, 0x7097, 0x0000, 0x708f, 0x0000, 0x0005, 0x0006, 0x2001, ++ 0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, ++ 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0x918d, 0x0006, ++ 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x2009, 0x0001, 0x0020, ++ 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, 0x9084, 0xffc0, 0x910d, ++ 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, 0x01d6, 0x9006, 0x20a9, ++ 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x4004, 0x2079, 0x1c00, ++ 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, 0x00ef, 0x7813, 0x0138, ++ 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, 0x014e, 0x015e, 0x00fe, ++ 0x0005, 0x2001, 0x1800, 0x2003, 0x0001, 0x0005, 0x2001, 0x1977, ++ 0x0118, 0x2003, 0x0001, 0x0010, 0x2003, 0x0000, 0x0005, 0x0156, ++ 0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, 0x200a, 0x8108, 0x1f04, ++ 0x5ce5, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146, ++ 0x2069, 0x1853, 0x9006, 0xb802, 0xb8be, 0xb807, 0x0707, 0xb80a, ++ 0xb80e, 0xb812, 0x9198, 0x3138, 0x231d, 0x939c, 0x00ff, 0xbb16, ++ 0x0016, 0x0026, 0xb8b2, 0x080c, 0x9db1, 0x1120, 0x9192, 0x007e, ++ 0x1208, 0xbbb2, 0x20a9, 0x0004, 0xb8b4, 0x20e8, 0xb9b8, 0x9198, ++ 0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9198, 0x000a, ++ 0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, 0xb842, 0xb84e, 0xb852, ++ 0xb856, 0xb85a, 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, 0x0100, ++ 0xb872, 0xb876, 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, 0xb896, ++ 0xb89a, 0xb89e, 0xb8ae, 0xb9a2, 0x0096, 0xb8a4, 0x904d, 0x0110, ++ 0x080c, 0x101d, 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, 0x6810, ++ 0xb83a, 0x680c, 0xb846, 0x6814, 0x9084, 0x00ff, 0xb842, 0x014e, ++ 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x5dbb, ++ 0x9182, 0x0800, 0x1a04, 0x5dbf, 0x2001, 0x180c, 0x2004, 0x9084, ++ 0x0003, 0x1904, 0x5dc5, 0x9188, 0x1000, 0x2104, 0x905d, 0x0518, ++ 0xb804, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1508, 0xb8a4, 0x900d, ++ 0x1904, 0x5dd7, 0xb850, 0x900d, 0x1148, 0xa802, 0x2900, 0xb852, ++ 0xb84e, 0x080c, 0x840e, 0x9006, 0x012e, 0x0005, 0x00a6, 0x2150, ++ 0x2900, 0xb002, 0xa803, 0x0000, 0x00ae, 0xb852, 0x0c90, 0x2001, ++ 0x0005, 0x900e, 0x04b8, 0x2001, 0x0028, 0x900e, 0x0498, 0x9082, ++ 0x0006, 0x1290, 0x080c, 0x9db1, 0x1160, 0xb8a0, 0x9084, 0xff80, ++ 0x1140, 0xb900, 0xd1fc, 0x0990, 0x2001, 0x0029, 0x2009, 0x1000, ++ 0x0408, 0x2001, 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, 0xd18c, ++ 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, ++ 0x0040, 0x2001, 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, 0x1000, ++ 0x0048, 0x900e, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, ++ 0x0029, 0x900e, 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, 0x2004, ++ 0xd084, 0x19d0, 0x9188, 0x1000, 0x2104, 0x905d, 0x09a8, 0x080c, ++ 0x6562, 0x1990, 0xb800, 0xd0bc, 0x0978, 0x0804, 0x5d6e, 0x080c, ++ 0x63da, 0x0904, 0x5d87, 0x0804, 0x5d72, 0x00b6, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0xa974, 0x9182, 0x0800, 0x1a04, 0x5e58, 0x9188, ++ 0x1000, 0x2104, 0x905d, 0x0904, 0x5e30, 0xb8a0, 0x9086, 0x007f, ++ 0x0178, 0x080c, 0x656a, 0x0160, 0xa994, 0x81ff, 0x0130, 0x908e, ++ 0x0004, 0x0130, 0x908e, 0x0005, 0x0118, 0x080c, 0x6562, 0x1598, ++ 0xa87c, 0xd0fc, 0x01e0, 0xa894, 0x9005, 0x01c8, 0x2060, 0x0026, ++ 0x2010, 0x080c, 0xbb05, 0x002e, 0x1120, 0x2001, 0x0008, 0x0804, ++ 0x5e5a, 0x6020, 0x9086, 0x000a, 0x0120, 0x2001, 0x0008, 0x0804, ++ 0x5e5a, 0x601a, 0x6003, 0x0008, 0x2900, 0x6016, 0x0058, 0x080c, ++ 0x9ddc, 0x05e8, 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, 0xffff, ++ 0x6023, 0x000a, 0x2009, 0x0003, 0x080c, 0x9eac, 0x9006, 0x0458, ++ 0x2001, 0x0028, 0x0438, 0x9082, 0x0006, 0x1290, 0x080c, 0x9db1, ++ 0x1160, 0xb8a0, 0x9084, 0xff80, 0x1140, 0xb900, 0xd1fc, 0x0900, ++ 0x2001, 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, ++ 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, ++ 0xd184, 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, ++ 0x2001, 0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2001, ++ 0x002c, 0x0cc0, 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, 0xa8e0, ++ 0x9005, 0x1550, 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, 0x9005, ++ 0x1518, 0xa8c4, 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, 0x1800, ++ 0x9182, 0x0800, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, 0xaa98, ++ 0xab94, 0xa878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, 0x0118, ++ 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, ++ 0x2001, 0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, ++ 0x2001, 0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, 0x00be, ++ 0x00fe, 0x0005, 0x5eef, 0x5eaa, 0x5ec1, 0x5eef, 0x5eef, 0x5eef, ++ 0x5eef, 0x5eef, 0x2100, 0x9082, 0x007e, 0x1278, 0x080c, 0x61de, ++ 0x0148, 0x9046, 0xb810, 0x9306, 0x1904, 0x5ef7, 0xb814, 0x9206, ++ 0x15f0, 0x0028, 0xbb12, 0xba16, 0x0010, 0x080c, 0x4793, 0x0150, ++ 0x04b0, 0x080c, 0x623e, 0x1598, 0xb810, 0x9306, 0x1580, 0xb814, ++ 0x9206, 0x1568, 0x080c, 0x9ddc, 0x0530, 0x2b00, 0x6012, 0x080c, ++ 0xbf8c, 0x2900, 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, 0xa878, ++ 0x9086, 0x0001, 0x1170, 0x080c, 0x2fda, 0x9006, 0x080c, 0x617b, ++ 0x2001, 0x0002, 0x080c, 0x618f, 0x2001, 0x0200, 0xb86e, 0xb893, ++ 0x0002, 0x2009, 0x0003, 0x080c, 0x9eac, 0x9006, 0x0068, 0x2001, ++ 0x0001, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, ++ 0x0028, 0x900e, 0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, 0x0005, ++ 0x00b6, 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, 0x90c6, ++ 0x0015, 0x0904, 0x60cc, 0x90c6, 0x0056, 0x0904, 0x60d0, 0x90c6, ++ 0x0066, 0x0904, 0x60d4, 0x90c6, 0x0067, 0x0904, 0x60d8, 0x90c6, ++ 0x0068, 0x0904, 0x60dc, 0x90c6, 0x0071, 0x0904, 0x60e0, 0x90c6, ++ 0x0074, 0x0904, 0x60e4, 0x90c6, 0x007c, 0x0904, 0x60e8, 0x90c6, ++ 0x007e, 0x0904, 0x60ec, 0x90c6, 0x0037, 0x0904, 0x60f0, 0x9016, ++ 0x2079, 0x1800, 0xa974, 0x9186, 0x00ff, 0x0904, 0x60c7, 0x9182, ++ 0x0800, 0x1a04, 0x60c7, 0x080c, 0x623e, 0x1198, 0xb804, 0x9084, ++ 0x00ff, 0x9082, 0x0006, 0x1268, 0xa894, 0x90c6, 0x006f, 0x0148, ++ 0x080c, 0x9db1, 0x1904, 0x60b0, 0xb8a0, 0x9084, 0xff80, 0x1904, ++ 0x60b0, 0xa894, 0x90c6, 0x006f, 0x0158, 0x90c6, 0x005e, 0x0904, ++ 0x6010, 0x90c6, 0x0064, 0x0904, 0x6039, 0x2008, 0x0804, 0x5fd3, ++ 0xa998, 0xa8b0, 0x2040, 0x080c, 0x9db1, 0x1120, 0x9182, 0x007f, ++ 0x0a04, 0x5fd3, 0x9186, 0x00ff, 0x0904, 0x5fd3, 0x9182, 0x0800, ++ 0x1a04, 0x5fd3, 0xaaa0, 0xab9c, 0x7878, 0x9306, 0x1188, 0x787c, ++ 0x0096, 0x924e, 0x1128, 0x2208, 0x2310, 0x009e, 0x0804, 0x5fd3, ++ 0x99cc, 0xff00, 0x009e, 0x1120, 0x2208, 0x2310, 0x0804, 0x5fd3, ++ 0x080c, 0x4793, 0x0904, 0x5fdc, 0x900e, 0x9016, 0x90c6, 0x4000, ++ 0x1558, 0x0006, 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, ++ 0x0108, 0xc18d, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0031, 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, ++ 0x080c, 0x0f68, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0035, 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, ++ 0x080c, 0x0f68, 0x000e, 0x00c8, 0x90c6, 0x4007, 0x1110, 0x2408, ++ 0x00a0, 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0070, 0x90c6, ++ 0x4009, 0x1108, 0x0050, 0x90c6, 0x4006, 0x0138, 0x2001, 0x4005, ++ 0x2009, 0x000a, 0x0010, 0x2001, 0x4006, 0xa896, 0xa99a, 0xaa9e, ++ 0x2001, 0x0030, 0x900e, 0x0470, 0x080c, 0x9ddc, 0x1130, 0x2001, ++ 0x4005, 0x2009, 0x0003, 0x9016, 0x0c80, 0x2b00, 0x6012, 0x080c, ++ 0xbf8c, 0x2900, 0x6016, 0x6023, 0x0001, 0xa868, 0xd88c, 0x0108, ++ 0xc0f5, 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2fda, 0x012e, ++ 0x9006, 0x080c, 0x617b, 0x2001, 0x0002, 0x080c, 0x618f, 0x2009, ++ 0x0002, 0x080c, 0x9eac, 0xa8b0, 0xd094, 0x0118, 0xb8bc, 0xc08d, ++ 0xb8be, 0x9006, 0x9005, 0x012e, 0x00ee, 0x00fe, 0x00be, 0x0005, ++ 0x080c, 0x539a, 0x0118, 0x2009, 0x0007, 0x00f8, 0xa998, 0xaeb0, ++ 0x080c, 0x623e, 0x1904, 0x5fce, 0x9186, 0x007f, 0x0130, 0x080c, ++ 0x6562, 0x0118, 0x2009, 0x0009, 0x0080, 0x0096, 0x080c, 0x0feb, ++ 0x1120, 0x009e, 0x2009, 0x0002, 0x0040, 0x2900, 0x009e, 0xa806, ++ 0x080c, 0xbcfd, 0x19b0, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, ++ 0x5fd5, 0xa998, 0xaeb0, 0x080c, 0x623e, 0x1904, 0x5fce, 0x0096, ++ 0x080c, 0x0feb, 0x1128, 0x009e, 0x2009, 0x0002, 0x0804, 0x608d, ++ 0x2900, 0x009e, 0xa806, 0x0096, 0x2048, 0x20a9, 0x002b, 0xb8b4, ++ 0x20e0, 0xb8b8, 0x2098, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, ++ 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006, 0x20a0, 0xbbb8, ++ 0x9398, 0x0006, 0x2398, 0x080c, 0x0f68, 0x009e, 0xa87b, 0x0000, ++ 0xa883, 0x0000, 0xa897, 0x4000, 0xd684, 0x1168, 0x080c, 0x5386, ++ 0xd0b4, 0x1118, 0xa89b, 0x000b, 0x00e0, 0xb800, 0xd08c, 0x0118, ++ 0xa89b, 0x000c, 0x00b0, 0x080c, 0x6562, 0x0118, 0xa89b, 0x0009, ++ 0x0080, 0x080c, 0x539a, 0x0118, 0xa89b, 0x0007, 0x0050, 0x080c, ++ 0xbce0, 0x1904, 0x6009, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, ++ 0x5fd5, 0xa87b, 0x0030, 0xa897, 0x4005, 0xa804, 0x8006, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, ++ 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, ++ 0x122f, 0x080c, 0xa334, 0x1904, 0x6009, 0x2009, 0x0002, 0x08e8, ++ 0x2001, 0x0028, 0x900e, 0x0804, 0x600a, 0x2009, 0x180c, 0x210c, ++ 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, ++ 0x0004, 0x0010, 0x2001, 0x0029, 0x900e, 0x0804, 0x600a, 0x2001, ++ 0x0029, 0x900e, 0x0804, 0x600a, 0x080c, 0x355c, 0x0804, 0x600b, ++ 0x080c, 0x50c3, 0x0804, 0x600b, 0x080c, 0x432c, 0x0804, 0x600b, ++ 0x080c, 0x43a5, 0x0804, 0x600b, 0x080c, 0x4401, 0x0804, 0x600b, ++ 0x080c, 0x484f, 0x0804, 0x600b, 0x080c, 0x4afb, 0x0804, 0x600b, ++ 0x080c, 0x4d2e, 0x0804, 0x600b, 0x080c, 0x4f27, 0x0804, 0x600b, ++ 0x080c, 0x376c, 0x0804, 0x600b, 0x00b6, 0xa974, 0xae78, 0x9684, ++ 0x3fff, 0x9082, 0x4000, 0x1618, 0x9182, 0x0800, 0x1268, 0x9188, ++ 0x1000, 0x2104, 0x905d, 0x0140, 0x080c, 0x6562, 0x1148, 0x00e9, ++ 0x080c, 0x6369, 0x9006, 0x00b0, 0x2001, 0x0028, 0x900e, 0x0090, ++ 0x9082, 0x0006, 0x1240, 0xb900, 0xd1fc, 0x0d88, 0x2001, 0x0029, ++ 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, ++ 0x0029, 0x900e, 0x9005, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0xb850, 0x900d, 0x0150, 0x2900, 0x0096, 0x2148, 0xa802, 0x009e, ++ 0xa803, 0x0000, 0xb852, 0x012e, 0x0005, 0x2900, 0xb852, 0xb84e, ++ 0xa803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, 0xb84c, 0x9005, ++ 0x0170, 0x00e6, 0x2071, 0x19b8, 0x7004, 0x9086, 0x0002, 0x0168, ++ 0x00ee, 0xb84c, 0xa802, 0x2900, 0xb84e, 0x012e, 0x0005, 0x2900, ++ 0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x701c, 0x9b06, 0x1d80, ++ 0xb84c, 0x00a6, 0x2050, 0xb000, 0xa802, 0x2900, 0xb002, 0x00ae, ++ 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0xb84c, 0x904d, ++ 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, 0xb84e, 0x9905, 0x012e, ++ 0x0005, 0xb84c, 0x904d, 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, ++ 0xb84e, 0x9905, 0x0005, 0x00b6, 0x0126, 0x00c6, 0x0026, 0x2091, ++ 0x8000, 0x6210, 0x2258, 0xba00, 0x9005, 0x0110, 0xc285, 0x0008, ++ 0xc284, 0xba02, 0x002e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, ++ 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, ++ 0x9086, 0x0006, 0x1170, 0xb89c, 0xd0ac, 0x0158, 0x080c, 0x655e, ++ 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007, 0x1110, 0x2011, ++ 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0xba06, 0x0006, 0x9086, ++ 0x0006, 0x1120, 0xba90, 0x82ff, 0x090c, 0x0db4, 0x000e, 0x00ce, ++ 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, ++ 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006, 0x1168, 0xb89c, ++ 0xd0a4, 0x0150, 0x080c, 0x655a, 0x1138, 0x9284, 0x00ff, 0x9086, ++ 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0x9294, 0x00ff, 0x8007, ++ 0x9215, 0xba06, 0x00ce, 0x012e, 0x00be, 0x0005, 0x9182, 0x0800, ++ 0x0218, 0x9085, 0x0001, 0x0005, 0x00d6, 0x0026, 0x9190, 0x1000, ++ 0x2204, 0x905d, 0x1180, 0x0096, 0x080c, 0x0feb, 0x2958, 0x009e, ++ 0x0160, 0x2b00, 0x2012, 0xb85c, 0xb8ba, 0xb860, 0xb8b6, 0x9006, ++ 0xb8a6, 0x080c, 0x5ceb, 0x9006, 0x0010, 0x9085, 0x0001, 0x002e, ++ 0x00de, 0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, 0x8000, 0x0026, ++ 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0458, 0x00d6, 0x9190, ++ 0x1000, 0x2204, 0x905d, 0x0518, 0x2013, 0x0000, 0xb8a4, 0x904d, ++ 0x0110, 0x080c, 0x101d, 0x00d6, 0x00c6, 0xb8ac, 0x2060, 0x8cff, ++ 0x0168, 0x600c, 0x0006, 0x6014, 0x2048, 0x080c, 0xbb17, 0x0110, ++ 0x080c, 0x0f9d, 0x080c, 0x9e32, 0x00ce, 0x0c88, 0x00ce, 0x00de, ++ 0x2b48, 0xb8b8, 0xb85e, 0xb8b4, 0xb862, 0x080c, 0x102d, 0x00de, ++ 0x9006, 0x002e, 0x012e, 0x009e, 0x00be, 0x0005, 0x0016, 0x9182, ++ 0x0800, 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, 0x1000, 0x2104, ++ 0x905d, 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, ++ 0x0146, 0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, 0xb802, 0x080c, ++ 0x6fb2, 0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, 0x080c, 0x9db1, ++ 0x11d8, 0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, 0x2061, 0x1953, ++ 0x7048, 0x2062, 0x704c, 0x6006, 0x7050, 0x600a, 0x7054, 0x600e, ++ 0x00ce, 0x703c, 0x2069, 0x0140, 0x9005, 0x1110, 0x2001, 0x0001, ++ 0x6886, 0x2069, 0x1800, 0x68b2, 0x7040, 0xb85e, 0x7048, 0xb862, ++ 0x704c, 0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, 0xb8b4, 0x20e8, ++ 0xb8b8, 0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2099, ++ 0x027a, 0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2069, ++ 0x0200, 0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, 0xb96e, 0x7048, ++ 0xb872, 0x7050, 0xb876, 0x2069, 0x0200, 0x6817, 0x0000, 0xb8a0, ++ 0x9086, 0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, 0x0211, 0x1218, ++ 0x2009, 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, 0x0007, ++ 0x00d0, 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0x9182, ++ 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, 0x1218, ++ 0x2009, 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, 0x0003, ++ 0x0010, 0x2009, 0x0002, 0xb992, 0x014e, 0x013e, 0x015e, 0x00de, ++ 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, 0xb896, ++ 0x703c, 0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbbc, 0xc384, 0xba00, ++ 0x2009, 0x1873, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, ++ 0x0008, 0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, 0xc2bd, 0xd0cc, ++ 0x0128, 0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, 0xba02, 0xbbbe, ++ 0x003e, 0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, 0x0126, 0x2091, ++ 0x8000, 0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, 0x15c0, 0xaa04, ++ 0x9282, 0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x8906, ++ 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9080, ++ 0x0004, 0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, 0x4002, 0x9086, ++ 0xffff, 0x0120, 0x8109, 0x1dd0, 0x080c, 0x0db4, 0x3c00, 0x20e8, ++ 0x3300, 0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, 0x01de, 0x01ce, ++ 0x014e, 0x013e, 0x0060, 0x080c, 0x0feb, 0x0170, 0x2900, 0xb8a6, ++ 0xa803, 0x0000, 0x080c, 0x63fa, 0xa807, 0x0001, 0xae12, 0x9085, ++ 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0126, 0x2091, ++ 0x8000, 0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, 0x9005, 0x1150, ++ 0x080c, 0x6409, 0x1158, 0xa804, 0x908a, 0x0002, 0x0218, 0x8001, ++ 0xa806, 0x0020, 0x080c, 0x101d, 0xb8a7, 0x0000, 0x009e, 0x012e, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x840e, 0x012e, 0x0005, ++ 0x901e, 0x0010, 0x2019, 0x0001, 0x900e, 0x0126, 0x2091, 0x8000, ++ 0xb84c, 0x2048, 0xb800, 0xd0dc, 0x1170, 0x89ff, 0x0500, 0x83ff, ++ 0x0120, 0xa878, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, 0x1118, ++ 0xa870, 0x9506, 0x0120, 0x2908, 0xa800, 0x2048, 0x0c70, 0x080c, ++ 0x97b0, 0xaa00, 0xb84c, 0x9906, 0x1110, 0xba4e, 0x0020, 0x00a6, ++ 0x2150, 0xb202, 0x00ae, 0x82ff, 0x1110, 0xb952, 0x89ff, 0x012e, ++ 0x0005, 0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, 0x080c, ++ 0x645e, 0x0128, 0x080c, 0xbbd4, 0x0010, 0x9085, 0x0001, 0x0005, ++ 0x080c, 0x645e, 0x0128, 0x080c, 0xbb79, 0x0010, 0x9085, 0x0001, ++ 0x0005, 0x080c, 0x645e, 0x0128, 0x080c, 0xbbd1, 0x0010, 0x9085, ++ 0x0001, 0x0005, 0x080c, 0x645e, 0x0128, 0x080c, 0xbb98, 0x0010, ++ 0x9085, 0x0001, 0x0005, 0x080c, 0x645e, 0x0128, 0x080c, 0xbc15, ++ 0x0010, 0x9085, 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, 0x9085, ++ 0x0001, 0x0005, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, ++ 0x810e, 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, ++ 0x0004, 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, ++ 0x0128, 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, 0x01ce, ++ 0x013e, 0x0005, 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0004, 0x20a0, 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, 0x01de, ++ 0x014e, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e, ++ 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004, ++ 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128, ++ 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, 0x3300, ++ 0x8001, 0x20a0, 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, 0x01de, ++ 0x014e, 0x9006, 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, 0x2091, ++ 0x8000, 0xb8a4, 0x904d, 0x1128, 0x080c, 0x0feb, 0x0168, 0x2900, ++ 0xb8a6, 0x080c, 0x63fa, 0xa803, 0x0001, 0xa807, 0x0000, 0x9085, ++ 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x0126, ++ 0x2091, 0x8000, 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, 0x080c, ++ 0x101d, 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, 0xd0a4, ++ 0x0005, 0x00b6, 0x00f6, 0x080c, 0x6fb2, 0x01b0, 0x71c0, 0x81ff, ++ 0x1198, 0x71d8, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, 0x1000, ++ 0x2004, 0x905d, 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, ++ 0x1118, 0xb800, 0xc0ed, 0xb802, 0x2079, 0x1853, 0x7804, 0x00d0, ++ 0x0156, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x623e, 0x1168, ++ 0xb804, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, 0x9086, ++ 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, 0x8108, 0x1f04, ++ 0x6484, 0x015e, 0x080c, 0x6520, 0x0120, 0x2001, 0x1956, 0x200c, ++ 0x0030, 0x2079, 0x1853, 0x7804, 0x0030, 0x2009, 0x07d0, 0x2011, ++ 0x64ae, 0x080c, 0x80ca, 0x00fe, 0x00be, 0x0005, 0x00b6, 0x2011, ++ 0x64ae, 0x080c, 0x8038, 0x080c, 0x6520, 0x01d8, 0x2001, 0x107e, ++ 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, 0x080c, 0x655e, 0x0130, ++ 0x2009, 0x07d0, 0x2011, 0x64ae, 0x080c, 0x80ca, 0x00e6, 0x2071, ++ 0x1800, 0x9006, 0x707a, 0x705c, 0x707e, 0x080c, 0x2dbb, 0x00ee, ++ 0x04b0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, ++ 0x623e, 0x1538, 0xb800, 0xd0ec, 0x0520, 0x0046, 0xbaa0, 0x2220, ++ 0x9006, 0x2009, 0x0029, 0x080c, 0xd52a, 0xb800, 0xc0e5, 0xc0ec, ++ 0xb802, 0x080c, 0x655a, 0x2001, 0x0707, 0x1128, 0xb804, 0x9084, ++ 0x00ff, 0x9085, 0x0700, 0xb806, 0x2019, 0x0029, 0x080c, 0x8571, ++ 0x0076, 0x903e, 0x080c, 0x8469, 0x900e, 0x080c, 0xd29b, 0x007e, ++ 0x004e, 0x001e, 0x8108, 0x1f04, 0x64d6, 0x00ce, 0x015e, 0x00be, ++ 0x0005, 0x00b6, 0x6010, 0x2058, 0xb800, 0xc0ec, 0xb802, 0x00be, ++ 0x0005, 0x7810, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0ac, 0x0005, ++ 0x6010, 0x00b6, 0x905d, 0x0108, 0xb800, 0x00be, 0xd0bc, 0x0005, ++ 0x00b6, 0x00f6, 0x2001, 0x107e, 0x2004, 0x905d, 0x0110, 0xb800, ++ 0xd0ec, 0x00fe, 0x00be, 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, ++ 0x0006, 0xbaa0, 0x9290, 0x1000, 0x2204, 0x9b06, 0x190c, 0x0db4, ++ 0x000e, 0xba00, 0x9005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0xba02, ++ 0x002e, 0x012e, 0x0005, 0x2011, 0x1836, 0x2204, 0xd0cc, 0x0138, ++ 0x2001, 0x1954, 0x200c, 0x2011, 0x6550, 0x080c, 0x80ca, 0x0005, ++ 0x2011, 0x6550, 0x080c, 0x8038, 0x2011, 0x1836, 0x2204, 0xc0cc, ++ 0x2012, 0x0005, 0x080c, 0x5386, 0xd0ac, 0x0005, 0x080c, 0x5386, ++ 0xd0a4, 0x0005, 0x0016, 0xb904, 0x9184, 0x00ff, 0x908e, 0x0006, ++ 0x001e, 0x0005, 0x0016, 0xb904, 0x9184, 0xff00, 0x8007, 0x908e, ++ 0x0006, 0x001e, 0x0005, 0x00b6, 0x00f6, 0x080c, 0xc212, 0x0158, ++ 0x70d8, 0x9084, 0x0028, 0x0138, 0x2001, 0x107f, 0x2004, 0x905d, ++ 0x0110, 0xb8bc, 0xd094, 0x00fe, 0x00be, 0x0005, 0x0006, 0x0016, ++ 0x0036, 0x0046, 0x0076, 0x00b6, 0x2001, 0x1817, 0x203c, 0x9780, ++ 0x3138, 0x203d, 0x97bc, 0xff00, 0x873f, 0x9006, 0x2018, 0x2008, ++ 0x9284, 0x8000, 0x0110, 0x2019, 0x0001, 0x9294, 0x7fff, 0x2100, ++ 0x9706, 0x0190, 0x91a0, 0x1000, 0x2404, 0x905d, 0x0168, 0xb804, ++ 0x9084, 0x00ff, 0x9086, 0x0006, 0x1138, 0x83ff, 0x0118, 0xb89c, ++ 0xd0a4, 0x0110, 0x8211, 0x0158, 0x8108, 0x83ff, 0x0120, 0x9182, ++ 0x0800, 0x0e28, 0x0068, 0x9182, 0x007e, 0x0e08, 0x0048, 0x00be, ++ 0x007e, 0x004e, 0x003e, 0x001e, 0x9085, 0x0001, 0x000e, 0x0005, ++ 0x00be, 0x007e, 0x004e, 0x003e, 0x001e, 0x9006, 0x000e, 0x0005, ++ 0x0046, 0x0056, 0x0076, 0x00b6, 0x2100, 0x9084, 0x7fff, 0x9080, ++ 0x1000, 0x2004, 0x905d, 0x0130, 0xb804, 0x9084, 0x00ff, 0x9086, ++ 0x0006, 0x0550, 0x9184, 0x8000, 0x0580, 0x2001, 0x1817, 0x203c, ++ 0x9780, 0x3138, 0x203d, 0x97bc, 0xff00, 0x873f, 0x9006, 0x2020, ++ 0x2400, 0x9706, 0x01a0, 0x94a8, 0x1000, 0x2504, 0x905d, 0x0178, ++ 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1148, 0xb89c, 0xd0a4, ++ 0x0130, 0xb814, 0x9206, 0x1118, 0xb810, 0x9306, 0x0128, 0x8420, ++ 0x9482, 0x0800, 0x0e28, 0x0048, 0x918c, 0x7fff, 0x00be, 0x007e, ++ 0x005e, 0x004e, 0x9085, 0x0001, 0x0005, 0x918c, 0x7fff, 0x00be, ++ 0x007e, 0x005e, 0x004e, 0x9006, 0x0005, 0x2071, 0x1906, 0x7003, ++ 0x0001, 0x7007, 0x0000, 0x9006, 0x7012, 0x7016, 0x701a, 0x701e, ++ 0x700a, 0x7046, 0x2001, 0x1919, 0x2003, 0x0000, 0x0005, 0x0016, ++ 0x00e6, 0x2071, 0x191a, 0x900e, 0x710a, 0x080c, 0x5386, 0xd0fc, ++ 0x1140, 0x080c, 0x5386, 0x900e, 0xd09c, 0x0108, 0x8108, 0x7102, ++ 0x0400, 0x2001, 0x1873, 0x200c, 0x9184, 0x0007, 0x9006, 0x0002, ++ 0x6639, 0x6639, 0x6639, 0x6639, 0x6639, 0x6650, 0x665e, 0x6639, ++ 0x7003, 0x0003, 0x2009, 0x1874, 0x210c, 0x9184, 0xff00, 0x8007, ++ 0x9005, 0x1110, 0x2001, 0x0002, 0x7006, 0x0018, 0x7003, 0x0005, ++ 0x0c88, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, 0x0050, 0x684c, ++ 0x9005, 0x1150, 0x00e6, 0x2071, 0x1906, 0x7028, 0xc085, 0x702a, ++ 0x00ee, 0x9085, 0x0001, 0x0488, 0x6844, 0x9005, 0x0158, 0x080c, ++ 0x7308, 0x6a60, 0x9200, 0x7002, 0x6864, 0x9101, 0x7006, 0x9006, ++ 0x7012, 0x7016, 0x6860, 0x7002, 0x6864, 0x7006, 0x6868, 0x700a, ++ 0x686c, 0x700e, 0x6844, 0x9005, 0x1110, 0x7012, 0x7016, 0x684c, ++ 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, 0x7037, 0x0019, 0x702b, ++ 0x0001, 0x00e6, 0x2071, 0x1906, 0x7028, 0xc084, 0x702a, 0x7007, ++ 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006, 0x00ee, 0x0005, 0xa868, ++ 0xd0fc, 0x11d8, 0x00e6, 0x0026, 0x2001, 0x191a, 0x2004, 0x9005, ++ 0x0904, 0x6891, 0xa87c, 0xd0bc, 0x1904, 0x6891, 0xa978, 0xa874, ++ 0x9105, 0x1904, 0x6891, 0x2001, 0x191a, 0x2004, 0x0002, 0x6891, ++ 0x66ea, 0x6726, 0x6726, 0x6891, 0x6726, 0x0005, 0xa868, 0xd0fc, ++ 0x1500, 0x00e6, 0x0026, 0x2009, 0x191a, 0x210c, 0x81ff, 0x0904, ++ 0x6891, 0xa87c, 0xd0cc, 0x0904, 0x6891, 0xa880, 0x9084, 0x00ff, ++ 0x9086, 0x0001, 0x1904, 0x6891, 0x9186, 0x0003, 0x0904, 0x6726, ++ 0x9186, 0x0005, 0x0904, 0x6726, 0xa84f, 0x8021, 0xa853, 0x0017, ++ 0x0028, 0x0005, 0xa84f, 0x8020, 0xa853, 0x0016, 0x2071, 0x1906, ++ 0x701c, 0x9005, 0x1904, 0x6a51, 0x0e04, 0x6a9c, 0x2071, 0x0000, ++ 0xa84c, 0x7082, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, ++ 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x1187, 0x2071, 0x1800, 0x2011, 0x0001, 0xa804, 0x900d, 0x702c, ++ 0x1158, 0xa802, 0x2900, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, ++ 0x7f5d, 0x002e, 0x00ee, 0x0005, 0x0096, 0x2148, 0xa904, 0xa802, ++ 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x009e, 0x0c58, 0xa84f, 0x0000, ++ 0x00f6, 0x2079, 0x0050, 0x2071, 0x1906, 0xa803, 0x0000, 0x7010, ++ 0x9005, 0x1904, 0x6815, 0x782c, 0x908c, 0x0780, 0x190c, 0x6bc3, ++ 0x8004, 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x6744, 0x6815, ++ 0x6769, 0x67b0, 0x080c, 0x0db4, 0x2071, 0x1800, 0x2900, 0x7822, ++ 0xa804, 0x900d, 0x1170, 0x2071, 0x19cb, 0x703c, 0x9005, 0x1328, ++ 0x2001, 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, ++ 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, ++ 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, ++ 0x0c10, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1580, ++ 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009, ++ 0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee, 0x0058, ++ 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, ++ 0x70be, 0x080c, 0x7f5d, 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, ++ 0xd0a4, 0x19f0, 0x2071, 0x19cb, 0x703c, 0x9005, 0x1328, 0x2001, ++ 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, 0x0800, ++ 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, ++ 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, 0x7f5d, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x1d60, 0x00ee, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd09c, 0x11a0, 0x009e, 0x2900, ++ 0x7822, 0xa804, 0x900d, 0x1560, 0x2071, 0x19cb, 0x703c, 0x9005, ++ 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x009e, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, ++ 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, ++ 0x900d, 0x1170, 0x2071, 0x19cb, 0x703c, 0x9005, 0x1328, 0x2001, ++ 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, ++ 0x7f5d, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, ++ 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, ++ 0x2148, 0xa804, 0x900d, 0x1904, 0x686a, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6bc3, 0xd09c, 0x1198, 0x701c, 0x904d, 0x0180, 0x7010, ++ 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd09c, 0x0d68, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x01b0, 0x00e6, 0x7824, ++ 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, ++ 0x8000, 0x70be, 0x080c, 0x7f5d, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6bc3, 0xd0a4, 0x1d60, 0x00ee, 0x2071, 0x19cb, 0x703c, 0x9005, ++ 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, ++ 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, ++ 0x9200, 0x70be, 0x080c, 0x7f5d, 0x00ee, 0x0804, 0x6825, 0xa868, ++ 0xd0fc, 0x1904, 0x68cd, 0x0096, 0xa804, 0xa807, 0x0000, 0x904d, ++ 0x190c, 0x0f9d, 0x009e, 0x0018, 0xa868, 0xd0fc, 0x15f0, 0x00e6, ++ 0x0026, 0xa84f, 0x0000, 0x00f6, 0x2079, 0x0050, 0x2071, 0x1800, ++ 0x70e8, 0x8001, 0x01d0, 0x1678, 0x2071, 0x1906, 0xa803, 0x0000, ++ 0x7010, 0x9005, 0x1904, 0x69cb, 0x782c, 0x908c, 0x0780, 0x190c, ++ 0x6bc3, 0x8004, 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x68ce, ++ 0x69cb, 0x68e9, 0x695a, 0x080c, 0x0db4, 0x70eb, 0x0fa0, 0x71e4, ++ 0x8107, 0x9106, 0x9094, 0x00c0, 0x9184, 0xff3f, 0x9205, 0x70e6, ++ 0x3b08, 0x3a00, 0x9104, 0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, ++ 0x9205, 0x20d0, 0x0888, 0x70ea, 0x0878, 0x0005, 0x2071, 0x1800, ++ 0x2900, 0x7822, 0xa804, 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, ++ 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, ++ 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, ++ 0x0c60, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1904, ++ 0x6949, 0x7830, 0x8007, 0x9084, 0x001f, 0x9082, 0x0005, 0x1220, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824, 0x00e6, 0x2071, 0x0040, ++ 0x712c, 0xd19c, 0x1148, 0x2009, 0x182f, 0x210c, 0x918a, 0x0040, ++ 0x0218, 0x7022, 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, ++ 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, 0x7f5d, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x19f0, 0x0e04, 0x6940, ++ 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, ++ 0x6833, 0x0013, 0x00de, 0x2001, 0x1917, 0x200c, 0xc184, 0x2102, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, ++ 0x2009, 0x1919, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x2001, 0x1917, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e, 0x00ee, ++ 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, ++ 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, ++ 0x0804, 0x68fc, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, ++ 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, ++ 0x7f5d, 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x1d60, ++ 0x00ee, 0x0e04, 0x699e, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, ++ 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, ++ 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x1187, 0x2009, 0x1919, 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6bc3, 0xd09c, 0x1170, 0x009e, 0x2900, 0x7822, 0xa804, ++ 0x900d, 0x11e0, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, ++ 0x7046, 0x0c58, 0x009e, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, ++ 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, ++ 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, ++ 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, ++ 0x900d, 0x1904, 0x6a3c, 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, ++ 0xd09c, 0x11b0, 0x701c, 0x904d, 0x0198, 0xa84c, 0x9005, 0x1180, ++ 0x7010, 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, ++ 0x7822, 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd09c, 0x0d50, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x05c8, 0x00e6, ++ 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, ++ 0x70bc, 0x8000, 0x70be, 0x080c, 0x7f5d, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6bc3, 0xd0a4, 0x1d60, 0x00ee, 0x0e04, 0x6a35, 0x7838, ++ 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, ++ 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x2009, 0x1919, 0x200b, ++ 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x7f5d, 0x00ee, 0x0804, ++ 0x69db, 0x2071, 0x1906, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, ++ 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, ++ 0x2148, 0xa804, 0x900d, 0x1128, 0x1e04, 0x6a7c, 0x002e, 0x00ee, ++ 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, ++ 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, ++ 0x080c, 0x7f5d, 0x0e04, 0x6a66, 0x2071, 0x1906, 0x701c, 0x2048, ++ 0xa84c, 0x900d, 0x0d18, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, ++ 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x2071, 0x1906, 0x080c, ++ 0x6baf, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1906, 0xa803, 0x0000, ++ 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, ++ 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1118, 0x002e, ++ 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, ++ 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, ++ 0x70be, 0x080c, 0x7f5d, 0x002e, 0x00ee, 0x0005, 0x0006, 0xa87c, ++ 0x0006, 0xa867, 0x0103, 0x20a9, 0x001c, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x001d, 0x20a0, 0x9006, 0x4004, 0x000e, 0x9084, 0x00ff, ++ 0xa87e, 0x000e, 0xa87a, 0xa982, 0x0005, 0x2071, 0x1906, 0x7004, ++ 0x0002, 0x6ae7, 0x6ae8, 0x6bae, 0x6ae8, 0x0db4, 0x6bae, 0x0005, ++ 0x2001, 0x191a, 0x2004, 0x0002, 0x6af2, 0x6af2, 0x6b47, 0x6b48, ++ 0x6af2, 0x6b48, 0x0126, 0x2091, 0x8000, 0x1e0c, 0x6bce, 0x701c, ++ 0x904d, 0x01e0, 0xa84c, 0x9005, 0x01d8, 0x0e04, 0x6b16, 0xa94c, ++ 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, ++ 0xa870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x1187, 0x2071, 0x1906, 0x080c, 0x6baf, 0x012e, 0x0470, ++ 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd09c, ++ 0x2071, 0x1906, 0x1510, 0x2071, 0x1906, 0x700f, 0x0001, 0xa964, ++ 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, ++ 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, ++ 0x00de, 0x2071, 0x1906, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, ++ 0xa800, 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, ++ 0x00d6, 0x2008, 0x2069, 0x19cb, 0x683c, 0x9005, 0x0760, 0x0158, ++ 0x9186, 0x0003, 0x0540, 0x2001, 0x1814, 0x2004, 0x2009, 0x1a98, ++ 0x210c, 0x9102, 0x1500, 0x0126, 0x2091, 0x8000, 0x2069, 0x0050, ++ 0x693c, 0x6838, 0x9106, 0x0190, 0x0e04, 0x6b7a, 0x2069, 0x0000, ++ 0x6837, 0x8040, 0x6833, 0x0012, 0x6883, 0x8040, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x2069, 0x19cb, ++ 0x683f, 0xffff, 0x012e, 0x00de, 0x0126, 0x2091, 0x8000, 0x1e0c, ++ 0x6c3f, 0x701c, 0x904d, 0x0540, 0x2001, 0x005b, 0x2004, 0x9094, ++ 0x0780, 0x15c9, 0xd09c, 0x1500, 0x2071, 0x1906, 0x700f, 0x0001, ++ 0xa964, 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, ++ 0x00ff, 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, ++ 0x6822, 0x00de, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, ++ 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x701c, 0x904d, 0x0160, 0x7010, 0x8001, 0x7012, ++ 0xa800, 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x080c, 0x101d, ++ 0x0005, 0x012e, 0x0005, 0x2091, 0x8000, 0x0e04, 0x6bc5, 0x0006, ++ 0x0016, 0x2001, 0x8004, 0x0006, 0x0804, 0x0dbd, 0x0096, 0x00f6, ++ 0x2079, 0x0050, 0x7044, 0xd084, 0x01e0, 0xc084, 0x7046, 0x7838, ++ 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, ++ 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x1187, 0x2009, 0x1919, 0x200b, 0x0000, 0x00fe, 0x009e, ++ 0x0005, 0x782c, 0x9094, 0x0780, 0x1971, 0xd0a4, 0x0db8, 0x2009, ++ 0x1919, 0x2104, 0x8000, 0x200a, 0x9082, 0x000f, 0x0e78, 0x00e6, ++ 0x2071, 0x1800, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, ++ 0x1148, 0x2009, 0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, ++ 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, ++ 0x70bc, 0x8000, 0x70be, 0x080c, 0x7f5d, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6bc3, 0xd0a4, 0x19f0, 0x7838, 0x7938, 0x910e, 0x1de0, ++ 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x1187, 0x2009, ++ 0x1919, 0x200b, 0x0000, 0x00ee, 0x00fe, 0x009e, 0x0005, 0x00f6, ++ 0x2079, 0x0050, 0x7044, 0xd084, 0x01b8, 0xc084, 0x7046, 0x7838, ++ 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, ++ 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x1187, 0x00fe, 0x0005, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6bc3, 0xd0a4, 0x0db8, 0x00e6, 0x2071, 0x1800, 0x7824, 0x2048, ++ 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, ++ 0x7f5d, 0x782c, 0x9094, 0x0780, 0x190c, 0x6bc3, 0xd0a4, 0x1d70, ++ 0x00d6, 0x2069, 0x0050, 0x693c, 0x2069, 0x191a, 0x6808, 0x690a, ++ 0x2069, 0x19cb, 0x9102, 0x1118, 0x683c, 0x9005, 0x1328, 0x2001, ++ 0x191b, 0x200c, 0x810d, 0x693e, 0x00de, 0x00ee, 0x00fe, 0x0005, ++ 0x7094, 0x908a, 0x0029, 0x1a0c, 0x0db4, 0x9082, 0x001d, 0x001b, ++ 0x6027, 0x1e00, 0x0005, 0x6d67, 0x6ced, 0x6d09, 0x6d33, 0x6d56, ++ 0x6d96, 0x6da8, 0x6d09, 0x6d7e, 0x6ca8, 0x6cd6, 0x6ca7, 0x0005, ++ 0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1180, 0x6808, 0x9005, ++ 0x1518, 0x7097, 0x0028, 0x2069, 0x1960, 0x2d04, 0x7002, 0x080c, ++ 0x70eb, 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0, 0x7097, 0x0028, ++ 0x2069, 0x1960, 0x2d04, 0x7002, 0x6028, 0x9085, 0x0600, 0x602a, ++ 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a33, 0x080c, 0x1958, ++ 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, ++ 0x0200, 0x6804, 0x9005, 0x1178, 0x6808, 0x9005, 0x1160, 0x7097, ++ 0x0028, 0x2069, 0x1960, 0x2d04, 0x7002, 0x080c, 0x7185, 0x6028, ++ 0x9085, 0x0600, 0x602a, 0x00de, 0x0005, 0x0006, 0x2001, 0x0090, ++ 0x080c, 0x2b14, 0x000e, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x6e15, ++ 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x7097, 0x0020, ++ 0x080c, 0x6e15, 0x0028, 0x7097, 0x001d, 0x0010, 0x7097, 0x001f, ++ 0x0005, 0x2001, 0x0088, 0x080c, 0x2b14, 0x6124, 0xd1cc, 0x11e8, ++ 0xd1dc, 0x11c0, 0xd1e4, 0x1198, 0x9184, 0x1e00, 0x11d8, 0x080c, ++ 0x1982, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x6fde, ++ 0x2001, 0x0080, 0x080c, 0x2b14, 0x7097, 0x0028, 0x0058, 0x7097, ++ 0x001e, 0x0040, 0x7097, 0x001d, 0x0028, 0x7097, 0x0020, 0x0010, ++ 0x7097, 0x001f, 0x0005, 0x080c, 0x1982, 0x60e3, 0x0001, 0x600c, ++ 0xc0b4, 0x600e, 0x080c, 0x6fde, 0x2001, 0x0080, 0x080c, 0x2b14, ++ 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, ++ 0x1e00, 0x1158, 0x7097, 0x0028, 0x0040, 0x7097, 0x001e, 0x0028, ++ 0x7097, 0x001d, 0x0010, 0x7097, 0x001f, 0x0005, 0x2001, 0x00a0, ++ 0x080c, 0x2b14, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, ++ 0x1982, 0x7097, 0x001e, 0x0010, 0x7097, 0x001d, 0x0005, 0x080c, ++ 0x6e98, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x6e15, 0x0016, 0x080c, ++ 0x1982, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x7097, 0x001e, ++ 0x0020, 0x7097, 0x001f, 0x080c, 0x6e15, 0x0005, 0x0006, 0x2001, ++ 0x00a0, 0x080c, 0x2b14, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, ++ 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x7097, 0x001e, 0x0028, ++ 0x7097, 0x001d, 0x0010, 0x7097, 0x0021, 0x0005, 0x080c, 0x6e98, ++ 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x7097, ++ 0x001e, 0x0028, 0x7097, 0x001d, 0x0010, 0x7097, 0x001f, 0x0005, ++ 0x0006, 0x2001, 0x0090, 0x080c, 0x2b14, 0x000e, 0x6124, 0xd1d4, ++ 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x7097, ++ 0x001e, 0x0040, 0x7097, 0x001d, 0x0028, 0x7097, 0x0020, 0x0010, ++ 0x7097, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, ++ 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, ++ 0x080c, 0x6fb2, 0x11d8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01b0, ++ 0xc1b4, 0x2102, 0x6027, 0x0200, 0x080c, 0x2a5d, 0x6024, 0xd0cc, ++ 0x0148, 0x2001, 0x00a0, 0x080c, 0x2b14, 0x080c, 0x7296, 0x080c, ++ 0x5cd1, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x6fcc, ++ 0x0150, 0x080c, 0x6fc3, 0x1138, 0x2001, 0x0001, 0x080c, 0x260c, ++ 0x080c, 0x6f8a, 0x00a0, 0x080c, 0x6e95, 0x0178, 0x2001, 0x0001, ++ 0x080c, 0x260c, 0x7094, 0x9086, 0x001e, 0x0120, 0x7094, 0x9086, ++ 0x0022, 0x1118, 0x7097, 0x0025, 0x0010, 0x7097, 0x0021, 0x012e, ++ 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x6e26, ++ 0x080c, 0x810c, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, ++ 0x6e26, 0x080c, 0x8103, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, ++ 0x0016, 0x080c, 0x93ac, 0x2071, 0x1800, 0x080c, 0x6dc3, 0x001e, ++ 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, ++ 0x00e6, 0x00f6, 0x0126, 0x080c, 0x93ac, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, ++ 0x2011, 0x0003, 0x080c, 0x9771, 0x2011, 0x0002, 0x080c, 0x977b, ++ 0x080c, 0x9662, 0x080c, 0x80b8, 0x0036, 0x901e, 0x080c, 0x96d8, ++ 0x003e, 0x60e3, 0x0000, 0x080c, 0xd8b4, 0x080c, 0xd8cf, 0x2009, ++ 0x0004, 0x080c, 0x2a63, 0x080c, 0x297e, 0x2001, 0x1800, 0x2003, ++ 0x0004, 0x6027, 0x0008, 0x2011, 0x6e26, 0x080c, 0x810c, 0x080c, ++ 0x6fcc, 0x0118, 0x9006, 0x080c, 0x2b14, 0x080c, 0x0b8f, 0x2001, ++ 0x0001, 0x080c, 0x260c, 0x012e, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x0026, 0x00e6, 0x2011, 0x6e33, ++ 0x2071, 0x19cb, 0x701c, 0x9206, 0x1118, 0x7018, 0x9005, 0x0110, ++ 0x9085, 0x0001, 0x00ee, 0x002e, 0x0005, 0x6020, 0xd09c, 0x0005, ++ 0x6800, 0x9084, 0xfffe, 0x9086, 0x00c0, 0x01b8, 0x2001, 0x00c0, ++ 0x080c, 0x2b14, 0x0156, 0x20a9, 0x002d, 0x1d04, 0x6ea5, 0x2091, ++ 0x6000, 0x1f04, 0x6ea5, 0x015e, 0x00d6, 0x2069, 0x1800, 0x6898, ++ 0x8001, 0x0220, 0x0118, 0x689a, 0x00de, 0x0005, 0x689b, 0x0014, ++ 0x68e4, 0xd0dc, 0x0dc8, 0x6800, 0x9086, 0x0001, 0x1da8, 0x080c, ++ 0x8118, 0x0c90, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0x1800, 0x080c, 0x72a5, 0x2001, 0x193e, 0x2003, ++ 0x0000, 0x9006, 0x7096, 0x60e2, 0x6886, 0x080c, 0x26d7, 0x9006, ++ 0x080c, 0x2b14, 0x080c, 0x5b90, 0x6027, 0xffff, 0x602b, 0x182f, ++ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2001, 0x194e, 0x200c, ++ 0x9186, 0x0000, 0x0158, 0x9186, 0x0001, 0x0158, 0x9186, 0x0002, ++ 0x0158, 0x9186, 0x0003, 0x0158, 0x0804, 0x6f7a, 0x7097, 0x0022, ++ 0x0040, 0x7097, 0x0021, 0x0028, 0x7097, 0x0023, 0x0010, 0x7097, ++ 0x0024, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, ++ 0x26d7, 0x0026, 0x080c, 0x9db8, 0x002e, 0x7000, 0x908e, 0x0004, ++ 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, ++ 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0150, 0x012e, ++ 0x015e, 0x080c, 0xc212, 0x0118, 0x9006, 0x080c, 0x2b3e, 0x0804, ++ 0x6f86, 0x6800, 0x9084, 0x00a1, 0xc0bd, 0x6802, 0x080c, 0x2a5d, ++ 0x6904, 0xd1d4, 0x1140, 0x2001, 0x0100, 0x080c, 0x2b14, 0x1f04, ++ 0x6f24, 0x080c, 0x7009, 0x012e, 0x015e, 0x080c, 0x6fc3, 0x01a8, ++ 0x6044, 0x9005, 0x0168, 0x6050, 0x0006, 0x9085, 0x0020, 0x6052, ++ 0x080c, 0x7009, 0x9006, 0x8001, 0x1df0, 0x000e, 0x6052, 0x0028, ++ 0x6804, 0xd0d4, 0x1110, 0x080c, 0x7009, 0x080c, 0xc212, 0x0118, ++ 0x9006, 0x080c, 0x2b3e, 0x0016, 0x0026, 0x7000, 0x908e, 0x0004, ++ 0x0130, 0x2009, 0x00c8, 0x2011, 0x6e33, 0x080c, 0x80ca, 0x002e, ++ 0x001e, 0x080c, 0x7f54, 0x7034, 0xc085, 0x7036, 0x2001, 0x194e, ++ 0x2003, 0x0004, 0x080c, 0x6c90, 0x080c, 0x6fc3, 0x0138, 0x6804, ++ 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, 0x729b, 0x00ee, 0x00de, ++ 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0x1800, 0x080c, 0x7f6b, 0x080c, 0x7f5d, 0x080c, ++ 0x72a5, 0x2001, 0x193e, 0x2003, 0x0000, 0x9006, 0x7096, 0x60e2, ++ 0x6886, 0x080c, 0x26d7, 0x9006, 0x080c, 0x2b14, 0x6043, 0x0090, ++ 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, ++ 0x00ce, 0x0005, 0x0006, 0x2001, 0x194d, 0x2004, 0x9086, 0xaaaa, ++ 0x000e, 0x0005, 0x0006, 0x080c, 0x538a, 0x9084, 0x0030, 0x9086, ++ 0x0000, 0x000e, 0x0005, 0x0006, 0x080c, 0x538a, 0x9084, 0x0030, ++ 0x9086, 0x0030, 0x000e, 0x0005, 0x0006, 0x080c, 0x538a, 0x9084, ++ 0x0030, 0x9086, 0x0010, 0x000e, 0x0005, 0x0006, 0x080c, 0x538a, ++ 0x9084, 0x0030, 0x9086, 0x0020, 0x000e, 0x0005, 0x0036, 0x0016, ++ 0x2001, 0x180c, 0x2004, 0x908c, 0x0013, 0x0180, 0x0020, 0x080c, ++ 0x26f7, 0x900e, 0x0028, 0x080c, 0x655a, 0x1dc8, 0x2009, 0x0002, ++ 0x2019, 0x0028, 0x080c, 0x2fa5, 0x9006, 0x0019, 0x001e, 0x003e, ++ 0x0005, 0x00e6, 0x2071, 0x180c, 0x2e04, 0x0130, 0x080c, 0xc20b, ++ 0x1128, 0x9085, 0x0010, 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, ++ 0x0005, 0x6050, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, ++ 0x0006, 0x6028, 0x0006, 0x0016, 0x6138, 0x6050, 0x9084, 0xfbff, ++ 0x9085, 0x2000, 0x6052, 0x613a, 0x20a9, 0x0012, 0x1d04, 0x701e, ++ 0x2091, 0x6000, 0x1f04, 0x701e, 0x602f, 0x0100, 0x602f, 0x0000, ++ 0x6050, 0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, 0x613a, 0x001e, ++ 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, 0x6006, ++ 0x000e, 0x600e, 0x000e, 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, ++ 0x2001, 0x0001, 0x080c, 0x26d7, 0x2001, 0x00a0, 0x0006, 0x080c, ++ 0xc212, 0x000e, 0x0130, 0x080c, 0x2b32, 0x9006, 0x080c, 0x2b3e, ++ 0x0010, 0x080c, 0x2b14, 0x000e, 0x6052, 0x6050, 0x0006, 0xc0e5, ++ 0x6052, 0x00f6, 0x2079, 0x0100, 0x080c, 0x29d2, 0x00fe, 0x000e, ++ 0x6052, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x6020, ++ 0x9084, 0x0080, 0x0138, 0x2001, 0x180c, 0x200c, 0xc1c5, 0x2102, ++ 0x0804, 0x70dd, 0x2001, 0x180c, 0x200c, 0xc1c4, 0x2102, 0x6028, ++ 0x9084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x2001, 0x0090, 0x080c, ++ 0x2b14, 0x20a9, 0x0366, 0x6024, 0xd0cc, 0x1518, 0x1d04, 0x708b, ++ 0x2091, 0x6000, 0x1f04, 0x708b, 0x2011, 0x0003, 0x080c, 0x9771, ++ 0x2011, 0x0002, 0x080c, 0x977b, 0x080c, 0x9662, 0x901e, 0x080c, ++ 0x96d8, 0x2001, 0x00a0, 0x080c, 0x2b14, 0x080c, 0x7296, 0x080c, ++ 0x5cd1, 0x080c, 0xc212, 0x0110, 0x080c, 0x0d22, 0x9085, 0x0001, ++ 0x0490, 0x86ff, 0x1110, 0x080c, 0x1982, 0x60e3, 0x0000, 0x2001, ++ 0x0002, 0x080c, 0x26d7, 0x60e2, 0x2001, 0x0080, 0x080c, 0x2b14, ++ 0x20a9, 0x0366, 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x2a5d, ++ 0x6024, 0x910c, 0x0138, 0x1d04, 0x70c2, 0x2091, 0x6000, 0x1f04, ++ 0x70c2, 0x0810, 0x6028, 0x9085, 0x1e00, 0x602a, 0x70b0, 0x9005, ++ 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x080c, 0xc212, 0x0110, ++ 0x080c, 0x0d22, 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, ++ 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x7000, 0x9086, ++ 0x0003, 0x1168, 0x2001, 0x020b, 0x2004, 0x9084, 0x5540, 0x9086, ++ 0x5540, 0x1128, 0x2069, 0x1a49, 0x2d04, 0x8000, 0x206a, 0x2069, ++ 0x0140, 0x6020, 0x9084, 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, ++ 0x7150, 0x2001, 0x0088, 0x080c, 0x2b14, 0x9006, 0x60e2, 0x6886, ++ 0x080c, 0x26d7, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, ++ 0x9005, 0x01c0, 0x6028, 0x9084, 0xfbff, 0x602a, 0x6027, 0x0400, ++ 0x2069, 0x1960, 0x7000, 0x206a, 0x7097, 0x0026, 0x7003, 0x0001, ++ 0x20a9, 0x0002, 0x1d04, 0x7132, 0x2091, 0x6000, 0x1f04, 0x7132, ++ 0x0804, 0x717d, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, ++ 0x2009, 0x1e00, 0x080c, 0x2a5d, 0x6024, 0x910c, 0x0508, 0x9084, ++ 0x1a00, 0x11f0, 0x1d04, 0x713e, 0x2091, 0x6000, 0x1f04, 0x713e, ++ 0x2011, 0x0003, 0x080c, 0x9771, 0x2011, 0x0002, 0x080c, 0x977b, ++ 0x080c, 0x9662, 0x901e, 0x080c, 0x96d8, 0x2001, 0x00a0, 0x080c, ++ 0x2b14, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x9085, 0x0001, 0x00a8, ++ 0x2001, 0x0080, 0x080c, 0x2b14, 0x2069, 0x0140, 0x60e3, 0x0000, ++ 0x70b0, 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, ++ 0x0002, 0x080c, 0x26d7, 0x60e2, 0x9006, 0x00ee, 0x00de, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, ++ 0x6020, 0x9084, 0x00c0, 0x01c8, 0x2011, 0x0003, 0x080c, 0x9771, ++ 0x2011, 0x0002, 0x080c, 0x977b, 0x080c, 0x9662, 0x901e, 0x080c, ++ 0x96d8, 0x2069, 0x0140, 0x2001, 0x00a0, 0x080c, 0x2b14, 0x080c, ++ 0x7296, 0x080c, 0x5cd1, 0x0804, 0x7217, 0x2001, 0x180c, 0x200c, ++ 0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x6e1b, 0x2069, 0x0140, ++ 0x2001, 0x0080, 0x080c, 0x2b14, 0x60e3, 0x0000, 0x2069, 0x0200, ++ 0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x0180, 0x6028, 0x9084, ++ 0xfdff, 0x602a, 0x6027, 0x0200, 0x2069, 0x1960, 0x7000, 0x206a, ++ 0x7097, 0x0027, 0x7003, 0x0001, 0x0804, 0x7217, 0x6027, 0x1e00, ++ 0x2009, 0x1e00, 0x080c, 0x2a5d, 0x6024, 0x910c, 0x01c8, 0x9084, ++ 0x1c00, 0x11b0, 0x1d04, 0x71d6, 0x0006, 0x0016, 0x00c6, 0x00d6, ++ 0x00e6, 0x080c, 0x7f9c, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, ++ 0x00e6, 0x2071, 0x19cb, 0x7018, 0x00ee, 0x9005, 0x19f8, 0x01f8, ++ 0x0026, 0x2011, 0x6e33, 0x080c, 0x8038, 0x2011, 0x6e26, 0x080c, ++ 0x810c, 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70b0, 0x9005, ++ 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x0002, 0x080c, ++ 0x26d7, 0x60e2, 0x2001, 0x180c, 0x200c, 0xc1b4, 0x2102, 0x00ee, ++ 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, ++ 0x2071, 0x1800, 0x080c, 0xc20b, 0x1904, 0x7284, 0x7130, 0xd184, ++ 0x1170, 0x080c, 0x3133, 0x0138, 0xc18d, 0x7132, 0x2011, 0x1854, ++ 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, 0x0904, 0x7284, 0x2011, ++ 0x1854, 0x220c, 0x0438, 0x0016, 0x2019, 0x000e, 0x080c, 0xd4a6, ++ 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, 0x9186, 0x007e, 0x01a0, ++ 0x9186, 0x0080, 0x0188, 0x080c, 0x623e, 0x1170, 0x2120, 0x9006, ++ 0x0016, 0x2009, 0x000e, 0x080c, 0xd52a, 0x2009, 0x0001, 0x2011, ++ 0x0100, 0x080c, 0x822f, 0x001e, 0x8108, 0x1f04, 0x724d, 0x00be, ++ 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0002, 0x2019, ++ 0x0004, 0x080c, 0x2fa5, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9, ++ 0x007f, 0x900e, 0x080c, 0x623e, 0x1110, 0x080c, 0x5ceb, 0x8108, ++ 0x1f04, 0x727a, 0x00be, 0x015e, 0x080c, 0x1982, 0x080c, 0x9db8, ++ 0x60e3, 0x0000, 0x080c, 0x5cd1, 0x080c, 0x6ee4, 0x00ee, 0x00ce, ++ 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, 0x194e, ++ 0x2003, 0x0001, 0x0005, 0x2001, 0x194e, 0x2003, 0x0000, 0x0005, ++ 0x2001, 0x194d, 0x2003, 0xaaaa, 0x0005, 0x2001, 0x194d, 0x2003, ++ 0x0000, 0x0005, 0x2071, 0x18f0, 0x7003, 0x0000, 0x7007, 0x0000, ++ 0x080c, 0x1004, 0x090c, 0x0db4, 0xa8ab, 0xdcb0, 0x2900, 0x704e, ++ 0x080c, 0x1004, 0x090c, 0x0db4, 0xa8ab, 0xdcb0, 0x2900, 0x7052, ++ 0xa867, 0x0000, 0xa86b, 0x0001, 0xa89f, 0x0000, 0x0005, 0x00e6, ++ 0x2071, 0x0040, 0x6848, 0x9005, 0x1118, 0x9085, 0x0001, 0x04b0, ++ 0x6840, 0x9005, 0x0150, 0x04a1, 0x6a50, 0x9200, 0x7002, 0x6854, ++ 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6850, 0x7002, 0x6854, ++ 0x7006, 0x6858, 0x700a, 0x685c, 0x700e, 0x6840, 0x9005, 0x1110, ++ 0x7012, 0x7016, 0x6848, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, ++ 0x2001, 0x0019, 0x7036, 0x702b, 0x0001, 0x2001, 0x0004, 0x200c, ++ 0x918c, 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6, 0x2069, 0x18f0, ++ 0x6807, 0x0001, 0x00de, 0x080c, 0x7897, 0x9006, 0x00ee, 0x0005, ++ 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x2011, 0x0100, 0x2214, ++ 0x9296, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, 0x3e08, 0x1f04, ++ 0x730c, 0x015e, 0x0005, 0x2079, 0x0040, 0x2071, 0x18f0, 0x7004, ++ 0x0002, 0x732b, 0x732c, 0x7363, 0x73be, 0x74ff, 0x7329, 0x7329, ++ 0x7529, 0x080c, 0x0db4, 0x0005, 0x2079, 0x0040, 0x782c, 0x908c, ++ 0x0780, 0x190c, 0x7923, 0xd0a4, 0x01f0, 0x7824, 0x2048, 0x9006, ++ 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a, 0x0040, 0x0608, ++ 0x00b8, 0x2001, 0x1800, 0x200c, 0x9186, 0x0003, 0x1160, 0x7104, ++ 0x9186, 0x0004, 0x0140, 0x9186, 0x0007, 0x0128, 0x9186, 0x0003, ++ 0x19e8, 0x080c, 0x73be, 0x782c, 0xd09c, 0x090c, 0x7897, 0x0005, ++ 0x9082, 0x005a, 0x1218, 0x2100, 0x003b, 0x0c18, 0x080c, 0x73f4, ++ 0x0c90, 0x00e3, 0x08f0, 0x0005, 0x73f4, 0x73f4, 0x73f4, 0x73f4, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x7416, 0x73f4, 0x73f4, 0x73f4, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, ++ 0x7400, 0x73f4, 0x75fe, 0x73f4, 0x73f4, 0x73f4, 0x7416, 0x73f4, ++ 0x7400, 0x763f, 0x7680, 0x76c7, 0x76db, 0x73f4, 0x73f4, 0x7416, ++ 0x7400, 0x73f4, 0x73f4, 0x74d3, 0x7786, 0x77a1, 0x73f4, 0x7416, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x74c9, 0x77a1, 0x73f4, 0x73f4, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x742a, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, ++ 0x73f4, 0x78c7, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x743e, ++ 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x73f4, 0x2079, 0x0040, ++ 0x7004, 0x9086, 0x0003, 0x1198, 0x782c, 0x080c, 0x78c0, 0xd0a4, ++ 0x0170, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, ++ 0x00ff, 0x908a, 0x001a, 0x1210, 0x002b, 0x0c50, 0x00e9, 0x080c, ++ 0x7897, 0x0005, 0x73f4, 0x7400, 0x75ea, 0x73f4, 0x7400, 0x73f4, ++ 0x7400, 0x7400, 0x73f4, 0x7400, 0x75ea, 0x7400, 0x7400, 0x7400, ++ 0x7400, 0x7400, 0x73f4, 0x7400, 0x75ea, 0x73f4, 0x73f4, 0x7400, ++ 0x73f4, 0x73f4, 0x73f4, 0x7400, 0x00e6, 0x2071, 0x18f0, 0x2009, ++ 0x0400, 0x0071, 0x00ee, 0x0005, 0x2009, 0x1000, 0x0049, 0x0005, ++ 0x2009, 0x2000, 0x0029, 0x0005, 0x2009, 0x0800, 0x0009, 0x0005, ++ 0x7007, 0x0001, 0xa868, 0x9084, 0x00ff, 0x9105, 0xa86a, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x688c, 0x012e, 0x0005, 0xa864, 0x8007, ++ 0x9084, 0x00ff, 0x0d08, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, ++ 0x75a8, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, ++ 0x75a8, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0968, 0x8001, ++ 0x1120, 0x7007, 0x0001, 0x0804, 0x75c3, 0x7007, 0x0003, 0x7012, ++ 0x2900, 0x7016, 0x701a, 0x704b, 0x75c3, 0x0005, 0xa864, 0x8007, ++ 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, 0x73fc, 0x7007, 0x0001, ++ 0x2009, 0x1833, 0x210c, 0x81ff, 0x1904, 0x74a0, 0xa994, 0x9186, ++ 0x006f, 0x0188, 0x9186, 0x0074, 0x15b0, 0x0026, 0x2011, 0x0010, ++ 0x080c, 0x6586, 0x002e, 0x0578, 0x0016, 0xa998, 0x080c, 0x65d0, ++ 0x001e, 0x1548, 0x0400, 0x080c, 0x6fb2, 0x0140, 0xa897, 0x4005, ++ 0xa89b, 0x0016, 0x2001, 0x0030, 0x900e, 0x0438, 0x0026, 0x2011, ++ 0x8008, 0x080c, 0x6586, 0x002e, 0x01b0, 0x0016, 0x0026, 0x0036, ++ 0xa998, 0xaaa0, 0xab9c, 0x918d, 0x8000, 0x080c, 0x65d0, 0x003e, ++ 0x002e, 0x001e, 0x1140, 0xa897, 0x4005, 0xa89b, 0x4009, 0x2001, ++ 0x0030, 0x900e, 0x0050, 0xa868, 0x9084, 0x00ff, 0xa86a, 0xa883, ++ 0x0000, 0x080c, 0x5f00, 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0xa867, 0x0139, 0xa87a, 0xa982, 0x080c, 0x688c, 0x012e, 0x0ca0, ++ 0xa994, 0x9186, 0x0071, 0x0904, 0x744e, 0x9186, 0x0064, 0x0904, ++ 0x744e, 0x9186, 0x007c, 0x0904, 0x744e, 0x9186, 0x0028, 0x0904, ++ 0x744e, 0x9186, 0x0038, 0x0904, 0x744e, 0x9186, 0x0078, 0x0904, ++ 0x744e, 0x9186, 0x005f, 0x0904, 0x744e, 0x9186, 0x0056, 0x0904, ++ 0x744e, 0xa897, 0x4005, 0xa89b, 0x0001, 0x2001, 0x0030, 0x900e, ++ 0x0860, 0xa87c, 0x9084, 0x00c0, 0x9086, 0x00c0, 0x1120, 0x7007, ++ 0x0001, 0x0804, 0x77b8, 0x2900, 0x7016, 0x701a, 0x20a9, 0x0004, ++ 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0030, 0x2098, 0x7050, 0x2040, ++ 0xa060, 0x20e8, 0xa05c, 0x9080, 0x0023, 0x20a0, 0x4003, 0xa888, ++ 0x7012, 0x9082, 0x0401, 0x1a04, 0x7404, 0xaab4, 0x928a, 0x0002, ++ 0x1a04, 0x7404, 0x82ff, 0x1138, 0xa8b8, 0xa9bc, 0x9105, 0x0118, ++ 0x2001, 0x7566, 0x0018, 0x9280, 0x755c, 0x2005, 0x7056, 0x7010, ++ 0x9015, 0x0904, 0x7547, 0x080c, 0x1004, 0x1118, 0x7007, 0x0004, ++ 0x0005, 0x2900, 0x7022, 0x7054, 0x2060, 0xe000, 0xa866, 0x7050, ++ 0x2040, 0xa95c, 0xe004, 0x9100, 0xa076, 0xa860, 0xa072, 0xe008, ++ 0x920a, 0x1210, 0x900e, 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, ++ 0x9296, 0x0004, 0x0108, 0x9108, 0xa17a, 0x810b, 0xa17e, 0x080c, ++ 0x10d5, 0xa06c, 0x908e, 0x0100, 0x0170, 0x9086, 0x0200, 0x0118, ++ 0x7007, 0x0007, 0x0005, 0x7020, 0x2048, 0x080c, 0x101d, 0x7014, ++ 0x2048, 0x0804, 0x7404, 0x7020, 0x2048, 0x7018, 0xa802, 0xa807, ++ 0x0000, 0x2908, 0x2048, 0xa906, 0x711a, 0x0804, 0x74ff, 0x7014, ++ 0x2048, 0x7007, 0x0001, 0xa8b4, 0x9005, 0x1128, 0xa8b8, 0xa9bc, ++ 0x9105, 0x0108, 0x00b9, 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, ++ 0x0904, 0x77b8, 0x0804, 0x75a8, 0x755e, 0x7562, 0x0002, 0x001d, ++ 0x0007, 0x0004, 0x000a, 0x001b, 0x0005, 0x0006, 0x000a, 0x001d, ++ 0x0005, 0x0004, 0x0076, 0x0066, 0xafb8, 0xaebc, 0xa804, 0x2050, ++ 0xb0c0, 0xb0e2, 0xb0bc, 0xb0de, 0xb0b8, 0xb0d2, 0xb0b4, 0xb0ce, ++ 0xb6da, 0xb7d6, 0xb0b0, 0xb0ca, 0xb0ac, 0xb0c6, 0xb0a8, 0xb0ba, ++ 0xb0a4, 0xb0b6, 0xb6c2, 0xb7be, 0xb0a0, 0xb0b2, 0xb09c, 0xb0ae, ++ 0xb098, 0xb0a2, 0xb094, 0xb09e, 0xb6aa, 0xb7a6, 0xb090, 0xb09a, ++ 0xb08c, 0xb096, 0xb088, 0xb08a, 0xb084, 0xb086, 0xb692, 0xb78e, ++ 0xb080, 0xb082, 0xb07c, 0xb07e, 0xb078, 0xb072, 0xb074, 0xb06e, ++ 0xb67a, 0xb776, 0xb004, 0x9055, 0x1958, 0x006e, 0x007e, 0x0005, ++ 0x2009, 0x1833, 0x210c, 0x81ff, 0x1178, 0x080c, 0x5d4d, 0x1108, ++ 0x0005, 0x080c, 0x6ac6, 0x0126, 0x2091, 0x8000, 0x080c, 0xbe06, ++ 0x080c, 0x688c, 0x012e, 0x0ca0, 0x080c, 0xc20b, 0x1d70, 0x2001, ++ 0x0028, 0x900e, 0x0c70, 0x2009, 0x1833, 0x210c, 0x81ff, 0x11d8, ++ 0xa888, 0x9005, 0x01e0, 0xa883, 0x0000, 0xa87c, 0xd0f4, 0x0120, ++ 0x080c, 0x5e62, 0x1138, 0x0005, 0x9006, 0xa87a, 0x080c, 0x5ddd, ++ 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0xa87a, 0xa982, 0x080c, ++ 0x688c, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x900e, 0x0c98, 0x2001, ++ 0x0000, 0x0c80, 0x7018, 0xa802, 0x2908, 0x2048, 0xa906, 0x711a, ++ 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0003, 0x0030, 0x7014, ++ 0x2048, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x00b6, 0x7007, ++ 0x0001, 0xa974, 0xa878, 0x9084, 0x00ff, 0x9096, 0x0004, 0x0540, ++ 0x20a9, 0x0001, 0x9096, 0x0001, 0x0190, 0x900e, 0x20a9, 0x0800, ++ 0x9096, 0x0002, 0x0160, 0x9005, 0x11d8, 0xa974, 0x080c, 0x623e, ++ 0x11b8, 0x0066, 0xae80, 0x080c, 0x634e, 0x006e, 0x0088, 0x0046, ++ 0x2011, 0x180c, 0x2224, 0xc484, 0x2412, 0x004e, 0x00c6, 0x080c, ++ 0x623e, 0x1110, 0x080c, 0x644e, 0x8108, 0x1f04, 0x7627, 0x00ce, ++ 0xa87c, 0xd084, 0x1120, 0x080c, 0x101d, 0x00be, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x688c, 0x012e, 0x00be, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x655e, 0x0580, 0x2061, ++ 0x1a41, 0x6100, 0xd184, 0x0178, 0xa888, 0x9084, 0x00ff, 0x1550, ++ 0x6000, 0xd084, 0x0520, 0x6004, 0x9005, 0x1538, 0x6003, 0x0000, ++ 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0xa890, 0x9005, 0x1110, ++ 0x2001, 0x001e, 0x8000, 0x6016, 0xa888, 0x9084, 0x00ff, 0x0178, ++ 0x6006, 0xa888, 0x8007, 0x9084, 0x00ff, 0x0148, 0x600a, 0xa888, ++ 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804, 0x7881, 0x012e, ++ 0x0804, 0x787b, 0x012e, 0x0804, 0x7875, 0x012e, 0x0804, 0x7878, ++ 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x655e, 0x05e0, ++ 0x2061, 0x1a41, 0x6000, 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, ++ 0x1530, 0xac78, 0x9484, 0x0003, 0x0170, 0xa988, 0x918c, 0x00ff, ++ 0x8001, 0x1120, 0x2100, 0x9210, 0x0620, 0x0028, 0x8001, 0x1508, ++ 0x2100, 0x9212, 0x02f0, 0x9484, 0x000c, 0x0188, 0xa988, 0x810f, ++ 0x918c, 0x00ff, 0x9082, 0x0004, 0x1120, 0x2100, 0x9318, 0x0288, ++ 0x0030, 0x9082, 0x0004, 0x1168, 0x2100, 0x931a, 0x0250, 0xa890, ++ 0x9005, 0x0110, 0x8000, 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, ++ 0x7881, 0x012e, 0x0804, 0x787e, 0x012e, 0x0804, 0x787b, 0x0126, ++ 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0x1a41, 0x6300, 0xd38c, ++ 0x1120, 0x6308, 0x8318, 0x0220, 0x630a, 0x012e, 0x0804, 0x788f, ++ 0x012e, 0x0804, 0x787e, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, ++ 0x7007, 0x0001, 0xa87c, 0xd0ac, 0x0148, 0x00c6, 0x2061, 0x1a41, ++ 0x6000, 0x9084, 0xfcff, 0x6002, 0x00ce, 0x0440, 0xa888, 0x9005, ++ 0x05d8, 0xa88c, 0x9065, 0x0598, 0x2001, 0x1833, 0x2004, 0x9005, ++ 0x0118, 0x080c, 0x9e62, 0x0068, 0x6017, 0xf400, 0x605b, 0x0000, ++ 0xa97c, 0xd1a4, 0x0110, 0xa980, 0x615a, 0x2009, 0x0041, 0x080c, ++ 0x9eac, 0xa988, 0x918c, 0xff00, 0x9186, 0x2000, 0x1138, 0x0026, ++ 0x900e, 0x2011, 0xfdff, 0x080c, 0x822f, 0x002e, 0xa87c, 0xd0c4, ++ 0x0148, 0x2061, 0x1a41, 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, ++ 0x0208, 0x600a, 0x00ce, 0x012e, 0x00be, 0x0804, 0x7881, 0x00ce, ++ 0x012e, 0x00be, 0x0804, 0x787b, 0xa984, 0x9186, 0x002e, 0x0d30, ++ 0x9186, 0x002d, 0x0d18, 0x9186, 0x0045, 0x0510, 0x9186, 0x002a, ++ 0x1130, 0x2001, 0x180c, 0x200c, 0xc194, 0x2102, 0x08b8, 0x9186, ++ 0x0020, 0x0158, 0x9186, 0x0029, 0x1d10, 0xa974, 0x080c, 0x623e, ++ 0x1968, 0xb800, 0xc0e4, 0xb802, 0x0848, 0xa88c, 0x9065, 0x09b8, ++ 0x6007, 0x0024, 0x2001, 0x1957, 0x2004, 0x601a, 0x0804, 0x7716, ++ 0xa88c, 0x9065, 0x0960, 0x00e6, 0xa890, 0x9075, 0x2001, 0x1833, ++ 0x2004, 0x9005, 0x0150, 0x080c, 0x9e62, 0x8eff, 0x0118, 0x2e60, ++ 0x080c, 0x9e62, 0x00ee, 0x0804, 0x7716, 0x6024, 0xc0dc, 0xc0d5, ++ 0x6026, 0x2e60, 0x6007, 0x003a, 0xa8a0, 0x9005, 0x0130, 0x6007, ++ 0x003b, 0xa8a4, 0x602e, 0xa8a8, 0x6016, 0x6003, 0x0001, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x00ee, 0x0804, 0x7716, 0x2061, 0x1a41, ++ 0x6000, 0xd084, 0x0190, 0xd08c, 0x1904, 0x788f, 0x0126, 0x2091, ++ 0x8000, 0x6204, 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x788f, ++ 0x012e, 0xa883, 0x0016, 0x0804, 0x7888, 0xa883, 0x0007, 0x0804, ++ 0x7888, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0130, 0x8001, 0x1138, ++ 0x7007, 0x0001, 0x0069, 0x0005, 0x080c, 0x73fc, 0x0040, 0x7007, ++ 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, 0x77b8, 0x0005, ++ 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x903e, 0x2061, 0x1800, ++ 0x61cc, 0x81ff, 0x1904, 0x783a, 0x6130, 0xd194, 0x1904, 0x7864, ++ 0xa878, 0x2070, 0x9e82, 0x1cd0, 0x0a04, 0x782e, 0x6064, 0x9e02, ++ 0x1a04, 0x782e, 0x7120, 0x9186, 0x0006, 0x1904, 0x7820, 0x7010, ++ 0x905d, 0x0904, 0x783a, 0xb800, 0xd0e4, 0x1904, 0x785e, 0x2061, ++ 0x1a41, 0x6100, 0x9184, 0x0301, 0x9086, 0x0001, 0x15a0, 0x7024, ++ 0xd0dc, 0x1904, 0x7867, 0xa883, 0x0000, 0xa803, 0x0000, 0x2908, ++ 0x7014, 0x9005, 0x1198, 0x7116, 0xa87c, 0xd0f4, 0x1904, 0x786a, ++ 0x080c, 0x5386, 0xd09c, 0x1118, 0xa87c, 0xc0cc, 0xa87e, 0x2e60, ++ 0x080c, 0x814f, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2048, 0xa800, ++ 0x9005, 0x1de0, 0xa902, 0x2148, 0xa87c, 0xd0f4, 0x1904, 0x786a, ++ 0x012e, 0x00ee, 0x00be, 0x0005, 0x012e, 0x00ee, 0xa883, 0x0006, ++ 0x00be, 0x0804, 0x7888, 0xd184, 0x0db8, 0xd1c4, 0x1190, 0x00a0, ++ 0xa974, 0x080c, 0x623e, 0x15d0, 0xb800, 0xd0e4, 0x15b8, 0x7120, ++ 0x9186, 0x0007, 0x1118, 0xa883, 0x0002, 0x0490, 0xa883, 0x0008, ++ 0x0478, 0xa883, 0x000e, 0x0460, 0xa883, 0x0017, 0x0448, 0xa883, ++ 0x0035, 0x0430, 0x080c, 0x538a, 0xd0fc, 0x01e8, 0xa878, 0x2070, ++ 0x9e82, 0x1cd0, 0x02c0, 0x6064, 0x9e02, 0x12a8, 0x7120, 0x9186, ++ 0x0006, 0x1188, 0x7010, 0x905d, 0x0170, 0xb800, 0xd0bc, 0x0158, ++ 0x2039, 0x0001, 0x7000, 0x9086, 0x0007, 0x1904, 0x77c4, 0x7003, ++ 0x0002, 0x0804, 0x77c4, 0xa883, 0x0028, 0x0010, 0xa883, 0x0029, ++ 0x012e, 0x00ee, 0x00be, 0x0420, 0xa883, 0x002a, 0x0cc8, 0xa883, ++ 0x0045, 0x0cb0, 0x2e60, 0x2019, 0x0002, 0x601b, 0x0014, 0x080c, ++ 0xd0e5, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2009, 0x003e, 0x0058, ++ 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, 0x2009, 0x0016, ++ 0x0010, 0x2009, 0x0001, 0xa884, 0x9084, 0xff00, 0x9105, 0xa886, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x688c, 0x012e, 0x0005, 0x080c, ++ 0x101d, 0x0005, 0x00d6, 0x080c, 0x8146, 0x00de, 0x0005, 0x00d6, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x0040, 0x702c, 0xd084, ++ 0x01d8, 0x908c, 0x0780, 0x190c, 0x7923, 0xd09c, 0x11a8, 0x2071, ++ 0x1800, 0x70bc, 0x90ea, 0x0040, 0x0278, 0x8001, 0x70be, 0x702c, ++ 0x2048, 0xa800, 0x702e, 0x9006, 0xa802, 0xa806, 0x2071, 0x0040, ++ 0x2900, 0x7022, 0x702c, 0x0c28, 0x012e, 0x00ee, 0x00de, 0x0005, ++ 0x0006, 0x9084, 0x0780, 0x190c, 0x7923, 0x000e, 0x0005, 0x00d6, ++ 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6, 0x7007, 0x0001, 0xaa74, ++ 0x9282, 0x0004, 0x1a04, 0x7914, 0xa97c, 0x9188, 0x1000, 0x2104, ++ 0x905d, 0xb804, 0xd284, 0x0140, 0x05e8, 0x8007, 0x9084, 0x00ff, ++ 0x9084, 0x0006, 0x1108, 0x04b0, 0x2b10, 0x080c, 0x9ddc, 0x1118, ++ 0x080c, 0x9e7f, 0x05a8, 0x6212, 0xa874, 0x0002, 0x78f2, 0x78f7, ++ 0x78fa, 0x7900, 0x2019, 0x0002, 0x080c, 0xd4a6, 0x0060, 0x080c, ++ 0xd442, 0x0048, 0x2019, 0x0002, 0xa980, 0x080c, 0xd45d, 0x0018, ++ 0xa980, 0x080c, 0xd442, 0x080c, 0x9e32, 0xa887, 0x0000, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x688c, 0x012e, 0x00be, 0x001e, 0x002e, ++ 0x003e, 0x00ce, 0x00de, 0x0005, 0xa887, 0x0006, 0x0c80, 0xa887, ++ 0x0002, 0x0c68, 0xa887, 0x0005, 0x0c50, 0xa887, 0x0004, 0x0c38, ++ 0xa887, 0x0007, 0x0c20, 0x2091, 0x8000, 0x0e04, 0x7925, 0x0006, ++ 0x0016, 0x2001, 0x8003, 0x0006, 0x0804, 0x0dbd, 0x2001, 0x1833, ++ 0x2004, 0x9005, 0x0005, 0x0005, 0x00f6, 0x2079, 0x0300, 0x2001, ++ 0x0200, 0x200c, 0xc1e5, 0xc1dc, 0x2102, 0x2009, 0x0218, 0x210c, ++ 0xd1ec, 0x1120, 0x080c, 0x14a7, 0x00fe, 0x0005, 0x2001, 0x020d, ++ 0x2003, 0x0020, 0x781f, 0x0300, 0x00fe, 0x0005, 0x781c, 0xd08c, ++ 0x0904, 0x79a5, 0x68bc, 0x90aa, 0x0005, 0x0a04, 0x7f54, 0x7d44, ++ 0x7c40, 0x9584, 0x00f6, 0x1510, 0x9484, 0x7000, 0x0140, 0x908a, ++ 0x2000, 0x1260, 0x9584, 0x0700, 0x8007, 0x0804, 0x79ac, 0x7000, ++ 0x9084, 0xff00, 0x9086, 0x8100, 0x0da8, 0x00b0, 0x9484, 0x0fff, ++ 0x1130, 0x7000, 0x9084, 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, ++ 0xd88c, 0x080c, 0x7e99, 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, ++ 0x1118, 0x080c, 0x7ef7, 0x19c0, 0xd5a4, 0x0148, 0x0046, 0x0056, ++ 0x080c, 0x7a07, 0x080c, 0x21cd, 0x005e, 0x004e, 0x0020, 0x080c, ++ 0xd88c, 0x7817, 0x0140, 0x080c, 0x6fb2, 0x0168, 0x2001, 0x0111, ++ 0x2004, 0xd08c, 0x0140, 0x688f, 0x0000, 0x2001, 0x0110, 0x2003, ++ 0x0008, 0x2003, 0x0000, 0x080c, 0x79e8, 0x2001, 0x19c1, 0x2004, ++ 0x9005, 0x090c, 0x8973, 0x0005, 0x0002, 0x79be, 0x7cbb, 0x79b5, ++ 0x79b5, 0x79b5, 0x79b5, 0x79b5, 0x79b5, 0x7817, 0x0140, 0x2001, ++ 0x19c1, 0x2004, 0x9005, 0x090c, 0x8973, 0x0005, 0x7000, 0x908c, ++ 0xff00, 0x9194, 0xf000, 0x810f, 0x9484, 0x0fff, 0x688e, 0x9286, ++ 0x2000, 0x1150, 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x53e7, ++ 0x0070, 0x080c, 0x7a27, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, ++ 0x7bf6, 0x0028, 0x9286, 0x8000, 0x1110, 0x080c, 0x7dc9, 0x7817, ++ 0x0140, 0x2001, 0x19c1, 0x2004, 0x9005, 0x090c, 0x8973, 0x0005, ++ 0x2001, 0x1810, 0x2004, 0xd08c, 0x0178, 0x2001, 0x1800, 0x2004, ++ 0x9086, 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, ++ 0x080c, 0x48d9, 0x003e, 0x002e, 0x0005, 0x0036, 0x0046, 0x0056, ++ 0x00f6, 0x2079, 0x0200, 0x2019, 0xfffe, 0x7c30, 0x0050, 0x0036, ++ 0x0046, 0x0056, 0x00f6, 0x2079, 0x0200, 0x7d44, 0x7c40, 0x2019, ++ 0xffff, 0x2001, 0x1810, 0x2004, 0xd08c, 0x0160, 0x2001, 0x1800, ++ 0x2004, 0x9086, 0x0003, 0x1130, 0x0026, 0x2011, 0x8048, 0x080c, ++ 0x48d9, 0x002e, 0x00fe, 0x005e, 0x004e, 0x003e, 0x0005, 0x00b6, ++ 0x00c6, 0x7010, 0x9084, 0xff00, 0x8007, 0x9096, 0x0001, 0x0120, ++ 0x9096, 0x0023, 0x1904, 0x7bc7, 0x9186, 0x0023, 0x15c0, 0x080c, ++ 0x7e5e, 0x0904, 0x7bc7, 0x6120, 0x9186, 0x0001, 0x0150, 0x9186, ++ 0x0004, 0x0138, 0x9186, 0x0008, 0x0120, 0x9186, 0x000a, 0x1904, ++ 0x7bc7, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1130, 0x2009, ++ 0x0015, 0x080c, 0x9eac, 0x0804, 0x7bc7, 0x908e, 0x0214, 0x0118, ++ 0x908e, 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, 0x9eac, 0x0804, ++ 0x7bc7, 0x908e, 0x0100, 0x1904, 0x7bc7, 0x7034, 0x9005, 0x1904, ++ 0x7bc7, 0x2009, 0x0016, 0x080c, 0x9eac, 0x0804, 0x7bc7, 0x9186, ++ 0x0022, 0x1904, 0x7bc7, 0x7030, 0x908e, 0x0300, 0x1580, 0x68d8, ++ 0xd0a4, 0x0528, 0xc0b5, 0x68da, 0x7100, 0x918c, 0x00ff, 0x697a, ++ 0x7004, 0x687e, 0x00f6, 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, ++ 0x9084, 0x00ff, 0x0016, 0x2008, 0x080c, 0x26ac, 0x7932, 0x7936, ++ 0x001e, 0x000e, 0x00fe, 0x080c, 0x2663, 0x695a, 0x703c, 0x00e6, ++ 0x2071, 0x0140, 0x7086, 0x2071, 0x1800, 0x70b2, 0x00ee, 0x7034, ++ 0x9005, 0x1904, 0x7bc7, 0x2009, 0x0017, 0x0804, 0x7b77, 0x908e, ++ 0x0400, 0x1190, 0x7034, 0x9005, 0x1904, 0x7bc7, 0x080c, 0x6fb2, ++ 0x0120, 0x2009, 0x001d, 0x0804, 0x7b77, 0x68d8, 0xc0a5, 0x68da, ++ 0x2009, 0x0030, 0x0804, 0x7b77, 0x908e, 0x0500, 0x1140, 0x7034, ++ 0x9005, 0x1904, 0x7bc7, 0x2009, 0x0018, 0x0804, 0x7b77, 0x908e, ++ 0x2010, 0x1120, 0x2009, 0x0019, 0x0804, 0x7b77, 0x908e, 0x2110, ++ 0x1120, 0x2009, 0x001a, 0x0804, 0x7b77, 0x908e, 0x5200, 0x1140, ++ 0x7034, 0x9005, 0x1904, 0x7bc7, 0x2009, 0x001b, 0x0804, 0x7b77, ++ 0x908e, 0x5000, 0x1140, 0x7034, 0x9005, 0x1904, 0x7bc7, 0x2009, ++ 0x001c, 0x0804, 0x7b77, 0x908e, 0x1300, 0x1120, 0x2009, 0x0034, ++ 0x0804, 0x7b77, 0x908e, 0x1200, 0x1140, 0x7034, 0x9005, 0x1904, ++ 0x7bc7, 0x2009, 0x0024, 0x0804, 0x7b77, 0x908c, 0xff00, 0x918e, ++ 0x2400, 0x1170, 0x2009, 0x002d, 0x2001, 0x1810, 0x2004, 0xd09c, ++ 0x0904, 0x7b77, 0x080c, 0xc8b8, 0x1904, 0x7bc7, 0x0804, 0x7b75, ++ 0x908c, 0xff00, 0x918e, 0x5300, 0x1120, 0x2009, 0x002a, 0x0804, ++ 0x7b77, 0x908e, 0x0f00, 0x1120, 0x2009, 0x0020, 0x0804, 0x7b77, ++ 0x908e, 0x6104, 0x1528, 0x2029, 0x0205, 0x2011, 0x026d, 0x8208, ++ 0x2204, 0x9082, 0x0004, 0x8004, 0x8004, 0x20a8, 0x2011, 0x8015, ++ 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x48d9, 0x004e, 0x8108, ++ 0x0f04, 0x7b43, 0x9186, 0x0280, 0x1d88, 0x2504, 0x8000, 0x202a, ++ 0x2009, 0x0260, 0x0c58, 0x202b, 0x0000, 0x2009, 0x0023, 0x0478, ++ 0x908e, 0x6000, 0x1118, 0x2009, 0x003f, 0x0448, 0x908e, 0x7800, ++ 0x1118, 0x2009, 0x0045, 0x0418, 0x908e, 0x1000, 0x1118, 0x2009, ++ 0x004e, 0x00e8, 0x908e, 0x6300, 0x1118, 0x2009, 0x004a, 0x00b8, ++ 0x908c, 0xff00, 0x918e, 0x5600, 0x1118, 0x2009, 0x004f, 0x0078, ++ 0x908c, 0xff00, 0x918e, 0x5700, 0x1118, 0x2009, 0x0050, 0x0038, ++ 0x2009, 0x001d, 0x6838, 0xd0d4, 0x0110, 0x2009, 0x004c, 0x0016, ++ 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2663, 0x1904, ++ 0x7bca, 0x080c, 0x61de, 0x1904, 0x7bca, 0xbe12, 0xbd16, 0x001e, ++ 0x0016, 0x080c, 0x6fb2, 0x01c0, 0x68d8, 0xd08c, 0x1148, 0x7000, ++ 0x9084, 0x00ff, 0x1188, 0x7004, 0x9084, 0xff00, 0x1168, 0x0040, ++ 0x6878, 0x9606, 0x1148, 0x687c, 0x9506, 0x9084, 0xff00, 0x1120, ++ 0x9584, 0x00ff, 0xb8b2, 0x0080, 0xb8b0, 0x9005, 0x1168, 0x9186, ++ 0x0046, 0x1150, 0x6878, 0x9606, 0x1138, 0x687c, 0x9506, 0x9084, ++ 0xff00, 0x1110, 0x001e, 0x0098, 0x080c, 0x9ddc, 0x01a8, 0x2b08, ++ 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x9186, 0x004c, ++ 0x1110, 0x6023, 0x000a, 0x0016, 0x001e, 0x080c, 0x9eac, 0x00ce, ++ 0x00be, 0x0005, 0x001e, 0x0cd8, 0x2001, 0x180e, 0x2004, 0xd0ec, ++ 0x0120, 0x2011, 0x8049, 0x080c, 0x48d9, 0x080c, 0x9e7f, 0x0d90, ++ 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x0016, ++ 0x9186, 0x0017, 0x0118, 0x9186, 0x0030, 0x1128, 0x6007, 0x0009, ++ 0x6017, 0x2900, 0x0020, 0x6007, 0x0051, 0x6017, 0x0000, 0x602f, ++ 0x0009, 0x6003, 0x0001, 0x080c, 0x8439, 0x08a0, 0x080c, 0x30fd, ++ 0x1140, 0x7010, 0x9084, 0xff00, 0x8007, 0x908e, 0x0008, 0x1108, ++ 0x0009, 0x0005, 0x00b6, 0x00c6, 0x0046, 0x7000, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, 0x7e5e, 0x0904, 0x7c53, ++ 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1140, 0x7034, 0x9005, ++ 0x15d0, 0x2009, 0x0015, 0x080c, 0x9eac, 0x04a8, 0x908e, 0x0100, ++ 0x1590, 0x7034, 0x9005, 0x1578, 0x2009, 0x0016, 0x080c, 0x9eac, ++ 0x0450, 0x9186, 0x0032, 0x1538, 0x7030, 0x908e, 0x1400, 0x1518, ++ 0x2009, 0x0038, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x2663, 0x11b8, 0x080c, 0x61de, 0x11a0, 0xbe12, 0xbd16, ++ 0x080c, 0x9ddc, 0x0178, 0x2b08, 0x6112, 0x080c, 0xbf8c, 0x6023, ++ 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x9eac, 0x080c, 0x8973, ++ 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, 0x00b6, ++ 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, 0x11b8, ++ 0x9592, 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, 0x007f, ++ 0x0804, 0x7cb5, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, 0x0804, ++ 0x7cb5, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, 0x2011, ++ 0x0000, 0x2019, 0x1836, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9, ++ 0x0800, 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x077f, ++ 0x2071, 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, 0x11d0, ++ 0x9496, 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, 0x2600, ++ 0x9706, 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, 0x9745, ++ 0x1148, 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, 0x94c6, ++ 0x0080, 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x7c8a, 0x82ff, 0x1118, ++ 0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, 0x00ee, ++ 0x004e, 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, 0x9184, ++ 0x000f, 0x0002, 0x7cd2, 0x7cd2, 0x7cd2, 0x7e70, 0x7cd2, 0x7cdb, ++ 0x7d06, 0x7d94, 0x7cd2, 0x7cd2, 0x7cd2, 0x7cd2, 0x7cd2, 0x7cd2, ++ 0x7cd2, 0x7cd2, 0x7817, 0x0140, 0x2001, 0x19c1, 0x2004, 0x9005, ++ 0x090c, 0x8973, 0x0005, 0x00b6, 0x7110, 0xd1bc, 0x01e8, 0x7120, ++ 0x2160, 0x9c8c, 0x0007, 0x11c0, 0x9c8a, 0x1cd0, 0x02a8, 0x6864, ++ 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, ++ 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, 0x610a, ++ 0x2009, 0x0046, 0x080c, 0x9eac, 0x7817, 0x0140, 0x2001, 0x19c1, ++ 0x2004, 0x9005, 0x090c, 0x8973, 0x00be, 0x0005, 0x00b6, 0x00c6, ++ 0x9484, 0x0fff, 0x0904, 0x7d6a, 0x7110, 0xd1bc, 0x1904, 0x7d6a, ++ 0x7108, 0x700c, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, 0xff00, ++ 0x15b0, 0x81ff, 0x15a0, 0x9080, 0x3138, 0x200d, 0x918c, 0xff00, ++ 0x810f, 0x2001, 0x0080, 0x9106, 0x0904, 0x7d6a, 0x080c, 0x61de, ++ 0x1904, 0x7d6a, 0xbe12, 0xbd16, 0xb800, 0xd0ec, 0x15d8, 0xba04, ++ 0x9294, 0xff00, 0x9286, 0x0600, 0x11a0, 0x080c, 0x9ddc, 0x05e8, ++ 0x2b08, 0x7028, 0x604a, 0x702c, 0x6046, 0x6112, 0x6023, 0x0006, ++ 0x7120, 0x610a, 0x7130, 0x6156, 0x2009, 0x0044, 0x080c, 0xcb14, ++ 0x0408, 0x080c, 0x6562, 0x1138, 0xb807, 0x0606, 0x0c30, 0x190c, ++ 0x7c57, 0x11c0, 0x0898, 0x080c, 0x9ddc, 0x2b08, 0x0198, 0x6112, ++ 0x6023, 0x0004, 0x7120, 0x610a, 0x9286, 0x0400, 0x1118, 0x6007, ++ 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x8439, ++ 0x080c, 0x8973, 0x7817, 0x0140, 0x2001, 0x19c1, 0x2004, 0x9005, ++ 0x090c, 0x8973, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180e, 0x2004, ++ 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x48d9, 0x080c, 0x9e7f, ++ 0x0d48, 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, ++ 0x6156, 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x08b0, 0x00b6, 0x7110, 0xd1bc, 0x01e8, ++ 0x7020, 0x2060, 0x9c84, 0x0007, 0x11c0, 0x9c82, 0x1cd0, 0x02a8, ++ 0x6864, 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, ++ 0xb910, 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, ++ 0x610a, 0x2009, 0x0045, 0x080c, 0x9eac, 0x7817, 0x0140, 0x2001, ++ 0x19c1, 0x2004, 0x9005, 0x090c, 0x8973, 0x00be, 0x0005, 0x6120, ++ 0x9186, 0x0002, 0x0128, 0x9186, 0x0005, 0x0110, 0x9085, 0x0001, ++ 0x0005, 0x080c, 0x30fd, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, ++ 0x9086, 0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, ++ 0x000b, 0x0005, 0x7de0, 0x7de1, 0x7de0, 0x7de0, 0x7e40, 0x7e4f, ++ 0x0005, 0x00b6, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, ++ 0x7e3e, 0x700c, 0x7108, 0x080c, 0x2663, 0x1904, 0x7e3e, 0x080c, ++ 0x61de, 0x1904, 0x7e3e, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, ++ 0x080c, 0x6562, 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, ++ 0x7e5e, 0x00ce, 0x05d8, 0x080c, 0x9ddc, 0x2b08, 0x05b8, 0x6112, ++ 0x080c, 0xbf8c, 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, ++ 0x080c, 0x9eac, 0x0458, 0x080c, 0x6562, 0x0148, 0x9086, 0x0004, ++ 0x0130, 0x080c, 0x656a, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, ++ 0x9ddc, 0x2b08, 0x01d8, 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0005, ++ 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, 0x9eac, 0x0078, 0x080c, ++ 0x9ddc, 0x2b08, 0x0158, 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0004, ++ 0x7120, 0x610a, 0x2009, 0x0001, 0x080c, 0x9eac, 0x00be, 0x0005, ++ 0x7110, 0xd1bc, 0x0158, 0x00d1, 0x0148, 0x080c, 0x7dbf, 0x1130, ++ 0x7124, 0x610a, 0x2009, 0x0089, 0x080c, 0x9eac, 0x0005, 0x7110, ++ 0xd1bc, 0x0158, 0x0059, 0x0148, 0x080c, 0x7dbf, 0x1130, 0x7124, ++ 0x610a, 0x2009, 0x008a, 0x080c, 0x9eac, 0x0005, 0x7020, 0x2060, ++ 0x9c84, 0x0007, 0x1158, 0x9c82, 0x1cd0, 0x0240, 0x2001, 0x1819, ++ 0x2004, 0x9c02, 0x1218, 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, ++ 0x00b6, 0x7110, 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84, 0x0007, ++ 0x11b0, 0x9c82, 0x1cd0, 0x0298, 0x6864, 0x9c02, 0x1280, 0x7008, ++ 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1140, 0x700c, ++ 0xb914, 0x9106, 0x1120, 0x2009, 0x0051, 0x080c, 0x9eac, 0x7817, ++ 0x0140, 0x2001, 0x19c1, 0x2004, 0x9005, 0x090c, 0x8973, 0x00be, ++ 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, ++ 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, ++ 0x0005, 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000, 0x9086, ++ 0xc000, 0x05d0, 0x080c, 0x9ddc, 0x05b8, 0x0066, 0x00c6, 0x0046, ++ 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2663, 0x15a0, ++ 0x080c, 0x61de, 0x1588, 0xbe12, 0xbd16, 0x2b00, 0x004e, 0x00ce, ++ 0x6012, 0x080c, 0xbf8c, 0x080c, 0x0feb, 0x0510, 0x2900, 0x605a, ++ 0x9006, 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b, 0x20a9, ++ 0x000e, 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98, 0x4003, ++ 0x006e, 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003, 0x0001, ++ 0x080c, 0x8439, 0x080c, 0x8973, 0x00fe, 0x009e, 0x00ce, 0x0005, ++ 0x080c, 0x9e32, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x00c6, ++ 0x7000, 0x908c, 0xff00, 0x9184, 0xf000, 0x810f, 0x9086, 0x2000, ++ 0x1904, 0x7f4e, 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111, 0x2004, ++ 0x9005, 0x1904, 0x7f50, 0x7030, 0x908e, 0x0400, 0x0904, 0x7f50, ++ 0x908e, 0x6000, 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e, 0x0300, ++ 0x11d8, 0x2009, 0x1836, 0x210c, 0xd18c, 0x1590, 0xd1a4, 0x1580, ++ 0x080c, 0x6520, 0x0558, 0x68ac, 0x9084, 0x00ff, 0x7100, 0x918c, ++ 0x00ff, 0x9106, 0x1518, 0x687c, 0x69ac, 0x918c, 0xff00, 0x9105, ++ 0x7104, 0x9106, 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c, 0xd1b4, ++ 0x11a8, 0x908e, 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0, 0x908e, ++ 0x5000, 0x09b8, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c, 0x7e5e, ++ 0x0128, 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006, 0x0010, ++ 0x9085, 0x0001, 0x00ce, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7800, ++ 0xc0e5, 0xc0cc, 0x7802, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x1800, ++ 0x7834, 0xd084, 0x1130, 0x2079, 0x0200, 0x7800, 0x9085, 0x1200, ++ 0x7802, 0x00fe, 0x0005, 0x00e6, 0x2071, 0x1800, 0x7034, 0xc084, ++ 0x7036, 0x00ee, 0x0005, 0x2071, 0x19cb, 0x7003, 0x0003, 0x700f, ++ 0x0361, 0x9006, 0x701a, 0x7072, 0x7012, 0x7017, 0x1cd0, 0x7007, ++ 0x0000, 0x7026, 0x702b, 0x93c2, 0x7032, 0x7037, 0x9430, 0x703f, ++ 0xffff, 0x7042, 0x7047, 0x5225, 0x704a, 0x705b, 0x80d3, 0x080c, ++ 0x1004, 0x090c, 0x0db4, 0x2900, 0x703a, 0xa867, 0x0003, 0xa86f, ++ 0x0100, 0xa8ab, 0xdcb0, 0x0005, 0x2071, 0x19cb, 0x1d04, 0x8027, ++ 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x1510, 0x2001, 0x1875, ++ 0x2004, 0xd0c4, 0x0158, 0x3a00, 0xd08c, 0x1140, 0x20d1, 0x0000, ++ 0x20d1, 0x0001, 0x20d1, 0x0000, 0x080c, 0x0db4, 0x700f, 0x0361, ++ 0x7007, 0x0001, 0x0126, 0x2091, 0x8000, 0x080c, 0x8118, 0x7040, ++ 0x900d, 0x0148, 0x8109, 0x7142, 0x1130, 0x7044, 0x080f, 0x0018, ++ 0x0126, 0x2091, 0x8000, 0x7024, 0x900d, 0x0188, 0x7020, 0x8001, ++ 0x7022, 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0x9186, 0x03e8, ++ 0x1110, 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, ++ 0x900d, 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, ++ 0x8109, 0x7132, 0x0128, 0x9184, 0x007f, 0x090c, 0x953d, 0x0010, ++ 0x7034, 0x080f, 0x703c, 0x9005, 0x0118, 0x0310, 0x8001, 0x703e, ++ 0x704c, 0x900d, 0x0168, 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, ++ 0x0009, 0x8109, 0x714e, 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, ++ 0x7018, 0x900d, 0x01d8, 0x0016, 0x7070, 0x900d, 0x0158, 0x706c, ++ 0x8001, 0x706e, 0x1138, 0x706f, 0x0009, 0x8109, 0x7172, 0x1110, ++ 0x7074, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, ++ 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, ++ 0x0002, 0x804f, 0x8050, 0x806c, 0x00e6, 0x2071, 0x19cb, 0x7018, ++ 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, ++ 0x00e6, 0x0006, 0x2071, 0x19cb, 0x701c, 0x9206, 0x1120, 0x701a, ++ 0x701e, 0x7072, 0x7076, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, ++ 0x19cb, 0xb888, 0x9102, 0x0208, 0xb98a, 0x00ee, 0x0005, 0x0005, ++ 0x00b6, 0x7110, 0x080c, 0x623e, 0x1168, 0xb888, 0x8001, 0x0250, ++ 0xb88a, 0x1140, 0x0126, 0x2091, 0x8000, 0x0016, 0x080c, 0x8973, ++ 0x001e, 0x012e, 0x8108, 0x9182, 0x0800, 0x0218, 0x900e, 0x7007, ++ 0x0002, 0x7112, 0x00be, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, ++ 0x8000, 0x6040, 0x9005, 0x0128, 0x8001, 0x6042, 0x1110, 0x080c, ++ 0xbe1d, 0x6018, 0x9005, 0x0528, 0x8001, 0x601a, 0x1510, 0x6120, ++ 0x9186, 0x0003, 0x0118, 0x9186, 0x0006, 0x11c8, 0x080c, 0xbb17, ++ 0x01b0, 0x6014, 0x2048, 0xa884, 0x908a, 0x199a, 0x0280, 0x9082, ++ 0x1999, 0xa886, 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, ++ 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, 0xd0e4, 0x0110, 0x080c, ++ 0xb815, 0x012e, 0x9c88, 0x0018, 0x7116, 0x2001, 0x1819, 0x2004, ++ 0x9102, 0x0220, 0x7017, 0x1cd0, 0x7007, 0x0000, 0x0005, 0x00e6, ++ 0x2071, 0x19cb, 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, 0x0005, ++ 0x2001, 0x19d4, 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, 0x19cb, ++ 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, 0x2011, 0x19d7, 0x2013, ++ 0x0000, 0x0005, 0x00e6, 0x2071, 0x19cb, 0x711a, 0x721e, 0x700b, ++ 0x0009, 0x00ee, 0x0005, 0x0086, 0x0026, 0x7054, 0x8000, 0x7056, ++ 0x2001, 0x19d9, 0x2044, 0xa06c, 0x9086, 0x0000, 0x0150, 0x7068, ++ 0xa09a, 0x7064, 0xa096, 0x7060, 0xa092, 0x705c, 0xa08e, 0x080c, ++ 0x10d5, 0x002e, 0x008e, 0x0005, 0x0006, 0x0016, 0x0096, 0x00a6, ++ 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, 0x7f9c, ++ 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, ++ 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0x19cb, 0x7172, 0x7276, ++ 0x706f, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x19cb, ++ 0x7074, 0x9206, 0x1110, 0x7072, 0x7076, 0x000e, 0x00ee, 0x0005, ++ 0x2069, 0x1800, 0x69e4, 0xd1e4, 0x1518, 0x0026, 0xd1ec, 0x0140, ++ 0x6a50, 0x6870, 0x9202, 0x0288, 0x8117, 0x9294, 0x00c0, 0x0088, ++ 0x9184, 0x0007, 0x01a0, 0x8109, 0x9184, 0x0007, 0x0110, 0x69e6, ++ 0x0070, 0x8107, 0x9084, 0x0007, 0x910d, 0x8107, 0x9106, 0x9094, ++ 0x00c0, 0x9184, 0xff3f, 0x9205, 0x68e6, 0x080c, 0x0ecb, 0x002e, ++ 0x0005, 0x00c6, 0x2061, 0x1a41, 0x00ce, 0x0005, 0x9184, 0x000f, ++ 0x8003, 0x8003, 0x8003, 0x9080, 0x1a41, 0x2060, 0x0005, 0xa884, ++ 0x908a, 0x199a, 0x1638, 0x9005, 0x1150, 0x00c6, 0x2061, 0x1a41, ++ 0x6014, 0x00ce, 0x9005, 0x1130, 0x2001, 0x001e, 0x0018, 0x908e, ++ 0xffff, 0x01b0, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, ++ 0x908c, 0x00c0, 0x918e, 0x00c0, 0x0904, 0x81d9, 0xd0b4, 0x1168, ++ 0xd0bc, 0x1904, 0x81b2, 0x2009, 0x0006, 0x080c, 0x8206, 0x0005, ++ 0x900e, 0x0c60, 0x2001, 0x1999, 0x08b0, 0xd0fc, 0x0160, 0x908c, ++ 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x8200, 0x908c, 0x2020, ++ 0x918e, 0x2020, 0x01a8, 0x6024, 0xd0d4, 0x11e8, 0x2009, 0x1875, ++ 0x2104, 0xd084, 0x1138, 0x87ff, 0x1120, 0x2009, 0x0043, 0x0804, ++ 0x9eac, 0x0005, 0x87ff, 0x1de8, 0x2009, 0x0042, 0x0804, 0x9eac, ++ 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6024, ++ 0xc0cd, 0x6026, 0x0c00, 0xc0d4, 0x6026, 0xa890, 0x602e, 0xa88c, ++ 0x6032, 0x08e0, 0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, ++ 0x0003, 0x1904, 0x8200, 0x908c, 0x2020, 0x918e, 0x2020, 0x0170, ++ 0x0076, 0x00f6, 0x2c78, 0x080c, 0x1648, 0x00fe, 0x007e, 0x87ff, ++ 0x1120, 0x2009, 0x0042, 0x080c, 0x9eac, 0x0005, 0x6110, 0x00b6, ++ 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d58, 0x6124, 0xc1cd, 0x6126, ++ 0x0c38, 0xd0fc, 0x0188, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, ++ 0x9084, 0x0003, 0x908e, 0x0002, 0x0148, 0x87ff, 0x1120, 0x2009, ++ 0x0041, 0x080c, 0x9eac, 0x0005, 0x00b9, 0x0ce8, 0x87ff, 0x1dd8, ++ 0x2009, 0x0043, 0x080c, 0x9eac, 0x0cb0, 0x6110, 0x00b6, 0x2158, ++ 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6124, 0xc1cd, 0x6126, 0x0c00, ++ 0x2009, 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x0096, 0x080c, ++ 0xbb17, 0x0518, 0x6014, 0x2048, 0xa982, 0xa800, 0x6016, 0x9186, ++ 0x0001, 0x1188, 0xa97c, 0x918c, 0x8100, 0x918e, 0x8100, 0x1158, ++ 0x00c6, 0x2061, 0x1a41, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, ++ 0x0208, 0x6206, 0x00ce, 0x080c, 0x66c6, 0x6014, 0x904d, 0x0076, ++ 0x2039, 0x0000, 0x190c, 0x814f, 0x007e, 0x009e, 0x0005, 0x0156, ++ 0x00c6, 0x2061, 0x1a41, 0x6000, 0x81ff, 0x0110, 0x9205, 0x0008, ++ 0x9204, 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, ++ 0x6808, 0x9005, 0x0120, 0x8001, 0x680a, 0x9085, 0x0001, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x0036, 0x0046, 0x20a9, 0x0010, 0x9006, ++ 0x8004, 0x2019, 0x0100, 0x231c, 0x93a6, 0x0008, 0x1118, 0x8086, ++ 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x1208, 0x9200, ++ 0x1f04, 0x8251, 0x93a6, 0x0008, 0x1118, 0x8086, 0x818e, 0x0020, ++ 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x004e, 0x003e, 0x012e, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x0076, 0x0156, 0x20a9, 0x0010, 0x9005, ++ 0x0510, 0x911a, 0x1600, 0x8213, 0x2039, 0x0100, 0x273c, 0x97be, ++ 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, 0x3e08, 0x0228, 0x911a, ++ 0x1220, 0x1f04, 0x827b, 0x0028, 0x911a, 0x2308, 0x8210, 0x1f04, ++ 0x827b, 0x0006, 0x3200, 0x9084, 0xefff, 0x2080, 0x000e, 0x015e, ++ 0x007e, 0x012e, 0x0005, 0x0006, 0x3200, 0x9085, 0x1000, 0x0ca8, ++ 0x0126, 0x2091, 0x2800, 0x2079, 0x19b8, 0x012e, 0x00d6, 0x2069, ++ 0x19b8, 0x6803, 0x0005, 0x0156, 0x0146, 0x01d6, 0x20e9, 0x0000, ++ 0x2069, 0x0200, 0x080c, 0x9c3f, 0x0401, 0x080c, 0x9c2a, 0x00e9, ++ 0x080c, 0x9c2d, 0x00d1, 0x080c, 0x9c30, 0x00b9, 0x080c, 0x9c33, ++ 0x00a1, 0x080c, 0x9c36, 0x0089, 0x080c, 0x9c39, 0x0071, 0x080c, ++ 0x9c3c, 0x0059, 0x01de, 0x014e, 0x015e, 0x2069, 0x0004, 0x2d04, ++ 0x9085, 0x8001, 0x206a, 0x00de, 0x0005, 0x20a9, 0x0020, 0x20a1, ++ 0x0240, 0x2001, 0x0000, 0x4004, 0x0005, 0x00c6, 0x6027, 0x0001, ++ 0x7804, 0x9084, 0x0007, 0x0002, 0x82ee, 0x8312, 0x8351, 0x82f4, ++ 0x8312, 0x82ee, 0x82ec, 0x82ec, 0x080c, 0x0db4, 0x080c, 0x80b8, ++ 0x080c, 0x8973, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, ++ 0x0005, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x7828, 0x9092, 0x00c8, ++ 0x1228, 0x8000, 0x782a, 0x080c, 0x5b7a, 0x0c88, 0x62c0, 0x080c, ++ 0x9c43, 0x080c, 0x5b3a, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, ++ 0x0000, 0x0c28, 0x080c, 0x80b8, 0x6220, 0xd2a4, 0x0160, 0x782b, ++ 0x0000, 0x7824, 0x9065, 0x090c, 0x0db4, 0x2009, 0x0013, 0x080c, ++ 0x9eac, 0x00ce, 0x0005, 0x00c6, 0x7824, 0x9065, 0x090c, 0x0db4, ++ 0x7828, 0x9092, 0xc350, 0x12c0, 0x8000, 0x782a, 0x00ce, 0x080c, ++ 0x29ca, 0x0278, 0x00c6, 0x7924, 0x2160, 0x6010, 0x906d, 0x090c, ++ 0x0db4, 0x7807, 0x0000, 0x7827, 0x0000, 0x00ce, 0x080c, 0x8973, ++ 0x0c00, 0x080c, 0x9388, 0x08e8, 0x2011, 0x0130, 0x2214, 0x080c, ++ 0x9c43, 0x080c, 0xd8c9, 0x2009, 0x0014, 0x080c, 0x9eac, 0x00ce, ++ 0x0880, 0x2001, 0x19d4, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, ++ 0x782b, 0x0000, 0x7824, 0x9065, 0x090c, 0x0db4, 0x2009, 0x0013, ++ 0x080c, 0x9efe, 0x00ce, 0x0005, 0x00b6, 0x00c6, 0x00d6, 0x7824, ++ 0x9005, 0x090c, 0x0db4, 0x7828, 0x9092, 0xc350, 0x1648, 0x8000, ++ 0x782a, 0x00de, 0x00ce, 0x00be, 0x080c, 0x29ca, 0x02f0, 0x00b6, ++ 0x00c6, 0x00d6, 0x781c, 0x905d, 0x090c, 0x0db4, 0xb800, 0xc0dc, ++ 0xb802, 0x7924, 0x2160, 0x080c, 0x9e32, 0xb93c, 0x81ff, 0x090c, ++ 0x0db4, 0x8109, 0xb93e, 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, ++ 0x00ce, 0x00be, 0x080c, 0x8973, 0x0868, 0x080c, 0x9388, 0x0850, ++ 0x2011, 0x0130, 0x2214, 0x080c, 0x9c43, 0x080c, 0xd8c9, 0x7824, ++ 0x9065, 0x2009, 0x0014, 0x080c, 0x9eac, 0x00de, 0x00ce, 0x00be, ++ 0x0804, 0x8362, 0x00c6, 0x2001, 0x009b, 0x2004, 0xd0fc, 0x190c, ++ 0x1d4a, 0x6024, 0x6027, 0x0002, 0xd0f4, 0x1580, 0x62c8, 0x60c4, ++ 0x9205, 0x1170, 0x783c, 0x9065, 0x0130, 0x2009, 0x0049, 0x080c, ++ 0x9eac, 0x00ce, 0x0005, 0x2011, 0x19d7, 0x2013, 0x0000, 0x0cc8, ++ 0x793c, 0x81ff, 0x0dc0, 0x7944, 0x9192, 0x7530, 0x12f0, 0x8108, ++ 0x7946, 0x793c, 0x9188, 0x0008, 0x210c, 0x918e, 0x0006, 0x1138, ++ 0x6014, 0x9084, 0x1984, 0x9085, 0x0012, 0x6016, 0x0c10, 0x6014, ++ 0x9084, 0x1984, 0x9085, 0x0016, 0x6016, 0x08d8, 0x793c, 0x2160, ++ 0x2009, 0x004a, 0x080c, 0x9eac, 0x08a0, 0x7848, 0xc085, 0x784a, ++ 0x0880, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, ++ 0x0000, 0x2c08, 0x2061, 0x19b8, 0x6020, 0x8000, 0x6022, 0x6010, ++ 0x9005, 0x0148, 0x9080, 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce, ++ 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069, ++ 0x19b8, 0xb800, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, 0x9086, ++ 0x0001, 0x1110, 0x2b00, 0x681e, 0x00de, 0x0804, 0x8973, 0x00de, ++ 0x0005, 0xc0d5, 0xb802, 0x6818, 0x9005, 0x0168, 0xb856, 0xb85b, ++ 0x0000, 0x0086, 0x0006, 0x2b00, 0x681a, 0x008e, 0xa05a, 0x008e, ++ 0x2069, 0x19b8, 0x0c08, 0xb856, 0xb85a, 0x2b00, 0x681a, 0x681e, ++ 0x08d8, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, ++ 0x0000, 0x2c08, 0x2061, 0x19b8, 0x6020, 0x8000, 0x6022, 0x6008, ++ 0x9005, 0x0148, 0x9080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, ++ 0x001e, 0x000e, 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, ++ 0x0000, 0x2c08, 0x2061, 0x19b8, 0x6034, 0x9005, 0x0130, 0x9080, ++ 0x0003, 0x2102, 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x00ce, ++ 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x00b6, 0x0096, 0x0076, ++ 0x0066, 0x0056, 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, 0x902e, ++ 0x2071, 0x19b8, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, ++ 0x0904, 0x84e0, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x84db, ++ 0x87ff, 0x0120, 0x6054, 0x9106, 0x1904, 0x84db, 0x703c, 0x9c06, ++ 0x1178, 0x0036, 0x2019, 0x0001, 0x080c, 0x96d8, 0x7033, 0x0000, ++ 0x9006, 0x703e, 0x7042, 0x7046, 0x704a, 0x003e, 0x2029, 0x0001, ++ 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0x080c, 0xbb17, 0x01c8, 0x6014, 0x2048, 0x6020, ++ 0x9086, 0x0003, 0x1590, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x0016, 0x0036, 0x0076, 0x080c, 0xbe06, 0x080c, 0xd7d3, 0x080c, ++ 0x688c, 0x007e, 0x003e, 0x001e, 0x080c, 0xbd00, 0x080c, 0x9e62, ++ 0x00ce, 0x0804, 0x847f, 0x2c78, 0x600c, 0x2060, 0x0804, 0x847f, ++ 0x85ff, 0x0120, 0x0036, 0x080c, 0x8a4e, 0x003e, 0x012e, 0x000e, ++ 0x001e, 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x009e, 0x00be, ++ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, 0x9086, 0x0006, ++ 0x1158, 0x0016, 0x0036, 0x0076, 0x080c, 0xd7d3, 0x080c, 0xd4d5, ++ 0x007e, 0x003e, 0x001e, 0x0890, 0x6020, 0x9086, 0x000a, 0x0904, ++ 0x84c5, 0x0804, 0x84c3, 0x0006, 0x0066, 0x0096, 0x00c6, 0x00d6, ++ 0x00f6, 0x9036, 0x0126, 0x2091, 0x8000, 0x2079, 0x19b8, 0x7838, ++ 0x9065, 0x0904, 0x855b, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, ++ 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c, 0x96d8, 0x7833, ++ 0x0000, 0x901e, 0x7b3e, 0x7b42, 0x7b46, 0x7b4a, 0x003e, 0x080c, ++ 0xbb17, 0x0520, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1568, ++ 0x3e08, 0x918e, 0x0002, 0x1188, 0x6010, 0x9005, 0x0170, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6040, 0x9005, 0x1180, ++ 0x2001, 0x1959, 0x2004, 0x6042, 0x0058, 0xa867, 0x0103, 0xab7a, ++ 0xa877, 0x0000, 0x080c, 0x687f, 0x080c, 0xbd00, 0x080c, 0x9e62, ++ 0x000e, 0x0804, 0x8518, 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, ++ 0x00ce, 0x009e, 0x006e, 0x000e, 0x0005, 0x6020, 0x9086, 0x0006, ++ 0x1118, 0x080c, 0xd4d5, 0x0c50, 0x6020, 0x9086, 0x000a, 0x09f8, ++ 0x08e0, 0x0016, 0x0026, 0x0086, 0x9046, 0x0099, 0x080c, 0x865a, ++ 0x008e, 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0x19b8, ++ 0x2091, 0x8000, 0x080c, 0x86f1, 0x080c, 0x877f, 0x012e, 0x00fe, ++ 0x0005, 0x00b6, 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, ++ 0x0016, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x7614, ++ 0x2660, 0x2678, 0x8cff, 0x0904, 0x861f, 0x6010, 0x2058, 0xb8a0, ++ 0x9206, 0x1904, 0x861a, 0x88ff, 0x0120, 0x6054, 0x9106, 0x1904, ++ 0x861a, 0x7024, 0x9c06, 0x1558, 0x2069, 0x0100, 0x6820, 0xd0a4, ++ 0x1508, 0x080c, 0x80b8, 0x080c, 0x93ac, 0x68c3, 0x0000, 0x080c, ++ 0x98da, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, ++ 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, ++ 0x2b14, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, ++ 0x003e, 0x0028, 0x6003, 0x0009, 0x630a, 0x0804, 0x861a, 0x7014, ++ 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, 0x1140, 0x2c00, ++ 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, ++ 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, ++ 0x0000, 0x6014, 0x2048, 0x080c, 0xbb17, 0x01e8, 0x6020, 0x9086, ++ 0x0003, 0x1580, 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, 0x0098, ++ 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, 0x0036, 0x0086, ++ 0x080c, 0xbe06, 0x080c, 0xd7d3, 0x080c, 0x688c, 0x008e, 0x003e, ++ 0x001e, 0x080c, 0xbd00, 0x080c, 0x9e62, 0x080c, 0x97b0, 0x00ce, ++ 0x0804, 0x859a, 0x2c78, 0x600c, 0x2060, 0x0804, 0x859a, 0x012e, ++ 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x009e, ++ 0x00be, 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, ++ 0x0086, 0x080c, 0xd7d3, 0x080c, 0xd4d5, 0x008e, 0x003e, 0x001e, ++ 0x08d0, 0x080c, 0xa7c0, 0x6020, 0x9086, 0x0002, 0x1160, 0x6004, ++ 0x0006, 0x9086, 0x0085, 0x000e, 0x0904, 0x8600, 0x9086, 0x008b, ++ 0x0904, 0x8600, 0x0840, 0x6020, 0x9086, 0x0005, 0x1920, 0x6004, ++ 0x0006, 0x9086, 0x0085, 0x000e, 0x09c8, 0x9086, 0x008b, 0x09b0, ++ 0x0804, 0x8613, 0x00b6, 0x00a6, 0x0096, 0x00c6, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x9280, 0x1000, 0x2004, 0x905d, 0x0904, 0x86ea, ++ 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, 0x19b8, 0xbe54, 0x7018, ++ 0x9b06, 0x1108, 0x761a, 0x701c, 0x9b06, 0x1130, 0x86ff, 0x1118, ++ 0x7018, 0x701e, 0x0008, 0x761e, 0xb858, 0x904d, 0x0108, 0xae56, ++ 0x96d5, 0x0000, 0x0110, 0x2900, 0xb05a, 0xb857, 0x0000, 0xb85b, ++ 0x0000, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x6171, 0x0904, ++ 0x86e6, 0x7624, 0x86ff, 0x0904, 0x86d5, 0x9680, 0x0005, 0x2004, ++ 0x9906, 0x15d8, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0560, ++ 0x080c, 0x80b8, 0x080c, 0x93ac, 0x68c3, 0x0000, 0x080c, 0x98da, ++ 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, ++ 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, ++ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, ++ 0x00de, 0x00c6, 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, ++ 0x080c, 0x9e62, 0x00ce, 0x0048, 0x00de, 0x00c6, 0x2660, 0x6003, ++ 0x0009, 0x630a, 0x00ce, 0x0804, 0x868d, 0x89ff, 0x0158, 0xa867, ++ 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xbe06, 0x080c, 0xd7d3, ++ 0x080c, 0x688c, 0x080c, 0x97b0, 0x0804, 0x868d, 0x006e, 0x00de, ++ 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, 0x009e, 0x00ae, 0x00be, ++ 0x0005, 0x0096, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x9036, 0x7814, ++ 0x9065, 0x0904, 0x8752, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824, ++ 0x9c06, 0x1570, 0x2069, 0x0100, 0x6820, 0xd0a4, 0x1508, 0x080c, ++ 0x80b8, 0x080c, 0x93ac, 0x68c3, 0x0000, 0x080c, 0x98da, 0x7827, ++ 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, 0x2069, ++ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0040, ++ 0x080c, 0x6518, 0x1520, 0x6003, 0x0009, 0x630a, 0x2c30, 0x00f8, ++ 0x6014, 0x2048, 0x080c, 0xbb15, 0x01b0, 0x6020, 0x9086, 0x0003, ++ 0x1508, 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, 0x0060, 0x080c, ++ 0x6518, 0x1168, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, ++ 0x688c, 0x080c, 0xbd00, 0x080c, 0x9e62, 0x080c, 0x97b0, 0x000e, ++ 0x0804, 0x86f8, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e, 0x000e, ++ 0x009e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, 0x080c, 0xd4d5, ++ 0x0c50, 0x080c, 0xa7c0, 0x6020, 0x9086, 0x0002, 0x1150, 0x6004, ++ 0x0006, 0x9086, 0x0085, 0x000e, 0x0990, 0x9086, 0x008b, 0x0978, ++ 0x08d0, 0x6020, 0x9086, 0x0005, 0x19b0, 0x6004, 0x0006, 0x9086, ++ 0x0085, 0x000e, 0x0d18, 0x9086, 0x008b, 0x0d00, 0x0860, 0x0006, ++ 0x0066, 0x0096, 0x00b6, 0x00c6, 0x00d6, 0x7818, 0x905d, 0x0904, ++ 0x87ff, 0xb854, 0x0006, 0x9006, 0xb856, 0xb85a, 0xb800, 0xc0d4, ++ 0xc0dc, 0xb802, 0x080c, 0x6171, 0x0904, 0x87fc, 0x7e24, 0x86ff, ++ 0x0904, 0x87ef, 0x9680, 0x0005, 0x2004, 0x9906, 0x1904, 0x87ef, ++ 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x87e6, 0x080c, ++ 0x80b8, 0x080c, 0x93ac, 0x68c3, 0x0000, 0x080c, 0x98da, 0x7827, ++ 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, 0x2069, ++ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, ++ 0x00c6, 0x3e08, 0x918e, 0x0002, 0x1168, 0xb800, 0xd0bc, 0x0150, ++ 0x9680, 0x0010, 0x200c, 0x81ff, 0x1518, 0x2009, 0x1959, 0x210c, ++ 0x2102, 0x00f0, 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, ++ 0x600f, 0x0000, 0x080c, 0x9e62, 0x00ce, 0x0048, 0x00de, 0x00c6, ++ 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x8792, 0x89ff, ++ 0x0138, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x688c, ++ 0x080c, 0x97b0, 0x0804, 0x8792, 0x000e, 0x0804, 0x8786, 0x781e, ++ 0x781a, 0x00de, 0x00ce, 0x00be, 0x009e, 0x006e, 0x000e, 0x0005, ++ 0x00e6, 0x00d6, 0x0096, 0x0066, 0xb800, 0xd0dc, 0x01a0, 0xb84c, ++ 0x904d, 0x0188, 0xa878, 0x9606, 0x1170, 0x2071, 0x19b8, 0x7024, ++ 0x9035, 0x0148, 0x9080, 0x0005, 0x2004, 0x9906, 0x1120, 0xb800, ++ 0xc0dc, 0xb802, 0x0029, 0x006e, 0x009e, 0x00de, 0x00ee, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x78c0, 0x9005, 0x1138, 0x00c6, 0x2660, ++ 0x6003, 0x0009, 0x630a, 0x00ce, 0x04b8, 0x080c, 0x93ac, 0x78c3, ++ 0x0000, 0x080c, 0x98da, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, ++ 0x7b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, ++ 0x9006, 0x080c, 0x2b14, 0x2079, 0x0100, 0x7824, 0xd084, 0x0110, ++ 0x7827, 0x0001, 0x080c, 0x98da, 0x003e, 0x080c, 0x6171, 0x00c6, ++ 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, 0x080c, 0x9e32, ++ 0x00ce, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xbe06, ++ 0x080c, 0x688c, 0x080c, 0x97b0, 0x00fe, 0x0005, 0x00b6, 0x00e6, ++ 0x00c6, 0x2011, 0x0101, 0x2204, 0xc0c4, 0x2012, 0x2001, 0x180c, ++ 0x2014, 0xc2e4, 0x2202, 0x2071, 0x19b8, 0x7004, 0x9084, 0x0007, ++ 0x0002, 0x888b, 0x888f, 0x88a6, 0x88cf, 0x890d, 0x888b, 0x88a6, ++ 0x8889, 0x080c, 0x0db4, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7024, ++ 0x9065, 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0x9015, 0x0158, ++ 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, ++ 0x00ee, 0x00be, 0x0005, 0x7216, 0x7212, 0x0ca8, 0x6010, 0x2058, ++ 0x080c, 0x6171, 0xb800, 0xc0dc, 0xb802, 0x7007, 0x0000, 0x7027, ++ 0x0000, 0x7020, 0x8001, 0x7022, 0x1148, 0x2001, 0x180c, 0x2014, ++ 0xd2ec, 0x1180, 0x00ce, 0x00ee, 0x00be, 0x0005, 0xb854, 0x9015, ++ 0x0120, 0x721e, 0x080c, 0x8973, 0x0ca8, 0x7218, 0x721e, 0x080c, ++ 0x8973, 0x0c80, 0xc2ec, 0x2202, 0x080c, 0x8a4e, 0x0c58, 0x7024, ++ 0x9065, 0x05b8, 0x700c, 0x9c06, 0x1160, 0x080c, 0x97b0, 0x600c, ++ 0x9015, 0x0120, 0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, ++ 0x0430, 0x7014, 0x9c06, 0x1160, 0x080c, 0x97b0, 0x600c, 0x9015, ++ 0x0120, 0x7216, 0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, ++ 0x6020, 0x9086, 0x0003, 0x1198, 0x6010, 0x2058, 0x080c, 0x6171, ++ 0xb800, 0xc0dc, 0xb802, 0x080c, 0x97b0, 0x701c, 0x9065, 0x0138, ++ 0xb854, 0x9015, 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, ++ 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7024, 0x9065, 0x0140, ++ 0x080c, 0x97b0, 0x600c, 0x9015, 0x0158, 0x720e, 0x600f, 0x0000, ++ 0x080c, 0x98da, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, ++ 0x720e, 0x720a, 0x0ca8, 0x00d6, 0x2069, 0x19b8, 0x6830, 0x9084, ++ 0x0003, 0x0002, 0x8930, 0x8932, 0x8956, 0x892e, 0x080c, 0x0db4, ++ 0x00de, 0x0005, 0x00c6, 0x6840, 0x9086, 0x0001, 0x01b8, 0x683c, ++ 0x9065, 0x0130, 0x600c, 0x9015, 0x0170, 0x6a3a, 0x600f, 0x0000, ++ 0x6833, 0x0000, 0x683f, 0x0000, 0x2011, 0x19d7, 0x2013, 0x0000, ++ 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836, 0x0c90, 0x6843, 0x0000, ++ 0x6838, 0x9065, 0x0d68, 0x6003, 0x0003, 0x0c50, 0x00c6, 0x9006, ++ 0x6842, 0x6846, 0x684a, 0x683c, 0x9065, 0x0160, 0x600c, 0x9015, ++ 0x0130, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, 0x0018, 0x683e, ++ 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005, 0x2001, 0x180c, 0x200c, ++ 0xc1e5, 0x2102, 0x0005, 0x2001, 0x180c, 0x200c, 0xd1ec, 0x0120, ++ 0xc1ec, 0x2102, 0x080c, 0x8a4e, 0x2001, 0x19c4, 0x2004, 0x9086, ++ 0x0001, 0x0d58, 0x00d6, 0x2069, 0x19b8, 0x6804, 0x9084, 0x0007, ++ 0x0002, 0x8993, 0x8a36, 0x8a36, 0x8a36, 0x8a36, 0x8a38, 0x8a36, ++ 0x8991, 0x080c, 0x0db4, 0x6820, 0x9005, 0x1110, 0x00de, 0x0005, ++ 0x00c6, 0x680c, 0x9065, 0x0150, 0x6807, 0x0004, 0x6826, 0x682b, ++ 0x0000, 0x080c, 0x8aa4, 0x00ce, 0x00de, 0x0005, 0x6814, 0x9065, ++ 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, 0x8aa4, ++ 0x00ce, 0x00de, 0x0005, 0x00b6, 0x00e6, 0x6a1c, 0x92dd, 0x0000, ++ 0x0904, 0x8a22, 0xb84c, 0x900d, 0x0118, 0xb888, 0x9005, 0x01a0, ++ 0xb854, 0x905d, 0x0120, 0x920e, 0x0904, 0x8a22, 0x0028, 0x6818, ++ 0x920e, 0x0904, 0x8a22, 0x2058, 0xb84c, 0x900d, 0x0d88, 0xb888, ++ 0x9005, 0x1d70, 0x2b00, 0x681e, 0xbb3c, 0xb838, 0x9302, 0x1e40, ++ 0x080c, 0x9e09, 0x0904, 0x8a22, 0x8318, 0xbb3e, 0x6116, 0x2b10, ++ 0x6212, 0x0096, 0x2148, 0xa880, 0x9084, 0x00ff, 0x605e, 0xa883, ++ 0x0000, 0xa884, 0x009e, 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, ++ 0x8003, 0x801b, 0x831b, 0x9318, 0x631a, 0x6114, 0x0096, 0x2148, ++ 0xa964, 0x009e, 0x918c, 0x00ff, 0x918e, 0x0048, 0x0538, 0x00f6, ++ 0x2c78, 0x2061, 0x0100, 0xbab0, 0x629a, 0x2069, 0x0200, 0x2071, ++ 0x0240, 0x080c, 0x8fdc, 0x2069, 0x19b8, 0xbb00, 0xc3dd, 0xbb02, ++ 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x7823, 0x0003, ++ 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, 0x00be, 0x00ce, ++ 0x00de, 0x0005, 0x00ee, 0x00be, 0x00ce, 0x0cd0, 0xbb00, 0xc3dd, ++ 0xbb02, 0x6807, 0x0006, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x080c, ++ 0x9c63, 0x00ee, 0x00be, 0x00ce, 0x00de, 0x0005, 0x00de, 0x0005, ++ 0x00c6, 0x680c, 0x9065, 0x0138, 0x6807, 0x0004, 0x6826, 0x682b, ++ 0x0000, 0x080c, 0x8aa4, 0x00ce, 0x00de, 0x0005, 0x2001, 0x180c, ++ 0x2014, 0xc2ed, 0x2202, 0x00de, 0x00fe, 0x0005, 0x00f6, 0x00d6, ++ 0x2069, 0x19b8, 0x6830, 0x9086, 0x0000, 0x1548, 0x2001, 0x180c, ++ 0x2014, 0xd2e4, 0x0130, 0xc2e4, 0x2202, 0x080c, 0x8982, 0x2069, ++ 0x19b8, 0x2001, 0x180c, 0x200c, 0xd1c4, 0x11e0, 0x6838, 0x907d, ++ 0x01b0, 0x6a04, 0x9296, 0x0000, 0x1588, 0x6833, 0x0001, 0x683e, ++ 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6, 0x2091, 0x2400, ++ 0x002e, 0x080c, 0x1ae8, 0x1178, 0x012e, 0x080c, 0x9209, 0x00de, ++ 0x00fe, 0x0005, 0xc1c4, 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, ++ 0x7062, 0x006e, 0x08d8, 0x012e, 0x6843, 0x0000, 0x7803, 0x0002, ++ 0x780c, 0x9015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, ++ 0x683f, 0x0000, 0x0c20, 0x683a, 0x6836, 0x0cc0, 0x6a04, 0x9296, ++ 0x0006, 0x0958, 0x0804, 0x8a46, 0x6020, 0x9084, 0x000f, 0x000b, ++ 0x0005, 0x8ab8, 0x8abd, 0x8f16, 0x8fa5, 0x8abd, 0x8f16, 0x8fa5, ++ 0x8ab8, 0x8abd, 0x8ab8, 0x8ab8, 0x8ab8, 0x8ab8, 0x8ab8, 0x8ab8, ++ 0x080c, 0x886e, 0x080c, 0x8973, 0x0005, 0x00b6, 0x0156, 0x0136, ++ 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069, ++ 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0db4, ++ 0x6110, 0x2158, 0xb9b0, 0x2c78, 0x2061, 0x0100, 0x619a, 0x908a, ++ 0x0040, 0x1a04, 0x8b29, 0x005b, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, 0x0005, 0x8ca0, ++ 0x8cdb, 0x8d04, 0x8da7, 0x8dc8, 0x8dce, 0x8ddb, 0x8de3, 0x8def, ++ 0x8df5, 0x8e06, 0x8df5, 0x8e5d, 0x8de3, 0x8e69, 0x8e6f, 0x8def, ++ 0x8e6f, 0x8e7b, 0x8b27, 0x8b27, 0x8b27, 0x8b27, 0x8b27, 0x8b27, ++ 0x8b27, 0x8b27, 0x8b27, 0x8b27, 0x8b27, 0x958f, 0x95b2, 0x95c3, ++ 0x95e3, 0x9615, 0x8ddb, 0x8b27, 0x8ddb, 0x8df5, 0x8b27, 0x8d04, ++ 0x8da7, 0x8b27, 0x99c7, 0x8df5, 0x8b27, 0x99e3, 0x8df5, 0x8b27, ++ 0x8def, 0x8c9a, 0x8b4a, 0x8b27, 0x99ff, 0x9a6c, 0x9b43, 0x8b27, ++ 0x9b50, 0x8dd8, 0x9b7b, 0x8b27, 0x961f, 0x9ba8, 0x8b27, 0x080c, ++ 0x0db4, 0x2100, 0x005b, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, ++ 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, 0x0005, 0x8b48, 0x8b48, ++ 0x8b48, 0x8b71, 0x8c1d, 0x8c28, 0x8b48, 0x8b48, 0x8b48, 0x8c6f, ++ 0x8c7b, 0x8b8c, 0x8b48, 0x8ba7, 0x8bdb, 0x9d25, 0x9d6a, 0x8df5, ++ 0x080c, 0x0db4, 0x00d6, 0x0096, 0x080c, 0x8e8e, 0x7003, 0x2414, ++ 0x7007, 0x0018, 0x700b, 0x0800, 0x7814, 0x2048, 0xa83c, 0x700e, ++ 0xa850, 0x7022, 0xa854, 0x7026, 0x60c3, 0x0018, 0x080c, 0x9380, ++ 0x009e, 0x00de, 0x0005, 0x7810, 0x00b6, 0x2058, 0xb8a0, 0x00be, ++ 0x080c, 0x9db1, 0x1118, 0x9084, 0xff80, 0x0110, 0x9085, 0x0001, ++ 0x0005, 0x00d6, 0x0096, 0x080c, 0x8e8e, 0x7003, 0x0500, 0x7814, ++ 0x2048, 0xa874, 0x700a, 0xa878, 0x700e, 0xa87c, 0x7012, 0xa880, ++ 0x7016, 0xa884, 0x701a, 0xa888, 0x701e, 0x60c3, 0x0010, 0x080c, ++ 0x9380, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x080c, 0x8e8e, ++ 0x7003, 0x0500, 0x7814, 0x2048, 0xa8cc, 0x700a, 0xa8d0, 0x700e, ++ 0xa8d4, 0x7012, 0xa8d8, 0x7016, 0xa8dc, 0x701a, 0xa8e0, 0x701e, ++ 0x60c3, 0x0010, 0x080c, 0x9380, 0x009e, 0x00de, 0x0005, 0x00d6, ++ 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x8e8e, 0x20e9, 0x0000, ++ 0x2001, 0x1974, 0x2003, 0x0000, 0x7814, 0x2048, 0xa814, 0x8003, ++ 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, ++ 0x2098, 0x2001, 0x1974, 0x0016, 0x200c, 0x2001, 0x0001, 0x080c, ++ 0x224d, 0x080c, 0xc81a, 0x9006, 0x080c, 0x224d, 0x001e, 0xa804, ++ 0x9005, 0x0110, 0x2048, 0x0c28, 0x04d9, 0x080c, 0x9380, 0x012e, ++ 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x8ed9, 0x20e9, 0x0000, 0x2001, 0x1974, 0x2003, 0x0000, ++ 0x7814, 0x2048, 0xa86f, 0x0200, 0xa873, 0x0000, 0xa814, 0x8003, ++ 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, ++ 0x2098, 0x2001, 0x1974, 0x0016, 0x200c, 0x080c, 0xc81a, 0x001e, ++ 0xa804, 0x9005, 0x0110, 0x2048, 0x0c60, 0x0051, 0x7814, 0x2048, ++ 0x080c, 0x0f9d, 0x080c, 0x9380, 0x012e, 0x009e, 0x00de, 0x0005, ++ 0x60c0, 0x8004, 0x9084, 0x0003, 0x9005, 0x0130, 0x9082, 0x0004, ++ 0x20a3, 0x0000, 0x8000, 0x1de0, 0x0005, 0x080c, 0x8e8e, 0x7003, ++ 0x7800, 0x7808, 0x8007, 0x700a, 0x60c3, 0x0008, 0x0804, 0x9380, ++ 0x00d6, 0x00e6, 0x080c, 0x8ed9, 0x7814, 0x9084, 0xff00, 0x2073, ++ 0x0200, 0x8e70, 0x8e70, 0x9095, 0x0010, 0x2272, 0x8e70, 0x2073, ++ 0x0034, 0x8e70, 0x2069, 0x1805, 0x20a9, 0x0004, 0x2d76, 0x8d68, ++ 0x8e70, 0x1f04, 0x8c3e, 0x2069, 0x1801, 0x20a9, 0x0004, 0x2d76, ++ 0x8d68, 0x8e70, 0x1f04, 0x8c47, 0x2069, 0x1984, 0x9086, 0xdf00, ++ 0x0110, 0x2069, 0x199e, 0x20a9, 0x001a, 0x9e86, 0x0260, 0x1148, ++ 0x00c6, 0x2061, 0x0200, 0x6010, 0x8000, 0x6012, 0x00ce, 0x2071, ++ 0x0240, 0x2d04, 0x8007, 0x2072, 0x8d68, 0x8e70, 0x1f04, 0x8c55, ++ 0x60c3, 0x004c, 0x080c, 0x9380, 0x00ee, 0x00de, 0x0005, 0x080c, ++ 0x8e8e, 0x7003, 0x6300, 0x7007, 0x0028, 0x7808, 0x700e, 0x60c3, ++ 0x0008, 0x0804, 0x9380, 0x00d6, 0x0026, 0x0016, 0x080c, 0x8ed9, ++ 0x7003, 0x0200, 0x7814, 0x700e, 0x00e6, 0x9ef0, 0x0004, 0x2009, ++ 0x0001, 0x2011, 0x000c, 0x2073, 0x0800, 0x8e70, 0x2073, 0x0000, ++ 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x9380, 0x001e, 0x002e, ++ 0x00de, 0x0005, 0x2001, 0x1817, 0x2004, 0x609a, 0x0804, 0x9380, ++ 0x080c, 0x8e8e, 0x7003, 0x5200, 0x2069, 0x1853, 0x6804, 0xd084, ++ 0x0130, 0x6828, 0x0016, 0x080c, 0x2696, 0x710e, 0x001e, 0x20a9, ++ 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, ++ 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1, 0x0254, ++ 0x4003, 0x080c, 0x9db1, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, ++ 0x2001, 0x181e, 0x2004, 0x7032, 0x2001, 0x181f, 0x2004, 0x7036, ++ 0x0030, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, 0x7036, 0x60c3, ++ 0x001c, 0x0804, 0x9380, 0x080c, 0x8e8e, 0x7003, 0x0500, 0x080c, ++ 0x9db1, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001, 0x181e, ++ 0x2004, 0x700a, 0x2001, 0x181f, 0x2004, 0x700e, 0x0030, 0x2001, ++ 0x1817, 0x2004, 0x9084, 0x00ff, 0x700e, 0x20a9, 0x0004, 0x20e1, ++ 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x4003, ++ 0x60c3, 0x0010, 0x0804, 0x9380, 0x080c, 0x8e8e, 0x9006, 0x080c, ++ 0x652c, 0xb8a0, 0x9086, 0x007e, 0x1130, 0x7003, 0x0400, 0x620c, ++ 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, 0x904d, 0x0120, 0x9006, ++ 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, 0x0300, 0xb8a0, 0x9086, ++ 0x007e, 0x1904, 0x8d6f, 0x00d6, 0x2069, 0x193d, 0x2001, 0x1836, ++ 0x2004, 0xd0a4, 0x0178, 0x6800, 0x700a, 0x6808, 0x9084, 0x2000, ++ 0x7012, 0x680c, 0x7016, 0x701f, 0x2710, 0x6818, 0x7022, 0x681c, ++ 0x7026, 0x0080, 0x6800, 0x700a, 0x6804, 0x700e, 0x6808, 0x080c, ++ 0x6fb2, 0x1118, 0x9084, 0x37ff, 0x0010, 0x9084, 0x3fff, 0x7012, ++ 0x680c, 0x7016, 0x00de, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, ++ 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, ++ 0x2099, 0x1801, 0x20a1, 0x025a, 0x4003, 0x00d6, 0x080c, 0x9c2a, ++ 0x2069, 0x1945, 0x2071, 0x024e, 0x6800, 0xc0dd, 0x7002, 0x080c, ++ 0x538a, 0xd0e4, 0x0110, 0x680c, 0x700e, 0x00de, 0x04a0, 0x2001, ++ 0x1836, 0x2004, 0xd0a4, 0x0168, 0x0016, 0x2009, 0x0002, 0x60e0, ++ 0x9106, 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c, 0x26d7, 0x61e2, ++ 0x001e, 0x20e1, 0x0001, 0x2099, 0x193d, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1805, ++ 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1, ++ 0x025a, 0x4003, 0x080c, 0x9c2a, 0x20a1, 0x024e, 0x20a9, 0x0008, ++ 0x2099, 0x1945, 0x4003, 0x60c3, 0x0074, 0x0804, 0x9380, 0x080c, ++ 0x8e8e, 0x7003, 0x2010, 0x7007, 0x0014, 0x700b, 0x0800, 0x700f, ++ 0x2000, 0x9006, 0x00f6, 0x2079, 0x1853, 0x7904, 0x00fe, 0xd1ac, ++ 0x1110, 0x9085, 0x0020, 0x0010, 0x9085, 0x0010, 0x9085, 0x0002, ++ 0x00d6, 0x0804, 0x8e3e, 0x7026, 0x60c3, 0x0014, 0x0804, 0x9380, ++ 0x080c, 0x8e8e, 0x7003, 0x5000, 0x0804, 0x8d1e, 0x080c, 0x8e8e, ++ 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3, 0x0014, 0x0804, 0x9380, ++ 0x080c, 0x8ed0, 0x0010, 0x080c, 0x8ed9, 0x7003, 0x0200, 0x60c3, ++ 0x0004, 0x0804, 0x9380, 0x080c, 0x8ed9, 0x7003, 0x0100, 0x700b, ++ 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, 0x9380, 0x080c, ++ 0x8ed9, 0x7003, 0x0200, 0x0804, 0x8d1e, 0x080c, 0x8ed9, 0x7003, ++ 0x0100, 0x782c, 0x9005, 0x0110, 0x700a, 0x0010, 0x700b, 0x0003, ++ 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9380, 0x00d6, 0x080c, ++ 0x8ed9, 0x7003, 0x0210, 0x7007, 0x0014, 0x700b, 0x0800, 0xb894, ++ 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184, 0x0030, 0x0190, 0xb998, ++ 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118, 0x700f, 0x2100, 0x0058, ++ 0x700f, 0x0100, 0x0040, 0x700f, 0x0400, 0x0028, 0x700f, 0x0700, ++ 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079, 0x1853, 0x7904, 0x00fe, ++ 0xd1ac, 0x1110, 0x9085, 0x0020, 0x0010, 0x9085, 0x0010, 0x2009, ++ 0x1875, 0x210c, 0xd184, 0x1110, 0x9085, 0x0002, 0x0026, 0x2009, ++ 0x1873, 0x210c, 0xd1e4, 0x0150, 0xc0c5, 0xbabc, 0xd28c, 0x1108, ++ 0xc0cd, 0x9094, 0x0030, 0x9296, 0x0010, 0x0140, 0xd1ec, 0x0130, ++ 0x9094, 0x0030, 0x9296, 0x0010, 0x0108, 0xc0bd, 0x002e, 0x7026, ++ 0x60c3, 0x0014, 0x00de, 0x0804, 0x9380, 0x080c, 0x8ed9, 0x7003, ++ 0x0210, 0x7007, 0x0014, 0x700f, 0x0100, 0x60c3, 0x0014, 0x0804, ++ 0x9380, 0x080c, 0x8ed9, 0x7003, 0x0200, 0x0804, 0x8ca4, 0x080c, ++ 0x8ed9, 0x7003, 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, ++ 0x0008, 0x0804, 0x9380, 0x080c, 0x8ed9, 0x7003, 0x0100, 0x700b, ++ 0x000b, 0x60c3, 0x0008, 0x0804, 0x9380, 0x0026, 0x00d6, 0x0036, ++ 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, ++ 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x080c, 0x9c3f, ++ 0xb810, 0x9305, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, ++ 0x700a, 0x687c, 0x700e, 0x9485, 0x0029, 0x7012, 0x004e, 0x003e, ++ 0x00de, 0x080c, 0x936e, 0x721a, 0x9f95, 0x0000, 0x7222, 0x7027, ++ 0xffff, 0x2071, 0x024c, 0x002e, 0x0005, 0x0026, 0x080c, 0x9c3f, ++ 0x7003, 0x02ff, 0x7007, 0xfffc, 0x00d6, 0x2069, 0x1800, 0x6878, ++ 0x700a, 0x687c, 0x700e, 0x00de, 0x7013, 0x2029, 0x0c10, 0x7003, ++ 0x0100, 0x7007, 0x0000, 0x700b, 0xfc02, 0x700f, 0x0000, 0x0005, ++ 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3300, 0x2021, 0x0800, ++ 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2300, 0x2021, ++ 0x0100, 0x080c, 0x9c3f, 0xb810, 0x9305, 0x7002, 0xb814, 0x7006, ++ 0x2069, 0x1800, 0xb810, 0x9005, 0x1140, 0xb814, 0x9005, 0x1128, ++ 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0020, 0x6878, 0x700a, 0x687c, ++ 0x700e, 0x0000, 0x9485, 0x0098, 0x7012, 0x004e, 0x003e, 0x00de, ++ 0x080c, 0x936e, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x2071, ++ 0x024c, 0x002e, 0x0005, 0x080c, 0x936e, 0x721a, 0x7a08, 0x7222, ++ 0x7814, 0x7026, 0x2071, 0x024c, 0x002e, 0x0005, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, ++ 0x908a, 0x0085, 0x0a0c, 0x0db4, 0x908a, 0x0092, 0x1a0c, 0x0db4, ++ 0x6110, 0x2158, 0xb9b0, 0x2c78, 0x2061, 0x0100, 0x619a, 0x9082, ++ 0x0085, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x0005, ++ 0x8f47, 0x8f56, 0x8f61, 0x8f45, 0x8f45, 0x8f45, 0x8f47, 0x8f45, ++ 0x8f45, 0x8f45, 0x8f45, 0x8f45, 0x8f45, 0x080c, 0x0db4, 0x0411, ++ 0x60c3, 0x0000, 0x0026, 0x080c, 0x29ca, 0x0228, 0x2011, 0x0101, ++ 0x2204, 0xc0c5, 0x2012, 0x002e, 0x0804, 0x9380, 0x0431, 0x7808, ++ 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3, 0x000c, 0x0804, ++ 0x9380, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300, 0x60c3, 0x0004, ++ 0x0804, 0x9380, 0x0026, 0x080c, 0x9c3f, 0xb810, 0x9085, 0x8100, ++ 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, 0x700a, 0x687c, ++ 0x700e, 0x7013, 0x0009, 0x0804, 0x8ea9, 0x0026, 0x080c, 0x9c3f, ++ 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, ++ 0x6878, 0x700a, 0x687c, 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, ++ 0x8f0b, 0x0026, 0x080c, 0x9c3f, 0xb810, 0x9085, 0x8500, 0x7002, ++ 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, 0x700a, 0x687c, 0x700e, ++ 0x2001, 0x0099, 0x7012, 0x0804, 0x8f0b, 0x00b6, 0x00c6, 0x00d6, ++ 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071, 0x0240, 0x7804, ++ 0x908a, 0x0040, 0x0a0c, 0x0db4, 0x908a, 0x0054, 0x1a0c, 0x0db4, ++ 0x7910, 0x2158, 0xb9b0, 0x2061, 0x0100, 0x619a, 0x9082, 0x0040, ++ 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x0005, 0x8fdc, ++ 0x9098, 0x906b, 0x91ba, 0x8fda, 0x8fda, 0x8fda, 0x8fda, 0x8fda, ++ 0x8fda, 0x8fda, 0x978d, 0x9795, 0x979d, 0x97a5, 0x8fda, 0x9b87, ++ 0x8fda, 0x9785, 0x080c, 0x0db4, 0x0096, 0x780b, 0xffff, 0x080c, ++ 0x9047, 0x7914, 0x2148, 0xa978, 0x7956, 0xae64, 0x96b4, 0x00ff, ++ 0x9686, 0x0008, 0x1148, 0xa8b4, 0x7032, 0xa8b8, 0x7036, 0xa8bc, ++ 0x703a, 0xa8c0, 0x703e, 0x0008, 0x7132, 0xa97c, 0x9184, 0x000f, ++ 0x1118, 0x2001, 0x0005, 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, ++ 0x0018, 0x9084, 0x0006, 0x8004, 0x2010, 0x785c, 0x9084, 0x00ff, ++ 0x8007, 0x9205, 0x7042, 0xd1ac, 0x0158, 0x7047, 0x0002, 0x9686, ++ 0x0008, 0x1118, 0x080c, 0x1787, 0x0010, 0x080c, 0x1648, 0x0050, ++ 0xd1b4, 0x0118, 0x7047, 0x0001, 0x0028, 0x7047, 0x0000, 0x9016, ++ 0x2230, 0x0010, 0xaab0, 0xaeac, 0x726a, 0x766e, 0x20a9, 0x0008, ++ 0x20e9, 0x0000, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0023, 0x2098, ++ 0x20a1, 0x0252, 0x2069, 0x0200, 0x6813, 0x0018, 0x4003, 0x6813, ++ 0x0008, 0x60c3, 0x0020, 0x6017, 0x0009, 0x2001, 0x19d4, 0x2003, ++ 0x07d0, 0x2001, 0x19d3, 0x2003, 0x0009, 0x009e, 0x0005, 0x6813, ++ 0x0008, 0xba8c, 0x8210, 0xb8bc, 0xd084, 0x0128, 0x7a46, 0x7b14, ++ 0x7b4a, 0x722e, 0x732a, 0x9294, 0x00ff, 0xba8e, 0x8217, 0x721a, ++ 0xba10, 0x9295, 0x0600, 0x7202, 0xba14, 0x7206, 0x2069, 0x1800, ++ 0x6a78, 0x720a, 0x6a7c, 0x720e, 0x7013, 0x0829, 0x2f10, 0x7222, ++ 0x7027, 0xffff, 0x0005, 0x00d6, 0x0096, 0x0081, 0x7814, 0x2048, ++ 0xa890, 0x7002, 0xa88c, 0x7006, 0xa8b0, 0x700a, 0xa8ac, 0x700e, ++ 0x60c3, 0x000c, 0x009e, 0x00de, 0x0804, 0x9380, 0x6813, 0x0008, ++ 0xb810, 0x9085, 0x0500, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, ++ 0x6878, 0x700a, 0x687c, 0x700e, 0x7013, 0x0889, 0x080c, 0x936e, ++ 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x2071, 0x024c, 0x0005, ++ 0x00d6, 0x0096, 0x080c, 0x9198, 0x7814, 0x2048, 0x080c, 0xbb15, ++ 0x1130, 0x7814, 0x9084, 0x0700, 0x8007, 0x0033, 0x0010, 0x9006, ++ 0x001b, 0x009e, 0x00de, 0x0005, 0x90b6, 0x911f, 0x912f, 0x9155, ++ 0x9161, 0x9172, 0x917a, 0x90b4, 0x080c, 0x0db4, 0x0016, 0x0036, ++ 0xa97c, 0x918c, 0x0003, 0x0118, 0x9186, 0x0003, 0x1198, 0xaba8, ++ 0x7824, 0xd0cc, 0x1168, 0x7316, 0xa898, 0x701a, 0xa894, 0x701e, ++ 0x003e, 0x001e, 0x2001, 0x1982, 0x2004, 0x60c2, 0x0804, 0x9380, ++ 0xc3e5, 0x0c88, 0x9186, 0x0001, 0x190c, 0x0db4, 0xaba8, 0x7824, ++ 0xd0cc, 0x1904, 0x911c, 0x7316, 0xa898, 0x701a, 0xa894, 0x701e, ++ 0xa8a4, 0x7026, 0xa8ac, 0x702e, 0x2009, 0x0018, 0x9384, 0x0300, ++ 0x0570, 0xd3c4, 0x0110, 0xa8ac, 0x9108, 0xd3cc, 0x0110, 0xa8a4, ++ 0x9108, 0x6810, 0x9085, 0x0010, 0x6812, 0x2011, 0x0258, 0x20e9, ++ 0x0000, 0x22a0, 0x0156, 0x20a9, 0x0008, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x002c, 0x2098, 0x4003, 0x6810, 0x8000, 0x6812, 0x2011, ++ 0x0240, 0x22a0, 0x20a9, 0x0005, 0x4003, 0x6810, 0xc084, 0x6812, ++ 0x015e, 0x9184, 0x0003, 0x0118, 0x2019, 0x0245, 0x201a, 0x61c2, ++ 0x003e, 0x001e, 0x0804, 0x9380, 0xc3e5, 0x0804, 0x90db, 0x2011, ++ 0x0008, 0x2001, 0x180f, 0x2004, 0xd0a4, 0x0110, 0x2011, 0x0028, ++ 0x7824, 0xd0cc, 0x1110, 0x7216, 0x0470, 0x0ce8, 0xc2e5, 0x2011, ++ 0x0302, 0x0016, 0x782c, 0x701a, 0x7930, 0x711e, 0x9105, 0x0108, ++ 0xc2dd, 0x001e, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x7027, ++ 0x0012, 0x702f, 0x0008, 0x7043, 0x7000, 0x7047, 0x0500, 0x704f, ++ 0x000a, 0x2069, 0x0200, 0x6813, 0x0009, 0x2071, 0x0240, 0x700b, ++ 0x2500, 0x60c3, 0x0032, 0x0804, 0x9380, 0x2011, 0x0028, 0x7824, ++ 0xd0cc, 0x1128, 0x7216, 0x60c3, 0x0018, 0x0804, 0x9380, 0x0cd0, ++ 0xc2e5, 0x2011, 0x0100, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, ++ 0x702f, 0x0008, 0x7858, 0x9084, 0x00ff, 0x7036, 0x60c3, 0x0020, ++ 0x0804, 0x9380, 0x2011, 0x0008, 0x7824, 0xd0cc, 0x0108, 0xc2e5, ++ 0x7216, 0x0c08, 0x0036, 0x7b14, 0x9384, 0xff00, 0x7816, 0x9384, ++ 0x00ff, 0x8001, 0x1138, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, ++ 0x003e, 0x0888, 0x0046, 0x2021, 0x0800, 0x0006, 0x7824, 0xd0cc, ++ 0x000e, 0x0108, 0xc4e5, 0x7416, 0x004e, 0x701e, 0x003e, 0x0818, ++ 0x00d6, 0x6813, 0x0008, 0xb810, 0x9085, 0x0700, 0x7002, 0xb814, ++ 0x7006, 0x2069, 0x1800, 0x6878, 0x700a, 0x687c, 0x700e, 0x7824, ++ 0xd0cc, 0x1168, 0x7013, 0x0898, 0x080c, 0x936e, 0x721a, 0x7a08, ++ 0x7222, 0x2f10, 0x7226, 0x2071, 0x024c, 0x00de, 0x0005, 0x7013, ++ 0x0889, 0x0c90, 0x0016, 0x7814, 0x9084, 0x0700, 0x8007, 0x0013, ++ 0x001e, 0x0005, 0x91ca, 0x91ca, 0x91cc, 0x91ca, 0x91ca, 0x91ca, ++ 0x91e6, 0x91ca, 0x080c, 0x0db4, 0x7914, 0x918c, 0x08ff, 0x918d, ++ 0xf600, 0x7916, 0x2009, 0x0003, 0x00b9, 0x2069, 0x1853, 0x6804, ++ 0xd0bc, 0x0130, 0x682c, 0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, ++ 0x7033, 0x3f00, 0x60c3, 0x0001, 0x0804, 0x9380, 0x2009, 0x0003, ++ 0x0019, 0x7033, 0x7f00, 0x0cb0, 0x0016, 0x080c, 0x9c3f, 0x001e, ++ 0xb810, 0x9085, 0x0100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, ++ 0x6a78, 0x720a, 0x6a7c, 0x720e, 0x7013, 0x0888, 0x918d, 0x0008, ++ 0x7116, 0x080c, 0x936e, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, ++ 0x0005, 0x00b6, 0x0096, 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, ++ 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, 0x7810, 0x2058, 0xb8a0, ++ 0x2028, 0xb910, 0xba14, 0x7378, 0x747c, 0x7820, 0x90be, 0x0006, ++ 0x0904, 0x92dd, 0x90be, 0x000a, 0x1904, 0x9299, 0xb8b0, 0x609e, ++ 0x7814, 0x2048, 0xa87c, 0xd0fc, 0x0558, 0xaf90, 0x9784, 0xff00, ++ 0x9105, 0x6062, 0x873f, 0x9784, 0xff00, 0x0006, 0x7814, 0x2048, ++ 0xa878, 0xc0fc, 0x9005, 0x000e, 0x1160, 0xaf94, 0x87ff, 0x0198, ++ 0x2039, 0x0098, 0x9705, 0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, ++ 0x0038, 0x9185, 0x2200, 0x6062, 0x6073, 0x0129, 0x6077, 0x0000, ++ 0xb8b0, 0x609e, 0x0050, 0x2039, 0x0029, 0x9705, 0x6072, 0x0cc0, ++ 0x9185, 0x0200, 0x6062, 0x6073, 0x2029, 0xa87c, 0xd0fc, 0x0118, ++ 0xaf94, 0x87ff, 0x1120, 0x2f00, 0x6082, 0x7808, 0x6086, 0x6266, ++ 0x636a, 0x646e, 0x6077, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, ++ 0xb88e, 0x8007, 0x607a, 0x607f, 0x0000, 0xa838, 0x608a, 0xa834, ++ 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c, 0x60ce, 0x60af, ++ 0x95d5, 0x60d7, 0x0000, 0x080c, 0x9c24, 0x2009, 0x07d0, 0x60c4, ++ 0x9084, 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x80bd, ++ 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x009e, 0x00be, ++ 0x0005, 0x7804, 0x9086, 0x0040, 0x0904, 0x9319, 0x9185, 0x0100, ++ 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, ++ 0x60af, 0x95d5, 0x60d7, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, ++ 0xb88e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, ++ 0x6086, 0x7814, 0x2048, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, ++ 0x60c6, 0xa844, 0x60ca, 0xb86c, 0x60ce, 0xbab0, 0x629e, 0x080c, ++ 0x9c24, 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, 0x0110, ++ 0x2009, 0x1b58, 0x080c, 0x80bd, 0x003e, 0x004e, 0x005e, 0x00ce, ++ 0x00de, 0x00ee, 0x009e, 0x00be, 0x0005, 0x7814, 0x2048, 0xa87c, ++ 0x9084, 0x0003, 0x9086, 0x0002, 0x0904, 0x9335, 0x9185, 0x0100, ++ 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, ++ 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x7838, ++ 0x607e, 0x2f00, 0x6086, 0x7808, 0x6082, 0xa890, 0x608a, 0xa88c, ++ 0x608e, 0xa8b0, 0x60c6, 0xa8ac, 0x60ca, 0xa8ac, 0x7930, 0x9108, ++ 0x7932, 0xa8b0, 0x792c, 0x9109, 0x792e, 0xb86c, 0x60ce, 0x60af, ++ 0x95d5, 0x60d7, 0x0000, 0xbab0, 0x629e, 0x080c, 0x9c01, 0x0804, ++ 0x92c9, 0xb8bc, 0xd084, 0x0148, 0xb88c, 0x7814, 0x2048, 0xb88c, ++ 0x7846, 0xa836, 0x2900, 0xa83a, 0xb04a, 0x9185, 0x0600, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x6073, 0x0829, 0x6077, 0x0000, 0x60af, ++ 0x9575, 0x60d7, 0x0000, 0x0804, 0x92ac, 0x9185, 0x0700, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x7824, 0xd0cc, 0x7826, 0x0118, 0x6073, ++ 0x0889, 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0xb88c, 0x8000, ++ 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, ++ 0x6086, 0x7808, 0x6082, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, ++ 0x60c6, 0xa844, 0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, ++ 0x0000, 0xbab0, 0x629e, 0x7824, 0xd0cc, 0x0120, 0x080c, 0x9c24, ++ 0x0804, 0x92c9, 0x080c, 0x9c01, 0x0804, 0x92c9, 0x7a10, 0x00b6, ++ 0x2258, 0xba8c, 0x8210, 0x9294, 0x00ff, 0xba8e, 0x00be, 0x8217, ++ 0x0005, 0x00d6, 0x2069, 0x19b8, 0x6843, 0x0001, 0x00de, 0x0005, ++ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x00f1, 0x080c, 0x80af, 0x0005, ++ 0x0016, 0x2001, 0x180c, 0x200c, 0x9184, 0x0600, 0x9086, 0x0600, ++ 0x0128, 0x0089, 0x080c, 0x80af, 0x001e, 0x0005, 0xc1e5, 0x2001, ++ 0x180c, 0x2102, 0x2001, 0x19b9, 0x2003, 0x0000, 0x2001, 0x19c1, ++ 0x2003, 0x0000, 0x0c88, 0x0006, 0x6014, 0x9084, 0x1804, 0x9085, ++ 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, ++ 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0x9084, 0x1804, 0x9085, ++ 0x0008, 0x6016, 0x000e, 0xa001, 0xa001, 0xa001, 0x61a6, 0x00ce, ++ 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, ++ 0x2069, 0x0140, 0x080c, 0x6fb2, 0x11e8, 0x2001, 0x19d4, 0x2004, ++ 0x9005, 0x1904, 0x9412, 0x0066, 0x2031, 0x0001, 0x080c, 0x7062, ++ 0x006e, 0x1160, 0x2061, 0x0100, 0x6020, 0xd0b4, 0x1120, 0x6024, ++ 0xd084, 0x090c, 0x0db4, 0x080c, 0x80af, 0x0460, 0x00c6, 0x2061, ++ 0x19b8, 0x00d0, 0x6904, 0x9194, 0x4000, 0x0548, 0x080c, 0x93ac, ++ 0x080c, 0x2b24, 0x00c6, 0x2061, 0x19b8, 0x6128, 0x9192, 0x0008, ++ 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, ++ 0x80af, 0x080c, 0x93a3, 0x0070, 0x6124, 0x91e5, 0x0000, 0x0140, ++ 0x080c, 0xd8c9, 0x080c, 0x80b8, 0x2009, 0x0014, 0x080c, 0x9eac, ++ 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, ++ 0x19d4, 0x2004, 0x9005, 0x1db0, 0x00c6, 0x2061, 0x19b8, 0x6128, ++ 0x9192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x80af, ++ 0x080c, 0x5b90, 0x2009, 0x1852, 0x2114, 0x8210, 0x220a, 0x0c10, ++ 0x0096, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, 0x80c5, ++ 0x2071, 0x19b8, 0x713c, 0x81ff, 0x0904, 0x94a2, 0x2061, 0x0100, ++ 0x2069, 0x0140, 0x080c, 0x6fb2, 0x11b0, 0x0036, 0x2019, 0x0002, ++ 0x080c, 0x96d8, 0x003e, 0x713c, 0x2160, 0x080c, 0xd8c9, 0x2009, ++ 0x004a, 0x080c, 0x9eac, 0x0066, 0x2031, 0x0001, 0x080c, 0x7062, ++ 0x006e, 0x0804, 0x94a2, 0x080c, 0x94ae, 0x0904, 0x94a2, 0x6904, ++ 0xd1f4, 0x0904, 0x94a9, 0x080c, 0x2b24, 0x00c6, 0x703c, 0x9065, ++ 0x090c, 0x0db4, 0x6020, 0x00ce, 0x9086, 0x0006, 0x1528, 0x61c8, ++ 0x60c4, 0x9105, 0x1508, 0x2009, 0x180c, 0x2104, 0xd0d4, 0x01e0, ++ 0x6214, 0x9294, 0x1800, 0x1128, 0x6224, 0x9294, 0x0002, 0x1510, ++ 0x0030, 0xc0d4, 0x200a, 0xd0cc, 0x0110, 0x080c, 0x2a77, 0x6014, ++ 0x9084, 0xe7fd, 0x9085, 0x0010, 0x6016, 0x703c, 0x2060, 0x2009, ++ 0x0049, 0x080c, 0x9eac, 0x0070, 0x0036, 0x2019, 0x0001, 0x080c, ++ 0x96d8, 0x003e, 0x713c, 0x2160, 0x080c, 0xd8c9, 0x2009, 0x004a, ++ 0x080c, 0x9eac, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x009e, ++ 0x0005, 0xd1ec, 0x1904, 0x9463, 0x0804, 0x9465, 0x00d6, 0x00c6, ++ 0x0096, 0x703c, 0x9065, 0x090c, 0x0db4, 0x2001, 0x1836, 0x2004, ++ 0xd09c, 0x1904, 0x953a, 0x2001, 0x0306, 0x200c, 0x9184, 0x0030, ++ 0x0904, 0x953a, 0x9184, 0x0048, 0x9086, 0x0008, 0x1904, 0x953a, ++ 0x2001, 0x020b, 0x2004, 0xd0fc, 0x0904, 0x953a, 0xd08c, 0x0904, ++ 0x953a, 0x2009, 0x1a50, 0x2104, 0x8000, 0x0208, 0x200a, 0x2069, ++ 0x0100, 0x6914, 0x918c, 0x0184, 0x918d, 0x0010, 0x6916, 0x69c8, ++ 0x2011, 0x0020, 0x68c8, 0x9106, 0x1570, 0x8211, 0x1dd8, 0x2001, ++ 0x0306, 0x2003, 0x4800, 0x2001, 0x009a, 0x2003, 0x0004, 0x2001, ++ 0x1a36, 0x2003, 0x0000, 0x2001, 0x1a3f, 0x2003, 0x0000, 0x6a88, ++ 0x698c, 0x2200, 0x9105, 0x1120, 0x2c10, 0x080c, 0x1a5c, 0x0040, ++ 0x6014, 0x2048, 0xaa3a, 0xa936, 0x6ac4, 0x69c8, 0xa946, 0xaa4a, ++ 0x0126, 0x00c6, 0x2091, 0x2400, 0x002e, 0x080c, 0x1ae8, 0x190c, ++ 0x0db4, 0x012e, 0x0090, 0x2009, 0x1a51, 0x2104, 0x8000, 0x0208, ++ 0x200a, 0x69c8, 0x2011, 0x0020, 0x8211, 0x1df0, 0x68c8, 0x9106, ++ 0x1dc0, 0x69c4, 0x68c8, 0x9105, 0x0160, 0x6824, 0xd08c, 0x0110, ++ 0x6827, 0x0002, 0x7048, 0xc085, 0x704a, 0x0079, 0x7048, 0xc084, ++ 0x704a, 0x2009, 0x07d0, 0x080c, 0x80bd, 0x9006, 0x009e, 0x00ce, ++ 0x00de, 0x0005, 0x9085, 0x0001, 0x0cc8, 0x0026, 0x00e6, 0x2071, ++ 0x19b8, 0x7048, 0xd084, 0x01c0, 0x713c, 0x81ff, 0x01a8, 0x2071, ++ 0x0100, 0x9188, 0x0008, 0x2114, 0x928e, 0x0006, 0x1138, 0x7014, ++ 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, 0x0030, 0x7014, 0x9084, ++ 0x1984, 0x9085, 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00b6, ++ 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x6010, 0x2058, 0xbca0, 0x2071, 0x19b8, 0x7018, ++ 0x2058, 0x8bff, 0x0190, 0xb8a0, 0x9406, 0x0118, 0xb854, 0x2058, ++ 0x0cc0, 0x6014, 0x0096, 0x2048, 0xac6c, 0xad70, 0xae78, 0x009e, ++ 0x080c, 0x6370, 0x0110, 0x9085, 0x0001, 0x012e, 0x000e, 0x004e, ++ 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00be, 0x0005, 0x080c, ++ 0x8e8e, 0x7003, 0x1200, 0x7838, 0x7012, 0x783c, 0x7016, 0x00c6, ++ 0x7820, 0x9086, 0x0004, 0x1148, 0x7810, 0x9005, 0x0130, 0x00b6, ++ 0x2058, 0xb810, 0xb914, 0x00be, 0x0020, 0x2061, 0x1800, 0x6078, ++ 0x617c, 0x9084, 0x00ff, 0x700a, 0x710e, 0x00ce, 0x60c3, 0x002c, ++ 0x0804, 0x9380, 0x080c, 0x8e8e, 0x7003, 0x0f00, 0x7808, 0xd09c, ++ 0x0128, 0xb810, 0x9084, 0x00ff, 0x700a, 0xb814, 0x700e, 0x60c3, ++ 0x0008, 0x0804, 0x9380, 0x0156, 0x080c, 0x8ed9, 0x7003, 0x0200, ++ 0x2011, 0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, ++ 0x2019, 0x1841, 0x9ef0, 0x0002, 0x2376, 0x8e70, 0x2276, 0x8e70, ++ 0x9398, 0x0002, 0x9290, 0x0002, 0x1f04, 0x95d4, 0x60c3, 0x001c, ++ 0x015e, 0x0804, 0x9380, 0x0016, 0x0026, 0x080c, 0x8eb5, 0x080c, ++ 0x8ec7, 0x9e80, 0x0004, 0x20e9, 0x0000, 0x20a0, 0x7814, 0x0096, ++ 0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, ++ 0x2098, 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x9192, 0x0010, ++ 0x1250, 0x4003, 0x9080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x9380, ++ 0x002e, 0x001e, 0x0005, 0x20a9, 0x0010, 0x4003, 0x080c, 0x9c2a, ++ 0x20a1, 0x0240, 0x22a8, 0x4003, 0x0c68, 0x080c, 0x8e8e, 0x7003, ++ 0x6200, 0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9380, 0x0016, ++ 0x0026, 0x080c, 0x8e8e, 0x20e9, 0x0000, 0x20a1, 0x024c, 0x7814, ++ 0x0096, 0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, ++ 0x0023, 0x2098, 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x4003, ++ 0x8003, 0x60c2, 0x080c, 0x9380, 0x002e, 0x001e, 0x0005, 0x00e6, ++ 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x700c, ++ 0x2060, 0x8cff, 0x0178, 0x080c, 0xbd1d, 0x1110, 0x080c, 0xa7c0, ++ 0x600c, 0x0006, 0x080c, 0xbf84, 0x080c, 0x9e32, 0x080c, 0x97b0, ++ 0x00ce, 0x0c78, 0x2c00, 0x700e, 0x700a, 0x012e, 0x000e, 0x00ce, ++ 0x00ee, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, ++ 0x0066, 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, ++ 0x200c, 0x918c, 0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, ++ 0x2071, 0x19b8, 0x7024, 0x2060, 0x8cff, 0x01f8, 0x080c, 0x93ac, ++ 0x6ac0, 0x68c3, 0x0000, 0x080c, 0x80b8, 0x00c6, 0x2061, 0x0100, ++ 0x080c, 0x9c43, 0x00ce, 0x20a9, 0x01f4, 0x0461, 0x2009, 0x0013, ++ 0x080c, 0x9eac, 0x000e, 0x001e, 0x002e, 0x006e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, 0x1800, 0x2004, ++ 0x9096, 0x0001, 0x0d78, 0x9096, 0x0004, 0x0d60, 0x080c, 0x80b8, ++ 0x6814, 0x9084, 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, ++ 0x68c3, 0x0000, 0x2011, 0x5b3a, 0x080c, 0x8038, 0x20a9, 0x01f4, ++ 0x0009, 0x08c0, 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, ++ 0x9084, 0x4000, 0x190c, 0x2b24, 0x0090, 0xd084, 0x0118, 0x6827, ++ 0x0001, 0x0010, 0x1f04, 0x96ba, 0x7804, 0x9084, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, 0x0005, ++ 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, ++ 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, ++ 0xdbff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19b8, ++ 0x703c, 0x2060, 0x8cff, 0x0904, 0x9766, 0x9386, 0x0002, 0x1128, ++ 0x6814, 0x9084, 0x0002, 0x0904, 0x9766, 0x68af, 0x95f5, 0x6817, ++ 0x0010, 0x2009, 0x00fa, 0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, ++ 0x080c, 0x80c5, 0x080c, 0x1e90, 0x0046, 0x2009, 0x00a5, 0x080c, ++ 0x0e2f, 0x2021, 0x0169, 0x2404, 0x9084, 0x000f, 0x9086, 0x0004, ++ 0x11f8, 0x68af, 0x95f5, 0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, ++ 0x2079, 0x0090, 0x2071, 0x1a36, 0x6814, 0x9084, 0x1984, 0x9085, ++ 0x0012, 0x6816, 0x782b, 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, ++ 0x9386, 0x0002, 0x1128, 0x7884, 0x9005, 0x1110, 0x7887, 0x0001, ++ 0x2001, 0x1952, 0x200c, 0x080c, 0x0e2f, 0x004e, 0x20a9, 0x03e8, ++ 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000, ++ 0x190c, 0x2b24, 0x0090, 0xd08c, 0x0118, 0x6827, 0x0002, 0x0010, ++ 0x1f04, 0x9740, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, 0x6827, 0x4000, 0x6824, ++ 0x83ff, 0x1120, 0x2009, 0x0049, 0x080c, 0x9eac, 0x000e, 0x001e, ++ 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, ++ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x19b8, 0x6a06, ++ 0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, ++ 0x19b8, 0x6a32, 0x012e, 0x00de, 0x0005, 0x080c, 0x9047, 0x7854, ++ 0x7032, 0x7042, 0x7047, 0x1000, 0x00f8, 0x080c, 0x9047, 0x7854, ++ 0x7032, 0x7042, 0x7047, 0x4000, 0x00b8, 0x080c, 0x9047, 0x7854, ++ 0x7032, 0x7042, 0x7047, 0x2000, 0x0078, 0x080c, 0x9047, 0x7854, ++ 0x7032, 0x7042, 0x7047, 0x0400, 0x0038, 0x080c, 0x9047, 0x7854, ++ 0x7032, 0x7042, 0x7047, 0x0200, 0x60c3, 0x0020, 0x0804, 0x9380, ++ 0x00e6, 0x2071, 0x19b8, 0x7020, 0x9005, 0x0110, 0x8001, 0x7022, ++ 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x7614, 0x2660, ++ 0x2678, 0x2039, 0x0001, 0x87ff, 0x0904, 0x9855, 0x8cff, 0x0904, ++ 0x9855, 0x6020, 0x9086, 0x0006, 0x1904, 0x9850, 0x88ff, 0x0138, ++ 0x2800, 0x9c06, 0x1904, 0x9850, 0x2039, 0x0000, 0x0050, 0x6010, ++ 0x9b06, 0x1904, 0x9850, 0x85ff, 0x0120, 0x6054, 0x9106, 0x1904, ++ 0x9850, 0x7024, 0x9c06, 0x15b0, 0x2069, 0x0100, 0x68c0, 0x9005, ++ 0x1160, 0x6824, 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x80b8, ++ 0x080c, 0x98da, 0x7027, 0x0000, 0x0428, 0x080c, 0x80b8, 0x6820, ++ 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, ++ 0x080c, 0x98da, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, ++ 0x080c, 0x2b14, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, ++ 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, ++ 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, ++ 0x0008, 0x2678, 0x89ff, 0x1168, 0x600f, 0x0000, 0x6014, 0x0096, ++ 0x2048, 0x080c, 0xbb15, 0x0110, 0x080c, 0xd4d5, 0x009e, 0x080c, ++ 0x9e62, 0x080c, 0x97b0, 0x88ff, 0x1190, 0x00ce, 0x0804, 0x97cb, ++ 0x2c78, 0x600c, 0x2060, 0x0804, 0x97cb, 0x9006, 0x012e, 0x000e, ++ 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, ++ 0x0000, 0x00ce, 0x98c5, 0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, ++ 0x0096, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x19b8, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0904, 0x98c9, ++ 0x6020, 0x9086, 0x0006, 0x1904, 0x98c4, 0x87ff, 0x0128, 0x2700, ++ 0x9c06, 0x1904, 0x98c4, 0x0040, 0x6010, 0x9b06, 0x15e8, 0x85ff, ++ 0x0118, 0x6054, 0x9106, 0x15c0, 0x703c, 0x9c06, 0x1168, 0x0036, ++ 0x2019, 0x0001, 0x080c, 0x96d8, 0x7033, 0x0000, 0x9006, 0x703e, ++ 0x7042, 0x7046, 0x704a, 0x003e, 0x7038, 0x9c36, 0x1110, 0x660c, ++ 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, ++ 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, ++ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, ++ 0x080c, 0xbb15, 0x0110, 0x080c, 0xd4d5, 0x080c, 0x9e62, 0x87ff, ++ 0x1198, 0x00ce, 0x0804, 0x9875, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x9875, 0x9006, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x009e, ++ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x97bd, ++ 0x0001, 0x0c80, 0x00e6, 0x2071, 0x19b8, 0x2001, 0x1800, 0x2004, ++ 0x9086, 0x0002, 0x1118, 0x7007, 0x0005, 0x0010, 0x7007, 0x0000, ++ 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x2c10, 0x7638, 0x2660, ++ 0x2678, 0x8cff, 0x0518, 0x2200, 0x9c06, 0x11e0, 0x7038, 0x9c36, ++ 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, ++ 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x2c00, ++ 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x9085, ++ 0x0001, 0x0020, 0x2c78, 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, ++ 0x002e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0096, 0x00f6, ++ 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x19b8, 0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, ++ 0x99b6, 0x6010, 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x9206, 0x1904, ++ 0x99b1, 0x7024, 0x9c06, 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, ++ 0x0904, 0x998d, 0x080c, 0x93ac, 0x68c3, 0x0000, 0x080c, 0x98da, ++ 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, ++ 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, 0x9006, 0x080c, 0x2b14, ++ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, ++ 0x700c, 0x9c36, 0x1110, 0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0x080c, 0xbd0c, 0x1158, 0x080c, 0x3003, 0x080c, ++ 0xbd1d, 0x11f0, 0x080c, 0xa7c0, 0x00d8, 0x080c, 0x98da, 0x08c0, ++ 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, 0x0090, 0x6014, 0x2048, ++ 0x080c, 0xbb15, 0x0168, 0x6020, 0x9086, 0x0003, 0x1508, 0xa867, ++ 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x687f, 0x080c, 0xbd00, ++ 0x080c, 0xbf84, 0x080c, 0x9e62, 0x080c, 0x97b0, 0x00ce, 0x0804, ++ 0x9936, 0x2c78, 0x600c, 0x2060, 0x0804, 0x9936, 0x012e, 0x000e, ++ 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x009e, 0x0005, ++ 0x6020, 0x9086, 0x0006, 0x1d20, 0x080c, 0xd4d5, 0x0c08, 0x00d6, ++ 0x080c, 0x8ed9, 0x7003, 0x0200, 0x7007, 0x0014, 0x60c3, 0x0014, ++ 0x20e1, 0x0001, 0x2099, 0x195a, 0x20e9, 0x0000, 0x20a1, 0x0250, ++ 0x20a9, 0x0004, 0x4003, 0x7023, 0x0004, 0x7027, 0x7878, 0x080c, ++ 0x9380, 0x00de, 0x0005, 0x080c, 0x8ed9, 0x700b, 0x0800, 0x7814, ++ 0x9084, 0xff00, 0x700e, 0x7814, 0x9084, 0x00ff, 0x7022, 0x782c, ++ 0x7026, 0x7858, 0x9084, 0x00ff, 0x9085, 0x0200, 0x7002, 0x7858, ++ 0x9084, 0xff00, 0x8007, 0x7006, 0x60c2, 0x0804, 0x9380, 0x00b6, ++ 0x00d6, 0x0016, 0x00d6, 0x2f68, 0x2009, 0x0035, 0x080c, 0xc18a, ++ 0x00de, 0x1904, 0x9a64, 0x080c, 0x8e8e, 0x7003, 0x1300, 0x782c, ++ 0x080c, 0x9b66, 0x2068, 0x6820, 0x9086, 0x0003, 0x0560, 0x7810, ++ 0x2058, 0xbaa0, 0x080c, 0x9db1, 0x11d8, 0x9286, 0x007e, 0x1128, ++ 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0498, 0x9286, 0x007f, 0x1128, ++ 0x700b, 0x00ff, 0x700f, 0xfffd, 0x0458, 0x9284, 0xff80, 0x0180, ++ 0x9286, 0x0080, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffc, 0x0400, ++ 0x92d8, 0x1000, 0x2b5c, 0xb810, 0x700a, 0xb814, 0x700e, 0x00c0, ++ 0x6098, 0x700e, 0x00a8, 0x080c, 0x9db1, 0x1130, 0x7810, 0x2058, ++ 0xb8a0, 0x9082, 0x007e, 0x0250, 0x00d6, 0x2069, 0x181e, 0x2d04, ++ 0x700a, 0x8d68, 0x2d04, 0x700e, 0x00de, 0x0010, 0x6034, 0x700e, ++ 0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, 0x000c, 0x001e, 0x00de, ++ 0x080c, 0x9380, 0x00be, 0x0005, 0x781b, 0x0001, 0x7803, 0x0006, ++ 0x001e, 0x00de, 0x00be, 0x0005, 0x792c, 0x9180, 0x0008, 0x200c, ++ 0x9186, 0x0006, 0x01c0, 0x9186, 0x0003, 0x0904, 0x9ade, 0x9186, ++ 0x0005, 0x0904, 0x9ac7, 0x9186, 0x0004, 0x05d8, 0x9186, 0x0008, ++ 0x0904, 0x9acf, 0x7807, 0x0037, 0x782f, 0x0003, 0x7817, 0x1700, ++ 0x080c, 0x9b43, 0x0005, 0x080c, 0x9b04, 0x00d6, 0x0026, 0x792c, ++ 0x2168, 0x2009, 0x4000, 0x6800, 0x0002, 0x9aa8, 0x9ab3, 0x9aaa, ++ 0x9ab3, 0x9aaf, 0x9aa8, 0x9aa8, 0x9ab3, 0x9ab3, 0x9ab3, 0x9ab3, ++ 0x9aa8, 0x9aa8, 0x9aa8, 0x9aa8, 0x9aa8, 0x9ab3, 0x9aa8, 0x9ab3, ++ 0x080c, 0x0db4, 0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0x900e, ++ 0x0010, 0x2009, 0x2000, 0x682c, 0x7022, 0x6830, 0x7026, 0x0804, ++ 0x9afd, 0x080c, 0x9b04, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, ++ 0x4000, 0x6a00, 0x9286, 0x0002, 0x1108, 0x900e, 0x04b0, 0x04e1, ++ 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x0470, 0x04a1, ++ 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x9286, 0x0005, ++ 0x0118, 0x9286, 0x0002, 0x1108, 0x900e, 0x00f8, 0x0429, 0x00d6, ++ 0x0026, 0x792c, 0x2168, 0x6814, 0x0096, 0x2048, 0xa9ac, 0xa834, ++ 0x9112, 0xa9b0, 0xa838, 0x009e, 0x9103, 0x7022, 0x7226, 0x792c, ++ 0x9180, 0x0000, 0x2004, 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, ++ 0x0118, 0x2009, 0x4000, 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, ++ 0x002e, 0x00de, 0x0804, 0x9380, 0x00b6, 0x0036, 0x0046, 0x0056, ++ 0x0066, 0x080c, 0x8ed9, 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, ++ 0x793c, 0x710e, 0x7810, 0x2058, 0xb8a0, 0x080c, 0x9db1, 0x1118, ++ 0x9092, 0x007e, 0x0268, 0x00d6, 0x2069, 0x181e, 0x2d2c, 0x8d68, ++ 0x2d34, 0x90d8, 0x1000, 0x2b5c, 0xbb10, 0xbc14, 0x00de, 0x0028, ++ 0x901e, 0x6498, 0x2029, 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, ++ 0x2004, 0x9086, 0x0003, 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, ++ 0x0020, 0x7312, 0x7416, 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, ++ 0x003e, 0x00be, 0x0005, 0x080c, 0x8ed9, 0x7003, 0x0100, 0x782c, ++ 0x700a, 0x7814, 0x700e, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9380, ++ 0x080c, 0x8e85, 0x7003, 0x1400, 0x7838, 0x700a, 0x0079, 0x783c, ++ 0x700e, 0x782c, 0x7012, 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, ++ 0x8007, 0x701a, 0x60c3, 0x0010, 0x0804, 0x9380, 0x00e6, 0x2071, ++ 0x0240, 0x0006, 0x00f6, 0x2078, 0x7810, 0x00b6, 0x2058, 0xb8bc, ++ 0xd084, 0x0120, 0x7848, 0x702a, 0x7844, 0x702e, 0x00be, 0x00fe, ++ 0x000e, 0x00ee, 0x0005, 0x080c, 0x8ed0, 0x7003, 0x0100, 0x782c, ++ 0x700a, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9380, 0x0021, ++ 0x60c3, 0x0000, 0x0804, 0x9380, 0x00d6, 0x080c, 0x9c3f, 0xb810, ++ 0x9085, 0x0300, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, ++ 0x700a, 0x687c, 0x700e, 0x7013, 0x0819, 0x080c, 0x936e, 0x721a, ++ 0x2f10, 0x7222, 0x7a08, 0x7226, 0x2071, 0x024c, 0x00de, 0x0005, ++ 0x00a9, 0x7914, 0x712a, 0x60c3, 0x0000, 0x60a7, 0x9575, 0x0026, ++ 0x080c, 0x29ca, 0x0228, 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, ++ 0x002e, 0x080c, 0x93a3, 0x080c, 0x80af, 0x0005, 0x0036, 0x0096, ++ 0x00d6, 0x00e6, 0x7858, 0x2048, 0xaa7c, 0x9296, 0x00c0, 0x9294, ++ 0xfffd, 0xaa7e, 0xaa80, 0x9294, 0x0300, 0xaa82, 0xa96c, 0x9194, ++ 0x00ff, 0xab74, 0x9384, 0x00ff, 0x908d, 0xc200, 0xa96e, 0x9384, ++ 0xff00, 0x9215, 0xaa76, 0xa870, 0xaa78, 0xa87a, 0xaa72, 0x00d6, ++ 0x2069, 0x0200, 0x080c, 0x9c3f, 0x00de, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x000a, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, ++ 0x2098, 0x4003, 0x60a3, 0x0035, 0xaa68, 0x9294, 0x7000, 0x9286, ++ 0x3000, 0x0110, 0x60a3, 0x0037, 0x00ee, 0x00de, 0x009e, 0x003e, ++ 0x0005, 0x900e, 0x7814, 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x01c0, ++ 0x9084, 0x0003, 0x11a8, 0x2001, 0x180c, 0x2004, 0xd0bc, 0x0180, ++ 0x7824, 0xd0cc, 0x1168, 0xd0c4, 0x1158, 0xa8a8, 0x9005, 0x1140, ++ 0x2001, 0x180c, 0x200c, 0xc1d5, 0x2102, 0x2009, 0x1983, 0x210c, ++ 0x009e, 0x918d, 0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, ++ 0x6116, 0x0005, 0x2009, 0x0009, 0x00a0, 0x2009, 0x000a, 0x0088, ++ 0x2009, 0x000b, 0x0070, 0x2009, 0x000c, 0x0058, 0x2009, 0x000d, ++ 0x0040, 0x2009, 0x000e, 0x0028, 0x2009, 0x000f, 0x0010, 0x2009, ++ 0x0008, 0x6912, 0x0005, 0x00d6, 0x9290, 0x0018, 0x8214, 0x20e9, ++ 0x0000, 0x2069, 0x0200, 0x6813, 0x0000, 0x22a8, 0x9284, 0x00e0, ++ 0x0128, 0x20a9, 0x0020, 0x9292, 0x0020, 0x0008, 0x9016, 0x20a1, ++ 0x0240, 0x9006, 0x4004, 0x82ff, 0x0120, 0x6810, 0x8000, 0x6812, ++ 0x0c60, 0x00de, 0x0005, 0x00d6, 0x0096, 0x6014, 0x2048, 0xa878, ++ 0x6056, 0x9006, 0xa836, 0xa83a, 0xa99c, 0xa946, 0xa84a, 0x6023, ++ 0x0003, 0x6007, 0x0040, 0x6003, 0x0003, 0x600b, 0xffff, 0xa817, ++ 0x0001, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa813, 0x1f24, 0x080c, ++ 0x8456, 0x0126, 0x2091, 0x8000, 0x080c, 0x8a4e, 0x012e, 0x009e, ++ 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x00a6, 0x0096, ++ 0x0066, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x760c, 0x2660, ++ 0x2678, 0x8cff, 0x0904, 0x9d11, 0x7024, 0x9c06, 0x1520, 0x2069, ++ 0x0100, 0x68c0, 0x9005, 0x0904, 0x9ce8, 0x080c, 0x93ac, 0x68c3, ++ 0x0000, 0x080c, 0x98da, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, ++ 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2b14, ++ 0x9006, 0x080c, 0x2b14, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, ++ 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110, 0x660c, 0x760e, ++ 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x700a, ++ 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, ++ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xbd0c, 0x1158, ++ 0x080c, 0x3003, 0x080c, 0xbd1d, 0x11f0, 0x080c, 0xa7c0, 0x00d8, ++ 0x080c, 0x98da, 0x08c0, 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, ++ 0x0090, 0x6014, 0x2048, 0x080c, 0xbb15, 0x0168, 0x6020, 0x9086, ++ 0x0003, 0x1520, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, ++ 0x688c, 0x080c, 0xbd00, 0x080c, 0xbf84, 0x080c, 0x9e62, 0x080c, ++ 0x97b0, 0x00ce, 0x0804, 0x9c99, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x9c99, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e, 0x006e, 0x009e, ++ 0x00ae, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, 0x9086, ++ 0x0006, 0x1d08, 0x080c, 0xd4d5, 0x08f0, 0x00d6, 0x0156, 0x080c, ++ 0x8ed9, 0x7a14, 0x82ff, 0x0138, 0x7003, 0x0100, 0x700b, 0x0003, ++ 0x60c3, 0x0008, 0x0490, 0x7003, 0x0200, 0x7007, 0x0000, 0x2069, ++ 0x1800, 0x901e, 0x6800, 0x9086, 0x0004, 0x1110, 0xc38d, 0x0060, ++ 0x080c, 0x6fb2, 0x1110, 0xc3ad, 0x0008, 0xc3a5, 0x6ad8, 0xd29c, ++ 0x1110, 0xd2ac, 0x0108, 0xc39d, 0x730e, 0x2011, 0x1848, 0x63f0, ++ 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, 0x2019, 0x1841, 0x2071, ++ 0x0250, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398, 0x0002, 0x9290, ++ 0x0002, 0x1f04, 0x9d59, 0x60c3, 0x0020, 0x080c, 0x9380, 0x015e, ++ 0x00de, 0x0005, 0x0156, 0x080c, 0x8ed9, 0x7a14, 0x82ff, 0x0168, ++ 0x9286, 0xffff, 0x0118, 0x9282, 0x000e, 0x1238, 0x7003, 0x0100, ++ 0x700b, 0x0003, 0x60c3, 0x0008, 0x0488, 0x7003, 0x0200, 0x7007, ++ 0x001c, 0x700f, 0x0001, 0x2011, 0x198e, 0x2204, 0x8007, 0x701a, ++ 0x8210, 0x2204, 0x8007, 0x701e, 0x0421, 0x1120, 0xb8a0, 0x9082, ++ 0x007f, 0x0248, 0x2001, 0x181e, 0x2004, 0x7022, 0x2001, 0x181f, ++ 0x2004, 0x7026, 0x0030, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, ++ 0x7026, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, ++ 0x0000, 0x20a1, 0x0256, 0x4003, 0x60c3, 0x001c, 0x015e, 0x0804, ++ 0x9380, 0x0006, 0x2001, 0x1836, 0x2004, 0xd0ac, 0x000e, 0x0005, ++ 0x2011, 0x0003, 0x080c, 0x9771, 0x2011, 0x0002, 0x080c, 0x977b, ++ 0x080c, 0x9662, 0x0036, 0x901e, 0x080c, 0x96d8, 0x003e, 0x0005, ++ 0x2071, 0x1883, 0x7000, 0x9005, 0x0140, 0x2001, 0x0976, 0x2071, ++ 0x1800, 0x7072, 0x7076, 0x7067, 0xffe0, 0x2071, 0x1800, 0x7070, ++ 0x7052, 0x7057, 0x1cd0, 0x0005, 0x00e6, 0x0126, 0x2071, 0x1800, ++ 0x2091, 0x8000, 0x7550, 0x9582, 0x0010, 0x0608, 0x7054, 0x2060, ++ 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, 0x7064, 0x9c02, ++ 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003, 0x0008, 0x8529, ++ 0x7552, 0x9ca8, 0x0018, 0x7064, 0x9502, 0x1230, 0x7556, 0x9085, ++ 0x0001, 0x012e, 0x00ee, 0x0005, 0x7057, 0x1cd0, 0x0cc0, 0x9006, ++ 0x0cc0, 0x00e6, 0x2071, 0x1800, 0x7550, 0x9582, 0x0010, 0x0600, ++ 0x7054, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, ++ 0x7064, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003, ++ 0x0008, 0x8529, 0x7552, 0x9ca8, 0x0018, 0x7064, 0x9502, 0x1228, ++ 0x7556, 0x9085, 0x0001, 0x00ee, 0x0005, 0x7057, 0x1cd0, 0x0cc8, ++ 0x9006, 0x0cc8, 0x9c82, 0x1cd0, 0x0a0c, 0x0db4, 0x2001, 0x1819, ++ 0x2004, 0x9c02, 0x1a0c, 0x0db4, 0x9006, 0x6006, 0x600a, 0x600e, ++ 0x6016, 0x601a, 0x6012, 0x6023, 0x0000, 0x6003, 0x0000, 0x601e, ++ 0x6056, 0x605a, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, ++ 0x603e, 0x6042, 0x2061, 0x1800, 0x6050, 0x8000, 0x6052, 0x9086, ++ 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x8973, ++ 0x012e, 0x0cc0, 0x0006, 0x6000, 0x9086, 0x0000, 0x01b0, 0x601c, ++ 0xd084, 0x190c, 0x190d, 0x6017, 0x0000, 0x6023, 0x0007, 0x2001, ++ 0x1957, 0x2004, 0x0006, 0x9082, 0x0051, 0x000e, 0x0208, 0x8004, ++ 0x601a, 0x080c, 0xd787, 0x6043, 0x0000, 0x000e, 0x0005, 0x00e6, ++ 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7550, 0x9582, 0x0001, ++ 0x0608, 0x7054, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, ++ 0x0018, 0x7064, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, ++ 0x6003, 0x0008, 0x8529, 0x7552, 0x9ca8, 0x0018, 0x7064, 0x9502, ++ 0x1230, 0x7556, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x7057, ++ 0x1cd0, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084, 0x000f, 0x0002, ++ 0x9ebf, 0x9ec8, 0x9ee3, 0x9efe, 0xc238, 0xc255, 0xc270, 0x9ebf, ++ 0x9ec8, 0x9ebf, 0x9f1a, 0x9ebf, 0x9ebf, 0x9ebf, 0x9ebf, 0x9186, ++ 0x0013, 0x1128, 0x080c, 0x886e, 0x080c, 0x8973, 0x0005, 0x0005, ++ 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0db4, 0x0013, 0x006e, ++ 0x0005, 0x9ee1, 0xa639, 0xa807, 0x9ee1, 0xa895, 0xa1fd, 0x9ee1, ++ 0x9ee1, 0xa5bb, 0xae37, 0x9ee1, 0x9ee1, 0x9ee1, 0x9ee1, 0x9ee1, ++ 0x9ee1, 0x080c, 0x0db4, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, ++ 0x0db4, 0x0013, 0x006e, 0x0005, 0x9efc, 0xb50b, 0x9efc, 0x9efc, ++ 0x9efc, 0x9efc, 0x9efc, 0x9efc, 0xb4b0, 0xb68d, 0x9efc, 0xb54c, ++ 0xb5cb, 0xb54c, 0xb5cb, 0x9efc, 0x080c, 0x0db4, 0x6000, 0x9082, ++ 0x0016, 0x1a0c, 0x0db4, 0x6000, 0x0002, 0x9f18, 0xae7e, 0xaf63, ++ 0xb093, 0xb23e, 0x9f18, 0x9f18, 0x9f18, 0xae52, 0xb43c, 0xb43f, ++ 0x9f18, 0x9f18, 0x9f18, 0x9f18, 0xb46e, 0x9f18, 0x9f18, 0x9f18, ++ 0x080c, 0x0db4, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0db4, ++ 0x0013, 0x006e, 0x0005, 0x9f33, 0x9f33, 0x9f76, 0xa015, 0xa0aa, ++ 0x9f33, 0x9f33, 0x9f33, 0x9f35, 0x9f33, 0x9f33, 0x9f33, 0x9f33, ++ 0x9f33, 0x9f33, 0x9f33, 0x080c, 0x0db4, 0x9186, 0x004c, 0x0588, ++ 0x9186, 0x0003, 0x190c, 0x0db4, 0x0096, 0x601c, 0xc0ed, 0x601e, ++ 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa87c, 0x9084, 0xa000, ++ 0xc0b5, 0xa87e, 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0x9006, 0xa836, ++ 0xa83a, 0xa884, 0x9092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, ++ 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, 0x2c10, 0x080c, 0x1a5c, ++ 0x080c, 0x8456, 0x0126, 0x2091, 0x8000, 0x080c, 0x8a4e, 0x012e, ++ 0x0005, 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x080c, ++ 0xa0cc, 0x080c, 0xc22a, 0x6003, 0x0007, 0x0005, 0x00d6, 0x0096, ++ 0x00f6, 0x2079, 0x1800, 0x7a8c, 0x6014, 0x2048, 0xa87c, 0xd0ec, ++ 0x1110, 0x9290, 0x0018, 0xac78, 0xc4fc, 0x0046, 0xa8e0, 0x9005, ++ 0x1140, 0xa8dc, 0x921a, 0x0140, 0x0220, 0xa87b, 0x0007, 0x2010, ++ 0x0028, 0xa87b, 0x0015, 0x0010, 0xa87b, 0x0000, 0x8214, 0xa883, ++ 0x0000, 0xaa02, 0x0006, 0x0016, 0x0026, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x2400, 0x9005, 0x1108, 0x009a, 0x2100, 0x9086, 0x0015, ++ 0x1118, 0x2001, 0x0001, 0x0038, 0x2100, 0x9086, 0x0016, 0x0118, ++ 0x2001, 0x0001, 0x002a, 0x94a4, 0x0007, 0x8423, 0x9405, 0x0002, ++ 0x9fdd, 0x9fdd, 0x9fd8, 0x9fdb, 0x9fdd, 0x9fd5, 0x9fc8, 0x9fc8, ++ 0x9fc8, 0x9fc8, 0x9fc8, 0x9fc8, 0x9fc8, 0x9fc8, 0x9fc8, 0x9fc8, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e, 0x000e, 0x004e, ++ 0x00fe, 0x009e, 0x00de, 0x080c, 0x0db4, 0x080c, 0xaa76, 0x0028, ++ 0x080c, 0xab99, 0x0010, 0x080c, 0xac88, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x002e, 0x001e, 0x2c00, 0xa896, 0x000e, 0x080c, 0xa18a, ++ 0x0530, 0xa804, 0xa80e, 0x00a6, 0x2050, 0xb100, 0x00ae, 0x8006, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, ++ 0xaacc, 0xabd0, 0xacd4, 0xadd8, 0x2031, 0x0000, 0x2041, 0x1249, ++ 0x080c, 0xa334, 0x0160, 0x000e, 0x9005, 0x0120, 0x00fe, 0x009e, ++ 0x00de, 0x0005, 0x00fe, 0x009e, 0x00de, 0x0804, 0x9e32, 0x2001, ++ 0x002c, 0x900e, 0x080c, 0xa1f0, 0x0c70, 0x91b6, 0x0015, 0x0170, ++ 0x91b6, 0x0016, 0x0158, 0x91b2, 0x0047, 0x0a0c, 0x0db4, 0x91b2, ++ 0x0050, 0x1a0c, 0x0db4, 0x9182, 0x0047, 0x00ca, 0x2001, 0x0109, ++ 0x2004, 0xd08c, 0x0198, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, ++ 0x0026, 0x080c, 0x83aa, 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, ++ 0x6000, 0x9086, 0x0002, 0x1110, 0x0804, 0x9f76, 0x0005, 0xa048, ++ 0xa048, 0xa04a, 0xa080, 0xa048, 0xa048, 0xa048, 0xa048, 0xa093, ++ 0x080c, 0x0db4, 0x00d6, 0x0016, 0x0096, 0x080c, 0x8923, 0x080c, ++ 0x8a4e, 0x6003, 0x0004, 0x6114, 0x2148, 0xa87c, 0xd0fc, 0x01c0, ++ 0xa878, 0xc0fc, 0x9005, 0x1158, 0xa894, 0x9005, 0x0140, 0x2001, ++ 0x0000, 0x900e, 0x080c, 0xa1f0, 0x080c, 0x9e32, 0x00a8, 0x6003, ++ 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae, 0xa8b2, 0x0c78, ++ 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae, 0xa8a8, 0xa8b2, ++ 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e, 0x00de, 0x0005, ++ 0x080c, 0x8923, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xbb17, ++ 0x0120, 0xa87b, 0x0006, 0x080c, 0x688c, 0x009e, 0x00de, 0x080c, ++ 0x9e32, 0x0804, 0x8a4e, 0x080c, 0x8923, 0x080c, 0x2fda, 0x080c, ++ 0xc227, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xbb17, 0x0120, ++ 0xa87b, 0x0029, 0x080c, 0x688c, 0x009e, 0x00de, 0x080c, 0x9e32, ++ 0x0804, 0x8a4e, 0x9182, 0x0047, 0x0002, 0xa0ba, 0xa0bc, 0xa0ba, ++ 0xa0ba, 0xa0ba, 0xa0ba, 0xa0ba, 0xa0ba, 0xa0ba, 0xa0ba, 0xa0ba, ++ 0xa0ba, 0xa0bc, 0x080c, 0x0db4, 0x00d6, 0x0096, 0x080c, 0x150f, ++ 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000, 0x080c, 0x688c, ++ 0x009e, 0x00de, 0x0804, 0x9e32, 0x0026, 0x0036, 0x0056, 0x0066, ++ 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x0feb, 0x000e, 0x090c, ++ 0x0db4, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, 0x21a0, 0x900e, ++ 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800, 0x798c, 0x9188, ++ 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950, 0x00a6, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001, 0x9182, 0x0034, ++ 0x1228, 0x2011, 0x001f, 0x080c, 0xb712, 0x04c0, 0x2130, 0x2009, ++ 0x0034, 0x2011, 0x001f, 0x080c, 0xb712, 0x96b2, 0x0034, 0xb004, ++ 0x904d, 0x0110, 0x080c, 0x0f9d, 0x080c, 0x0feb, 0x01d0, 0x8528, ++ 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, ++ 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xb712, 0x00b8, 0x96b2, ++ 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x080c, 0xb712, ++ 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, ++ 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048, 0x2001, 0x0205, ++ 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050, 0xb566, 0x2a48, ++ 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x688c, 0x000e, 0x2048, ++ 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e, 0x005e, 0x003e, ++ 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006, 0x080c, 0x0feb, ++ 0x000e, 0x090c, 0x0db4, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, ++ 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66, 0xa87a, 0x2079, ++ 0x1800, 0x798c, 0x810c, 0x9188, 0x000c, 0x9182, 0x001a, 0x0210, ++ 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76, 0x2e98, 0xa85c, ++ 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, ++ 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x688c, 0x009e, 0x00fe, ++ 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096, 0x0016, 0x2001, ++ 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e, 0x2079, 0x0200, ++ 0x2e98, 0xa87c, 0xd0ec, 0x0118, 0x9e80, 0x000c, 0x2098, 0x2021, ++ 0x003e, 0x901e, 0x9282, 0x0020, 0x0218, 0x2011, 0x0020, 0x2018, ++ 0x9486, 0x003e, 0x1170, 0x0096, 0x080c, 0x0feb, 0x2900, 0x009e, ++ 0x05c0, 0xa806, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, ++ 0x20a0, 0x3300, 0x908e, 0x0260, 0x0140, 0x2009, 0x0280, 0x9102, ++ 0x920a, 0x0218, 0x2010, 0x2100, 0x9318, 0x2200, 0x9402, 0x1228, ++ 0x2400, 0x9202, 0x2410, 0x9318, 0x9006, 0x2020, 0x22a8, 0xa800, ++ 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003, 0x83ff, 0x0180, 0x3300, ++ 0x9086, 0x0280, 0x1130, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, ++ 0x2e98, 0x2310, 0x84ff, 0x0904, 0xa19f, 0x0804, 0xa1a1, 0x9085, ++ 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe, 0x00de, 0x001e, 0x0005, ++ 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, 0x080c, ++ 0x687f, 0x009e, 0x003e, 0x00de, 0x0005, 0x91b6, 0x0015, 0x1118, ++ 0x080c, 0x9e32, 0x0030, 0x91b6, 0x0016, 0x190c, 0x0db4, 0x080c, ++ 0x9e32, 0x0005, 0x20a9, 0x000e, 0x20e1, 0x0000, 0x2e98, 0x6014, ++ 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x20a0, 0x009e, 0x4003, ++ 0x0136, 0x9080, 0x001b, 0x2011, 0x0006, 0x20a9, 0x0001, 0x3418, ++ 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318, 0x2398, 0x8211, 0x1db8, ++ 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318, 0x8318, 0x2398, 0x4003, ++ 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8, 0x0096, 0x080c, 0xbb17, ++ 0x0130, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0x009e, ++ 0x0804, 0x9e32, 0x0096, 0x00d6, 0x0036, 0x7330, 0x9386, 0x0200, ++ 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8bf, 0x0000, 0x00be, 0x6014, ++ 0x9005, 0x0130, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xab32, ++ 0x080c, 0x9e32, 0x003e, 0x00de, 0x009e, 0x0005, 0x0011, 0x1d48, ++ 0x0cc8, 0x0006, 0x0016, 0x080c, 0xc212, 0x0188, 0x6014, 0x9005, ++ 0x1170, 0x600b, 0x0003, 0x601b, 0x0000, 0x6043, 0x0000, 0x2009, ++ 0x0022, 0x080c, 0xa611, 0x9006, 0x001e, 0x000e, 0x0005, 0x9085, ++ 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9, 0x0014, 0x9e80, 0x000c, ++ 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0001, ++ 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003, 0x20a9, 0x000a, 0xa804, ++ 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, ++ 0x2001, 0x0205, 0x2003, 0x0002, 0x2099, 0x0260, 0x20a9, 0x0020, ++ 0x4003, 0x2003, 0x0000, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, ++ 0x0103, 0x080c, 0x9e32, 0x001e, 0x009e, 0x0005, 0x0096, 0x0016, ++ 0x900e, 0x7030, 0x9086, 0x0100, 0x0140, 0x7038, 0x9084, 0x00ff, ++ 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004, 0x9080, 0x0004, 0x9108, ++ 0x810b, 0x2011, 0x0002, 0x2019, 0x000c, 0x6014, 0x2048, 0x080c, ++ 0xb712, 0x080c, 0xbb17, 0x0140, 0x6014, 0x2048, 0xa807, 0x0000, ++ 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0x9e32, 0x001e, 0x009e, ++ 0x0005, 0x0016, 0x0096, 0x7030, 0x9086, 0x0100, 0x1118, 0x2009, ++ 0x0004, 0x0010, 0x7034, 0x800c, 0x810b, 0x2011, 0x000c, 0x2019, ++ 0x000c, 0x6014, 0x2048, 0xa804, 0x0096, 0x9005, 0x0108, 0x2048, ++ 0x080c, 0xb712, 0x009e, 0x080c, 0xbb17, 0x0148, 0xa804, 0x9005, ++ 0x1158, 0xa807, 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, ++ 0x9e32, 0x009e, 0x001e, 0x0005, 0x0086, 0x2040, 0xa030, 0x8007, ++ 0x9086, 0x0100, 0x1118, 0x080c, 0xa7c0, 0x00e0, 0xa034, 0x8007, ++ 0x800c, 0x8806, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x000c, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, ++ 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x122f, ++ 0x0019, 0x0d08, 0x008e, 0x0898, 0x0096, 0x0006, 0x080c, 0x0feb, ++ 0x000e, 0x01b0, 0xa8ab, 0x0dcb, 0xa876, 0x000e, 0xa8a2, 0x0006, ++ 0xae6a, 0x2800, 0xa89e, 0xa97a, 0xaf72, 0xaa8e, 0xab92, 0xac96, ++ 0xad9a, 0x0086, 0x2940, 0x080c, 0x10d5, 0x008e, 0x9085, 0x0001, ++ 0x009e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, ++ 0x6210, 0x00b6, 0x2258, 0xba10, 0x00be, 0x9206, 0x1520, 0x700c, ++ 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be, 0x9206, 0x11e0, 0x6043, ++ 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035, 0x080c, 0xc18a, 0x001e, ++ 0x1158, 0x622c, 0x2268, 0x2071, 0x026c, 0x6b20, 0x9386, 0x0003, ++ 0x0130, 0x9386, 0x0006, 0x0128, 0x080c, 0x9e32, 0x0020, 0x0039, ++ 0x0010, 0x080c, 0xa446, 0x002e, 0x00de, 0x00ee, 0x0005, 0x0096, ++ 0x6814, 0x2048, 0x9186, 0x0015, 0x0904, 0xa42e, 0x918e, 0x0016, ++ 0x1904, 0xa444, 0x700c, 0x908c, 0xff00, 0x9186, 0x1700, 0x0120, ++ 0x9186, 0x0300, 0x1904, 0xa408, 0x89ff, 0x1138, 0x6800, 0x9086, ++ 0x000f, 0x0904, 0xa3eb, 0x0804, 0xa442, 0x6808, 0x9086, 0xffff, ++ 0x1904, 0xa430, 0xa87c, 0x9084, 0x0060, 0x9086, 0x0020, 0x1128, ++ 0xa83c, 0xa940, 0x9105, 0x1904, 0xa430, 0x6824, 0xd0b4, 0x1904, ++ 0xa430, 0x080c, 0xbd00, 0x685c, 0xa882, 0xa87c, 0xc0dc, 0xc0f4, ++ 0xc0d4, 0xa87e, 0x0026, 0x900e, 0x6a18, 0x2001, 0x000a, 0x080c, ++ 0x8270, 0xa884, 0x920a, 0x0208, 0x8011, 0xaa86, 0x82ff, 0x002e, ++ 0x1138, 0x00c6, 0x2d60, 0x080c, 0xb83c, 0x00ce, 0x0804, 0xa442, ++ 0x00c6, 0xa868, 0xd0fc, 0x1118, 0x080c, 0x5d4d, 0x0010, 0x080c, ++ 0x60f4, 0x00ce, 0x1904, 0xa430, 0x00c6, 0x2d60, 0x080c, 0x9e32, ++ 0x00ce, 0x0804, 0xa442, 0x00c6, 0x080c, 0x9e7f, 0x0198, 0x6017, ++ 0x0000, 0x6810, 0x6012, 0x080c, 0xbf8c, 0x6023, 0x0003, 0x6904, ++ 0x00c6, 0x2d60, 0x080c, 0x9e32, 0x00ce, 0x080c, 0x9eac, 0x00ce, ++ 0x0804, 0xa442, 0x2001, 0x1959, 0x2004, 0x6842, 0x00ce, 0x04d0, ++ 0x7008, 0x9086, 0x000b, 0x11c8, 0x6010, 0x00b6, 0x2058, 0xb900, ++ 0xc1bc, 0xb902, 0x00be, 0x00c6, 0x2d60, 0xa87b, 0x0003, 0x080c, ++ 0xc1cc, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x00ce, 0x00e8, 0x700c, 0x9086, 0x2a00, ++ 0x1138, 0x2001, 0x1959, 0x2004, 0x6842, 0x00a0, 0x0479, 0x00a0, ++ 0x89ff, 0x090c, 0x0db4, 0x00c6, 0x00d6, 0x2d60, 0xa867, 0x0103, ++ 0xa87b, 0x0003, 0x080c, 0x66a7, 0x080c, 0xbd00, 0x080c, 0x9e62, ++ 0x00de, 0x00ce, 0x080c, 0x9e32, 0x009e, 0x0005, 0x9186, 0x0015, ++ 0x1128, 0x2001, 0x1959, 0x2004, 0x6842, 0x0068, 0x918e, 0x0016, ++ 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, 0xd787, 0x080c, 0x8204, ++ 0x080c, 0x9e32, 0x00ce, 0x080c, 0x9e32, 0x0005, 0x0026, 0x0036, ++ 0x0046, 0x7228, 0xacb0, 0xabac, 0xd2f4, 0x0130, 0x2001, 0x1959, ++ 0x2004, 0x6842, 0x0804, 0xa4c0, 0x00c6, 0x2d60, 0x080c, 0xb73d, ++ 0x00ce, 0x6804, 0x9086, 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, ++ 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x83f1, 0x080c, 0x8973, ++ 0x00ce, 0x04f0, 0x6800, 0x9086, 0x000f, 0x01a8, 0x89ff, 0x090c, ++ 0x0db4, 0x6800, 0x9086, 0x0004, 0x1190, 0xa87c, 0xd0ac, 0x0178, ++ 0xa843, 0x0fff, 0xa83f, 0x0fff, 0xa880, 0xc0fc, 0xa882, 0x2001, ++ 0x0001, 0x6832, 0x0400, 0x2001, 0x0007, 0x6832, 0x00e0, 0xa87c, ++ 0xd0b4, 0x1150, 0xd0ac, 0x0db8, 0x6824, 0xd0f4, 0x1d48, 0xa838, ++ 0xa934, 0x9105, 0x0d80, 0x0c20, 0xd2ec, 0x1d68, 0x7024, 0x9306, ++ 0x1118, 0x7020, 0x9406, 0x0d38, 0x7020, 0x683e, 0x7024, 0x683a, ++ 0x2001, 0x0005, 0x6832, 0x080c, 0xbe83, 0x080c, 0x8973, 0x0010, ++ 0x080c, 0x9e32, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, ++ 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, ++ 0x00be, 0x9206, 0x1904, 0xa52b, 0x700c, 0x6210, 0x00b6, 0x2258, ++ 0xba14, 0x00be, 0x9206, 0x1904, 0xa52b, 0x6038, 0x2068, 0x6824, ++ 0xc0dc, 0x6826, 0x6a20, 0x9286, 0x0007, 0x0904, 0xa52b, 0x9286, ++ 0x0002, 0x0904, 0xa52b, 0x9286, 0x0000, 0x05e8, 0x6808, 0x633c, ++ 0x9306, 0x15c8, 0x2071, 0x026c, 0x9186, 0x0015, 0x0570, 0x918e, ++ 0x0016, 0x1100, 0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, ++ 0x01c0, 0x9186, 0x004c, 0x01a8, 0x9186, 0x004d, 0x0190, 0x9186, ++ 0x004e, 0x0178, 0x9186, 0x0052, 0x0160, 0x6014, 0x0096, 0x2048, ++ 0x080c, 0xbb17, 0x090c, 0x0db4, 0xa87b, 0x0003, 0x009e, 0x080c, ++ 0xc1cc, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x00ce, 0x0030, 0x6038, 0x2070, 0x2001, ++ 0x1959, 0x2004, 0x7042, 0x080c, 0x9e32, 0x002e, 0x00de, 0x00ee, ++ 0x0005, 0x00b6, 0x0096, 0x00f6, 0x6014, 0x2048, 0x6010, 0x2058, ++ 0x91b6, 0x0015, 0x0130, 0xba08, 0xbb0c, 0xbc00, 0xc48c, 0xbc02, ++ 0x0460, 0x0096, 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0010, ++ 0x2019, 0x000a, 0x20a9, 0x0004, 0x080c, 0xae0d, 0x002e, 0x003e, ++ 0x015e, 0x009e, 0x1904, 0xa59a, 0x0096, 0x0156, 0x0036, 0x0026, ++ 0x2b48, 0x9e90, 0x0014, 0x2019, 0x0006, 0x20a9, 0x0004, 0x080c, ++ 0xae0d, 0x002e, 0x003e, 0x015e, 0x009e, 0x15a0, 0x7238, 0xba0a, ++ 0x733c, 0xbb0e, 0xbc00, 0xc48d, 0xbc02, 0xa804, 0x9005, 0x1128, ++ 0x00fe, 0x009e, 0x00be, 0x0804, 0xa235, 0x0096, 0x2048, 0xaa12, ++ 0xab16, 0xac0a, 0x009e, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, ++ 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, ++ 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x122f, 0x080c, 0xa334, ++ 0x0130, 0x00fe, 0x009e, 0x080c, 0x9e32, 0x00be, 0x0005, 0x080c, ++ 0xa7c0, 0x0cb8, 0x2b78, 0x00f6, 0x080c, 0x2fda, 0x080c, 0xc227, ++ 0x00fe, 0x00c6, 0x080c, 0x9ddc, 0x2f00, 0x6012, 0x6017, 0x0000, ++ 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, ++ 0x080c, 0x618f, 0x080c, 0x61bb, 0x080c, 0x8439, 0x080c, 0x8973, ++ 0x00ce, 0x0804, 0xa56d, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0db4, ++ 0x91b2, 0x0040, 0x1a04, 0xa623, 0x0002, 0xa611, 0xa611, 0xa607, ++ 0xa611, 0xa611, 0xa611, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, ++ 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, ++ 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, ++ 0xa605, 0xa605, 0xa605, 0xa605, 0xa611, 0xa605, 0xa611, 0xa611, ++ 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa607, 0xa605, 0xa605, ++ 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa611, ++ 0xa611, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, 0xa605, ++ 0xa605, 0xa605, 0xa611, 0xa605, 0xa605, 0x080c, 0x0db4, 0x0066, ++ 0x00b6, 0x6610, 0x2658, 0xb8bc, 0xc08c, 0xb8be, 0x00be, 0x006e, ++ 0x0000, 0x6003, 0x0001, 0x6106, 0x9186, 0x0032, 0x0118, 0x080c, ++ 0x8439, 0x0010, 0x080c, 0x83f1, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x8973, 0x012e, 0x0005, 0x2600, 0x0002, 0xa637, 0xa637, 0xa637, ++ 0xa611, 0xa611, 0xa637, 0xa637, 0xa637, 0xa637, 0xa611, 0xa637, ++ 0xa611, 0xa637, 0xa611, 0xa637, 0xa637, 0xa637, 0xa637, 0x080c, ++ 0x0db4, 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0db4, 0x91b6, 0x0013, ++ 0x0904, 0xa6fb, 0x91b6, 0x0027, 0x1904, 0xa6b6, 0x080c, 0x886e, ++ 0x6004, 0x080c, 0xbd0c, 0x01b0, 0x080c, 0xbd1d, 0x01a8, 0x908e, ++ 0x0021, 0x0904, 0xa6b3, 0x908e, 0x0022, 0x1130, 0x080c, 0xa261, ++ 0x0904, 0xa6af, 0x0804, 0xa6b0, 0x908e, 0x003d, 0x0904, 0xa6b3, ++ 0x0804, 0xa6a9, 0x080c, 0x3003, 0x2001, 0x0007, 0x080c, 0x618f, ++ 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, 0x080c, 0xa7c0, 0x9186, ++ 0x007e, 0x1148, 0x2001, 0x1836, 0x2014, 0xc285, 0x080c, 0x6fb2, ++ 0x1108, 0xc2ad, 0x2202, 0x0036, 0x0026, 0x2019, 0x0028, 0x2110, ++ 0x080c, 0xd7e2, 0x002e, 0x003e, 0x0016, 0x0026, 0x0036, 0x2110, ++ 0x2019, 0x0028, 0x080c, 0x8571, 0x0076, 0x903e, 0x080c, 0x8469, ++ 0x6010, 0x00b6, 0x905d, 0x0100, 0x00be, 0x2c08, 0x080c, 0xd29b, ++ 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0xc227, 0x0016, 0x080c, ++ 0xbf84, 0x080c, 0x9e32, 0x001e, 0x080c, 0x30d5, 0x080c, 0x8973, ++ 0x0030, 0x080c, 0xbf84, 0x080c, 0x9e32, 0x080c, 0x8973, 0x0005, ++ 0x080c, 0xa7c0, 0x0cb0, 0x080c, 0xa7fc, 0x0c98, 0x9186, 0x0014, ++ 0x1db0, 0x080c, 0x886e, 0x6004, 0x908e, 0x0022, 0x1118, 0x080c, ++ 0xa261, 0x0d68, 0x080c, 0x2fda, 0x080c, 0xc227, 0x080c, 0xbd0c, ++ 0x1190, 0x080c, 0x3003, 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, ++ 0x080c, 0xa7c0, 0x9186, 0x007e, 0x1128, 0x2001, 0x1836, 0x200c, ++ 0xc185, 0x2102, 0x0870, 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, ++ 0x0840, 0x6004, 0x908e, 0x0032, 0x1160, 0x00e6, 0x00f6, 0x2071, ++ 0x1894, 0x2079, 0x0000, 0x080c, 0x3369, 0x00fe, 0x00ee, 0x0804, ++ 0xa6a9, 0x6004, 0x908e, 0x0021, 0x0d48, 0x908e, 0x0022, 0x090c, ++ 0xa7c0, 0x0804, 0xa6a9, 0x90b2, 0x0040, 0x1a04, 0xa7a9, 0x2008, ++ 0x0002, 0xa743, 0xa744, 0xa747, 0xa74a, 0xa74d, 0xa750, 0xa741, ++ 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, ++ 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, ++ 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, 0xa753, ++ 0xa75e, 0xa741, 0xa760, 0xa75e, 0xa741, 0xa741, 0xa741, 0xa741, ++ 0xa741, 0xa75e, 0xa75e, 0xa741, 0xa741, 0xa741, 0xa741, 0xa741, ++ 0xa741, 0xa741, 0xa741, 0xa790, 0xa75e, 0xa741, 0xa75a, 0xa741, ++ 0xa741, 0xa741, 0xa75b, 0xa741, 0xa741, 0xa741, 0xa75e, 0xa787, ++ 0xa741, 0x080c, 0x0db4, 0x00d0, 0x2001, 0x000b, 0x0410, 0x2001, ++ 0x0003, 0x00f8, 0x2001, 0x0005, 0x00e0, 0x2001, 0x0001, 0x00c8, ++ 0x2001, 0x0009, 0x00b0, 0x080c, 0x886e, 0x6003, 0x0005, 0x080c, ++ 0x8973, 0x0070, 0x0018, 0x0010, 0x080c, 0x618f, 0x0804, 0xa7a1, ++ 0x080c, 0x886e, 0x080c, 0xc22a, 0x6003, 0x0004, 0x080c, 0x8973, ++ 0x0005, 0x080c, 0x618f, 0x080c, 0x886e, 0x6003, 0x0002, 0x0036, ++ 0x2019, 0x185e, 0x2304, 0x9084, 0xff00, 0x1120, 0x2001, 0x1957, ++ 0x201c, 0x0040, 0x8007, 0x909a, 0x0004, 0x0ec0, 0x8003, 0x801b, ++ 0x831b, 0x9318, 0x631a, 0x003e, 0x080c, 0x8973, 0x0c08, 0x080c, ++ 0x886e, 0x080c, 0xbf84, 0x080c, 0x9e32, 0x080c, 0x8973, 0x08c0, ++ 0x00e6, 0x00f6, 0x2071, 0x1894, 0x2079, 0x0000, 0x080c, 0x3369, ++ 0x00fe, 0x00ee, 0x080c, 0x886e, 0x080c, 0x9e32, 0x080c, 0x8973, ++ 0x0838, 0x080c, 0x886e, 0x6003, 0x0002, 0x080c, 0xc22a, 0x0804, ++ 0x8973, 0x2600, 0x2008, 0x0002, 0xa7be, 0xa7be, 0xa7be, 0xa7a1, ++ 0xa7a1, 0xa7be, 0xa7be, 0xa7be, 0xa7be, 0xa7a1, 0xa7be, 0xa7a1, ++ 0xa7be, 0xa7a1, 0xa7be, 0xa7be, 0xa7be, 0xa7be, 0x080c, 0x0db4, ++ 0x00e6, 0x0096, 0x0026, 0x0016, 0x080c, 0xbb17, 0x0568, 0x6014, ++ 0x2048, 0xa864, 0x9086, 0x0139, 0x11a8, 0xa894, 0x9086, 0x0056, ++ 0x1148, 0x080c, 0x512f, 0x0130, 0x2001, 0x0000, 0x900e, 0x2011, ++ 0x4000, 0x0028, 0x2001, 0x0030, 0x900e, 0x2011, 0x4005, 0x080c, ++ 0xc0f1, 0x0090, 0xa868, 0xd0fc, 0x0178, 0xa807, 0x0000, 0x0016, ++ 0x6004, 0x908e, 0x0021, 0x0168, 0x908e, 0x003d, 0x0150, 0x001e, ++ 0xa867, 0x0103, 0xa833, 0x0100, 0x001e, 0x002e, 0x009e, 0x00ee, ++ 0x0005, 0x001e, 0x0009, 0x0cc0, 0x0096, 0x6014, 0x2048, 0xa800, ++ 0x2048, 0xa867, 0x0103, 0xa823, 0x8001, 0x009e, 0x0005, 0x00b6, ++ 0x6610, 0x2658, 0xb804, 0x9084, 0x00ff, 0x90b2, 0x000c, 0x1a0c, ++ 0x0db4, 0x6604, 0x96b6, 0x004d, 0x1120, 0x080c, 0xc010, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x0043, 0x1120, 0x080c, 0xc059, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x004b, 0x1120, 0x080c, 0xc085, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x0033, 0x1120, 0x080c, 0xbfa6, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x0028, 0x1120, 0x080c, 0xbd56, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x0029, 0x1120, 0x080c, 0xbd97, 0x0804, ++ 0xa884, 0x6604, 0x96b6, 0x001f, 0x1118, 0x080c, 0xa20a, 0x04e0, ++ 0x6604, 0x96b6, 0x0000, 0x1118, 0x080c, 0xa531, 0x04a8, 0x6604, ++ 0x96b6, 0x0022, 0x1118, 0x080c, 0xa242, 0x0470, 0x6604, 0x96b6, ++ 0x0035, 0x1118, 0x080c, 0xa352, 0x0438, 0x6604, 0x96b6, 0x0039, ++ 0x1118, 0x080c, 0xa4c6, 0x0400, 0x6604, 0x96b6, 0x003d, 0x1118, ++ 0x080c, 0xa27a, 0x00c8, 0x6604, 0x96b6, 0x0044, 0x1118, 0x080c, ++ 0xa2b6, 0x0090, 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c, 0xa2e1, ++ 0x0058, 0x91b6, 0x0015, 0x1110, 0x0063, 0x0030, 0x91b6, 0x0016, ++ 0x1128, 0x00be, 0x0804, 0xab42, 0x00be, 0x0005, 0x080c, 0x9ec7, ++ 0x0cd8, 0xa8a1, 0xa8a4, 0xa8a1, 0xa8e8, 0xa8a1, 0xaa76, 0xab4f, ++ 0xa8a1, 0xa8a1, 0xab1c, 0xa8a1, 0xab30, 0x0096, 0x080c, 0x150f, ++ 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, 0x009e, 0x0804, ++ 0x9e32, 0xa001, 0xa001, 0x0005, 0x00e6, 0x2071, 0x1800, 0x708c, ++ 0x9086, 0x0074, 0x1540, 0x080c, 0xd26c, 0x11b0, 0x6010, 0x00b6, ++ 0x2058, 0x7030, 0xd08c, 0x0128, 0xb800, 0xd0bc, 0x0110, 0xc0c5, ++ 0xb802, 0x00e9, 0x00be, 0x2001, 0x0006, 0x080c, 0x618f, 0x080c, ++ 0x3003, 0x080c, 0x9e32, 0x0088, 0x2001, 0x000a, 0x080c, 0x618f, ++ 0x080c, 0x3003, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x8439, ++ 0x080c, 0x8973, 0x0010, 0x080c, 0xaa61, 0x00ee, 0x0005, 0x00d6, ++ 0xb800, 0xd084, 0x0158, 0x9006, 0x080c, 0x617b, 0x2069, 0x1853, ++ 0x6804, 0x0020, 0x2001, 0x0006, 0x080c, 0x61bb, 0x00de, 0x0005, ++ 0x00b6, 0x0096, 0x00d6, 0x2011, 0x1823, 0x2204, 0x9086, 0x0074, ++ 0x1904, 0xaa3a, 0x6010, 0x2058, 0xbaa0, 0x9286, 0x007e, 0x1120, ++ 0x080c, 0xac93, 0x0804, 0xa99f, 0x00d6, 0x080c, 0x6fb2, 0x0198, ++ 0x0026, 0x2011, 0x0010, 0x080c, 0x6586, 0x002e, 0x05c8, 0x080c, ++ 0x539a, 0x1540, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, ++ 0xa833, 0xdead, 0x00f8, 0x0026, 0x2011, 0x8008, 0x080c, 0x6586, ++ 0x002e, 0x0530, 0x6014, 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x0039, 0x1140, 0x2001, 0x0030, 0x900e, 0x2011, 0x4009, 0x080c, ++ 0xc0f1, 0x0040, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, ++ 0xa833, 0xdead, 0x6010, 0x2058, 0xb9a0, 0x0016, 0x080c, 0x3003, ++ 0x080c, 0x9e32, 0x001e, 0x080c, 0x30d5, 0x00de, 0x0804, 0xaa3b, ++ 0x00de, 0x080c, 0xac88, 0x6010, 0x2058, 0xbaa0, 0x9286, 0x0080, ++ 0x1510, 0x6014, 0x9005, 0x01a8, 0x2048, 0xa864, 0x9084, 0x00ff, ++ 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, ++ 0x080c, 0xc0f1, 0x0030, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, ++ 0x0200, 0x2001, 0x0006, 0x080c, 0x618f, 0x080c, 0x3003, 0x080c, ++ 0x9e32, 0x0804, 0xaa3b, 0x080c, 0xaa49, 0x6014, 0x9005, 0x0190, ++ 0x2048, 0xa868, 0xd0f4, 0x01e8, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x0039, 0x1d08, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, ++ 0xc0f1, 0x08f8, 0x080c, 0xaa3f, 0x0160, 0x9006, 0x080c, 0x617b, ++ 0x2001, 0x0004, 0x080c, 0x61bb, 0x2001, 0x0007, 0x080c, 0x618f, ++ 0x08a0, 0x2001, 0x0004, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, ++ 0x0003, 0x080c, 0x8439, 0x080c, 0x8973, 0x0804, 0xaa3b, 0xb85c, ++ 0xd0e4, 0x01d0, 0x080c, 0xbf26, 0x080c, 0x6fb2, 0x0118, 0xd0dc, ++ 0x1904, 0xa961, 0x2011, 0x1836, 0x2204, 0xc0ad, 0x2012, 0x2001, ++ 0x0002, 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x26d7, ++ 0x78e2, 0x00fe, 0x0804, 0xa961, 0x080c, 0xbf63, 0x2011, 0x1836, ++ 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xd3c5, 0x000e, 0x1904, ++ 0xa961, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, 0x618f, 0x9006, ++ 0x080c, 0x617b, 0x00c6, 0x2001, 0x180f, 0x2004, 0xd09c, 0x0520, ++ 0x00f6, 0x2079, 0x0100, 0x00e6, 0x2071, 0x1800, 0x700c, 0x9084, ++ 0x00ff, 0x78e6, 0x707a, 0x7010, 0x78ea, 0x707e, 0x908c, 0x00ff, ++ 0x00ee, 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x26ac, 0x00f6, ++ 0x2100, 0x900e, 0x080c, 0x2663, 0x795a, 0x00fe, 0x9186, 0x0081, ++ 0x01d8, 0x2009, 0x0081, 0x00c8, 0x2009, 0x00ef, 0x00f6, 0x2079, ++ 0x0100, 0x79ea, 0x7932, 0x7936, 0x780c, 0xc0b5, 0x780e, 0x00fe, ++ 0x080c, 0x26ac, 0x00f6, 0x2079, 0x1800, 0x797e, 0x2100, 0x900e, ++ 0x080c, 0x2663, 0x795a, 0x00fe, 0x8108, 0x080c, 0x61de, 0x2b00, ++ 0x00ce, 0x1904, 0xa961, 0x6012, 0x2009, 0x180f, 0x210c, 0xd19c, ++ 0x0150, 0x2009, 0x027c, 0x210c, 0x918c, 0x00ff, 0xb912, 0x2009, ++ 0x027d, 0x210c, 0xb916, 0x2001, 0x0002, 0x080c, 0x618f, 0x6023, ++ 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x8439, 0x080c, ++ 0x8973, 0x0008, 0x0431, 0x00de, 0x009e, 0x00be, 0x0005, 0x2001, ++ 0x1810, 0x2004, 0xd0a4, 0x0120, 0x2001, 0x1854, 0x2004, 0xd0ac, ++ 0x0005, 0x00e6, 0x080c, 0xd83b, 0x0190, 0x2071, 0x0260, 0x7108, ++ 0x720c, 0x918c, 0x00ff, 0x1118, 0x9284, 0xff00, 0x0140, 0x6010, ++ 0x2058, 0xb8a0, 0x9084, 0xff80, 0x1110, 0xb912, 0xba16, 0x00ee, ++ 0x0005, 0x2030, 0x2001, 0x0007, 0x080c, 0x618f, 0x080c, 0x539a, ++ 0x1120, 0x2001, 0x0007, 0x080c, 0x61bb, 0x080c, 0x3003, 0x6020, ++ 0x9086, 0x000a, 0x1108, 0x0005, 0x0804, 0x9e32, 0x00b6, 0x00e6, ++ 0x0026, 0x0016, 0x2071, 0x1800, 0x708c, 0x9086, 0x0014, 0x1904, ++ 0xab13, 0x00d6, 0x080c, 0x6fb2, 0x0198, 0x0026, 0x2011, 0x0010, ++ 0x080c, 0x6586, 0x002e, 0x05c8, 0x080c, 0x539a, 0x1540, 0x6014, ++ 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0xdead, 0x00f8, ++ 0x0026, 0x2011, 0x8008, 0x080c, 0x6586, 0x002e, 0x0530, 0x6014, ++ 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, ++ 0x0030, 0x900e, 0x2011, 0x4009, 0x080c, 0xc0f1, 0x0040, 0x6014, ++ 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0xdead, 0x6010, ++ 0x2058, 0xb9a0, 0x0016, 0x080c, 0x3003, 0x080c, 0x9e32, 0x001e, ++ 0x080c, 0x30d5, 0x00de, 0x0804, 0xab17, 0x00de, 0x080c, 0x539a, ++ 0x1170, 0x6014, 0x9005, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058, ++ 0xbba0, 0x2021, 0x0006, 0x080c, 0x4a76, 0x004e, 0x003e, 0x00d6, ++ 0x6010, 0x2058, 0x080c, 0x62d9, 0x080c, 0xa8d7, 0x00de, 0x080c, ++ 0xad59, 0x1588, 0x6010, 0x2058, 0xb890, 0x9005, 0x0560, 0x2001, ++ 0x0006, 0x080c, 0x618f, 0x0096, 0x6014, 0x904d, 0x01d0, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, ++ 0x2011, 0x4000, 0x080c, 0xc0f1, 0x0060, 0xa864, 0x9084, 0x00ff, ++ 0x9086, 0x0029, 0x0130, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, ++ 0x0200, 0x009e, 0x080c, 0x3003, 0x6020, 0x9086, 0x000a, 0x0138, ++ 0x080c, 0x9e32, 0x0020, 0x080c, 0xa7c0, 0x080c, 0xaa61, 0x001e, ++ 0x002e, 0x00ee, 0x00be, 0x0005, 0x2011, 0x1823, 0x2204, 0x9086, ++ 0x0014, 0x1160, 0x2001, 0x0002, 0x080c, 0x618f, 0x6003, 0x0001, ++ 0x6007, 0x0001, 0x080c, 0x8439, 0x0804, 0x8973, 0x0804, 0xaa61, ++ 0x2030, 0x2011, 0x1823, 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, ++ 0x000b, 0x1120, 0x2001, 0x0007, 0x080c, 0x618f, 0x0804, 0x9e32, ++ 0x0804, 0xaa61, 0x0002, 0xa8a1, 0xab5a, 0xa8a1, 0xab99, 0xa8a1, ++ 0xac44, 0xab4f, 0xa8a1, 0xa8a1, 0xac57, 0xa8a1, 0xac67, 0x6604, ++ 0x9686, 0x0003, 0x0904, 0xaa76, 0x96b6, 0x001e, 0x1110, 0x080c, ++ 0x9e32, 0x0005, 0x00b6, 0x00d6, 0x00c6, 0x080c, 0xac77, 0x11a0, ++ 0x9006, 0x080c, 0x617b, 0x080c, 0x2fda, 0x080c, 0xc227, 0x2001, ++ 0x0002, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x8439, 0x080c, 0x8973, 0x0408, 0x2009, 0x026e, 0x2104, 0x9086, ++ 0x0009, 0x1160, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, ++ 0x0170, 0x8001, 0xb842, 0x601b, 0x000a, 0x0078, 0x2009, 0x026f, ++ 0x2104, 0x9084, 0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, 0x080c, ++ 0x2fda, 0x080c, 0xc227, 0x080c, 0xaa61, 0x00ce, 0x00de, 0x00be, ++ 0x0005, 0x0096, 0x00b6, 0x0026, 0x9016, 0x080c, 0xac85, 0x00d6, ++ 0x2069, 0x194d, 0x2d04, 0x9005, 0x0168, 0x6010, 0x2058, 0xb8a0, ++ 0x9086, 0x007e, 0x1138, 0x2069, 0x181f, 0x2d04, 0x8000, 0x206a, ++ 0x00de, 0x0010, 0x00de, 0x0088, 0x9006, 0x080c, 0x617b, 0x2001, ++ 0x0002, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x8439, 0x080c, 0x8973, 0x0804, 0xac14, 0x080c, 0xbb17, 0x01b0, ++ 0x6014, 0x2048, 0xa864, 0x2010, 0x9086, 0x0139, 0x1138, 0x6007, ++ 0x0016, 0x2001, 0x0002, 0x080c, 0xc14b, 0x00b0, 0x6014, 0x2048, ++ 0xa864, 0xd0fc, 0x0118, 0x2001, 0x0001, 0x0ca8, 0x2001, 0x180e, ++ 0x2004, 0xd0dc, 0x0148, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, ++ 0x9005, 0x1110, 0x9006, 0x0c38, 0x080c, 0xa7c0, 0x2009, 0x026e, ++ 0x2134, 0x96b4, 0x00ff, 0x9686, 0x0005, 0x0510, 0x9686, 0x000b, ++ 0x01c8, 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, 0x1118, 0x9686, ++ 0x0009, 0x01b0, 0x9086, 0x1900, 0x1168, 0x9686, 0x0009, 0x0180, ++ 0x2001, 0x0004, 0x080c, 0x618f, 0x2001, 0x0028, 0x601a, 0x6007, ++ 0x0052, 0x0010, 0x080c, 0xaa61, 0x002e, 0x00be, 0x009e, 0x0005, ++ 0x9286, 0x0139, 0x0160, 0x6014, 0x2048, 0x080c, 0xbb17, 0x0140, ++ 0xa864, 0x9086, 0x0139, 0x0118, 0xa868, 0xd0fc, 0x0108, 0x0c50, ++ 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0138, 0x8001, ++ 0xb842, 0x601b, 0x000a, 0x6007, 0x0016, 0x08f0, 0xb8a0, 0x9086, ++ 0x007e, 0x1138, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5c64, 0x00ee, ++ 0x0010, 0x080c, 0x2fda, 0x0870, 0x080c, 0xac85, 0x1160, 0x2001, ++ 0x0004, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, ++ 0x8439, 0x0804, 0x8973, 0x080c, 0xa7c0, 0x0804, 0xaa61, 0x0469, ++ 0x1160, 0x2001, 0x0008, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, ++ 0x0005, 0x080c, 0x8439, 0x0804, 0x8973, 0x0804, 0xaa61, 0x00e9, ++ 0x1160, 0x2001, 0x000a, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x8439, 0x0804, 0x8973, 0x0804, 0xaa61, 0x2009, ++ 0x026e, 0x2104, 0x9086, 0x0003, 0x1138, 0x2009, 0x026f, 0x2104, ++ 0x9084, 0xff00, 0x9086, 0x2a00, 0x0005, 0x9085, 0x0001, 0x0005, ++ 0x00b6, 0x00c6, 0x0016, 0x6110, 0x2158, 0x080c, 0x624d, 0x001e, ++ 0x00ce, 0x00be, 0x0005, 0x00b6, 0x00f6, 0x00e6, 0x00d6, 0x0036, ++ 0x0016, 0x6010, 0x2058, 0x2009, 0x1836, 0x2104, 0x9085, 0x0003, ++ 0x200a, 0x080c, 0xad2b, 0x0560, 0x2009, 0x1836, 0x2104, 0xc0cd, ++ 0x200a, 0x080c, 0x655e, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, ++ 0x080c, 0xd52a, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, ++ 0x002a, 0x2009, 0x0001, 0x080c, 0x2fa5, 0x00e6, 0x2071, 0x1800, ++ 0x080c, 0x2dbb, 0x00ee, 0x00c6, 0x0156, 0x20a9, 0x0781, 0x2009, ++ 0x007f, 0x080c, 0x30d5, 0x8108, 0x1f04, 0xacc9, 0x015e, 0x00ce, ++ 0x080c, 0xac88, 0x2071, 0x0260, 0x2079, 0x0200, 0x7817, 0x0001, ++ 0x2001, 0x1836, 0x200c, 0xc1c5, 0x7018, 0xd0fc, 0x0110, 0xd0dc, ++ 0x0118, 0x7038, 0xd0dc, 0x1108, 0xc1c4, 0x7817, 0x0000, 0x2001, ++ 0x1836, 0x2102, 0x2079, 0x0100, 0x2e04, 0x9084, 0x00ff, 0x2069, ++ 0x181e, 0x206a, 0x78e6, 0x0006, 0x8e70, 0x2e04, 0x2069, 0x181f, ++ 0x206a, 0x78ea, 0x7832, 0x7836, 0x2010, 0x9084, 0xff00, 0x001e, ++ 0x9105, 0x2009, 0x182b, 0x200a, 0x2200, 0x9084, 0x00ff, 0x2008, ++ 0x080c, 0x26ac, 0x080c, 0x6fb2, 0x0170, 0x2071, 0x0260, 0x2069, ++ 0x1953, 0x7048, 0x206a, 0x704c, 0x6806, 0x7050, 0x680a, 0x7054, ++ 0x680e, 0x080c, 0xbf26, 0x0040, 0x2001, 0x0006, 0x080c, 0x618f, ++ 0x080c, 0x3003, 0x080c, 0x9e32, 0x001e, 0x003e, 0x00de, 0x00ee, ++ 0x00fe, 0x00be, 0x0005, 0x0096, 0x0026, 0x0036, 0x00e6, 0x0156, ++ 0x2019, 0x182b, 0x231c, 0x83ff, 0x01f0, 0x2071, 0x0260, 0x7200, ++ 0x9294, 0x00ff, 0x7004, 0x9084, 0xff00, 0x9205, 0x9306, 0x1198, ++ 0x2011, 0x0276, 0x20a9, 0x0004, 0x2b48, 0x2019, 0x000a, 0x080c, ++ 0xae0d, 0x1148, 0x2011, 0x027a, 0x20a9, 0x0004, 0x2019, 0x0006, ++ 0x080c, 0xae0d, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, 0x009e, ++ 0x0005, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9086, 0x0014, 0x11a8, ++ 0x7038, 0x9086, 0x0800, 0x1188, 0x703c, 0xd0ec, 0x0160, 0x9084, ++ 0x0f00, 0x9086, 0x0100, 0x1138, 0x7054, 0xd0a4, 0x1110, 0xd0ac, ++ 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, ++ 0x0096, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2029, 0x19c1, 0x252c, 0x2021, 0x19c7, 0x2424, ++ 0x2061, 0x1cd0, 0x2071, 0x1800, 0x7250, 0x7070, 0x9202, 0x1a04, ++ 0xade5, 0x080c, 0xd55b, 0x0904, 0xadde, 0x6720, 0x9786, 0x0007, ++ 0x0904, 0xadde, 0x2500, 0x9c06, 0x0904, 0xadde, 0x2400, 0x9c06, ++ 0x05e8, 0x3e08, 0x9186, 0x0002, 0x1148, 0x6010, 0x9005, 0x0130, ++ 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1580, 0x00c6, 0x6000, ++ 0x9086, 0x0004, 0x1110, 0x080c, 0x190d, 0x9786, 0x000a, 0x0148, ++ 0x080c, 0xbd1d, 0x1130, 0x00ce, 0x080c, 0xa7c0, 0x080c, 0x9e62, ++ 0x00e8, 0x6014, 0x2048, 0x080c, 0xbb17, 0x01a8, 0x9786, 0x0003, ++ 0x1530, 0xa867, 0x0103, 0xa87c, 0xd0cc, 0x0130, 0x0096, 0xa878, ++ 0x2048, 0x080c, 0x0f9d, 0x009e, 0xab7a, 0xa877, 0x0000, 0x080c, ++ 0x687f, 0x080c, 0xbd00, 0x080c, 0x9e62, 0x00ce, 0x9ce0, 0x0018, ++ 0x7064, 0x9c02, 0x1210, 0x0804, 0xad8c, 0x012e, 0x000e, 0x002e, ++ 0x004e, 0x005e, 0x007e, 0x00ce, 0x009e, 0x00ee, 0x0005, 0x9786, ++ 0x0006, 0x1118, 0x080c, 0xd4d5, 0x0c30, 0x9786, 0x000a, 0x0998, ++ 0x0880, 0x220c, 0x2304, 0x9106, 0x1130, 0x8210, 0x8318, 0x1f04, ++ 0xadf9, 0x9006, 0x0005, 0x2304, 0x9102, 0x0218, 0x2001, 0x0001, ++ 0x0008, 0x9006, 0x918d, 0x0001, 0x0005, 0x0136, 0x01c6, 0x0016, ++ 0x8906, 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, ++ 0x9300, 0x2098, 0x3518, 0x20a9, 0x0001, 0x220c, 0x4002, 0x910e, ++ 0x1140, 0x8210, 0x8319, 0x1dc8, 0x9006, 0x001e, 0x01ce, 0x013e, ++ 0x0005, 0x220c, 0x9102, 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, ++ 0x0000, 0x918d, 0x0001, 0x001e, 0x01ce, 0x013e, 0x0005, 0x6004, ++ 0x908a, 0x0053, 0x1a0c, 0x0db4, 0x080c, 0xbd0c, 0x0120, 0x080c, ++ 0xbd1d, 0x0168, 0x0028, 0x080c, 0x3003, 0x080c, 0xbd1d, 0x0138, ++ 0x080c, 0x886e, 0x080c, 0x9e32, 0x080c, 0x8973, 0x0005, 0x080c, ++ 0xa7c0, 0x0cb0, 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, 0x0208, ++ 0x000a, 0x0005, 0xae6e, 0xae6e, 0xae6e, 0xae6e, 0xae6e, 0xae6e, ++ 0xae6e, 0xae6e, 0xae6e, 0xae6e, 0xae6e, 0xae70, 0xae70, 0xae70, ++ 0xae70, 0xae6e, 0xae6e, 0xae6e, 0xae70, 0xae6e, 0x080c, 0x0db4, ++ 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x83f1, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x8973, 0x012e, 0x0005, 0x9186, 0x0013, ++ 0x1128, 0x6004, 0x9082, 0x0040, 0x0804, 0xaf25, 0x9186, 0x0027, ++ 0x1520, 0x080c, 0x886e, 0x080c, 0x2fda, 0x080c, 0xc227, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0xbb17, 0x0198, 0x080c, 0xbd1d, 0x1118, ++ 0x080c, 0xa7c0, 0x0068, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, ++ 0x0000, 0xa97c, 0xc1c5, 0xa97e, 0x080c, 0x688c, 0x080c, 0xbd00, ++ 0x009e, 0x080c, 0x9e32, 0x0804, 0x8973, 0x9186, 0x0014, 0x1120, ++ 0x6004, 0x9082, 0x0040, 0x04a0, 0x9186, 0x0046, 0x0150, 0x9186, ++ 0x0045, 0x0138, 0x9186, 0x0053, 0x0120, 0x9186, 0x0048, 0x190c, ++ 0x0db4, 0x2001, 0x0109, 0x2004, 0xd084, 0x0508, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x0036, 0x00f6, 0x00e6, 0x00c6, ++ 0x2079, 0x19b8, 0x2071, 0x1800, 0x2061, 0x0100, 0x080c, 0x82dd, ++ 0x00ce, 0x00ee, 0x00fe, 0x003e, 0x002e, 0x001e, 0x000e, 0x012e, ++ 0xa001, 0x6000, 0x9086, 0x0002, 0x1110, 0x0804, 0xaf63, 0x0005, ++ 0x0002, 0xaeff, 0xaefd, 0xaefd, 0xaefd, 0xaefd, 0xaefd, 0xaefd, ++ 0xaefd, 0xaefd, 0xaefd, 0xaefd, 0xaf1a, 0xaf1a, 0xaf1a, 0xaf1a, ++ 0xaefd, 0xaf1a, 0xaefd, 0xaf1a, 0xaefd, 0x080c, 0x0db4, 0x080c, ++ 0x886e, 0x0096, 0x6114, 0x2148, 0x080c, 0xbb17, 0x0168, 0xa867, ++ 0x0103, 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, ++ 0x080c, 0x688c, 0x080c, 0xbd00, 0x009e, 0x080c, 0x9e32, 0x080c, ++ 0x8973, 0x0005, 0x080c, 0x886e, 0x080c, 0xbd1d, 0x090c, 0xa7c0, ++ 0x080c, 0x9e32, 0x080c, 0x8973, 0x0005, 0x0002, 0xaf3c, 0xaf3a, ++ 0xaf3a, 0xaf3a, 0xaf3a, 0xaf3a, 0xaf3a, 0xaf3a, 0xaf3a, 0xaf3a, ++ 0xaf3a, 0xaf53, 0xaf53, 0xaf53, 0xaf53, 0xaf3a, 0xaf5d, 0xaf3a, ++ 0xaf53, 0xaf3a, 0x080c, 0x0db4, 0x0096, 0x080c, 0x886e, 0x6014, ++ 0x2048, 0x2001, 0x1959, 0x2004, 0x6042, 0xa97c, 0xd1ac, 0x0140, ++ 0x6003, 0x0004, 0xa87c, 0x9085, 0x0400, 0xa87e, 0x009e, 0x0005, ++ 0x6003, 0x0002, 0x0cb8, 0x080c, 0x886e, 0x080c, 0xc22a, 0x080c, ++ 0xc22f, 0x6003, 0x000f, 0x0804, 0x8973, 0x080c, 0x886e, 0x080c, ++ 0x9e32, 0x0804, 0x8973, 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, ++ 0x0208, 0x000a, 0x0005, 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, ++ 0xaf81, 0xb05e, 0xaf7f, 0xb092, 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, ++ 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, 0xaf7f, 0xb092, 0x080c, ++ 0x0db4, 0x00b6, 0x0096, 0x6114, 0x2148, 0x7644, 0x96b4, 0x0fff, ++ 0x86ff, 0x1528, 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xb04d, ++ 0xa87b, 0x0000, 0xa867, 0x0103, 0xae76, 0xa87c, 0xd0ac, 0x0128, ++ 0xa834, 0xa938, 0x9115, 0x190c, 0xb227, 0x080c, 0x66a7, 0x6210, ++ 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0x7044, 0xd0e4, ++ 0x1904, 0xb031, 0x080c, 0x9e32, 0x009e, 0x00be, 0x0005, 0x968c, ++ 0x0c00, 0x0150, 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xb035, ++ 0x7348, 0xab92, 0x734c, 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, ++ 0x0508, 0x9186, 0x0028, 0x1118, 0xa87b, 0x001c, 0x00e8, 0xd6dc, ++ 0x01a0, 0xa87b, 0x0015, 0xa87c, 0xd0ac, 0x0170, 0xa938, 0xaa34, ++ 0x2100, 0x9205, 0x0148, 0x7048, 0x9106, 0x1118, 0x704c, 0x9206, ++ 0x0118, 0xa992, 0xaa8e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0xa87b, ++ 0x0007, 0x0010, 0xa87b, 0x0000, 0xa867, 0x0103, 0xae76, 0x901e, ++ 0xd6c4, 0x01d8, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, ++ 0xc6c4, 0x0804, 0xaf88, 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, ++ 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, ++ 0x2011, 0x0025, 0x080c, 0xb712, 0x003e, 0xd6cc, 0x0904, 0xaf9d, ++ 0x7154, 0xa98a, 0x81ff, 0x0904, 0xaf9d, 0x9192, 0x0021, 0x1278, ++ 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, 0x080c, 0xb712, 0x2011, ++ 0x0205, 0x2013, 0x0000, 0x080c, 0xc1b7, 0x0804, 0xaf9d, 0xa868, ++ 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c50, 0x00a6, 0x2950, ++ 0x080c, 0xb6b1, 0x00ae, 0x080c, 0xc1b7, 0x080c, 0xb702, 0x0804, ++ 0xaf9f, 0x080c, 0xbe10, 0x0804, 0xafac, 0xa87c, 0xd0ac, 0x0904, ++ 0xafb8, 0xa880, 0xd0bc, 0x1904, 0xafb8, 0x7348, 0xa838, 0x9306, ++ 0x11c8, 0x734c, 0xa834, 0x931e, 0x0904, 0xafb8, 0xd6d4, 0x0190, ++ 0xab38, 0x9305, 0x0904, 0xafb8, 0x0068, 0xa87c, 0xd0ac, 0x0904, ++ 0xaf90, 0xa838, 0xa934, 0x9105, 0x0904, 0xaf90, 0xa880, 0xd0bc, ++ 0x1904, 0xaf90, 0x080c, 0xbe4a, 0x0804, 0xafac, 0x0096, 0x00f6, ++ 0x6003, 0x0003, 0x6007, 0x0043, 0x2079, 0x026c, 0x7c04, 0x7b00, ++ 0x7e0c, 0x7d08, 0x6014, 0x2048, 0xa87c, 0xd0ac, 0x0140, 0x6003, ++ 0x0002, 0x00fe, 0x009e, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, ++ 0xa9ac, 0x910a, 0x2300, 0xaab0, 0x9213, 0x2600, 0x9102, 0x2500, ++ 0x9203, 0x0e90, 0xac36, 0xab3a, 0xae46, 0xad4a, 0x00fe, 0x6043, ++ 0x0000, 0x2c10, 0x080c, 0x1a5c, 0x080c, 0x8456, 0x080c, 0x8a4e, ++ 0x009e, 0x0005, 0x0005, 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, ++ 0x0208, 0x000a, 0x0005, 0xb0af, 0xb0af, 0xb0af, 0xb0af, 0xb0af, ++ 0xb0b1, 0xb147, 0xb0af, 0xb0af, 0xb15e, 0xb1ea, 0xb0af, 0xb0af, ++ 0xb0af, 0xb0af, 0xb1ff, 0xb0af, 0xb0af, 0xb0af, 0xb0af, 0x080c, ++ 0x0db4, 0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114, ++ 0x2150, 0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e, ++ 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, ++ 0x00be, 0x86ff, 0x0904, 0xb142, 0x9694, 0xff00, 0x9284, 0x0c00, ++ 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904, ++ 0xb142, 0x080c, 0x0feb, 0x090c, 0x0db4, 0x2900, 0xb07a, 0xb77c, ++ 0xc7cd, 0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a, 0xb06c, 0xa86e, ++ 0xb070, 0xa872, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, ++ 0x734c, 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, ++ 0x0028, 0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, ++ 0x0015, 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, ++ 0x0000, 0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, ++ 0x0190, 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, ++ 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, ++ 0x080c, 0xb712, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, ++ 0x01c8, 0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, ++ 0x0029, 0x080c, 0xb712, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, ++ 0xb068, 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, ++ 0x080c, 0xb6b1, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, 0x00f6, ++ 0x00a6, 0x6003, 0x0003, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, ++ 0x7d08, 0x6014, 0x2050, 0xb436, 0xb33a, 0xb646, 0xb54a, 0x00ae, ++ 0x00fe, 0x2c10, 0x080c, 0x1a5c, 0x0804, 0x9379, 0x6003, 0x0002, ++ 0x6004, 0x9086, 0x0040, 0x11c8, 0x0096, 0x6014, 0x2048, 0xa87c, ++ 0xd0ac, 0x0160, 0x601c, 0xd084, 0x1130, 0x00f6, 0x2c00, 0x2078, ++ 0x080c, 0x1648, 0x00fe, 0x6003, 0x0004, 0x0010, 0x6003, 0x0002, ++ 0x009e, 0x080c, 0x886e, 0x080c, 0x8973, 0x0096, 0x2001, 0x1959, ++ 0x2004, 0x6042, 0x080c, 0x8923, 0x080c, 0x8a4e, 0x6114, 0x2148, ++ 0xa97c, 0xd1e4, 0x0904, 0xb1e5, 0xd1cc, 0x05a8, 0xa978, 0xa868, ++ 0xd0fc, 0x0538, 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0xa860, ++ 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, 0x810e, 0x810e, 0x810f, ++ 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0019, 0x2098, ++ 0x0156, 0x20a9, 0x0020, 0x4003, 0x015e, 0x000e, 0xa882, 0x000e, ++ 0xa87e, 0x001e, 0xa874, 0x0006, 0x2148, 0x080c, 0x0f9d, 0x001e, ++ 0x0440, 0x0016, 0x080c, 0x0f9d, 0x009e, 0xa974, 0x0016, 0x080c, ++ 0xb702, 0x001e, 0x00f0, 0xa867, 0x0103, 0xa974, 0x9184, 0x00ff, ++ 0x90b6, 0x0002, 0x0180, 0x9086, 0x0028, 0x1118, 0xa87b, 0x001c, ++ 0x0060, 0xd1dc, 0x0118, 0xa87b, 0x0015, 0x0038, 0xd1d4, 0x0118, ++ 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0x0016, 0x080c, 0x66a7, ++ 0x001e, 0xd1e4, 0x1120, 0x080c, 0x9e32, 0x009e, 0x0005, 0x080c, ++ 0xbe10, 0x0cd8, 0x6004, 0x9086, 0x0040, 0x1120, 0x080c, 0x886e, ++ 0x080c, 0x8973, 0x2019, 0x0001, 0x080c, 0x96d8, 0x6003, 0x0002, ++ 0x080c, 0xc22f, 0x080c, 0x8923, 0x080c, 0x8a4e, 0x0005, 0x6004, ++ 0x9086, 0x0040, 0x1120, 0x080c, 0x886e, 0x080c, 0x8973, 0x2019, ++ 0x0001, 0x080c, 0x96d8, 0x080c, 0x8923, 0x080c, 0x2fda, 0x080c, ++ 0xc227, 0x0096, 0x6114, 0x2148, 0x080c, 0xbb17, 0x0150, 0xa867, ++ 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000, 0x080c, 0x688c, 0x080c, ++ 0xbd00, 0x009e, 0x080c, 0x9e32, 0x080c, 0x8a4e, 0x0005, 0xa87b, ++ 0x0015, 0xd1fc, 0x0180, 0xa87b, 0x0007, 0x8002, 0x8000, 0x810a, ++ 0x9189, 0x0000, 0x0006, 0x0016, 0x2009, 0x1a4a, 0x2104, 0x8000, ++ 0x200a, 0x001e, 0x000e, 0xa992, 0xa88e, 0x0005, 0x9182, 0x0054, ++ 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, 0x0005, 0xb25a, 0xb25a, ++ 0xb25a, 0xb25a, 0xb25a, 0xb25c, 0xb25a, 0xb25a, 0xb302, 0xb25a, ++ 0xb25a, 0xb25a, 0xb25a, 0xb25a, 0xb25a, 0xb25a, 0xb25a, 0xb25a, ++ 0xb25a, 0xb433, 0x080c, 0x0db4, 0x0076, 0x00a6, 0x00e6, 0x0096, ++ 0x2071, 0x0260, 0x6114, 0x2150, 0x7644, 0xb676, 0x96b4, 0x0fff, ++ 0xb77c, 0xc7e5, 0xb77e, 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, ++ 0x0110, 0x8211, 0xba3e, 0x00be, 0x86ff, 0x0904, 0xb2fb, 0x9694, ++ 0xff00, 0x9284, 0x0c00, 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, ++ 0x9284, 0x0300, 0x0904, 0xb2fb, 0x9686, 0x0100, 0x1130, 0x7064, ++ 0x9005, 0x1118, 0xc6c4, 0xb676, 0x0c38, 0x080c, 0x0feb, 0x090c, ++ 0x0db4, 0x2900, 0xb07a, 0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, ++ 0x0103, 0xb068, 0xa86a, 0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, ++ 0x9084, 0xf000, 0x9635, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, ++ 0xab92, 0x734c, 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, ++ 0x9186, 0x0028, 0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, ++ 0xa87b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, ++ 0xa87b, 0x0000, 0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, ++ 0xd6c4, 0x0190, 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, ++ 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, ++ 0x0025, 0x080c, 0xb712, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, ++ 0x81ff, 0x01c8, 0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, ++ 0x2011, 0x0029, 0x080c, 0xb712, 0x2011, 0x0205, 0x2013, 0x0000, ++ 0x0050, 0xb068, 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, ++ 0x2950, 0x080c, 0xb6b1, 0x080c, 0x18eb, 0x009e, 0x00ee, 0x00ae, ++ 0x007e, 0x0005, 0x2001, 0x1959, 0x2004, 0x6042, 0x0096, 0x6114, ++ 0x2148, 0xa83c, 0xa940, 0x9105, 0x1118, 0xa87c, 0xc0dc, 0xa87e, ++ 0x6003, 0x0002, 0xa97c, 0xd1e4, 0x0904, 0xb42e, 0x6043, 0x0000, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1500, 0xd1cc, ++ 0x0904, 0xb3fd, 0xa978, 0xa868, 0xd0fc, 0x0904, 0xb3be, 0x0016, ++ 0xa87c, 0x0006, 0xa880, 0x0006, 0x00a6, 0x2150, 0xb174, 0x9184, ++ 0x00ff, 0x90b6, 0x0002, 0x0904, 0xb38c, 0x9086, 0x0028, 0x1904, ++ 0xb378, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x0804, 0xb394, 0x6024, ++ 0xd0f4, 0x11d0, 0xa838, 0xaa34, 0x9205, 0x09c8, 0xa838, 0xaa90, ++ 0x9206, 0x1120, 0xa88c, 0xaa34, 0x9206, 0x0988, 0x6024, 0xd0d4, ++ 0x1148, 0xa9ac, 0xa834, 0x9102, 0x603a, 0xa9b0, 0xa838, 0x9103, ++ 0x603e, 0x6024, 0xc0f5, 0x6026, 0x6010, 0x00b6, 0x2058, 0xb83c, ++ 0x8000, 0xb83e, 0x00be, 0x9006, 0xa876, 0xa892, 0xa88e, 0xa87c, ++ 0xc0e4, 0xa87e, 0xd0cc, 0x0140, 0xc0cc, 0xa87e, 0x0096, 0xa878, ++ 0x2048, 0x080c, 0x0f9d, 0x009e, 0x080c, 0xbe4a, 0x0804, 0xb42e, ++ 0xd1dc, 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xc0da, ++ 0x0118, 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, ++ 0x0007, 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, ++ 0xa938, 0x9115, 0x190c, 0xb227, 0xa87c, 0xb07e, 0xa890, 0xb092, ++ 0xa88c, 0xb08e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, ++ 0x20a9, 0x0020, 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e0, ++ 0x9084, 0xffc0, 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, 0x000e, ++ 0xa882, 0x000e, 0xa87e, 0x080c, 0xc1b7, 0x001e, 0xa874, 0x0006, ++ 0x2148, 0x080c, 0x0f9d, 0x001e, 0x0804, 0xb42a, 0x0016, 0x00a6, ++ 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, 0x9086, ++ 0x0028, 0x1128, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, 0xd1dc, ++ 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xc0da, 0x0118, ++ 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, ++ 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xb227, 0xa890, 0xb092, 0xa88c, 0xb08e, 0xa87c, ++ 0xb07e, 0x00ae, 0x080c, 0x0f9d, 0x009e, 0x080c, 0xc1b7, 0xa974, ++ 0x0016, 0x080c, 0xb702, 0x001e, 0x0468, 0xa867, 0x0103, 0xa974, ++ 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, 0x1118, ++ 0xa87b, 0x001c, 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, 0x080c, ++ 0xc0da, 0x0118, 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, 0x0118, ++ 0xa87b, 0x0007, 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, 0x0128, ++ 0xa834, 0xa938, 0x9115, 0x190c, 0xb227, 0xa974, 0x0016, 0x080c, ++ 0x66a7, 0x001e, 0xd1e4, 0x1120, 0x080c, 0x9e32, 0x009e, 0x0005, ++ 0x080c, 0xbe10, 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, 0xd1e4, ++ 0x190c, 0x18f9, 0x009e, 0x0005, 0x080c, 0x886e, 0x0010, 0x080c, ++ 0x8923, 0x080c, 0xbb17, 0x01f0, 0x0096, 0x6114, 0x2148, 0x080c, ++ 0xbd1d, 0x1118, 0x080c, 0xa7c0, 0x00a0, 0xa867, 0x0103, 0x2009, ++ 0x180c, 0x210c, 0xd18c, 0x11b8, 0xd184, 0x1190, 0x6108, 0xa97a, ++ 0x918e, 0x0029, 0x1110, 0x080c, 0xd7d3, 0xa877, 0x0000, 0x080c, ++ 0x688c, 0x009e, 0x080c, 0x9e32, 0x080c, 0x8973, 0x0804, 0x8a4e, ++ 0xa87b, 0x0004, 0x0c90, 0xa87b, 0x0004, 0x0c78, 0x9182, 0x0054, ++ 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, 0x0005, 0xb48a, 0xb48a, ++ 0xb48a, 0xb48a, 0xb48a, 0xb48c, 0xb48a, 0xb48a, 0xb48a, 0xb48a, ++ 0xb48a, 0xb48a, 0xb48a, 0xb48a, 0xb48a, 0xb48a, 0xb48a, 0xb48a, ++ 0xb48a, 0xb48a, 0x080c, 0x0db4, 0x080c, 0x538e, 0x01f8, 0x6014, ++ 0x7144, 0x918c, 0x0fff, 0x9016, 0xd1c4, 0x0118, 0x7264, 0x9294, ++ 0x00ff, 0x0096, 0x904d, 0x0188, 0xa87b, 0x0000, 0xa864, 0x9086, ++ 0x0139, 0x0128, 0xa867, 0x0103, 0xa976, 0xaa96, 0x0030, 0xa897, ++ 0x4000, 0xa99a, 0xaa9e, 0x080c, 0x688c, 0x009e, 0x0804, 0x9e32, ++ 0x9182, 0x0085, 0x0002, 0xb4c2, 0xb4c0, 0xb4c0, 0xb4ce, 0xb4c0, ++ 0xb4c0, 0xb4c0, 0xb4c0, 0xb4c0, 0xb4c0, 0xb4c0, 0xb4c0, 0xb4c0, ++ 0x080c, 0x0db4, 0x6003, 0x0001, 0x6106, 0x080c, 0x83f1, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x8973, 0x012e, 0x0005, 0x0026, 0x0056, ++ 0x00d6, 0x00e6, 0x2071, 0x0260, 0x7224, 0x6216, 0x7220, 0x080c, ++ 0xbb05, 0x01a0, 0x2268, 0x6800, 0x9086, 0x0000, 0x0178, 0x6010, ++ 0x6d10, 0x952e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0xb73d, 0x00ce, ++ 0x0128, 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, ++ 0x6003, 0x0001, 0x080c, 0x83f1, 0x080c, 0x8973, 0x9280, 0x0004, ++ 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6824, 0xd0ec, ++ 0x0128, 0x00c6, 0x2260, 0x080c, 0xbe4a, 0x00ce, 0x00ee, 0x00de, ++ 0x005e, 0x002e, 0x0005, 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, ++ 0x0085, 0x0a0c, 0x0db4, 0x908a, 0x0092, 0x1a0c, 0x0db4, 0x9082, ++ 0x0085, 0x00e2, 0x9186, 0x0027, 0x0120, 0x9186, 0x0014, 0x190c, ++ 0x0db4, 0x080c, 0x886e, 0x0096, 0x6014, 0x2048, 0x080c, 0xbb17, ++ 0x0140, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, ++ 0x688c, 0x009e, 0x080c, 0x9e62, 0x0804, 0x8973, 0xb543, 0xb545, ++ 0xb545, 0xb543, 0xb543, 0xb543, 0xb543, 0xb543, 0xb543, 0xb543, ++ 0xb543, 0xb543, 0xb543, 0x080c, 0x0db4, 0x080c, 0x886e, 0x080c, ++ 0x9e62, 0x080c, 0x8973, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, ++ 0x9082, 0x0085, 0x2008, 0x04b8, 0x9186, 0x0027, 0x11f8, 0x080c, ++ 0x886e, 0x080c, 0x2fda, 0x080c, 0xc227, 0x0096, 0x6014, 0x2048, ++ 0x080c, 0xbb17, 0x0150, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, ++ 0x0029, 0x080c, 0x688c, 0x080c, 0xbd00, 0x009e, 0x080c, 0x9e32, ++ 0x080c, 0x8973, 0x0005, 0x080c, 0x9ec7, 0x0ce0, 0x9186, 0x0014, ++ 0x1dd0, 0x080c, 0x886e, 0x0096, 0x6014, 0x2048, 0x080c, 0xbb17, ++ 0x0d60, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0006, 0xa880, ++ 0xc0ec, 0xa882, 0x08f0, 0x0002, 0xb59b, 0xb599, 0xb599, 0xb599, ++ 0xb599, 0xb599, 0xb5b3, 0xb599, 0xb599, 0xb599, 0xb599, 0xb599, ++ 0xb599, 0x080c, 0x0db4, 0x080c, 0x886e, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, ++ 0x1957, 0x0010, 0x2001, 0x1958, 0x2004, 0x601a, 0x6003, 0x000c, ++ 0x080c, 0x8973, 0x0005, 0x080c, 0x886e, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, ++ 0x1957, 0x0010, 0x2001, 0x1958, 0x2004, 0x601a, 0x6003, 0x000e, ++ 0x080c, 0x8973, 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, ++ 0x0208, 0x0012, 0x0804, 0x9ec7, 0xb5e1, 0xb5e1, 0xb5e1, 0xb5e1, ++ 0xb5e3, 0xb630, 0xb5e1, 0xb5e1, 0xb5e1, 0xb5e1, 0xb5e1, 0xb5e1, ++ 0xb5e1, 0x080c, 0x0db4, 0x0096, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x0168, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, ++ 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x009e, 0x0804, 0xb644, ++ 0x080c, 0xbb17, 0x1118, 0x080c, 0xbd00, 0x0068, 0x6014, 0x2048, ++ 0xa87c, 0xd0e4, 0x1110, 0x080c, 0xbd00, 0xa867, 0x0103, 0x080c, ++ 0xc1f2, 0x080c, 0x688c, 0x00d6, 0x2c68, 0x080c, 0x9ddc, 0x01d0, ++ 0x6003, 0x0001, 0x6007, 0x001e, 0x600b, 0xffff, 0x2009, 0x026e, ++ 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, 0x613e, 0x6910, 0x6112, ++ 0x080c, 0xbf8c, 0x6954, 0x6156, 0x6023, 0x0001, 0x080c, 0x83f1, ++ 0x080c, 0x8973, 0x2d60, 0x00de, 0x080c, 0x9e32, 0x009e, 0x0005, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x05a0, 0x6034, ++ 0x908c, 0xff00, 0x810f, 0x9186, 0x0035, 0x0130, 0x9186, 0x001e, ++ 0x0118, 0x9186, 0x0039, 0x1538, 0x00d6, 0x2c68, 0x080c, 0xc18a, ++ 0x11f0, 0x080c, 0x9ddc, 0x01d8, 0x6106, 0x6003, 0x0001, 0x6023, ++ 0x0001, 0x6910, 0x6112, 0x692c, 0x612e, 0x6930, 0x6132, 0x6934, ++ 0x918c, 0x00ff, 0x6136, 0x6938, 0x613a, 0x693c, 0x613e, 0x6954, ++ 0x6156, 0x080c, 0xbf8c, 0x080c, 0x83f1, 0x080c, 0x8973, 0x2d60, ++ 0x00de, 0x0804, 0x9e32, 0x0096, 0x6014, 0x2048, 0x080c, 0xbb17, ++ 0x01c8, 0xa867, 0x0103, 0xa880, 0xd0b4, 0x0128, 0xc0ec, 0xa882, ++ 0xa87b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, ++ 0xa87b, 0x0005, 0x080c, 0xbe0c, 0xa877, 0x0000, 0x080c, 0x688c, ++ 0x080c, 0xbd00, 0x009e, 0x0804, 0x9e32, 0x0016, 0x0096, 0x6014, ++ 0x2048, 0x080c, 0xbb17, 0x0140, 0xa867, 0x0103, 0xa87b, 0x0028, ++ 0xa877, 0x0000, 0x080c, 0x688c, 0x009e, 0x001e, 0x9186, 0x0013, ++ 0x0148, 0x9186, 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, ++ 0x9ec7, 0x0030, 0x080c, 0x886e, 0x080c, 0x9e62, 0x080c, 0x8973, ++ 0x0005, 0x0056, 0x0066, 0x0096, 0x00a6, 0x2029, 0x0001, 0x9182, ++ 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x8304, 0x9098, ++ 0x0018, 0x2009, 0x0020, 0x2011, 0x0029, 0x080c, 0xb712, 0x96b2, ++ 0x0020, 0xb004, 0x904d, 0x0110, 0x080c, 0x0f9d, 0x080c, 0x0feb, ++ 0x0520, 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, ++ 0x968a, 0x003d, 0x1228, 0x2608, 0x2011, 0x001b, 0x0499, 0x00a8, ++ 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x0451, ++ 0x0c28, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, ++ 0x0003, 0xb566, 0x95ac, 0x0000, 0x0048, 0x2001, 0x0205, 0x2003, ++ 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, 0x009e, 0x006e, ++ 0x005e, 0x0005, 0x00a6, 0x89ff, 0x0158, 0xa804, 0x9055, 0x0130, ++ 0xa807, 0x0000, 0x080c, 0x688c, 0x2a48, 0x0cb8, 0x080c, 0x688c, ++ 0x00ae, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7814, 0x9085, 0x0080, ++ 0x7816, 0xd184, 0x0108, 0x8108, 0x810c, 0x20a9, 0x0001, 0xa860, ++ 0x20e8, 0xa85c, 0x9200, 0x20a0, 0x20e1, 0x0000, 0x2300, 0x9e00, ++ 0x2098, 0x4003, 0x8318, 0x9386, 0x0020, 0x1148, 0x2018, 0x2300, ++ 0x9e00, 0x2098, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, 0x8109, ++ 0x1d80, 0x7817, 0x0000, 0x00fe, 0x0005, 0x0066, 0x0126, 0x2091, ++ 0x8000, 0x2031, 0x0001, 0x6020, 0x9084, 0x000f, 0x0083, 0x012e, ++ 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, ++ 0x6020, 0x9084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xb778, ++ 0xb778, 0xb773, 0xb79a, 0xb766, 0xb773, 0xb79a, 0xb773, 0xb766, ++ 0xb766, 0xb773, 0xb773, 0xb773, 0xb766, 0xb766, 0x080c, 0x0db4, ++ 0x0036, 0x2019, 0x0010, 0x080c, 0xd0e5, 0x6023, 0x0006, 0x6003, ++ 0x0007, 0x003e, 0x0005, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, ++ 0x0096, 0x86ff, 0x11d8, 0x6014, 0x2048, 0x080c, 0xbb17, 0x01c0, ++ 0xa864, 0x9086, 0x0139, 0x1128, 0xa87b, 0x0005, 0xa883, 0x0000, ++ 0x0028, 0x900e, 0x2001, 0x0005, 0x080c, 0x6ac6, 0x080c, 0xbe0c, ++ 0x080c, 0x687f, 0x080c, 0x9e62, 0x9085, 0x0001, 0x009e, 0x0005, ++ 0x9006, 0x0ce0, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0db4, 0x0002, ++ 0xb7b0, 0xb7de, 0xb7b2, 0xb7ff, 0xb7d9, 0xb7b0, 0xb773, 0xb778, ++ 0xb778, 0xb773, 0xb773, 0xb773, 0xb773, 0xb773, 0xb773, 0xb773, ++ 0x080c, 0x0db4, 0x86ff, 0x1510, 0x6020, 0x9086, 0x0006, 0x01f0, ++ 0x0096, 0x6014, 0x2048, 0x080c, 0xbb17, 0x0158, 0xa87c, 0xd0cc, ++ 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0f9d, 0x009e, 0x080c, ++ 0xbe0c, 0x009e, 0x080c, 0xc1cc, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0002, 0x080c, 0x83f1, 0x080c, 0x8973, 0x9085, 0x0001, ++ 0x0005, 0x0066, 0x080c, 0x190d, 0x006e, 0x08a0, 0x00e6, 0x2071, ++ 0x19b8, 0x7024, 0x9c06, 0x1120, 0x080c, 0x9662, 0x00ee, 0x0850, ++ 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, 0x1150, 0x0086, 0x0096, ++ 0x2049, 0x0001, 0x2c40, 0x080c, 0x97ba, 0x009e, 0x008e, 0x0010, ++ 0x080c, 0x955f, 0x00ee, 0x1904, 0xb7b2, 0x0804, 0xb773, 0x0036, ++ 0x00e6, 0x2071, 0x19b8, 0x703c, 0x9c06, 0x1138, 0x901e, 0x080c, ++ 0x96d8, 0x00ee, 0x003e, 0x0804, 0xb7b2, 0x080c, 0x98ea, 0x00ee, ++ 0x003e, 0x1904, 0xb7b2, 0x0804, 0xb773, 0x00c6, 0x6020, 0x9084, ++ 0x000f, 0x0013, 0x00ce, 0x0005, 0xb832, 0xb8fb, 0xba62, 0xb83c, ++ 0x9e62, 0xb832, 0xd0d7, 0xc234, 0xb8fb, 0xb82b, 0xbae1, 0xb82b, ++ 0xb82b, 0xb82b, 0xb82b, 0x080c, 0x0db4, 0x080c, 0xbd1d, 0x1110, ++ 0x080c, 0xa7c0, 0x0005, 0x080c, 0x886e, 0x080c, 0x8973, 0x0804, ++ 0x9e32, 0x601b, 0x0001, 0x0005, 0x080c, 0xbb17, 0x0130, 0x6014, ++ 0x0096, 0x2048, 0x2c00, 0xa896, 0x009e, 0x6000, 0x908a, 0x0016, ++ 0x1a0c, 0x0db4, 0x0002, 0xb85b, 0xb85d, 0xb881, 0xb895, 0xb8b9, ++ 0xb85b, 0xb832, 0xb832, 0xb832, 0xb895, 0xb895, 0xb85b, 0xb85b, ++ 0xb85b, 0xb85b, 0xb89f, 0x080c, 0x0db4, 0x00e6, 0x6014, 0x0096, ++ 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19b8, 0x7024, ++ 0x9c06, 0x01a0, 0x080c, 0x955f, 0x080c, 0xc1cc, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x6023, 0x0002, 0x2001, 0x1958, 0x2004, 0x601a, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x00ee, 0x0005, 0x601b, 0x0001, ++ 0x0cd8, 0x0096, 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, ++ 0x080c, 0xc1cc, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x0005, 0x0096, 0x601b, 0x0001, ++ 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x0005, 0x080c, ++ 0x538e, 0x01a8, 0x6014, 0x0096, 0x904d, 0x0180, 0xa864, 0xa867, ++ 0x0103, 0xa87b, 0x0006, 0x9086, 0x0139, 0x1140, 0xa867, 0x0139, ++ 0xa897, 0x4005, 0xa89b, 0x0004, 0x080c, 0x688c, 0x009e, 0x0804, ++ 0x9e32, 0x6014, 0x0096, 0x904d, 0x05c8, 0xa97c, 0xd1e4, 0x05b0, ++ 0x2001, 0x180f, 0x2004, 0xd0c4, 0x0110, 0x009e, 0x0005, 0xa884, ++ 0x009e, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0x2001, 0x0030, ++ 0x2c08, 0x080c, 0x1518, 0x2001, 0x030c, 0x2004, 0x9086, 0x0041, ++ 0x11a0, 0x6014, 0x0096, 0x904d, 0x090c, 0x0db4, 0xa880, 0xd0f4, ++ 0x1130, 0xc0f5, 0xa882, 0x009e, 0x601b, 0x0002, 0x0070, 0x009e, ++ 0x2001, 0x0037, 0x2c08, 0x080c, 0x1518, 0x6000, 0x9086, 0x0004, ++ 0x1120, 0x2009, 0x0048, 0x080c, 0x9eac, 0x0005, 0x009e, 0x080c, ++ 0x190d, 0x0804, 0xb881, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0db4, ++ 0x000b, 0x0005, 0xb912, 0xb839, 0xb914, 0xb912, 0xb914, 0xb914, ++ 0xb833, 0xb912, 0xb82d, 0xb82d, 0xb912, 0xb912, 0xb912, 0xb912, ++ 0xb912, 0xb912, 0x080c, 0x0db4, 0x6010, 0x00b6, 0x2058, 0xb804, ++ 0x9084, 0x00ff, 0x00be, 0x908a, 0x000c, 0x1a0c, 0x0db4, 0x00b6, ++ 0x0013, 0x00be, 0x0005, 0xb92f, 0xb9fc, 0xb931, 0xb971, 0xb931, ++ 0xb971, 0xb931, 0xb93f, 0xb92f, 0xb971, 0xb92f, 0xb960, 0x080c, ++ 0x0db4, 0x6004, 0x908e, 0x0016, 0x05c0, 0x908e, 0x0004, 0x05a8, ++ 0x908e, 0x0002, 0x0590, 0x908e, 0x0052, 0x0904, 0xb9f8, 0x6004, ++ 0x080c, 0xbd1d, 0x0904, 0xba15, 0x908e, 0x0004, 0x1110, 0x080c, ++ 0x3003, 0x908e, 0x0021, 0x0904, 0xba19, 0x908e, 0x0022, 0x0904, ++ 0xba5d, 0x908e, 0x003d, 0x0904, 0xba19, 0x908e, 0x0039, 0x0904, ++ 0xba1d, 0x908e, 0x0035, 0x0904, 0xba1d, 0x908e, 0x001e, 0x0178, ++ 0x908e, 0x0001, 0x1140, 0x6010, 0x2058, 0xb804, 0x9084, 0x00ff, ++ 0x9086, 0x0006, 0x0110, 0x080c, 0x2fda, 0x080c, 0xa7c0, 0x0804, ++ 0x9e62, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0904, 0xb9e9, ++ 0x9186, 0x0002, 0x1904, 0xb9be, 0x2001, 0x1836, 0x2004, 0xd08c, ++ 0x11c8, 0x080c, 0x6fb2, 0x11b0, 0x080c, 0xc212, 0x0138, 0x080c, ++ 0x6fd5, 0x1120, 0x080c, 0x6ec2, 0x0804, 0xba46, 0x2001, 0x194e, ++ 0x2003, 0x0001, 0x2001, 0x1800, 0x2003, 0x0001, 0x080c, 0x6ee4, ++ 0x0804, 0xba46, 0x6010, 0x2058, 0x2001, 0x1836, 0x2004, 0xd0ac, ++ 0x1904, 0xba46, 0xb8a0, 0x9084, 0xff80, 0x1904, 0xba46, 0xb840, ++ 0x9084, 0x00ff, 0x9005, 0x0190, 0x8001, 0xb842, 0x6017, 0x0000, ++ 0x6023, 0x0007, 0x601b, 0x0398, 0x6043, 0x0000, 0x080c, 0x9ddc, ++ 0x0128, 0x2b00, 0x6012, 0x6023, 0x0001, 0x0458, 0x00de, 0x00ce, ++ 0x6004, 0x908e, 0x0002, 0x11a0, 0x6010, 0x2058, 0xb8a0, 0x9086, ++ 0x007e, 0x1170, 0x2009, 0x1836, 0x2104, 0xc085, 0x200a, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x5c64, 0x00ee, 0x080c, 0xa7c0, 0x0030, ++ 0x080c, 0xa7c0, 0x080c, 0x2fda, 0x080c, 0xc227, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x3003, 0x012e, 0x00ee, 0x080c, 0x9e62, ++ 0x0005, 0x2001, 0x0002, 0x080c, 0x618f, 0x6003, 0x0001, 0x6007, ++ 0x0002, 0x080c, 0x8439, 0x080c, 0x8973, 0x00de, 0x00ce, 0x0c80, ++ 0x080c, 0x3003, 0x0804, 0xb96d, 0x00c6, 0x00d6, 0x6104, 0x9186, ++ 0x0016, 0x0d38, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, ++ 0x0904, 0xb9be, 0x8001, 0xb842, 0x6003, 0x0001, 0x080c, 0x8439, ++ 0x080c, 0x8973, 0x00de, 0x00ce, 0x0898, 0x080c, 0xa7c0, 0x0804, ++ 0xb96f, 0x080c, 0xa7fc, 0x0804, 0xb96f, 0x00d6, 0x2c68, 0x6104, ++ 0x080c, 0xc18a, 0x00de, 0x0118, 0x080c, 0x9e32, 0x00f0, 0x6004, ++ 0x8007, 0x6134, 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x6023, 0x0002, 0x603c, 0x600a, 0x2001, 0x1958, ++ 0x2004, 0x601a, 0x602c, 0x2c08, 0x2060, 0x6024, 0xc0b5, 0x6026, ++ 0x2160, 0x080c, 0x83f1, 0x080c, 0x8973, 0x0005, 0x00de, 0x00ce, ++ 0x080c, 0xa7c0, 0x080c, 0x2fda, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x3003, 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, ++ 0x6043, 0x0000, 0x012e, 0x00ee, 0x0005, 0x080c, 0xa261, 0x1904, ++ 0xba15, 0x0005, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0db4, 0x0096, ++ 0x00d6, 0x001b, 0x00de, 0x009e, 0x0005, 0xba7d, 0xba7d, 0xba7d, ++ 0xba7d, 0xba7d, 0xba7d, 0xba7d, 0xba7d, 0xba7d, 0xb832, 0xba7d, ++ 0xb839, 0xba7f, 0xb839, 0xba8c, 0xba7d, 0x080c, 0x0db4, 0x6004, ++ 0x9086, 0x008b, 0x0148, 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x0005, 0x080c, 0xc206, 0x0118, 0x080c, ++ 0xc219, 0x0010, 0x080c, 0xc227, 0x080c, 0xbd00, 0x080c, 0xbb17, ++ 0x0570, 0x080c, 0x2fda, 0x080c, 0xbb17, 0x0168, 0x6014, 0x2048, ++ 0xa867, 0x0103, 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ed, ++ 0xa882, 0x080c, 0x688c, 0x2c68, 0x080c, 0x9ddc, 0x0150, 0x6810, ++ 0x6012, 0x080c, 0xbf8c, 0x00c6, 0x2d60, 0x080c, 0x9e62, 0x00ce, ++ 0x0008, 0x2d60, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, ++ 0x6003, 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x00c8, 0x080c, ++ 0xc206, 0x0138, 0x6034, 0x9086, 0x4000, 0x1118, 0x080c, 0x2fda, ++ 0x08d0, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, ++ 0x9186, 0x0035, 0x1118, 0x080c, 0x2fda, 0x0868, 0x080c, 0x9e62, ++ 0x0005, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0db4, 0x0002, 0xbaf7, ++ 0xbaf7, 0xbaf9, 0xbaf9, 0xbaf9, 0xbaf7, 0xbaf7, 0x9e62, 0xbaf7, ++ 0xbaf7, 0xbaf7, 0xbaf7, 0xbaf7, 0xbaf7, 0xbaf7, 0xbaf7, 0x080c, ++ 0x0db4, 0x080c, 0x98ea, 0x6114, 0x0096, 0x2148, 0xa87b, 0x0006, ++ 0x080c, 0x688c, 0x009e, 0x0804, 0x9e32, 0x9284, 0x0007, 0x1158, ++ 0x9282, 0x1cd0, 0x0240, 0x2001, 0x1819, 0x2004, 0x9202, 0x1218, ++ 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x0096, 0x0028, 0x0096, ++ 0x0006, 0x6014, 0x2048, 0x000e, 0x0006, 0x9984, 0xf000, 0x9086, ++ 0xf000, 0x0110, 0x080c, 0x1096, 0x000e, 0x009e, 0x0005, 0x00e6, ++ 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, 0x1cd0, ++ 0x2071, 0x1800, 0x7350, 0x7070, 0x9302, 0x1640, 0x6020, 0x9206, ++ 0x11f8, 0x080c, 0xc212, 0x0180, 0x9286, 0x0001, 0x1168, 0x6004, ++ 0x9086, 0x0004, 0x1148, 0x080c, 0x2fda, 0x080c, 0xc227, 0x00c6, ++ 0x080c, 0x9e62, 0x00ce, 0x0060, 0x080c, 0xbf06, 0x0148, 0x080c, ++ 0xbd1d, 0x1110, 0x080c, 0xa7c0, 0x00c6, 0x080c, 0x9e32, 0x00ce, ++ 0x9ce0, 0x0018, 0x7064, 0x9c02, 0x1208, 0x08a0, 0x012e, 0x000e, ++ 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, ++ 0x1000, 0x210c, 0x81ff, 0x0128, 0x2061, 0x1a80, 0x6112, 0x080c, ++ 0x2fda, 0x9006, 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, ++ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9ddc, 0x01b0, ++ 0x6656, 0x2b00, 0x6012, 0x080c, 0x538e, 0x0118, 0x080c, 0xbc44, ++ 0x0168, 0x080c, 0xbf8c, 0x6023, 0x0003, 0x2009, 0x004b, 0x080c, ++ 0x9eac, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0xbaa0, 0x080c, 0x9e7f, 0x0560, ++ 0x6057, 0x0000, 0x2b00, 0x6012, 0x080c, 0xbf8c, 0x6023, 0x0003, ++ 0x0016, 0x080c, 0x8571, 0x0076, 0x903e, 0x080c, 0x8469, 0x2c08, ++ 0x080c, 0xd29b, 0x007e, 0x001e, 0xd184, 0x0128, 0x080c, 0x9e32, ++ 0x9085, 0x0001, 0x0070, 0x080c, 0x538e, 0x0128, 0xd18c, 0x1170, ++ 0x080c, 0xbc44, 0x0148, 0x2009, 0x004c, 0x080c, 0x9eac, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x2900, 0x6016, ++ 0x0c90, 0x2009, 0x004d, 0x0010, 0x2009, 0x004e, 0x00f6, 0x00c6, ++ 0x0046, 0x0016, 0x080c, 0x9ddc, 0x2c78, 0x0590, 0x7e56, 0x2b00, ++ 0x7812, 0x7823, 0x0003, 0x2021, 0x0005, 0x080c, 0xbc56, 0x9186, ++ 0x004d, 0x0118, 0x9186, 0x004e, 0x0148, 0x2001, 0x1951, 0x200c, ++ 0xd1fc, 0x0168, 0x2f60, 0x080c, 0x9e32, 0x00d0, 0x2001, 0x1950, ++ 0x200c, 0xd1fc, 0x0120, 0x2f60, 0x080c, 0x9e32, 0x0088, 0x2f60, ++ 0x080c, 0x538e, 0x0138, 0xd18c, 0x1118, 0x04f1, 0x0148, 0x0010, ++ 0x2900, 0x7816, 0x001e, 0x0016, 0x080c, 0x9eac, 0x9085, 0x0001, ++ 0x001e, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, ++ 0x080c, 0x9ddc, 0x2c78, 0x0508, 0x7e56, 0x2b00, 0x7812, 0x7823, ++ 0x0003, 0x0096, 0x2021, 0x0004, 0x0489, 0x009e, 0x2001, 0x194f, ++ 0x200c, 0xd1fc, 0x0120, 0x2f60, 0x080c, 0x9e32, 0x0060, 0x2f60, ++ 0x080c, 0x538e, 0x0120, 0xd18c, 0x1160, 0x0071, 0x0130, 0x2009, ++ 0x0052, 0x080c, 0x9eac, 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe, ++ 0x0005, 0x2900, 0x7816, 0x0c98, 0x00c6, 0x080c, 0x4879, 0x00ce, ++ 0x1120, 0x080c, 0x9e32, 0x9006, 0x0005, 0xa867, 0x0000, 0xa86b, ++ 0x8000, 0x2900, 0x6016, 0x9085, 0x0001, 0x0005, 0x0096, 0x0076, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x6372, 0x0158, 0x2001, 0xbc5b, ++ 0x0006, 0x900e, 0x2400, 0x080c, 0x6ac6, 0x080c, 0x688c, 0x000e, ++ 0x0807, 0x2418, 0x080c, 0x8808, 0xbaa0, 0x0086, 0x2041, 0x0001, ++ 0x2039, 0x0001, 0x2608, 0x080c, 0x8589, 0x008e, 0x080c, 0x8469, ++ 0x2f08, 0x2648, 0x080c, 0xd29b, 0xb93c, 0x81ff, 0x090c, 0x865a, ++ 0x080c, 0x8973, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x9ddc, 0x0190, 0x660a, 0x2b08, 0x6112, ++ 0x080c, 0xbf8c, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f, ++ 0x080c, 0x9eac, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, ++ 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9e7f, 0x01b8, ++ 0x660a, 0x2b08, 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0008, 0x2900, ++ 0x6016, 0x00f6, 0x2c78, 0x080c, 0x1648, 0x00fe, 0x2009, 0x0021, ++ 0x080c, 0x9eac, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, ++ 0x0cd8, 0x2009, 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000, ++ 0x080c, 0x9ddc, 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xbf8c, ++ 0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0x9eac, ++ 0x9085, 0x0001, 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9e7f, 0x0188, 0x2b08, ++ 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, ++ 0x0000, 0x080c, 0x9eac, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x9006, 0x0cd8, 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818, ++ 0x0026, 0x00b6, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, ++ 0xba3e, 0x00be, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, ++ 0x0002, 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110, ++ 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6020, ++ 0x9086, 0x0004, 0x0190, 0x6014, 0x904d, 0x080c, 0xbb17, 0x0168, ++ 0xa864, 0x9086, 0x0139, 0x0158, 0x6020, 0x9086, 0x0003, 0x0128, ++ 0xa868, 0xd0fc, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, ++ 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9e7f, ++ 0x0198, 0x2b08, 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0001, 0x2900, ++ 0x6016, 0x080c, 0x2fda, 0x2009, 0x0028, 0x080c, 0x9eac, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, ++ 0x11a8, 0x2011, 0x1823, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, ++ 0x080c, 0xaa49, 0x00be, 0x080c, 0xac88, 0x6003, 0x0001, 0x6007, ++ 0x0029, 0x080c, 0x8439, 0x080c, 0x8973, 0x0078, 0x6014, 0x0096, ++ 0x2048, 0xa868, 0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, ++ 0xc14b, 0x080c, 0xa7c0, 0x080c, 0x9e32, 0x0005, 0x0096, 0x6014, ++ 0x904d, 0x090c, 0x0db4, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, ++ 0x4005, 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x688c, 0x012e, 0x009e, 0x080c, 0x9e32, 0x0c30, 0x0096, ++ 0x9186, 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x618f, 0x00e8, ++ 0x9186, 0x0015, 0x1510, 0x2011, 0x1823, 0x2204, 0x9086, 0x0014, ++ 0x11e0, 0x6010, 0x00b6, 0x2058, 0x080c, 0x62d9, 0x00be, 0x080c, ++ 0xad59, 0x1198, 0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, ++ 0x0160, 0x2001, 0x0006, 0x080c, 0x618f, 0x6014, 0x2048, 0xa868, ++ 0xd0fc, 0x0170, 0x080c, 0xa235, 0x0048, 0x6014, 0x2048, 0xa868, ++ 0xd0fc, 0x0528, 0x080c, 0xa7c0, 0x080c, 0x9e32, 0x009e, 0x0005, ++ 0x6014, 0x6310, 0x2358, 0x904d, 0x090c, 0x0db4, 0xa87b, 0x0000, ++ 0xa883, 0x0000, 0xa897, 0x4000, 0x900e, 0x080c, 0x645e, 0x1108, ++ 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x688c, 0x012e, 0x080c, 0x9e32, 0x08f8, 0x6014, ++ 0x904d, 0x090c, 0x0db4, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, ++ 0x4005, 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x688c, 0x012e, 0x080c, 0x9e32, 0x0840, 0xa878, 0x9086, ++ 0x0005, 0x1108, 0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, ++ 0x6043, 0x0000, 0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x0005, 0x00c6, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0120, 0x6020, 0x9084, 0x000f, ++ 0x0013, 0x00ce, 0x0005, 0xb832, 0xbe3c, 0xbe3c, 0xbe3f, 0xd579, ++ 0xd594, 0xd597, 0xb832, 0xb832, 0xb832, 0xb832, 0xb832, 0xb832, ++ 0xb832, 0xb832, 0x080c, 0x0db4, 0xa001, 0xa001, 0x0005, 0x0096, ++ 0x6014, 0x904d, 0x0118, 0xa87c, 0xd0e4, 0x1110, 0x009e, 0x0010, ++ 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x0550, 0x2001, 0x1833, 0x2004, 0x9005, 0x1540, 0x00f6, 0x2c78, ++ 0x080c, 0x9ddc, 0x0508, 0x7810, 0x6012, 0x080c, 0xbf8c, 0x7820, ++ 0x9086, 0x0003, 0x0128, 0x7808, 0x603a, 0x2f00, 0x603e, 0x0020, ++ 0x7808, 0x603e, 0x2f00, 0x603a, 0x602e, 0x6023, 0x0001, 0x6007, ++ 0x0035, 0x6003, 0x0001, 0x7954, 0x6156, 0x080c, 0x83f1, 0x080c, ++ 0x8973, 0x2f60, 0x00fe, 0x0005, 0x2f60, 0x00fe, 0x2001, 0x1959, ++ 0x2004, 0x6042, 0x0005, 0x0016, 0x0096, 0x6814, 0x2048, 0xa87c, ++ 0xd0e4, 0x0180, 0xc0e4, 0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, ++ 0xa88f, 0x0000, 0xd0cc, 0x0130, 0xc0cc, 0xa87e, 0xa878, 0x2048, ++ 0x080c, 0x0f9d, 0x6830, 0x6036, 0x908e, 0x0001, 0x0148, 0x6803, ++ 0x0002, 0x9086, 0x0005, 0x0170, 0x9006, 0x602e, 0x6032, 0x00d0, ++ 0x681c, 0xc085, 0x681e, 0x6803, 0x0004, 0x6824, 0xc0f4, 0x9085, ++ 0x0c00, 0x6826, 0x6814, 0x2048, 0xa8ac, 0x6938, 0x9102, 0xa8b0, ++ 0x693c, 0x9103, 0x1e48, 0x683c, 0x602e, 0x6838, 0x9084, 0xfffc, ++ 0x683a, 0x6032, 0x2d00, 0x603a, 0x6808, 0x603e, 0x6910, 0x6112, ++ 0x6954, 0x6156, 0x6023, 0x0001, 0x6007, 0x0039, 0x6003, 0x0001, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x009e, 0x001e, 0x0005, 0x6024, ++ 0xd0d4, 0x0510, 0xd0f4, 0x11f8, 0x6038, 0x940a, 0x603c, 0x9303, ++ 0x0230, 0x9105, 0x0120, 0x6024, 0xc0d4, 0xc0f5, 0x0098, 0x643a, ++ 0x633e, 0xac3e, 0xab42, 0x0046, 0x0036, 0x2400, 0xacac, 0x9402, ++ 0xa836, 0x2300, 0xabb0, 0x9303, 0xa83a, 0x003e, 0x004e, 0x6024, ++ 0xc0d4, 0x0000, 0x6026, 0x0005, 0xd0f4, 0x1138, 0xa83c, 0x603a, ++ 0xa840, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x0005, 0x0006, 0x0016, ++ 0x6004, 0x908e, 0x0034, 0x01b8, 0x908e, 0x0035, 0x01a0, 0x908e, ++ 0x0036, 0x0188, 0x908e, 0x0037, 0x0170, 0x908e, 0x0038, 0x0158, ++ 0x908e, 0x0039, 0x0140, 0x908e, 0x003a, 0x0128, 0x908e, 0x003b, ++ 0x0110, 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x0036, 0x00e6, 0x2001, 0x1953, 0x200c, 0x8000, 0x2014, ++ 0x2001, 0x0032, 0x080c, 0x8270, 0x2001, 0x1957, 0x82ff, 0x1110, ++ 0x2011, 0x0014, 0x2202, 0x2001, 0x1955, 0x200c, 0x8000, 0x2014, ++ 0x2071, 0x193d, 0x711a, 0x721e, 0x2001, 0x0064, 0x080c, 0x8270, ++ 0x2001, 0x1958, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, ++ 0x1959, 0x9288, 0x000a, 0x2102, 0x2001, 0x1a61, 0x2102, 0x2001, ++ 0x0032, 0x080c, 0x1518, 0x080c, 0x6543, 0x00ee, 0x003e, 0x002e, ++ 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x00e6, 0x2001, 0x1957, ++ 0x2003, 0x0028, 0x2001, 0x1958, 0x2003, 0x0014, 0x2071, 0x193d, ++ 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0x1959, 0x2009, 0x001e, ++ 0x2102, 0x2001, 0x1a61, 0x2102, 0x2001, 0x0032, 0x080c, 0x1518, ++ 0x00ee, 0x001e, 0x000e, 0x0005, 0x0096, 0x6058, 0x904d, 0x0110, ++ 0x080c, 0x101d, 0x009e, 0x0005, 0x0005, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x9ddc, 0x0180, 0x2b08, 0x6112, 0x0ca9, 0x6023, ++ 0x0001, 0x2900, 0x6016, 0x2009, 0x0033, 0x080c, 0x9eac, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x00e6, ++ 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1500, 0x708c, 0x9086, ++ 0x0018, 0x11e0, 0x6014, 0x2048, 0xaa3c, 0xd2e4, 0x1160, 0x2c78, ++ 0x080c, 0x8b63, 0x01d8, 0x7078, 0xaa50, 0x9206, 0x1160, 0x707c, ++ 0xaa54, 0x9206, 0x1140, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, ++ 0x900e, 0x080c, 0x3023, 0x080c, 0xa235, 0x0020, 0x080c, 0xa7c0, ++ 0x080c, 0x9e32, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x705c, 0xaa54, ++ 0x9206, 0x0d48, 0x0c80, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x9ddc, 0x0188, 0x2b08, 0x6112, 0x080c, 0xbf8c, 0x6023, 0x0001, ++ 0x2900, 0x6016, 0x2009, 0x004d, 0x080c, 0x9eac, 0x9085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x0016, 0x080c, 0x9ddc, 0x0180, 0x2b08, 0x6112, 0x080c, ++ 0xbf8c, 0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x080c, 0x9eac, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x001e, 0x9006, 0x0cd0, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0096, 0x00e6, ++ 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1568, 0x718c, 0x6014, ++ 0x2048, 0xa814, 0x8003, 0x9106, 0x1530, 0x20e1, 0x0000, 0x2001, ++ 0x1971, 0x2003, 0x0000, 0x6014, 0x2048, 0xa830, 0x20a8, 0x8906, ++ 0x8006, 0x8007, 0x9094, 0x003f, 0x22e8, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x080c, 0xc7ce, ++ 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c38, 0x6014, 0x2048, ++ 0xa867, 0x0103, 0x0010, 0x080c, 0xa7c0, 0x080c, 0x9e32, 0x00fe, ++ 0x00ee, 0x009e, 0x006e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, ++ 0x11b8, 0x708c, 0x9086, 0x0004, 0x1198, 0x6014, 0x2048, 0x2c78, ++ 0x080c, 0x8b63, 0x01a8, 0x7078, 0xaa74, 0x9206, 0x1130, 0x707c, ++ 0xaa78, 0x9206, 0x1110, 0x080c, 0x2fda, 0x080c, 0xa235, 0x0020, ++ 0x080c, 0xa7c0, 0x080c, 0x9e32, 0x00fe, 0x00ee, 0x009e, 0x0005, ++ 0x705c, 0xaa78, 0x9206, 0x0d78, 0x0c80, 0x0096, 0x00e6, 0x00f6, ++ 0x2071, 0x1800, 0x9186, 0x0015, 0x1550, 0x708c, 0x9086, 0x0004, ++ 0x1530, 0x6014, 0x2048, 0x2c78, 0x080c, 0x8b63, 0x05f0, 0x7078, ++ 0xaacc, 0x9206, 0x1180, 0x707c, 0xaad0, 0x9206, 0x1160, 0x080c, ++ 0x2fda, 0x0016, 0xa998, 0xaab0, 0x9284, 0x1000, 0xc0fd, 0x080c, ++ 0x533e, 0x001e, 0x0010, 0x080c, 0x512f, 0x080c, 0xbb17, 0x0508, ++ 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0080, 0x080c, ++ 0xbb17, 0x01b8, 0x6014, 0x2048, 0x080c, 0x512f, 0x1d70, 0xa87b, ++ 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b, 0x0004, 0x0126, ++ 0x2091, 0x8000, 0xa867, 0x0139, 0x080c, 0x688c, 0x012e, 0x080c, ++ 0x9e32, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x705c, 0xaad0, 0x9206, ++ 0x0930, 0x0888, 0x0016, 0x0026, 0xa87c, 0xd0ac, 0x0178, 0xa938, ++ 0xaa34, 0x2100, 0x9205, 0x0150, 0xa890, 0x9106, 0x1118, 0xa88c, ++ 0x9206, 0x0120, 0xa992, 0xaa8e, 0x9085, 0x0001, 0x002e, 0x001e, ++ 0x0005, 0x00b6, 0x00d6, 0x0036, 0x080c, 0xbb17, 0x0904, 0xc147, ++ 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, ++ 0x6310, 0x00c6, 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, ++ 0x080c, 0x645e, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0xaa96, 0xa99a, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0031, 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, ++ 0x080c, 0x0f68, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, ++ 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f68, 0x00ce, 0x0090, ++ 0xaa96, 0x3918, 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, ++ 0x0110, 0xa89b, 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, ++ 0x00ff, 0xa89e, 0x080c, 0x687f, 0x6017, 0x0000, 0x009e, 0x003e, ++ 0x00de, 0x00be, 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, ++ 0x00f6, 0x6214, 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, ++ 0x0000, 0x11a0, 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x2663, ++ 0x2118, 0x831f, 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, ++ 0x7c3c, 0x2011, 0x8018, 0x080c, 0x48d9, 0x00a8, 0x9096, 0x0001, ++ 0x1148, 0x89ff, 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, ++ 0xa8aa, 0x0048, 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, ++ 0xa8a6, 0x783c, 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, ++ 0x002e, 0x0005, 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, ++ 0x6a38, 0x0008, 0x6a2c, 0x080c, 0xbb05, 0x01f0, 0x2260, 0x6120, ++ 0x9186, 0x0003, 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, ++ 0x0140, 0x683c, 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, ++ 0x0020, 0x6008, 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, ++ 0x001e, 0x002e, 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, ++ 0xd1cc, 0x0188, 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, ++ 0x918c, 0x0f00, 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xb227, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, ++ 0x0036, 0x901e, 0x0499, 0x01e0, 0x080c, 0xbb17, 0x01c8, 0x080c, ++ 0xbd00, 0x6037, 0x4000, 0x6014, 0x6017, 0x0000, 0x0096, 0x2048, ++ 0xa87c, 0x080c, 0xbd1d, 0x1118, 0x080c, 0xa7c0, 0x0040, 0xa867, ++ 0x0103, 0xa877, 0x0000, 0x83ff, 0x1129, 0x080c, 0x688c, 0x009e, ++ 0x003e, 0x0005, 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, ++ 0xa882, 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, ++ 0x0005, 0x080c, 0xbe0c, 0xa877, 0x0000, 0x0005, 0x2001, 0x1810, ++ 0x2004, 0xd0ec, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0f4, ++ 0x000e, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0e4, 0x000e, ++ 0x0005, 0x0036, 0x0046, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, ++ 0x2021, 0x0007, 0x080c, 0x4a76, 0x004e, 0x003e, 0x0005, 0x0c51, ++ 0x1d81, 0x0005, 0x2001, 0x1957, 0x2004, 0x601a, 0x0005, 0x2001, ++ 0x1959, 0x2004, 0x6042, 0x0005, 0x080c, 0x9e32, 0x0804, 0x8973, ++ 0x00b6, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0db4, 0x001b, ++ 0x006e, 0x00be, 0x0005, 0xc253, 0xc92b, 0xca86, 0xc253, 0xc253, ++ 0xc253, 0xc253, 0xc253, 0xc28a, 0xcb08, 0xc253, 0xc253, 0xc253, ++ 0xc253, 0xc253, 0xc253, 0x080c, 0x0db4, 0x0066, 0x6000, 0x90b2, ++ 0x0016, 0x1a0c, 0x0db4, 0x0013, 0x006e, 0x0005, 0xc26e, 0xd070, ++ 0xc26e, 0xc26e, 0xc26e, 0xc26e, 0xc26e, 0xc26e, 0xd01d, 0xd0c4, ++ 0xc26e, 0xd6b4, 0xd6ea, 0xd6b4, 0xd6ea, 0xc26e, 0x080c, 0x0db4, ++ 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0db4, 0x6000, 0x000a, 0x0005, ++ 0xc288, 0xcce5, 0xcdd5, 0xcdf7, 0xceb6, 0xc288, 0xcf94, 0xcf3e, ++ 0xcb14, 0xcff3, 0xd008, 0xc288, 0xc288, 0xc288, 0xc288, 0xc288, ++ 0x080c, 0x0db4, 0x91b2, 0x0053, 0x1a0c, 0x0db4, 0x2100, 0x91b2, ++ 0x0040, 0x1a04, 0xc6cc, 0x0002, 0xc2d4, 0xc4bd, 0xc2d4, 0xc2d4, ++ 0xc2d4, 0xc4c6, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, ++ 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, ++ 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d6, 0xc339, 0xc348, 0xc3ac, 0xc3d7, ++ 0xc44f, 0xc4a8, 0xc2d4, 0xc2d4, 0xc4c9, 0xc2d4, 0xc2d4, 0xc4de, ++ 0xc4eb, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc2d4, 0xc56e, 0xc2d4, ++ 0xc2d4, 0xc582, 0xc2d4, 0xc2d4, 0xc53d, 0xc2d4, 0xc2d4, 0xc2d4, ++ 0xc59a, 0xc2d4, 0xc2d4, 0xc2d4, 0xc617, 0xc2d4, 0xc2d4, 0xc2d4, ++ 0xc2d4, 0xc2d4, 0xc2d4, 0xc694, 0x080c, 0x0db4, 0x080c, 0x6520, ++ 0x1150, 0x2001, 0x1836, 0x2004, 0xd0cc, 0x1128, 0x9084, 0x0009, ++ 0x9086, 0x0008, 0x1140, 0x6007, 0x0009, 0x602f, 0x0009, 0x6017, ++ 0x0000, 0x0804, 0xc4b6, 0x080c, 0x6509, 0x00e6, 0x00c6, 0x0036, ++ 0x0026, 0x0016, 0x6210, 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, ++ 0x080c, 0x8571, 0x0076, 0x903e, 0x080c, 0x8469, 0x2c08, 0x080c, ++ 0xd29b, 0x007e, 0x001e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, ++ 0x6610, 0x2658, 0x080c, 0x624d, 0xbe04, 0x9684, 0x00ff, 0x9082, ++ 0x0006, 0x1268, 0x0016, 0x0026, 0x6210, 0x00b6, 0x2258, 0xbaa0, ++ 0x00be, 0x2c08, 0x080c, 0xd862, 0x002e, 0x001e, 0x1178, 0x080c, ++ 0xd1ce, 0x1904, 0xc3a4, 0x080c, 0xd16a, 0x1120, 0x6007, 0x0008, ++ 0x0804, 0xc4b6, 0x6007, 0x0009, 0x0804, 0xc4b6, 0x080c, 0xd3c5, ++ 0x0128, 0x080c, 0xd1ce, 0x0d78, 0x0804, 0xc3a4, 0x6017, 0x1900, ++ 0x0c88, 0x080c, 0x30fd, 0x1904, 0xc6c9, 0x6106, 0x080c, 0xd11f, ++ 0x6007, 0x0006, 0x0804, 0xc4b6, 0x6007, 0x0007, 0x0804, 0xc4b6, ++ 0x080c, 0xd726, 0x1904, 0xc6c9, 0x080c, 0x30fd, 0x1904, 0xc6c9, ++ 0x00d6, 0x6610, 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, ++ 0x1220, 0x2001, 0x0001, 0x080c, 0x617b, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0006, 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4, ++ 0x00ff, 0x9686, 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686, ++ 0x0005, 0x0110, 0x00de, 0x0480, 0x00e6, 0x2071, 0x0260, 0x7034, ++ 0x9084, 0x0003, 0x1140, 0x7034, 0x9082, 0x0014, 0x0220, 0x7030, ++ 0x9084, 0x0003, 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, ++ 0x00b0, 0x00ee, 0x080c, 0xd231, 0x1190, 0x9686, 0x0006, 0x1140, ++ 0x0026, 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x3023, 0x002e, ++ 0x080c, 0x62d9, 0x6007, 0x000a, 0x00de, 0x0804, 0xc4b6, 0x6007, ++ 0x000b, 0x00de, 0x0804, 0xc4b6, 0x080c, 0x2fda, 0x080c, 0xc227, ++ 0x6007, 0x0001, 0x0804, 0xc4b6, 0x080c, 0xd726, 0x1904, 0xc6c9, ++ 0x080c, 0x30fd, 0x1904, 0xc6c9, 0x2071, 0x0260, 0x7034, 0x90b4, ++ 0x0003, 0x1948, 0x90b2, 0x0014, 0x0a30, 0x7030, 0x9084, 0x0003, ++ 0x1910, 0x6610, 0x2658, 0xbe04, 0x9686, 0x0707, 0x09e8, 0x0026, ++ 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x3023, 0x002e, 0x6007, ++ 0x000c, 0x2001, 0x0001, 0x080c, 0xd842, 0x0804, 0xc4b6, 0x080c, ++ 0x6520, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086, ++ 0x0008, 0x1110, 0x0804, 0xc2e3, 0x080c, 0x6509, 0x6610, 0x2658, ++ 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x06c0, 0x1138, 0x0026, ++ 0x2001, 0x0006, 0x080c, 0x61bb, 0x002e, 0x0050, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xc3a4, ++ 0x080c, 0xd23e, 0x1120, 0x6007, 0x000e, 0x0804, 0xc4b6, 0x0046, ++ 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x2fda, 0x080c, 0xc227, ++ 0x004e, 0x0016, 0x9006, 0x2009, 0x1854, 0x210c, 0x0048, 0x2009, ++ 0x0029, 0x080c, 0xd52a, 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802, ++ 0x001e, 0x004e, 0x6007, 0x0001, 0x0804, 0xc4b6, 0x2001, 0x0001, ++ 0x080c, 0x617b, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, ++ 0x2019, 0x1805, 0x2011, 0x0270, 0x080c, 0xadf9, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, 0x9682, ++ 0x0004, 0x0a04, 0xc3a4, 0x9682, 0x0007, 0x0a04, 0xc400, 0x0804, ++ 0xc3a4, 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xc4b6, 0x080c, ++ 0x6520, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086, ++ 0x0008, 0x1110, 0x0804, 0xc2e3, 0x080c, 0x6509, 0x6610, 0x2658, ++ 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0690, 0x0150, 0x96b4, ++ 0xff00, 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, ++ 0xc3a4, 0x080c, 0xd26c, 0x1130, 0x080c, 0xd16a, 0x1118, 0x6007, ++ 0x0010, 0x04e0, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, ++ 0x2fda, 0x080c, 0xc227, 0x004e, 0x0016, 0x9006, 0x2009, 0x1854, ++ 0x210c, 0x0048, 0x2009, 0x0029, 0x080c, 0xd52a, 0x6010, 0x2058, ++ 0xb800, 0xc0e5, 0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, ++ 0x080c, 0xd3c5, 0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, ++ 0x0980, 0x0804, 0xc3a4, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, ++ 0x080c, 0x30fd, 0x1904, 0xc6c9, 0x080c, 0xd726, 0x1904, 0xc6c9, ++ 0x080c, 0xc869, 0x1904, 0xc3a4, 0x6007, 0x0012, 0x6003, 0x0001, ++ 0x080c, 0x8439, 0x080c, 0x8973, 0x0005, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x0cb0, 0x6007, 0x0005, ++ 0x0c68, 0x080c, 0xd726, 0x1904, 0xc6c9, 0x080c, 0x30fd, 0x1904, ++ 0xc6c9, 0x080c, 0xc869, 0x1904, 0xc3a4, 0x6007, 0x0020, 0x6003, ++ 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x0005, 0x080c, 0x30fd, ++ 0x1904, 0xc6c9, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x8439, ++ 0x080c, 0x8973, 0x0005, 0x080c, 0xd726, 0x1904, 0xc6c9, 0x080c, ++ 0x30fd, 0x1904, 0xc6c9, 0x080c, 0xc869, 0x1904, 0xc3a4, 0x0016, ++ 0x0026, 0x00e6, 0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, ++ 0x2c08, 0x080c, 0xbb05, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, ++ 0x1188, 0x6010, 0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, ++ 0x7240, 0x2c08, 0x9006, 0x080c, 0xd4fc, 0x1180, 0x7244, 0x9286, ++ 0xffff, 0x01b0, 0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, ++ 0x9296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, ++ 0x0007, 0x1d80, 0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0x9e32, ++ 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x8439, 0x080c, ++ 0x8973, 0x00ee, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, ++ 0x617b, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0276, 0x080c, 0xadf9, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xc4b6, 0x080c, 0xaa61, ++ 0x080c, 0x6fb2, 0x1190, 0x0006, 0x0026, 0x0036, 0x080c, 0x6fcc, ++ 0x1138, 0x080c, 0x7296, 0x080c, 0x5cd1, 0x080c, 0x6ee4, 0x0010, ++ 0x080c, 0x6f8a, 0x003e, 0x002e, 0x000e, 0x0005, 0x080c, 0x30fd, ++ 0x1904, 0xc6c9, 0x080c, 0xc869, 0x1904, 0xc3a4, 0x6106, 0x080c, ++ 0xc885, 0x1120, 0x6007, 0x002b, 0x0804, 0xc4b6, 0x6007, 0x002c, ++ 0x0804, 0xc4b6, 0x080c, 0xd726, 0x1904, 0xc6c9, 0x080c, 0x30fd, ++ 0x1904, 0xc6c9, 0x080c, 0xc869, 0x1904, 0xc3a4, 0x6106, 0x080c, ++ 0xc88a, 0x1120, 0x6007, 0x002e, 0x0804, 0xc4b6, 0x6007, 0x002f, ++ 0x0804, 0xc4b6, 0x080c, 0x30fd, 0x1904, 0xc6c9, 0x00e6, 0x00d6, ++ 0x00c6, 0x6010, 0x2058, 0xb904, 0x9184, 0x00ff, 0x9086, 0x0006, ++ 0x0158, 0x9184, 0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, ++ 0x00de, 0x00ee, 0x0804, 0xc4bd, 0x080c, 0x538a, 0xd0e4, 0x0904, ++ 0xc614, 0x2071, 0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, ++ 0x720c, 0x080c, 0x655e, 0x0140, 0x6010, 0x2058, 0xb810, 0x9106, ++ 0x1118, 0xb814, 0x9206, 0x0510, 0x080c, 0x655a, 0x15b8, 0x2069, ++ 0x1800, 0x687c, 0x9206, 0x1590, 0x6878, 0x9106, 0x1578, 0x7210, ++ 0x080c, 0xbb05, 0x0590, 0x080c, 0xc754, 0x0578, 0x080c, 0xd5a6, ++ 0x0560, 0x622e, 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x83f1, ++ 0x080c, 0x8973, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, ++ 0xffff, 0x0150, 0x080c, 0xbb05, 0x01c0, 0x9280, 0x0002, 0x2004, ++ 0x7110, 0x9106, 0x1190, 0x08e0, 0x7210, 0x2c08, 0x9085, 0x0001, ++ 0x080c, 0xd4fc, 0x2c10, 0x2160, 0x0140, 0x0890, 0x6007, 0x0037, ++ 0x602f, 0x0009, 0x6017, 0x1500, 0x08b8, 0x6007, 0x0037, 0x602f, ++ 0x0003, 0x6017, 0x1700, 0x0880, 0x6007, 0x0012, 0x0868, 0x080c, ++ 0x30fd, 0x1904, 0xc6c9, 0x6010, 0x2058, 0xb804, 0x9084, 0xff00, ++ 0x8007, 0x9086, 0x0006, 0x1904, 0xc4bd, 0x00e6, 0x00d6, 0x00c6, ++ 0x080c, 0x538a, 0xd0e4, 0x0904, 0xc68c, 0x2069, 0x1800, 0x2071, ++ 0x026c, 0x7008, 0x603a, 0x720c, 0x623e, 0x9286, 0xffff, 0x1150, ++ 0x7208, 0x00c6, 0x2c08, 0x9085, 0x0001, 0x080c, 0xd4fc, 0x2c10, ++ 0x00ce, 0x05e8, 0x080c, 0xbb05, 0x05d0, 0x7108, 0x9280, 0x0002, ++ 0x2004, 0x9106, 0x15a0, 0x00c6, 0x0026, 0x2260, 0x080c, 0xb73d, ++ 0x002e, 0x00ce, 0x7118, 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, ++ 0x0178, 0x9186, 0x0005, 0x0118, 0x9186, 0x0007, 0x1198, 0x9280, ++ 0x0005, 0x2004, 0x9005, 0x0170, 0x080c, 0xc754, 0x0904, 0xc60d, ++ 0x0056, 0x7510, 0x7614, 0x080c, 0xd5bf, 0x005e, 0x00ce, 0x00de, ++ 0x00ee, 0x0005, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, ++ 0x6003, 0x0001, 0x080c, 0x83f1, 0x080c, 0x8973, 0x0c78, 0x6007, ++ 0x003b, 0x602f, 0x0003, 0x6017, 0x0300, 0x6003, 0x0001, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x0c10, 0x6007, 0x003b, 0x602f, 0x000b, ++ 0x6017, 0x0000, 0x0804, 0xc5e4, 0x00e6, 0x0026, 0x080c, 0x6520, ++ 0x0550, 0x080c, 0x6509, 0x080c, 0xd798, 0x1518, 0x2071, 0x1800, ++ 0x70d8, 0x9085, 0x0003, 0x70da, 0x00f6, 0x2079, 0x0100, 0x72ac, ++ 0x9284, 0x00ff, 0x707a, 0x78e6, 0x9284, 0xff00, 0x727c, 0x9205, ++ 0x707e, 0x78ea, 0x00fe, 0x70e3, 0x0000, 0x080c, 0x655e, 0x0120, ++ 0x2011, 0x19d1, 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2dbb, ++ 0x0010, 0x080c, 0xd7ca, 0x002e, 0x00ee, 0x080c, 0x9e32, 0x0804, ++ 0xc4bc, 0x080c, 0x9e32, 0x0005, 0x2600, 0x0002, 0xc6e0, 0xc6e0, ++ 0xc6e0, 0xc6e0, 0xc6e0, 0xc6e2, 0xc6e0, 0xc6e0, 0xc6e0, 0xc6e0, ++ 0xc6ff, 0xc6e0, 0xc6e0, 0xc6e0, 0xc711, 0xc71e, 0xc74f, 0xc6e0, ++ 0x080c, 0x0db4, 0x080c, 0xd726, 0x1d20, 0x080c, 0x30fd, 0x1d08, ++ 0x080c, 0xc869, 0x1148, 0x7038, 0x6016, 0x6007, 0x0045, 0x6003, ++ 0x0001, 0x080c, 0x8439, 0x0005, 0x080c, 0x2fda, 0x080c, 0xc227, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x8439, 0x0005, 0x080c, ++ 0xd726, 0x1938, 0x080c, 0x30fd, 0x1920, 0x080c, 0xc869, 0x1d60, ++ 0x703c, 0x6016, 0x6007, 0x004a, 0x6003, 0x0001, 0x080c, 0x8439, ++ 0x0005, 0x080c, 0xc771, 0x0904, 0xc6c9, 0x6007, 0x004e, 0x6003, ++ 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x0005, 0x6007, 0x004f, ++ 0x6017, 0x0000, 0x7134, 0x918c, 0x00ff, 0x81ff, 0x0508, 0x9186, ++ 0x0001, 0x1160, 0x7140, 0x2001, 0x198e, 0x2004, 0x9106, 0x11b0, ++ 0x7144, 0x2001, 0x198f, 0x2004, 0x9106, 0x0190, 0x9186, 0x0002, ++ 0x1168, 0x2011, 0x0276, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, ++ 0x2019, 0x000a, 0x080c, 0xae0d, 0x009e, 0x0110, 0x6017, 0x0001, ++ 0x6003, 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x0005, 0x6007, ++ 0x0050, 0x703c, 0x6016, 0x0ca0, 0x0016, 0x00e6, 0x2071, 0x0260, ++ 0x00b6, 0x00c6, 0x2260, 0x6010, 0x2058, 0xb8bc, 0xd084, 0x0150, ++ 0x7128, 0x6048, 0x9106, 0x1120, 0x712c, 0x6044, 0x9106, 0x0110, ++ 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x00be, 0x00ee, 0x001e, ++ 0x0005, 0x0016, 0x0096, 0x0086, 0x00e6, 0x01c6, 0x01d6, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0x1800, 0x708c, 0x908a, 0x00f9, 0x16e8, ++ 0x20e1, 0x0000, 0x2001, 0x1971, 0x2003, 0x0000, 0x080c, 0x1004, ++ 0x05a0, 0x2900, 0x6016, 0x708c, 0x8004, 0xa816, 0x908a, 0x001e, ++ 0x02d0, 0xa833, 0x001e, 0x20a9, 0x001e, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x001b, 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x0471, ++ 0x001e, 0x2940, 0x080c, 0x1004, 0x01c0, 0x2900, 0xa006, 0x2100, ++ 0x81ff, 0x0180, 0x0c18, 0xa832, 0x20a8, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x001b, 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x00b1, ++ 0x001e, 0x0000, 0x9085, 0x0001, 0x0048, 0x2071, 0x1800, 0x708f, ++ 0x0000, 0x6014, 0x2048, 0x080c, 0x0f9d, 0x9006, 0x012e, 0x01de, ++ 0x01ce, 0x00ee, 0x008e, 0x009e, 0x001e, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8, 0x080c, 0x2241, ++ 0x2099, 0x026c, 0x2001, 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, ++ 0x4003, 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x2241, ++ 0x2099, 0x0260, 0x0ca8, 0x080c, 0x2241, 0x2061, 0x1971, 0x6004, ++ 0x2098, 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0048, ++ 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x2241, 0x2099, 0x0260, ++ 0x0ca8, 0x2061, 0x1971, 0x2019, 0x0280, 0x3300, 0x931e, 0x0110, ++ 0x6006, 0x0020, 0x2001, 0x0260, 0x6006, 0x8108, 0x2162, 0x9292, ++ 0x0021, 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, ++ 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x81ff, ++ 0x11b8, 0x080c, 0x2259, 0x20a1, 0x024c, 0x2001, 0x0014, 0x3518, ++ 0x9312, 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8, 0x4003, 0x82ff, ++ 0x01f8, 0x22a8, 0x8108, 0x080c, 0x2259, 0x20a1, 0x0240, 0x0c98, ++ 0x080c, 0x2259, 0x2061, 0x1974, 0x6004, 0x20a0, 0x6008, 0x3518, ++ 0x9312, 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8, 0x4003, 0x82ff, ++ 0x0138, 0x22a8, 0x8108, 0x080c, 0x2259, 0x20a1, 0x0240, 0x0c98, ++ 0x2061, 0x1974, 0x2019, 0x0260, 0x3400, 0x931e, 0x0110, 0x6006, ++ 0x0020, 0x2001, 0x0240, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, ++ 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x00b6, 0x0066, 0x6610, 0x2658, 0xbe04, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0006, 0x0170, 0x9686, 0x0004, 0x0158, 0xbe04, ++ 0x96b4, 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686, 0x0004, 0x0110, ++ 0x9085, 0x0001, 0x006e, 0x00be, 0x0005, 0x00d6, 0x080c, 0xc901, ++ 0x00de, 0x0005, 0x00d6, 0x080c, 0xc90e, 0x1520, 0x680c, 0x908c, ++ 0xff00, 0x6820, 0x9084, 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e, ++ 0xd1e4, 0x0130, 0x9006, 0x080c, 0xd842, 0x2009, 0x0001, 0x0078, ++ 0xd1ec, 0x0180, 0x6920, 0x918c, 0x00ff, 0x6824, 0x080c, 0x2663, ++ 0x1148, 0x2001, 0x0001, 0x080c, 0xd842, 0x2110, 0x900e, 0x080c, ++ 0x3023, 0x0018, 0x9085, 0x0001, 0x0008, 0x9006, 0x00de, 0x0005, ++ 0x00b6, 0x00c6, 0x080c, 0x9e7f, 0x05a8, 0x0016, 0x0026, 0x00c6, ++ 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2663, 0x1578, ++ 0x080c, 0x61de, 0x1560, 0xbe12, 0xbd16, 0x00ce, 0x002e, 0x001e, ++ 0x2b00, 0x6012, 0x080c, 0xd726, 0x11d8, 0x080c, 0x30fd, 0x11c0, ++ 0x080c, 0xc869, 0x0510, 0x2001, 0x0007, 0x080c, 0x618f, 0x2001, ++ 0x0007, 0x080c, 0x61bb, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, ++ 0x0001, 0x6003, 0x0001, 0x080c, 0x8439, 0x080c, 0x8973, 0x0010, ++ 0x080c, 0x9e32, 0x9085, 0x0001, 0x00ce, 0x00be, 0x0005, 0x080c, ++ 0x9e32, 0x00ce, 0x002e, 0x001e, 0x0ca8, 0x080c, 0x9e32, 0x9006, ++ 0x0c98, 0x2069, 0x026d, 0x6800, 0x9082, 0x0010, 0x1228, 0x6017, ++ 0x0000, 0x9085, 0x0001, 0x0008, 0x9006, 0x0005, 0x6017, 0x0000, ++ 0x2069, 0x026c, 0x6808, 0x9084, 0xff00, 0x9086, 0x0800, 0x1190, ++ 0x6904, 0x9186, 0x0018, 0x0118, 0x9186, 0x0014, 0x1158, 0x810f, ++ 0x6800, 0x9084, 0x00ff, 0x910d, 0x615a, 0x908e, 0x0014, 0x0110, ++ 0x908e, 0x0010, 0x0005, 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0db4, ++ 0x91b6, 0x0013, 0x1130, 0x2008, 0x91b2, 0x0040, 0x1a04, 0xca56, ++ 0x0092, 0x91b6, 0x0027, 0x0120, 0x91b6, 0x0014, 0x190c, 0x0db4, ++ 0x2001, 0x0007, 0x080c, 0x61bb, 0x080c, 0x886e, 0x080c, 0x9e62, ++ 0x080c, 0x8973, 0x0005, 0xc98b, 0xc98d, 0xc98b, 0xc98b, 0xc98b, ++ 0xc98d, 0xc99c, 0xca4f, 0xc9ee, 0xca4f, 0xca00, 0xca4f, 0xc99c, ++ 0xca4f, 0xca47, 0xca4f, 0xca47, 0xca4f, 0xca4f, 0xc98b, 0xc98b, ++ 0xc98b, 0xc98b, 0xc98b, 0xc98b, 0xc98b, 0xc98b, 0xc98b, 0xc98b, ++ 0xc98b, 0xc98d, 0xc98b, 0xca4f, 0xc98b, 0xc98b, 0xca4f, 0xc98b, ++ 0xca4c, 0xca4f, 0xc98b, 0xc98b, 0xc98b, 0xc98b, 0xca4f, 0xca4f, ++ 0xc98b, 0xca4f, 0xca4f, 0xc98b, 0xc997, 0xc98b, 0xc98b, 0xc98b, ++ 0xc98b, 0xca4b, 0xca4f, 0xc98b, 0xc98b, 0xca4f, 0xca4f, 0xc98b, ++ 0xc98b, 0xc98b, 0xc98b, 0x080c, 0x0db4, 0x080c, 0x886e, 0x080c, ++ 0xc22a, 0x6003, 0x0002, 0x080c, 0x8973, 0x0804, 0xca55, 0x9006, ++ 0x080c, 0x617b, 0x0804, 0xca4f, 0x080c, 0x655a, 0x1904, 0xca4f, ++ 0x9006, 0x080c, 0x617b, 0x6010, 0x2058, 0xb810, 0x9086, 0x00ff, ++ 0x1140, 0x00f6, 0x2079, 0x1800, 0x78a4, 0x8000, 0x78a6, 0x00fe, ++ 0x0428, 0x6010, 0x2058, 0xb8b0, 0x9005, 0x1178, 0x080c, 0xc212, ++ 0x1904, 0xca4f, 0x0036, 0x0046, 0xbba0, 0x2021, 0x0007, 0x080c, ++ 0x4a76, 0x004e, 0x003e, 0x0804, 0xca4f, 0x080c, 0x312e, 0x1904, ++ 0xca4f, 0x2001, 0x1800, 0x2004, 0x9086, 0x0002, 0x1138, 0x00f6, ++ 0x2079, 0x1800, 0x78a4, 0x8000, 0x78a6, 0x00fe, 0x2001, 0x0002, ++ 0x080c, 0x618f, 0x080c, 0x886e, 0x6023, 0x0001, 0x6003, 0x0001, ++ 0x6007, 0x0002, 0x080c, 0x8439, 0x080c, 0x8973, 0x6110, 0x2158, ++ 0x2009, 0x0001, 0x080c, 0x8046, 0x0804, 0xca55, 0x6610, 0x2658, ++ 0xbe04, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0904, 0xca4f, ++ 0x9686, 0x0004, 0x0904, 0xca4f, 0x2001, 0x0004, 0x0804, 0xca4d, ++ 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, ++ 0x6010, 0x2058, 0xbba0, 0x2021, 0x0006, 0x080c, 0x4a76, 0x004e, ++ 0x003e, 0x2001, 0x0006, 0x080c, 0xca73, 0x6610, 0x2658, 0xbe04, ++ 0x0066, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x006e, 0x0168, ++ 0x2001, 0x0006, 0x080c, 0x61bb, 0x9284, 0x00ff, 0x908e, 0x0007, ++ 0x1120, 0x2001, 0x0006, 0x080c, 0x618f, 0x080c, 0x655a, 0x11f8, ++ 0x2001, 0x1836, 0x2004, 0xd0a4, 0x01d0, 0xbe04, 0x96b4, 0x00ff, ++ 0x9686, 0x0006, 0x01a0, 0x00f6, 0x2079, 0x1800, 0x78a4, 0x8000, ++ 0x78a6, 0x00fe, 0x0804, 0xc9d6, 0x2001, 0x0004, 0x0030, 0x2001, ++ 0x0006, 0x0449, 0x0020, 0x0018, 0x0010, 0x080c, 0x61bb, 0x080c, ++ 0x886e, 0x080c, 0x9e32, 0x080c, 0x8973, 0x0005, 0x2600, 0x0002, ++ 0xca6a, 0xca6a, 0xca6a, 0xca6a, 0xca6a, 0xca6c, 0xca6a, 0xca6a, ++ 0xca6a, 0xca6a, 0xca6c, 0xca6a, 0xca6a, 0xca6a, 0xca6c, 0xca6c, ++ 0xca6c, 0xca6c, 0x080c, 0x0db4, 0x080c, 0x886e, 0x080c, 0x9e32, ++ 0x080c, 0x8973, 0x0005, 0x0016, 0x00b6, 0x00d6, 0x6110, 0x2158, ++ 0xb900, 0xd184, 0x0138, 0x080c, 0x618f, 0x9006, 0x080c, 0x617b, ++ 0x080c, 0x3003, 0x00de, 0x00be, 0x001e, 0x0005, 0x6610, 0x2658, ++ 0xb804, 0x9084, 0xff00, 0x8007, 0x90b2, 0x000c, 0x1a0c, 0x0db4, ++ 0x91b6, 0x0015, 0x1110, 0x003b, 0x0028, 0x91b6, 0x0016, 0x190c, ++ 0x0db4, 0x006b, 0x0005, 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, ++ 0xa8a1, 0xcaf2, 0xcab3, 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, ++ 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, 0xa8a1, 0xcaf2, 0xcaf9, 0xa8a1, ++ 0xa8a1, 0xa8a1, 0xa8a1, 0x00f6, 0x080c, 0x655a, 0x11d8, 0x080c, ++ 0xc212, 0x11c0, 0x6010, 0x905d, 0x01a8, 0xb8b0, 0x9005, 0x0190, ++ 0x9006, 0x080c, 0x617b, 0x2001, 0x0002, 0x080c, 0x618f, 0x6023, ++ 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x8439, 0x080c, ++ 0x8973, 0x00f0, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x2663, 0x11b0, 0x080c, 0x623e, 0x0118, 0x080c, 0x9e32, 0x0080, ++ 0xb810, 0x0006, 0xb814, 0x0006, 0xb8b0, 0x0006, 0x080c, 0x5ceb, ++ 0x000e, 0xb8b2, 0x000e, 0xb816, 0x000e, 0xb812, 0x080c, 0x9e32, ++ 0x00fe, 0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9e32, ++ 0x0005, 0x080c, 0xac85, 0x1148, 0x6003, 0x0001, 0x6007, 0x0001, ++ 0x080c, 0x8439, 0x080c, 0x8973, 0x0010, 0x080c, 0x9e32, 0x0005, ++ 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0db4, 0x080c, 0x886e, 0x080c, ++ 0x9e62, 0x080c, 0x8973, 0x0005, 0x9182, 0x0040, 0x0002, 0xcb2a, ++ 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2c, 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, ++ 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, 0xcb2a, ++ 0xcb2a, 0xcb2a, 0x080c, 0x0db4, 0x0096, 0x00b6, 0x00d6, 0x00e6, ++ 0x00f6, 0x0046, 0x0026, 0x6210, 0x2258, 0xb8ac, 0x9005, 0x11a8, ++ 0x6106, 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xcb92, ++ 0x080c, 0xd836, 0x1170, 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, ++ 0x2011, 0x0200, 0x080c, 0x822f, 0x0020, 0x9026, 0x080c, 0xd76b, ++ 0x0c38, 0x080c, 0x0feb, 0x090c, 0x0db4, 0x6003, 0x0007, 0xa867, ++ 0x010d, 0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, 0xa88e, 0x6008, ++ 0xa8e2, 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, 0x0016, 0xa876, ++ 0xa87f, 0x0000, 0xa883, 0x0000, 0xa887, 0x0036, 0x080c, 0x688c, ++ 0x001e, 0x080c, 0xd836, 0x1904, 0xcbf2, 0x9486, 0x2000, 0x1130, ++ 0x2019, 0x0017, 0x080c, 0xd4a6, 0x0804, 0xcbf2, 0x9486, 0x0200, ++ 0x1120, 0x080c, 0xd442, 0x0804, 0xcbf2, 0x9486, 0x0400, 0x0120, ++ 0x9486, 0x1000, 0x1904, 0xcbf2, 0x2019, 0x0002, 0x080c, 0xd45d, ++ 0x0804, 0xcbf2, 0x2069, 0x1a41, 0x6a00, 0xd284, 0x0904, 0xcc5c, ++ 0x9284, 0x0300, 0x1904, 0xcc55, 0x6804, 0x9005, 0x0904, 0xcc3d, ++ 0x2d78, 0x6003, 0x0007, 0x080c, 0x1004, 0x0904, 0xcbfe, 0x7800, ++ 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x2001, ++ 0x180f, 0x2004, 0xd084, 0x1904, 0xcc60, 0x9006, 0xa802, 0xa867, ++ 0x0116, 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, 0x6010, 0x2058, ++ 0xb8a0, 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, 0xb92c, 0xa9be, ++ 0xb930, 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, 0x7044, 0x9084, ++ 0x0003, 0x9080, 0xcbfa, 0x2005, 0xa87e, 0x20a9, 0x000a, 0x2001, ++ 0x0270, 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080, ++ 0x20e1, 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, 0x4003, 0x200b, ++ 0x0000, 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, 0x200c, 0xa9ae, ++ 0x080c, 0x688c, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x00be, ++ 0x009e, 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x1810, ++ 0x2004, 0xd084, 0x0120, 0x080c, 0x0feb, 0x1904, 0xcba7, 0x6017, ++ 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x83f1, 0x080c, ++ 0x8973, 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086, ++ 0x1200, 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c, ++ 0xf700, 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x0828, 0x6868, 0x602e, 0x686c, ++ 0x6032, 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x0804, 0xcbf2, 0x2001, 0x180e, 0x2004, ++ 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x48d9, 0x6017, 0xf300, ++ 0x0010, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x0804, 0xcbf2, 0x6017, 0xf500, 0x0c98, ++ 0x6017, 0xf600, 0x0804, 0xcc12, 0x6017, 0xf200, 0x0804, 0xcc12, ++ 0xa867, 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, 0x2c00, 0xa87a, ++ 0x7044, 0x9084, 0x0003, 0x9080, 0xcbfa, 0x2005, 0xa87e, 0x2928, ++ 0x6010, 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, 0xb82c, 0xa88e, ++ 0xb830, 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, 0x2009, 0x0205, ++ 0x2104, 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, 0x2011, 0x0210, ++ 0x2214, 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, 0x1a0c, 0x0db4, ++ 0x8210, 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0029, 0x20a0, 0x2011, 0xccdc, 0x2041, 0x0001, 0x223d, ++ 0x9784, 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, 0x4003, 0x931a, ++ 0x0530, 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, 0x2001, 0x0260, ++ 0x2098, 0x0c68, 0x2950, 0x080c, 0x1004, 0x0170, 0x2900, 0xb002, ++ 0xa867, 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, 0x902d, 0x0118, ++ 0x080c, 0x101d, 0x0cc8, 0x080c, 0x101d, 0x0804, 0xcbfe, 0x2548, ++ 0x8847, 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, 0x200b, 0x0000, ++ 0x080c, 0xd4d5, 0x0804, 0xcbf2, 0x8010, 0x0004, 0x801a, 0x0006, ++ 0x8018, 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, 0x0013, 0x1160, ++ 0x6004, 0x908a, 0x0054, 0x1a0c, 0x0db4, 0x9082, 0x0040, 0x0a0c, ++ 0x0db4, 0x2008, 0x0804, 0xcd8d, 0x9186, 0x0051, 0x0108, 0x00c0, ++ 0x2001, 0x0109, 0x2004, 0xd084, 0x0904, 0xcd3e, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x82dd, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0x6000, 0x9086, 0x0002, 0x1580, 0x0804, 0xcdd5, ++ 0x9186, 0x0027, 0x0530, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014, ++ 0x0500, 0x190c, 0x0db4, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, ++ 0x00c6, 0x0126, 0x2091, 0x2800, 0x00c6, 0x2061, 0x0100, 0x0006, ++ 0x0016, 0x0026, 0x080c, 0x82dd, 0x002e, 0x001e, 0x000e, 0x00ce, ++ 0x012e, 0x00ce, 0x6000, 0x9086, 0x0004, 0x190c, 0x0db4, 0x0804, ++ 0xceb6, 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, 0x080c, 0x9ec7, ++ 0x0005, 0xcd54, 0xcd56, 0xcd56, 0xcd7d, 0xcd54, 0xcd54, 0xcd54, ++ 0xcd54, 0xcd54, 0xcd54, 0xcd54, 0xcd54, 0xcd54, 0xcd54, 0xcd54, ++ 0xcd54, 0xcd54, 0xcd54, 0xcd54, 0x080c, 0x0db4, 0x080c, 0x886e, ++ 0x080c, 0x8973, 0x0036, 0x0096, 0x6014, 0x904d, 0x01d8, 0x080c, ++ 0xbb17, 0x01c0, 0x6003, 0x0002, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, 0xd4d5, 0x6017, ++ 0x0000, 0x6018, 0x9005, 0x1120, 0x2001, 0x1958, 0x2004, 0x601a, ++ 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x0096, 0x080c, 0x886e, ++ 0x080c, 0x8973, 0x080c, 0xbb17, 0x0120, 0x6014, 0x2048, 0x080c, ++ 0x101d, 0x080c, 0x9e62, 0x009e, 0x0005, 0x0002, 0xcda1, 0xcdb8, ++ 0xcda3, 0xcdcf, 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, ++ 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, 0xcda1, ++ 0xcda1, 0x080c, 0x0db4, 0x0096, 0x080c, 0x886e, 0x6014, 0x2048, ++ 0xa87c, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c, ++ 0x9eac, 0x0010, 0x6003, 0x0004, 0x080c, 0x8973, 0x009e, 0x0005, ++ 0x080c, 0x886e, 0x080c, 0xbb17, 0x0138, 0x6114, 0x0096, 0x2148, ++ 0xa97c, 0x009e, 0xd1ec, 0x1138, 0x080c, 0x8204, 0x080c, 0x9e32, ++ 0x080c, 0x8973, 0x0005, 0x080c, 0xd72f, 0x0db0, 0x0cc8, 0x080c, ++ 0x886e, 0x2009, 0x0041, 0x0804, 0xcf3e, 0x9182, 0x0040, 0x0002, ++ 0xcdeb, 0xcded, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, ++ 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, 0xcdeb, ++ 0xcdeb, 0xcdee, 0xcdeb, 0x080c, 0x0db4, 0x0005, 0x00d6, 0x080c, ++ 0x8204, 0x00de, 0x080c, 0xd787, 0x080c, 0x9e32, 0x0005, 0x9182, ++ 0x0040, 0x0002, 0xce0d, 0xce0d, 0xce0d, 0xce0d, 0xce0d, 0xce0d, ++ 0xce0d, 0xce0d, 0xce0d, 0xce0f, 0xce7e, 0xce0d, 0xce0d, 0xce0d, ++ 0xce0d, 0xce7e, 0xce0d, 0xce0d, 0xce0d, 0x080c, 0x0db4, 0x2001, ++ 0x0105, 0x2004, 0x9084, 0x1800, 0x01c8, 0x2001, 0x0132, 0x200c, ++ 0x2001, 0x0131, 0x2004, 0x9105, 0x1904, 0xce7e, 0x2009, 0x180c, ++ 0x2104, 0xd0d4, 0x0904, 0xce7e, 0xc0d4, 0x200a, 0x2009, 0x0105, ++ 0x2104, 0x9084, 0xe7fd, 0x9085, 0x0010, 0x200a, 0x2001, 0x1873, ++ 0x2004, 0xd0e4, 0x1528, 0x603b, 0x0000, 0x080c, 0x8923, 0x6014, ++ 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0188, 0x908c, 0x0003, 0x918e, ++ 0x0002, 0x0508, 0x2001, 0x180c, 0x2004, 0xd0d4, 0x11e0, 0x080c, ++ 0x8a4e, 0x2009, 0x0041, 0x009e, 0x0804, 0xcf3e, 0x080c, 0x8a4e, ++ 0x6003, 0x0007, 0x601b, 0x0000, 0x080c, 0x8204, 0x009e, 0x0005, ++ 0x2001, 0x0100, 0x2004, 0x9082, 0x0005, 0x0aa8, 0x2001, 0x011f, ++ 0x2004, 0x603a, 0x0890, 0x2001, 0x180c, 0x200c, 0xc1d4, 0x2102, ++ 0xd1cc, 0x0110, 0x080c, 0x2a77, 0x080c, 0x8a4e, 0x6014, 0x2048, ++ 0xa97c, 0xd1ec, 0x1130, 0x080c, 0x8204, 0x080c, 0x9e32, 0x009e, ++ 0x0005, 0x080c, 0xd72f, 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c, ++ 0x200c, 0xc1d4, 0x2102, 0x0036, 0x080c, 0x8923, 0x080c, 0x8a4e, ++ 0x6014, 0x0096, 0x2048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x0188, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x0140, ++ 0xa8ac, 0x6330, 0x931a, 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e, ++ 0x6003, 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xd4d5, 0x6018, ++ 0x9005, 0x1128, 0x2001, 0x1958, 0x2004, 0x8003, 0x601a, 0x6017, ++ 0x0000, 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x9182, 0x0040, ++ 0x0002, 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcecd, ++ 0xcecd, 0xcecf, 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcecd, ++ 0xcecd, 0xcecd, 0xcecd, 0xcecd, 0xcf1a, 0x080c, 0x0db4, 0x6014, ++ 0x0096, 0x2048, 0xa834, 0xaa38, 0x6110, 0x00b6, 0x2158, 0xb900, ++ 0x00be, 0xd1bc, 0x1190, 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128, ++ 0x2009, 0x0041, 0x009e, 0x0804, 0xcf3e, 0x6003, 0x0007, 0x601b, ++ 0x0000, 0x080c, 0x8204, 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58, ++ 0x0006, 0x0046, 0xacac, 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030, ++ 0x9420, 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8, ++ 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009, ++ 0x180e, 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, ++ 0x0006, 0x00e9, 0x080c, 0x8206, 0x009e, 0x0005, 0x6003, 0x0002, ++ 0x009e, 0x0005, 0x6024, 0xd0f4, 0x0128, 0x080c, 0x150f, 0x1904, ++ 0xcecf, 0x0005, 0x6014, 0x0096, 0x2048, 0xa834, 0xa938, 0x009e, ++ 0x9105, 0x1120, 0x080c, 0x150f, 0x1904, 0xcecf, 0x0005, 0xd2fc, ++ 0x0140, 0x8002, 0x8000, 0x8212, 0x9291, 0x0000, 0x2009, 0x0009, ++ 0x0010, 0x2009, 0x0015, 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040, ++ 0x0208, 0x0062, 0x9186, 0x0013, 0x0120, 0x9186, 0x0014, 0x190c, ++ 0x0db4, 0x6024, 0xd0dc, 0x090c, 0x0db4, 0x0005, 0xcf61, 0xcf6d, ++ 0xcf79, 0xcf85, 0xcf61, 0xcf61, 0xcf61, 0xcf61, 0xcf68, 0xcf63, ++ 0xcf63, 0xcf61, 0xcf61, 0xcf61, 0xcf61, 0xcf63, 0xcf61, 0xcf63, ++ 0xcf61, 0x080c, 0x0db4, 0x6024, 0xd0dc, 0x090c, 0x0db4, 0x0005, ++ 0x6014, 0x9005, 0x190c, 0x0db4, 0x0005, 0x6003, 0x0001, 0x6106, ++ 0x080c, 0x83f1, 0x0126, 0x2091, 0x8000, 0x080c, 0x8973, 0x012e, ++ 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x83f1, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x8973, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, ++ 0x2c10, 0x080c, 0x1a5c, 0x0126, 0x2091, 0x8000, 0x080c, 0x8456, ++ 0x080c, 0x8a4e, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, ++ 0x0096, 0x9182, 0x0040, 0x0023, 0x009e, 0x003e, 0x012e, 0x0005, ++ 0xcfb0, 0xcfb2, 0xcfc4, 0xcfde, 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, ++ 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, 0xcfb0, ++ 0x080c, 0x0db4, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x01f8, 0x909c, ++ 0x0003, 0x939e, 0x0003, 0x01d0, 0x6003, 0x0001, 0x6106, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x0470, 0x6014, 0x2048, 0xa87c, 0xd0fc, ++ 0x0168, 0x909c, 0x0003, 0x939e, 0x0003, 0x0140, 0x6003, 0x0001, ++ 0x6106, 0x080c, 0x83f1, 0x080c, 0x8973, 0x00e0, 0x901e, 0x6316, ++ 0x631a, 0x2019, 0x0004, 0x080c, 0xd4d5, 0x00a0, 0x6014, 0x2048, ++ 0xa87c, 0xd0fc, 0x0d98, 0x909c, 0x0003, 0x939e, 0x0003, 0x0d70, ++ 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x1a5c, 0x080c, 0x8456, ++ 0x080c, 0x8a4e, 0x0005, 0x080c, 0x886e, 0x6114, 0x81ff, 0x0158, ++ 0x0096, 0x2148, 0x080c, 0xd7d3, 0x0036, 0x2019, 0x0029, 0x080c, ++ 0xd4d5, 0x003e, 0x009e, 0x080c, 0x9e62, 0x080c, 0x8973, 0x0005, ++ 0x080c, 0x8923, 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, ++ 0xd7d3, 0x0036, 0x2019, 0x0029, 0x080c, 0xd4d5, 0x003e, 0x009e, ++ 0x080c, 0x9e62, 0x080c, 0x8a4e, 0x0005, 0x9182, 0x0085, 0x0002, ++ 0xd02f, 0xd02d, 0xd02d, 0xd03b, 0xd02d, 0xd02d, 0xd02d, 0xd02d, ++ 0xd02d, 0xd02d, 0xd02d, 0xd02d, 0xd02d, 0x080c, 0x0db4, 0x6003, ++ 0x000b, 0x6106, 0x080c, 0x83f1, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x8973, 0x012e, 0x0005, 0x0026, 0x00e6, 0x080c, 0xd726, 0x0118, ++ 0x080c, 0x9e32, 0x0450, 0x2071, 0x0260, 0x7224, 0x6216, 0x2001, ++ 0x180e, 0x2004, 0xd0e4, 0x0150, 0x6010, 0x00b6, 0x2058, 0xbca0, ++ 0x00be, 0x2c00, 0x2011, 0x014e, 0x080c, 0xa152, 0x7220, 0x080c, ++ 0xd37b, 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, ++ 0x9296, 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, ++ 0x83f1, 0x080c, 0x8973, 0x080c, 0x8a4e, 0x00ee, 0x002e, 0x0005, ++ 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0db4, ++ 0x908a, 0x0092, 0x1a0c, 0x0db4, 0x9082, 0x0085, 0x00a2, 0x9186, ++ 0x0027, 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, 0x9ec7, 0x0050, ++ 0x2001, 0x0007, 0x080c, 0x61bb, 0x080c, 0x886e, 0x080c, 0x9e62, ++ 0x080c, 0x8973, 0x0005, 0xd0a0, 0xd0a2, 0xd0a2, 0xd0a0, 0xd0a0, ++ 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, ++ 0x080c, 0x0db4, 0x080c, 0x886e, 0x080c, 0x9e62, 0x080c, 0x8973, ++ 0x0005, 0x9182, 0x0085, 0x0a0c, 0x0db4, 0x9182, 0x0092, 0x1a0c, ++ 0x0db4, 0x9182, 0x0085, 0x0002, 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c3, ++ 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c1, 0xd0c1, ++ 0xd0c1, 0x080c, 0x0db4, 0x0005, 0x9186, 0x0013, 0x0148, 0x9186, ++ 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0x9ec7, 0x0030, ++ 0x080c, 0x886e, 0x080c, 0x9e62, 0x080c, 0x8973, 0x0005, 0x0036, ++ 0x080c, 0xd787, 0x6043, 0x0000, 0x2019, 0x000b, 0x0031, 0x6023, ++ 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, ++ 0x8000, 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0x97ba, 0x009e, ++ 0x008e, 0x1550, 0x0076, 0x2c38, 0x080c, 0x9865, 0x007e, 0x1520, ++ 0x6000, 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007, 0x01e0, ++ 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xd787, 0x080c, 0xc22a, ++ 0x080c, 0x190d, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, 0xbb17, ++ 0x0110, 0x080c, 0xd4d5, 0x009e, 0x6017, 0x0000, 0x080c, 0xd787, ++ 0x6023, 0x0007, 0x080c, 0xc22a, 0x003e, 0x012e, 0x0005, 0x00f6, ++ 0x00c6, 0x00b6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938, 0x783c, ++ 0x080c, 0x2663, 0x15c8, 0x0016, 0x00c6, 0x080c, 0x623e, 0x1590, ++ 0x001e, 0x00c6, 0x2160, 0x080c, 0xc227, 0x00ce, 0x002e, 0x0026, ++ 0x0016, 0x2019, 0x0029, 0x080c, 0x9926, 0x080c, 0x8571, 0x0076, ++ 0x903e, 0x080c, 0x8469, 0x007e, 0x001e, 0x0076, 0x903e, 0x080c, ++ 0xd29b, 0x007e, 0x0026, 0xba04, 0x9294, 0xff00, 0x8217, 0x9286, ++ 0x0006, 0x0118, 0x9286, 0x0004, 0x1118, 0xbaa0, 0x080c, 0x3097, ++ 0x002e, 0xbcb0, 0x001e, 0x080c, 0x5ceb, 0xbe12, 0xbd16, 0xbcb2, ++ 0x9006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00be, 0x00ce, ++ 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00b6, 0x0016, 0x2009, 0x1823, ++ 0x2104, 0x9086, 0x0074, 0x1904, 0xd1c3, 0x2069, 0x0260, 0x6944, ++ 0x9182, 0x0100, 0x06e0, 0x6940, 0x9184, 0x8000, 0x0904, 0xd1c0, ++ 0x2001, 0x194d, 0x2004, 0x9005, 0x1140, 0x6010, 0x2058, 0xb8b0, ++ 0x9005, 0x0118, 0x9184, 0x0800, 0x0598, 0x6948, 0x918a, 0x0001, ++ 0x0648, 0x080c, 0xd83b, 0x0118, 0x6978, 0xd1fc, 0x11b8, 0x2009, ++ 0x0205, 0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, 0x9182, ++ 0x0100, 0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, 0x0001, ++ 0x0288, 0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, 0x0100, ++ 0x00a0, 0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, 0x6017, ++ 0x0700, 0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, 0x0028, ++ 0x6017, 0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, 0x0008, ++ 0x9006, 0x001e, 0x00be, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00b6, ++ 0x0026, 0x0036, 0x0156, 0x6210, 0x2258, 0xbb04, 0x9394, 0x00ff, ++ 0x9286, 0x0006, 0x0180, 0x9286, 0x0004, 0x0168, 0x9394, 0xff00, ++ 0x8217, 0x9286, 0x0006, 0x0138, 0x9286, 0x0004, 0x0120, 0x080c, ++ 0x624d, 0x0804, 0xd22a, 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, ++ 0x2b48, 0x2019, 0x000a, 0x080c, 0xae0d, 0x009e, 0x15a0, 0x2011, ++ 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, ++ 0xae0d, 0x009e, 0x1540, 0x0046, 0x0016, 0xbaa0, 0x2220, 0x9006, ++ 0x2009, 0x1854, 0x210c, 0x0038, 0x2009, 0x0029, 0x080c, 0xd52a, ++ 0xb800, 0xc0e5, 0xb802, 0x2019, 0x0029, 0x080c, 0x8571, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0x8469, 0x2c08, 0x080c, 0xd29b, 0x007e, ++ 0x2001, 0x0007, 0x080c, 0x61bb, 0x2001, 0x0007, 0x080c, 0x618f, ++ 0x001e, 0x004e, 0x9006, 0x015e, 0x003e, 0x002e, 0x00be, 0x00ce, ++ 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800, 0x9086, 0x0800, 0x0118, ++ 0x6017, 0x0000, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, 0x00f6, ++ 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0x026c, 0x7930, 0x7834, ++ 0x080c, 0x2663, 0x11d0, 0x080c, 0x623e, 0x11b8, 0x2011, 0x0270, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xae0d, ++ 0x009e, 0x1158, 0x2011, 0x0274, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x0006, 0x080c, 0xae0d, 0x009e, 0x015e, 0x003e, 0x002e, ++ 0x001e, 0x00fe, 0x00be, 0x0005, 0x00b6, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x0156, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x2663, 0x11d0, 0x080c, 0x623e, 0x11b8, 0x2011, 0x0276, 0x20a9, ++ 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xae0d, 0x009e, ++ 0x1158, 0x2011, 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, ++ 0x0006, 0x080c, 0xae0d, 0x009e, 0x015e, 0x003e, 0x002e, 0x001e, ++ 0x000e, 0x00be, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, ++ 0x0056, 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, ++ 0x19c1, 0x252c, 0x2021, 0x19c7, 0x2424, 0x2061, 0x1cd0, 0x2071, ++ 0x1800, 0x7650, 0x7070, 0x81ff, 0x0150, 0x0006, 0x9186, 0x1a80, ++ 0x000e, 0x0128, 0x8001, 0x9602, 0x1a04, 0xd334, 0x0018, 0x9606, ++ 0x0904, 0xd334, 0x2100, 0x9c06, 0x0904, 0xd32b, 0x080c, 0xd56b, ++ 0x1904, 0xd32b, 0x080c, 0xd858, 0x0904, 0xd32b, 0x080c, 0xd55b, ++ 0x0904, 0xd32b, 0x6720, 0x9786, 0x0001, 0x1148, 0x080c, 0x312e, ++ 0x0904, 0xd34f, 0x6004, 0x9086, 0x0000, 0x1904, 0xd34f, 0x9786, ++ 0x0004, 0x0904, 0xd34f, 0x9786, 0x0007, 0x0904, 0xd32b, 0x2500, ++ 0x9c06, 0x0904, 0xd32b, 0x2400, 0x9c06, 0x05e8, 0x88ff, 0x0118, ++ 0x6054, 0x9906, 0x15c0, 0x0096, 0x6000, 0x9086, 0x0004, 0x1120, ++ 0x0016, 0x080c, 0x190d, 0x001e, 0x9786, 0x000a, 0x0148, 0x080c, ++ 0xbd1d, 0x1130, 0x080c, 0xa7c0, 0x009e, 0x080c, 0x9e62, 0x0418, ++ 0x6014, 0x2048, 0x080c, 0xbb17, 0x01d8, 0x9786, 0x0003, 0x1570, ++ 0xa867, 0x0103, 0xa87c, 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048, ++ 0x080c, 0x0f9d, 0x009e, 0xab7a, 0xa877, 0x0000, 0x080c, 0xd7d3, ++ 0x0016, 0x080c, 0xbe06, 0x080c, 0x687f, 0x001e, 0x080c, 0xbd00, ++ 0x009e, 0x080c, 0x9e62, 0x9ce0, 0x0018, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x1210, 0x0804, 0xd2af, 0x012e, 0x002e, 0x004e, 0x005e, ++ 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0x9786, 0x0006, ++ 0x1150, 0x9386, 0x0005, 0x0128, 0x080c, 0xd7d3, 0x080c, 0xd4d5, ++ 0x08f8, 0x009e, 0x0c00, 0x9786, 0x000a, 0x0920, 0x0808, 0x81ff, ++ 0x09d0, 0x9180, 0x0001, 0x2004, 0x9086, 0x0018, 0x0130, 0x9180, ++ 0x0001, 0x2004, 0x9086, 0x002d, 0x1970, 0x6000, 0x9086, 0x0002, ++ 0x1950, 0x080c, 0xbd0c, 0x0130, 0x080c, 0xbd1d, 0x1920, 0x080c, ++ 0xa7c0, 0x0038, 0x080c, 0x3003, 0x080c, 0xbd1d, 0x1110, 0x080c, ++ 0xa7c0, 0x080c, 0x9e62, 0x0804, 0xd32b, 0xa864, 0x9084, 0x00ff, ++ 0x9086, 0x0039, 0x0005, 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, ++ 0x9006, 0x080c, 0xd4fc, 0x001e, 0x0120, 0x6020, 0x9084, 0x000f, ++ 0x001b, 0x00ee, 0x00ce, 0x0005, 0xd39a, 0xd39a, 0xd39a, 0xd39a, ++ 0xd39a, 0xd39a, 0xd39c, 0xd39a, 0xd39a, 0xd39a, 0xd39a, 0x9e62, ++ 0x9e62, 0xd39a, 0x9006, 0x0005, 0x0036, 0x0046, 0x0016, 0x7010, ++ 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2009, 0x0020, 0x080c, ++ 0xd52a, 0x001e, 0x004e, 0x2019, 0x0002, 0x080c, 0xd0e5, 0x003e, ++ 0x9085, 0x0001, 0x0005, 0x0096, 0x080c, 0xbb17, 0x0140, 0x6014, ++ 0x904d, 0x080c, 0xb74a, 0x687b, 0x0005, 0x080c, 0x688c, 0x009e, ++ 0x080c, 0x9e62, 0x9085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, ++ 0x617b, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0276, 0x080c, 0xadf9, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x9005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, ++ 0x0066, 0x00b6, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0x1cd0, ++ 0x2079, 0x0001, 0x8fff, 0x0904, 0xd435, 0x2071, 0x1800, 0x7650, ++ 0x7070, 0x8001, 0x9602, 0x1a04, 0xd435, 0x88ff, 0x0120, 0x2800, ++ 0x9c06, 0x1590, 0x2078, 0x080c, 0xd55b, 0x0570, 0x2400, 0x9c06, ++ 0x0558, 0x6720, 0x9786, 0x0006, 0x1538, 0x9786, 0x0007, 0x0520, ++ 0x88ff, 0x1140, 0x6010, 0x9b06, 0x11f8, 0x85ff, 0x0118, 0x6054, ++ 0x9106, 0x11d0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xd787, ++ 0x080c, 0xc22a, 0x080c, 0x190d, 0x6023, 0x0007, 0x6014, 0x2048, ++ 0x080c, 0xbb17, 0x0120, 0x0046, 0x080c, 0xd4d5, 0x004e, 0x009e, ++ 0x080c, 0x9e62, 0x88ff, 0x1198, 0x9ce0, 0x0018, 0x2001, 0x1819, ++ 0x2004, 0x9c02, 0x1210, 0x0804, 0xd3ea, 0x9006, 0x012e, 0x00be, ++ 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x98c5, ++ 0x0001, 0x0ca0, 0x00b6, 0x0076, 0x0056, 0x0086, 0x9046, 0x2029, ++ 0x0001, 0x2c20, 0x2019, 0x0002, 0x6210, 0x2258, 0x0096, 0x904e, ++ 0x080c, 0x97ba, 0x009e, 0x008e, 0x903e, 0x080c, 0x9865, 0x080c, ++ 0xd3db, 0x005e, 0x007e, 0x00be, 0x0005, 0x00b6, 0x0046, 0x0056, ++ 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128, 0x20a9, 0x007f, 0x900e, ++ 0x0016, 0x0036, 0x080c, 0x623e, 0x1190, 0x0056, 0x0086, 0x9046, ++ 0x2508, 0x2029, 0x0001, 0x0096, 0x904e, 0x080c, 0x97ba, 0x009e, ++ 0x008e, 0x903e, 0x080c, 0x9865, 0x080c, 0xd3db, 0x005e, 0x003e, ++ 0x001e, 0x8108, 0x1f04, 0xd468, 0x015e, 0x00ce, 0x007e, 0x005e, ++ 0x004e, 0x00be, 0x0005, 0x00b6, 0x0076, 0x0056, 0x6210, 0x2258, ++ 0x0086, 0x9046, 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, 0x904e, ++ 0x080c, 0x97ba, 0x009e, 0x008e, 0x903e, 0x080c, 0x9865, 0x2c20, ++ 0x080c, 0xd3db, 0x005e, 0x007e, 0x00be, 0x0005, 0x00b6, 0x0046, ++ 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x0800, 0x900e, ++ 0x0016, 0x0036, 0x080c, 0x623e, 0x11a0, 0x0086, 0x9046, 0x2828, ++ 0x0046, 0x2021, 0x0001, 0x080c, 0xd76b, 0x004e, 0x0096, 0x904e, ++ 0x080c, 0x97ba, 0x009e, 0x008e, 0x903e, 0x080c, 0x9865, 0x080c, ++ 0xd3db, 0x003e, 0x001e, 0x8108, 0x1f04, 0xd4b0, 0x015e, 0x00ce, ++ 0x007e, 0x005e, 0x004e, 0x00be, 0x0005, 0x0016, 0x00f6, 0x080c, ++ 0xbb15, 0x0198, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0046, 0x0180, ++ 0xa800, 0x907d, 0x0138, 0xa803, 0x0000, 0xab82, 0x080c, 0x688c, ++ 0x2f48, 0x0cb0, 0xab82, 0x080c, 0x688c, 0x00fe, 0x001e, 0x0005, ++ 0xa800, 0x907d, 0x0130, 0xa803, 0x0000, 0x080c, 0x688c, 0x2f48, ++ 0x0cb8, 0x080c, 0x688c, 0x0c88, 0x00e6, 0x0046, 0x0036, 0x2061, ++ 0x1cd0, 0x9005, 0x1138, 0x2071, 0x1800, 0x7450, 0x7070, 0x8001, ++ 0x9402, 0x12d8, 0x2100, 0x9c06, 0x0168, 0x6000, 0x9086, 0x0000, ++ 0x0148, 0x6008, 0x9206, 0x1130, 0x6010, 0x91a0, 0x0004, 0x2424, ++ 0x9406, 0x0140, 0x9ce0, 0x0018, 0x2001, 0x1819, 0x2004, 0x9c02, ++ 0x1220, 0x0c40, 0x9085, 0x0001, 0x0008, 0x9006, 0x003e, 0x004e, ++ 0x00ee, 0x0005, 0x0096, 0x0006, 0x080c, 0x0feb, 0x000e, 0x090c, ++ 0x0db4, 0xaae2, 0xa867, 0x010d, 0xa88e, 0x0026, 0x2010, 0x080c, ++ 0xbb05, 0x2001, 0x0000, 0x0120, 0x2200, 0x9080, 0x0015, 0x2004, ++ 0x002e, 0xa87a, 0x9186, 0x0020, 0x0110, 0xa8e3, 0xffff, 0xa986, ++ 0xac76, 0xa87f, 0x0000, 0x2001, 0x195f, 0x2004, 0xa882, 0x9006, ++ 0xa802, 0xa86a, 0xa88a, 0x0126, 0x2091, 0x8000, 0x080c, 0x688c, ++ 0x012e, 0x009e, 0x0005, 0x6700, 0x9786, 0x0000, 0x0158, 0x9786, ++ 0x0001, 0x0140, 0x9786, 0x000a, 0x0128, 0x9786, 0x0009, 0x0110, ++ 0x9085, 0x0001, 0x0005, 0x00e6, 0x6010, 0x9075, 0x0138, 0x00b6, ++ 0x2058, 0xb8a0, 0x00be, 0x9206, 0x00ee, 0x0005, 0x9085, 0x0001, ++ 0x0cd8, 0x0016, 0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, 0x6134, ++ 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0005, 0x2001, 0x1958, 0x2004, 0x601a, 0x080c, 0x83f1, ++ 0x080c, 0x8973, 0x001e, 0x0005, 0xa001, 0xa001, 0x0005, 0x6024, ++ 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0xbe4a, 0x0030, 0x080c, ++ 0xd787, 0x080c, 0x8204, 0x080c, 0x9e32, 0x0005, 0x9280, 0x0008, ++ 0x2004, 0x9084, 0x000f, 0x0002, 0xd5ba, 0xd5ba, 0xd5ba, 0xd5bc, ++ 0xd5ba, 0xd5bc, 0xd5bc, 0xd5ba, 0xd5bc, 0xd5ba, 0xd5ba, 0xd5ba, ++ 0xd5ba, 0xd5ba, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x9280, ++ 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, 0xd5d3, 0xd5d3, 0xd5d3, ++ 0xd5d3, 0xd5d3, 0xd5d3, 0xd5e0, 0xd5d3, 0xd5d3, 0xd5d3, 0xd5d3, ++ 0xd5d3, 0xd5d3, 0xd5d3, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, ++ 0x2a00, 0x6003, 0x0001, 0x080c, 0x83f1, 0x080c, 0x8973, 0x0005, ++ 0x0096, 0x00c6, 0x2260, 0x080c, 0xd787, 0x6043, 0x0000, 0x6024, ++ 0xc0f4, 0xc0e4, 0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, 0x2268, ++ 0x9186, 0x0007, 0x1904, 0xd639, 0x6814, 0x9005, 0x0138, 0x2048, ++ 0xa87c, 0xd0fc, 0x1118, 0x00de, 0x009e, 0x08a8, 0x6007, 0x003a, ++ 0x6003, 0x0001, 0x080c, 0x83f1, 0x080c, 0x8973, 0x00c6, 0x2d60, ++ 0x6100, 0x9186, 0x0002, 0x1904, 0xd6b0, 0x6014, 0x9005, 0x1138, ++ 0x6000, 0x9086, 0x0007, 0x190c, 0x0db4, 0x0804, 0xd6b0, 0x2048, ++ 0x080c, 0xbb17, 0x1130, 0x0028, 0x2048, 0xa800, 0x9005, 0x1de0, ++ 0x2900, 0x2048, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x1168, ++ 0xa87c, 0xc0dc, 0xc0f4, 0xa87e, 0xa880, 0xc0fc, 0xa882, 0x2009, ++ 0x0043, 0x080c, 0xcf3e, 0x0804, 0xd6b0, 0x2009, 0x0041, 0x0804, ++ 0xd6aa, 0x9186, 0x0005, 0x15a0, 0x6814, 0x2048, 0xa87c, 0xd0bc, ++ 0x1120, 0x00de, 0x009e, 0x0804, 0xd5d3, 0xd0b4, 0x0128, 0xd0fc, ++ 0x090c, 0x0db4, 0x0804, 0xd5f4, 0x6007, 0x003a, 0x6003, 0x0001, ++ 0x080c, 0x83f1, 0x080c, 0x8973, 0x00c6, 0x2d60, 0x6100, 0x9186, ++ 0x0002, 0x0120, 0x9186, 0x0004, 0x1904, 0xd6b0, 0x6814, 0x2048, ++ 0xa97c, 0xc1f4, 0xc1dc, 0xa97e, 0xa980, 0xc1fc, 0xc1bc, 0xa982, ++ 0x00f6, 0x2c78, 0x080c, 0x1648, 0x00fe, 0x2009, 0x0042, 0x04d0, ++ 0x0036, 0x080c, 0x0feb, 0x090c, 0x0db4, 0xa867, 0x010d, 0x9006, ++ 0xa802, 0xa86a, 0xa88a, 0x2d18, 0xab8e, 0xa887, 0x0045, 0x2c00, ++ 0xa892, 0x6038, 0xa8a2, 0x2360, 0x6024, 0xc0dd, 0x6026, 0x6010, ++ 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x2004, 0x6354, 0xab7a, 0xa876, ++ 0x9006, 0xa87e, 0xa882, 0xad9a, 0xae96, 0xa89f, 0x0001, 0x080c, ++ 0x688c, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xd0e5, 0x2d00, ++ 0x600a, 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, 0x6342, ++ 0x003e, 0x0038, 0x6043, 0x0000, 0x6003, 0x0007, 0x080c, 0xcf3e, ++ 0x00ce, 0x00de, 0x009e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, ++ 0x9082, 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, 0x080c, ++ 0x886e, 0x0036, 0x0096, 0x6014, 0x2048, 0x2019, 0x0004, 0x080c, ++ 0xd4d5, 0x009e, 0x003e, 0x080c, 0x8973, 0x0005, 0x9186, 0x0014, ++ 0x0d70, 0x080c, 0x9ec7, 0x0005, 0xd6e3, 0xd6e1, 0xd6e1, 0xd6e1, ++ 0xd6e1, 0xd6e1, 0xd6e3, 0xd6e1, 0xd6e1, 0xd6e1, 0xd6e1, 0xd6e1, ++ 0xd6e1, 0x080c, 0x0db4, 0x080c, 0x886e, 0x6003, 0x000c, 0x080c, ++ 0x8973, 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, ++ 0x001a, 0x080c, 0x9ec7, 0x0005, 0xd701, 0xd701, 0xd701, 0xd701, ++ 0xd703, 0xd723, 0xd701, 0xd701, 0xd701, 0xd701, 0xd701, 0xd701, ++ 0xd701, 0x080c, 0x0db4, 0x00d6, 0x2c68, 0x080c, 0x9ddc, 0x01b0, ++ 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0x026e, 0x210c, 0x613a, ++ 0x2009, 0x026f, 0x210c, 0x613e, 0x600b, 0xffff, 0x6910, 0x6112, ++ 0x6023, 0x0004, 0x080c, 0x83f1, 0x080c, 0x8973, 0x2d60, 0x080c, ++ 0x9e32, 0x00de, 0x0005, 0x080c, 0x9e32, 0x0005, 0x00e6, 0x6010, ++ 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0ec, 0x00ee, 0x0005, 0x2009, ++ 0x1873, 0x210c, 0xd1ec, 0x05b0, 0x6003, 0x0002, 0x6024, 0xc0e5, ++ 0x6026, 0xd0cc, 0x0150, 0x2001, 0x1959, 0x2004, 0x6042, 0x2009, ++ 0x1873, 0x210c, 0xd1f4, 0x1520, 0x00a0, 0x2009, 0x1873, 0x210c, ++ 0xd1f4, 0x0128, 0x6024, 0xc0e4, 0x6026, 0x9006, 0x00d8, 0x2001, ++ 0x1959, 0x200c, 0x2001, 0x1957, 0x2004, 0x9100, 0x9080, 0x000a, ++ 0x6042, 0x6010, 0x00b6, 0x2058, 0xb8ac, 0x00be, 0x0008, 0x2104, ++ 0x9005, 0x0118, 0x9088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000, ++ 0x9085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6154, 0xb8ac, ++ 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118, 0x6054, 0x9106, 0x1138, ++ 0x600c, 0x2072, 0x080c, 0x8204, 0x080c, 0x9e32, 0x0010, 0x9cf0, ++ 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, ++ 0x00b6, 0x6010, 0x2058, 0xb8ac, 0x2068, 0x9005, 0x0130, 0x9c06, ++ 0x0110, 0x680c, 0x0cd0, 0x600c, 0x680e, 0x00be, 0x00de, 0x0005, ++ 0x0026, 0x0036, 0x0156, 0x2011, 0x182b, 0x2204, 0x9084, 0x00ff, ++ 0x2019, 0x026e, 0x2334, 0x9636, 0x1508, 0x8318, 0x2334, 0x2204, ++ 0x9084, 0xff00, 0x9636, 0x11d0, 0x2011, 0x0270, 0x20a9, 0x0004, ++ 0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xae0d, 0x009e, ++ 0x1168, 0x2011, 0x0274, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, ++ 0x2019, 0x0006, 0x080c, 0xae0d, 0x009e, 0x1100, 0x015e, 0x003e, ++ 0x002e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5c64, 0x080c, ++ 0x2dbb, 0x00ee, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5, ++ 0xa882, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, ++ 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0x19c1, ++ 0x252c, 0x2021, 0x19c7, 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800, ++ 0x7650, 0x7070, 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, ++ 0x9786, 0x0008, 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, ++ 0x01d0, 0x080c, 0xd55b, 0x01b8, 0x080c, 0xd56b, 0x11a0, 0x6000, ++ 0x9086, 0x0004, 0x1120, 0x0016, 0x080c, 0x190d, 0x001e, 0x080c, ++ 0xbd0c, 0x1110, 0x080c, 0x3003, 0x080c, 0xbd1d, 0x1110, 0x080c, ++ 0xa7c0, 0x080c, 0x9e62, 0x9ce0, 0x0018, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, ++ 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x2001, 0x1810, ++ 0x2004, 0xd0dc, 0x0005, 0x0006, 0x2001, 0x1836, 0x2004, 0xd09c, ++ 0x000e, 0x0005, 0x0006, 0x0036, 0x0046, 0x080c, 0xc212, 0x0168, ++ 0x2019, 0xffff, 0x9005, 0x0128, 0x6010, 0x00b6, 0x2058, 0xbba0, ++ 0x00be, 0x2021, 0x0004, 0x080c, 0x4a76, 0x004e, 0x003e, 0x000e, ++ 0x6004, 0x9086, 0x0001, 0x1128, 0x080c, 0x9926, 0x080c, 0x9e62, ++ 0x9006, 0x0005, 0x00e6, 0x00c6, 0x00b6, 0x0046, 0x2061, 0x1cd0, ++ 0x2071, 0x1800, 0x7450, 0x7070, 0x8001, 0x9402, 0x12b8, 0x2100, ++ 0x9c06, 0x0148, 0x6000, 0x9086, 0x0000, 0x0128, 0x6010, 0x2058, ++ 0xb8a0, 0x9206, 0x0140, 0x9ce0, 0x0018, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x1220, 0x0c60, 0x9085, 0x0001, 0x0008, 0x9006, 0x004e, ++ 0x00be, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, ++ 0x2091, 0x8000, 0x2071, 0x1840, 0xd5a4, 0x0118, 0x7034, 0x8000, ++ 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, ++ 0x2500, 0x9084, 0x0007, 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, ++ 0x0130, 0x908e, 0x0005, 0x0118, 0x2071, 0x184a, 0x0089, 0x001e, ++ 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, ++ 0x8000, 0x2071, 0x1842, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, ++ 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, ++ 0x0005, 0x00e6, 0x2071, 0x1840, 0x0c99, 0x00ee, 0x0005, 0x00e6, ++ 0x2071, 0x1844, 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, ++ 0x2091, 0x8000, 0x2071, 0x1840, 0x7044, 0x8000, 0x7046, 0x00ee, ++ 0x000e, 0x012e, 0x0005, 0x0003, 0x000b, 0x04a6, 0x0000, 0xc000, ++ 0x0001, 0x8064, 0x0008, 0x0010, 0x0000, 0x8066, 0x0000, 0x0101, ++ 0x0008, 0x4407, 0x0003, 0x8060, 0x0000, 0x0400, 0x0000, 0x580d, ++ 0x000b, 0x798e, 0x0003, 0x50db, 0x000b, 0x4c0a, 0x0003, 0xbac0, ++ 0x0009, 0x008a, 0x0000, 0x0c0a, 0x000b, 0x15fe, 0x0008, 0x340a, ++ 0x0003, 0xc4c0, 0x0009, 0x7000, 0x0000, 0xffa0, 0x0001, 0x2000, ++ 0x0000, 0x1627, 0x0003, 0x808c, 0x0008, 0x0001, 0x0000, 0x0000, ++ 0x0007, 0x4047, 0x000a, 0x808c, 0x0008, 0x0002, 0x0000, 0x0821, ++ 0x0003, 0x4022, 0x0000, 0x0022, 0x000b, 0x4122, 0x0008, 0x4447, ++ 0x0002, 0x0e4f, 0x000b, 0x0bfe, 0x0008, 0x11a0, 0x0001, 0x122d, ++ 0x000b, 0x0ca0, 0x0001, 0x122d, 0x000b, 0x9180, 0x0001, 0x0004, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, ++ 0x0000, 0x0009, 0x0008, 0x4430, 0x000b, 0x808c, 0x0008, 0x0000, ++ 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x0004, 0x0000, 0x8066, ++ 0x0000, 0x0411, 0x0000, 0x4438, 0x0003, 0x03fe, 0x0000, 0x43e0, ++ 0x0001, 0x0e2a, 0x000b, 0xc2c0, 0x0009, 0x00ff, 0x0008, 0x02e0, ++ 0x0001, 0x0e2a, 0x000b, 0x9180, 0x0001, 0x0005, 0x0008, 0x8060, ++ 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0019, ++ 0x0000, 0x4447, 0x000b, 0x0240, 0x0002, 0x0a27, 0x000b, 0x00fe, ++ 0x0000, 0x322a, 0x000b, 0x112a, 0x0000, 0x002e, 0x0008, 0x022c, ++ 0x0008, 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x808c, 0x0008, 0x0002, ++ 0x0000, 0x1760, 0x0008, 0x8062, 0x0008, 0x000f, 0x0008, 0x8066, ++ 0x0000, 0x0011, 0x0008, 0x4458, 0x0003, 0x01fe, 0x0008, 0x42e0, ++ 0x0009, 0x0e1d, 0x0003, 0x00fe, 0x0000, 0x43e0, 0x0001, 0x0e1d, ++ 0x0003, 0x1734, 0x0000, 0x1530, 0x0000, 0x1632, 0x0008, 0x0d2a, ++ 0x0008, 0x9880, 0x0001, 0x0010, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x1e0a, 0x0008, 0x446a, ++ 0x000b, 0x808a, 0x0008, 0x0003, 0x0008, 0x1a60, 0x0000, 0x8062, ++ 0x0008, 0x0002, 0x0000, 0x5870, 0x000b, 0x8066, 0x0000, 0x3679, ++ 0x0000, 0x4473, 0x0003, 0x5874, 0x0003, 0x3efe, 0x0008, 0x7f4f, ++ 0x0002, 0x087a, 0x000b, 0x0d00, 0x0000, 0x0082, 0x0004, 0x8054, ++ 0x0008, 0x0011, 0x0008, 0x8074, 0x0000, 0x1010, 0x0008, 0x1efe, ++ 0x0000, 0x300a, 0x000b, 0x00b8, 0x0004, 0x000a, 0x000b, 0x00fe, ++ 0x0000, 0x348a, 0x000b, 0x1a60, 0x0000, 0x8062, 0x0008, 0x0007, ++ 0x0000, 0x8066, 0x0000, 0x0231, 0x0008, 0x4489, 0x0003, 0x03fe, ++ 0x0000, 0x04d0, 0x0001, 0x0cb0, 0x0003, 0x82c0, 0x0001, 0x1f00, ++ 0x0000, 0xffa0, 0x0001, 0x0400, 0x0000, 0x089f, 0x0003, 0x14b0, ++ 0x0003, 0x01fe, 0x0008, 0x0580, 0x0009, 0x7f06, 0x0000, 0x02fe, ++ 0x0008, 0xffc0, 0x0001, 0x00ff, 0x0008, 0x0690, 0x0001, 0x109f, ++ 0x0003, 0x7f08, 0x0008, 0x84c0, 0x0001, 0xff00, 0x0008, 0x08b0, ++ 0x000b, 0x00fe, 0x0000, 0x34a6, 0x0003, 0x8072, 0x0000, 0x1010, ++ 0x0008, 0x3944, 0x0002, 0x08a1, 0x000b, 0x00aa, 0x000b, 0x8072, ++ 0x0000, 0x2020, 0x0008, 0x3945, 0x000a, 0x08a6, 0x0003, 0x3946, ++ 0x000a, 0x0cb7, 0x000b, 0x0000, 0x0007, 0x3943, 0x000a, 0x08b7, ++ 0x0003, 0x00aa, 0x000b, 0x00fe, 0x0000, 0x34b5, 0x000b, 0x8072, ++ 0x0000, 0x1000, 0x0000, 0x00b7, 0x000b, 0x8072, 0x0000, 0x2000, ++ 0x0000, 0x4000, 0x000f, 0x1c60, 0x0000, 0x1b62, 0x0000, 0x8066, ++ 0x0000, 0x0231, 0x0008, 0x44bc, 0x0003, 0x58bd, 0x0003, 0x0140, ++ 0x0008, 0x0242, 0x0000, 0x1f43, 0x0002, 0x0ccb, 0x0003, 0x0d44, ++ 0x0000, 0x0d46, 0x0008, 0x0348, 0x0008, 0x044a, 0x0008, 0x030a, ++ 0x0008, 0x040c, 0x0000, 0x0d06, 0x0000, 0x0d08, 0x0008, 0x00cf, ++ 0x000b, 0x0344, 0x0008, 0x0446, 0x0008, 0x0548, 0x0008, 0x064a, ++ 0x0000, 0x58cf, 0x0003, 0x3efe, 0x0008, 0x7f4f, 0x0002, 0x08d6, ++ 0x000b, 0x8000, 0x0000, 0x0001, 0x0000, 0x0082, 0x0004, 0x8054, ++ 0x0008, 0x0001, 0x0000, 0x8074, 0x0000, 0x2020, 0x0008, 0x4000, ++ 0x000f, 0x3a40, 0x000a, 0x0c0d, 0x0003, 0x2b24, 0x0008, 0x2b24, ++ 0x0008, 0x58df, 0x000b, 0x8054, 0x0008, 0x0002, 0x0000, 0x1242, ++ 0x0002, 0x092d, 0x000b, 0x3a45, 0x000a, 0x091c, 0x0003, 0x8072, ++ 0x0000, 0x1000, 0x0000, 0x3945, 0x000a, 0x08ec, 0x000b, 0x8072, ++ 0x0000, 0x3010, 0x0000, 0x1e10, 0x000a, 0x7f3c, 0x0000, 0x0917, ++ 0x000b, 0x1d00, 0x0002, 0x7f3a, 0x0000, 0x0d60, 0x0000, 0x7f62, ++ 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x44f5, 0x000b, 0x00fe, ++ 0x0000, 0x3514, 0x000b, 0x1c60, 0x0000, 0x8062, 0x0008, 0x0001, ++ 0x0000, 0x8066, 0x0000, 0x0009, 0x0008, 0x44fd, 0x0003, 0x00fe, ++ 0x0000, 0x3204, 0x000b, 0x0038, 0x0000, 0x0060, 0x0008, 0x8062, ++ 0x0008, 0x0019, 0x0000, 0x8066, 0x0000, 0x0009, 0x0008, 0x4506, ++ 0x0003, 0x80c0, 0x0009, 0x00ff, 0x0008, 0x7f3e, 0x0008, 0x0d60, ++ 0x0000, 0x0efe, 0x0008, 0x1f80, 0x0001, 0x7f62, 0x0008, 0x8066, ++ 0x0000, 0x0009, 0x0008, 0x4510, 0x000b, 0x003a, 0x0008, 0x1dfe, ++ 0x0000, 0x00f1, 0x0003, 0x0036, 0x0008, 0x00b8, 0x0004, 0x012d, ++ 0x0003, 0x8074, 0x0000, 0x2000, 0x0000, 0x8072, 0x0000, 0x2000, ++ 0x0000, 0x012d, 0x0003, 0x3a44, 0x0002, 0x0a30, 0x000b, 0x8074, ++ 0x0000, 0x1000, 0x0000, 0x8072, 0x0000, 0x1000, 0x0000, 0x2d0e, ++ 0x0000, 0x2d0e, 0x0000, 0x3601, 0x0003, 0x26fe, 0x0008, 0x26fe, ++ 0x0008, 0x2700, 0x0008, 0x2700, 0x0008, 0x00d0, 0x0009, 0x0d3f, ++ 0x0003, 0x8074, 0x0000, 0x4040, 0x0008, 0x592d, 0x000b, 0x50db, ++ 0x000b, 0x3a46, 0x000a, 0x0d3f, 0x0003, 0x3a47, 0x0002, 0x093a, ++ 0x000b, 0x8054, 0x0008, 0x0004, 0x0000, 0x8074, 0x0000, 0x8000, ++ 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, 0x0182, 0x0003, 0x92c0, ++ 0x0009, 0x0fc8, 0x0000, 0x080a, 0x0003, 0x1246, 0x000a, 0x0dfb, ++ 0x000b, 0x1a60, 0x0000, 0x8062, 0x0008, 0x0002, 0x0000, 0x8066, ++ 0x0000, 0x362a, 0x0000, 0x4544, 0x0003, 0x2000, 0x0000, 0x2000, ++ 0x0000, 0x2102, 0x0000, 0x2102, 0x0000, 0x2204, 0x0000, 0x2204, ++ 0x0000, 0x2306, 0x0000, 0x2306, 0x0000, 0x2408, 0x0000, 0x2408, ++ 0x0000, 0x250a, 0x0000, 0x250a, 0x0000, 0x260c, 0x0000, 0x260c, ++ 0x0000, 0x270e, 0x0000, 0x270e, 0x0000, 0x2810, 0x0000, 0x2810, ++ 0x0000, 0x2912, 0x0000, 0x2912, 0x0000, 0x1a60, 0x0000, 0x8062, ++ 0x0008, 0x0007, 0x0000, 0x8066, 0x0000, 0x0052, 0x0000, 0x455e, ++ 0x000b, 0x92c0, 0x0009, 0x0780, 0x0008, 0x0e17, 0x0003, 0x124b, ++ 0x0002, 0x0967, 0x0003, 0x2e4d, 0x0002, 0x2e4d, 0x0002, 0x0a01, ++ 0x0003, 0x3a46, 0x000a, 0x0d74, 0x0003, 0x5969, 0x000b, 0x8054, ++ 0x0008, 0x0004, 0x0000, 0x1243, 0x000a, 0x097e, 0x000b, 0x8010, ++ 0x0008, 0x000d, 0x0000, 0x01ef, 0x0004, 0x1810, 0x0000, 0x01ef, ++ 0x0004, 0x017e, 0x0003, 0x194d, 0x000a, 0x0978, 0x000b, 0x1243, ++ 0x000a, 0x0a0b, 0x0003, 0x5978, 0x000b, 0x8054, 0x0008, 0x0004, ++ 0x0000, 0x01e4, 0x000c, 0x1810, 0x0000, 0x01ef, 0x0004, 0x8074, ++ 0x0000, 0xf000, 0x0008, 0x8072, 0x0000, 0x3000, 0x0008, 0x0d30, ++ 0x0000, 0x3a42, 0x0002, 0x0d88, 0x0003, 0x15fe, 0x0008, 0x3451, ++ 0x000b, 0x000a, 0x000b, 0x8074, 0x0000, 0x0501, 0x0000, 0x8010, ++ 0x0008, 0x000c, 0x0008, 0x01ef, 0x0004, 0x000a, 0x000b, 0xbbe0, ++ 0x0009, 0x0030, 0x0008, 0x0d9e, 0x000b, 0x18fe, 0x0000, 0x3ce0, ++ 0x0009, 0x099b, 0x0003, 0x15fe, 0x0008, 0x3ce0, 0x0009, 0x099b, ++ 0x0003, 0x01df, 0x0004, 0x8076, 0x0008, 0x0040, 0x0000, 0x01dc, ++ 0x000b, 0x8076, 0x0008, 0x0041, 0x0008, 0x01dc, 0x000b, 0xbbe0, ++ 0x0009, 0x0032, 0x0000, 0x0da3, 0x0003, 0x3c1e, 0x0008, 0x01dc, ++ 0x000b, 0xbbe0, 0x0009, 0x0037, 0x0000, 0x0dc1, 0x000b, 0x18fe, ++ 0x0000, 0x3ce0, 0x0009, 0x0d9b, 0x000b, 0x8076, 0x0008, 0x0040, ++ 0x0000, 0x1a60, 0x0000, 0x8062, 0x0008, 0x000d, 0x0000, 0x2604, ++ 0x0008, 0x2604, 0x0008, 0x2706, 0x0008, 0x2706, 0x0008, 0x2808, ++ 0x0000, 0x2808, 0x0000, 0x290a, 0x0000, 0x290a, 0x0000, 0x8066, ++ 0x0000, 0x0422, 0x0000, 0x45b8, 0x0003, 0x01e4, 0x000c, 0x8054, ++ 0x0008, 0x0004, 0x0000, 0x8074, 0x0000, 0xf000, 0x0008, 0x8072, ++ 0x0000, 0xb000, 0x0000, 0x0182, 0x0003, 0xbbe0, 0x0009, 0x0038, ++ 0x0000, 0x0dd3, 0x000b, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x09d0, ++ 0x0003, 0x15fe, 0x0008, 0x3ce0, 0x0009, 0x0d97, 0x000b, 0x01df, ++ 0x0004, 0x8076, 0x0008, 0x0040, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x0000, 0x0227, 0x0003, 0x8076, 0x0008, 0x0042, 0x0008, 0x01dc, ++ 0x000b, 0xbbe0, 0x0009, 0x0016, 0x0000, 0x0ddc, 0x000b, 0x3a44, ++ 0x0002, 0x0c0c, 0x000b, 0x8072, 0x0000, 0x8000, 0x0000, 0x8000, ++ 0x000f, 0x000a, 0x000b, 0x8072, 0x0000, 0x8000, 0x0000, 0x000a, ++ 0x000b, 0x3d30, 0x000a, 0x7f00, 0x0000, 0xbc80, 0x0001, 0x0007, ++ 0x0000, 0x01e8, 0x0003, 0x1930, 0x000a, 0x7f00, 0x0000, 0x9880, ++ 0x0001, 0x0007, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, ++ 0x0008, 0x8066, 0x0000, 0x000a, 0x0008, 0x45ed, 0x0003, 0x4000, ++ 0x000f, 0x21ef, 0x0003, 0x0870, 0x0008, 0x4000, 0x000f, 0xbac0, ++ 0x0009, 0x0090, 0x0008, 0x09f8, 0x0003, 0x8074, 0x0000, 0x0706, ++ 0x0000, 0x01fa, 0x0003, 0x8074, 0x0000, 0x0703, 0x0000, 0x4000, ++ 0x000f, 0x8010, 0x0008, 0x0023, 0x0000, 0x0235, 0x0003, 0x8010, ++ 0x0008, 0x0008, 0x0000, 0x0235, 0x0003, 0x8010, 0x0008, 0x0022, ++ 0x0008, 0x0235, 0x0003, 0x01e4, 0x000c, 0x8010, 0x0008, 0x0007, ++ 0x0000, 0x01ef, 0x0004, 0x1810, 0x0000, 0x01ef, 0x0004, 0x0241, ++ 0x0003, 0x01e4, 0x000c, 0x8010, 0x0008, 0x001b, 0x0008, 0x01ef, ++ 0x0004, 0x1810, 0x0000, 0x01ef, 0x0004, 0x8074, 0x0000, 0xf080, ++ 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, 0x0d30, 0x0000, 0x000a, ++ 0x000b, 0x8010, 0x0008, 0x0009, 0x0008, 0x0235, 0x0003, 0x8010, ++ 0x0008, 0x0005, 0x0008, 0x0235, 0x0003, 0x808c, 0x0008, 0x0001, ++ 0x0000, 0x8010, 0x0008, 0x0004, 0x0000, 0x4143, 0x000a, 0x085f, ++ 0x0003, 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x0d2a, 0x0008, 0x0235, ++ 0x0003, 0x8010, 0x0008, 0x0003, 0x0008, 0x0239, 0x0003, 0x8010, ++ 0x0008, 0x000b, 0x0000, 0x0239, 0x0003, 0x8010, 0x0008, 0x0002, ++ 0x0000, 0x0239, 0x0003, 0x3a47, 0x0002, 0x0d2d, 0x0003, 0x8010, ++ 0x0008, 0x0006, 0x0008, 0x0239, 0x0003, 0x8074, 0x0000, 0xf000, ++ 0x0008, 0x8072, 0x0000, 0x3000, 0x0008, 0x01ef, 0x0004, 0x01f2, ++ 0x0004, 0x3a40, 0x000a, 0x080a, 0x0003, 0x8010, 0x0008, 0x000c, ++ 0x0008, 0x01ef, 0x0004, 0x000a, 0x000b, 0x8074, 0x0000, 0xf080, ++ 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, 0x0d30, 0x0000, 0x2e4d, ++ 0x0002, 0x2e4d, 0x0002, 0x0a4c, 0x0003, 0x8054, 0x0008, 0x0019, ++ 0x0000, 0x000a, 0x000b, 0x8054, 0x0008, 0x0009, 0x0008, 0x000a, ++ 0x000b, 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x022a, 0x000b, 0x15b6, ++ 0xf4ac, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, ++ 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, ++ 0x8000, 0x89e3 ++}; ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300flx_length01 = 0xd59a; ++#else ++unsigned short risc_code_length01 = 0xd59a; ++#endif ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2300ipx_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2300ipx_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2300ipx_fw.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2300ipx_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,7548 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, 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. ++ * ++ ******************************************************************************/ ++ ++/************************************************************************ ++ * * ++ * --- ISP2300 Initiator/Target Firmware --- * ++ * with support for Internet Protocol * ++ * and 2K port logins. * ++ * * ++ ************************************************************************ ++ */ ++/* ++ * Firmware Version 3.02.28 (13:56 Apr 03, 2004) ++ */ ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300ipx_version = 3*1024+2; ++#else ++unsigned short risc_code_version = 3*1024+2; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned char fw2300ipx_version_str[] = {3, 2,28}; ++#else ++unsigned char firmware_version[] = {3, 2,28}; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++#define fw2300ipx_VERSION_STRING "3.02.28" ++#else ++#define FW_VERSION_STRING "3.02.28" ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300ipx_addr01 = 0x0800 ; ++#else ++unsigned short risc_code_addr01 = 0x0800 ; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300ipx_code01[] = { ++#else ++unsigned short risc_code01[] = { ++#endif ++ 0x0470, 0x0000, 0x0000, 0xe9c7, 0x0000, 0x0003, 0x0002, 0x001c, ++ 0x0137, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, ++ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, ++ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972, ++ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, ++ 0x332e, 0x3032, 0x2e32, 0x3820, 0x2020, 0x2020, 0x2400, 0x20a9, ++ 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f, ++ 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001, ++ 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000, ++ 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, ++ 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, ++ 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00, ++ 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001, ++ 0x0000, 0x20c1, 0x0004, 0x20c9, 0x1bff, 0x2059, 0x0000, 0x2b78, ++ 0x7883, 0x0004, 0x2089, 0x2d29, 0x2051, 0x1800, 0x2a70, 0x20e1, ++ 0x0001, 0x20e9, 0x0001, 0x2009, 0x0000, 0x080c, 0x0e51, 0x2029, ++ 0x4d00, 0x2031, 0xffff, 0x2039, 0x4cd0, 0x2021, 0x0200, 0x20e9, ++ 0x0001, 0x20a1, 0x0000, 0x20a9, 0x0800, 0x900e, 0x4104, 0x20e9, ++ 0x0001, 0x20a1, 0x1000, 0x900e, 0x2001, 0x0cc0, 0x9084, 0x0fff, ++ 0x20a8, 0x4104, 0x2001, 0x0000, 0x9086, 0x0000, 0x0120, 0x21a8, ++ 0x4104, 0x8001, 0x1de0, 0x756e, 0x7672, 0x776a, 0x7476, 0x747a, ++ 0x00e6, 0x2071, 0x1ac8, 0x2472, 0x00ee, 0x20a1, 0x1cd0, 0x7170, ++ 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x000f, 0x2001, 0x0001, ++ 0x9112, 0x900e, 0x21a8, 0x4104, 0x8211, 0x1de0, 0x7170, 0x3400, ++ 0x8001, 0x9102, 0x0120, 0x0218, 0x20a8, 0x900e, 0x4104, 0x2009, ++ 0x1800, 0x810d, 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x001f, ++ 0x2001, 0x0001, 0x9112, 0x20e9, 0x0001, 0x20a1, 0x0800, 0x900e, ++ 0x20a9, 0x0800, 0x4104, 0x8211, 0x1dd8, 0x080c, 0x0f17, 0x080c, ++ 0x6028, 0x080c, 0xadf7, 0x080c, 0x10ce, 0x080c, 0x12ed, 0x080c, ++ 0x1ba4, 0x080c, 0x0d69, 0x080c, 0x1053, 0x080c, 0x3425, 0x080c, ++ 0x76b8, 0x080c, 0x6996, 0x080c, 0x86f6, 0x080c, 0x842a, 0x080c, ++ 0x2478, 0x080c, 0x8f98, 0x080c, 0x7d82, 0x080c, 0x22b1, 0x080c, ++ 0x23e5, 0x080c, 0x246d, 0x2091, 0x3009, 0x7883, 0x0000, 0x1004, ++ 0x091f, 0x7880, 0x9086, 0x0002, 0x1190, 0x7883, 0x4000, 0x7837, ++ 0x4000, 0x7833, 0x0010, 0x0e04, 0x0913, 0x2091, 0x5000, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x2071, ++ 0x1800, 0x7003, 0x0000, 0x2071, 0x1800, 0x7000, 0x908e, 0x0003, ++ 0x1178, 0x080c, 0x4bc9, 0x080c, 0x344c, 0x080c, 0x7729, 0x080c, ++ 0x6ed7, 0x080c, 0x87d4, 0x080c, 0x8453, 0x080c, 0x2c93, 0x0c58, ++ 0x000b, 0x0c78, 0x0944, 0x0945, 0x0ae7, 0x0942, 0x0bae, 0x0d68, ++ 0x0d68, 0x0d68, 0x080c, 0x0dd5, 0x0005, 0x0126, 0x00f6, 0x2091, ++ 0x8000, 0x7000, 0x9086, 0x0001, 0x1904, 0x0aba, 0x080c, 0x56de, ++ 0x1130, 0x0026, 0x2011, 0x0080, 0x080c, 0x0edf, 0x002e, 0x080c, ++ 0x73bc, 0x0150, 0x080c, 0x73df, 0x15a0, 0x2079, 0x0100, 0x7828, ++ 0x9085, 0x1800, 0x782a, 0x0468, 0x080c, 0x72ee, 0x7000, 0x9086, ++ 0x0001, 0x1904, 0x0aba, 0x7098, 0x9086, 0x0028, 0x1904, 0x0aba, ++ 0x080c, 0x8422, 0x080c, 0x8414, 0x2001, 0x0161, 0x2003, 0x0001, ++ 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0x9295, 0x5e2f, 0x7a2a, ++ 0x2011, 0x7252, 0x080c, 0x84f3, 0x2011, 0x7245, 0x080c, 0x85cd, ++ 0x2011, 0x5e83, 0x080c, 0x84f3, 0x2011, 0x8030, 0x901e, 0x7396, ++ 0x04d0, 0x080c, 0x5730, 0x2079, 0x0100, 0x7844, 0x9005, 0x1904, ++ 0x0aba, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x2011, 0x7252, 0x080c, ++ 0x84f3, 0x2011, 0x7245, 0x080c, 0x85cd, 0x2001, 0x0265, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x7840, 0x9084, 0xfffb, 0x7842, 0x2001, ++ 0x19a6, 0x2004, 0x9005, 0x1140, 0x00c6, 0x2061, 0x0100, 0x080c, ++ 0x5fd0, 0x00ce, 0x0804, 0x0aba, 0x780f, 0x006b, 0x7a28, 0x080c, ++ 0x73c4, 0x0118, 0x9295, 0x5e2f, 0x0010, 0x9295, 0x402f, 0x7a2a, ++ 0x2011, 0x8010, 0x73d8, 0x2001, 0x19a7, 0x2003, 0x0001, 0x080c, ++ 0x2b59, 0x080c, 0x4b04, 0x7248, 0xc284, 0x724a, 0x2001, 0x180c, ++ 0x200c, 0xc1ac, 0xc1cc, 0x2102, 0x080c, 0xa51d, 0x2011, 0x0004, ++ 0x080c, 0xcb45, 0x080c, 0x6822, 0x080c, 0x73bc, 0x1120, 0x080c, ++ 0x2b9d, 0x02e0, 0x0400, 0x080c, 0x5fd7, 0x0140, 0x7097, 0x0001, ++ 0x70d3, 0x0000, 0x080c, 0x58fd, 0x0804, 0x0aba, 0x080c, 0x56cf, ++ 0xd094, 0x0188, 0x2011, 0x180c, 0x2204, 0xc0cd, 0x2012, 0x080c, ++ 0x56d3, 0xd0d4, 0x1118, 0x080c, 0x2b9d, 0x1270, 0x2011, 0x180c, ++ 0x2204, 0xc0bc, 0x00a8, 0x080c, 0x56d3, 0xd0d4, 0x1db8, 0x2011, ++ 0x180c, 0x2204, 0xc0bd, 0x0060, 0x2011, 0x180c, 0x2204, 0xc0bd, ++ 0x2012, 0x080c, 0x696a, 0x1128, 0xd0a4, 0x0118, 0x2204, 0xc0fd, ++ 0x2012, 0x080c, 0x6930, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x00a8, ++ 0x707f, 0x0000, 0x080c, 0x73bc, 0x1130, 0x70b0, 0x9005, 0x1168, ++ 0x080c, 0xcf81, 0x0050, 0x080c, 0xcf81, 0x70dc, 0xd09c, 0x1128, ++ 0x70b0, 0x9005, 0x0110, 0x080c, 0x5fad, 0x70e7, 0x0000, 0x70e3, ++ 0x0000, 0x70a7, 0x0000, 0x080c, 0x2ba5, 0x0228, 0x2011, 0x0101, ++ 0x2204, 0xc0c4, 0x2012, 0x72dc, 0x080c, 0x73bc, 0x1178, 0x9016, ++ 0x0016, 0x080c, 0x2956, 0x2019, 0x196d, 0x211a, 0x001e, 0x705f, ++ 0xffff, 0x7063, 0x00ef, 0x7083, 0x0000, 0x0020, 0x2019, 0x196d, ++ 0x201b, 0x0000, 0x2079, 0x1847, 0x7804, 0xd0ac, 0x0108, 0xc295, ++ 0x72de, 0x080c, 0x73bc, 0x0118, 0x9296, 0x0004, 0x0548, 0x2011, ++ 0x0001, 0x080c, 0xcb45, 0x70ab, 0x0000, 0x70af, 0xffff, 0x7003, ++ 0x0002, 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0x9085, 0x0003, ++ 0x782a, 0x00fe, 0x080c, 0x2f96, 0x2011, 0x0005, 0x080c, 0xa653, ++ 0x080c, 0x968d, 0x080c, 0x73bc, 0x0148, 0x00c6, 0x2061, 0x0100, ++ 0x0016, 0x080c, 0x2956, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, ++ 0x70ab, 0x0000, 0x70af, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, ++ 0x0100, 0x7827, 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe, ++ 0x2011, 0x0005, 0x080c, 0xa653, 0x080c, 0x968d, 0x080c, 0x73bc, ++ 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x2956, 0x61e2, ++ 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x00b6, 0x080c, ++ 0x73bc, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c, ++ 0x73bc, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, 0x86ff, 0x0138, ++ 0x9180, 0x1000, 0x2004, 0x905d, 0x0110, 0xb800, 0xd0bc, 0x090c, ++ 0x32bb, 0x8108, 0x1f04, 0x0ace, 0x707f, 0x0000, 0x7080, 0x9084, ++ 0x00ff, 0x7082, 0x70b3, 0x0000, 0x00be, 0x00ce, 0x0005, 0x00b6, ++ 0x0126, 0x2091, 0x8000, 0x7000, 0x9086, 0x0002, 0x1904, 0x0bab, ++ 0x70ac, 0x9086, 0xffff, 0x0130, 0x080c, 0x2f96, 0x080c, 0x968d, ++ 0x0804, 0x0bab, 0x70dc, 0xd0ac, 0x1110, 0xd09c, 0x0558, 0xd084, ++ 0x0548, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, 0xd08c, ++ 0x0508, 0x080c, 0x331e, 0x11d0, 0x70e0, 0x9086, 0xffff, 0x01b0, ++ 0x080c, 0x312b, 0x080c, 0x968d, 0x70dc, 0xd094, 0x1904, 0x0bab, ++ 0x2011, 0x0001, 0x080c, 0xd230, 0x0110, 0x2011, 0x0003, 0x901e, ++ 0x080c, 0x3165, 0x080c, 0x968d, 0x0804, 0x0bab, 0x70e4, 0x9005, ++ 0x1904, 0x0bab, 0x70a8, 0x9005, 0x1904, 0x0bab, 0x70dc, 0xd0a4, ++ 0x0118, 0xd0b4, 0x0904, 0x0bab, 0x080c, 0x6930, 0x1904, 0x0bab, ++ 0x080c, 0x6983, 0x1904, 0x0bab, 0x080c, 0x696a, 0x01c0, 0x0156, ++ 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x65ff, 0x1118, ++ 0xb800, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x0b44, 0x00ce, ++ 0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x0bab, 0x0006, ++ 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, 0x2011, 0x19b3, 0x080c, ++ 0x0f87, 0x2011, 0x19cd, 0x080c, 0x0f87, 0x7030, 0xc08c, 0x7032, ++ 0x7003, 0x0003, 0x70af, 0xffff, 0x080c, 0x56de, 0x1130, 0x0026, ++ 0x2011, 0x0040, 0x080c, 0x0edf, 0x002e, 0x9006, 0x080c, 0x27ea, ++ 0x080c, 0x331e, 0x0118, 0x080c, 0x4ca1, 0x0050, 0x0036, 0x0046, ++ 0x2019, 0xffff, 0x2021, 0x0006, 0x080c, 0x4cbb, 0x004e, 0x003e, ++ 0x00f6, 0x2079, 0x0100, 0x080c, 0x73df, 0x0150, 0x080c, 0x73bc, ++ 0x7828, 0x0118, 0x9084, 0xe1ff, 0x0010, 0x9084, 0xffdf, 0x782a, ++ 0x00fe, 0x2001, 0x19e8, 0x2004, 0x9086, 0x0005, 0x1120, 0x2011, ++ 0x0000, 0x080c, 0xa653, 0x2011, 0x0000, 0x080c, 0xa65d, 0x080c, ++ 0x968d, 0x080c, 0x97b9, 0x012e, 0x00be, 0x0005, 0x0016, 0x0046, ++ 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x7904, 0x918c, ++ 0xfffd, 0x7906, 0x2009, 0x00f7, 0x080c, 0x5f96, 0x7940, 0x918c, ++ 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, 0xd19c, ++ 0x0110, 0x7827, 0x0008, 0x0006, 0x0036, 0x0156, 0x7954, 0xd1ac, ++ 0x1904, 0x0c3b, 0x2001, 0x19a7, 0x2004, 0x9005, 0x1518, 0x080c, ++ 0x2c20, 0x1148, 0x2001, 0x0001, 0x080c, 0x2b88, 0x2001, 0x0001, ++ 0x080c, 0x2b6b, 0x00b8, 0x080c, 0x2c28, 0x1138, 0x9006, 0x080c, ++ 0x2b88, 0x9006, 0x080c, 0x2b6b, 0x0068, 0x080c, 0x2c30, 0x1d50, ++ 0x2001, 0x1998, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, 0x2982, ++ 0x0804, 0x0d1a, 0x080c, 0x73cd, 0x0148, 0x080c, 0x73df, 0x1118, ++ 0x080c, 0x76b3, 0x0050, 0x080c, 0x73c4, 0x0dd0, 0x080c, 0x76ae, ++ 0x080c, 0x76a4, 0x080c, 0x72ee, 0x0058, 0x080c, 0x73bc, 0x0140, ++ 0x2009, 0x00f8, 0x080c, 0x5f96, 0x7843, 0x0090, 0x7843, 0x0010, ++ 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138, 0x080c, 0x73bc, 0x0138, ++ 0x7824, 0xd0ac, 0x1904, 0x0d1f, 0x1f04, 0x0c1a, 0x0070, 0x7824, ++ 0x080c, 0x73d6, 0x0118, 0xd0ac, 0x1904, 0x0d1f, 0x9084, 0x1800, ++ 0x0d98, 0x7003, 0x0001, 0x0804, 0x0d1f, 0x2001, 0x0001, 0x080c, ++ 0x27ea, 0x0804, 0x0d32, 0x2001, 0x19a7, 0x2004, 0x9005, 0x1518, ++ 0x080c, 0x2c20, 0x1148, 0x2001, 0x0001, 0x080c, 0x2b88, 0x2001, ++ 0x0001, 0x080c, 0x2b6b, 0x00b8, 0x080c, 0x2c28, 0x1138, 0x9006, ++ 0x080c, 0x2b88, 0x9006, 0x080c, 0x2b6b, 0x0068, 0x080c, 0x2c30, ++ 0x1d50, 0x2001, 0x1998, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, ++ 0x2982, 0x0804, 0x0d1a, 0x7850, 0x9085, 0x0040, 0x7852, 0x7938, ++ 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x2c38, 0x9085, 0x2000, ++ 0x7852, 0x793a, 0x20a9, 0x0046, 0x1d04, 0x0c74, 0x080c, 0x85ad, ++ 0x1f04, 0x0c74, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf, 0x7852, ++ 0x793a, 0x080c, 0x73cd, 0x0148, 0x080c, 0x73df, 0x1118, 0x080c, ++ 0x76b3, 0x0050, 0x080c, 0x73c4, 0x0dd0, 0x080c, 0x76ae, 0x080c, ++ 0x76a4, 0x080c, 0x72ee, 0x0020, 0x2009, 0x00f8, 0x080c, 0x5f96, ++ 0x20a9, 0x0028, 0xa001, 0x1f04, 0x0c9a, 0x7850, 0x9085, 0x1400, ++ 0x7852, 0x080c, 0x73bc, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, ++ 0x2021, 0xe678, 0x2019, 0xea60, 0x0d0c, 0x85ad, 0x7820, 0xd09c, ++ 0x1580, 0x080c, 0x73bc, 0x0904, 0x0cff, 0x7824, 0xd0ac, 0x1904, ++ 0x0d1f, 0x080c, 0x73df, 0x1528, 0x0046, 0x2021, 0x0320, 0x8421, ++ 0x1df0, 0x004e, 0x7827, 0x1800, 0x080c, 0x2c38, 0x7824, 0x9084, ++ 0x1800, 0x1160, 0x9484, 0x0fff, 0x1138, 0x2001, 0x1810, 0x2004, ++ 0xd0fc, 0x0110, 0x080c, 0x0d45, 0x8421, 0x1158, 0x1d04, 0x0cda, ++ 0x080c, 0x85ad, 0x080c, 0x76ae, 0x080c, 0x76a4, 0x7003, 0x0001, ++ 0x04f0, 0x8319, 0x1948, 0x1d04, 0x0ce7, 0x080c, 0x85ad, 0x2009, ++ 0x199b, 0x2104, 0x9005, 0x0118, 0x8001, 0x200a, 0x1178, 0x200b, ++ 0x000a, 0x7827, 0x0048, 0x20a9, 0x0002, 0x080c, 0x2c19, 0x7924, ++ 0x080c, 0x2c38, 0xd19c, 0x0110, 0x080c, 0x2b59, 0x00d8, 0x080c, ++ 0x73cd, 0x1140, 0x94a2, 0x03e8, 0x1128, 0x080c, 0x7394, 0x7003, ++ 0x0001, 0x00a8, 0x7827, 0x1800, 0x080c, 0x2c38, 0x7824, 0x080c, ++ 0x73d6, 0x0110, 0xd0ac, 0x1158, 0x9084, 0x1800, 0x0950, 0x7003, ++ 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x27ea, 0x0078, 0x2009, ++ 0x180c, 0x210c, 0xd19c, 0x1120, 0x7904, 0x918d, 0x0002, 0x7906, ++ 0x7827, 0x0048, 0x7828, 0x9085, 0x0028, 0x782a, 0x7850, 0x9085, ++ 0x0400, 0x7852, 0x2001, 0x19a7, 0x2003, 0x0000, 0x9006, 0x78f2, ++ 0x015e, 0x003e, 0x000e, 0x080c, 0x56de, 0x1110, 0x080c, 0x0e62, ++ 0x012e, 0x00fe, 0x004e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0036, ++ 0x0046, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0069, ++ 0x0d0c, 0x85ad, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x004e, 0x003e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0x189e, ++ 0x7004, 0x9086, 0x0001, 0x1110, 0x080c, 0x344c, 0x00ee, 0x0005, ++ 0x0005, 0x2a70, 0x2061, 0x19ab, 0x2063, 0x0003, 0x6007, 0x0002, ++ 0x600b, 0x001c, 0x600f, 0x0137, 0x2001, 0x197c, 0x900e, 0x2102, ++ 0x7196, 0x2001, 0x0100, 0x2004, 0x9082, 0x0002, 0x0218, 0x705f, ++ 0xffff, 0x0008, 0x715e, 0x7067, 0xffff, 0x717e, 0x7182, 0x080c, ++ 0xcf81, 0x2061, 0x196c, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, ++ 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x001f, 0x611a, 0x601f, ++ 0x07d0, 0x2061, 0x1974, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, ++ 0x0200, 0x6013, 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, ++ 0x1989, 0x6003, 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, ++ 0x2020, 0x2001, 0x182c, 0x2102, 0x0005, 0x9016, 0x080c, 0x65ff, ++ 0x1178, 0xb804, 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, ++ 0xff00, 0x98c6, 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, ++ 0x8108, 0x9186, 0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, ++ 0x2079, 0x0000, 0x000e, 0x00f6, 0x0010, 0x2091, 0x8000, 0x0e04, ++ 0x0dd7, 0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, ++ 0x000e, 0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, ++ 0x7886, 0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, ++ 0x00d6, 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1aa2, 0x7a08, ++ 0x226a, 0x2069, 0x1aa3, 0x7a18, 0x226a, 0x8d68, 0x7a1c, 0x226a, ++ 0x782c, 0x2019, 0x1ab0, 0x201a, 0x2019, 0x1ab3, 0x9016, 0x7808, ++ 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210, 0x8318, 0x9386, 0x1ac8, ++ 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110, 0x2011, 0xdead, 0x2019, ++ 0x1ab1, 0x782c, 0x201a, 0x8318, 0x221a, 0x7803, 0x0000, 0x2069, ++ 0x1a82, 0x901e, 0x20a9, 0x0020, 0x7b26, 0x7a28, 0x226a, 0x8d68, ++ 0x8318, 0x1f04, 0x0e24, 0x002e, 0x003e, 0x00de, 0x015e, 0x2079, ++ 0x1800, 0x7803, 0x0005, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x0180, 0x2001, 0x1a19, 0x2004, 0x9005, 0x0128, 0x2001, ++ 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, ++ 0x2003, 0x1001, 0x080c, 0x56de, 0x1110, 0x080c, 0x0e99, 0x0cd0, ++ 0x0005, 0x918c, 0x03ff, 0x2001, 0x0003, 0x2004, 0x9084, 0x0600, ++ 0x1118, 0x918d, 0x2800, 0x0010, 0x918d, 0x2000, 0x2001, 0x017f, ++ 0x2102, 0x0005, 0x00f6, 0x0006, 0x2079, 0x1827, 0x2f04, 0x8000, ++ 0x207a, 0x080c, 0x2c30, 0x1150, 0x0006, 0x2001, 0x1998, 0x2004, ++ 0xd0fc, 0x000e, 0x1118, 0x9082, 0x7530, 0x0010, 0x9082, 0x000f, ++ 0x0258, 0x9006, 0x207a, 0x2079, 0x182a, 0x2f04, 0x9084, 0x0001, ++ 0x9086, 0x0001, 0x207a, 0x0090, 0x2079, 0x182a, 0x2f7c, 0x8fff, ++ 0x1138, 0x0026, 0x2011, 0x0080, 0x080c, 0x0edf, 0x002e, 0x0030, ++ 0x0026, 0x2011, 0x0000, 0x080c, 0x0edf, 0x002e, 0x000e, 0x00fe, ++ 0x0005, 0x0026, 0x0126, 0x2011, 0x0080, 0x080c, 0x0edf, 0x20a9, ++ 0x0fff, 0x080c, 0x0f00, 0x2011, 0x0040, 0x04c9, 0x20a9, 0x0fff, ++ 0x080c, 0x0f00, 0x0c80, 0x7038, 0xd0b4, 0x1128, 0x0026, 0x2011, ++ 0x0040, 0x0469, 0x002e, 0x0005, 0x7038, 0xd0b4, 0x1128, 0x0026, ++ 0x2011, 0x0080, 0x0421, 0x002e, 0x0005, 0x0026, 0x70ef, 0x0000, ++ 0x0459, 0x1148, 0x080c, 0x2c30, 0x1118, 0x2011, 0x8484, 0x0058, ++ 0x2011, 0x8282, 0x0040, 0x080c, 0x2c30, 0x1118, 0x2011, 0xcdc5, ++ 0x0010, 0x2011, 0xcac2, 0x00e9, 0x002e, 0x0005, 0xd0b4, 0x0130, ++ 0x0006, 0x3b00, 0x9084, 0xff3f, 0x20d8, 0x000e, 0x0005, 0x0016, ++ 0x3b08, 0x3a00, 0x9104, 0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, ++ 0x9205, 0x20d0, 0x001e, 0x0005, 0x2001, 0x183a, 0x2004, 0xd0dc, ++ 0x0005, 0x9e86, 0x1800, 0x190c, 0x0dd5, 0x70e8, 0xd0e4, 0x0108, ++ 0xc2e5, 0x72ea, 0xd0e4, 0x1118, 0x9294, 0x00c0, 0x0c01, 0x0005, ++ 0x1d04, 0x0f00, 0x2091, 0x6000, 0x1f04, 0x0f00, 0x0005, 0x890e, ++ 0x810e, 0x810f, 0x9194, 0x003f, 0x918c, 0xffc0, 0x0005, 0x0006, ++ 0x2200, 0x914d, 0x894f, 0x894d, 0x894d, 0x000e, 0x0005, 0x01d6, ++ 0x0146, 0x0036, 0x0096, 0x2061, 0x188d, 0x600b, 0x0000, 0x600f, ++ 0x0000, 0x6003, 0x0000, 0x6007, 0x0000, 0x2009, 0xffc0, 0x2105, ++ 0x0006, 0x2001, 0xaaaa, 0x200f, 0x2019, 0x5555, 0x9016, 0x2049, ++ 0x0bff, 0xab02, 0xa001, 0xa001, 0xa800, 0x9306, 0x1138, 0x2105, ++ 0x9306, 0x0120, 0x8210, 0x99c8, 0x0400, 0x0c98, 0x000e, 0x200f, ++ 0x2001, 0x189d, 0x928a, 0x000e, 0x1638, 0x928a, 0x0006, 0x2011, ++ 0x0006, 0x1210, 0x2011, 0x0000, 0x2202, 0x9006, 0x2008, 0x82ff, ++ 0x01b0, 0x8200, 0x600a, 0x600f, 0xffff, 0x6003, 0x0002, 0x6007, ++ 0x0000, 0x0026, 0x2019, 0x0010, 0x9280, 0x0001, 0x20e8, 0x21a0, ++ 0x21a8, 0x4104, 0x8319, 0x1de0, 0x8211, 0x1da0, 0x002e, 0x009e, ++ 0x003e, 0x014e, 0x01de, 0x0005, 0x2011, 0x000e, 0x08e8, 0x0016, ++ 0x0026, 0x0096, 0x3348, 0x080c, 0x0f07, 0x2100, 0x9300, 0x2098, ++ 0x22e0, 0x009e, 0x002e, 0x001e, 0x0036, 0x3518, 0x20a9, 0x0001, ++ 0x4002, 0x8007, 0x4004, 0x8319, 0x1dd8, 0x003e, 0x0005, 0x20e9, ++ 0x0001, 0x71b8, 0x81ff, 0x11c0, 0x9006, 0x2009, 0x0200, 0x20a9, ++ 0x0002, 0x9298, 0x0018, 0x23a0, 0x4001, 0x2009, 0x0700, 0x20a9, ++ 0x0002, 0x9298, 0x0008, 0x23a0, 0x4001, 0x707c, 0x8007, 0x7180, ++ 0x810f, 0x20a9, 0x0002, 0x4001, 0x9298, 0x000c, 0x23a0, 0x900e, ++ 0x080c, 0x0db5, 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x4001, ++ 0x0005, 0x89ff, 0x0140, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, ++ 0x1031, 0x009e, 0x0cb0, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, ++ 0x10aa, 0x090c, 0x0dd5, 0x00ee, 0x0005, 0x0086, 0x00e6, 0x0006, ++ 0x0026, 0x0036, 0x0126, 0x2091, 0x8000, 0x00c9, 0x2071, 0x1800, ++ 0x73c0, 0x702c, 0x9016, 0x9045, 0x0158, 0x8210, 0x9906, 0x090c, ++ 0x0dd5, 0x2300, 0x9202, 0x0120, 0x1a0c, 0x0dd5, 0xa000, 0x0c98, ++ 0x012e, 0x003e, 0x002e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x0086, ++ 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1910, 0x7010, ++ 0x9005, 0x0140, 0x7018, 0x9045, 0x0128, 0x9906, 0x090c, 0x0dd5, ++ 0xa000, 0x0cc8, 0x012e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x0126, 0x2091, 0x8000, 0x70c0, 0x8001, 0x0270, ++ 0x70c2, 0x702c, 0x2048, 0x9085, 0x0001, 0xa800, 0x702e, 0xa803, ++ 0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x70c0, 0x90ca, ++ 0x0020, 0x0268, 0x8001, 0x70c2, 0x702c, 0x2048, 0xa800, 0x702e, ++ 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, ++ 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x0016, 0x890e, 0x810e, ++ 0x810f, 0x9184, 0x003f, 0xa862, 0x9184, 0xffc0, 0xa85e, 0x001e, ++ 0x0020, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x702c, ++ 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8414, ++ 0x012e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9026, 0x2009, 0x0000, ++ 0x2049, 0x0400, 0x2900, 0x702e, 0x8940, 0x2800, 0xa802, 0xa95e, ++ 0xa863, 0x0001, 0x8420, 0x9886, 0x0440, 0x0120, 0x2848, 0x9188, ++ 0x0040, 0x0c90, 0x2071, 0x188d, 0x7000, 0x9005, 0x11a0, 0x2001, ++ 0x0534, 0xa802, 0x2048, 0x2009, 0x4d00, 0x8940, 0x2800, 0xa802, ++ 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, 0x0800, 0x0120, 0x2848, ++ 0x9188, 0x0040, 0x0c90, 0x2071, 0x188d, 0x7104, 0x7200, 0x82ff, ++ 0x01d0, 0x7308, 0x8318, 0x831f, 0x831b, 0x831b, 0x7312, 0x8319, ++ 0x2001, 0x0800, 0xa802, 0x2048, 0x8900, 0xa802, 0x2040, 0xa95e, ++ 0xaa62, 0x8420, 0x2300, 0x9906, 0x0130, 0x2848, 0x9188, 0x0040, ++ 0x9291, 0x0000, 0x0c88, 0xa803, 0x0000, 0x2071, 0x1800, 0x74be, ++ 0x74c2, 0x0005, 0x00e6, 0x0016, 0x9984, 0xfc00, 0x01e8, 0x908c, ++ 0xf800, 0x1168, 0x9982, 0x0400, 0x02b8, 0x9982, 0x0440, 0x0278, ++ 0x9982, 0x0534, 0x0288, 0x9982, 0x0800, 0x1270, 0x0040, 0x9982, ++ 0x0800, 0x0250, 0x2071, 0x188d, 0x7010, 0x9902, 0x1228, 0x9085, ++ 0x0001, 0x001e, 0x00ee, 0x0005, 0x9006, 0x0cd8, 0x00e6, 0x2071, ++ 0x1a18, 0x7007, 0x0000, 0x9006, 0x701e, 0x7022, 0x7002, 0x2071, ++ 0x0000, 0x7010, 0x9085, 0x8044, 0x7012, 0x2071, 0x0080, 0x9006, ++ 0x20a9, 0x0040, 0x7022, 0x1f04, 0x10e2, 0x702b, 0x0020, 0x00ee, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0xa06f, 0x0000, 0x2071, ++ 0x1a18, 0x701c, 0x9088, 0x1a22, 0x280a, 0x8000, 0x9084, 0x003f, ++ 0x701e, 0x7120, 0x9106, 0x090c, 0x0dd5, 0x7004, 0x9005, 0x1128, ++ 0x00f6, 0x2079, 0x0080, 0x00a9, 0x00fe, 0x00ee, 0x012e, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x00e6, 0x2071, 0x1a18, 0x7004, 0x9005, ++ 0x1128, 0x00f6, 0x2079, 0x0080, 0x0021, 0x00fe, 0x00ee, 0x012e, ++ 0x0005, 0x7004, 0x9086, 0x0000, 0x1110, 0x7007, 0x0006, 0x7000, ++ 0x0002, 0x112b, 0x12ae, 0x1129, 0x1129, 0x12a2, 0x12a2, 0x12a2, ++ 0x12a2, 0x080c, 0x0dd5, 0x701c, 0x7120, 0x9106, 0x1148, 0x792c, ++ 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110, 0x7007, 0x0000, 0x0005, ++ 0x0096, 0x9180, 0x1a22, 0x2004, 0x700a, 0x2048, 0x8108, 0x918c, ++ 0x003f, 0x7122, 0x782b, 0x0026, 0xa88c, 0x7802, 0xa890, 0x7806, ++ 0xa894, 0x780a, 0xa898, 0x780e, 0xa878, 0x700e, 0xa870, 0x7016, ++ 0xa874, 0x701a, 0xa868, 0x009e, 0xd084, 0x0120, 0x7007, 0x0001, ++ 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1, 0x0005, 0x0016, 0x0026, ++ 0x710c, 0x2011, 0x0040, 0x9182, 0x0040, 0x1210, 0x2110, 0x9006, ++ 0x700e, 0x7212, 0x8203, 0x7812, 0x782b, 0x0020, 0x782b, 0x0041, ++ 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x0136, 0x0146, 0x0156, ++ 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9, 0x0000, 0x20a1, 0x0088, ++ 0x782b, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040, 0x1210, ++ 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006, 0x8203, 0x7812, 0x782b, ++ 0x0020, 0x3300, 0x701a, 0x782b, 0x0001, 0x015e, 0x014e, 0x013e, ++ 0x002e, 0x001e, 0x0005, 0x2009, 0x1a18, 0x2104, 0xc095, 0x200a, ++ 0x080c, 0x1108, 0x0005, 0x0016, 0x00e6, 0x2071, 0x1a18, 0x00f6, ++ 0x2079, 0x0080, 0x792c, 0xd1bc, 0x190c, 0x0dce, 0x782b, 0x0002, ++ 0xd1fc, 0x0120, 0x918c, 0x0700, 0x7004, 0x0023, 0x00fe, 0x00ee, ++ 0x001e, 0x0005, 0x1119, 0x11c1, 0x11f5, 0x12cd, 0x0dd5, 0x12e8, ++ 0x0dd5, 0x918c, 0x0700, 0x1550, 0x0136, 0x0146, 0x0156, 0x7014, ++ 0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, 0x2099, 0x0088, 0x782b, ++ 0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, 0x701a, 0x015e, 0x014e, ++ 0x013e, 0x700c, 0x9005, 0x0578, 0x7800, 0x7802, 0x7804, 0x7806, ++ 0x080c, 0x115e, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0100, ++ 0x009e, 0x7007, 0x0000, 0x080c, 0x1119, 0x0005, 0x7008, 0x0096, ++ 0x2048, 0xa86f, 0x0200, 0x009e, 0x0ca0, 0x918c, 0x0700, 0x1150, ++ 0x700c, 0x9005, 0x0180, 0x7800, 0x7802, 0x7804, 0x7806, 0x080c, ++ 0x1173, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e, ++ 0x7007, 0x0000, 0x0080, 0x0096, 0x7008, 0x2048, 0x7800, 0xa88e, ++ 0x7804, 0xa892, 0x7808, 0xa896, 0x780c, 0xa89a, 0xa86f, 0x0100, ++ 0x009e, 0x7007, 0x0000, 0x0096, 0x00d6, 0x7008, 0x2048, 0x2001, ++ 0x18b9, 0x2004, 0x9906, 0x1128, 0xa89c, 0x080f, 0x00de, 0x009e, ++ 0x00a0, 0x00de, 0x009e, 0x0096, 0x00d6, 0x7008, 0x2048, 0x0081, ++ 0x0150, 0xa89c, 0x0086, 0x2940, 0x080f, 0x008e, 0x00de, 0x009e, ++ 0x080c, 0x1108, 0x0005, 0x00de, 0x009e, 0x080c, 0x1108, 0x0005, ++ 0xa8a8, 0xd08c, 0x0005, 0x0096, 0xa0a0, 0x904d, 0x090c, 0x0dd5, ++ 0xa06c, 0x908e, 0x0100, 0x0130, 0xa87b, 0x0030, 0xa883, 0x0000, ++ 0xa897, 0x4002, 0x080c, 0x6c75, 0xa09f, 0x0000, 0xa0a3, 0x0000, ++ 0x2848, 0x080c, 0x1031, 0x009e, 0x0005, 0x00a6, 0xa0a0, 0x904d, ++ 0x090c, 0x0dd5, 0xa06c, 0x908e, 0x0100, 0x0128, 0xa87b, 0x0001, ++ 0xa883, 0x0000, 0x00c0, 0xa80c, 0x2050, 0xb004, 0x9005, 0x0198, ++ 0xa80e, 0x2050, 0x8006, 0x8006, 0x8007, 0x908c, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x0002, 0xa076, 0xa172, 0xb000, 0xa07a, 0x2810, ++ 0x080c, 0x10e9, 0x00e8, 0xa97c, 0xa894, 0x0016, 0x0006, 0x080c, ++ 0x6c75, 0x000e, 0x001e, 0xd1fc, 0x1138, 0xd1f4, 0x0128, 0x00c6, ++ 0x2060, 0x080c, 0xae61, 0x00ce, 0x7008, 0x2048, 0xa89f, 0x0000, ++ 0xa8a3, 0x0000, 0x080c, 0x1031, 0x7007, 0x0000, 0x080c, 0x1108, ++ 0x00ae, 0x0005, 0x0126, 0x2091, 0x8000, 0x782b, 0x1001, 0x7007, ++ 0x0005, 0x7000, 0xc094, 0x7002, 0x012e, 0x0005, 0x0096, 0x2001, ++ 0x192e, 0x204c, 0xa87c, 0x7812, 0xa88c, 0x7802, 0xa890, 0x7806, ++ 0xa894, 0x780a, 0xa898, 0x780e, 0x782b, 0x0020, 0x0126, 0x2091, ++ 0x8000, 0x782b, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, ++ 0x2900, 0x700a, 0x012e, 0x009e, 0x0005, 0x20e1, 0x0000, 0x2099, ++ 0x0088, 0x782b, 0x0040, 0x0096, 0x2001, 0x192e, 0x204c, 0xaa7c, ++ 0x009e, 0x080c, 0x8a0c, 0x2009, 0x188c, 0x2104, 0x9084, 0xfffc, ++ 0x200a, 0x080c, 0x887f, 0x7007, 0x0000, 0x080c, 0x1119, 0x0005, ++ 0x7007, 0x0000, 0x080c, 0x1119, 0x0005, 0x0126, 0x2091, 0x2200, ++ 0x2079, 0x0300, 0x2071, 0x1a62, 0x7003, 0x0000, 0x78bf, 0x00f6, ++ 0x781b, 0x4800, 0x00c1, 0x7803, 0x0003, 0x780f, 0x0000, 0x20a9, ++ 0x03d0, 0x2061, 0xea18, 0x2c0d, 0x7912, 0xe104, 0x9ce0, 0x0002, ++ 0x7916, 0x1f04, 0x1303, 0x7807, 0x0007, 0x7803, 0x0000, 0x7803, ++ 0x0001, 0x012e, 0x0005, 0x00c6, 0x7803, 0x0000, 0x7808, 0xd09c, ++ 0x0120, 0x7820, 0x080c, 0x1362, 0x0cc8, 0x2001, 0x1a63, 0x2003, ++ 0x0000, 0x78ab, 0x0004, 0x78ac, 0xd0ac, 0x1de8, 0x78ab, 0x0002, ++ 0x7807, 0x0007, 0x7827, 0x0030, 0x782b, 0x0400, 0x7827, 0x0031, ++ 0x782b, 0x1a82, 0x781f, 0xff00, 0x781b, 0xb700, 0x2001, 0x0200, ++ 0x2004, 0xd0dc, 0x0110, 0x781f, 0x0303, 0x2061, 0x1a82, 0x602f, ++ 0x1cd0, 0x2001, 0x181a, 0x2004, 0x9082, 0x1cd0, 0x6032, 0x603b, ++ 0x2090, 0x2001, 0x3325, 0xd0fc, 0x190c, 0x0dd5, 0x2001, 0x0003, ++ 0x2004, 0xd0d4, 0x1118, 0x783f, 0x3325, 0x0020, 0x9084, 0xc000, ++ 0x783f, 0xb325, 0x604f, 0x193c, 0x2001, 0x1927, 0x2004, 0x6042, ++ 0x00ce, 0x0005, 0x9086, 0x000d, 0x11d0, 0x7808, 0xd09c, 0x01b8, ++ 0x7820, 0x0026, 0x2010, 0x080c, 0xcb23, 0x0180, 0x2260, 0x6000, ++ 0x9086, 0x0004, 0x1158, 0x0016, 0x6120, 0x9186, 0x0009, 0x0108, ++ 0x0020, 0x2009, 0x004c, 0x080c, 0xaedc, 0x001e, 0x002e, 0x0005, ++ 0x0126, 0x2091, 0x2200, 0x7908, 0x9184, 0x0070, 0x190c, 0x0dce, ++ 0xd19c, 0x0158, 0x7820, 0x908c, 0xf000, 0x15e8, 0x908a, 0x0024, ++ 0x1a0c, 0x0dd5, 0x0023, 0x012e, 0x0005, 0x012e, 0x0005, 0x13bb, ++ 0x13bb, 0x13d2, 0x13d7, 0x13db, 0x13e0, 0x1408, 0x140c, 0x141a, ++ 0x141e, 0x13bb, 0x14e9, 0x14ed, 0x1552, 0x1559, 0x13bb, 0x155a, ++ 0x155b, 0x1566, 0x156d, 0x13bb, 0x13bb, 0x13bb, 0x13bb, 0x13bb, ++ 0x13bb, 0x13bb, 0x13e2, 0x13bb, 0x13bb, 0x13bb, 0x13bb, 0x13bb, ++ 0x13bb, 0x13bf, 0x13bd, 0x080c, 0x0dd5, 0x080c, 0x0dce, 0x080c, ++ 0x1578, 0x2009, 0x1a7b, 0x2104, 0x8000, 0x200a, 0x080c, 0x7e56, ++ 0x080c, 0x1aa9, 0x0005, 0x2009, 0x0048, 0x2060, 0x080c, 0xaedc, ++ 0x012e, 0x0005, 0x7004, 0xc085, 0xc0b5, 0x7006, 0x0005, 0x7004, ++ 0xc085, 0x7006, 0x0005, 0x080c, 0x1578, 0x080c, 0x16bb, 0x0005, ++ 0x080c, 0x0dd5, 0x080c, 0x1578, 0x2060, 0x6014, 0x0096, 0x2048, ++ 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, 0xaedc, 0x2001, ++ 0x015d, 0x2003, 0x0000, 0x2009, 0x03e8, 0x8109, 0x0160, 0x2001, ++ 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, ++ 0x1110, 0x080c, 0x157d, 0x2001, 0x0307, 0x2003, 0x8000, 0x0005, ++ 0x7004, 0xc095, 0x7006, 0x0005, 0x080c, 0x1578, 0x2060, 0x6014, ++ 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, ++ 0xaedc, 0x0005, 0x080c, 0x1578, 0x080c, 0x0dd5, 0x080c, 0x1578, ++ 0x080c, 0x14d4, 0x7827, 0x0018, 0x79ac, 0xd1dc, 0x0904, 0x1487, ++ 0x7827, 0x0015, 0x7828, 0x782b, 0x0000, 0x9065, 0x0140, 0x2001, ++ 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0804, 0x148d, 0x7004, ++ 0x9005, 0x01c8, 0x1188, 0x78ab, 0x0004, 0x7827, 0x0018, 0x782b, ++ 0x0000, 0xd1bc, 0x090c, 0x0dd5, 0x2001, 0x020d, 0x2003, 0x0050, ++ 0x2003, 0x0020, 0x0804, 0x14b9, 0x78ab, 0x0004, 0x7803, 0x0001, ++ 0x080c, 0x14ed, 0x0005, 0x7827, 0x0018, 0xa001, 0x7828, 0x7827, ++ 0x0011, 0xa001, 0x7928, 0x9106, 0x0110, 0x79ac, 0x08e0, 0x00e6, ++ 0x2071, 0x0200, 0x702c, 0xd0c4, 0x0140, 0x00ee, 0x080c, 0x1aa9, ++ 0x080c, 0x1313, 0x7803, 0x0001, 0x0005, 0x7037, 0x0001, 0xa001, ++ 0x7150, 0x00ee, 0x918c, 0xff00, 0x9186, 0x0500, 0x0110, 0x79ac, ++ 0x0810, 0x7004, 0xc09d, 0x7006, 0x78ab, 0x0004, 0x7803, 0x0001, ++ 0x080c, 0x14ed, 0x2001, 0x020d, 0x2003, 0x0020, 0x0005, 0x7828, ++ 0x782b, 0x0000, 0x9065, 0x090c, 0x0dd5, 0x6014, 0x2048, 0x78ab, ++ 0x0004, 0x918c, 0x0700, 0x0198, 0x080c, 0x7e56, 0x080c, 0x1aa9, ++ 0x080c, 0xcb35, 0x0158, 0xa9ac, 0xa936, 0xa9b0, 0xa93a, 0xa83f, ++ 0xffff, 0xa843, 0xffff, 0xa880, 0xc0bd, 0xa882, 0x0005, 0x6020, ++ 0x9086, 0x0009, 0x1128, 0x2009, 0x004c, 0x080c, 0xaedc, 0x0048, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x6024, 0x190c, ++ 0xcf1a, 0x2029, 0x00c8, 0x8529, 0x0128, 0x2001, 0x0201, 0x2004, ++ 0x9005, 0x0dc8, 0x7dbc, 0x080c, 0xe9c1, 0xd5a4, 0x1118, 0x080c, ++ 0x157d, 0x0005, 0x080c, 0x7e56, 0x080c, 0x1aa9, 0x0005, 0x781f, ++ 0x0300, 0x7803, 0x0001, 0x0005, 0x0016, 0x0066, 0x0076, 0x00f6, ++ 0x2079, 0x0300, 0x7908, 0x918c, 0x0007, 0x9186, 0x0003, 0x0120, ++ 0x2001, 0x0016, 0x080c, 0x15ee, 0x00fe, 0x007e, 0x006e, 0x001e, ++ 0x0005, 0x7004, 0xc09d, 0x7006, 0x0005, 0x7104, 0x9184, 0x0004, ++ 0x190c, 0x0dd5, 0xd184, 0x1189, 0xd19c, 0x0158, 0xc19c, 0x7106, ++ 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x080c, 0x157d, ++ 0x0005, 0x81ff, 0x190c, 0x0dd5, 0x0005, 0xc184, 0xd1b4, 0xc1b4, ++ 0x7106, 0x0016, 0x00e6, 0x15f0, 0x2071, 0x0200, 0x080c, 0x16a8, ++ 0x05c8, 0x6014, 0x9005, 0x05b0, 0x0096, 0x2048, 0xa864, 0x009e, ++ 0x9084, 0x00ff, 0x908e, 0x0029, 0x0160, 0x908e, 0x0048, 0x1550, ++ 0x601c, 0xd084, 0x11e0, 0x00f6, 0x2c78, 0x080c, 0x1725, 0x00fe, ++ 0x00b0, 0x00f6, 0x2c78, 0x080c, 0x18ac, 0x00fe, 0x2009, 0x01f4, ++ 0x8109, 0x0168, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, ++ 0x0218, 0x2004, 0xd0ec, 0x1118, 0x080c, 0x157d, 0x0040, 0x2001, ++ 0x020d, 0x2003, 0x0020, 0x080c, 0x1313, 0x7803, 0x0001, 0x00ee, ++ 0x001e, 0x0005, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, ++ 0x0461, 0x0ca8, 0x0429, 0x2060, 0x2009, 0x0053, 0x080c, 0xaedc, ++ 0x0005, 0x0005, 0x0005, 0x00e1, 0x2008, 0x00d1, 0x0006, 0x7004, ++ 0xc09d, 0x7006, 0x000e, 0x080c, 0x8d69, 0x0005, 0x0089, 0x9005, ++ 0x0118, 0x080c, 0x896c, 0x0cd0, 0x0005, 0x2001, 0x0036, 0x2009, ++ 0x1820, 0x210c, 0x2011, 0x181f, 0x2214, 0x080c, 0x15ee, 0x0005, ++ 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, 0x080c, 0x14d4, 0x00d6, ++ 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, 0x0510, 0x6804, 0x9005, ++ 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, 0x79bc, 0xd1a4, 0x1528, ++ 0x79b8, 0x918c, 0x0fff, 0x0180, 0x9182, 0x0841, 0x1268, 0x9188, ++ 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, 0x810c, 0x080c, 0x15e0, ++ 0x6827, 0x0001, 0x8109, 0x1dd0, 0x04d9, 0x6827, 0x0002, 0x04c1, ++ 0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, 0x1500, 0x6804, 0x9005, ++ 0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c0, 0x080c, 0x7e56, 0x080c, ++ 0x1aa9, 0x0090, 0x7827, 0x0015, 0x782b, 0x0000, 0x7827, 0x0018, ++ 0x782b, 0x0000, 0x2001, 0x020d, 0x2003, 0x0020, 0x2001, 0x0307, ++ 0x2003, 0x0300, 0x7803, 0x0001, 0x00de, 0x0005, 0x682c, 0x9084, ++ 0x5400, 0x9086, 0x5400, 0x0d30, 0x7827, 0x0015, 0x782b, 0x0000, ++ 0x7803, 0x0001, 0x6800, 0x9085, 0x1800, 0x6802, 0x00de, 0x0005, ++ 0x6824, 0x9084, 0x0003, 0x1de0, 0x0005, 0x2001, 0x0030, 0x2c08, ++ 0x621c, 0x0021, 0x7830, 0x9086, 0x0041, 0x0005, 0x00f6, 0x2079, ++ 0x0300, 0x0006, 0x7808, 0xd09c, 0x0140, 0x0016, 0x0026, 0x00c6, ++ 0x080c, 0x1380, 0x00ce, 0x002e, 0x001e, 0x000e, 0x0006, 0x7832, ++ 0x7936, 0x7a3a, 0x781b, 0x8080, 0x0059, 0x1118, 0x000e, 0x00fe, ++ 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c, 0x0dd5, ++ 0x2009, 0x180c, 0x2104, 0xc0f4, 0x200a, 0x2009, 0xff00, 0x8109, ++ 0x0904, 0x166c, 0x7a18, 0x9284, 0x0030, 0x0904, 0x1667, 0x9284, ++ 0x0048, 0x9086, 0x0008, 0x1904, 0x1667, 0x2001, 0x0109, 0x2004, ++ 0xd08c, 0x01f0, 0x0006, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x0126, 0x2091, 0x2800, 0x00f6, 0x0026, 0x0016, 0x2009, 0x1a7d, ++ 0x2104, 0x8000, 0x0208, 0x200a, 0x080c, 0x90a2, 0x001e, 0x002e, ++ 0x00fe, 0x012e, 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x000e, ++ 0x2001, 0x009b, 0x2004, 0xd0fc, 0x01d0, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x00f6, 0x0016, 0x2009, 0x1a7e, ++ 0x2104, 0x8000, 0x0208, 0x200a, 0x080c, 0x1eb4, 0x001e, 0x00fe, ++ 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, 0x000e, 0x7818, ++ 0xd0bc, 0x1904, 0x1617, 0x0005, 0x2001, 0x180c, 0x2004, 0xd0f4, ++ 0x1528, 0x7a18, 0x9284, 0x0030, 0x0508, 0x9284, 0x0048, 0x9086, ++ 0x0008, 0x11e0, 0x2001, 0x19f6, 0x2004, 0x9005, 0x01b8, 0x2001, ++ 0x1a66, 0x2004, 0x9086, 0x0000, 0x0188, 0x2009, 0x1a7c, 0x2104, ++ 0x8000, 0x0208, 0x200a, 0x080c, 0xa2f7, 0x2009, 0x180c, 0x2104, ++ 0xc0f5, 0x200a, 0x2009, 0xff00, 0x0804, 0x1617, 0x9085, 0x0001, ++ 0x0005, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, 0x080c, 0x1610, ++ 0x1108, 0x0005, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c, 0x0dd5, ++ 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, 0x2060, 0xd1bc, ++ 0x1110, 0x7054, 0x2060, 0x918c, 0xff00, 0x9186, 0x0500, 0x0110, ++ 0x9085, 0x0001, 0x0005, 0x00e6, 0x0016, 0x2071, 0x0200, 0x0c41, ++ 0x6124, 0xd1dc, 0x01f8, 0x701c, 0xd08c, 0x0904, 0x171a, 0x7017, ++ 0x0000, 0x2001, 0x0264, 0x2004, 0xd0bc, 0x0904, 0x171a, 0x2001, ++ 0x0268, 0x00c6, 0x2064, 0x6104, 0x6038, 0x00ce, 0x918e, 0x0039, ++ 0x1904, 0x171a, 0x9c06, 0x15f0, 0x0126, 0x2091, 0x2600, 0x080c, ++ 0x7d9d, 0x012e, 0x7358, 0x745c, 0x6014, 0x905d, 0x0598, 0x2b48, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x190c, 0xcef5, ++ 0xab42, 0xac3e, 0x2001, 0x1869, 0x2004, 0xd0b4, 0x1170, 0x601c, ++ 0xd0e4, 0x1158, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x1120, 0xa83b, 0x7fff, 0xa837, 0xffff, 0x080c, 0x20b0, 0x1190, ++ 0x080c, 0x1907, 0x2a00, 0xa816, 0x0130, 0x2800, 0xa80e, 0x2c05, ++ 0xa80a, 0x2c00, 0xa812, 0x7037, 0x0020, 0x781f, 0x0300, 0x001e, ++ 0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, 0x0020, 0x001e, 0x00ee, ++ 0x080c, 0x157d, 0x0005, 0x080c, 0x0dd5, 0x2ff0, 0x0126, 0x2091, ++ 0x2200, 0x00c6, 0x3e60, 0x6014, 0x2048, 0x2940, 0x903e, 0x2730, ++ 0xa864, 0x2068, 0xa81a, 0x9d84, 0x000f, 0x9088, 0x2090, 0x2165, ++ 0x0002, 0x1750, 0x17be, 0x1750, 0x1750, 0x1754, 0x179f, 0x1750, ++ 0x1774, 0x1749, 0x17b5, 0x1750, 0x1750, 0x1759, 0x18aa, 0x1788, ++ 0x177e, 0xa964, 0x918c, 0x00ff, 0x918e, 0x0048, 0x0904, 0x17b5, ++ 0x9085, 0x0001, 0x0804, 0x18a1, 0xa87c, 0xd0ac, 0x0dc8, 0x0804, ++ 0x17c5, 0xa87c, 0xd0ac, 0x0da0, 0x0804, 0x1830, 0xa898, 0x901d, ++ 0x1108, 0xab9c, 0x9016, 0xaab2, 0xaa3e, 0xaa42, 0x3e00, 0x9080, ++ 0x0008, 0x2004, 0x9080, 0x8f30, 0x2005, 0x9005, 0x090c, 0x0dd5, ++ 0x2004, 0xa8ae, 0x0804, 0x1889, 0xa87c, 0xd0bc, 0x09c8, 0xa890, ++ 0xa842, 0xa88c, 0xa83e, 0xa888, 0x0804, 0x17c5, 0xa87c, 0xd0bc, ++ 0x0978, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, 0x0804, 0x1830, ++ 0xa87c, 0xd0bc, 0x0928, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa804, ++ 0x9045, 0x090c, 0x0dd5, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, ++ 0x2090, 0x2065, 0xa888, 0xd19c, 0x1904, 0x1830, 0x0430, 0xa87c, ++ 0xd0ac, 0x0904, 0x1750, 0xa804, 0x9045, 0x090c, 0x0dd5, 0xa164, ++ 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x2090, 0x2065, 0x9006, 0xa842, ++ 0xa83e, 0xd19c, 0x1904, 0x1830, 0x0080, 0xa87c, 0xd0ac, 0x0904, ++ 0x1750, 0x9006, 0xa842, 0xa83e, 0x0804, 0x1830, 0xa87c, 0xd0ac, ++ 0x0904, 0x1750, 0x9006, 0xa842, 0xa83e, 0x2c05, 0x908a, 0x0036, ++ 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, 0x17e8, 0x17e8, 0x17ea, ++ 0x17e8, 0x17e8, 0x17e8, 0x17f4, 0x17e8, 0x17e8, 0x17e8, 0x17fe, ++ 0x17e8, 0x17e8, 0x17e8, 0x1808, 0x17e8, 0x17e8, 0x17e8, 0x1812, ++ 0x17e8, 0x17e8, 0x17e8, 0x181c, 0x17e8, 0x17e8, 0x17e8, 0x1826, ++ 0x080c, 0x0dd5, 0xa574, 0xa478, 0x9d86, 0x0024, 0x0904, 0x175e, ++ 0xa37c, 0xa280, 0x0804, 0x1889, 0xa584, 0xa488, 0x9d86, 0x0024, ++ 0x0904, 0x175e, 0xa38c, 0xa290, 0x0804, 0x1889, 0xa594, 0xa498, ++ 0x9d86, 0x0024, 0x0904, 0x175e, 0xa39c, 0xa2a0, 0x0804, 0x1889, ++ 0xa5a4, 0xa4a8, 0x9d86, 0x0024, 0x0904, 0x175e, 0xa3ac, 0xa2b0, ++ 0x0804, 0x1889, 0xa5b4, 0xa4b8, 0x9d86, 0x0024, 0x0904, 0x175e, ++ 0xa3bc, 0xa2c0, 0x0804, 0x1889, 0xa5c4, 0xa4c8, 0x9d86, 0x0024, ++ 0x0904, 0x175e, 0xa3cc, 0xa2d0, 0x0804, 0x1889, 0xa5d4, 0xa4d8, ++ 0x9d86, 0x0024, 0x0904, 0x175e, 0xa3dc, 0xa2e0, 0x0804, 0x1889, ++ 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, ++ 0x1853, 0x1851, 0x1851, 0x1851, 0x1851, 0x1851, 0x185e, 0x1851, ++ 0x1851, 0x1851, 0x1851, 0x1851, 0x1869, 0x1851, 0x1851, 0x1851, ++ 0x1851, 0x1851, 0x1874, 0x1851, 0x1851, 0x1851, 0x1851, 0x1851, ++ 0x187f, 0x080c, 0x0dd5, 0xa56c, 0xa470, 0xa774, 0xa678, 0x9d86, ++ 0x002c, 0x0904, 0x175e, 0xa37c, 0xa280, 0x0458, 0xa584, 0xa488, ++ 0xa78c, 0xa690, 0x9d86, 0x002c, 0x0904, 0x175e, 0xa394, 0xa298, ++ 0x0400, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0x9d86, 0x002c, 0x0904, ++ 0x175e, 0xa3ac, 0xa2b0, 0x00a8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, ++ 0x9d86, 0x002c, 0x0904, 0x175e, 0xa3c4, 0xa2c8, 0x0050, 0xa5cc, ++ 0xa4d0, 0xa7d4, 0xa6d8, 0x9d86, 0x002c, 0x0904, 0x175e, 0xa3dc, ++ 0xa2e0, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0xa988, ++ 0x8c60, 0x2c1d, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x8109, 0xa916, ++ 0x1158, 0x3e60, 0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e, ++ 0x9006, 0x00ce, 0x012e, 0x0005, 0x2800, 0xa80e, 0xab0a, 0x2c00, ++ 0xa812, 0x0c78, 0x0804, 0x1750, 0x2ff0, 0x0126, 0x2091, 0x2200, ++ 0x00c6, 0x3e60, 0x6014, 0x2048, 0x2940, 0xa80e, 0x2061, 0x208b, ++ 0xa813, 0x208b, 0x2c05, 0xa80a, 0xa964, 0xa91a, 0xa87c, 0xd0ac, ++ 0x090c, 0x0dd5, 0x9006, 0xa842, 0xa83e, 0x2c05, 0x908a, 0x0034, ++ 0x1a0c, 0x0dd5, 0xadcc, 0xacd0, 0xafd4, 0xaed8, 0xabdc, 0xaae0, ++ 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0xa8ac, 0xaab0, ++ 0xa836, 0xaa3a, 0xa988, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0008, ++ 0x1120, 0x8109, 0xa916, 0x0128, 0x0078, 0x918a, 0x0002, 0xa916, ++ 0x1158, 0x3e60, 0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e, ++ 0x9006, 0x00ce, 0x012e, 0x0005, 0xa804, 0x9045, 0x090c, 0x0dd5, ++ 0xa80e, 0xa064, 0xa81a, 0x9084, 0x000f, 0x9080, 0x2090, 0x2015, ++ 0x82ff, 0x090c, 0x0dd5, 0xaa12, 0x2205, 0xa80a, 0x0c10, 0x903e, ++ 0x2730, 0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, 0x1a31, 0x195e, ++ 0x195e, 0x1a31, 0x195e, 0x1a2b, 0x1a31, 0x195e, 0x19ce, 0x19ce, ++ 0x19ce, 0x1a31, 0x19ce, 0x1a31, 0x1a28, 0x19ce, 0xc0fc, 0xa882, ++ 0xab2c, 0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, 0x1a33, 0x2c05, ++ 0x908a, 0x0034, 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, 0x194a, ++ 0x1948, 0x1948, 0x1948, 0x1948, 0x1948, 0x194e, 0x1948, 0x1948, ++ 0x1948, 0x1948, 0x1948, 0x1952, 0x1948, 0x1948, 0x1948, 0x1948, ++ 0x1948, 0x1956, 0x1948, 0x1948, 0x1948, 0x1948, 0x1948, 0x195a, ++ 0x080c, 0x0dd5, 0xa774, 0xa678, 0x0804, 0x1a33, 0xa78c, 0xa690, ++ 0x0804, 0x1a33, 0xa7a4, 0xa6a8, 0x0804, 0x1a33, 0xa7bc, 0xa6c0, ++ 0x0804, 0x1a33, 0xa7d4, 0xa6d8, 0x0804, 0x1a33, 0xa898, 0x901d, ++ 0x1108, 0xab9c, 0x9016, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0dd5, ++ 0x9082, 0x001b, 0x0002, 0x1986, 0x1986, 0x1988, 0x1986, 0x1986, ++ 0x1986, 0x1992, 0x1986, 0x1986, 0x1986, 0x199c, 0x1986, 0x1986, ++ 0x1986, 0x19a6, 0x1986, 0x1986, 0x1986, 0x19b0, 0x1986, 0x1986, ++ 0x1986, 0x19ba, 0x1986, 0x1986, 0x1986, 0x19c4, 0x080c, 0x0dd5, ++ 0xa574, 0xa478, 0x9d86, 0x0004, 0x0904, 0x1a33, 0xa37c, 0xa280, ++ 0x0804, 0x1a33, 0xa584, 0xa488, 0x9d86, 0x0004, 0x0904, 0x1a33, ++ 0xa38c, 0xa290, 0x0804, 0x1a33, 0xa594, 0xa498, 0x9d86, 0x0004, ++ 0x0904, 0x1a33, 0xa39c, 0xa2a0, 0x0804, 0x1a33, 0xa5a4, 0xa4a8, ++ 0x9d86, 0x0004, 0x0904, 0x1a33, 0xa3ac, 0xa2b0, 0x0804, 0x1a33, ++ 0xa5b4, 0xa4b8, 0x9d86, 0x0004, 0x0904, 0x1a33, 0xa3bc, 0xa2c0, ++ 0x0804, 0x1a33, 0xa5c4, 0xa4c8, 0x9d86, 0x0004, 0x0904, 0x1a33, ++ 0xa3cc, 0xa2d0, 0x0804, 0x1a33, 0xa5d4, 0xa4d8, 0x9d86, 0x0004, ++ 0x0904, 0x1a33, 0xa3dc, 0xa2e0, 0x0804, 0x1a33, 0xa898, 0x901d, ++ 0x1108, 0xab9c, 0x9016, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0dd5, ++ 0x9082, 0x001b, 0x0002, 0x19f6, 0x19f4, 0x19f4, 0x19f4, 0x19f4, ++ 0x19f4, 0x1a00, 0x19f4, 0x19f4, 0x19f4, 0x19f4, 0x19f4, 0x1a0a, ++ 0x19f4, 0x19f4, 0x19f4, 0x19f4, 0x19f4, 0x1a14, 0x19f4, 0x19f4, ++ 0x19f4, 0x19f4, 0x19f4, 0x1a1e, 0x080c, 0x0dd5, 0xa56c, 0xa470, ++ 0xa774, 0xa678, 0x9d86, 0x000c, 0x05b0, 0xa37c, 0xa280, 0x0498, ++ 0xa584, 0xa488, 0xa78c, 0xa690, 0x9d86, 0x000c, 0x0560, 0xa394, ++ 0xa298, 0x0448, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0x9d86, 0x000c, ++ 0x0510, 0xa3ac, 0xa2b0, 0x00f8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, ++ 0x9d86, 0x000c, 0x01c0, 0xa3c4, 0xa2c8, 0x00a8, 0xa5cc, 0xa4d0, ++ 0xa7d4, 0xa6d8, 0x9d86, 0x000c, 0x0170, 0xa3dc, 0xa2e0, 0x0058, ++ 0x9d86, 0x000e, 0x1130, 0x080c, 0x2048, 0x1904, 0x1907, 0x900e, ++ 0x0050, 0x080c, 0x0dd5, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, ++ 0xae2a, 0x080c, 0x2048, 0x0005, 0x6014, 0x2048, 0x6118, 0x810c, ++ 0x810c, 0x810c, 0x81ff, 0x1118, 0xa887, 0x0001, 0x0008, 0xa986, ++ 0x601b, 0x0002, 0xa974, 0xd1dc, 0x1108, 0x0005, 0xa934, 0xa88c, ++ 0x9106, 0x1158, 0xa938, 0xa890, 0x9106, 0x1138, 0x601c, 0xc084, ++ 0x601e, 0x2009, 0x0048, 0x0804, 0xaedc, 0x0005, 0x0126, 0x00c6, ++ 0x2091, 0x2200, 0x00ce, 0x7908, 0x918c, 0x0007, 0x9186, 0x0000, ++ 0x05b0, 0x9186, 0x0003, 0x0598, 0x6020, 0x6023, 0x0000, 0x0006, ++ 0x2031, 0x0008, 0x00c6, 0x781f, 0x0808, 0x7808, 0xd09c, 0x0120, ++ 0x080c, 0x1380, 0x8631, 0x1db8, 0x00ce, 0x781f, 0x0800, 0x2031, ++ 0x0168, 0x00c6, 0x7808, 0xd09c, 0x190c, 0x1380, 0x00ce, 0x2001, ++ 0x0038, 0x080c, 0x1b36, 0x7930, 0x9186, 0x0040, 0x0160, 0x9186, ++ 0x0042, 0x190c, 0x0dd5, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631, ++ 0x1d40, 0x080c, 0x1b45, 0x000e, 0x6022, 0x012e, 0x0005, 0x080c, ++ 0x1b32, 0x7827, 0x0015, 0x7828, 0x9c06, 0x1db8, 0x782b, 0x0000, ++ 0x0ca0, 0x00f6, 0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, ++ 0x00fe, 0x080c, 0x73bc, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, ++ 0x2001, 0x0160, 0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, ++ 0x8211, 0x1de0, 0x0081, 0x0066, 0x2031, 0x0000, 0x080c, 0x746c, ++ 0x006e, 0x0005, 0x0479, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, ++ 0x0138, 0x2202, 0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x2c44, ++ 0x2009, 0x003c, 0x080c, 0x23d2, 0x2001, 0x015d, 0x2003, 0x0000, ++ 0x7000, 0x9084, 0x003c, 0x1de0, 0x080c, 0x8414, 0x70a0, 0x70a2, ++ 0x7098, 0x709a, 0x709c, 0x709e, 0x2001, 0x020d, 0x2003, 0x0020, ++ 0x00f6, 0x2079, 0x0300, 0x080c, 0x1313, 0x7803, 0x0001, 0x00fe, ++ 0x00ee, 0x0005, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2001, ++ 0x0160, 0x202c, 0x2003, 0x0000, 0x080c, 0x73bc, 0x1108, 0x0005, ++ 0x2021, 0x0260, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x1168, 0x2001, ++ 0x0109, 0x201c, 0x939c, 0x0048, 0x1160, 0x2001, 0x0111, 0x201c, ++ 0x83ff, 0x1110, 0x8421, 0x1d70, 0x2001, 0x015d, 0x2003, 0x0000, ++ 0x0005, 0x0046, 0x2021, 0x0019, 0x2003, 0x0048, 0xa001, 0xa001, ++ 0x201c, 0x939c, 0x0048, 0x0120, 0x8421, 0x1db0, 0x004e, 0x0c60, ++ 0x004e, 0x0c40, 0x601c, 0xc084, 0x601e, 0x0005, 0x2c08, 0x621c, ++ 0x080c, 0x15ee, 0x7930, 0x0005, 0x2c08, 0x621c, 0x080c, 0x1699, ++ 0x7930, 0x0005, 0x8001, 0x1df0, 0x0005, 0x2031, 0x0005, 0x781c, ++ 0x9084, 0x0007, 0x0170, 0x2001, 0x0038, 0x0c41, 0x9186, 0x0040, ++ 0x0904, 0x1ba3, 0x2001, 0x001e, 0x0c69, 0x8631, 0x1d80, 0x080c, ++ 0x0dd5, 0x781f, 0x0202, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, ++ 0x0b10, 0x0c01, 0x781c, 0xd084, 0x0110, 0x0861, 0x04e0, 0x2001, ++ 0x0030, 0x0891, 0x9186, 0x0040, 0x0568, 0x781c, 0xd084, 0x1da8, ++ 0x781f, 0x0101, 0x2001, 0x0014, 0x0869, 0x2001, 0x0037, 0x0821, ++ 0x9186, 0x0040, 0x0140, 0x2001, 0x0030, 0x080c, 0x1b3c, 0x9186, ++ 0x0040, 0x190c, 0x0dd5, 0x00d6, 0x2069, 0x0200, 0x692c, 0xd1f4, ++ 0x1170, 0xd1c4, 0x0160, 0xd19c, 0x0130, 0x6800, 0x9085, 0x1800, ++ 0x6802, 0x00de, 0x0080, 0x6908, 0x9184, 0x0007, 0x1db0, 0x00de, ++ 0x781f, 0x0100, 0x791c, 0x9184, 0x0007, 0x090c, 0x0dd5, 0xa001, ++ 0xa001, 0x781f, 0x0200, 0x0005, 0x0126, 0x2091, 0x2400, 0x2071, ++ 0x1a66, 0x2079, 0x0090, 0x012e, 0x0005, 0x9280, 0x0005, 0x2004, ++ 0x2048, 0xa97c, 0xd1dc, 0x1904, 0x1c45, 0xa964, 0x9184, 0x0007, ++ 0x0002, 0x1bc1, 0x1c30, 0x1bd8, 0x1bda, 0x1bd8, 0x1c18, 0x1bf8, ++ 0x1be7, 0x918c, 0x00ff, 0x9186, 0x0008, 0x1170, 0xa87c, 0xd0b4, ++ 0x0904, 0x1e6f, 0x9006, 0xa842, 0xa83e, 0xa988, 0x2900, 0xa85a, ++ 0xa813, 0x208b, 0x0804, 0x1c41, 0x9186, 0x0048, 0x0904, 0x1c30, ++ 0x080c, 0x0dd5, 0x9184, 0x00ff, 0x9086, 0x0013, 0x0904, 0x1c30, ++ 0x9184, 0x00ff, 0x9086, 0x001b, 0x0904, 0x1c30, 0x0c88, 0xa87c, ++ 0xd0b4, 0x0904, 0x1e6f, 0xa890, 0xa842, 0xa83a, 0xa88c, 0xa83e, ++ 0xa836, 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0xa988, 0x0804, 0x1c38, ++ 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x19d0, 0xa87c, 0xd0b4, ++ 0x0904, 0x1e6f, 0xa890, 0xa842, 0xa83a, 0xa88c, 0xa83e, 0xa836, ++ 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0xa804, 0xa85a, 0x2040, 0xa064, ++ 0x9084, 0x000f, 0x9080, 0x2090, 0x2005, 0xa812, 0xa988, 0x0448, ++ 0x918c, 0x00ff, 0x9186, 0x0015, 0x1540, 0xa87c, 0xd0b4, 0x0904, ++ 0x1e6f, 0xa804, 0xa85a, 0x2040, 0xa064, 0x9084, 0x000f, 0x9080, ++ 0x2090, 0x2005, 0xa812, 0xa988, 0x9006, 0xa842, 0xa83e, 0x0088, ++ 0xa87c, 0xd0b4, 0x0904, 0x1e6f, 0xa988, 0x9006, 0xa842, 0xa83e, ++ 0x2900, 0xa85a, 0xa864, 0x9084, 0x000f, 0x9080, 0x2090, 0x2005, ++ 0xa812, 0xa916, 0xa87c, 0xc0dd, 0xa87e, 0x0005, 0x00f6, 0x2079, ++ 0x0090, 0x782c, 0xd0fc, 0x190c, 0x1eb4, 0x00e6, 0x2071, 0x1a66, ++ 0x7000, 0x9005, 0x1904, 0x1cae, 0x7206, 0x9280, 0x0005, 0x204c, ++ 0x9280, 0x0004, 0x2004, 0x782b, 0x0004, 0x00f6, 0x2079, 0x0200, ++ 0x7803, 0x0040, 0x00fe, 0x00b6, 0x2058, 0xb86c, 0x7836, 0xb890, ++ 0x00be, 0x00f6, 0x2079, 0x0200, 0x7803, 0x0040, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0x781a, 0x2079, 0x0100, 0x8004, ++ 0x78d6, 0x00fe, 0xa814, 0x2050, 0xa858, 0x2040, 0xa810, 0x2060, ++ 0xa064, 0x90ec, 0x000f, 0xa944, 0x791a, 0x7116, 0xa848, 0x781e, ++ 0x701a, 0x9006, 0x700e, 0x7012, 0x7004, 0xa940, 0xa838, 0x9106, ++ 0x1500, 0xa93c, 0xa834, 0x9106, 0x11e0, 0x0006, 0x0016, 0xa938, ++ 0xa834, 0x9105, 0x0118, 0x001e, 0x000e, 0x0098, 0x001e, 0x000e, ++ 0x8aff, 0x01c8, 0x0126, 0x2091, 0x8000, 0x2009, 0x0306, 0x200b, ++ 0x0808, 0x00d9, 0x0108, 0x00c9, 0x012e, 0x9006, 0x00ee, 0x00fe, ++ 0x0005, 0x0036, 0x0046, 0xab38, 0xac34, 0x080c, 0x20b0, 0x004e, ++ 0x003e, 0x0d30, 0x0c98, 0x9085, 0x0001, 0x0c80, 0x2009, 0x0306, ++ 0x200b, 0x4800, 0x7027, 0x0000, 0x0005, 0x0076, 0x0066, 0x0056, ++ 0x0046, 0x0036, 0x0026, 0x8aff, 0x0904, 0x1e68, 0x700c, 0x7214, ++ 0x923a, 0x7010, 0x7218, 0x9203, 0x0a04, 0x1e67, 0x9705, 0x0904, ++ 0x1e67, 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, ++ 0x1df1, 0x1d30, 0x1d30, 0x1df1, 0x1df1, 0x1dce, 0x1df1, 0x1d30, ++ 0x1dd5, 0x1d7f, 0x1d7f, 0x1df1, 0x1df1, 0x1df1, 0x1dc8, 0x1d7f, ++ 0xc0fc, 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, ++ 0x1dfe, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0dd5, 0x9082, 0x001b, ++ 0x0002, 0x1d1c, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d20, ++ 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d24, 0x1d1a, 0x1d1a, ++ 0x1d1a, 0x1d1a, 0x1d1a, 0x1d28, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, ++ 0x1d1a, 0x1d2c, 0x080c, 0x0dd5, 0xa774, 0xa678, 0x0804, 0x1dfe, ++ 0xa78c, 0xa690, 0x0804, 0x1dfe, 0xa7a4, 0xa6a8, 0x0804, 0x1dfe, ++ 0xa7bc, 0xa6c0, 0x0804, 0x1dfe, 0xa7d4, 0xa6d8, 0x0804, 0x1dfe, ++ 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, ++ 0x1d53, 0x1d53, 0x1d55, 0x1d53, 0x1d53, 0x1d53, 0x1d5b, 0x1d53, ++ 0x1d53, 0x1d53, 0x1d61, 0x1d53, 0x1d53, 0x1d53, 0x1d67, 0x1d53, ++ 0x1d53, 0x1d53, 0x1d6d, 0x1d53, 0x1d53, 0x1d53, 0x1d73, 0x1d53, ++ 0x1d53, 0x1d53, 0x1d79, 0x080c, 0x0dd5, 0xa574, 0xa478, 0xa37c, ++ 0xa280, 0x0804, 0x1dfe, 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, ++ 0x1dfe, 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x1dfe, 0xa5a4, ++ 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x1dfe, 0xa5b4, 0xa4b8, 0xa3bc, ++ 0xa2c0, 0x0804, 0x1dfe, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, ++ 0x1dfe, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x1dfe, 0x2c05, ++ 0x908a, 0x0034, 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, 0x1da2, ++ 0x1da0, 0x1da0, 0x1da0, 0x1da0, 0x1da0, 0x1daa, 0x1da0, 0x1da0, ++ 0x1da0, 0x1da0, 0x1da0, 0x1db2, 0x1da0, 0x1da0, 0x1da0, 0x1da0, ++ 0x1da0, 0x1dba, 0x1da0, 0x1da0, 0x1da0, 0x1da0, 0x1da0, 0x1dc1, ++ 0x080c, 0x0dd5, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, ++ 0x0804, 0x1dfe, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, ++ 0x0804, 0x1dfe, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, ++ 0x0804, 0x1dfe, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, ++ 0x04e8, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0x04b0, ++ 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x1518, 0x080c, 0x2048, ++ 0x1904, 0x1ccb, 0x900e, 0x0804, 0x1e68, 0xab64, 0x939c, 0x00ff, ++ 0x9386, 0x0048, 0x1180, 0x00c6, 0x7004, 0x2060, 0x6004, 0x9086, ++ 0x0043, 0x00ce, 0x0904, 0x1d7f, 0xab9c, 0x9016, 0xad8c, 0xac90, ++ 0xaf94, 0xae98, 0x0098, 0x9386, 0x0008, 0x0904, 0x1d7f, 0x080c, ++ 0x0dd5, 0xa964, 0x918c, 0x00ff, 0x9186, 0x0013, 0x0904, 0x1d30, ++ 0x9186, 0x001b, 0x0904, 0x1d7f, 0x080c, 0x0dd5, 0x2009, 0x030f, ++ 0x2104, 0xd0fc, 0x0530, 0x0066, 0x2009, 0x0306, 0x2104, 0x9084, ++ 0x0030, 0x15c8, 0x2031, 0x1000, 0x200b, 0x4000, 0x2600, 0x9302, ++ 0x928b, 0x0000, 0xa82e, 0xa932, 0x0278, 0x9105, 0x0168, 0x2011, ++ 0x0000, 0x2618, 0x2600, 0x9500, 0xa81e, 0x9481, 0x0000, 0xa822, ++ 0xa880, 0xc0fd, 0xa882, 0x0020, 0xa82f, 0x0000, 0xa833, 0x0000, ++ 0x006e, 0x7b12, 0x7a16, 0x7d02, 0x7c06, 0x7f0a, 0x7e0e, 0x782b, ++ 0x0001, 0x7000, 0x8000, 0x7002, 0xa83c, 0x9300, 0xa83e, 0xa840, ++ 0x9201, 0xa842, 0x700c, 0x9300, 0x700e, 0x7010, 0x9201, 0x7012, ++ 0x080c, 0x2048, 0x0428, 0x2031, 0x0080, 0x9584, 0x007f, 0x0108, ++ 0x9632, 0x7124, 0x7000, 0x9086, 0x0000, 0x1198, 0xc185, 0x7126, ++ 0x2009, 0x0306, 0x2104, 0xd0b4, 0x1904, 0x1e0e, 0x200b, 0x4040, ++ 0x2009, 0x1a7f, 0x2104, 0x8000, 0x0a04, 0x1e0e, 0x200a, 0x0804, ++ 0x1e0e, 0xc18d, 0x7126, 0xd184, 0x1d58, 0x0804, 0x1e0e, 0x9006, ++ 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e, 0x0005, 0x080c, ++ 0x0dd5, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010, 0x782b, 0x0004, ++ 0x7003, 0x0000, 0x7004, 0x0016, 0x080c, 0x1cbe, 0x001e, 0x2060, ++ 0x6014, 0x2048, 0x080c, 0xcb35, 0x0118, 0xa880, 0xc0bd, 0xa882, ++ 0x6020, 0x9086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8, 0x2001, ++ 0x00fa, 0x8001, 0x1df0, 0x60c8, 0x9206, 0x1dc0, 0x60c4, 0xa89a, ++ 0x60c8, 0xa896, 0x7004, 0x2060, 0x00c6, 0x080c, 0xc768, 0x00ce, ++ 0x2001, 0x19f6, 0x2004, 0x9c06, 0x1160, 0x2009, 0x0040, 0x080c, ++ 0x23d2, 0x080c, 0xa7cc, 0x2011, 0x0000, 0x080c, 0xa65d, 0x080c, ++ 0x97b9, 0x002e, 0x0804, 0x1ff8, 0x0126, 0x2091, 0x2400, 0xa858, ++ 0x2040, 0x792c, 0x782b, 0x0002, 0x9184, 0x0700, 0x1904, 0x1e71, ++ 0x7000, 0x0002, 0x1ff8, 0x1ec6, 0x1f46, 0x1ff6, 0x8001, 0x7002, ++ 0x7027, 0x0000, 0xd19c, 0x1158, 0x8aff, 0x0904, 0x1f13, 0x080c, ++ 0x1cc5, 0x0904, 0x1ff8, 0x080c, 0x1cc5, 0x0804, 0x1ff8, 0x782b, ++ 0x0004, 0xd194, 0x0148, 0xa880, 0xc0fc, 0xa882, 0x8aff, 0x1518, ++ 0xa87c, 0xc0f5, 0xa87e, 0x00f8, 0x0026, 0x0036, 0xab3c, 0xaa40, ++ 0x0016, 0x7910, 0xa82c, 0x9100, 0xa82e, 0x7914, 0xa830, 0x9101, ++ 0xa832, 0x001e, 0x7810, 0x931a, 0x7814, 0x9213, 0x7800, 0xa81e, ++ 0x7804, 0xa822, 0xab3e, 0xaa42, 0x003e, 0x002e, 0x080c, 0x2063, ++ 0xa880, 0xc0fd, 0xa882, 0x2a00, 0xa816, 0x2800, 0xa85a, 0x2c00, ++ 0xa812, 0x7003, 0x0000, 0x2009, 0x0306, 0x200b, 0x4800, 0x7027, ++ 0x0000, 0x0804, 0x1ff8, 0x00f6, 0x0026, 0x781c, 0x0006, 0x7818, ++ 0x0006, 0x2079, 0x0100, 0x7a14, 0x9284, 0x1984, 0x9085, 0x0012, ++ 0x7816, 0x0036, 0x2019, 0x1000, 0x8319, 0x090c, 0x0dd5, 0x7820, ++ 0xd0bc, 0x1dd0, 0x003e, 0x79c8, 0x000e, 0x9102, 0x001e, 0x0006, ++ 0x0016, 0x79c4, 0x000e, 0x9103, 0x78c6, 0x000e, 0x78ca, 0x9284, ++ 0x1984, 0x9085, 0x0012, 0x7816, 0x002e, 0x00fe, 0x782b, 0x0008, ++ 0x7003, 0x0000, 0x080c, 0x1cbe, 0x0804, 0x1ff8, 0x8001, 0x7002, ++ 0x7024, 0x8004, 0x7026, 0xd194, 0x0170, 0x782c, 0xd0fc, 0x1904, ++ 0x1eb9, 0xd19c, 0x1904, 0x1ff4, 0x8aff, 0x0904, 0x1ff8, 0x080c, ++ 0x1cc5, 0x0804, 0x1ff8, 0x0026, 0x0036, 0xab3c, 0xaa40, 0x080c, ++ 0x2063, 0xdd9c, 0x1904, 0x1fb3, 0x2c05, 0x908a, 0x0036, 0x1a0c, ++ 0x0dd5, 0x9082, 0x001b, 0x0002, 0x1f87, 0x1f87, 0x1f89, 0x1f87, ++ 0x1f87, 0x1f87, 0x1f8f, 0x1f87, 0x1f87, 0x1f87, 0x1f95, 0x1f87, ++ 0x1f87, 0x1f87, 0x1f9b, 0x1f87, 0x1f87, 0x1f87, 0x1fa1, 0x1f87, ++ 0x1f87, 0x1f87, 0x1fa7, 0x1f87, 0x1f87, 0x1f87, 0x1fad, 0x080c, ++ 0x0dd5, 0xa07c, 0x931a, 0xa080, 0x9213, 0x0804, 0x1ee8, 0xa08c, ++ 0x931a, 0xa090, 0x9213, 0x0804, 0x1ee8, 0xa09c, 0x931a, 0xa0a0, ++ 0x9213, 0x0804, 0x1ee8, 0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, ++ 0x1ee8, 0xa0bc, 0x931a, 0xa0c0, 0x9213, 0x0804, 0x1ee8, 0xa0cc, ++ 0x931a, 0xa0d0, 0x9213, 0x0804, 0x1ee8, 0xa0dc, 0x931a, 0xa0e0, ++ 0x9213, 0x0804, 0x1ee8, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0dd5, ++ 0x9082, 0x001b, 0x0002, 0x1fd6, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fd4, ++ 0x1fd4, 0x1fdc, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fe2, ++ 0x1fd4, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fd4, 0x1fe8, 0x1fd4, 0x1fd4, ++ 0x1fd4, 0x1fd4, 0x1fd4, 0x1fee, 0x080c, 0x0dd5, 0xa07c, 0x931a, ++ 0xa080, 0x9213, 0x0804, 0x1ee8, 0xa094, 0x931a, 0xa098, 0x9213, ++ 0x0804, 0x1ee8, 0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1ee8, ++ 0xa0c4, 0x931a, 0xa0c8, 0x9213, 0x0804, 0x1ee8, 0xa0dc, 0x931a, ++ 0xa0e0, 0x9213, 0x0804, 0x1ee8, 0x0804, 0x1ee4, 0x080c, 0x0dd5, ++ 0x012e, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a66, 0x7000, 0x9086, ++ 0x0000, 0x0904, 0x2043, 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, ++ 0xd194, 0x01b8, 0x2009, 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, ++ 0x080c, 0xea0a, 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0dd5, ++ 0x0016, 0x2009, 0x0040, 0x080c, 0x23d2, 0x001e, 0x2001, 0x020c, ++ 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, ++ 0x1120, 0x2009, 0x0040, 0x080c, 0x23d2, 0x782c, 0xd0fc, 0x09a8, ++ 0x080c, 0x1eb4, 0x7000, 0x9086, 0x0000, 0x1978, 0x782b, 0x0004, ++ 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, 0x23d2, 0x782b, ++ 0x0002, 0x7003, 0x0000, 0x080c, 0x1cbe, 0x00ee, 0x00fe, 0x0005, ++ 0xa880, 0xd0fc, 0x11a8, 0x8c60, 0x2c05, 0x9005, 0x0110, 0x8a51, ++ 0x0005, 0xa004, 0x9005, 0x0168, 0xa85a, 0x2040, 0xa064, 0x9084, ++ 0x000f, 0x9080, 0x2090, 0x2065, 0x8cff, 0x090c, 0x0dd5, 0x8a51, ++ 0x0005, 0x2050, 0x0005, 0xa880, 0xd0fc, 0x11b8, 0x8a50, 0x8c61, ++ 0x2c05, 0x9005, 0x1190, 0x2800, 0x9906, 0x0120, 0xa000, 0x9005, ++ 0x1108, 0x2900, 0x2040, 0xa85a, 0xa064, 0x9084, 0x000f, 0x9080, ++ 0x20a0, 0x2065, 0x8cff, 0x090c, 0x0dd5, 0x0005, 0x0000, 0x001d, ++ 0x0021, 0x0025, 0x0029, 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, ++ 0x0021, 0x0027, 0x002d, 0x0033, 0x0000, 0x0000, 0x0023, 0x0000, ++ 0x0000, 0x2083, 0x207f, 0x2083, 0x2083, 0x208d, 0x0000, 0x2083, ++ 0x208a, 0x208a, 0x2087, 0x208a, 0x208a, 0x0000, 0x208d, 0x208a, ++ 0x0000, 0x2085, 0x2085, 0x0000, 0x2085, 0x208d, 0x0000, 0x2085, ++ 0x208b, 0x208b, 0x208b, 0x0000, 0x208b, 0x0000, 0x208d, 0x208b, ++ 0x00c6, 0x00d6, 0x0086, 0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, ++ 0x228f, 0x2940, 0xa064, 0x90ec, 0x000f, 0x9084, 0x00ff, 0x9086, ++ 0x0008, 0x1118, 0x2061, 0x208b, 0x00d0, 0x9de0, 0x2090, 0x9d86, ++ 0x0007, 0x0130, 0x9d86, 0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, ++ 0xa08c, 0x9422, 0xa090, 0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, ++ 0x0804, 0x228f, 0xa004, 0x9045, 0x0904, 0x228f, 0x08d8, 0x2c05, ++ 0x9005, 0x0904, 0x2177, 0xdd9c, 0x1904, 0x2133, 0x908a, 0x0036, ++ 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, 0x2108, 0x2108, 0x210a, ++ 0x2108, 0x2108, 0x2108, 0x2110, 0x2108, 0x2108, 0x2108, 0x2116, ++ 0x2108, 0x2108, 0x2108, 0x211c, 0x2108, 0x2108, 0x2108, 0x2122, ++ 0x2108, 0x2108, 0x2108, 0x2128, 0x2108, 0x2108, 0x2108, 0x212e, ++ 0x080c, 0x0dd5, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0804, 0x216d, ++ 0xa08c, 0x9422, 0xa090, 0x931b, 0x0804, 0x216d, 0xa09c, 0x9422, ++ 0xa0a0, 0x931b, 0x0804, 0x216d, 0xa0ac, 0x9422, 0xa0b0, 0x931b, ++ 0x0804, 0x216d, 0xa0bc, 0x9422, 0xa0c0, 0x931b, 0x0804, 0x216d, ++ 0xa0cc, 0x9422, 0xa0d0, 0x931b, 0x0804, 0x216d, 0xa0dc, 0x9422, ++ 0xa0e0, 0x931b, 0x04d0, 0x908a, 0x0034, 0x1a0c, 0x0dd5, 0x9082, ++ 0x001b, 0x0002, 0x2155, 0x2153, 0x2153, 0x2153, 0x2153, 0x2153, ++ 0x215a, 0x2153, 0x2153, 0x2153, 0x2153, 0x2153, 0x215f, 0x2153, ++ 0x2153, 0x2153, 0x2153, 0x2153, 0x2164, 0x2153, 0x2153, 0x2153, ++ 0x2153, 0x2153, 0x2169, 0x080c, 0x0dd5, 0xa07c, 0x9422, 0xa080, ++ 0x931b, 0x0098, 0xa094, 0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, ++ 0x9422, 0xa0b0, 0x931b, 0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, ++ 0x0020, 0xa0dc, 0x9422, 0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, ++ 0x0160, 0x8a51, 0x0904, 0x228f, 0x8c60, 0x0804, 0x20df, 0xa004, ++ 0x9045, 0x0904, 0x228f, 0x0804, 0x20ba, 0x8a51, 0x0904, 0x228f, ++ 0x8c60, 0x2c05, 0x9005, 0x1158, 0xa004, 0x9045, 0x0904, 0x228f, ++ 0xa064, 0x90ec, 0x000f, 0x9de0, 0x2090, 0x2c05, 0x2060, 0xa880, ++ 0xc0fc, 0xa882, 0x0804, 0x2284, 0x2c05, 0x8422, 0x8420, 0x831a, ++ 0x9399, 0x0000, 0xac2e, 0xab32, 0xdd9c, 0x1904, 0x2221, 0x9082, ++ 0x001b, 0x0002, 0x21bd, 0x21bd, 0x21bf, 0x21bd, 0x21bd, 0x21bd, ++ 0x21cd, 0x21bd, 0x21bd, 0x21bd, 0x21db, 0x21bd, 0x21bd, 0x21bd, ++ 0x21e9, 0x21bd, 0x21bd, 0x21bd, 0x21f7, 0x21bd, 0x21bd, 0x21bd, ++ 0x2205, 0x21bd, 0x21bd, 0x21bd, 0x2213, 0x080c, 0x0dd5, 0xa17c, ++ 0x2400, 0x9122, 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa074, ++ 0x9420, 0xa078, 0x9319, 0x0804, 0x227f, 0xa18c, 0x2400, 0x9122, ++ 0xa190, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa084, 0x9420, 0xa088, ++ 0x9319, 0x0804, 0x227f, 0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, ++ 0x911b, 0x0a0c, 0x0dd5, 0xa094, 0x9420, 0xa098, 0x9319, 0x0804, ++ 0x227f, 0xa1ac, 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, ++ 0x0dd5, 0xa0a4, 0x9420, 0xa0a8, 0x9319, 0x0804, 0x227f, 0xa1bc, ++ 0x2400, 0x9122, 0xa1c0, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa0b4, ++ 0x9420, 0xa0b8, 0x9319, 0x0804, 0x227f, 0xa1cc, 0x2400, 0x9122, ++ 0xa1d0, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa0c4, 0x9420, 0xa0c8, ++ 0x9319, 0x0804, 0x227f, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, ++ 0x911b, 0x0a0c, 0x0dd5, 0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, ++ 0x227f, 0x9082, 0x001b, 0x0002, 0x223f, 0x223d, 0x223d, 0x223d, ++ 0x223d, 0x223d, 0x224c, 0x223d, 0x223d, 0x223d, 0x223d, 0x223d, ++ 0x2259, 0x223d, 0x223d, 0x223d, 0x223d, 0x223d, 0x2266, 0x223d, ++ 0x223d, 0x223d, 0x223d, 0x223d, 0x2273, 0x080c, 0x0dd5, 0xa17c, ++ 0x2400, 0x9122, 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa06c, ++ 0x9420, 0xa070, 0x9319, 0x0498, 0xa194, 0x2400, 0x9122, 0xa198, ++ 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa084, 0x9420, 0xa088, 0x9319, ++ 0x0430, 0xa1ac, 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, ++ 0x0dd5, 0xa09c, 0x9420, 0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, ++ 0x9122, 0xa1c8, 0x2300, 0x911b, 0x0a0c, 0x0dd5, 0xa0b4, 0x9420, ++ 0xa0b8, 0x9319, 0x0060, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, ++ 0x911b, 0x0a0c, 0x0dd5, 0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, ++ 0xab22, 0xa880, 0xc0fd, 0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, ++ 0x2a00, 0xa816, 0x000e, 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, ++ 0x00de, 0x00ce, 0x9085, 0x0001, 0x0005, 0x2001, 0x0005, 0x2004, ++ 0xd0bc, 0x190c, 0x0dce, 0x9084, 0x0007, 0x0002, 0x22b0, 0x1eb4, ++ 0x22b0, 0x22a6, 0x22a9, 0x22ac, 0x22a9, 0x22ac, 0x080c, 0x1eb4, ++ 0x0005, 0x080c, 0x11a3, 0x0005, 0x080c, 0x1eb4, 0x080c, 0x11a3, ++ 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200, 0x2071, 0x0260, ++ 0x2069, 0x1800, 0x7817, 0x0000, 0x789b, 0x0814, 0x78a3, 0x0406, ++ 0x789f, 0x0410, 0x2009, 0x013b, 0x200b, 0x0400, 0x781b, 0x0002, ++ 0x783b, 0x001f, 0x7837, 0x0020, 0x7803, 0x1600, 0x012e, 0x0005, ++ 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, 0x23cf, 0x7900, 0xd1dc, ++ 0x1118, 0x9084, 0x0006, 0x001a, 0x9084, 0x000e, 0x0002, 0x22f7, ++ 0x22ef, 0x7d9d, 0x22ef, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x7d83, ++ 0x22ef, 0x22f3, 0x22ef, 0x22f1, 0x22ef, 0x22f1, 0x22ef, 0x080c, ++ 0x0dd5, 0x0031, 0x0020, 0x080c, 0x7d83, 0x080c, 0x7d9d, 0x0005, ++ 0x0006, 0x0016, 0x0026, 0x080c, 0xea0a, 0x7930, 0x9184, 0x0003, ++ 0x01c0, 0x2001, 0x19f6, 0x2004, 0x9005, 0x0170, 0x2001, 0x0133, ++ 0x2004, 0x9005, 0x090c, 0x0dd5, 0x00c6, 0x2001, 0x19f6, 0x2064, ++ 0x080c, 0xc768, 0x00ce, 0x00f8, 0x2009, 0x0040, 0x080c, 0x23d2, ++ 0x00d0, 0x9184, 0x0014, 0x01a0, 0x6a00, 0x9286, 0x0003, 0x0160, ++ 0x080c, 0x73bc, 0x1138, 0x080c, 0x76a4, 0x080c, 0x601a, 0x080c, ++ 0x72ee, 0x0010, 0x080c, 0x5ed9, 0x080c, 0x7e4c, 0x0041, 0x0018, ++ 0x9184, 0x9540, 0x1dc8, 0x002e, 0x001e, 0x000e, 0x0005, 0x00e6, ++ 0x0036, 0x0046, 0x0056, 0x2071, 0x1a62, 0x080c, 0x1aa9, 0x005e, ++ 0x004e, 0x003e, 0x00ee, 0x0005, 0x0126, 0x2091, 0x2e00, 0x2071, ++ 0x1800, 0x7128, 0x2001, 0x196f, 0x2102, 0x2001, 0x1977, 0x2102, ++ 0x2001, 0x013b, 0x2102, 0x2079, 0x0200, 0x2001, 0x0201, 0x789e, ++ 0x78a3, 0x0200, 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, ++ 0x0005, 0x2320, 0x9182, 0x0204, 0x1230, 0x2011, 0x0008, 0x8423, ++ 0x8423, 0x8423, 0x0488, 0x9182, 0x024c, 0x1240, 0x2011, 0x0007, ++ 0x8403, 0x8003, 0x9400, 0x9400, 0x9420, 0x0430, 0x9182, 0x02bc, ++ 0x1238, 0x2011, 0x0006, 0x8403, 0x8003, 0x9400, 0x9420, 0x00e0, ++ 0x9182, 0x034c, 0x1230, 0x2011, 0x0005, 0x8403, 0x8003, 0x9420, ++ 0x0098, 0x9182, 0x042c, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, ++ 0x0058, 0x9182, 0x059c, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, ++ 0x0018, 0x2011, 0x0002, 0x8423, 0x9482, 0x0228, 0x8002, 0x8020, ++ 0x8301, 0x9402, 0x0110, 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, ++ 0x789a, 0x012e, 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6814, ++ 0x9084, 0xffc0, 0x910d, 0x6916, 0x00de, 0x000e, 0x0005, 0x00d6, ++ 0x2069, 0x0200, 0x9005, 0x6810, 0x0110, 0xc0a5, 0x0008, 0xc0a4, ++ 0x6812, 0x00de, 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6810, ++ 0x9084, 0xfff8, 0x910d, 0x6912, 0x00de, 0x000e, 0x0005, 0x7938, ++ 0x080c, 0x0dce, 0x00f6, 0x2079, 0x0200, 0x7902, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0x7902, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0xa001, 0x00fe, 0x0005, 0x0126, 0x2091, 0x2800, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x2009, 0x0000, 0x080c, 0x2c3e, ++ 0x080c, 0x2b59, 0x6054, 0x8004, 0x8004, 0x8004, 0x8004, 0x9084, ++ 0x000c, 0x6150, 0x918c, 0xfff3, 0x9105, 0x6052, 0x6050, 0x9084, ++ 0xb17f, 0x9085, 0x2000, 0x6052, 0x2009, 0x199d, 0x2011, 0x199e, ++ 0x6358, 0x939c, 0x38f0, 0x2320, 0x080c, 0x2b9d, 0x1238, 0x939d, ++ 0x4003, 0x94a5, 0x8603, 0x230a, 0x2412, 0x0030, 0x939d, 0x0203, ++ 0x94a5, 0x8603, 0x230a, 0x2412, 0x9006, 0x080c, 0x2b88, 0x9006, ++ 0x080c, 0x2b6b, 0x20a9, 0x0012, 0x1d04, 0x2424, 0x2091, 0x6000, ++ 0x1f04, 0x2424, 0x602f, 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, ++ 0x0400, 0x9084, 0xdfff, 0x6052, 0x6024, 0x6026, 0x080c, 0x2877, ++ 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x2887, 0x60e7, 0x0000, ++ 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, ++ 0x0080, 0x602f, 0x0000, 0x6007, 0x349f, 0x60bb, 0x0000, 0x20a9, ++ 0x0018, 0x60bf, 0x0000, 0x1f04, 0x2451, 0x60bb, 0x0000, 0x60bf, ++ 0x0108, 0x60bf, 0x0012, 0x60bf, 0x0405, 0x60bf, 0x0014, 0x60bf, ++ 0x0320, 0x60bf, 0x0018, 0x601b, 0x00f0, 0x601f, 0x001e, 0x600f, ++ 0x006b, 0x602b, 0x402f, 0x012e, 0x0005, 0x00f6, 0x2079, 0x0140, ++ 0x78c3, 0x0080, 0x78c3, 0x0083, 0x78c3, 0x0000, 0x00fe, 0x0005, ++ 0x2001, 0x1835, 0x2003, 0x0000, 0x2001, 0x1834, 0x2003, 0x0001, ++ 0x0005, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, ++ 0x0066, 0x2031, 0x1837, 0x2634, 0x96b4, 0x0028, 0x006e, 0x1138, ++ 0x6020, 0xd1bc, 0x0120, 0xd0bc, 0x1168, 0xd0b4, 0x1198, 0x9184, ++ 0x5e2c, 0x1118, 0x9184, 0x0007, 0x00aa, 0x9195, 0x0004, 0x9284, ++ 0x0007, 0x0082, 0x0016, 0x2001, 0x188b, 0x200c, 0xd184, 0x001e, ++ 0x0d70, 0x0c98, 0x0016, 0x2001, 0x188b, 0x200c, 0xd194, 0x001e, ++ 0x0d30, 0x0c58, 0x24d4, 0x24ba, 0x24bd, 0x24c0, 0x24c5, 0x24c7, ++ 0x24cb, 0x24cf, 0x080c, 0x8fd5, 0x00b8, 0x080c, 0x90a2, 0x00a0, ++ 0x080c, 0x90a2, 0x080c, 0x8fd5, 0x0078, 0x0099, 0x0068, 0x080c, ++ 0x8fd5, 0x0079, 0x0048, 0x080c, 0x90a2, 0x0059, 0x0028, 0x080c, ++ 0x90a2, 0x080c, 0x8fd5, 0x0029, 0x002e, 0x001e, 0x000e, 0x012e, ++ 0x0005, 0x00a6, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, 0x1904, ++ 0x273c, 0xd1f4, 0x190c, 0x0dce, 0x080c, 0x73bc, 0x0904, 0x252f, ++ 0x080c, 0xd230, 0x1120, 0x7000, 0x9086, 0x0003, 0x0570, 0x6024, ++ 0x9084, 0x1800, 0x0550, 0x080c, 0x73df, 0x0118, 0x080c, 0x73cd, ++ 0x1520, 0x6027, 0x0020, 0x6043, 0x0000, 0x080c, 0xd230, 0x0168, ++ 0x080c, 0x73df, 0x1150, 0x2001, 0x19a7, 0x2003, 0x0001, 0x6027, ++ 0x1800, 0x080c, 0x7252, 0x0804, 0x273f, 0x70a4, 0x9005, 0x1150, ++ 0x70a7, 0x0001, 0x00d6, 0x2069, 0x0140, 0x080c, 0x7413, 0x00de, ++ 0x1904, 0x273f, 0x080c, 0x76ae, 0x0428, 0x080c, 0x73df, 0x1590, ++ 0x6024, 0x9084, 0x1800, 0x1108, 0x0468, 0x080c, 0x76ae, 0x080c, ++ 0x76a4, 0x080c, 0x601a, 0x080c, 0x72ee, 0x0804, 0x273c, 0xd1ac, ++ 0x1508, 0x6024, 0xd0dc, 0x1170, 0xd0e4, 0x1178, 0xd0d4, 0x1190, ++ 0xd0cc, 0x0130, 0x7098, 0x9086, 0x0028, 0x1110, 0x080c, 0x7591, ++ 0x0804, 0x273c, 0x080c, 0x76a9, 0x0048, 0x2001, 0x197d, 0x2003, ++ 0x0002, 0x0020, 0x080c, 0x74f6, 0x0804, 0x273c, 0x080c, 0x762c, ++ 0x0804, 0x273c, 0x6220, 0xd1bc, 0x0138, 0xd2bc, 0x1904, 0x27af, ++ 0xd2b4, 0x1904, 0x27c2, 0x0000, 0xd1ac, 0x0904, 0x2651, 0x0036, ++ 0x6328, 0xc3bc, 0x632a, 0x003e, 0x080c, 0x73bc, 0x11c0, 0x6027, ++ 0x0020, 0x0006, 0x0026, 0x0036, 0x080c, 0x73d6, 0x1158, 0x080c, ++ 0x76a4, 0x080c, 0x601a, 0x080c, 0x72ee, 0x003e, 0x002e, 0x000e, ++ 0x00ae, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c, 0x7394, 0x0016, ++ 0x0046, 0x00c6, 0x644c, 0x9486, 0xf0f0, 0x1138, 0x2061, 0x0100, ++ 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74da, 0x948c, 0xff00, ++ 0x7038, 0xd084, 0x0178, 0x9186, 0xf800, 0x1160, 0x7048, 0xd084, ++ 0x1148, 0xc085, 0x704a, 0x0036, 0x2418, 0x2011, 0x8016, 0x080c, ++ 0x4b04, 0x003e, 0x080c, 0xd229, 0x1904, 0x262e, 0x9196, 0xff00, ++ 0x05a8, 0x7060, 0x9084, 0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, ++ 0x0568, 0x7130, 0xd184, 0x1550, 0x080c, 0x3319, 0x0128, 0xc18d, ++ 0x7132, 0x080c, 0x696a, 0x1510, 0x6240, 0x9294, 0x0010, 0x0130, ++ 0x6248, 0x9294, 0xff00, 0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, ++ 0x0904, 0x262e, 0x7038, 0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, ++ 0xd1ac, 0x1904, 0x262e, 0xc1ad, 0x2102, 0x0036, 0x73d8, 0x2011, ++ 0x8013, 0x080c, 0x4b04, 0x003e, 0x0804, 0x262e, 0x7038, 0xd08c, ++ 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, 0x262e, 0xc1ad, ++ 0x2102, 0x0036, 0x73d8, 0x2011, 0x8013, 0x080c, 0x4b04, 0x003e, ++ 0x7130, 0xc185, 0x7132, 0x2011, 0x1848, 0x220c, 0xd1a4, 0x01f0, ++ 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x86dd, 0x2019, ++ 0x000e, 0x00c6, 0x2061, 0x0000, 0x080c, 0xe522, 0x00ce, 0x9484, ++ 0x00ff, 0x9080, 0x3325, 0x200d, 0x918c, 0xff00, 0x810f, 0x2120, ++ 0x9006, 0x2009, 0x000e, 0x080c, 0xe5ae, 0x001e, 0x0016, 0x2009, ++ 0x0002, 0x2019, 0x0004, 0x080c, 0x318a, 0x001e, 0x0078, 0x0156, ++ 0x00b6, 0x20a9, 0x007f, 0x900e, 0x080c, 0x65ff, 0x1110, 0x080c, ++ 0x6034, 0x8108, 0x1f04, 0x2624, 0x00be, 0x015e, 0x00ce, 0x004e, ++ 0x080c, 0xadd2, 0x60e3, 0x0000, 0x001e, 0x2001, 0x1800, 0x2014, ++ 0x9296, 0x0004, 0x1170, 0xd19c, 0x11a0, 0x2011, 0x180c, 0x2214, ++ 0xd29c, 0x1120, 0x6204, 0x9295, 0x0002, 0x6206, 0x6228, 0xc29d, ++ 0x622a, 0x2003, 0x0001, 0x2001, 0x1826, 0x2003, 0x0000, 0x6027, ++ 0x0020, 0xd194, 0x0904, 0x273c, 0x0016, 0x6220, 0xd2b4, 0x0904, ++ 0x26d9, 0x080c, 0x8579, 0x080c, 0xa273, 0x6027, 0x0004, 0x00f6, ++ 0x2019, 0x19f0, 0x2304, 0x907d, 0x0904, 0x26a8, 0x7804, 0x9086, ++ 0x0032, 0x15f0, 0x00d6, 0x00c6, 0x00e6, 0x0096, 0x2069, 0x0140, ++ 0x782c, 0x685e, 0x7808, 0x685a, 0x6043, 0x0002, 0x2001, 0x0003, ++ 0x8001, 0x1df0, 0x6043, 0x0000, 0x2001, 0x003c, 0x8001, 0x1df0, ++ 0x080c, 0x2cff, 0x2001, 0x001e, 0x8001, 0x0240, 0x20a9, 0x0009, ++ 0x080c, 0x2c19, 0x6904, 0xd1dc, 0x1140, 0x0cb0, 0x2001, 0x0100, ++ 0x080c, 0x2cef, 0x9006, 0x080c, 0x2cef, 0x080c, 0x9588, 0x080c, ++ 0x968d, 0x7814, 0x2048, 0xa867, 0x0103, 0x2f60, 0x080c, 0xae61, ++ 0x009e, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x00ae, 0x0005, ++ 0x00fe, 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, 0x0110, ++ 0x080c, 0x2cff, 0x00de, 0x00c6, 0x2061, 0x19e7, 0x6028, 0x080c, ++ 0xd230, 0x0120, 0x909a, 0x0003, 0x1258, 0x0018, 0x909a, 0x00c8, ++ 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0xa24f, 0x0804, 0x273b, ++ 0x2061, 0x0100, 0x62c0, 0x080c, 0xac5d, 0x2019, 0x19f0, 0x2304, ++ 0x9065, 0x0120, 0x2009, 0x0027, 0x080c, 0xaedc, 0x00ce, 0x0804, ++ 0x273b, 0xd2bc, 0x0904, 0x2722, 0x080c, 0x8586, 0x6014, 0x9084, ++ 0x1984, 0x9085, 0x0010, 0x6016, 0x6027, 0x0004, 0x00d6, 0x2069, ++ 0x0140, 0x6804, 0x9084, 0x4000, 0x0110, 0x080c, 0x2cff, 0x00de, ++ 0x00c6, 0x2061, 0x19e7, 0x6044, 0x080c, 0xd230, 0x0120, 0x909a, ++ 0x0003, 0x1658, 0x0018, 0x909a, 0x00c8, 0x1638, 0x8000, 0x6046, ++ 0x603c, 0x00ce, 0x9005, 0x05b8, 0x2009, 0x07d0, 0x080c, 0x857e, ++ 0x9080, 0x0008, 0x2004, 0x9086, 0x0006, 0x1138, 0x6114, 0x918c, ++ 0x1984, 0x918d, 0x0012, 0x6116, 0x0430, 0x9080, 0x0008, 0x2004, ++ 0x9086, 0x0009, 0x0d98, 0x6114, 0x918c, 0x1984, 0x918d, 0x0016, ++ 0x6116, 0x00c8, 0x6027, 0x0004, 0x00b0, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0xa5b6, 0x003e, 0x2019, 0x19f6, 0x2304, 0x9065, 0x0150, ++ 0x2009, 0x004f, 0x6020, 0x9086, 0x0009, 0x1110, 0x2009, 0x004f, ++ 0x080c, 0xaedc, 0x00ce, 0x001e, 0xd19c, 0x0904, 0x27aa, 0x7038, ++ 0xd0ac, 0x1904, 0x2783, 0x0016, 0x0156, 0x6027, 0x0008, 0x6050, ++ 0x9085, 0x0040, 0x6052, 0x6050, 0x9084, 0xfbcf, 0x6052, 0x080c, ++ 0x2c38, 0x9085, 0x2000, 0x6052, 0x20a9, 0x0012, 0x1d04, 0x2756, ++ 0x080c, 0x85ad, 0x1f04, 0x2756, 0x6050, 0x9085, 0x0400, 0x9084, ++ 0xdfbf, 0x6052, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x2764, 0x6150, ++ 0x9185, 0x1400, 0x6052, 0x20a9, 0x0366, 0x1d04, 0x276d, 0x080c, ++ 0x85ad, 0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, ++ 0x0008, 0x0480, 0x080c, 0x2c00, 0x1f04, 0x276d, 0x015e, 0x6152, ++ 0x001e, 0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, 0x080c, ++ 0xadd2, 0x60e3, 0x0000, 0x080c, 0xe9e9, 0x080c, 0xea04, 0x080c, ++ 0x56d3, 0xd0fc, 0x1138, 0x080c, 0xd229, 0x1120, 0x9085, 0x0001, ++ 0x080c, 0x7403, 0x9006, 0x080c, 0x2cef, 0x2009, 0x0002, 0x080c, ++ 0x2c3e, 0x2001, 0x1800, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, ++ 0x0bae, 0x001e, 0x918c, 0xffd0, 0x6126, 0x00ae, 0x0005, 0x0016, ++ 0x2001, 0x188b, 0x200c, 0xd184, 0x001e, 0x0904, 0x255c, 0x0016, ++ 0x2009, 0x27bb, 0x00d0, 0x2001, 0x188b, 0x200c, 0xc184, 0x2102, ++ 0x001e, 0x0c40, 0x0016, 0x2001, 0x188b, 0x200c, 0xd194, 0x001e, ++ 0x0904, 0x255c, 0x0016, 0x2009, 0x27ce, 0x0038, 0x2001, 0x188b, ++ 0x200c, 0xc194, 0x2102, 0x001e, 0x08a8, 0x6028, 0xc0bc, 0x602a, ++ 0x2001, 0x0156, 0x2003, 0xbc91, 0x8000, 0x2003, 0xffff, 0x6043, ++ 0x0001, 0x080c, 0x2c38, 0x6027, 0x0080, 0x6017, 0x0000, 0x6043, ++ 0x0000, 0x0817, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x00f6, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x71d0, 0x70d2, 0x9116, ++ 0x05e8, 0x81ff, 0x01a0, 0x2009, 0x0000, 0x080c, 0x2c3e, 0x2011, ++ 0x8011, 0x2019, 0x010e, 0x231c, 0x939e, 0x0007, 0x1118, 0x2019, ++ 0x0001, 0x0010, 0x2019, 0x0000, 0x080c, 0x4b04, 0x0438, 0x2001, ++ 0x19a8, 0x200c, 0x81ff, 0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, ++ 0x0118, 0x2019, 0x0003, 0x0008, 0x2118, 0x2011, 0x8012, 0x080c, ++ 0x4b04, 0x080c, 0x56d3, 0xd0fc, 0x1188, 0x080c, 0xd229, 0x1170, ++ 0x00c6, 0x080c, 0x28d2, 0x080c, 0xa51d, 0x2061, 0x0100, 0x2019, ++ 0x0028, 0x2009, 0x0002, 0x080c, 0x318a, 0x00ce, 0x012e, 0x00fe, ++ 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, ++ 0x00ff, 0x2130, 0x9094, 0xff00, 0x11f0, 0x2011, 0x1837, 0x2214, ++ 0xd2ac, 0x11c8, 0x81ff, 0x01e8, 0x2011, 0x181f, 0x2204, 0x9106, ++ 0x1190, 0x2011, 0x1820, 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, ++ 0x9206, 0x1148, 0x2011, 0x1820, 0x2214, 0x9294, 0x00ff, 0x9584, ++ 0x00ff, 0x9206, 0x1120, 0x2500, 0x080c, 0x80be, 0x0048, 0x9584, ++ 0x00ff, 0x9080, 0x3325, 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, ++ 0x0005, 0x9080, 0x3325, 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, ++ 0x2069, 0x0140, 0x2001, 0x1818, 0x2003, 0x00ef, 0x20a9, 0x0010, ++ 0x9006, 0x6852, 0x6856, 0x1f04, 0x2882, 0x00de, 0x0005, 0x0006, ++ 0x00d6, 0x0026, 0x2069, 0x0140, 0x2001, 0x1818, 0x2102, 0x8114, ++ 0x8214, 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, ++ 0x82ff, 0x1128, 0x9184, 0x000f, 0x9080, 0xf1b6, 0x2005, 0x6856, ++ 0x8211, 0x1f04, 0x2897, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, ++ 0x2061, 0x1800, 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, ++ 0x00ce, 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, ++ 0x0140, 0x6980, 0x9116, 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, ++ 0x22a8, 0x2001, 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, ++ 0x1f04, 0x28c7, 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, ++ 0x015e, 0x0005, 0x080c, 0x56cf, 0xd0c4, 0x0150, 0xd0a4, 0x0140, ++ 0x9006, 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xe5ae, 0x004e, ++ 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, ++ 0x0904, 0x293e, 0x080c, 0x2b9d, 0x0660, 0x9084, 0x0700, 0x908e, ++ 0x0600, 0x1120, 0x2011, 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, ++ 0x1120, 0x2011, 0x8000, 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, ++ 0x9016, 0x2009, 0x0001, 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, ++ 0x2009, 0x0002, 0x00b0, 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, ++ 0x0004, 0x0078, 0x908e, 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, ++ 0x0040, 0x9084, 0x0700, 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, ++ 0x0058, 0x2300, 0x9080, 0x0020, 0x2018, 0x080c, 0x8f68, 0x928c, ++ 0xff00, 0x0110, 0x2011, 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, ++ 0x78c2, 0x2009, 0x0138, 0x220a, 0x080c, 0x73bc, 0x1118, 0x2009, ++ 0x196d, 0x220a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, ++ 0x0cc8, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, ++ 0x0170, 0x200c, 0x8000, 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, ++ 0x0dce, 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, ++ 0x2004, 0xd0dc, 0x0168, 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, ++ 0x918e, 0x004c, 0x1128, 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, ++ 0x900e, 0x2001, 0x0227, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, ++ 0x9108, 0x2001, 0x0226, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, ++ 0x9108, 0x0005, 0x0018, 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, ++ 0x1000, 0x1800, 0x0156, 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, ++ 0x1990, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0dd5, 0x0033, 0x00ee, ++ 0x002e, 0x001e, 0x000e, 0x015e, 0x0005, 0x299c, 0x29ba, 0x29de, ++ 0x29e0, 0x2a09, 0x2a0b, 0x2a0d, 0x2001, 0x0001, 0x080c, 0x27ea, ++ 0x080c, 0x2bfb, 0x2001, 0x1992, 0x2003, 0x0000, 0x7828, 0x9084, ++ 0xe1d7, 0x782a, 0x9006, 0x20a9, 0x0009, 0x080c, 0x2bb9, 0x2001, ++ 0x1990, 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x2a0e, 0x080c, ++ 0x858b, 0x0005, 0x2009, 0x1995, 0x200b, 0x0000, 0x2001, 0x199a, ++ 0x2003, 0x0036, 0x2001, 0x1999, 0x2003, 0x002a, 0x2001, 0x1992, ++ 0x2003, 0x0001, 0x9006, 0x080c, 0x2b6b, 0x2001, 0xffff, 0x20a9, ++ 0x0009, 0x080c, 0x2bb9, 0x2001, 0x1990, 0x2003, 0x0006, 0x2009, ++ 0x001e, 0x2011, 0x2a0e, 0x080c, 0x858b, 0x0005, 0x080c, 0x0dd5, ++ 0x2001, 0x199a, 0x2003, 0x0036, 0x2001, 0x1992, 0x2003, 0x0003, ++ 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, ++ 0x2001, 0x0001, 0x080c, 0x2b6b, 0x2001, 0x1996, 0x2003, 0x0000, ++ 0x2001, 0xffff, 0x20a9, 0x0009, 0x080c, 0x2bb9, 0x2001, 0x1990, ++ 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x2a0e, 0x080c, 0x858b, ++ 0x0005, 0x080c, 0x0dd5, 0x080c, 0x0dd5, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x00e6, 0x00f6, 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, ++ 0x0100, 0x2001, 0x1992, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0dd5, ++ 0x0043, 0x012e, 0x015e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x2a30, 0x2a50, 0x2a90, 0x2ac0, 0x2ae4, 0x2af4, 0x2af6, ++ 0x080c, 0x2bad, 0x11b0, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, ++ 0x1998, 0x2104, 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, ++ 0xc08d, 0x0008, 0xc085, 0x200a, 0x2001, 0x1990, 0x2003, 0x0001, ++ 0x0030, 0x080c, 0x2b1a, 0x2001, 0xffff, 0x080c, 0x29ab, 0x0005, ++ 0x080c, 0x2af8, 0x05e0, 0x2009, 0x1999, 0x2104, 0x8001, 0x200a, ++ 0x080c, 0x2bad, 0x1178, 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, ++ 0x9294, 0x0005, 0x9296, 0x0005, 0x0518, 0x2009, 0x1998, 0x2104, ++ 0xc085, 0x200a, 0x2009, 0x1995, 0x2104, 0x8000, 0x200a, 0x9086, ++ 0x0005, 0x0118, 0x080c, 0x2b00, 0x00c0, 0x200b, 0x0000, 0x7a38, ++ 0x9294, 0x0006, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, ++ 0x0001, 0x080c, 0x2b88, 0x2001, 0x1992, 0x2003, 0x0002, 0x0028, ++ 0x2001, 0x1990, 0x2003, 0x0003, 0x0010, 0x080c, 0x29cd, 0x0005, ++ 0x080c, 0x2af8, 0x0560, 0x2009, 0x1999, 0x2104, 0x8001, 0x200a, ++ 0x080c, 0x2bad, 0x1168, 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, ++ 0x1990, 0x2003, 0x0003, 0x2001, 0x1991, 0x2003, 0x0000, 0x00b8, ++ 0x2009, 0x1999, 0x2104, 0x9005, 0x1118, 0x080c, 0x2b3d, 0x0010, ++ 0x080c, 0x2b0d, 0x080c, 0x2b00, 0x2009, 0x1995, 0x200b, 0x0000, ++ 0x2001, 0x1992, 0x2003, 0x0001, 0x080c, 0x29cd, 0x0000, 0x0005, ++ 0x04b9, 0x0508, 0x080c, 0x2bad, 0x11b8, 0x7850, 0x9084, 0xefff, ++ 0x7852, 0x2009, 0x1996, 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, ++ 0x0108, 0x0078, 0x2001, 0x199b, 0x2003, 0x000a, 0x2009, 0x1998, ++ 0x2104, 0xc0fd, 0x200a, 0x0038, 0x0419, 0x2001, 0x1992, 0x2003, ++ 0x0004, 0x080c, 0x29f8, 0x0005, 0x0099, 0x0168, 0x080c, 0x2bad, ++ 0x1138, 0x7850, 0x9084, 0xefff, 0x7852, 0x080c, 0x29e4, 0x0018, ++ 0x0079, 0x080c, 0x29f8, 0x0005, 0x080c, 0x0dd5, 0x080c, 0x0dd5, ++ 0x2009, 0x199a, 0x2104, 0x8001, 0x200a, 0x090c, 0x2b59, 0x0005, ++ 0x7a38, 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, ++ 0x2001, 0x0001, 0x080c, 0x2b88, 0x0005, 0x7a38, 0x9294, 0x0006, ++ 0x9296, 0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x2b6b, 0x0005, 0x2009, 0x1995, 0x2104, 0x8000, 0x200a, 0x9086, ++ 0x0005, 0x0108, 0x0068, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, ++ 0x9296, 0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, ++ 0x7a38, 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, ++ 0x2001, 0x0001, 0x080c, 0x2b88, 0x0005, 0x0086, 0x2001, 0x1998, ++ 0x2004, 0x9084, 0x7fff, 0x090c, 0x0dd5, 0x2009, 0x1997, 0x2144, ++ 0x8846, 0x280a, 0x9844, 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, ++ 0x080c, 0x0dd5, 0x9006, 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, ++ 0x0005, 0x0006, 0x0156, 0x2001, 0x1990, 0x20a9, 0x0009, 0x2003, ++ 0x0000, 0x8000, 0x1f04, 0x2b5f, 0x2001, 0x1997, 0x2003, 0x8000, ++ 0x015e, 0x000e, 0x0005, 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, ++ 0x0158, 0x7838, 0x9084, 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, ++ 0x199d, 0x210c, 0x795a, 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, ++ 0x0006, 0x783a, 0x2009, 0x199e, 0x210c, 0x795a, 0x00fe, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0138, 0x7838, 0x9084, ++ 0xfffa, 0x9085, 0x0004, 0x783a, 0x0030, 0x7838, 0x9084, 0xfffb, ++ 0x9085, 0x0005, 0x783a, 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, ++ 0x2004, 0x9082, 0x0007, 0x000e, 0x0005, 0x0006, 0x2001, 0x0100, ++ 0x2004, 0x9082, 0x0009, 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, ++ 0x7820, 0x080c, 0x2c38, 0xd09c, 0x1110, 0x1f04, 0x2bb0, 0x015e, ++ 0x0005, 0x0126, 0x0016, 0x0006, 0x2091, 0x8000, 0x7850, 0x9085, ++ 0x0040, 0x7852, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x2c38, ++ 0x9085, 0x2000, 0x7852, 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, ++ 0x783b, 0x0007, 0x0090, 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, ++ 0x0060, 0x9186, 0x0002, 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, ++ 0x0003, 0x1118, 0x783b, 0x0004, 0x0000, 0x0006, 0x1d04, 0x2be6, ++ 0x080c, 0x85ad, 0x1f04, 0x2be6, 0x7850, 0x9085, 0x0400, 0x9084, ++ 0xdfbf, 0x7852, 0x080c, 0x2c38, 0x9085, 0x1000, 0x7852, 0x000e, ++ 0x001e, 0x012e, 0x0005, 0x7850, 0x9084, 0xffcf, 0x7852, 0x0005, ++ 0x0006, 0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, ++ 0xd0ac, 0x1130, 0x7820, 0xd0e4, 0x1140, 0x1f04, 0x2c0a, 0x0028, ++ 0x7854, 0xd08c, 0x1110, 0x1f04, 0x2c10, 0x00fe, 0x015e, 0x000e, ++ 0x0005, 0x1d04, 0x2c19, 0x080c, 0x85ad, 0x1f04, 0x2c19, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, 0x2001, ++ 0x19a8, 0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, ++ 0x0140, 0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, ++ 0x200a, 0x0005, 0x0036, 0x0046, 0x2001, 0x0141, 0x200c, 0x918c, ++ 0xff00, 0x9186, 0x2000, 0x0118, 0x9186, 0x0100, 0x1588, 0x2009, ++ 0x00a2, 0x080c, 0x0e51, 0x2019, 0x0160, 0x2324, 0x2011, 0x0003, ++ 0x2009, 0x0169, 0x2104, 0x9084, 0x0007, 0x210c, 0x918c, 0x0007, ++ 0x910e, 0x1db0, 0x9086, 0x0003, 0x11b8, 0x2304, 0x9402, 0x02a0, ++ 0x1d60, 0x8211, 0x1d68, 0x84ff, 0x0170, 0x2001, 0x0141, 0x200c, ++ 0x918c, 0xff00, 0x9186, 0x0100, 0x0130, 0x2009, 0x180c, 0x2104, ++ 0xc0dd, 0x200a, 0x0008, 0x0419, 0x2009, 0x0000, 0x080c, 0x0e51, ++ 0x004e, 0x003e, 0x0005, 0x2001, 0x180c, 0x2004, 0xd0dc, 0x01b0, ++ 0x2001, 0x0160, 0x2004, 0x9005, 0x0140, 0x2001, 0x0141, 0x2004, ++ 0x9084, 0xff00, 0x9086, 0x0100, 0x1148, 0x0126, 0x2091, 0x8000, ++ 0x0016, 0x0026, 0x0021, 0x002e, 0x001e, 0x012e, 0x0005, 0x00c6, ++ 0x2061, 0x0100, 0x6014, 0x0006, 0x2001, 0x0161, 0x2003, 0x0000, ++ 0x6017, 0x0018, 0xa001, 0xa001, 0x602f, 0x0008, 0x6104, 0x918e, ++ 0x0010, 0x6106, 0x918e, 0x0010, 0x6106, 0x6017, 0x0040, 0x04b9, ++ 0x001e, 0x9184, 0x0003, 0x01e0, 0x0036, 0x0016, 0x2019, 0x0141, ++ 0x6124, 0x918c, 0x0028, 0x1120, 0x2304, 0x9084, 0x2800, 0x0dc0, ++ 0x001e, 0x919c, 0xffe4, 0x9184, 0x0001, 0x0118, 0x9385, 0x0009, ++ 0x6016, 0x9184, 0x0002, 0x0118, 0x9385, 0x0012, 0x6016, 0x003e, ++ 0x2001, 0x180c, 0x200c, 0xc1dc, 0x2102, 0x00ce, 0x0005, 0x0016, ++ 0x0026, 0x080c, 0x73d6, 0x0108, 0xc0bc, 0x2009, 0x0140, 0x2114, ++ 0x9294, 0x0001, 0x9215, 0x220a, 0x002e, 0x001e, 0x0005, 0x0016, ++ 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, 0x9285, 0x1000, ++ 0x200a, 0x220a, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x2009, ++ 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, 0x220a, 0x002e, 0x001e, ++ 0x0005, 0x0006, 0x0016, 0x2009, 0x0140, 0x2104, 0x1128, 0x080c, ++ 0x73d6, 0x0110, 0xc0bc, 0x0008, 0xc0bd, 0x200a, 0x001e, 0x000e, ++ 0x0005, 0x2f95, 0x2f95, 0x2db9, 0x2db9, 0x2dc5, 0x2dc5, 0x2dd1, ++ 0x2dd1, 0x2ddf, 0x2ddf, 0x2deb, 0x2deb, 0x2df9, 0x2df9, 0x2e07, ++ 0x2e07, 0x2e19, 0x2e19, 0x2e25, 0x2e25, 0x2e33, 0x2e33, 0x2e51, ++ 0x2e51, 0x2e71, 0x2e71, 0x2e41, 0x2e41, 0x2e61, 0x2e61, 0x2e7f, ++ 0x2e7f, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e91, 0x2e91, 0x2e9d, 0x2e9d, 0x2eab, 0x2eab, 0x2eb9, ++ 0x2eb9, 0x2ec9, 0x2ec9, 0x2ed7, 0x2ed7, 0x2ee7, 0x2ee7, 0x2ef7, ++ 0x2ef7, 0x2f09, 0x2f09, 0x2f17, 0x2f17, 0x2f27, 0x2f27, 0x2f49, ++ 0x2f49, 0x2f6b, 0x2f6b, 0x2f37, 0x2f37, 0x2f5a, 0x2f5a, 0x2f7a, ++ 0x2f7a, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, 0x2e17, ++ 0x2e17, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2481, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2295, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2295, 0x080c, 0x2481, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x22d0, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x2481, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2295, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2295, 0x080c, 0x2481, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0xa001, ++ 0x0cf0, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x1380, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2481, 0x080c, ++ 0x1380, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x2295, 0x080c, 0x1380, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2481, 0x080c, 0x1380, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2295, 0x080c, 0x2481, 0x080c, 0x1380, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2295, 0x080c, 0x1380, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x1380, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2295, 0x080c, 0x2481, 0x080c, 0x1380, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2941, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2941, 0x080c, ++ 0x2481, 0x0804, 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x2941, 0x080c, 0x2295, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2941, 0x080c, 0x2295, 0x080c, 0x2481, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2941, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2481, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2295, 0x080c, 0x22d0, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2295, 0x080c, 0x2481, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2941, 0x080c, 0x1380, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2481, 0x080c, 0x1380, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2295, 0x080c, 0x1380, 0x0804, 0x2f8d, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2941, 0x080c, 0x2481, 0x080c, 0x1380, 0x080c, 0x22d0, 0x0804, ++ 0x2f8d, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2941, 0x080c, 0x2295, 0x080c, 0x2481, 0x080c, ++ 0x1380, 0x0498, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2941, 0x080c, 0x2295, 0x080c, 0x1380, ++ 0x080c, 0x22d0, 0x0410, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x2941, 0x080c, 0x1380, 0x080c, ++ 0x22d0, 0x0098, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2941, 0x080c, 0x2295, 0x080c, 0x2481, ++ 0x080c, 0x1380, 0x080c, 0x22d0, 0x0000, 0x015e, 0x014e, 0x013e, ++ 0x01de, 0x01ce, 0x012e, 0x000e, 0x010e, 0x000d, 0x00b6, 0x00c6, ++ 0x0026, 0x0046, 0x9026, 0x080c, 0x6930, 0x1904, 0x30a6, 0x72dc, ++ 0x2001, 0x197c, 0x2004, 0x9005, 0x1110, 0xd29c, 0x0148, 0xd284, ++ 0x1138, 0xd2bc, 0x1904, 0x30a6, 0x080c, 0x30ab, 0x0804, 0x30a6, ++ 0xd2cc, 0x1904, 0x30a6, 0x080c, 0x73bc, 0x1120, 0x70af, 0xffff, ++ 0x0804, 0x30a6, 0xd294, 0x0120, 0x70af, 0xffff, 0x0804, 0x30a6, ++ 0x080c, 0x3314, 0x0160, 0x080c, 0xd230, 0x0128, 0x2001, 0x1818, ++ 0x203c, 0x0804, 0x3033, 0x70af, 0xffff, 0x0804, 0x30a6, 0x2001, ++ 0x1818, 0x203c, 0x7294, 0xd284, 0x0904, 0x3033, 0xd28c, 0x1904, ++ 0x3033, 0x0036, 0x73ac, 0x938e, 0xffff, 0x1110, 0x2019, 0x0001, ++ 0x8314, 0x92e0, 0x1c80, 0x2c04, 0x938c, 0x0001, 0x0120, 0x9084, ++ 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x970e, 0x05d0, 0x908e, ++ 0x0000, 0x05b8, 0x908e, 0x00ff, 0x1150, 0x7230, 0xd284, 0x15b0, ++ 0x7294, 0xc28d, 0x7296, 0x70af, 0xffff, 0x003e, 0x04a0, 0x900e, ++ 0x080c, 0x283e, 0x080c, 0x659e, 0x1538, 0x9006, 0xb8bb, 0x0520, ++ 0xb8ac, 0x9005, 0x0148, 0x00c6, 0x2060, 0x080c, 0x8981, 0x00ce, ++ 0x090c, 0x8d25, 0xb8af, 0x0000, 0x080c, 0x6972, 0x1168, 0x7030, ++ 0xd08c, 0x0130, 0xb800, 0xd0bc, 0x0138, 0x080c, 0x681f, 0x0120, ++ 0x080c, 0x30c4, 0x0148, 0x0028, 0x080c, 0x3204, 0x080c, 0x30f0, ++ 0x0118, 0x8318, 0x0804, 0x2fe0, 0x73ae, 0x0010, 0x70af, 0xffff, ++ 0x003e, 0x0804, 0x30a6, 0x9780, 0x3325, 0x203d, 0x97bc, 0xff00, ++ 0x873f, 0x2041, 0x007e, 0x70ac, 0x9096, 0xffff, 0x1118, 0x900e, ++ 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, 0x20a8, 0x0020, ++ 0x70af, 0xffff, 0x0804, 0x30a6, 0x2700, 0x0156, 0x0016, 0x9106, ++ 0x0904, 0x309b, 0xc484, 0x080c, 0x65ff, 0x0148, 0x080c, 0xd230, ++ 0x1904, 0x309b, 0x080c, 0x659e, 0x1904, 0x30a3, 0x0008, 0xc485, ++ 0xb8bb, 0x0520, 0xb8ac, 0x9005, 0x0148, 0x00c6, 0x2060, 0x080c, ++ 0x8981, 0x00ce, 0x090c, 0x8d25, 0xb8af, 0x0000, 0x080c, 0x6972, ++ 0x1130, 0x7030, 0xd08c, 0x01f8, 0xb800, 0xd0bc, 0x11e0, 0x7294, ++ 0xd28c, 0x0180, 0x080c, 0x6972, 0x9082, 0x0006, 0x02e0, 0xd484, ++ 0x1118, 0x080c, 0x65c3, 0x0028, 0x080c, 0x3290, 0x01a0, 0x080c, ++ 0x32bb, 0x0088, 0x080c, 0x3204, 0x080c, 0xd230, 0x1160, 0x080c, ++ 0x30f0, 0x0188, 0x0040, 0x080c, 0xd230, 0x1118, 0x080c, 0x3290, ++ 0x0110, 0x0451, 0x0140, 0x001e, 0x8108, 0x015e, 0x1f04, 0x304c, ++ 0x70af, 0xffff, 0x0018, 0x001e, 0x015e, 0x71ae, 0x004e, 0x002e, ++ 0x00ce, 0x00be, 0x0005, 0x00c6, 0x0016, 0x70af, 0x0001, 0x2009, ++ 0x007e, 0x080c, 0x659e, 0x1168, 0xb813, 0x00ff, 0xb817, 0xfffe, ++ 0x080c, 0x3204, 0x04a9, 0x0128, 0x70dc, 0xc0bd, 0x70de, 0x080c, ++ 0xcf81, 0x001e, 0x00ce, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, ++ 0x2001, 0x184c, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0xaeaf, ++ 0x01d0, 0x2b00, 0x6012, 0x080c, 0xcfaa, 0x6023, 0x0001, 0x9006, ++ 0x080c, 0x653b, 0x2001, 0x0000, 0x080c, 0x654f, 0x0126, 0x2091, ++ 0x8000, 0x70a8, 0x8000, 0x70aa, 0x012e, 0x2009, 0x0004, 0x080c, ++ 0xaedc, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, ++ 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001, 0x184c, 0x2004, 0x9084, ++ 0x00ff, 0xb842, 0x080c, 0xaeaf, 0x0548, 0x2b00, 0x6012, 0xb800, ++ 0xc0c4, 0xb802, 0xb8a0, 0x9086, 0x007e, 0x0140, 0xb804, 0x9084, ++ 0x00ff, 0x9086, 0x0006, 0x1110, 0x080c, 0x31bf, 0x080c, 0xcfaa, ++ 0x6023, 0x0001, 0x9006, 0x080c, 0x653b, 0x2001, 0x0002, 0x080c, ++ 0x654f, 0x0126, 0x2091, 0x8000, 0x70a8, 0x8000, 0x70aa, 0x012e, ++ 0x2009, 0x0002, 0x080c, 0xaedc, 0x9085, 0x0001, 0x00ce, 0x00de, ++ 0x007e, 0x001e, 0x0005, 0x00b6, 0x00c6, 0x0026, 0x2009, 0x0080, ++ 0x080c, 0x659e, 0x1140, 0xb813, 0x00ff, 0xb817, 0xfffc, 0x0039, ++ 0x0110, 0x70e3, 0xffff, 0x002e, 0x00ce, 0x00be, 0x0005, 0x0016, ++ 0x0076, 0x00d6, 0x00c6, 0x080c, 0xae0b, 0x01d0, 0x2b00, 0x6012, ++ 0x080c, 0xcfaa, 0x6023, 0x0001, 0x9006, 0x080c, 0x653b, 0x2001, ++ 0x0002, 0x080c, 0x654f, 0x0126, 0x2091, 0x8000, 0x70e4, 0x8000, ++ 0x70e6, 0x012e, 0x2009, 0x0002, 0x080c, 0xaedc, 0x9085, 0x0001, ++ 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0126, ++ 0x2091, 0x8000, 0x2009, 0x007f, 0x080c, 0x659e, 0x11b8, 0xb813, ++ 0x00ff, 0xb817, 0xfffd, 0xb8cf, 0x0004, 0x080c, 0xae0b, 0x0170, ++ 0x2b00, 0x6012, 0x6316, 0x6023, 0x0001, 0x620a, 0x080c, 0xcfaa, ++ 0x2009, 0x0022, 0x080c, 0xaedc, 0x9085, 0x0001, 0x012e, 0x00de, ++ 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x00b6, ++ 0x21f0, 0x080c, 0x9296, 0x080c, 0x921b, 0x080c, 0xaca4, 0x080c, ++ 0xbd77, 0x3e08, 0x2130, 0x81ff, 0x0120, 0x20a9, 0x007e, 0x900e, ++ 0x0018, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x65ff, 0x1140, ++ 0x9686, 0x0002, 0x1118, 0xb800, 0xd0bc, 0x1110, 0x080c, 0x6034, ++ 0x001e, 0x8108, 0x1f04, 0x31a4, 0x9686, 0x0001, 0x190c, 0x32e8, ++ 0x00be, 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, ++ 0x00c6, 0x0046, 0x0036, 0x0026, 0x0016, 0x00b6, 0x6210, 0x2258, ++ 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x928b, 0x0076, 0x2039, ++ 0x0000, 0x080c, 0x9168, 0x2c08, 0x080c, 0xe2eb, 0x007e, 0x001e, ++ 0xba10, 0xbb14, 0xbcc0, 0x080c, 0x6034, 0xba12, 0xbb16, 0xbcc2, ++ 0x00be, 0x001e, 0x002e, 0x003e, 0x004e, 0x00ce, 0x00ee, 0x0005, ++ 0x00e6, 0x0006, 0x00b6, 0x6010, 0x2058, 0xb8a0, 0x00be, 0x9086, ++ 0x0080, 0x0150, 0x2071, 0x1800, 0x70a8, 0x9005, 0x0110, 0x8001, ++ 0x70aa, 0x000e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x70e4, 0x9005, ++ 0x0dc0, 0x8001, 0x70e6, 0x0ca8, 0xb800, 0xc08c, 0xb802, 0x0005, ++ 0x00f6, 0x00e6, 0x00c6, 0x00b6, 0x0046, 0x0036, 0x0026, 0x0016, ++ 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, 0x0001, 0x0078, 0x080c, ++ 0x56cf, 0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, 0x2020, 0x2009, ++ 0x002d, 0x080c, 0xe5ae, 0x20a9, 0x0800, 0x9016, 0x0026, 0x928e, ++ 0x007e, 0x0904, 0x326f, 0x928e, 0x007f, 0x0904, 0x326f, 0x928e, ++ 0x0080, 0x05e8, 0x9288, 0x1000, 0x210c, 0x81ff, 0x05c0, 0x8fff, ++ 0x1148, 0x2001, 0x198e, 0x0006, 0x2003, 0x0001, 0x04f1, 0x000e, ++ 0x2003, 0x0000, 0x00b6, 0x00c6, 0x2158, 0x2001, 0x0001, 0x080c, ++ 0x693c, 0x00ce, 0x00be, 0x2019, 0x0029, 0x080c, 0x928b, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0x9168, 0x00b6, 0x00c6, 0x0026, 0x2158, ++ 0xba04, 0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, 0xb807, 0x0404, ++ 0x0028, 0x2001, 0x0004, 0x8007, 0x9215, 0xba06, 0x002e, 0x00ce, ++ 0x00be, 0x0016, 0x2c08, 0x080c, 0xe2eb, 0x001e, 0x007e, 0x002e, ++ 0x8210, 0x1f04, 0x3226, 0x015e, 0x001e, 0x002e, 0x003e, 0x004e, ++ 0x00be, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, ++ 0x080c, 0x56cf, 0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, 0x2220, ++ 0x2009, 0x0029, 0x080c, 0xe5ae, 0x001e, 0x002e, 0x004e, 0x0005, ++ 0x0016, 0x0026, 0x0036, 0x00c6, 0x7294, 0x82ff, 0x01e8, 0x080c, ++ 0x696a, 0x11d0, 0x2100, 0x080c, 0x2871, 0x81ff, 0x01b8, 0x2019, ++ 0x0001, 0x8314, 0x92e0, 0x1c80, 0x2c04, 0xd384, 0x0120, 0x9084, ++ 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x9116, 0x0138, 0x9096, ++ 0x00ff, 0x0110, 0x8318, 0x0c68, 0x9085, 0x0001, 0x00ce, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x0036, 0x2019, 0x0029, 0x00a9, 0x003e, 0x9180, 0x1000, 0x2004, ++ 0x9065, 0x0158, 0x0016, 0x00c6, 0x2061, 0x1ab0, 0x001e, 0x6112, ++ 0x080c, 0x31bf, 0x001e, 0x080c, 0x65c3, 0x012e, 0x00ce, 0x001e, ++ 0x0005, 0x0016, 0x0026, 0x2110, 0x080c, 0xa808, 0x080c, 0xe917, ++ 0x002e, 0x001e, 0x0005, 0x2001, 0x1837, 0x2004, 0xd0cc, 0x0005, ++ 0x00c6, 0x00b6, 0x080c, 0x73bc, 0x1118, 0x20a9, 0x0800, 0x0010, ++ 0x20a9, 0x0782, 0x080c, 0x73bc, 0x1110, 0x900e, 0x0010, 0x2009, ++ 0x007e, 0x9180, 0x1000, 0x2004, 0x905d, 0x0130, 0x86ff, 0x0110, ++ 0xb800, 0xd0bc, 0x090c, 0x65c3, 0x8108, 0x1f04, 0x32f9, 0x2061, ++ 0x1800, 0x607f, 0x0000, 0x6080, 0x9084, 0x00ff, 0x6082, 0x60b3, ++ 0x0000, 0x00be, 0x00ce, 0x0005, 0x2001, 0x1869, 0x2004, 0xd0bc, ++ 0x0005, 0x2011, 0x1848, 0x2214, 0xd2ec, 0x0005, 0x0026, 0x2011, ++ 0x1867, 0x2214, 0xd2dc, 0x002e, 0x0005, 0x7eef, 0x7de8, 0x7ce4, ++ 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, ++ 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, ++ 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, ++ 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, ++ 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, ++ 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, ++ 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, ++ 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, ++ 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, ++ 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, ++ 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, ++ 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, ++ 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, ++ 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, ++ 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, ++ 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, ++ 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, ++ 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, ++ 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, ++ 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, ++ 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, ++ 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, ++ 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, ++ 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, ++ 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, ++ 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0x189e, 0x7003, ++ 0x0002, 0x9006, 0x7016, 0x701a, 0x704a, 0x704e, 0x700e, 0x7042, ++ 0x7046, 0x703b, 0x18ba, 0x703f, 0x18ba, 0x7007, 0x0001, 0x080c, ++ 0x1018, 0x090c, 0x0dd5, 0x2900, 0x706a, 0xa867, 0x0002, 0xa8ab, ++ 0xdcb0, 0x080c, 0x1018, 0x090c, 0x0dd5, 0x2900, 0x706e, 0xa867, ++ 0x0002, 0xa8ab, 0xdcb0, 0x0005, 0x2071, 0x189e, 0x7004, 0x0002, ++ 0x3454, 0x3455, 0x3468, 0x347c, 0x0005, 0x1004, 0x3465, 0x0e04, ++ 0x3465, 0x2079, 0x0000, 0x0126, 0x2091, 0x8000, 0x700c, 0x9005, ++ 0x1128, 0x700f, 0x0001, 0x012e, 0x0468, 0x0005, 0x012e, 0x0ce8, ++ 0x2079, 0x0000, 0x2061, 0x18b8, 0x2c4c, 0xa86c, 0x908e, 0x0100, ++ 0x0128, 0x9086, 0x0200, 0x0904, 0x3550, 0x0005, 0x7018, 0x2048, ++ 0x2061, 0x1800, 0x701c, 0x0807, 0x7014, 0x2048, 0xa864, 0x9094, ++ 0x00ff, 0x9296, 0x0029, 0x1120, 0xaa78, 0xd2fc, 0x0128, 0x0005, ++ 0x9086, 0x0103, 0x0108, 0x0005, 0x2079, 0x0000, 0x2061, 0x1800, ++ 0x701c, 0x0807, 0x2061, 0x1800, 0x7880, 0x908a, 0x0040, 0x1210, ++ 0x61d0, 0x0042, 0x2100, 0x908a, 0x003f, 0x1a04, 0x354d, 0x61d0, ++ 0x0804, 0x34e2, 0x3524, 0x355c, 0x3566, 0x356a, 0x3574, 0x357a, ++ 0x357e, 0x358e, 0x3591, 0x359b, 0x35a0, 0x35a5, 0x35b0, 0x35bb, ++ 0x35ca, 0x35d9, 0x35e7, 0x35fe, 0x3619, 0x354d, 0x36c2, 0x3700, ++ 0x37a6, 0x37b7, 0x37da, 0x354d, 0x354d, 0x354d, 0x3812, 0x382e, ++ 0x3837, 0x3866, 0x386c, 0x354d, 0x38b2, 0x354d, 0x354d, 0x354d, ++ 0x354d, 0x354d, 0x38bd, 0x38c6, 0x38ce, 0x38d0, 0x354d, 0x354d, ++ 0x354d, 0x354d, 0x354d, 0x354d, 0x38fc, 0x354d, 0x354d, 0x354d, ++ 0x354d, 0x354d, 0x3919, 0x397a, 0x354d, 0x354d, 0x354d, 0x354d, ++ 0x354d, 0x354d, 0x0002, 0x39a4, 0x39a7, 0x3a06, 0x3a1f, 0x3a4f, ++ 0x3ced, 0x354d, 0x52a8, 0x354d, 0x354d, 0x354d, 0x354d, 0x354d, ++ 0x354d, 0x354d, 0x354d, 0x359b, 0x35a0, 0x420e, 0x56f3, 0x422c, ++ 0x5337, 0x5388, 0x548b, 0x354d, 0x54ed, 0x5529, 0x555a, 0x565e, ++ 0x5587, 0x55de, 0x354d, 0x4230, 0x43f1, 0x4407, 0x442c, 0x4491, ++ 0x4505, 0x4525, 0x459c, 0x45f8, 0x4654, 0x4657, 0x467c, 0x4719, ++ 0x477f, 0x4787, 0x48b9, 0x4a2e, 0x4a62, 0x4cc6, 0x354d, 0x4ce4, ++ 0x4d90, 0x4e72, 0x4ecc, 0x354d, 0x4f81, 0x354d, 0x4fe7, 0x5002, ++ 0x4787, 0x5248, 0x714c, 0x0000, 0x2021, 0x4000, 0x080c, 0x4ae0, ++ 0x0126, 0x2091, 0x8000, 0x0e04, 0x352e, 0x0010, 0x012e, 0x0cc0, ++ 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833, ++ 0x0010, 0x7c82, 0x7986, 0x7a8a, 0x7b8e, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x7007, 0x0001, 0x2091, ++ 0x5000, 0x700f, 0x0000, 0x012e, 0x0005, 0x2021, 0x4001, 0x08b0, ++ 0x2021, 0x4002, 0x0898, 0x2021, 0x4003, 0x0880, 0x2021, 0x4005, ++ 0x0868, 0x2021, 0x4006, 0x0850, 0x2039, 0x0001, 0x902e, 0x2520, ++ 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x4aed, 0x7883, 0x0004, ++ 0x7884, 0x0807, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88, 0x7a8c, ++ 0x7884, 0x7990, 0x0804, 0x4af0, 0x7984, 0x7888, 0x2114, 0x200a, ++ 0x0804, 0x3524, 0x7984, 0x2114, 0x0804, 0x3524, 0x20e1, 0x0000, ++ 0x2099, 0x0021, 0x20e9, 0x0000, 0x20a1, 0x0021, 0x20a9, 0x001f, ++ 0x4003, 0x7984, 0x7a88, 0x7b8c, 0x0804, 0x3524, 0x7884, 0x2060, ++ 0x04d8, 0x2009, 0x0003, 0x2011, 0x0002, 0x2019, 0x001c, 0x789b, ++ 0x0137, 0x0804, 0x3524, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0800, ++ 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0848, 0x79a0, 0x9182, 0x0040, ++ 0x0210, 0x0804, 0x3559, 0x2138, 0x7d98, 0x7c9c, 0x0804, 0x3560, ++ 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3559, 0x2138, 0x7d98, ++ 0x7c9c, 0x0804, 0x356e, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, ++ 0x3559, 0x21e8, 0x7984, 0x7888, 0x20a9, 0x0001, 0x21a0, 0x4004, ++ 0x0804, 0x3524, 0x2061, 0x0800, 0xe10c, 0x9006, 0x2c15, 0x9200, ++ 0x8c60, 0x8109, 0x1dd8, 0x2010, 0x9005, 0x0904, 0x3524, 0x0804, ++ 0x3553, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3559, 0x21e0, ++ 0x20a9, 0x0001, 0x7984, 0x2198, 0x4012, 0x0804, 0x3524, 0x2069, ++ 0x1847, 0x7884, 0x7990, 0x911a, 0x1a04, 0x3559, 0x8019, 0x0904, ++ 0x3559, 0x684a, 0x6942, 0x788c, 0x6852, 0x7888, 0x6856, 0x9006, ++ 0x685a, 0x685e, 0x080c, 0x76d5, 0x0804, 0x3524, 0x2069, 0x1847, ++ 0x7884, 0x7994, 0x911a, 0x1a04, 0x3559, 0x8019, 0x0904, 0x3559, ++ 0x684e, 0x6946, 0x788c, 0x6862, 0x7888, 0x6866, 0x9006, 0x686a, ++ 0x686e, 0x0126, 0x2091, 0x8000, 0x080c, 0x69dc, 0x012e, 0x0804, ++ 0x3524, 0x902e, 0x2520, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x3556, 0x7984, 0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, ++ 0x20a1, 0x18a6, 0x4101, 0x080c, 0x4aa4, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x3556, 0x2009, 0x0020, 0xa85c, 0x9080, 0x0019, 0xaf60, ++ 0x080c, 0x4aed, 0x701f, 0x363d, 0x0005, 0xa864, 0x2008, 0x9084, ++ 0x00ff, 0x9096, 0x0011, 0x0168, 0x9096, 0x0019, 0x0150, 0x9096, ++ 0x0015, 0x0138, 0x9096, 0x0048, 0x0120, 0x9096, 0x0029, 0x1904, ++ 0x3556, 0x810f, 0x918c, 0x00ff, 0x0904, 0x3556, 0x7112, 0x7010, ++ 0x8001, 0x0560, 0x7012, 0x080c, 0x4aa4, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x3556, 0x2009, 0x0020, 0x7068, 0x2040, 0xa28c, 0xa390, ++ 0xa494, 0xa598, 0x9290, 0x0040, 0x9399, 0x0000, 0x94a1, 0x0000, ++ 0x95a9, 0x0000, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4aed, ++ 0x701f, 0x367b, 0x0005, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0002, ++ 0x0120, 0x9096, 0x000a, 0x1904, 0x3556, 0x0888, 0x7014, 0x2048, ++ 0xa868, 0xc0fd, 0xa86a, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0029, ++ 0x1160, 0xc2fd, 0xaa7a, 0x080c, 0x618b, 0x0150, 0x0126, 0x2091, ++ 0x8000, 0xa87a, 0xa982, 0x012e, 0x0050, 0x080c, 0x64b4, 0x1128, ++ 0x7007, 0x0003, 0x701f, 0x36a7, 0x0005, 0x080c, 0x6ec0, 0x0126, ++ 0x2091, 0x8000, 0x20a9, 0x0005, 0x20e1, 0x0001, 0x2099, 0x18a6, ++ 0x400a, 0x2100, 0x9210, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, ++ 0x0000, 0xa85c, 0x9080, 0x0019, 0x2009, 0x0020, 0x012e, 0xaf60, ++ 0x0804, 0x4af0, 0x2091, 0x8000, 0x7837, 0x4000, 0x7833, 0x0010, ++ 0x7883, 0x4000, 0x7887, 0x4953, 0x788b, 0x5020, 0x788f, 0x2020, ++ 0x2009, 0x017f, 0x2104, 0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, ++ 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0x9205, 0x789a, 0x2009, ++ 0x04fd, 0x2104, 0x789e, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x0180, 0x2001, 0x1a19, 0x2004, 0x9005, ++ 0x0128, 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, ++ 0x2003, 0x0002, 0x2003, 0x1001, 0x2071, 0x0080, 0x0804, 0x0427, ++ 0x81ff, 0x1904, 0x3556, 0x7984, 0x080c, 0x65ff, 0x1904, 0x3559, ++ 0x7e98, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x3559, 0x7c88, ++ 0x7d8c, 0x080c, 0x6762, 0x080c, 0x6731, 0x0000, 0x1518, 0x2061, ++ 0x1cd0, 0x0126, 0x2091, 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, ++ 0x6014, 0x904d, 0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, ++ 0x0150, 0x012e, 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, ++ 0x1a04, 0x3556, 0x0c30, 0x080c, 0xc768, 0x012e, 0x0904, 0x3556, ++ 0x0804, 0x3524, 0x900e, 0x2001, 0x0005, 0x080c, 0x6ec0, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0xce2a, 0x080c, 0x6c81, 0x012e, 0x0804, ++ 0x3524, 0x00a6, 0x2950, 0xb198, 0x080c, 0x65ff, 0x1904, 0x3793, ++ 0xb6a4, 0x9684, 0x3fff, 0x9082, 0x4000, 0x16e8, 0xb49c, 0xb5a0, ++ 0x080c, 0x6762, 0x080c, 0x6731, 0x1520, 0x2061, 0x1cd0, 0x0126, ++ 0x2091, 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, ++ 0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0158, 0x012e, ++ 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, 0x2009, 0x000d, ++ 0x12b0, 0x0c28, 0x080c, 0xc768, 0x012e, 0x2009, 0x0003, 0x0178, ++ 0x00e0, 0x900e, 0x2001, 0x0005, 0x080c, 0x6ec0, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0xce2a, 0x080c, 0x6c75, 0x012e, 0x0070, 0xb097, ++ 0x4005, 0xb19a, 0x0010, 0xb097, 0x4006, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0030, 0x2a48, 0x00ae, 0x0005, 0xb097, 0x4000, 0x9006, ++ 0x918d, 0x0001, 0x2008, 0x2a48, 0x00ae, 0x0005, 0x81ff, 0x1904, ++ 0x3556, 0x080c, 0x4abb, 0x0904, 0x3559, 0x080c, 0x66c6, 0x0904, ++ 0x3556, 0x080c, 0x6768, 0x0904, 0x3556, 0x0804, 0x451c, 0x81ff, ++ 0x1904, 0x3556, 0x080c, 0x4ad7, 0x0904, 0x3559, 0x080c, 0x67f6, ++ 0x0904, 0x3556, 0x2019, 0x0005, 0x79a8, 0x080c, 0x6783, 0x0904, ++ 0x3556, 0x7888, 0x908a, 0x1000, 0x1a04, 0x3559, 0x8003, 0x800b, ++ 0x810b, 0x9108, 0x080c, 0x8501, 0x7984, 0xd184, 0x1904, 0x3524, ++ 0x0804, 0x451c, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, ++ 0x0001, 0x0450, 0x2029, 0x07ff, 0x645c, 0x2400, 0x9506, 0x01f8, ++ 0x2508, 0x080c, 0x65ff, 0x11d8, 0x080c, 0x67f6, 0x1128, 0x2009, ++ 0x0002, 0x62c0, 0x2518, 0x00c0, 0x2019, 0x0004, 0x900e, 0x080c, ++ 0x6783, 0x1118, 0x2009, 0x0006, 0x0078, 0x7884, 0x908a, 0x1000, ++ 0x1270, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x8501, 0x8529, ++ 0x1ae0, 0x012e, 0x0804, 0x3524, 0x012e, 0x0804, 0x3556, 0x012e, ++ 0x0804, 0x3559, 0x080c, 0x4abb, 0x0904, 0x3559, 0x080c, 0x66c6, ++ 0x0904, 0x3556, 0xbaa0, 0x2019, 0x0005, 0x00c6, 0x9066, 0x080c, ++ 0x928b, 0x0076, 0x903e, 0x080c, 0x9168, 0x900e, 0x080c, 0xe2eb, ++ 0x007e, 0x00ce, 0x080c, 0x6762, 0x0804, 0x3524, 0x080c, 0x4abb, ++ 0x0904, 0x3559, 0x080c, 0x6762, 0x2208, 0x0804, 0x3524, 0x0156, ++ 0x00d6, 0x00e6, 0x2069, 0x1910, 0x6810, 0x6914, 0x910a, 0x1208, ++ 0x900e, 0x6816, 0x9016, 0x901e, 0x20a9, 0x007e, 0x2069, 0x1000, ++ 0x2d04, 0x905d, 0x0118, 0xb84c, 0x0059, 0x9210, 0x8d68, 0x1f04, ++ 0x3848, 0x2300, 0x9218, 0x00ee, 0x00de, 0x015e, 0x0804, 0x3524, ++ 0x00f6, 0x0016, 0x907d, 0x0138, 0x9006, 0x8000, 0x2f0c, 0x81ff, ++ 0x0110, 0x2178, 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0x1910, ++ 0x6910, 0x62bc, 0x0804, 0x3524, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x3556, 0x0126, 0x2091, 0x8000, 0x080c, 0x56e3, 0x0128, ++ 0x2009, 0x0007, 0x012e, 0x0804, 0x3556, 0x012e, 0x615c, 0x9190, ++ 0x3325, 0x2215, 0x9294, 0x00ff, 0x637c, 0x83ff, 0x0108, 0x6280, ++ 0x67dc, 0x97c4, 0x000a, 0x98c6, 0x000a, 0x1118, 0x2031, 0x0001, ++ 0x00e8, 0x97c4, 0x0022, 0x98c6, 0x0022, 0x1118, 0x2031, 0x0003, ++ 0x00a8, 0x97c4, 0x0012, 0x98c6, 0x0012, 0x1118, 0x2031, 0x0002, ++ 0x0068, 0x080c, 0x73bc, 0x1118, 0x2031, 0x0004, 0x0038, 0xd79c, ++ 0x0120, 0x2009, 0x0005, 0x0804, 0x3556, 0x9036, 0x7e9a, 0x7f9e, ++ 0x0804, 0x3524, 0x614c, 0x6250, 0x2019, 0x1986, 0x231c, 0x2001, ++ 0x1987, 0x2004, 0x789a, 0x0804, 0x3524, 0x0126, 0x2091, 0x8000, ++ 0x6138, 0x623c, 0x6340, 0x012e, 0x0804, 0x3524, 0x080c, 0x4ad7, ++ 0x0904, 0x3559, 0xba44, 0xbb38, 0x0804, 0x3524, 0x080c, 0x0dd5, ++ 0x080c, 0x4ad7, 0x2110, 0x0904, 0x3559, 0xb804, 0x908c, 0x00ff, ++ 0x918e, 0x0006, 0x0140, 0x9084, 0xff00, 0x9086, 0x0600, 0x2009, ++ 0x0009, 0x1904, 0x3556, 0x0126, 0x2091, 0x8000, 0x2019, 0x0005, ++ 0x00c6, 0x9066, 0x080c, 0xa808, 0x080c, 0x928b, 0x0076, 0x903e, ++ 0x080c, 0x9168, 0x900e, 0x080c, 0xe2eb, 0x007e, 0x00ce, 0xb807, ++ 0x0407, 0x012e, 0x0804, 0x3524, 0x614c, 0x6250, 0x7884, 0x604e, ++ 0x7b88, 0x6352, 0x2069, 0x1847, 0x831f, 0x9305, 0x6816, 0x788c, ++ 0x2069, 0x1986, 0x2d1c, 0x206a, 0x7e98, 0x9682, 0x0014, 0x1210, ++ 0x2031, 0x07d0, 0x2069, 0x1987, 0x2d04, 0x266a, 0x789a, 0x0804, ++ 0x3524, 0x0126, 0x2091, 0x8000, 0x7884, 0x603a, 0xd0c4, 0x01a8, ++ 0x00d6, 0x78a8, 0x2009, 0x199d, 0x200a, 0x78ac, 0x2011, 0x199e, ++ 0x2012, 0x2069, 0x0100, 0x6838, 0x9086, 0x0007, 0x1118, 0x2214, ++ 0x6a5a, 0x0010, 0x210c, 0x695a, 0x00de, 0x7884, 0xd0b4, 0x0120, ++ 0x3b00, 0x9084, 0xff3f, 0x20d8, 0x7888, 0x603e, 0x2011, 0x0114, ++ 0x220c, 0x7888, 0xd08c, 0x0118, 0x918d, 0x0080, 0x0010, 0x918c, ++ 0xff7f, 0x2112, 0x788c, 0x6042, 0x9084, 0x0020, 0x0130, 0x78b4, ++ 0x6046, 0x9084, 0x0001, 0x090c, 0x420e, 0x6040, 0xd0cc, 0x0120, ++ 0x78b0, 0x2011, 0x0114, 0x2012, 0x012e, 0x0804, 0x3524, 0x00f6, ++ 0x2079, 0x1800, 0x7a38, 0xa898, 0x9084, 0xfebf, 0x9215, 0xa89c, ++ 0x9084, 0xfebf, 0x8002, 0x9214, 0x7838, 0x9084, 0x0140, 0x9215, ++ 0x7a3a, 0xa897, 0x4000, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, ++ 0x00fe, 0x0005, 0x7898, 0x9005, 0x01a8, 0x7888, 0x9025, 0x0904, ++ 0x3559, 0x788c, 0x902d, 0x0904, 0x3559, 0x900e, 0x080c, 0x65ff, ++ 0x1120, 0xba44, 0xbb38, 0xbc46, 0xbd3a, 0x9186, 0x07ff, 0x0190, ++ 0x8108, 0x0ca0, 0x080c, 0x4ad7, 0x0904, 0x3559, 0x7888, 0x900d, ++ 0x0904, 0x3559, 0x788c, 0x9005, 0x0904, 0x3559, 0xba44, 0xb946, ++ 0xbb38, 0xb83a, 0x0804, 0x3524, 0x2011, 0xbc09, 0x0010, 0x2011, ++ 0xbc05, 0x080c, 0x56e3, 0x1904, 0x3556, 0x00c6, 0x2061, 0x0100, ++ 0x7984, 0x9186, 0x00ff, 0x1130, 0x2001, 0x1818, 0x2004, 0x9085, ++ 0xff00, 0x0088, 0x9182, 0x007f, 0x16e0, 0x9188, 0x3325, 0x210d, ++ 0x918c, 0x00ff, 0x2001, 0x1818, 0x2004, 0x0026, 0x9116, 0x002e, ++ 0x0580, 0x810f, 0x9105, 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, ++ 0xae0b, 0x000e, 0x0510, 0x602e, 0x620a, 0x7984, 0x00b6, 0x080c, ++ 0x65a4, 0x2b08, 0x00be, 0x1500, 0x6112, 0x6023, 0x0001, 0x080c, ++ 0x4aa4, 0x01d0, 0x9006, 0xa866, 0x7007, 0x0003, 0xa832, 0xa868, ++ 0xc0fd, 0xa86a, 0x701f, 0x39ff, 0x2900, 0x6016, 0x2009, 0x0032, ++ 0x080c, 0xaedc, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, ++ 0x3556, 0x00ce, 0x0804, 0x3559, 0x080c, 0xae61, 0x0cb0, 0xa830, ++ 0x9086, 0x0100, 0x0904, 0x3556, 0x0804, 0x3524, 0x2061, 0x1a71, ++ 0x0126, 0x2091, 0x8000, 0x6000, 0xd084, 0x0170, 0x6104, 0x6208, ++ 0x2061, 0x1800, 0x6354, 0x6074, 0x789a, 0x60c0, 0x789e, 0x60bc, ++ 0x78aa, 0x012e, 0x0804, 0x3524, 0x900e, 0x2110, 0x0c88, 0x81ff, ++ 0x1904, 0x3556, 0x080c, 0x73bc, 0x0904, 0x3556, 0x0126, 0x2091, ++ 0x8000, 0x6254, 0x6074, 0x9202, 0x0248, 0x9085, 0x0001, 0x080c, ++ 0x28a7, 0x080c, 0x58fd, 0x012e, 0x0804, 0x3524, 0x012e, 0x0804, ++ 0x3559, 0x0006, 0x0016, 0x00c6, 0x00e6, 0x2001, 0x19a9, 0x2070, ++ 0x2061, 0x1847, 0x6008, 0x2072, 0x900e, 0x2011, 0x1400, 0x080c, ++ 0x8f68, 0x7206, 0x00ee, 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x81ff, 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, ++ 0x3526, 0x7884, 0xd0fc, 0x0148, 0x2001, 0x002a, 0x2004, 0x9082, ++ 0x00e1, 0x0288, 0x012e, 0x0804, 0x3559, 0x2001, 0x002a, 0x2004, ++ 0x2069, 0x1847, 0x6908, 0x9102, 0x1230, 0x012e, 0x0804, 0x3559, ++ 0x012e, 0x0804, 0x3556, 0x080c, 0xadcb, 0x0dd0, 0x7884, 0xd0fc, ++ 0x0904, 0x3aca, 0x00c6, 0x080c, 0x4aa4, 0x00ce, 0x0d88, 0xa867, ++ 0x0000, 0x7884, 0xa80a, 0x7898, 0xa80e, 0x789c, 0xa812, 0x2001, ++ 0x002e, 0x2004, 0xa81a, 0x2001, 0x002f, 0x2004, 0xa81e, 0x2001, ++ 0x0030, 0x2004, 0xa822, 0x2001, 0x0031, 0x2004, 0xa826, 0x2001, ++ 0x0034, 0x2004, 0xa82a, 0x2001, 0x0035, 0x2004, 0xa82e, 0x2001, ++ 0x002a, 0x2004, 0x9080, 0x0003, 0x9084, 0x00fc, 0x8004, 0xa816, ++ 0x080c, 0x3c50, 0x0928, 0x7014, 0x2048, 0xad2c, 0xac28, 0xab1c, ++ 0xaa18, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, ++ 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x001b, 0x080c, 0x4aed, 0x701f, 0x3b8d, 0x7023, 0x0001, ++ 0x012e, 0x0005, 0x0046, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3a39, 0x2001, 0x199f, 0x2003, ++ 0x0000, 0x2021, 0x000a, 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb, ++ 0x0000, 0x60bf, 0x32e1, 0x60bf, 0x0012, 0x080c, 0x3cbf, 0x080c, ++ 0x3c7e, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x1a66, 0x2079, ++ 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001, ++ 0x0035, 0x2004, 0x780e, 0x2001, 0x0034, 0x2004, 0x780a, 0x00de, ++ 0x2011, 0x0001, 0x080c, 0x4052, 0x008e, 0x00ee, 0x00fe, 0x080c, ++ 0x3f7f, 0x080c, 0x3e84, 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084, ++ 0x0140, 0x1db8, 0x080c, 0x40c6, 0x00f6, 0x2079, 0x0300, 0x78bc, ++ 0x00fe, 0x908c, 0x0070, 0x1560, 0x2071, 0x0200, 0x7037, 0x0000, ++ 0x7050, 0x9084, 0xff00, 0x9086, 0x3200, 0x1510, 0x7037, 0x0001, ++ 0x7050, 0x9084, 0xff00, 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000, ++ 0x7054, 0x7037, 0x0000, 0x715c, 0x9106, 0x1190, 0x2001, 0x1820, ++ 0x2004, 0x9106, 0x1168, 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084, ++ 0x1e00, 0x00ce, 0x0138, 0x080c, 0x3e8e, 0x080c, 0x3c79, 0x0058, ++ 0x080c, 0x3c79, 0x080c, 0x3fea, 0x080c, 0x3f75, 0x2001, 0x020b, ++ 0x2004, 0xd0e4, 0x0dd8, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, ++ 0x0100, 0x6027, 0x0002, 0x001e, 0x6106, 0x2011, 0x020d, 0x2013, ++ 0x0020, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001, ++ 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x12ed, 0x2009, ++ 0x0028, 0x080c, 0x23d2, 0x2001, 0x0227, 0x200c, 0x2102, 0x00fe, ++ 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x004e, ++ 0x2001, 0x199f, 0x2004, 0x9005, 0x1118, 0x012e, 0x0804, 0x3524, ++ 0x012e, 0x2021, 0x400c, 0x0804, 0x3526, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, 0x0156, 0x7014, ++ 0x2048, 0x7020, 0x20a8, 0x8000, 0x7022, 0xa804, 0x9005, 0x0904, ++ 0x3be9, 0x2048, 0x1f04, 0x3b9d, 0x7068, 0x2040, 0xa28c, 0xa390, ++ 0xa494, 0xa598, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, ++ 0x2021, 0x0000, 0x0096, 0x7014, 0x2048, 0xa864, 0x009e, 0x9086, ++ 0x0103, 0x0170, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x001b, 0x080c, 0x4aed, 0x701f, 0x3b8d, 0x00b0, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c, ++ 0x0f7c, 0x000e, 0x080c, 0x4af0, 0x701f, 0x3b8d, 0x015e, 0x00de, ++ 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x7014, 0x2048, 0xa864, 0x9086, 0x0103, 0x1118, 0x701f, ++ 0x3c4e, 0x0450, 0x7014, 0x2048, 0xa868, 0xc0fd, 0xa86a, 0x2009, ++ 0x007f, 0x080c, 0x659e, 0x0110, 0x9006, 0x0030, 0xb813, 0x00ff, ++ 0xb817, 0xfffd, 0x080c, 0xcff9, 0x015e, 0x00de, 0x009e, 0x008e, ++ 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0904, 0x3556, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, ++ 0x00d6, 0x0156, 0x701f, 0x3c20, 0x7007, 0x0003, 0x0804, 0x3bde, ++ 0xa830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, 0x3526, 0x0076, ++ 0xad10, 0xac0c, 0xab24, 0xaa20, 0xa930, 0xa808, 0xd0b4, 0x1120, ++ 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098, ++ 0x27e8, 0x20a0, 0x0006, 0x080c, 0x0f7c, 0x000e, 0x080c, 0x4af0, ++ 0x007e, 0x701f, 0x3b8d, 0x7023, 0x0001, 0x0005, 0x0804, 0x3524, ++ 0x0156, 0x00c6, 0xa814, 0x908a, 0x001e, 0x0218, 0xa833, 0x001e, ++ 0x0010, 0xa832, 0x0078, 0x81ff, 0x0168, 0x0016, 0x080c, 0x4aa4, ++ 0x001e, 0x0130, 0xa800, 0x2040, 0xa008, 0xa80a, 0x2100, 0x0c58, ++ 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, 0x0005, 0x0006, ++ 0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, 0x00fe, 0x000e, ++ 0x0005, 0x2001, 0x199f, 0x2003, 0x0001, 0x0005, 0x00f6, 0x00e6, ++ 0x00c6, 0x2061, 0x0200, 0x2001, 0x19aa, 0x2004, 0x601a, 0x2061, ++ 0x0100, 0x2001, 0x19a9, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106, ++ 0x080c, 0x4aa4, 0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, ++ 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, ++ 0x2061, 0x0090, 0x2079, 0x0100, 0x2001, 0x19a9, 0x2004, 0x6036, ++ 0x2009, 0x0040, 0x080c, 0x23d2, 0x2001, 0x002a, 0x2004, 0x9084, ++ 0xfff8, 0xa86e, 0x601a, 0xa873, 0x0000, 0x601f, 0x0000, 0x78ca, ++ 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, ++ 0x080c, 0x4aa4, 0x2940, 0xa013, 0x0019, 0xa017, 0x0001, 0x2800, ++ 0xa05a, 0x2001, 0x0030, 0x2004, 0xa866, 0x2001, 0x0031, 0x2004, ++ 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, 0xa873, ++ 0x0000, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x0300, 0x2003, ++ 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, ++ 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x81ff, 0x0148, 0x080c, 0x2c30, 0x1130, 0x9006, 0x080c, 0x2b88, ++ 0x9006, 0x080c, 0x2b6b, 0x7884, 0x9084, 0x0007, 0x0002, 0x3d0a, ++ 0x3d13, 0x3d1c, 0x3d07, 0x3d07, 0x3d07, 0x3d07, 0x3d07, 0x012e, ++ 0x0804, 0x3559, 0x2009, 0x0114, 0x2104, 0x9085, 0x0800, 0x200a, ++ 0x080c, 0x3ed8, 0x00c0, 0x2009, 0x0114, 0x2104, 0x9085, 0x4000, ++ 0x200a, 0x080c, 0x3ed8, 0x0078, 0x080c, 0x73bc, 0x1128, 0x012e, ++ 0x2009, 0x0016, 0x0804, 0x3556, 0x81ff, 0x0128, 0x012e, 0x2021, ++ 0x400b, 0x0804, 0x3526, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3a39, 0x2009, 0x0101, 0x210c, ++ 0x0016, 0x7ec8, 0x7dcc, 0x9006, 0x2068, 0x2060, 0x2058, 0x080c, ++ 0x41a1, 0x080c, 0x40f1, 0x903e, 0x2720, 0x00f6, 0x00e6, 0x0086, ++ 0x2940, 0x2071, 0x1a66, 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000, ++ 0x6884, 0xd0b4, 0x0120, 0x68d4, 0x780e, 0x68d0, 0x780a, 0x00de, ++ 0x2011, 0x0001, 0x080c, 0x4052, 0x080c, 0x2c38, 0x080c, 0x2c38, ++ 0x080c, 0x2c38, 0x080c, 0x2c38, 0x080c, 0x4052, 0x008e, 0x00ee, ++ 0x00fe, 0x080c, 0x3f7f, 0x2009, 0x9c40, 0x8109, 0x11b0, 0x080c, ++ 0x3e8e, 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x001e, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, ++ 0x2009, 0x0017, 0x080c, 0x3556, 0x0cf8, 0x2001, 0x020b, 0x2004, ++ 0x9084, 0x0140, 0x1d10, 0x00f6, 0x2079, 0x0000, 0x7884, 0x00fe, ++ 0xd0bc, 0x0178, 0x2001, 0x0201, 0x200c, 0x81ff, 0x0150, 0x080c, ++ 0x3f5d, 0x2d00, 0x9c05, 0x9b05, 0x0120, 0x080c, 0x3e8e, 0x0804, ++ 0x3e3b, 0x080c, 0x40c6, 0x080c, 0x3fea, 0x080c, 0x3f40, 0x080c, ++ 0x3f75, 0x00f6, 0x2079, 0x0100, 0x7824, 0xd0ac, 0x0130, 0x8b58, ++ 0x080c, 0x3e8e, 0x00fe, 0x0804, 0x3e3b, 0x00fe, 0x080c, 0x3e84, ++ 0x1150, 0x8d68, 0x2001, 0x0032, 0x2602, 0x2001, 0x0033, 0x2502, ++ 0x080c, 0x3e8e, 0x0080, 0x87ff, 0x0138, 0x2001, 0x0201, 0x2004, ++ 0x9005, 0x1908, 0x8739, 0x0038, 0x2001, 0x1a62, 0x2004, 0x9086, ++ 0x0000, 0x1904, 0x3d8b, 0x2001, 0x032f, 0x2003, 0x00f6, 0x8631, ++ 0x1208, 0x8529, 0x2500, 0x9605, 0x0904, 0x3e3b, 0x7884, 0xd0bc, ++ 0x0128, 0x2d00, 0x9c05, 0x9b05, 0x1904, 0x3e3b, 0xa013, 0x0019, ++ 0x2001, 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1148, 0x2001, ++ 0x1a62, 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x0030, ++ 0xa017, 0x0001, 0x78b4, 0x9005, 0x0108, 0xa016, 0x2800, 0xa05a, ++ 0x2009, 0x0040, 0x080c, 0x23d2, 0x2900, 0xa85a, 0xa813, 0x0019, ++ 0x7884, 0xd0a4, 0x1180, 0xa817, 0x0000, 0x00c6, 0x20a9, 0x0004, ++ 0x2061, 0x0090, 0x602b, 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, ++ 0x3e12, 0x00ce, 0x0030, 0xa817, 0x0001, 0x78b0, 0x9005, 0x0108, ++ 0xa816, 0x00f6, 0x00c6, 0x2079, 0x0100, 0x2061, 0x0090, 0x7827, ++ 0x0002, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, ++ 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, ++ 0x00fe, 0x0804, 0x3d45, 0x001e, 0x00c6, 0x2001, 0x032a, 0x2003, ++ 0x0004, 0x2061, 0x0100, 0x6027, 0x0002, 0x6106, 0x2011, 0x020d, ++ 0x2013, 0x0020, 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, ++ 0x080c, 0x12ed, 0x7884, 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, ++ 0x2009, 0x0028, 0x080c, 0x23d2, 0x2001, 0x0227, 0x200c, 0x2102, ++ 0x6050, 0x9084, 0xb7ef, 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, ++ 0x6043, 0x0090, 0x6043, 0x0010, 0x00ce, 0x2d08, 0x2c10, 0x2b18, ++ 0x2b00, 0x9c05, 0x9d05, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x00ae, 0x009e, 0x008e, 0x1118, 0x012e, 0x0804, 0x3524, 0x012e, ++ 0x2021, 0x400c, 0x0804, 0x3526, 0x9085, 0x0001, 0x1d04, 0x3e8d, ++ 0x2091, 0x6000, 0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, ++ 0x2003, 0x0010, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x1a62, ++ 0x2003, 0x0000, 0x0071, 0x2009, 0x0048, 0x080c, 0x23d2, 0x2001, ++ 0x0227, 0x2024, 0x2402, 0x2001, 0x0109, 0x2003, 0x4000, 0x9026, ++ 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a66, 0x7000, 0x9086, 0x0000, ++ 0x0520, 0x2079, 0x0090, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, ++ 0x210c, 0x9106, 0x1120, 0x2009, 0x0040, 0x080c, 0x23d2, 0x782c, ++ 0xd0fc, 0x0d88, 0x080c, 0x40c6, 0x7000, 0x9086, 0x0000, 0x1d58, ++ 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, ++ 0x23d2, 0x782b, 0x0002, 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x2001, 0x1818, 0x200c, 0x7932, 0x7936, ++ 0x080c, 0x2887, 0x7850, 0x9084, 0xfbff, 0x9085, 0x0030, 0x7852, ++ 0x2019, 0x01f4, 0x8319, 0x1df0, 0x9084, 0xffcf, 0x9085, 0x2000, ++ 0x7852, 0x20a9, 0x0046, 0x1d04, 0x3ef3, 0x2091, 0x6000, 0x1f04, ++ 0x3ef3, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfff, 0x7852, 0x2001, ++ 0x0021, 0x2004, 0x9084, 0x0003, 0x9086, 0x0001, 0x1120, 0x7850, ++ 0x9084, 0xdfff, 0x7852, 0x784b, 0xf7f7, 0x7843, 0x0090, 0x7843, ++ 0x0010, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x3f13, 0x7850, 0x9085, ++ 0x1400, 0x7852, 0x2019, 0x61a8, 0x7854, 0xa001, 0xa001, 0xd08c, ++ 0x1110, 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850, 0x9085, 0x0400, ++ 0x7852, 0x7843, 0x0040, 0x2019, 0x01f4, 0xa001, 0xa001, 0x8319, ++ 0x1de0, 0x2001, 0x0100, 0x080c, 0x2cef, 0x7827, 0x0020, 0x7843, ++ 0x0000, 0x9006, 0x080c, 0x2cef, 0x7827, 0x0048, 0x00fe, 0x0005, ++ 0x7884, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, 0x2071, 0x1a62, 0x2079, ++ 0x0320, 0x2001, 0x0201, 0x2004, 0x9005, 0x0160, 0x7000, 0x9086, ++ 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, ++ 0x782b, 0x0019, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0300, ++ 0x78bc, 0x00fe, 0x908c, 0x0070, 0x0178, 0x2009, 0x0032, 0x260a, ++ 0x2009, 0x0033, 0x250a, 0xd0b4, 0x0108, 0x8c60, 0xd0ac, 0x0108, ++ 0x8d68, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6, 0x2079, 0x0200, ++ 0x781c, 0xd084, 0x0110, 0x7837, 0x0050, 0x00fe, 0x0005, 0x00e6, ++ 0x2071, 0x0100, 0x2001, 0x19aa, 0x2004, 0x70e2, 0x080c, 0x3c6f, ++ 0x1188, 0x2001, 0x1820, 0x2004, 0x2009, 0x181f, 0x210c, 0x918c, ++ 0x00ff, 0x706e, 0x716a, 0x7066, 0x918d, 0x3200, 0x7162, 0x7073, ++ 0xe109, 0x0080, 0x702c, 0x9085, 0x0002, 0x702e, 0x2009, 0x1818, ++ 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e, 0x706b, 0x0000, ++ 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0x9080, 0x0100, 0x707a, ++ 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0x9006, 0x708a, 0x708e, ++ 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5, 0x7014, 0x9084, ++ 0x1984, 0x9085, 0x0092, 0x7016, 0x080c, 0x40c6, 0x00f6, 0x2071, ++ 0x1a62, 0x2079, 0x0320, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, ++ 0x0120, 0x689c, 0x780e, 0x6898, 0x780a, 0x00de, 0x2009, 0x03e8, ++ 0x8109, 0x1df0, 0x792c, 0xd1fc, 0x0110, 0x782b, 0x0004, 0x2011, ++ 0x0011, 0x080c, 0x4052, 0x2011, 0x0001, 0x080c, 0x4052, 0x00fe, ++ 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a62, 0x2079, 0x0320, ++ 0x792c, 0xd1fc, 0x0904, 0x404f, 0x782b, 0x0002, 0x9026, 0xd19c, ++ 0x1904, 0x404b, 0x7000, 0x0002, 0x404f, 0x4000, 0x4030, 0x404b, ++ 0xd1bc, 0x1170, 0xd1dc, 0x1190, 0x8001, 0x7002, 0x2011, 0x0001, ++ 0x080c, 0x4052, 0x0904, 0x404f, 0x080c, 0x4052, 0x0804, 0x404f, ++ 0x00f6, 0x2079, 0x0300, 0x78bf, 0x0000, 0x00fe, 0x7810, 0x7914, ++ 0x782b, 0x0004, 0x7812, 0x7916, 0x2001, 0x0201, 0x200c, 0x81ff, ++ 0x0de8, 0x080c, 0x3f5d, 0x2009, 0x0001, 0x00f6, 0x2079, 0x0300, ++ 0x78b8, 0x00fe, 0xd0ec, 0x0110, 0x2009, 0x0011, 0x792a, 0x00f8, ++ 0x8001, 0x7002, 0x9184, 0x0880, 0x1140, 0x782c, 0xd0fc, 0x1904, ++ 0x3ff4, 0x2011, 0x0001, 0x00b1, 0x0090, 0xa010, 0x9092, 0x0004, ++ 0x9086, 0x0015, 0x1120, 0xa000, 0xa05a, 0x2011, 0x0031, 0xa212, ++ 0xd1dc, 0x1960, 0x0828, 0x782b, 0x0004, 0x7003, 0x0000, 0x00ee, ++ 0x00fe, 0x0005, 0xa014, 0x9005, 0x0550, 0x8001, 0x0036, 0x0096, ++ 0xa016, 0xa058, 0x2048, 0xa010, 0x2009, 0x0031, 0x911a, 0x831c, ++ 0x831c, 0x938a, 0x0007, 0x1a0c, 0x0dd5, 0x9398, 0x4080, 0x231d, ++ 0x083f, 0x9080, 0x0004, 0x7a2a, 0x7100, 0x8108, 0x7102, 0x009e, ++ 0x003e, 0x908a, 0x0035, 0x1140, 0x0096, 0xa058, 0x2048, 0xa804, ++ 0xa05a, 0x2001, 0x0019, 0x009e, 0xa012, 0x9085, 0x0001, 0x0005, ++ 0x40bd, 0x40b4, 0x40ab, 0x40a2, 0x4099, 0x4090, 0x4087, 0xa964, ++ 0x7902, 0xa968, 0x7906, 0xa96c, 0x7912, 0xa970, 0x7916, 0x0005, ++ 0xa974, 0x7902, 0xa978, 0x7906, 0xa97c, 0x7912, 0xa980, 0x7916, ++ 0x0005, 0xa984, 0x7902, 0xa988, 0x7906, 0xa98c, 0x7912, 0xa990, ++ 0x7916, 0x0005, 0xa994, 0x7902, 0xa998, 0x7906, 0xa99c, 0x7912, ++ 0xa9a0, 0x7916, 0x0005, 0xa9a4, 0x7902, 0xa9a8, 0x7906, 0xa9ac, ++ 0x7912, 0xa9b0, 0x7916, 0x0005, 0xa9b4, 0x7902, 0xa9b8, 0x7906, ++ 0xa9bc, 0x7912, 0xa9c0, 0x7916, 0x0005, 0xa9c4, 0x7902, 0xa9c8, ++ 0x7906, 0xa9cc, 0x7912, 0xa9d0, 0x7916, 0x0005, 0x00f6, 0x00e6, ++ 0x0086, 0x2071, 0x1a66, 0x2079, 0x0090, 0x792c, 0xd1fc, 0x01e8, ++ 0x782b, 0x0002, 0x2940, 0x9026, 0x7000, 0x0002, 0x40ed, 0x40d9, ++ 0x40e4, 0x8001, 0x7002, 0xd19c, 0x1180, 0x2011, 0x0001, 0x080c, ++ 0x4052, 0x190c, 0x4052, 0x0048, 0x8001, 0x7002, 0x782c, 0xd0fc, ++ 0x1d38, 0x2011, 0x0001, 0x080c, 0x4052, 0x008e, 0x00ee, 0x00fe, ++ 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x2061, 0x0200, 0x2001, ++ 0x19aa, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001, 0x19a9, 0x2004, ++ 0x60ce, 0x6104, 0xc1ac, 0x6106, 0x2001, 0x002c, 0x2004, 0x9005, ++ 0x0520, 0x2038, 0x2001, 0x002e, 0x2024, 0x2001, 0x002f, 0x201c, ++ 0x080c, 0x4aa4, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, ++ 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, ++ 0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, ++ 0x4169, 0x1d68, 0x2900, 0xa85a, 0x00d0, 0x080c, 0x4aa4, 0xa813, ++ 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, ++ 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, 0x2001, 0x002a, 0x2004, ++ 0x9084, 0xfff8, 0xa86e, 0x2001, 0x002b, 0x2004, 0xa872, 0x2061, ++ 0x0090, 0x2079, 0x0100, 0x2001, 0x19a9, 0x2004, 0x6036, 0x2009, ++ 0x0040, 0x080c, 0x23d2, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, ++ 0x78ca, 0x9006, 0x600a, 0x600e, 0x008e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0x00e6, 0x2071, 0x0080, 0xaa60, 0x22e8, 0x20a0, 0x20e1, ++ 0x0000, 0x2099, 0x0088, 0x702b, 0x0026, 0x7402, 0x7306, 0x9006, ++ 0x700a, 0x700e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112, 0x702b, ++ 0x0041, 0x702c, 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b, 0x0040, ++ 0x4005, 0x7400, 0x7304, 0x87ff, 0x0190, 0x0086, 0x0096, 0x2940, ++ 0x0086, 0x080c, 0x4aa4, 0x008e, 0xa058, 0x00a6, 0x2050, 0x2900, ++ 0xb006, 0xa05a, 0x00ae, 0x009e, 0x008e, 0x9085, 0x0001, 0x00ee, ++ 0x0005, 0x00e6, 0x2001, 0x002d, 0x2004, 0x9005, 0x0528, 0x2038, ++ 0x2001, 0x0030, 0x2024, 0x2001, 0x0031, 0x201c, 0x080c, 0x4aa4, ++ 0x2940, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, ++ 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, ++ 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, 0x4169, ++ 0x1d68, 0x2900, 0xa85a, 0x00d8, 0x080c, 0x4aa4, 0x2940, 0xa013, ++ 0x0019, 0xa017, 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030, 0x2004, ++ 0xa066, 0x2001, 0x0031, 0x2004, 0xa06a, 0x2001, 0x002a, 0x2004, ++ 0x9084, 0xfff8, 0xa06e, 0x2001, 0x002b, 0x2004, 0xa072, 0x2001, ++ 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1180, 0x2001, 0x0101, ++ 0x200c, 0x918d, 0x0200, 0x2102, 0xa017, 0x0000, 0x2001, 0x1a62, ++ 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x2001, 0x0300, ++ 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, ++ 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x20a9, 0x0007, 0x20a1, 0x1840, 0x20e9, 0x0001, 0x9006, ++ 0x4004, 0x20a9, 0x000c, 0x20a1, 0xfff4, 0x20e9, 0x0000, 0x9006, ++ 0x4004, 0x2009, 0x013c, 0x200a, 0x012e, 0x7880, 0x9086, 0x0052, ++ 0x0108, 0x0005, 0x0804, 0x3524, 0x7d98, 0x7c9c, 0x0804, 0x361b, ++ 0x080c, 0x73bc, 0x190c, 0x5fdf, 0x6040, 0x9084, 0x0020, 0x09b1, ++ 0x2069, 0x1847, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0x2039, 0x0001, 0x080c, 0x4aed, 0x701f, 0x4248, 0x0005, ++ 0x080c, 0x56de, 0x1130, 0x3b00, 0x3a08, 0xc194, 0xc095, 0x20d8, ++ 0x21d0, 0x2069, 0x1847, 0x6800, 0x9005, 0x0904, 0x3559, 0x6804, ++ 0xd0ac, 0x0118, 0xd0a4, 0x0904, 0x3559, 0xd094, 0x00c6, 0x2061, ++ 0x0100, 0x6104, 0x0138, 0x6200, 0x9292, 0x0005, 0x0218, 0x918c, ++ 0xffdf, 0x0010, 0x918d, 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, ++ 0x2061, 0x0100, 0x6104, 0x0118, 0x918d, 0x0010, 0x0010, 0x918c, ++ 0xffef, 0x6106, 0x00ce, 0xd084, 0x0158, 0x6a28, 0x928a, 0x007f, ++ 0x1a04, 0x3559, 0x9288, 0x3325, 0x210d, 0x918c, 0x00ff, 0x6166, ++ 0xd0dc, 0x0130, 0x6828, 0x908a, 0x007f, 0x1a04, 0x3559, 0x605e, ++ 0x6888, 0x9084, 0x0030, 0x8004, 0x8004, 0x8004, 0x8004, 0x0006, ++ 0x2009, 0x19b1, 0x9080, 0x297a, 0x2005, 0x200a, 0x000e, 0x2009, ++ 0x19b2, 0x9080, 0x297e, 0x2005, 0x200a, 0x6808, 0x908a, 0x0100, ++ 0x0a04, 0x3559, 0x908a, 0x0841, 0x1a04, 0x3559, 0x9084, 0x0007, ++ 0x1904, 0x3559, 0x680c, 0x9005, 0x0904, 0x3559, 0x6810, 0x9005, ++ 0x0904, 0x3559, 0x6848, 0x6940, 0x910a, 0x1a04, 0x3559, 0x8001, ++ 0x0904, 0x3559, 0x684c, 0x6944, 0x910a, 0x1a04, 0x3559, 0x8001, ++ 0x0904, 0x3559, 0x2009, 0x1981, 0x200b, 0x0000, 0x2001, 0x1869, ++ 0x2004, 0xd0c4, 0x0140, 0x7884, 0x200a, 0x2009, 0x017f, 0x200a, ++ 0x3b00, 0xc085, 0x20d8, 0x6814, 0x908c, 0x00ff, 0x614e, 0x8007, ++ 0x9084, 0x00ff, 0x6052, 0x080c, 0x76d5, 0x080c, 0x69a8, 0x080c, ++ 0x69dc, 0x6808, 0x602a, 0x080c, 0x2344, 0x2009, 0x0170, 0x200b, ++ 0x0080, 0xa001, 0xa001, 0x200b, 0x0000, 0x0036, 0x6b08, 0x080c, ++ 0x28e1, 0x003e, 0x6000, 0x9086, 0x0000, 0x1904, 0x43df, 0x6818, ++ 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, ++ 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, ++ 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0x9084, ++ 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, ++ 0x831f, 0x20a9, 0x0004, 0x20a1, 0x19b3, 0x20e9, 0x0001, 0x4001, ++ 0x20a9, 0x0004, 0x20a1, 0x19cd, 0x20e9, 0x0001, 0x4001, 0x080c, ++ 0x85ef, 0x00c6, 0x900e, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x0510, ++ 0x0068, 0x2009, 0x0100, 0x210c, 0x918e, 0x0008, 0x1110, 0x839d, ++ 0x0010, 0x83f5, 0x3e18, 0x12b0, 0x3508, 0x8109, 0x080c, 0x7c8b, ++ 0x6878, 0x6016, 0x6874, 0x2008, 0x9084, 0xff00, 0x8007, 0x600a, ++ 0x9184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003, 0x0010, ++ 0x6003, 0x0001, 0x1f04, 0x4339, 0x00ce, 0x00c6, 0x2061, 0x199c, ++ 0x6a88, 0x9284, 0xc000, 0x2010, 0x9286, 0x0000, 0x1158, 0x2063, ++ 0x0000, 0x2001, 0x0001, 0x080c, 0x2b88, 0x2001, 0x0001, 0x080c, ++ 0x2b6b, 0x0088, 0x9286, 0x4000, 0x1148, 0x2063, 0x0001, 0x9006, ++ 0x080c, 0x2b88, 0x9006, 0x080c, 0x2b6b, 0x0028, 0x9286, 0x8000, ++ 0x1d30, 0x2063, 0x0002, 0x00ce, 0x6888, 0xd0ec, 0x0130, 0x2011, ++ 0x0114, 0x2204, 0x9085, 0x0100, 0x2012, 0x6a80, 0x9284, 0x0030, ++ 0x9086, 0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, 0x6a82, ++ 0x2001, 0x197c, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, 0x0170, ++ 0x928e, 0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, 0xaaaa, ++ 0x080c, 0x2956, 0x2001, 0x196d, 0x2102, 0x0008, 0x2102, 0x00c6, ++ 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, ++ 0x73bc, 0x0128, 0x080c, 0x4fdb, 0x0110, 0x080c, 0x28a7, 0x60d4, ++ 0x9005, 0x01c0, 0x6003, 0x0001, 0x2009, 0x43c7, 0x00e0, 0x080c, ++ 0x73bc, 0x1168, 0x2011, 0x7252, 0x080c, 0x84f3, 0x2011, 0x7245, ++ 0x080c, 0x85cd, 0x080c, 0x76a9, 0x080c, 0x72ee, 0x0040, 0x080c, ++ 0x5ed9, 0x0028, 0x6003, 0x0004, 0x2009, 0x43df, 0x0020, 0x080c, ++ 0x68d4, 0x0804, 0x3524, 0x2001, 0x0170, 0x2004, 0x9084, 0x00ff, ++ 0x9086, 0x004c, 0x1118, 0x2091, 0x30bd, 0x0817, 0x2091, 0x303d, ++ 0x0817, 0x6000, 0x9086, 0x0000, 0x0904, 0x3556, 0x2069, 0x1847, ++ 0x7890, 0x6842, 0x7894, 0x6846, 0x2d00, 0x2009, 0x0030, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x0804, 0x4af0, 0x9006, ++ 0x080c, 0x28a7, 0x81ff, 0x1904, 0x3556, 0x080c, 0x73bc, 0x11b0, ++ 0x080c, 0x76a4, 0x080c, 0x601a, 0x080c, 0x3319, 0x0118, 0x6130, ++ 0xc18d, 0x6132, 0x080c, 0xd230, 0x0130, 0x080c, 0x73df, 0x1118, ++ 0x080c, 0x7394, 0x0038, 0x080c, 0x72ee, 0x0020, 0x080c, 0x5fdf, ++ 0x080c, 0x5ed9, 0x0804, 0x3524, 0x81ff, 0x1904, 0x3556, 0x080c, ++ 0x73bc, 0x1110, 0x0804, 0x3556, 0x6194, 0x81ff, 0x01a8, 0x704f, ++ 0x0000, 0x2001, 0x1c80, 0x2009, 0x0040, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0x0126, 0x2091, 0x8000, 0x2039, 0x0001, 0x080c, 0x4af0, ++ 0x701f, 0x3522, 0x012e, 0x0005, 0x704f, 0x0001, 0x00d6, 0x2069, ++ 0x1c80, 0x20a9, 0x0040, 0x20e9, 0x0001, 0x20a1, 0x1c80, 0x2019, ++ 0xffff, 0x4304, 0x655c, 0x9588, 0x3325, 0x210d, 0x918c, 0x00ff, ++ 0x216a, 0x900e, 0x2011, 0x0002, 0x2100, 0x9506, 0x01a8, 0x080c, ++ 0x65ff, 0x1190, 0xb814, 0x821c, 0x0238, 0x9398, 0x1c80, 0x9085, ++ 0xff00, 0x8007, 0x201a, 0x0038, 0x9398, 0x1c80, 0x2324, 0x94a4, ++ 0xff00, 0x9405, 0x201a, 0x8210, 0x8108, 0x9182, 0x0080, 0x1208, ++ 0x0c18, 0x8201, 0x8007, 0x2d0c, 0x9105, 0x206a, 0x00de, 0x20a9, ++ 0x0040, 0x20a1, 0x1c80, 0x2099, 0x1c80, 0x080c, 0x5f6a, 0x0804, ++ 0x4439, 0x080c, 0x4ad7, 0x0904, 0x3559, 0x080c, 0x4aa4, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x3556, 0x080c, 0x56cf, 0xd0b4, 0x0558, ++ 0x7884, 0x908e, 0x007e, 0x0538, 0x908e, 0x007f, 0x0520, 0x908e, ++ 0x0080, 0x0508, 0x080c, 0x3314, 0x1148, 0xb800, 0xd08c, 0x11d8, ++ 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x11a8, 0xa867, 0x0000, ++ 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xccfe, 0x1120, 0x2009, 0x0003, ++ 0x0804, 0x3556, 0x7007, 0x0003, 0x701f, 0x44c7, 0x0005, 0x080c, ++ 0x4ad7, 0x0904, 0x3559, 0x20a9, 0x002b, 0xb8c4, 0x20e0, 0xb8c8, ++ 0x2098, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, ++ 0x20a9, 0x0008, 0x9080, 0x0006, 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, ++ 0x9080, 0x0006, 0x2098, 0x080c, 0x0f7c, 0x0070, 0x20a9, 0x0004, ++ 0xa85c, 0x9080, 0x000a, 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, ++ 0x000a, 0x2098, 0x080c, 0x0f7c, 0x8906, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, 0x002b, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x4af0, 0x81ff, 0x1904, 0x3556, ++ 0x080c, 0x4abb, 0x0904, 0x3559, 0x080c, 0x6771, 0x0904, 0x3556, ++ 0x0058, 0xa878, 0x9005, 0x0120, 0x2009, 0x0004, 0x0804, 0x3556, ++ 0xa974, 0xaa94, 0x0804, 0x3524, 0x080c, 0x56d7, 0x0904, 0x3524, ++ 0x701f, 0x4511, 0x7007, 0x0003, 0x0005, 0x81ff, 0x1904, 0x3556, ++ 0x7888, 0x908a, 0x1000, 0x1a04, 0x3559, 0x080c, 0x4ad7, 0x0904, ++ 0x3559, 0x080c, 0x6972, 0x0120, 0x080c, 0x697a, 0x1904, 0x3559, ++ 0x080c, 0x67f6, 0x0904, 0x3556, 0x2019, 0x0004, 0x900e, 0x080c, ++ 0x6783, 0x0904, 0x3556, 0x7984, 0x7a88, 0x04c9, 0x08a8, 0xa89c, ++ 0x908a, 0x1000, 0x12f8, 0x080c, 0x4ad5, 0x01e0, 0x080c, 0x6972, ++ 0x0118, 0x080c, 0x697a, 0x11b0, 0x080c, 0x67f6, 0x2009, 0x0002, ++ 0x0168, 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x6783, 0x2009, ++ 0x0003, 0x0120, 0xa998, 0xaa9c, 0x00d1, 0x0060, 0xa897, 0x4005, ++ 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, ++ 0x0030, 0x0005, 0xa897, 0x4000, 0x080c, 0x56d7, 0x0110, 0x9006, ++ 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x9186, ++ 0x00ff, 0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0x1800, ++ 0x645c, 0x2400, 0x9506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, ++ 0x0005, 0x080c, 0x65ff, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, ++ 0x9108, 0x080c, 0x8501, 0x0005, 0x81ff, 0x1904, 0x3556, 0x798c, ++ 0x2001, 0x1980, 0x918c, 0x8000, 0x2102, 0x080c, 0x4abb, 0x0904, ++ 0x3559, 0x080c, 0x6972, 0x0120, 0x080c, 0x697a, 0x1904, 0x3559, ++ 0x080c, 0x66c6, 0x0904, 0x3556, 0x080c, 0x677a, 0x0904, 0x3556, ++ 0x2001, 0x1980, 0x2004, 0xd0fc, 0x1904, 0x3524, 0x0804, 0x451c, ++ 0xa9a0, 0x2001, 0x1980, 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, ++ 0x4ac8, 0x01a0, 0x080c, 0x6972, 0x0118, 0x080c, 0x697a, 0x1170, ++ 0x080c, 0x66c6, 0x2009, 0x0002, 0x0128, 0x080c, 0x677a, 0x1170, ++ 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0x2001, 0x1980, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x56d7, 0x0110, ++ 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, ++ 0x81ff, 0x1904, 0x3556, 0x798c, 0x2001, 0x197f, 0x918c, 0x8000, ++ 0x2102, 0x080c, 0x4abb, 0x0904, 0x3559, 0x080c, 0x6972, 0x0120, ++ 0x080c, 0x697a, 0x1904, 0x3559, 0x080c, 0x66c6, 0x0904, 0x3556, ++ 0x080c, 0x6768, 0x0904, 0x3556, 0x2001, 0x197f, 0x2004, 0xd0fc, ++ 0x1904, 0x3524, 0x0804, 0x451c, 0xa9a0, 0x2001, 0x197f, 0x918c, ++ 0x8000, 0xc18d, 0x2102, 0x080c, 0x4ac8, 0x01a0, 0x080c, 0x6972, ++ 0x0118, 0x080c, 0x697a, 0x1170, 0x080c, 0x66c6, 0x2009, 0x0002, ++ 0x0128, 0x080c, 0x6768, 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, ++ 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, ++ 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, 0x197f, 0x2004, 0xd0fc, ++ 0x1128, 0x080c, 0x56d7, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0000, 0x0005, 0x6100, 0x0804, 0x3524, 0x080c, ++ 0x4ad7, 0x0904, 0x3559, 0x080c, 0x56e3, 0x1904, 0x3556, 0x79a8, ++ 0xd184, 0x1158, 0xb834, 0x8007, 0x789e, 0xb830, 0x8007, 0x789a, ++ 0xbb2c, 0x831f, 0xba28, 0x8217, 0x0050, 0xb824, 0x8007, 0x789e, ++ 0xb820, 0x8007, 0x789a, 0xbb1c, 0x831f, 0xba18, 0x8217, 0xb900, ++ 0x918c, 0x0200, 0x0804, 0x3524, 0x78a8, 0x909c, 0x0003, 0xd0b4, ++ 0x1148, 0x939a, 0x0003, 0x1a04, 0x3556, 0x625c, 0x7884, 0x9206, ++ 0x1904, 0x46c9, 0x080c, 0x85d9, 0x2001, 0xfff4, 0x2009, 0x000c, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0000, 0x0006, 0x78a8, ++ 0x9084, 0x0080, 0x11c8, 0x0006, 0x0036, 0x2001, 0x1a7f, 0x201c, ++ 0x7b9a, 0x2003, 0x0000, 0x2001, 0x1a80, 0x201c, 0x7b9e, 0x2003, ++ 0x0000, 0x2001, 0x1a81, 0x201c, 0x7ba2, 0x2003, 0x0000, 0x003e, ++ 0x000e, 0x000e, 0x0804, 0x4af0, 0x000e, 0x2031, 0x0000, 0x2061, ++ 0x18b8, 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, ++ 0xa496, 0xa59a, 0x080c, 0x10e9, 0x7007, 0x0002, 0x701f, 0x46e9, ++ 0x0005, 0x81ff, 0x1904, 0x3556, 0x080c, 0x4ad7, 0x0904, 0x3559, ++ 0x080c, 0x6972, 0x1904, 0x3556, 0x00c6, 0x080c, 0x4aa4, 0x00ce, ++ 0x0904, 0x3556, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x7ea8, ++ 0x080c, 0xcca4, 0x0904, 0x3556, 0x7007, 0x0003, 0x701f, 0x4703, ++ 0x0005, 0x080c, 0x420e, 0x0006, 0x0036, 0x2001, 0x1a7f, 0x201c, ++ 0x7b9a, 0x2003, 0x0000, 0x2001, 0x1a80, 0x201c, 0x7b9e, 0x2003, ++ 0x0000, 0x2001, 0x1a81, 0x201c, 0x7ba2, 0x2003, 0x0000, 0x003e, ++ 0x000e, 0x0804, 0x3524, 0xa830, 0x9086, 0x0100, 0x0904, 0x3556, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, ++ 0x4af0, 0x9006, 0x080c, 0x28a7, 0x78a8, 0x9084, 0x00ff, 0x9086, ++ 0x00ff, 0x0118, 0x81ff, 0x1904, 0x3556, 0x080c, 0x73bc, 0x0110, ++ 0x080c, 0x5fdf, 0x7888, 0x908a, 0x1000, 0x1a04, 0x3559, 0x7984, ++ 0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x3559, 0x2100, ++ 0x080c, 0x2871, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061, ++ 0x19fa, 0x601b, 0x0000, 0x601f, 0x0000, 0x6073, 0x0000, 0x6077, ++ 0x0000, 0x080c, 0x73bc, 0x1158, 0x080c, 0x76a4, 0x080c, 0x601a, ++ 0x9085, 0x0001, 0x080c, 0x7403, 0x080c, 0x72ee, 0x00d0, 0x080c, ++ 0xadd2, 0x2061, 0x0100, 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, ++ 0x810f, 0x9105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, ++ 0x1999, 0x200b, 0x0000, 0x2009, 0x002d, 0x2011, 0x5f05, 0x080c, ++ 0x858b, 0x7984, 0x080c, 0x73bc, 0x1110, 0x2009, 0x00ff, 0x7a88, ++ 0x080c, 0x457f, 0x012e, 0x00ce, 0x002e, 0x0804, 0x3524, 0x7984, ++ 0x080c, 0x659e, 0x2b08, 0x1904, 0x3559, 0x0804, 0x3524, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x3556, 0x60dc, 0xd0ac, 0x1130, ++ 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x3556, 0x080c, 0x4aa4, ++ 0x1120, 0x2009, 0x0002, 0x0804, 0x3556, 0x7984, 0x9192, 0x0021, ++ 0x1a04, 0x3559, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, ++ 0x0019, 0x702a, 0xaf60, 0x7736, 0x080c, 0x4aed, 0x701f, 0x47b7, ++ 0x7880, 0x9086, 0x006e, 0x0110, 0x701f, 0x518d, 0x0005, 0x2009, ++ 0x0080, 0x080c, 0x65ff, 0x1118, 0x080c, 0x6972, 0x0120, 0x2021, ++ 0x400a, 0x0804, 0x3526, 0x00d6, 0x0096, 0xa964, 0xaa6c, 0xab70, ++ 0xac74, 0xad78, 0xae7c, 0xa884, 0x90be, 0x0100, 0x0904, 0x4850, ++ 0x90be, 0x0112, 0x0904, 0x4850, 0x90be, 0x0113, 0x0904, 0x4850, ++ 0x90be, 0x0114, 0x0904, 0x4850, 0x90be, 0x0117, 0x0904, 0x4850, ++ 0x90be, 0x011a, 0x0904, 0x4850, 0x90be, 0x011c, 0x0904, 0x4850, ++ 0x90be, 0x0121, 0x0904, 0x4837, 0x90be, 0x0131, 0x0904, 0x4837, ++ 0x90be, 0x0171, 0x0904, 0x4850, 0x90be, 0x0173, 0x0904, 0x4850, ++ 0x90be, 0x01a1, 0x1128, 0xa894, 0x8007, 0xa896, 0x0804, 0x485b, ++ 0x90be, 0x0212, 0x0904, 0x4844, 0x90be, 0x0213, 0x05e8, 0x90be, ++ 0x0214, 0x0500, 0x90be, 0x0217, 0x0188, 0x90be, 0x021a, 0x1120, ++ 0xa89c, 0x8007, 0xa89e, 0x04e0, 0x90be, 0x021f, 0x05c8, 0x90be, ++ 0x0300, 0x05b0, 0x009e, 0x00de, 0x0804, 0x3559, 0x7028, 0x9080, ++ 0x0010, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0007, ++ 0x080c, 0x4899, 0x7028, 0x9080, 0x000e, 0x2098, 0x20a0, 0x7034, ++ 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x4899, 0x00c8, 0x7028, ++ 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, ++ 0x0001, 0x080c, 0x48a6, 0x00b8, 0x7028, 0x9080, 0x000e, 0x2098, ++ 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x48a6, ++ 0x7028, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, ++ 0x20a9, 0x0001, 0x04f1, 0x00c6, 0x080c, 0x4aa4, 0x0550, 0xa868, ++ 0xc0fd, 0xa86a, 0xa867, 0x0119, 0x9006, 0xa882, 0xa87f, 0x0020, ++ 0xa88b, 0x0001, 0x810b, 0xa9ae, 0xa8b2, 0xaab6, 0xabba, 0xacbe, ++ 0xadc2, 0xa9c6, 0xa8ca, 0x00ce, 0x009e, 0x00de, 0xa866, 0xa822, ++ 0xa868, 0xc0fd, 0xa86a, 0xa804, 0x2048, 0x080c, 0xccbf, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, 0x701f, 0x4890, ++ 0x0005, 0x00ce, 0x009e, 0x00de, 0x2009, 0x0002, 0x0804, 0x3556, ++ 0xa820, 0x9086, 0x8001, 0x1904, 0x3524, 0x2009, 0x0004, 0x0804, ++ 0x3556, 0x0016, 0x0026, 0x3510, 0x20a9, 0x0002, 0x4002, 0x4104, ++ 0x4004, 0x8211, 0x1dc8, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, ++ 0x0036, 0x0046, 0x3520, 0x20a9, 0x0004, 0x4002, 0x4304, 0x4204, ++ 0x4104, 0x4004, 0x8421, 0x1db8, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3556, 0x60dc, ++ 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x3556, ++ 0x7984, 0x78a8, 0x2040, 0x080c, 0xadcb, 0x1120, 0x9182, 0x007f, ++ 0x0a04, 0x3559, 0x9186, 0x00ff, 0x0904, 0x3559, 0x9182, 0x0800, ++ 0x1a04, 0x3559, 0x7a8c, 0x7b88, 0x607c, 0x9306, 0x1140, 0x6080, ++ 0x924e, 0x0904, 0x3559, 0x99cc, 0xff00, 0x0904, 0x3559, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x49b7, 0x0904, 0x4937, 0x0086, 0x90c6, ++ 0x4000, 0x008e, 0x1538, 0x00c6, 0x0006, 0x0036, 0xb818, 0xbb1c, ++ 0x9305, 0xbb20, 0x9305, 0xbb24, 0x9305, 0xbb28, 0x9305, 0xbb2c, ++ 0x9305, 0xbb30, 0x9305, 0xbb34, 0x9305, 0x003e, 0x0570, 0xd88c, ++ 0x1128, 0x080c, 0x6972, 0x0110, 0xc89d, 0x0438, 0x900e, 0x080c, ++ 0x681f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x000e, ++ 0x00ce, 0x00b8, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0090, 0x90c6, ++ 0x4008, 0x1118, 0x2708, 0x2610, 0x0060, 0x90c6, 0x4009, 0x1108, ++ 0x0040, 0x90c6, 0x4006, 0x1108, 0x0020, 0x2001, 0x4005, 0x2009, ++ 0x000a, 0x2020, 0x012e, 0x0804, 0x3526, 0x000e, 0x00ce, 0x2b00, ++ 0x7026, 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0xaeaf, ++ 0x0904, 0x498c, 0x2b00, 0x6012, 0x080c, 0xcfaa, 0x2e58, 0x00ee, ++ 0x00e6, 0x00c6, 0x080c, 0x4aa4, 0x00ce, 0x2b70, 0x1158, 0x080c, ++ 0xae61, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x012e, 0x2009, 0x0002, ++ 0x0804, 0x3556, 0x900e, 0xa966, 0xa96a, 0x2900, 0x6016, 0xa932, ++ 0xa868, 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0xa86a, 0xd89c, 0x1110, ++ 0x080c, 0x31bf, 0x6023, 0x0001, 0x9006, 0x080c, 0x653b, 0xd89c, ++ 0x0138, 0x2001, 0x0004, 0x080c, 0x654f, 0x2009, 0x0003, 0x0030, ++ 0x2001, 0x0002, 0x080c, 0x654f, 0x2009, 0x0002, 0x080c, 0xaedc, ++ 0x78a8, 0xd094, 0x0138, 0x00ee, 0x7024, 0x00e6, 0x2058, 0xb8cc, ++ 0xc08d, 0xb8ce, 0x9085, 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, ++ 0x012e, 0x1120, 0x2009, 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, ++ 0x701f, 0x499b, 0x0005, 0xa830, 0x9086, 0x0100, 0x7024, 0x2058, ++ 0x1138, 0x2009, 0x0004, 0xba04, 0x9294, 0x00ff, 0x0804, 0x562c, ++ 0x900e, 0xa868, 0xd0f4, 0x1904, 0x3524, 0x080c, 0x681f, 0x1108, ++ 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3524, 0x00e6, ++ 0x00d6, 0x0096, 0x83ff, 0x0904, 0x4a06, 0x902e, 0x080c, 0xadcb, ++ 0x0130, 0x9026, 0x20a9, 0x0800, 0x2071, 0x1000, 0x0030, 0x2021, ++ 0x007f, 0x20a9, 0x0781, 0x2071, 0x107f, 0x2e04, 0x9005, 0x11b8, ++ 0x2100, 0x9406, 0x1904, 0x4a17, 0x2428, 0x94ce, 0x007f, 0x1120, ++ 0x92ce, 0xfffd, 0x1558, 0x0030, 0x94ce, 0x0080, 0x1130, 0x92ce, ++ 0xfffc, 0x1520, 0x93ce, 0x00ff, 0x1508, 0xc5fd, 0x0480, 0x2058, ++ 0xbf10, 0x2700, 0x9306, 0x11e8, 0xbe14, 0x2600, 0x9206, 0x11c8, ++ 0x2400, 0x9106, 0x1180, 0xd884, 0x0598, 0xd894, 0x1588, 0x080c, ++ 0x6912, 0x1570, 0x2001, 0x4000, 0x0460, 0x080c, 0x6972, 0x1540, ++ 0x2001, 0x4000, 0x0430, 0x2001, 0x4007, 0x0418, 0x2001, 0x4006, ++ 0x0400, 0x2400, 0x9106, 0x1158, 0xbe14, 0x87ff, 0x1128, 0x86ff, ++ 0x0918, 0x080c, 0xadcb, 0x1900, 0x2001, 0x4008, 0x0090, 0x8420, ++ 0x8e70, 0x1f04, 0x49cd, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, ++ 0x2001, 0x0001, 0x0030, 0x080c, 0x659e, 0x1dd0, 0xbb12, 0xba16, ++ 0x9006, 0x9005, 0x009e, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x3556, 0x080c, 0x4aa4, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x3556, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, ++ 0x7884, 0x9005, 0x0904, 0x3559, 0x9096, 0x00ff, 0x0120, 0x9092, ++ 0x0004, 0x1a04, 0x3559, 0x2010, 0x2918, 0x080c, 0x3165, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, 0x701f, 0x4a59, ++ 0x0005, 0xa830, 0x9086, 0x0100, 0x1904, 0x3524, 0x2009, 0x0004, ++ 0x0804, 0x3556, 0x7984, 0x080c, 0xadcb, 0x1120, 0x9182, 0x007f, ++ 0x0a04, 0x3559, 0x9186, 0x00ff, 0x0904, 0x3559, 0x9182, 0x0800, ++ 0x1a04, 0x3559, 0x2001, 0x9000, 0x080c, 0x5687, 0x1904, 0x3556, ++ 0x0804, 0x3524, 0xa998, 0x080c, 0xadcb, 0x1118, 0x9182, 0x007f, ++ 0x0280, 0x9186, 0x00ff, 0x0168, 0x9182, 0x0800, 0x1250, 0x2001, ++ 0x9000, 0x080c, 0x5687, 0x11a8, 0x0060, 0xa897, 0x4005, 0xa99a, ++ 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, ++ 0x0005, 0xa897, 0x4000, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, ++ 0x0005, 0x2009, 0x000a, 0x0c48, 0x080c, 0x0fff, 0x0198, 0x9006, ++ 0xa802, 0x7014, 0x9005, 0x1120, 0x2900, 0x7016, 0x701a, 0x0040, ++ 0x7018, 0xa802, 0x0086, 0x2040, 0x2900, 0xa006, 0x701a, 0x008e, ++ 0x9085, 0x0001, 0x0005, 0x7984, 0x080c, 0x65ff, 0x1130, 0x7e88, ++ 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005, ++ 0xa998, 0x080c, 0x65ff, 0x1130, 0xae9c, 0x9684, 0x3fff, 0x9082, ++ 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005, 0xae98, 0x0008, 0x7e84, ++ 0x2608, 0x080c, 0x65ff, 0x1108, 0x0008, 0x905e, 0x8bff, 0x0005, ++ 0x0016, 0x7114, 0x81ff, 0x0128, 0x2148, 0xa904, 0x080c, 0x1031, ++ 0x0cc8, 0x7116, 0x711a, 0x001e, 0x0005, 0x2031, 0x0001, 0x0010, ++ 0x2031, 0x0000, 0x2061, 0x18b8, 0x2c44, 0xa66a, 0xa17a, 0xa772, ++ 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, 0x10e9, 0x7007, ++ 0x0002, 0x701f, 0x3524, 0x0005, 0x00f6, 0x0126, 0x2091, 0x8000, ++ 0x2079, 0x0000, 0x2001, 0x18b0, 0x2004, 0x9005, 0x1190, 0x0e04, ++ 0x4b21, 0x7a36, 0x7833, 0x0012, 0x7a82, 0x7b86, 0x7c8a, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x0804, ++ 0x4b87, 0x0016, 0x0086, 0x0096, 0x00c6, 0x00e6, 0x2071, 0x189e, ++ 0x7044, 0x9005, 0x1540, 0x7148, 0x9182, 0x0010, 0x0288, 0x7038, ++ 0x2060, 0x080c, 0x0fff, 0x0904, 0x4b7f, 0xa84b, 0x0000, 0x2900, ++ 0x7046, 0x2001, 0x0002, 0x9080, 0x2090, 0x2005, 0xa846, 0x0098, ++ 0x7038, 0x90e0, 0x0004, 0x2001, 0x18ba, 0x9c82, 0x18fa, 0x0210, ++ 0x2061, 0x18ba, 0x2c00, 0x703a, 0x7148, 0x81ff, 0x1108, 0x703e, ++ 0x8108, 0x714a, 0x0460, 0x7148, 0x8108, 0x714a, 0x7044, 0x2040, ++ 0xa144, 0x2105, 0x0016, 0x908a, 0x0036, 0x1a0c, 0x0dd5, 0x2060, ++ 0x001e, 0x8108, 0x2105, 0x9005, 0xa146, 0x1520, 0x080c, 0x0fff, ++ 0x1130, 0x8109, 0xa946, 0x7148, 0x8109, 0x714a, 0x00d8, 0x9006, ++ 0xa806, 0xa84a, 0xa046, 0x2800, 0xa802, 0x2900, 0xa006, 0x7046, ++ 0x2001, 0x0002, 0x9080, 0x2090, 0x2005, 0xa846, 0x0058, 0x2262, ++ 0x6306, 0x640a, 0x00ee, 0x00ce, 0x009e, 0x008e, 0x001e, 0x012e, ++ 0x00fe, 0x0005, 0x2c00, 0x9082, 0x001b, 0x0002, 0x4ba9, 0x4ba9, ++ 0x4bab, 0x4ba9, 0x4ba9, 0x4ba9, 0x4baf, 0x4ba9, 0x4ba9, 0x4ba9, ++ 0x4bb3, 0x4ba9, 0x4ba9, 0x4ba9, 0x4bb7, 0x4ba9, 0x4ba9, 0x4ba9, ++ 0x4bbb, 0x4ba9, 0x4ba9, 0x4ba9, 0x4bbf, 0x4ba9, 0x4ba9, 0x4ba9, ++ 0x4bc4, 0x080c, 0x0dd5, 0xa276, 0xa37a, 0xa47e, 0x0898, 0xa286, ++ 0xa38a, 0xa48e, 0x0878, 0xa296, 0xa39a, 0xa49e, 0x0858, 0xa2a6, ++ 0xa3aa, 0xa4ae, 0x0838, 0xa2b6, 0xa3ba, 0xa4be, 0x0818, 0xa2c6, ++ 0xa3ca, 0xa4ce, 0x0804, 0x4b82, 0xa2d6, 0xa3da, 0xa4de, 0x0804, ++ 0x4b82, 0x00e6, 0x2071, 0x189e, 0x7048, 0x9005, 0x0904, 0x4c5b, ++ 0x0126, 0x2091, 0x8000, 0x0e04, 0x4c5a, 0x00f6, 0x2079, 0x0000, ++ 0x00c6, 0x0096, 0x0086, 0x0076, 0x9006, 0x2038, 0x7040, 0x2048, ++ 0x9005, 0x0500, 0xa948, 0x2105, 0x0016, 0x908a, 0x0036, 0x1a0c, ++ 0x0dd5, 0x2060, 0x001e, 0x8108, 0x2105, 0x9005, 0xa94a, 0x1904, ++ 0x4c5d, 0xa804, 0x9005, 0x090c, 0x0dd5, 0x7042, 0x2938, 0x2040, ++ 0xa003, 0x0000, 0x2001, 0x0002, 0x9080, 0x2090, 0x2005, 0xa04a, ++ 0x0804, 0x4c5d, 0x703c, 0x2060, 0x2c14, 0x6304, 0x6408, 0x650c, ++ 0x2200, 0x7836, 0x7833, 0x0012, 0x7882, 0x2300, 0x7886, 0x2400, ++ 0x788a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x119b, 0x87ff, 0x0118, 0x2748, 0x080c, 0x1031, 0x7048, 0x8001, ++ 0x704a, 0x9005, 0x1170, 0x7040, 0x2048, 0x9005, 0x0128, 0x080c, ++ 0x1031, 0x9006, 0x7042, 0x7046, 0x703b, 0x18ba, 0x703f, 0x18ba, ++ 0x0420, 0x7040, 0x9005, 0x1508, 0x7238, 0x2c00, 0x9206, 0x0148, ++ 0x9c80, 0x0004, 0x90fa, 0x18fa, 0x0210, 0x2001, 0x18ba, 0x703e, ++ 0x00a0, 0x9006, 0x703e, 0x703a, 0x7044, 0x9005, 0x090c, 0x0dd5, ++ 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, 0x7042, 0x2001, 0x0002, ++ 0x9080, 0x2090, 0x2005, 0xa84a, 0x0000, 0x007e, 0x008e, 0x009e, ++ 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x2c00, 0x9082, 0x001b, ++ 0x0002, 0x4c7c, 0x4c7c, 0x4c7e, 0x4c7c, 0x4c7c, 0x4c7c, 0x4c83, ++ 0x4c7c, 0x4c7c, 0x4c7c, 0x4c88, 0x4c7c, 0x4c7c, 0x4c7c, 0x4c8d, ++ 0x4c7c, 0x4c7c, 0x4c7c, 0x4c92, 0x4c7c, 0x4c7c, 0x4c7c, 0x4c97, ++ 0x4c7c, 0x4c7c, 0x4c7c, 0x4c9c, 0x080c, 0x0dd5, 0xaa74, 0xab78, ++ 0xac7c, 0x0804, 0x4c08, 0xaa84, 0xab88, 0xac8c, 0x0804, 0x4c08, ++ 0xaa94, 0xab98, 0xac9c, 0x0804, 0x4c08, 0xaaa4, 0xaba8, 0xacac, ++ 0x0804, 0x4c08, 0xaab4, 0xabb8, 0xacbc, 0x0804, 0x4c08, 0xaac4, ++ 0xabc8, 0xaccc, 0x0804, 0x4c08, 0xaad4, 0xabd8, 0xacdc, 0x0804, ++ 0x4c08, 0x0016, 0x0026, 0x0036, 0x00b6, 0x00c6, 0x2009, 0x007e, ++ 0x080c, 0x65ff, 0x2019, 0x0001, 0xb85c, 0xd0ac, 0x0110, 0x2019, ++ 0x0000, 0x2011, 0x801b, 0x080c, 0x4b04, 0x00ce, 0x00be, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x0026, 0x080c, 0x56cf, 0xd0c4, 0x0120, ++ 0x2011, 0x8014, 0x080c, 0x4b04, 0x002e, 0x0005, 0x81ff, 0x1904, ++ 0x3556, 0x0126, 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, ++ 0x6032, 0x080c, 0x73bc, 0x1158, 0x080c, 0x76a4, 0x080c, 0x601a, ++ 0x9085, 0x0001, 0x080c, 0x7403, 0x080c, 0x72ee, 0x0010, 0x080c, ++ 0x5ed9, 0x012e, 0x0804, 0x3524, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x3556, 0x080c, 0x56e3, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x3556, 0x080c, 0x696a, 0x0120, 0x2009, 0x0008, 0x0804, 0x3556, ++ 0x080c, 0x3314, 0x0128, 0x7984, 0x080c, 0x659e, 0x1904, 0x3559, ++ 0x080c, 0x4ad7, 0x0904, 0x3559, 0x2b00, 0x7026, 0x080c, 0x6972, ++ 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, 0x900e, 0x080c, 0x681f, ++ 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3524, ++ 0x080c, 0x4aa4, 0x0904, 0x3556, 0x9006, 0xa866, 0xa832, 0xa868, ++ 0xc0fd, 0xa86a, 0x080c, 0xcd58, 0x0904, 0x3556, 0x7888, 0xd094, ++ 0x0118, 0xb8cc, 0xc08d, 0xb8ce, 0x7007, 0x0003, 0x701f, 0x4d7d, ++ 0x0005, 0x2061, 0x1800, 0x080c, 0x56e3, 0x2009, 0x0007, 0x1578, ++ 0x080c, 0x696a, 0x0118, 0x2009, 0x0008, 0x0448, 0x080c, 0x3314, ++ 0x0120, 0xa998, 0x080c, 0x659e, 0x1530, 0x080c, 0x4ad5, 0x0518, ++ 0x080c, 0x6972, 0xa89c, 0x1168, 0x9084, 0x0005, 0x1150, 0x900e, ++ 0x080c, 0x681f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, 0xcd58, 0x11e0, 0xa89c, ++ 0xd094, 0x0118, 0xb8cc, 0xc08d, 0xb8ce, 0x2009, 0x0003, 0xa897, ++ 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0xa99a, 0x9006, 0x918d, ++ 0x0001, 0x2008, 0x0005, 0x9006, 0x0005, 0xa830, 0x9086, 0x0100, ++ 0x7024, 0x2058, 0x1110, 0x0804, 0x562c, 0x900e, 0x080c, 0x681f, ++ 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3524, ++ 0x080c, 0x56e3, 0x0120, 0x2009, 0x0007, 0x0804, 0x3556, 0x7f84, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, 0x4aa4, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x3556, 0x900e, 0x2130, 0x7126, 0x7132, 0xa860, ++ 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0005, 0x702a, 0x20a0, 0x080c, ++ 0x65ff, 0x1904, 0x4e1f, 0x080c, 0x6972, 0x0138, 0x080c, 0x697a, ++ 0x0120, 0x080c, 0x6912, 0x1904, 0x4e1f, 0xd794, 0x1110, 0xd784, ++ 0x01a8, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, 0x2098, 0x3400, ++ 0xd794, 0x0160, 0x20a9, 0x0008, 0x4003, 0x2098, 0x20a0, 0x3d00, ++ 0x20e0, 0x20a9, 0x0002, 0x080c, 0x48a6, 0x0048, 0x20a9, 0x0004, ++ 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x48a6, 0x9186, ++ 0x007e, 0x0170, 0x9186, 0x0080, 0x0158, 0x080c, 0x6972, 0x90c2, ++ 0x0006, 0x1210, 0xc1fd, 0x0020, 0x080c, 0x681f, 0x1108, 0xc1fd, ++ 0x4104, 0xc1fc, 0xd794, 0x0528, 0xb8c4, 0x20e0, 0xb8c8, 0x2060, ++ 0x9c80, 0x0000, 0x2098, 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, ++ 0x2098, 0x20a9, 0x0001, 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, ++ 0x20a9, 0x0002, 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, ++ 0x4899, 0x9c80, 0x0026, 0x2098, 0xb8c4, 0x20e0, 0x20a9, 0x0002, ++ 0x4003, 0xd794, 0x0110, 0x96b0, 0x000b, 0x96b0, 0x0005, 0x8108, ++ 0x080c, 0xadcb, 0x0118, 0x9186, 0x0800, 0x0040, 0xd78c, 0x0120, ++ 0x9186, 0x0800, 0x0170, 0x0018, 0x9186, 0x007e, 0x0150, 0xd794, ++ 0x0118, 0x9686, 0x0020, 0x0010, 0x9686, 0x0028, 0x0150, 0x0804, ++ 0x4daf, 0x86ff, 0x1120, 0x7124, 0x810b, 0x0804, 0x3524, 0x7033, ++ 0x0001, 0x7122, 0x7024, 0x9600, 0x7026, 0x772e, 0x2061, 0x18b8, ++ 0x2c44, 0xa06b, 0x0000, 0xa67a, 0x7034, 0xa072, 0x7028, 0xa076, ++ 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, 0x10e9, 0x7007, 0x0002, ++ 0x701f, 0x4e5b, 0x0005, 0x7030, 0x9005, 0x1180, 0x7120, 0x7028, ++ 0x20a0, 0x772c, 0x9036, 0x7034, 0x20e8, 0x2061, 0x18b8, 0x2c44, ++ 0xa28c, 0xa390, 0xa494, 0xa598, 0x0804, 0x4daf, 0x7124, 0x810b, ++ 0x0804, 0x3524, 0x2029, 0x007e, 0x7984, 0x7a88, 0x7b8c, 0x7c98, ++ 0x9184, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3559, 0x9502, ++ 0x0a04, 0x3559, 0x9184, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3559, ++ 0x9502, 0x0a04, 0x3559, 0x9284, 0xff00, 0x8007, 0x90e2, 0x0020, ++ 0x0a04, 0x3559, 0x9502, 0x0a04, 0x3559, 0x9284, 0x00ff, 0x90e2, ++ 0x0020, 0x0a04, 0x3559, 0x9502, 0x0a04, 0x3559, 0x9384, 0xff00, ++ 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3559, 0x9502, 0x0a04, 0x3559, ++ 0x9384, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3559, 0x9502, 0x0a04, ++ 0x3559, 0x9484, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3559, ++ 0x9502, 0x0a04, 0x3559, 0x9484, 0x00ff, 0x90e2, 0x0020, 0x0a04, ++ 0x3559, 0x9502, 0x0a04, 0x3559, 0x2061, 0x1989, 0x6102, 0x6206, ++ 0x630a, 0x640e, 0x0804, 0x3524, 0x080c, 0x4aa4, 0x0904, 0x3556, ++ 0x2009, 0x0016, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, ++ 0x0019, 0xaf60, 0x080c, 0x4aed, 0x701f, 0x4edf, 0x0005, 0x2001, ++ 0x0138, 0x2003, 0x0000, 0x00e6, 0x2071, 0x0300, 0x701c, 0xd0a4, ++ 0x1de8, 0x00ee, 0x20a9, 0x0016, 0x896e, 0x8d6e, 0x8d6f, 0x9d84, ++ 0xffc0, 0x9080, 0x0019, 0x2098, 0x9d84, 0x003f, 0x20e0, 0x2069, ++ 0x1877, 0x20e9, 0x0001, 0x2da0, 0x4003, 0x6800, 0x9005, 0x0904, ++ 0x4f60, 0x6804, 0x2008, 0x918c, 0xfff8, 0x1904, 0x4f60, 0x680c, ++ 0x9005, 0x0904, 0x4f60, 0x9082, 0xff01, 0x1a04, 0x4f60, 0x6810, ++ 0x9082, 0x005c, 0x0a04, 0x4f60, 0x6824, 0x2008, 0x9082, 0x0008, ++ 0x0a04, 0x4f60, 0x9182, 0x0400, 0x1a04, 0x4f60, 0x0056, 0x2029, ++ 0x0000, 0x080c, 0x8afb, 0x005e, 0x6944, 0x6820, 0x9102, 0x06c0, ++ 0x6820, 0x9082, 0x0019, 0x16a0, 0x6828, 0x6944, 0x810c, 0x9102, ++ 0x0678, 0x6840, 0x9082, 0x000f, 0x1658, 0x080c, 0x1018, 0x2900, ++ 0x0904, 0x4f7a, 0x684e, 0x00e6, 0x2071, 0x1930, 0x00b6, 0x2059, ++ 0x0000, 0x080c, 0x89b7, 0x00be, 0x00ee, 0x0558, 0x080c, 0x8711, ++ 0x080c, 0x8757, 0x11e0, 0x6857, 0x0000, 0x00c6, 0x2061, 0x0100, ++ 0x6104, 0x918d, 0x2000, 0x6106, 0x6b10, 0x2061, 0x1a62, 0x630a, ++ 0x00ce, 0x080c, 0x2956, 0x2001, 0x0138, 0x2102, 0x0804, 0x3524, ++ 0x080c, 0x2956, 0x2001, 0x0138, 0x2102, 0x0804, 0x3559, 0x00e6, ++ 0x2071, 0x1930, 0x080c, 0x8b8c, 0x080c, 0x8b9b, 0x080c, 0x89a6, ++ 0x00ee, 0x2001, 0x188a, 0x204c, 0x080c, 0x1031, 0x2001, 0x188a, ++ 0x2003, 0x0000, 0x080c, 0x2956, 0x2001, 0x0138, 0x2102, 0x0804, ++ 0x3556, 0x2001, 0x1924, 0x200c, 0x918e, 0x0000, 0x0904, 0x4fd9, ++ 0x080c, 0x89a1, 0x0904, 0x4fd9, 0x2001, 0x0101, 0x200c, 0x918c, ++ 0xdfff, 0x2102, 0x2001, 0x0138, 0x2003, 0x0000, 0x00e6, 0x2071, ++ 0x0300, 0x701c, 0xd0a4, 0x1de8, 0x00ee, 0x080c, 0x89a6, 0x2001, ++ 0x0035, 0x080c, 0x15ee, 0x00c6, 0x2061, 0x193c, 0x6004, 0x6100, ++ 0x9106, 0x1de0, 0x00ce, 0x080c, 0x2956, 0x2001, 0x0138, 0x2102, ++ 0x00e6, 0x00f6, 0x2071, 0x1923, 0x080c, 0x88e2, 0x0120, 0x2f00, ++ 0x080c, 0x896c, 0x0cc8, 0x00fe, 0x00ee, 0x0126, 0x2091, 0x8000, ++ 0x2001, 0x188a, 0x200c, 0x81ff, 0x0138, 0x2148, 0x080c, 0x1031, ++ 0x2001, 0x188a, 0x2003, 0x0000, 0x2001, 0x183c, 0x2003, 0x0020, ++ 0x00e6, 0x2071, 0x1930, 0x080c, 0x8b8c, 0x080c, 0x8b9b, 0x00ee, ++ 0x012e, 0x0804, 0x3524, 0x0006, 0x080c, 0x56cf, 0xd0cc, 0x000e, ++ 0x0005, 0x0006, 0x080c, 0x56d3, 0xd0bc, 0x000e, 0x0005, 0x6174, ++ 0x7a84, 0x6300, 0x82ff, 0x1118, 0x7986, 0x0804, 0x3524, 0x83ff, ++ 0x1904, 0x3559, 0x2001, 0xfff0, 0x9200, 0x1a04, 0x3559, 0x2019, ++ 0xffff, 0x6078, 0x9302, 0x9200, 0x0a04, 0x3559, 0x7986, 0x6276, ++ 0x0804, 0x3524, 0x080c, 0x56e3, 0x1904, 0x3556, 0x7c88, 0x7d84, ++ 0x7e98, 0x7f8c, 0x080c, 0x4aa4, 0x0904, 0x3556, 0x900e, 0x901e, ++ 0x7326, 0x7332, 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0003, ++ 0x702a, 0x20a0, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, ++ 0x6972, 0x0118, 0x080c, 0x697a, 0x1148, 0x20a9, 0x0001, 0xb814, ++ 0x4004, 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, ++ 0x0800, 0x0120, 0x9386, 0x003c, 0x0170, 0x0c20, 0x83ff, 0x1148, ++ 0x7224, 0x900e, 0x2001, 0x0003, 0x080c, 0x8f68, 0x2208, 0x0804, ++ 0x3524, 0x7033, 0x0001, 0x7122, 0x7024, 0x9300, 0x7026, 0x2061, ++ 0x18b8, 0x2c44, 0xa06b, 0x0000, 0xa37a, 0x7028, 0xa076, 0x7034, ++ 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, 0x10e9, 0x7007, ++ 0x0002, 0x701f, 0x505c, 0x0005, 0x7030, 0x9005, 0x1178, 0x7120, ++ 0x7028, 0x20a0, 0x901e, 0x7034, 0x20e8, 0x2061, 0x18b8, 0x2c44, ++ 0xa48c, 0xa590, 0xa694, 0xa798, 0x0804, 0x501a, 0x7224, 0x900e, ++ 0x2001, 0x0003, 0x080c, 0x8f68, 0x2208, 0x0804, 0x3524, 0x00f6, ++ 0x00e6, 0x080c, 0x56e3, 0x2009, 0x0007, 0x1904, 0x50ef, 0x2071, ++ 0x189e, 0x745c, 0x84ff, 0x2009, 0x000e, 0x1904, 0x50ef, 0xac9c, ++ 0xad98, 0xaea4, 0xafa0, 0x0096, 0x080c, 0x1018, 0x2009, 0x0002, ++ 0x0904, 0x50ef, 0x2900, 0x705e, 0x900e, 0x901e, 0x7356, 0x7362, ++ 0xa860, 0x7066, 0xa85c, 0x9080, 0x0003, 0x705a, 0x20a0, 0x91d8, ++ 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6972, 0x0118, 0x080c, ++ 0x697a, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, ++ 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, ++ 0x003c, 0x01e8, 0x0c20, 0x83ff, 0x11c0, 0x7254, 0x900e, 0x2001, ++ 0x0003, 0x080c, 0x8f68, 0x2208, 0x009e, 0xa897, 0x4000, 0xa99a, ++ 0x715c, 0x81ff, 0x090c, 0x0dd5, 0x2148, 0x080c, 0x1031, 0x9006, ++ 0x705e, 0x918d, 0x0001, 0x2008, 0x0418, 0x7063, 0x0001, 0x7152, ++ 0x7054, 0x9300, 0x7056, 0x2061, 0x18b9, 0x2c44, 0xa37a, 0x7058, ++ 0xa076, 0x7064, 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0xa09f, ++ 0x50fb, 0x000e, 0xa0a2, 0x080c, 0x10e9, 0x9006, 0x0048, 0x009e, ++ 0xa897, 0x4005, 0xa99a, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, ++ 0x00ee, 0x00fe, 0x0005, 0x00f6, 0xa0a0, 0x904d, 0x090c, 0x0dd5, ++ 0x00e6, 0x2071, 0x189e, 0xa06c, 0x908e, 0x0100, 0x0138, 0xa87b, ++ 0x0030, 0xa883, 0x0000, 0xa897, 0x4002, 0x00d8, 0x7060, 0x9005, ++ 0x1158, 0x7150, 0x7058, 0x20a0, 0x901e, 0x7064, 0x20e8, 0xa48c, ++ 0xa590, 0xa694, 0xa798, 0x0428, 0xa87b, 0x0000, 0xa883, 0x0000, ++ 0xa897, 0x4000, 0x7254, 0x900e, 0x2001, 0x0003, 0x080c, 0x8f68, ++ 0xaa9a, 0x715c, 0x81ff, 0x090c, 0x0dd5, 0x2148, 0x080c, 0x1031, ++ 0x705f, 0x0000, 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6c81, 0x012e, 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x00ee, 0x00fe, ++ 0x0005, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6972, ++ 0x0118, 0x080c, 0x697a, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, ++ 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, ++ 0x0120, 0x9386, 0x003c, 0x0518, 0x0c20, 0x83ff, 0x11f0, 0x7154, ++ 0x810c, 0xa99a, 0xa897, 0x4000, 0x715c, 0x81ff, 0x090c, 0x0dd5, ++ 0x2148, 0x080c, 0x1031, 0x9006, 0x705e, 0x918d, 0x0001, 0x2008, ++ 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, 0x012e, ++ 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x0070, 0x7063, 0x0001, 0x7152, ++ 0x7054, 0x9300, 0x7056, 0xa37a, 0xa48e, 0xa592, 0xa696, 0xa79a, ++ 0x080c, 0x10e9, 0x9006, 0x00ee, 0x0005, 0x0096, 0xa88c, 0x90be, ++ 0x7000, 0x0148, 0x90be, 0x7100, 0x0130, 0x90be, 0x7200, 0x0118, ++ 0x009e, 0x0804, 0x3559, 0xa884, 0xa988, 0x080c, 0x283e, 0x1518, ++ 0x080c, 0x659e, 0x1500, 0x7126, 0xbe12, 0xbd16, 0xae7c, 0x080c, ++ 0x4aa4, 0x01c8, 0x080c, 0x4aa4, 0x01b0, 0x009e, 0xa867, 0x0000, ++ 0xa868, 0xc0fd, 0xa86a, 0xa823, 0x0000, 0xa804, 0x2048, 0x080c, ++ 0xccdf, 0x1120, 0x2009, 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, ++ 0x701f, 0x51c8, 0x0005, 0x009e, 0x2009, 0x0002, 0x0804, 0x3556, ++ 0x7124, 0x080c, 0x32bb, 0xa820, 0x9086, 0x8001, 0x1120, 0x2009, ++ 0x0004, 0x0804, 0x3556, 0x2900, 0x7022, 0xa804, 0x0096, 0x2048, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x009e, ++ 0x9080, 0x0002, 0x0076, 0x0006, 0x2098, 0x20a0, 0x27e0, 0x27e8, ++ 0x20a9, 0x002a, 0x080c, 0x0f7c, 0xaa6c, 0xab70, 0xac74, 0xad78, ++ 0x2061, 0x18b8, 0x2c44, 0xa06b, 0x0000, 0xae64, 0xaf8c, 0x97c6, ++ 0x7000, 0x0118, 0x97c6, 0x7100, 0x1148, 0x96c2, 0x0004, 0x0600, ++ 0x2009, 0x0004, 0x000e, 0x007e, 0x0804, 0x4af0, 0x97c6, 0x7200, ++ 0x11b8, 0x96c2, 0x0054, 0x02a0, 0x000e, 0x007e, 0x2061, 0x18b8, ++ 0x2c44, 0xa076, 0xa772, 0xa07b, 0x002a, 0xa28e, 0xa392, 0xa496, ++ 0xa59a, 0x080c, 0x10e9, 0x7007, 0x0002, 0x701f, 0x5224, 0x0005, ++ 0x000e, 0x007e, 0x0804, 0x3559, 0x7020, 0x2048, 0xa804, 0x2048, ++ 0xa804, 0x2048, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x0002, 0x2098, 0x20a0, 0x27e0, 0x27e8, 0x20a9, ++ 0x002a, 0x080c, 0x0f7c, 0x2100, 0x2238, 0x2061, 0x18b8, 0x2c44, ++ 0xa28c, 0xa390, 0xa494, 0xa598, 0x2009, 0x002a, 0x0804, 0x4af0, ++ 0x81ff, 0x1904, 0x3556, 0x798c, 0x2001, 0x197e, 0x918c, 0x8000, ++ 0x2102, 0x080c, 0x4abb, 0x0904, 0x3559, 0x080c, 0x6972, 0x0120, ++ 0x080c, 0x697a, 0x1904, 0x3559, 0x080c, 0x66c6, 0x0904, 0x3556, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x678c, 0x012e, 0x0904, 0x3556, ++ 0x2001, 0x197e, 0x2004, 0xd0fc, 0x1904, 0x3524, 0x0804, 0x451c, ++ 0xa9a0, 0x2001, 0x197e, 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, ++ 0x4ac8, 0x01a0, 0x080c, 0x6972, 0x0118, 0x080c, 0x697a, 0x1170, ++ 0x080c, 0x66c6, 0x2009, 0x0002, 0x0128, 0x080c, 0x678c, 0x1170, ++ 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0x2001, 0x197e, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x56d7, 0x0110, ++ 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, ++ 0x78a8, 0xd08c, 0x1118, 0xd084, 0x0904, 0x4491, 0x080c, 0x4ad7, ++ 0x0904, 0x3559, 0x080c, 0x4aa4, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x3556, 0x080c, 0x6972, 0x0130, 0x908e, 0x0004, 0x0118, 0x908e, ++ 0x0005, 0x15a0, 0x78a8, 0xd08c, 0x0120, 0xb800, 0xc08c, 0xb802, ++ 0x0028, 0x080c, 0x56cf, 0xd0b4, 0x0904, 0x44cb, 0x7884, 0x908e, ++ 0x007e, 0x0904, 0x44cb, 0x908e, 0x007f, 0x0904, 0x44cb, 0x908e, ++ 0x0080, 0x0904, 0x44cb, 0xb800, 0xd08c, 0x1904, 0x44cb, 0xa867, ++ 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xccfe, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, 0x701f, 0x52f0, 0x0005, ++ 0x080c, 0x4ad7, 0x0904, 0x3559, 0x0804, 0x44cb, 0x080c, 0x3314, ++ 0x0108, 0x0005, 0x2009, 0x1834, 0x210c, 0x81ff, 0x0120, 0x2009, ++ 0x0001, 0x0804, 0x3556, 0x080c, 0x56e3, 0x0120, 0x2009, 0x0007, ++ 0x0804, 0x3556, 0x080c, 0x696a, 0x0120, 0x2009, 0x0008, 0x0804, ++ 0x3556, 0xb89c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x44cb, 0x9006, ++ 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xcd58, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x3556, 0x7007, 0x0003, 0x701f, 0x5329, ++ 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, ++ 0x562c, 0x080c, 0x4ad7, 0x0904, 0x3559, 0x0804, 0x52c2, 0x81ff, ++ 0x2009, 0x0001, 0x1904, 0x3556, 0x080c, 0x56e3, 0x2009, 0x0007, ++ 0x1904, 0x3556, 0x080c, 0x696a, 0x0120, 0x2009, 0x0008, 0x0804, ++ 0x3556, 0x080c, 0x4ad7, 0x0904, 0x3559, 0x080c, 0x6972, 0x2009, ++ 0x0009, 0x1904, 0x3556, 0x080c, 0x4aa4, 0x2009, 0x0002, 0x0904, ++ 0x3556, 0x9006, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x7988, ++ 0x9194, 0xff00, 0x918c, 0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, ++ 0xa952, 0x798c, 0xa956, 0x0038, 0x928e, 0x0100, 0x1904, 0x3559, ++ 0xc0e5, 0xa952, 0xa956, 0xa83e, 0x080c, 0xcfab, 0x2009, 0x0003, ++ 0x0904, 0x3556, 0x7007, 0x0003, 0x701f, 0x537f, 0x0005, 0xa830, ++ 0x9086, 0x0100, 0x2009, 0x0004, 0x0904, 0x3556, 0x0804, 0x3524, ++ 0x7aa8, 0x9284, 0xc000, 0x0148, 0xd2ec, 0x01a0, 0x080c, 0x56e3, ++ 0x1188, 0x2009, 0x0014, 0x0804, 0x3556, 0xd2dc, 0x1568, 0x81ff, ++ 0x2009, 0x0001, 0x1904, 0x3556, 0x080c, 0x56e3, 0x2009, 0x0007, ++ 0x1904, 0x3556, 0xd2f4, 0x0130, 0x9284, 0x5000, 0x080c, 0x56aa, ++ 0x0804, 0x3524, 0xd2fc, 0x0158, 0x080c, 0x4ad7, 0x0904, 0x3559, ++ 0x7984, 0x9284, 0x9000, 0x080c, 0x5687, 0x0804, 0x3524, 0x080c, ++ 0x4ad7, 0x0904, 0x3559, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, ++ 0x2009, 0x0009, 0x1904, 0x5468, 0x080c, 0x4aa4, 0x2009, 0x0002, ++ 0x0904, 0x5468, 0xa85c, 0x9080, 0x001b, 0xaf60, 0x2009, 0x0008, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, 0x4aed, 0x701f, 0x53d9, ++ 0x0005, 0xa86c, 0x9086, 0x0500, 0x1138, 0xa870, 0x9005, 0x1120, ++ 0xa874, 0x9084, 0xff00, 0x0110, 0x1904, 0x3559, 0xa866, 0xa832, ++ 0xa868, 0xc0fd, 0xa86a, 0x080c, 0x4ad7, 0x1110, 0x0804, 0x3559, ++ 0x2009, 0x0043, 0x080c, 0xd013, 0x2009, 0x0003, 0x0904, 0x5468, ++ 0x7007, 0x0003, 0x701f, 0x53fd, 0x0005, 0xa830, 0x9086, 0x0100, ++ 0x2009, 0x0004, 0x0904, 0x5468, 0x7984, 0x7aa8, 0x9284, 0x1000, ++ 0x080c, 0x5687, 0x0804, 0x3524, 0x00c6, 0xaab0, 0x9284, 0xc000, ++ 0x0140, 0xd2ec, 0x0168, 0x080c, 0x56e3, 0x1150, 0x2009, 0x0014, ++ 0x04f0, 0x2061, 0x1800, 0x080c, 0x56e3, 0x2009, 0x0007, 0x15b8, ++ 0xd2f4, 0x0128, 0x9284, 0x5000, 0x080c, 0x56aa, 0x0050, 0xd2fc, ++ 0x0178, 0x080c, 0x4ad5, 0x0588, 0xa998, 0x9284, 0x9000, 0x080c, ++ 0x5687, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0438, ++ 0x080c, 0x4ad5, 0x0510, 0x080c, 0x6972, 0x2009, 0x0009, 0x11b8, ++ 0xa8c4, 0x9086, 0x0500, 0x11c8, 0xa8c8, 0x9005, 0x11b0, 0xa8cc, ++ 0x9084, 0xff00, 0x1190, 0x080c, 0x4ad5, 0x1108, 0x0070, 0x2009, ++ 0x004b, 0x080c, 0xd013, 0x2009, 0x0003, 0x0108, 0x0078, 0x0429, ++ 0x19c0, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0030, 0x00ce, 0x0005, 0x9006, 0x0ce0, ++ 0x7aa8, 0xd2dc, 0x0904, 0x3556, 0x0016, 0x7984, 0x9284, 0x1000, ++ 0xc0fd, 0x080c, 0x5687, 0x001e, 0x1904, 0x3556, 0x0804, 0x3524, ++ 0x00f6, 0x2d78, 0x0011, 0x00fe, 0x0005, 0xaab0, 0xd2dc, 0x0150, ++ 0x0016, 0xa998, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x5687, 0x001e, ++ 0x9085, 0x0001, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x3556, 0x080c, 0x56e3, 0x0120, 0x2009, 0x0007, 0x0804, 0x3556, ++ 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x65ff, 0x1904, 0x3559, ++ 0x9186, 0x007f, 0x0138, 0x080c, 0x6972, 0x0120, 0x2009, 0x0009, ++ 0x0804, 0x3556, 0x080c, 0x4aa4, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x3556, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x2001, 0x0100, ++ 0x8007, 0xa80a, 0x080c, 0xcd18, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x3556, 0x7007, 0x0003, 0x701f, 0x54c6, 0x0005, 0xa808, 0x8007, ++ 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x3556, 0xa8e0, ++ 0xa866, 0xa810, 0x8007, 0x9084, 0x00ff, 0x800c, 0xa814, 0x8007, ++ 0x9084, 0x00ff, 0x8004, 0x9080, 0x0002, 0x9108, 0x8906, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0004, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x4af0, 0x080c, 0x4aa4, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x3556, 0x7984, 0x9194, 0xff00, 0x918c, ++ 0x00ff, 0x8217, 0x82ff, 0x1118, 0x7023, 0x19b3, 0x0040, 0x92c6, ++ 0x0001, 0x1118, 0x7023, 0x19cd, 0x0010, 0x0804, 0x3559, 0x2009, ++ 0x001a, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, ++ 0xaf60, 0x080c, 0x4aed, 0x701f, 0x5516, 0x0005, 0x2001, 0x182e, ++ 0x2003, 0x0001, 0xa85c, 0x9080, 0x0019, 0x2098, 0xa860, 0x20e0, ++ 0x20a9, 0x001a, 0x7020, 0x20a0, 0x20e9, 0x0001, 0x4003, 0x0804, ++ 0x3524, 0x080c, 0x4aa4, 0x1120, 0x2009, 0x0002, 0x0804, 0x3556, ++ 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, ++ 0x2099, 0x19b3, 0x0040, 0x92c6, 0x0001, 0x1118, 0x2099, 0x19cd, ++ 0x0010, 0x0804, 0x3559, 0xa85c, 0x9080, 0x0019, 0x20a0, 0xa860, ++ 0x20e8, 0x20a9, 0x001a, 0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, ++ 0x0804, 0x4af0, 0x7884, 0x908a, 0x1000, 0x1a04, 0x3559, 0x0126, ++ 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, 0x9108, 0x00c6, 0x2061, ++ 0x19fa, 0x6142, 0x00ce, 0x012e, 0x0804, 0x3524, 0x00c6, 0x080c, ++ 0x73bc, 0x1160, 0x080c, 0x76a4, 0x080c, 0x601a, 0x9085, 0x0001, ++ 0x080c, 0x7403, 0x080c, 0x72ee, 0x080c, 0x0dd5, 0x2061, 0x1800, ++ 0x6030, 0xc09d, 0x6032, 0x080c, 0x5ed9, 0x00ce, 0x0005, 0x00c6, ++ 0x2001, 0x1800, 0x2004, 0x908e, 0x0000, 0x0904, 0x3556, 0x7884, ++ 0x9005, 0x0188, 0x7888, 0x2061, 0x199c, 0x2c0c, 0x2062, 0x080c, ++ 0x2c20, 0x01a0, 0x080c, 0x2c28, 0x0188, 0x080c, 0x2c30, 0x0170, ++ 0x2162, 0x0804, 0x3559, 0x2061, 0x0100, 0x6038, 0x9086, 0x0007, ++ 0x1118, 0x2009, 0x0001, 0x0010, 0x2009, 0x0000, 0x7884, 0x9086, ++ 0x0002, 0x1548, 0x2061, 0x0100, 0x6028, 0xc09c, 0x602a, 0x0026, ++ 0x2011, 0x0003, 0x080c, 0xa653, 0x2011, 0x0002, 0x080c, 0xa65d, ++ 0x002e, 0x080c, 0xa540, 0x0036, 0x901e, 0x080c, 0xa5b6, 0x003e, ++ 0x60e3, 0x0000, 0x080c, 0xe9e9, 0x080c, 0xea04, 0x9085, 0x0001, ++ 0x080c, 0x7403, 0x9006, 0x080c, 0x2cef, 0x2001, 0x1800, 0x2003, ++ 0x0004, 0x6027, 0x0008, 0x00ce, 0x0804, 0x3524, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x3556, 0x080c, 0x56e3, 0x0120, 0x2009, ++ 0x0007, 0x0804, 0x3556, 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, ++ 0x65ff, 0x1904, 0x3559, 0x9186, 0x007f, 0x0138, 0x080c, 0x6972, ++ 0x0120, 0x2009, 0x0009, 0x0804, 0x3556, 0x080c, 0x4aa4, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x3556, 0xa867, 0x0000, 0xa868, 0xc0fd, ++ 0xa86a, 0x080c, 0xcd1b, 0x1120, 0x2009, 0x0003, 0x0804, 0x3556, ++ 0x7007, 0x0003, 0x701f, 0x5615, 0x0005, 0xa830, 0x9086, 0x0100, ++ 0x1120, 0x2009, 0x0004, 0x0804, 0x3556, 0xa8e0, 0xa866, 0xa834, ++ 0x8007, 0x800c, 0xa85c, 0x9080, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0xaf60, 0x0804, 0x4af0, 0xa898, 0x9086, 0x000d, 0x1904, ++ 0x3556, 0x2021, 0x4005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5639, ++ 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, ++ 0x0011, 0x0010, 0x7833, 0x0010, 0x7883, 0x4005, 0xa998, 0x7986, ++ 0xa9a4, 0x799a, 0xa9a8, 0x799e, 0x080c, 0x4ae0, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x7007, 0x0001, ++ 0x2091, 0x5000, 0x700f, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x00c6, 0x2061, 0x19fa, 0x7984, 0x6152, 0x614e, 0x6057, ++ 0x0000, 0x604b, 0x0009, 0x7898, 0x606a, 0x789c, 0x6066, 0x7888, ++ 0x6062, 0x788c, 0x605e, 0x2001, 0x1a08, 0x2044, 0x2001, 0x1a0f, ++ 0xa076, 0xa060, 0xa072, 0xa07b, 0x0001, 0xa07f, 0x0002, 0xa06b, ++ 0x0000, 0xa09f, 0x0000, 0x00ce, 0x012e, 0x0804, 0x3524, 0x0126, ++ 0x2091, 0x8000, 0x00b6, 0x00c6, 0x90e4, 0xc000, 0x0128, 0x0006, ++ 0x080c, 0xcb82, 0x000e, 0x1198, 0xd0e4, 0x0160, 0x9180, 0x1000, ++ 0x2004, 0x905d, 0x0160, 0x080c, 0x6034, 0x080c, 0xadcb, 0x0110, ++ 0xb817, 0x0000, 0x9006, 0x00ce, 0x00be, 0x012e, 0x0005, 0x9085, ++ 0x0001, 0x0cc8, 0x0126, 0x2091, 0x8000, 0x0156, 0x2010, 0x900e, ++ 0x20a9, 0x0800, 0x0016, 0x9180, 0x1000, 0x2004, 0x9005, 0x0180, ++ 0x9186, 0x007e, 0x0168, 0x9186, 0x007f, 0x0150, 0x9186, 0x0080, ++ 0x0138, 0x9186, 0x00ff, 0x0120, 0x0026, 0x2200, 0x0801, 0x002e, ++ 0x001e, 0x8108, 0x1f04, 0x56b2, 0x015e, 0x012e, 0x0005, 0x2001, ++ 0x1848, 0x2004, 0x0005, 0x2001, 0x1867, 0x2004, 0x0005, 0x0006, ++ 0x2001, 0x1810, 0x2004, 0xd0d4, 0x000e, 0x0005, 0x2001, 0x180e, ++ 0x2004, 0xd0b4, 0x0005, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, ++ 0x0005, 0x0016, 0x00e6, 0x2071, 0x189e, 0x7108, 0x910d, 0x710a, ++ 0x00ee, 0x001e, 0x0005, 0x79a4, 0x9182, 0x0081, 0x1a04, 0x3559, ++ 0x810c, 0x0016, 0x080c, 0x4aa4, 0x080c, 0x0f07, 0x2100, 0x2238, ++ 0x7d84, 0x7c88, 0x7b8c, 0x7a90, 0x001e, 0x080c, 0x4aed, 0x701f, ++ 0x570a, 0x0005, 0x2079, 0x0000, 0x7d94, 0x7c98, 0x7ba8, 0x7aac, ++ 0x79a4, 0x810c, 0x2061, 0x18b8, 0x2c44, 0xa770, 0xa074, 0x2071, ++ 0x189e, 0x080c, 0x4af0, 0x701f, 0x571e, 0x0005, 0x2061, 0x18b8, ++ 0x2c44, 0x0016, 0x0026, 0xa270, 0xa174, 0x080c, 0x0f0f, 0x002e, ++ 0x001e, 0x080c, 0x0fbc, 0x9006, 0xa802, 0xa806, 0x0804, 0x3524, ++ 0x0126, 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, ++ 0x00e6, 0x00f6, 0x2061, 0x0100, 0x2069, 0x0200, 0x2071, 0x1800, ++ 0x6044, 0xd0a4, 0x11e8, 0xd084, 0x0118, 0x080c, 0x58d9, 0x0068, ++ 0xd08c, 0x0118, 0x080c, 0x57e2, 0x0040, 0xd094, 0x0118, 0x080c, ++ 0x57b2, 0x0018, 0xd09c, 0x0108, 0x0099, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x012e, 0x0005, ++ 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, 0x0c68, ++ 0x0006, 0x7098, 0x9005, 0x000e, 0x0120, 0x709b, 0x0000, 0x7093, ++ 0x0000, 0x624c, 0x9286, 0xf0f0, 0x1150, 0x6048, 0x9086, 0xf0f0, ++ 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0x9294, ++ 0xff00, 0x9296, 0xf700, 0x0178, 0x7138, 0xd1a4, 0x1160, 0x6240, ++ 0x9295, 0x0100, 0x6242, 0x9294, 0x0010, 0x0128, 0x2009, 0x00f7, ++ 0x080c, 0x5f96, 0x00f0, 0x6040, 0x9084, 0x0010, 0x9085, 0x0140, ++ 0x6042, 0x6043, 0x0000, 0x7087, 0x0000, 0x70a3, 0x0001, 0x70c7, ++ 0x0000, 0x70df, 0x0000, 0x2009, 0x1c80, 0x200b, 0x0000, 0x7097, ++ 0x0000, 0x708b, 0x000f, 0x2009, 0x000f, 0x2011, 0x5e7c, 0x080c, ++ 0x858b, 0x0005, 0x2001, 0x1869, 0x2004, 0xd08c, 0x0110, 0x705f, ++ 0xffff, 0x7088, 0x9005, 0x1528, 0x2011, 0x5e7c, 0x080c, 0x84f3, ++ 0x6040, 0x9094, 0x0010, 0x9285, 0x0020, 0x6042, 0x20a9, 0x00c8, ++ 0x6044, 0xd08c, 0x1168, 0x1f04, 0x57c8, 0x6242, 0x709b, 0x0000, ++ 0x6040, 0x9094, 0x0010, 0x9285, 0x0080, 0x6042, 0x6242, 0x0048, ++ 0x6242, 0x709b, 0x0000, 0x708f, 0x0000, 0x9006, 0x080c, 0x601f, ++ 0x0000, 0x0005, 0x708c, 0x908a, 0x0003, 0x1a0c, 0x0dd5, 0x000b, ++ 0x0005, 0x57ec, 0x583d, 0x58d8, 0x00f6, 0x0016, 0x6900, 0x918c, ++ 0x0800, 0x708f, 0x0001, 0x2001, 0x015d, 0x2003, 0x0000, 0x6803, ++ 0x00fc, 0x20a9, 0x0004, 0x6800, 0x9084, 0x00fc, 0x0120, 0x1f04, ++ 0x57fb, 0x080c, 0x0dd5, 0x68a0, 0x68a2, 0x689c, 0x689e, 0x6898, ++ 0x689a, 0xa001, 0x918d, 0x1600, 0x6902, 0x001e, 0x6837, 0x0020, ++ 0x080c, 0x5ffb, 0x2079, 0x1c00, 0x7833, 0x1101, 0x7837, 0x0000, ++ 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0001, 0x20a1, 0x1c0e, ++ 0x20a9, 0x0004, 0x4003, 0x080c, 0xab21, 0x20e1, 0x0001, 0x2099, ++ 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, ++ 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x5ead, 0x00fe, 0x9006, ++ 0x7092, 0x6043, 0x0008, 0x6042, 0x0005, 0x00f6, 0x7090, 0x7093, ++ 0x0000, 0x9025, 0x0904, 0x58b5, 0x6020, 0xd0b4, 0x1904, 0x58b3, ++ 0x71a0, 0x81ff, 0x0904, 0x58a1, 0x9486, 0x000c, 0x1904, 0x58ae, ++ 0x9480, 0x0018, 0x8004, 0x20a8, 0x080c, 0x5ff4, 0x2011, 0x0260, ++ 0x2019, 0x1c00, 0x220c, 0x2304, 0x9106, 0x11e8, 0x8210, 0x8318, ++ 0x1f04, 0x585a, 0x6043, 0x0004, 0x2061, 0x0140, 0x605b, 0xbc94, ++ 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0006, 0x708f, 0x0002, ++ 0x709b, 0x0002, 0x2009, 0x07d0, 0x2011, 0x5e83, 0x080c, 0x858b, ++ 0x080c, 0x5ffb, 0x04c0, 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7930, ++ 0x918e, 0x1101, 0x1558, 0x7834, 0x9005, 0x1540, 0x7900, 0x918c, ++ 0x00ff, 0x1118, 0x7804, 0x9005, 0x0190, 0x080c, 0x5ff4, 0x2011, ++ 0x026e, 0x2019, 0x1805, 0x20a9, 0x0004, 0x220c, 0x2304, 0x9102, ++ 0x0230, 0x11a0, 0x8210, 0x8318, 0x1f04, 0x5895, 0x0078, 0x70a3, ++ 0x0000, 0x080c, 0x5ff4, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, ++ 0x0001, 0x20a1, 0x1c00, 0x20a9, 0x0014, 0x4003, 0x6043, 0x0008, ++ 0x6043, 0x0000, 0x0010, 0x00fe, 0x0005, 0x6040, 0x9085, 0x0100, ++ 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x080c, 0xab21, 0x20e1, 0x0001, ++ 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, ++ 0x4003, 0x60c3, 0x000c, 0x2011, 0x19f1, 0x2013, 0x0000, 0x7093, ++ 0x0000, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0xa26a, 0x08d8, ++ 0x0005, 0x7098, 0x908a, 0x001d, 0x1a0c, 0x0dd5, 0x000b, 0x0005, ++ 0x590a, 0x591d, 0x5946, 0x5966, 0x598c, 0x59bb, 0x59e1, 0x5a19, ++ 0x5a3f, 0x5a6d, 0x5aa8, 0x5ae0, 0x5afe, 0x5b29, 0x5b4b, 0x5b66, ++ 0x5b70, 0x5ba4, 0x5bca, 0x5bf9, 0x5c1f, 0x5c57, 0x5c9b, 0x5cd8, ++ 0x5cf9, 0x5d52, 0x5d74, 0x5da2, 0x5da2, 0x00c6, 0x2061, 0x1800, ++ 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0x9084, 0xfff9, 0x6006, ++ 0x00ce, 0x0005, 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, ++ 0x2061, 0x0100, 0x6043, 0x0002, 0x709b, 0x0001, 0x2009, 0x07d0, ++ 0x2011, 0x5e83, 0x080c, 0x858b, 0x0005, 0x00f6, 0x7090, 0x9086, ++ 0x0014, 0x1510, 0x6042, 0x6020, 0xd0b4, 0x11f0, 0x080c, 0x5ff4, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x11a0, 0x7834, 0x9005, ++ 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, ++ 0x0001, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x709b, 0x0010, 0x080c, ++ 0x5b70, 0x0010, 0x7093, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x709b, ++ 0x0003, 0x6043, 0x0004, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x080c, ++ 0x5f78, 0x2079, 0x0240, 0x7833, 0x1102, 0x7837, 0x0000, 0x20a9, ++ 0x0008, 0x9f88, 0x000e, 0x200b, 0x0000, 0x8108, 0x1f04, 0x595b, ++ 0x60c3, 0x0014, 0x080c, 0x5ead, 0x00fe, 0x0005, 0x00f6, 0x7090, ++ 0x9005, 0x0500, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x9086, 0x0014, ++ 0x11b8, 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, ++ 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, ++ 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, 0x0004, 0x0029, 0x0010, ++ 0x080c, 0x5fd0, 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0005, 0x080c, ++ 0x5f78, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, ++ 0x5ff4, 0x080c, 0x5fd7, 0x1170, 0x7084, 0x9005, 0x1158, 0x715c, ++ 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c, 0x5e30, 0x0168, ++ 0x080c, 0x5fad, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, ++ 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, ++ 0x5ead, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, 0x2011, ++ 0x5e83, 0x080c, 0x84f3, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5ff4, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, ++ 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, ++ 0x0001, 0x709b, 0x0006, 0x0029, 0x0010, 0x080c, 0x5fd0, 0x00fe, ++ 0x0005, 0x00f6, 0x709b, 0x0007, 0x080c, 0x5f78, 0x2079, 0x0240, ++ 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x5ff4, 0x080c, 0x5fd7, ++ 0x11b8, 0x7084, 0x9005, 0x11a0, 0x7164, 0x9186, 0xffff, 0x0180, ++ 0x9180, 0x3325, 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, ++ 0x080c, 0x5e30, 0x0180, 0x080c, 0x4fe1, 0x0110, 0x080c, 0x28a7, ++ 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5ead, 0x00fe, ++ 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, 0x2011, 0x5e83, 0x080c, ++ 0x84f3, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5ff4, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, ++ 0x0008, 0x0029, 0x0010, 0x080c, 0x5fd0, 0x00fe, 0x0005, 0x00f6, ++ 0x709b, 0x0009, 0x080c, 0x5f78, 0x2079, 0x0240, 0x7833, 0x1105, ++ 0x7837, 0x0100, 0x080c, 0x5fd7, 0x1150, 0x7084, 0x9005, 0x1138, ++ 0x080c, 0x5da3, 0x1188, 0x9085, 0x0001, 0x080c, 0x28a7, 0x20a9, ++ 0x0008, 0x080c, 0x5ff4, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, ++ 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5ead, ++ 0x0010, 0x080c, 0x58fd, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, ++ 0x05a8, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x9086, 0x0014, 0x1560, ++ 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, 0x1520, ++ 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, ++ 0x000a, 0x00b1, 0x0098, 0x9005, 0x1178, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x7097, 0x0000, 0x709b, ++ 0x000e, 0x080c, 0x5b4b, 0x0010, 0x080c, 0x5fd0, 0x00fe, 0x0005, ++ 0x00f6, 0x709b, 0x000b, 0x2011, 0x1c0e, 0x20e9, 0x0001, 0x22a0, ++ 0x20a9, 0x0040, 0x2019, 0xffff, 0x4304, 0x080c, 0x5f78, 0x2079, ++ 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x5fd7, 0x0118, ++ 0x2013, 0x0000, 0x0020, 0x7060, 0x9085, 0x0100, 0x2012, 0x20a9, ++ 0x0040, 0x2009, 0x024e, 0x2011, 0x1c0e, 0x220e, 0x8210, 0x8108, ++ 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, ++ 0x1f04, 0x5acd, 0x60c3, 0x0084, 0x080c, 0x5ead, 0x00fe, 0x0005, ++ 0x00f6, 0x7090, 0x9005, 0x01c0, 0x2011, 0x5e83, 0x080c, 0x84f3, ++ 0x9086, 0x0084, 0x1178, 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, 0x1120, 0x709b, 0x000c, ++ 0x0029, 0x0010, 0x080c, 0x5fd0, 0x00fe, 0x0005, 0x00f6, 0x709b, ++ 0x000d, 0x080c, 0x5f78, 0x2079, 0x0240, 0x7833, 0x1107, 0x7837, ++ 0x0000, 0x080c, 0x5ff4, 0x20a9, 0x0040, 0x2011, 0x026e, 0x2009, ++ 0x024e, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, ++ 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, ++ 0x0260, 0x1f04, 0x5b11, 0x60c3, 0x0084, 0x080c, 0x5ead, 0x00fe, ++ 0x0005, 0x00f6, 0x7090, 0x9005, 0x01e0, 0x2011, 0x5e83, 0x080c, ++ 0x84f3, 0x9086, 0x0084, 0x1198, 0x080c, 0x5ff4, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, 0x7097, ++ 0x0001, 0x080c, 0x5f4a, 0x709b, 0x000e, 0x0029, 0x0010, 0x080c, ++ 0x5fd0, 0x00fe, 0x0005, 0x918d, 0x0001, 0x080c, 0x601f, 0x709b, ++ 0x000f, 0x7093, 0x0000, 0x2061, 0x0140, 0x605b, 0xbc85, 0x605f, ++ 0xb5b5, 0x2061, 0x0100, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, ++ 0x07d0, 0x2011, 0x5e83, 0x080c, 0x84e7, 0x0005, 0x7090, 0x9005, ++ 0x0130, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x709b, 0x0000, 0x0005, ++ 0x709b, 0x0011, 0x080c, 0xab21, 0x080c, 0x5ff4, 0x20e1, 0x0000, ++ 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x7490, 0x9480, ++ 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x4003, ++ 0x080c, 0x5fd7, 0x11a0, 0x717c, 0x81ff, 0x0188, 0x900e, 0x7080, ++ 0x9084, 0x00ff, 0x0160, 0x080c, 0x283e, 0x9186, 0x007e, 0x0138, ++ 0x9186, 0x0080, 0x0120, 0x2011, 0x0008, 0x080c, 0x5e30, 0x60c3, ++ 0x0014, 0x080c, 0x5ead, 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, ++ 0x2011, 0x5e83, 0x080c, 0x84f3, 0x9086, 0x0014, 0x11b8, 0x080c, ++ 0x5ff4, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, ++ 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, ++ 0x70c7, 0x0001, 0x709b, 0x0012, 0x0029, 0x0010, 0x7093, 0x0000, ++ 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0013, 0x080c, 0x5f86, 0x2079, ++ 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, 0x5ff4, 0x080c, ++ 0x5fd7, 0x1170, 0x7084, 0x9005, 0x1158, 0x715c, 0x9186, 0xffff, ++ 0x0138, 0x2011, 0x0008, 0x080c, 0x5e30, 0x0168, 0x080c, 0x5fad, ++ 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5ead, 0x00fe, ++ 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, 0x2011, 0x5e83, 0x080c, ++ 0x84f3, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5ff4, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, ++ 0x0014, 0x0029, 0x0010, 0x7093, 0x0000, 0x00fe, 0x0005, 0x00f6, ++ 0x709b, 0x0015, 0x080c, 0x5f86, 0x2079, 0x0240, 0x7833, 0x1104, ++ 0x7837, 0x0000, 0x080c, 0x5ff4, 0x080c, 0x5fd7, 0x11b8, 0x7084, ++ 0x9005, 0x11a0, 0x7164, 0x9186, 0xffff, 0x0180, 0x9180, 0x3325, ++ 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, 0x5e30, ++ 0x0180, 0x080c, 0x4fe1, 0x0110, 0x080c, 0x28a7, 0x20a9, 0x0008, ++ 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, ++ 0x4003, 0x60c3, 0x0014, 0x080c, 0x5ead, 0x00fe, 0x0005, 0x00f6, ++ 0x7090, 0x9005, 0x05f0, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x9086, ++ 0x0014, 0x15a8, 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1105, 0x1568, 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e, ++ 0x1168, 0x9085, 0x0001, 0x080c, 0x601f, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x0080, 0x9005, 0x11b8, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, ++ 0x9085, 0x0001, 0x080c, 0x601f, 0x7097, 0x0000, 0x7a38, 0xd2f4, ++ 0x0110, 0x70df, 0x0008, 0x709b, 0x0016, 0x0029, 0x0010, 0x7093, ++ 0x0000, 0x00fe, 0x0005, 0x080c, 0xab21, 0x080c, 0x5ff4, 0x20e1, ++ 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, ++ 0x000e, 0x4003, 0x2011, 0x026d, 0x2204, 0x9084, 0x0100, 0x2011, ++ 0x024d, 0x2012, 0x2011, 0x026e, 0x709b, 0x0017, 0x080c, 0x5fd7, ++ 0x1150, 0x7084, 0x9005, 0x1138, 0x080c, 0x5da3, 0x1188, 0x9085, ++ 0x0001, 0x080c, 0x28a7, 0x20a9, 0x0008, 0x080c, 0x5ff4, 0x20e1, ++ 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, ++ 0x60c3, 0x0014, 0x080c, 0x5ead, 0x0010, 0x080c, 0x58fd, 0x0005, ++ 0x00f6, 0x7090, 0x9005, 0x01d8, 0x2011, 0x5e83, 0x080c, 0x84f3, ++ 0x9086, 0x0084, 0x1190, 0x080c, 0x5ff4, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1106, 0x1150, 0x7834, 0x9005, 0x1138, 0x9006, 0x080c, ++ 0x601f, 0x709b, 0x0018, 0x0029, 0x0010, 0x7093, 0x0000, 0x00fe, ++ 0x0005, 0x00f6, 0x709b, 0x0019, 0x080c, 0x5f86, 0x2079, 0x0240, ++ 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x5ff4, 0x2009, 0x026e, ++ 0x2039, 0x1c0e, 0x20a9, 0x0040, 0x213e, 0x8738, 0x8108, 0x9186, ++ 0x0280, 0x1128, 0x6814, 0x8000, 0x6816, 0x2009, 0x0260, 0x1f04, ++ 0x5d0c, 0x2039, 0x1c0e, 0x080c, 0x5fd7, 0x11e8, 0x2728, 0x2514, ++ 0x8207, 0x9084, 0x00ff, 0x8000, 0x2018, 0x9294, 0x00ff, 0x8007, ++ 0x9205, 0x202a, 0x7060, 0x2310, 0x8214, 0x92a0, 0x1c0e, 0x2414, ++ 0x938c, 0x0001, 0x0118, 0x9294, 0xff00, 0x0018, 0x9294, 0x00ff, ++ 0x8007, 0x9215, 0x2222, 0x20a9, 0x0040, 0x2009, 0x024e, 0x270e, ++ 0x8738, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, ++ 0x2009, 0x0240, 0x1f04, 0x5d3f, 0x60c3, 0x0084, 0x080c, 0x5ead, ++ 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x01e0, 0x2011, 0x5e83, ++ 0x080c, 0x84f3, 0x9086, 0x0084, 0x1198, 0x080c, 0x5ff4, 0x2079, ++ 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, ++ 0x7097, 0x0001, 0x080c, 0x5f4a, 0x709b, 0x001a, 0x0029, 0x0010, ++ 0x7093, 0x0000, 0x00fe, 0x0005, 0x9085, 0x0001, 0x080c, 0x601f, ++ 0x709b, 0x001b, 0x080c, 0xab21, 0x080c, 0x5ff4, 0x2011, 0x0260, ++ 0x2009, 0x0240, 0x7490, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, ++ 0x03f8, 0x8004, 0x20a8, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, ++ 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000, ++ 0x6816, 0x2011, 0x0260, 0x1f04, 0x5d8b, 0x60c3, 0x0084, 0x080c, ++ 0x5ead, 0x0005, 0x0005, 0x0086, 0x0096, 0x2029, 0x1848, 0x252c, ++ 0x20a9, 0x0008, 0x2041, 0x1c0e, 0x20e9, 0x0001, 0x28a0, 0x080c, ++ 0x5ff4, 0x20e1, 0x0000, 0x2099, 0x026e, 0x4003, 0x20a9, 0x0008, ++ 0x2011, 0x0007, 0xd5d4, 0x0108, 0x9016, 0x2800, 0x9200, 0x200c, ++ 0x91a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, ++ 0x1f04, 0x5dbd, 0x0804, 0x5e2c, 0x82ff, 0x1160, 0xd5d4, 0x0120, ++ 0x91a6, 0x3fff, 0x0d90, 0x0020, 0x91a6, 0x3fff, 0x0904, 0x5e2c, ++ 0x918d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, ++ 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, ++ 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, 0x5de3, ++ 0x04d8, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, 0x5df5, ++ 0x2328, 0x8529, 0x92be, 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, ++ 0x2200, 0x973a, 0x000e, 0x27a8, 0x95a8, 0x0010, 0x1f04, 0x5e04, ++ 0x755e, 0x95c8, 0x3325, 0x292d, 0x95ac, 0x00ff, 0x7582, 0x6532, ++ 0x6536, 0x0016, 0x2508, 0x080c, 0x2887, 0x001e, 0x60e7, 0x0000, ++ 0x65ea, 0x2018, 0x2304, 0x9405, 0x201a, 0x7087, 0x0001, 0x20e9, ++ 0x0000, 0x20a1, 0x024e, 0x20e1, 0x0001, 0x2898, 0x20a9, 0x0008, ++ 0x4003, 0x9085, 0x0001, 0x0008, 0x9006, 0x009e, 0x008e, 0x0005, ++ 0x0156, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x22a8, 0x20e1, 0x0000, ++ 0x2099, 0x026e, 0x20e9, 0x0000, 0x2011, 0x024e, 0x22a0, 0x4003, ++ 0x014e, 0x013e, 0x01de, 0x01ce, 0x015e, 0x2118, 0x9026, 0x2001, ++ 0x0007, 0x939a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, ++ 0x84ff, 0x0120, 0x939a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, ++ 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0x9238, 0x2029, 0x026e, ++ 0x9528, 0x2504, 0x942c, 0x11b8, 0x9405, 0x203a, 0x715e, 0x91a0, ++ 0x3325, 0x242d, 0x95ac, 0x00ff, 0x7582, 0x6532, 0x6536, 0x0016, ++ 0x2508, 0x080c, 0x2887, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x7087, ++ 0x0001, 0x9084, 0x0000, 0x0005, 0x00e6, 0x2071, 0x1800, 0x708b, ++ 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, ++ 0x0140, 0x080c, 0x5f39, 0x080c, 0xa273, 0x7004, 0x9084, 0x4000, ++ 0x0110, 0x080c, 0x2cff, 0x0126, 0x2091, 0x8000, 0x2071, 0x1826, ++ 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, ++ 0x5f96, 0x001e, 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, 0x7a42, ++ 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x2ba5, 0x0228, 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, ++ 0x2011, 0x19f1, 0x2013, 0x0000, 0x7093, 0x0000, 0x012e, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x080c, 0xa26a, 0x6144, 0xd184, 0x0120, ++ 0x7198, 0x918d, 0x2000, 0x0018, 0x718c, 0x918d, 0x1000, 0x2011, ++ 0x1999, 0x2112, 0x2009, 0x07d0, 0x2011, 0x5e83, 0x080c, 0x858b, ++ 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xadd2, 0x2009, 0x00f7, 0x080c, 0x5f96, 0x2061, 0x19fa, 0x900e, ++ 0x611a, 0x611e, 0x6172, 0x6176, 0x2061, 0x1800, 0x6003, 0x0001, ++ 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x1999, ++ 0x200b, 0x0000, 0x2009, 0x002d, 0x2011, 0x5f05, 0x080c, 0x84e7, ++ 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x0471, 0x2071, 0x0100, 0x080c, 0xa273, 0x2071, ++ 0x0140, 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, 0x2cff, 0x080c, ++ 0x73c4, 0x0188, 0x080c, 0x73df, 0x1170, 0x080c, 0x76ae, 0x0016, ++ 0x080c, 0x2956, 0x2001, 0x196d, 0x2102, 0x001e, 0x080c, 0x76a9, ++ 0x080c, 0x72ee, 0x0050, 0x2009, 0x0001, 0x080c, 0x2c3e, 0x2001, ++ 0x0001, 0x080c, 0x27ea, 0x080c, 0x5ed9, 0x012e, 0x000e, 0x00ee, ++ 0x0005, 0x2001, 0x180e, 0x2004, 0xd0bc, 0x0158, 0x0026, 0x0036, ++ 0x2011, 0x8017, 0x2001, 0x1999, 0x201c, 0x080c, 0x4b04, 0x003e, ++ 0x002e, 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001, 0x20a1, 0x1c80, ++ 0x080c, 0x5ff4, 0x20e9, 0x0000, 0x2099, 0x026e, 0x0099, 0x20a9, ++ 0x0020, 0x080c, 0x5fee, 0x2099, 0x0260, 0x20a1, 0x1c92, 0x0051, ++ 0x20a9, 0x000e, 0x080c, 0x5ff1, 0x2099, 0x0260, 0x20a1, 0x1cb2, ++ 0x0009, 0x0005, 0x0016, 0x0026, 0x3410, 0x3308, 0x2104, 0x8007, ++ 0x2012, 0x8108, 0x8210, 0x1f04, 0x5f6e, 0x002e, 0x001e, 0x0005, ++ 0x080c, 0xab21, 0x20e1, 0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, ++ 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x080c, 0xab21, ++ 0x080c, 0x5ff4, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, ++ 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x00c6, 0x0006, ++ 0x2061, 0x0100, 0x810f, 0x2001, 0x1834, 0x2004, 0x9005, 0x1138, ++ 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, 0x9105, 0x0010, 0x9185, ++ 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, 0x0046, 0x080c, ++ 0x696e, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, 0x080c, 0xe5ae, ++ 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x900e, ++ 0x080c, 0x318a, 0x080c, 0xd230, 0x0140, 0x0036, 0x2019, 0xffff, ++ 0x2021, 0x0007, 0x080c, 0x4cbb, 0x003e, 0x004e, 0x001e, 0x0005, ++ 0x080c, 0x5ed9, 0x709b, 0x0000, 0x7093, 0x0000, 0x0005, 0x0006, ++ 0x2001, 0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, ++ 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0x918d, ++ 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x2009, 0x0001, ++ 0x0020, 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, 0x9084, 0xffc0, ++ 0x910d, 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, 0x01d6, 0x9006, ++ 0x20a9, 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x4004, 0x2079, ++ 0x1c00, 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, 0x00ef, 0x7813, ++ 0x0138, 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, 0x014e, 0x015e, ++ 0x00fe, 0x0005, 0x2001, 0x1800, 0x2003, 0x0001, 0x0005, 0x2001, ++ 0x19a6, 0x0118, 0x2003, 0x0001, 0x0010, 0x2003, 0x0000, 0x0005, ++ 0x0156, 0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, 0x200a, 0x8108, ++ 0x1f04, 0x602e, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, ++ 0x0146, 0x2069, 0x1847, 0x9006, 0xb802, 0xb8ce, 0xb807, 0x0707, ++ 0xb80a, 0xb80e, 0xb812, 0x9198, 0x3325, 0x231d, 0x939c, 0x00ff, ++ 0xbb16, 0x0016, 0x0026, 0xb8c2, 0x080c, 0xadcb, 0x1120, 0x9192, ++ 0x007e, 0x1208, 0xbbc2, 0x20a9, 0x0004, 0xb8c4, 0x20e8, 0xb9c8, ++ 0x9198, 0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9198, ++ 0x000a, 0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, 0xb842, 0xb84e, ++ 0xb852, 0xb856, 0xb85a, 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, ++ 0x0100, 0xb872, 0xb876, 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, ++ 0xb896, 0xb89a, 0xb89e, 0xb8be, 0xb9a2, 0x0096, 0xb8a4, 0x904d, ++ 0x0110, 0x080c, 0x1031, 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, ++ 0x6810, 0xb83a, 0x680c, 0xb846, 0xb8bb, 0x0520, 0xb8ac, 0x9005, ++ 0x0198, 0x00c6, 0x2060, 0x9c82, 0x1cd0, 0x0a0c, 0x0dd5, 0x2001, ++ 0x181a, 0x2004, 0x9c02, 0x1a0c, 0x0dd5, 0x080c, 0x8981, 0x00ce, ++ 0x090c, 0x8d25, 0xb8af, 0x0000, 0x6814, 0x9084, 0x00ff, 0xb842, ++ 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, ++ 0x611c, 0x9182, 0x0800, 0x1a04, 0x6120, 0x2001, 0x180c, 0x2004, ++ 0x9084, 0x0003, 0x1904, 0x6126, 0x9188, 0x1000, 0x2104, 0x905d, ++ 0x0518, 0xb804, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1508, 0xb8a4, ++ 0x900d, 0x1904, 0x6138, 0xb850, 0x900d, 0x1148, 0xa802, 0x2900, ++ 0xb852, 0xb84e, 0x080c, 0x910d, 0x9006, 0x012e, 0x0005, 0x00a6, ++ 0x2150, 0x2900, 0xb002, 0xa803, 0x0000, 0x00ae, 0xb852, 0x0c90, ++ 0x2001, 0x0005, 0x900e, 0x04b8, 0x2001, 0x0028, 0x900e, 0x0498, ++ 0x9082, 0x0006, 0x1290, 0x080c, 0xadcb, 0x1160, 0xb8a0, 0x9084, ++ 0xff80, 0x1140, 0xb900, 0xd1fc, 0x0990, 0x2001, 0x0029, 0x2009, ++ 0x1000, 0x0408, 0x2001, 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, ++ 0xd18c, 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, ++ 0x0004, 0x0040, 0x2001, 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, ++ 0x1000, 0x0048, 0x900e, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, ++ 0x2001, 0x0029, 0x900e, 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, ++ 0x2004, 0xd084, 0x19d0, 0x9188, 0x1000, 0x2104, 0x905d, 0x09a8, ++ 0x080c, 0x6972, 0x1990, 0xb800, 0xd0bc, 0x0978, 0x0804, 0x60cf, ++ 0x080c, 0x679b, 0x0904, 0x60e8, 0x0804, 0x60d3, 0x00b6, 0x00e6, ++ 0x0126, 0x2091, 0x8000, 0xa874, 0x908e, 0x00ff, 0x1120, 0x2001, ++ 0x196b, 0x205c, 0x0060, 0xa974, 0x9182, 0x0800, 0x1690, 0x9188, ++ 0x1000, 0x2104, 0x905d, 0x01d0, 0x080c, 0x6912, 0x11d0, 0x080c, ++ 0xae0b, 0x0570, 0x2b00, 0x6012, 0x2900, 0x6016, 0x6023, 0x0009, ++ 0x600b, 0x0000, 0xa874, 0x908e, 0x00ff, 0x1110, 0x600b, 0x8000, ++ 0x2009, 0x0043, 0x080c, 0xaedc, 0x9006, 0x00b0, 0x2001, 0x0028, ++ 0x0090, 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, ++ 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, ++ 0x0010, 0x2001, 0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, ++ 0x2001, 0x002c, 0x0cc0, 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0xa974, 0x9182, 0x0800, 0x1a04, 0x6206, 0x9188, 0x1000, 0x2104, ++ 0x905d, 0x0904, 0x61de, 0xb8a0, 0x9086, 0x007f, 0x0178, 0x080c, ++ 0x697a, 0x0160, 0xa994, 0x81ff, 0x0130, 0x908e, 0x0004, 0x0130, ++ 0x908e, 0x0005, 0x0118, 0x080c, 0x6972, 0x1598, 0xa87c, 0xd0fc, ++ 0x01e0, 0xa894, 0x9005, 0x01c8, 0x2060, 0x0026, 0x2010, 0x080c, ++ 0xcb23, 0x002e, 0x1120, 0x2001, 0x0008, 0x0804, 0x6208, 0x6020, ++ 0x9086, 0x000a, 0x0120, 0x2001, 0x0008, 0x0804, 0x6208, 0x601a, ++ 0x6003, 0x0008, 0x2900, 0x6016, 0x0058, 0x080c, 0xae0b, 0x05e8, ++ 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, ++ 0x2009, 0x0003, 0x080c, 0xaedc, 0x9006, 0x0458, 0x2001, 0x0028, ++ 0x0438, 0x9082, 0x0006, 0x1290, 0x080c, 0xadcb, 0x1160, 0xb8a0, ++ 0x9084, 0xff80, 0x1140, 0xb900, 0xd1fc, 0x0900, 0x2001, 0x0029, ++ 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, 0x180c, ++ 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, ++ 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, ++ 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2001, 0x002c, 0x0cc0, ++ 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, 0xa8e0, 0x9005, 0x1550, ++ 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, 0x9005, 0x1518, 0xa8c4, ++ 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, 0x1800, 0x9182, 0x0800, ++ 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, 0xaa98, 0xab94, 0xa878, ++ 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, 0x0118, 0x2001, 0x0004, ++ 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, ++ 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, 0x0029, ++ 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, 0x00be, 0x00fe, 0x0005, ++ 0x629d, 0x6258, 0x626f, 0x629d, 0x629d, 0x629d, 0x629d, 0x629d, ++ 0x2100, 0x9082, 0x007e, 0x1278, 0x080c, 0x659e, 0x0148, 0x9046, ++ 0xb810, 0x9306, 0x1904, 0x62a5, 0xb814, 0x9206, 0x15f0, 0x0028, ++ 0xbb12, 0xba16, 0x0010, 0x080c, 0x49b7, 0x0150, 0x04b0, 0x080c, ++ 0x65ff, 0x1598, 0xb810, 0x9306, 0x1580, 0xb814, 0x9206, 0x1568, ++ 0x080c, 0xae0b, 0x0530, 0x2b00, 0x6012, 0x080c, 0xcfaa, 0x2900, ++ 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, 0xa878, 0x9086, 0x0001, ++ 0x1170, 0x080c, 0x31bf, 0x9006, 0x080c, 0x653b, 0x2001, 0x0002, ++ 0x080c, 0x654f, 0x2001, 0x0200, 0xb86e, 0xb893, 0x0002, 0x2009, ++ 0x0003, 0x080c, 0xaedc, 0x9006, 0x0068, 0x2001, 0x0001, 0x900e, ++ 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, 0x0028, 0x900e, ++ 0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, 0x0005, 0x00b6, 0x00f6, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, 0x90c6, 0x0015, 0x0904, ++ 0x648c, 0x90c6, 0x0056, 0x0904, 0x6490, 0x90c6, 0x0066, 0x0904, ++ 0x6494, 0x90c6, 0x0067, 0x0904, 0x6498, 0x90c6, 0x0068, 0x0904, ++ 0x649c, 0x90c6, 0x0071, 0x0904, 0x64a0, 0x90c6, 0x0074, 0x0904, ++ 0x64a4, 0x90c6, 0x007c, 0x0904, 0x64a8, 0x90c6, 0x007e, 0x0904, ++ 0x64ac, 0x90c6, 0x0037, 0x0904, 0x64b0, 0x9016, 0x2079, 0x1800, ++ 0xa974, 0x9186, 0x00ff, 0x0904, 0x6487, 0x9182, 0x0800, 0x1a04, ++ 0x6487, 0x080c, 0x65ff, 0x1198, 0xb804, 0x9084, 0x00ff, 0x9082, ++ 0x0006, 0x1268, 0xa894, 0x90c6, 0x006f, 0x0148, 0x080c, 0xadcb, ++ 0x1904, 0x6470, 0xb8a0, 0x9084, 0xff80, 0x1904, 0x6470, 0xa894, ++ 0x90c6, 0x006f, 0x0158, 0x90c6, 0x005e, 0x0904, 0x63d0, 0x90c6, ++ 0x0064, 0x0904, 0x63f9, 0x2008, 0x0804, 0x6392, 0xa998, 0xa8b0, ++ 0x2040, 0x080c, 0xadcb, 0x1120, 0x9182, 0x007f, 0x0a04, 0x6392, ++ 0x9186, 0x00ff, 0x0904, 0x6392, 0x9182, 0x0800, 0x1a04, 0x6392, ++ 0xaaa0, 0xab9c, 0x787c, 0x9306, 0x1188, 0x7880, 0x0096, 0x924e, ++ 0x1128, 0x2208, 0x2310, 0x009e, 0x0804, 0x6392, 0x99cc, 0xff00, ++ 0x009e, 0x1120, 0x2208, 0x2310, 0x0804, 0x6392, 0x080c, 0x49b7, ++ 0x0904, 0x639c, 0x900e, 0x9016, 0x90c6, 0x4000, 0x15e0, 0x0006, ++ 0x080c, 0x681f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, ++ 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, 0x2098, 0x080c, 0x0f7c, ++ 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0035, 0x20a0, ++ 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f7c, ++ 0xa8c4, 0xabc8, 0x9305, 0xabcc, 0x9305, 0xabd0, 0x9305, 0xabd4, ++ 0x9305, 0xabd8, 0x9305, 0xabdc, 0x9305, 0xabe0, 0x9305, 0x9005, ++ 0x0510, 0x000e, 0x00c8, 0x90c6, 0x4007, 0x1110, 0x2408, 0x00a0, ++ 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0070, 0x90c6, 0x4009, ++ 0x1108, 0x0050, 0x90c6, 0x4006, 0x0138, 0x2001, 0x4005, 0x2009, ++ 0x000a, 0x0010, 0x2001, 0x4006, 0xa896, 0xa99a, 0xaa9e, 0x2001, ++ 0x0030, 0x900e, 0x0478, 0x000e, 0x080c, 0xae0b, 0x1130, 0x2001, ++ 0x4005, 0x2009, 0x0003, 0x9016, 0x0c78, 0x2b00, 0x6012, 0x080c, ++ 0xcfaa, 0x2900, 0x6016, 0x6023, 0x0001, 0xa868, 0xd88c, 0x0108, ++ 0xc0f5, 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x31bf, 0x012e, ++ 0x9006, 0x080c, 0x653b, 0x2001, 0x0002, 0x080c, 0x654f, 0x2009, ++ 0x0002, 0x080c, 0xaedc, 0xa8b0, 0xd094, 0x0118, 0xb8cc, 0xc08d, ++ 0xb8ce, 0x9006, 0x9005, 0x012e, 0x00ee, 0x00fe, 0x00be, 0x0005, ++ 0x080c, 0x56e3, 0x0118, 0x2009, 0x0007, 0x00f8, 0xa998, 0xaeb0, ++ 0x080c, 0x65ff, 0x1904, 0x638d, 0x9186, 0x007f, 0x0130, 0x080c, ++ 0x6972, 0x0118, 0x2009, 0x0009, 0x0080, 0x0096, 0x080c, 0x0fff, ++ 0x1120, 0x009e, 0x2009, 0x0002, 0x0040, 0x2900, 0x009e, 0xa806, ++ 0x080c, 0xcd1b, 0x19b0, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, ++ 0x6394, 0xa998, 0xaeb0, 0x080c, 0x65ff, 0x1904, 0x638d, 0x0096, ++ 0x080c, 0x0fff, 0x1128, 0x009e, 0x2009, 0x0002, 0x0804, 0x644d, ++ 0x2900, 0x009e, 0xa806, 0x0096, 0x2048, 0x20a9, 0x002b, 0xb8c4, ++ 0x20e0, 0xb8c8, 0x2098, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, ++ 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006, 0x20a0, 0xbbc8, ++ 0x9398, 0x0006, 0x2398, 0x080c, 0x0f7c, 0x009e, 0xa87b, 0x0000, ++ 0xa883, 0x0000, 0xa897, 0x4000, 0xd684, 0x1168, 0x080c, 0x56cf, ++ 0xd0b4, 0x1118, 0xa89b, 0x000b, 0x00e0, 0xb800, 0xd08c, 0x0118, ++ 0xa89b, 0x000c, 0x00b0, 0x080c, 0x6972, 0x0118, 0xa89b, 0x0009, ++ 0x0080, 0x080c, 0x56e3, 0x0118, 0xa89b, 0x0007, 0x0050, 0x080c, ++ 0xccfe, 0x1904, 0x63c9, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, ++ 0x6394, 0xa87b, 0x0030, 0xa897, 0x4005, 0xa804, 0x8006, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, ++ 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, ++ 0x1243, 0x080c, 0xb37a, 0x1904, 0x63c9, 0x2009, 0x0002, 0x08e8, ++ 0x2001, 0x0028, 0x900e, 0x0804, 0x63ca, 0x2009, 0x180c, 0x210c, ++ 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, ++ 0x0004, 0x0010, 0x2001, 0x0029, 0x900e, 0x0804, 0x63ca, 0x2001, ++ 0x0029, 0x900e, 0x0804, 0x63ca, 0x080c, 0x3749, 0x0804, 0x63cb, ++ 0x080c, 0x540c, 0x0804, 0x63cb, 0x080c, 0x4547, 0x0804, 0x63cb, ++ 0x080c, 0x45c0, 0x0804, 0x63cb, 0x080c, 0x461c, 0x0804, 0x63cb, ++ 0x080c, 0x4a7a, 0x0804, 0x63cb, 0x080c, 0x4d31, 0x0804, 0x63cb, ++ 0x080c, 0x5077, 0x0804, 0x63cb, 0x080c, 0x5270, 0x0804, 0x63cb, ++ 0x080c, 0x395f, 0x0804, 0x63cb, 0x00b6, 0xa974, 0xae78, 0x9684, ++ 0x3fff, 0x9082, 0x4000, 0x1618, 0x9182, 0x0800, 0x1268, 0x9188, ++ 0x1000, 0x2104, 0x905d, 0x0140, 0x080c, 0x6972, 0x1148, 0x00e9, ++ 0x080c, 0x672a, 0x9006, 0x00b0, 0x2001, 0x0028, 0x900e, 0x0090, ++ 0x9082, 0x0006, 0x1240, 0xb900, 0xd1fc, 0x0d88, 0x2001, 0x0029, ++ 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, ++ 0x0029, 0x900e, 0x9005, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0xb850, 0x900d, 0x0150, 0x2900, 0x0096, 0x2148, 0xa802, 0x009e, ++ 0xa803, 0x0000, 0xb852, 0x012e, 0x0005, 0x2900, 0xb852, 0xb84e, ++ 0xa803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, 0xb84c, 0x9005, ++ 0x0170, 0x00e6, 0x2071, 0x19e7, 0x7004, 0x9086, 0x0002, 0x0168, ++ 0x00ee, 0xb84c, 0xa802, 0x2900, 0xb84e, 0x012e, 0x0005, 0x2900, ++ 0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x701c, 0x9b06, 0x1d80, ++ 0xb84c, 0x00a6, 0x2050, 0xb000, 0xa802, 0x2900, 0xb002, 0x00ae, ++ 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0xb84c, 0x904d, ++ 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, 0xb84e, 0x9905, 0x012e, ++ 0x0005, 0xb84c, 0x904d, 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, ++ 0xb84e, 0x9905, 0x0005, 0x00b6, 0x0126, 0x00c6, 0x0026, 0x2091, ++ 0x8000, 0x6210, 0x2258, 0xba00, 0x9005, 0x0110, 0xc285, 0x0008, ++ 0xc284, 0xba02, 0x002e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, ++ 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, ++ 0x9086, 0x0006, 0x1170, 0xb89c, 0xd0ac, 0x0158, 0x080c, 0x696e, ++ 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007, 0x1110, 0x2011, ++ 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0xba06, 0x0006, 0x9086, ++ 0x0006, 0x1120, 0xba90, 0x82ff, 0x090c, 0x0dd5, 0x000e, 0x00ce, ++ 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, ++ 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006, 0x1168, 0xb89c, ++ 0xd0a4, 0x0150, 0x080c, 0x696a, 0x1138, 0x9284, 0x00ff, 0x9086, ++ 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0x9294, 0x00ff, 0x8007, ++ 0x9215, 0xba06, 0x00ce, 0x012e, 0x00be, 0x0005, 0x9182, 0x0800, ++ 0x0218, 0x9085, 0x0001, 0x0005, 0x00d6, 0x0026, 0x9190, 0x1000, ++ 0x2204, 0x905d, 0x1188, 0x0096, 0x080c, 0x0fff, 0x2958, 0x009e, ++ 0x0168, 0x2b00, 0x2012, 0xb85c, 0xb8ca, 0xb860, 0xb8c6, 0x9006, ++ 0xb8a6, 0xb8ae, 0x080c, 0x6034, 0x9006, 0x0010, 0x9085, 0x0001, ++ 0x002e, 0x00de, 0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, 0x8000, ++ 0x0026, 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0458, 0x00d6, ++ 0x9190, 0x1000, 0x2204, 0x905d, 0x0518, 0x2013, 0x0000, 0xb8a4, ++ 0x904d, 0x0110, 0x080c, 0x1031, 0x00d6, 0x00c6, 0xb8bc, 0x2060, ++ 0x8cff, 0x0168, 0x600c, 0x0006, 0x6014, 0x2048, 0x080c, 0xcb35, ++ 0x0110, 0x080c, 0x0fb1, 0x080c, 0xae61, 0x00ce, 0x0c88, 0x00ce, ++ 0x00de, 0x2b48, 0xb8c8, 0xb85e, 0xb8c4, 0xb862, 0x080c, 0x1041, ++ 0x00de, 0x9006, 0x002e, 0x012e, 0x009e, 0x00be, 0x0005, 0x0016, ++ 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, 0x1000, ++ 0x2104, 0x905d, 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, 0x0156, ++ 0x0136, 0x0146, 0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, 0xb802, ++ 0x080c, 0x73bc, 0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, 0x080c, ++ 0xadcb, 0x11d8, 0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, 0x2061, ++ 0x1982, 0x7048, 0x2062, 0x704c, 0x6006, 0x7050, 0x600a, 0x7054, ++ 0x600e, 0x00ce, 0x703c, 0x2069, 0x0140, 0x9005, 0x1110, 0x2001, ++ 0x0001, 0x6886, 0x2069, 0x1800, 0x68b6, 0x7040, 0xb85e, 0x7048, ++ 0xb862, 0x704c, 0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, 0xb8c4, ++ 0x20e8, 0xb8c8, 0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x4003, ++ 0x2099, 0x027a, 0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, ++ 0x2069, 0x0200, 0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, 0xb96e, ++ 0x7048, 0xb872, 0x7050, 0xb876, 0x2069, 0x0200, 0x6817, 0x0000, ++ 0xb8a0, 0x9086, 0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, 0x0211, ++ 0x1218, 0x2009, 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, ++ 0x0007, 0x00d0, 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, ++ 0x9182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, ++ 0x1218, 0x2009, 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, ++ 0x0003, 0x0010, 0x2009, 0x0002, 0xb992, 0x014e, 0x013e, 0x015e, ++ 0x00de, 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, ++ 0xb896, 0x703c, 0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbcc, 0xc384, ++ 0xba00, 0x2009, 0x1867, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, ++ 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, 0xc2bd, ++ 0xd0cc, 0x0128, 0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, 0xba02, ++ 0xbbce, 0x003e, 0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, 0x0126, ++ 0x2091, 0x8000, 0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, 0x15c0, ++ 0xaa04, 0x9282, 0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, 0x01d6, ++ 0x8906, 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, ++ 0x9080, 0x0004, 0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, 0x4002, ++ 0x9086, 0xffff, 0x0120, 0x8109, 0x1dd0, 0x080c, 0x0dd5, 0x3c00, ++ 0x20e8, 0x3300, 0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, 0x01de, ++ 0x01ce, 0x014e, 0x013e, 0x0060, 0x080c, 0x0fff, 0x0170, 0x2900, ++ 0xb8a6, 0xa803, 0x0000, 0x080c, 0x67bb, 0xa807, 0x0001, 0xae12, ++ 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0126, ++ 0x2091, 0x8000, 0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, 0x9005, ++ 0x1150, 0x080c, 0x67ca, 0x1158, 0xa804, 0x908a, 0x0002, 0x0218, ++ 0x8001, 0xa806, 0x0020, 0x080c, 0x1031, 0xb8a7, 0x0000, 0x009e, ++ 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x910d, 0x012e, ++ 0x0005, 0x901e, 0x0010, 0x2019, 0x0001, 0x900e, 0x0126, 0x2091, ++ 0x8000, 0xb84c, 0x2048, 0xb800, 0xd0dc, 0x1170, 0x89ff, 0x0500, ++ 0x83ff, 0x0120, 0xa878, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, ++ 0x1118, 0xa870, 0x9506, 0x0120, 0x2908, 0xa800, 0x2048, 0x0c70, ++ 0x080c, 0xa692, 0xaa00, 0xb84c, 0x9906, 0x1110, 0xba4e, 0x0020, ++ 0x00a6, 0x2150, 0xb202, 0x00ae, 0x82ff, 0x1110, 0xb952, 0x89ff, ++ 0x012e, 0x0005, 0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, ++ 0x080c, 0x681f, 0x0128, 0x080c, 0xcbf2, 0x0010, 0x9085, 0x0001, ++ 0x0005, 0x080c, 0x681f, 0x0128, 0x080c, 0xcb97, 0x0010, 0x9085, ++ 0x0001, 0x0005, 0x080c, 0x681f, 0x0128, 0x080c, 0xcbef, 0x0010, ++ 0x9085, 0x0001, 0x0005, 0x080c, 0x681f, 0x0128, 0x080c, 0xcbb6, ++ 0x0010, 0x9085, 0x0001, 0x0005, 0x080c, 0x681f, 0x0128, 0x080c, ++ 0xcc33, 0x0010, 0x9085, 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, ++ 0x9085, 0x0001, 0x0005, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, ++ 0x890e, 0x810e, 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, ++ 0x9080, 0x0004, 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, ++ 0x9606, 0x0128, 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, ++ 0x01ce, 0x013e, 0x0005, 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0004, 0x20a0, 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, ++ 0x01de, 0x014e, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, ++ 0x810e, 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, ++ 0x0004, 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, ++ 0x0128, 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, ++ 0x3300, 0x8001, 0x20a0, 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, ++ 0x01de, 0x014e, 0x9006, 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, ++ 0x2091, 0x8000, 0xb8a4, 0x904d, 0x1128, 0x080c, 0x0fff, 0x0168, ++ 0x2900, 0xb8a6, 0x080c, 0x67bb, 0xa803, 0x0001, 0xa807, 0x0000, ++ 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, ++ 0x0126, 0x2091, 0x8000, 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, ++ 0x080c, 0x1031, 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, ++ 0xd0a4, 0x0005, 0x00b6, 0x00f6, 0x080c, 0x73bc, 0x01b0, 0x71c4, ++ 0x81ff, 0x1198, 0x71dc, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, ++ 0x1000, 0x2004, 0x905d, 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, ++ 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x2079, 0x1847, 0x7804, ++ 0xd0a4, 0x01d0, 0x0156, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, ++ 0x65ff, 0x1168, 0xb804, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, ++ 0x0118, 0x9086, 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, ++ 0x8108, 0x1f04, 0x6846, 0x015e, 0x080c, 0x6930, 0x0120, 0x2001, ++ 0x1985, 0x200c, 0x0038, 0x2079, 0x1847, 0x7804, 0xd0a4, 0x0130, ++ 0x2009, 0x07d0, 0x2011, 0x6871, 0x080c, 0x858b, 0x00fe, 0x00be, ++ 0x0005, 0x00b6, 0x2011, 0x6871, 0x080c, 0x84f3, 0x080c, 0x6930, ++ 0x01d8, 0x2001, 0x107e, 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, ++ 0x080c, 0x696e, 0x0130, 0x2009, 0x07d0, 0x2011, 0x6871, 0x080c, ++ 0x858b, 0x00e6, 0x2071, 0x1800, 0x9006, 0x707e, 0x7060, 0x7082, ++ 0x080c, 0x2f96, 0x00ee, 0x04b0, 0x0156, 0x00c6, 0x20a9, 0x007f, ++ 0x900e, 0x0016, 0x080c, 0x65ff, 0x1538, 0xb800, 0xd0ec, 0x0520, ++ 0x0046, 0xbaa0, 0x2220, 0x9006, 0x2009, 0x0029, 0x080c, 0xe5ae, ++ 0xb800, 0xc0e5, 0xc0ec, 0xb802, 0x080c, 0x696a, 0x2001, 0x0707, ++ 0x1128, 0xb804, 0x9084, 0x00ff, 0x9085, 0x0700, 0xb806, 0x2019, ++ 0x0029, 0x080c, 0x928b, 0x0076, 0x903e, 0x080c, 0x9168, 0x900e, ++ 0x080c, 0xe2eb, 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04, 0x6899, ++ 0x00ce, 0x015e, 0x00be, 0x0005, 0x00b6, 0x6010, 0x2058, 0xb800, ++ 0xc0ec, 0xb802, 0x00be, 0x0005, 0x00b6, 0x00c6, 0x0096, 0x080c, ++ 0x1018, 0x090c, 0x0dd5, 0x2958, 0x009e, 0x2001, 0x196b, 0x2b02, ++ 0x8b07, 0x8006, 0x8006, 0x908c, 0x003f, 0xb9c6, 0x908c, 0xffc0, ++ 0xb9ca, 0xb8af, 0x0000, 0x2009, 0x00ff, 0x080c, 0x6034, 0xb807, ++ 0x0006, 0xb813, 0x00ff, 0xb817, 0xffff, 0xb86f, 0x0200, 0xb86c, ++ 0xb893, 0x0002, 0xb8bb, 0x0520, 0xb8a3, 0x00ff, 0xb8af, 0x0000, ++ 0x00ce, 0x00be, 0x0005, 0x7810, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0ac, 0x0005, 0x6010, 0x00b6, 0x905d, 0x0108, 0xb800, 0x00be, ++ 0xd0bc, 0x0005, 0x0006, 0x0016, 0x0026, 0xb804, 0x908c, 0x00ff, ++ 0x9196, 0x0006, 0x0188, 0x9196, 0x0004, 0x0170, 0x9196, 0x0005, ++ 0x0158, 0x908c, 0xff00, 0x810f, 0x9196, 0x0006, 0x0128, 0x9196, ++ 0x0004, 0x0110, 0x9196, 0x0005, 0x002e, 0x001e, 0x000e, 0x0005, ++ 0x00b6, 0x00f6, 0x2001, 0x107e, 0x2004, 0x905d, 0x0110, 0xb800, ++ 0xd0ec, 0x00fe, 0x00be, 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, ++ 0x0006, 0xbaa0, 0x9290, 0x1000, 0x2204, 0x9b06, 0x190c, 0x0dd5, ++ 0x000e, 0xba00, 0x9005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0xba02, ++ 0x002e, 0x012e, 0x0005, 0x2011, 0x1837, 0x2204, 0xd0cc, 0x0138, ++ 0x2001, 0x1983, 0x200c, 0x2011, 0x6960, 0x080c, 0x858b, 0x0005, ++ 0x2011, 0x6960, 0x080c, 0x84f3, 0x2011, 0x1837, 0x2204, 0xc0cc, ++ 0x2012, 0x0005, 0x080c, 0x56cf, 0xd0ac, 0x0005, 0x080c, 0x56cf, ++ 0xd0a4, 0x0005, 0x0016, 0xb904, 0x9184, 0x00ff, 0x908e, 0x0006, ++ 0x001e, 0x0005, 0x0016, 0xb904, 0x9184, 0xff00, 0x8007, 0x908e, ++ 0x0006, 0x001e, 0x0005, 0x00b6, 0x00f6, 0x080c, 0xd230, 0x0158, ++ 0x70dc, 0x9084, 0x0028, 0x0138, 0x2001, 0x107f, 0x2004, 0x905d, ++ 0x0110, 0xb8cc, 0xd094, 0x00fe, 0x00be, 0x0005, 0x2071, 0x1910, ++ 0x7003, 0x0001, 0x7007, 0x0000, 0x9006, 0x7012, 0x7016, 0x701a, ++ 0x701e, 0x700a, 0x7046, 0x2001, 0x1947, 0x2003, 0x0000, 0x0005, ++ 0x0016, 0x00e6, 0x2071, 0x1948, 0x900e, 0x710a, 0x080c, 0x56cf, ++ 0xd0fc, 0x1140, 0x080c, 0x56cf, 0x900e, 0xd09c, 0x0108, 0x8108, ++ 0x7102, 0x00f8, 0x2001, 0x1867, 0x200c, 0x9184, 0x0007, 0x0002, ++ 0x69b2, 0x69b2, 0x69b2, 0x69b2, 0x69b2, 0x69c8, 0x69d6, 0x69b2, ++ 0x7003, 0x0003, 0x2009, 0x1868, 0x210c, 0x9184, 0xff00, 0x8007, ++ 0x9005, 0x1110, 0x2001, 0x0002, 0x7006, 0x0018, 0x7003, 0x0005, ++ 0x0c88, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, 0x0050, 0x684c, ++ 0x9005, 0x1150, 0x00e6, 0x2071, 0x1910, 0x7028, 0xc085, 0x702a, ++ 0x00ee, 0x9085, 0x0001, 0x0488, 0x6844, 0x9005, 0x0158, 0x080c, ++ 0x7716, 0x6a60, 0x9200, 0x7002, 0x6864, 0x9101, 0x7006, 0x9006, ++ 0x7012, 0x7016, 0x6860, 0x7002, 0x6864, 0x7006, 0x6868, 0x700a, ++ 0x686c, 0x700e, 0x6844, 0x9005, 0x1110, 0x7012, 0x7016, 0x684c, ++ 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, 0x7037, 0x0019, 0x702b, ++ 0x0001, 0x00e6, 0x2071, 0x1910, 0x7028, 0xc084, 0x702a, 0x7007, ++ 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006, 0x00ee, 0x0005, 0x00e6, ++ 0x0026, 0x2071, 0x1948, 0x7000, 0x9015, 0x0904, 0x6c86, 0x9286, ++ 0x0003, 0x0904, 0x6b1c, 0x9286, 0x0005, 0x0904, 0x6b1c, 0x2071, ++ 0x1877, 0xa87c, 0x9005, 0x0904, 0x6a7d, 0x7140, 0xa868, 0x9102, ++ 0x0a04, 0x6c86, 0xa878, 0xd084, 0x15d8, 0xa853, 0x0019, 0x2001, ++ 0x8023, 0xa84e, 0x2071, 0x1910, 0x701c, 0x9005, 0x1904, 0x6e28, ++ 0x0e04, 0x6e96, 0x2071, 0x0000, 0xa850, 0x7032, 0xa84c, 0x7082, ++ 0xa870, 0x7086, 0xa86c, 0x708a, 0xa880, 0x708e, 0x7036, 0x0146, ++ 0x01d6, 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, 0x002a, ++ 0xa868, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, ++ 0x4003, 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x0804, 0x6aff, ++ 0xa853, 0x001b, 0x2001, 0x8027, 0x0820, 0x7004, 0xd08c, 0x1904, ++ 0x6c86, 0xa853, 0x001a, 0x2001, 0x8024, 0x0804, 0x6a41, 0x00e6, ++ 0x0026, 0x2071, 0x1948, 0x7000, 0x9015, 0x0904, 0x6c86, 0x9286, ++ 0x0003, 0x0904, 0x6b1c, 0x9286, 0x0005, 0x0904, 0x6b1c, 0xa84f, ++ 0x8022, 0xa853, 0x0018, 0x0804, 0x6ae4, 0xa868, 0xd0fc, 0x11d8, ++ 0x00e6, 0x0026, 0x2001, 0x1948, 0x2004, 0x9005, 0x0904, 0x6c86, ++ 0xa87c, 0xd0bc, 0x1904, 0x6c86, 0xa978, 0xa874, 0x9105, 0x1904, ++ 0x6c86, 0x2001, 0x1948, 0x2004, 0x0002, 0x6c86, 0x6ae0, 0x6b1c, ++ 0x6b1c, 0x6c86, 0x6b1c, 0x0005, 0xa868, 0xd0fc, 0x1500, 0x00e6, ++ 0x0026, 0x2009, 0x1948, 0x210c, 0x81ff, 0x0904, 0x6c86, 0xa87c, ++ 0xd0cc, 0x0904, 0x6c86, 0xa880, 0x9084, 0x00ff, 0x9086, 0x0001, ++ 0x1904, 0x6c86, 0x9186, 0x0003, 0x0904, 0x6b1c, 0x9186, 0x0005, ++ 0x0904, 0x6b1c, 0xa84f, 0x8021, 0xa853, 0x0017, 0x0028, 0x0005, ++ 0xa84f, 0x8020, 0xa853, 0x0016, 0x2071, 0x1910, 0x701c, 0x9005, ++ 0x1904, 0x6e28, 0x0e04, 0x6e96, 0x2071, 0x0000, 0xa84c, 0x7082, ++ 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x2071, ++ 0x1800, 0x2011, 0x0001, 0xa804, 0x900d, 0x702c, 0x1158, 0xa802, ++ 0x2900, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x002e, ++ 0x00ee, 0x0005, 0x0096, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, ++ 0x81ff, 0x1dc8, 0x009e, 0x0c58, 0xa84f, 0x0000, 0x00f6, 0x2079, ++ 0x0050, 0x2071, 0x1910, 0xa803, 0x0000, 0x7010, 0x9005, 0x1904, ++ 0x6c0b, 0x782c, 0x908c, 0x0780, 0x190c, 0x6fe2, 0x8004, 0x8004, ++ 0x8004, 0x9084, 0x0003, 0x0002, 0x6b3a, 0x6c0b, 0x6b5f, 0x6ba6, ++ 0x080c, 0x0dd5, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, ++ 0x1170, 0x2071, 0x19fa, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, ++ 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x0c10, 0x2071, ++ 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1580, 0x7824, 0x00e6, ++ 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009, 0x1830, 0x210c, ++ 0x918a, 0x0020, 0x0218, 0x7022, 0x00ee, 0x0058, 0x00ee, 0x2048, ++ 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, ++ 0x8414, 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd0a4, 0x19f0, ++ 0x2071, 0x19fa, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, 0x2004, ++ 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x0800, 0x0096, 0x00e6, ++ 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, ++ 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8414, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6fe2, 0xd0a4, 0x1d60, 0x00ee, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6fe2, 0xd09c, 0x11a0, 0x009e, 0x2900, 0x7822, 0xa804, ++ 0x900d, 0x1560, 0x2071, 0x19fa, 0x703c, 0x9005, 0x1328, 0x2001, ++ 0x1949, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x009e, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, ++ 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1170, ++ 0x2071, 0x19fa, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, 0x2004, ++ 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, ++ 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, ++ 0x900d, 0x1904, 0x6c60, 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, ++ 0xd09c, 0x1198, 0x701c, 0x904d, 0x0180, 0x7010, 0x8001, 0x7012, ++ 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x6fe2, 0xd09c, 0x0d68, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6fe2, 0xd0a4, 0x01b0, 0x00e6, 0x7824, 0x2048, 0x2071, ++ 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, ++ 0x080c, 0x8414, 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd0a4, ++ 0x1d60, 0x00ee, 0x2071, 0x19fa, 0x703c, 0x9005, 0x1328, 0x2001, ++ 0x1949, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, ++ 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, ++ 0x080c, 0x8414, 0x00ee, 0x0804, 0x6c1b, 0xa868, 0xd0fc, 0x1560, ++ 0x0096, 0xa804, 0xa807, 0x0000, 0x904d, 0x190c, 0x0fb1, 0x009e, ++ 0x0018, 0xa868, 0xd0fc, 0x1500, 0x00e6, 0x0026, 0xa84f, 0x0000, ++ 0x00f6, 0x2079, 0x0050, 0x2071, 0x1910, 0xa803, 0x0000, 0x7010, ++ 0x9005, 0x1904, 0x6da2, 0x782c, 0x908c, 0x0780, 0x190c, 0x6fe2, ++ 0x8004, 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x6ca5, 0x6da2, ++ 0x6cc0, 0x6d31, 0x080c, 0x0dd5, 0x0005, 0x2071, 0x1800, 0x2900, ++ 0x7822, 0xa804, 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x0c60, ++ 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1904, 0x6d20, ++ 0x7830, 0x8007, 0x9084, 0x001f, 0x9082, 0x0005, 0x1220, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, ++ 0xd19c, 0x1148, 0x2009, 0x1830, 0x210c, 0x918a, 0x0020, 0x0218, ++ 0x7022, 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, ++ 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8414, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x6fe2, 0xd0a4, 0x19f0, 0x0e04, 0x6d17, 0x7838, ++ 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, ++ 0x0013, 0x00de, 0x2001, 0x1921, 0x200c, 0xc184, 0x2102, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x2009, ++ 0x1947, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2001, ++ 0x1921, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x0804, ++ 0x6cd3, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, ++ 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8414, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd0a4, 0x1d60, 0x00ee, ++ 0x0e04, 0x6d75, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, ++ 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, ++ 0x2009, 0x1947, 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6fe2, 0xd09c, 0x1170, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, ++ 0x11e0, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, ++ 0x0c58, 0x009e, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1904, 0x6e13, 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd09c, ++ 0x11b0, 0x701c, 0x904d, 0x0198, 0xa84c, 0x9005, 0x1180, 0x7010, ++ 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd09c, 0x0d50, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd0a4, 0x05c8, 0x00e6, 0x7824, ++ 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, ++ 0x8000, 0x70c2, 0x080c, 0x8414, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6fe2, 0xd0a4, 0x1d60, 0x00ee, 0x0e04, 0x6e0c, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x119b, 0x2009, 0x1947, 0x200b, 0x0000, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x00ee, 0x0804, 0x6db2, ++ 0x2071, 0x1910, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012, ++ 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, ++ 0xa804, 0x900d, 0x1128, 0x1e04, 0x6e53, 0x002e, 0x00ee, 0x0005, ++ 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, ++ 0x8414, 0x0e04, 0x6e3d, 0x2071, 0x1910, 0x701c, 0x2048, 0xa84c, ++ 0x900d, 0x0d18, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, ++ 0x7086, 0x7036, 0xa870, 0x708a, 0xa850, 0x9082, 0x0019, 0x1278, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, ++ 0x2071, 0x1910, 0x080c, 0x6fce, 0x002e, 0x00ee, 0x0005, 0xa850, ++ 0x9082, 0x001c, 0x1e68, 0xa880, 0x708e, 0x7036, 0x0146, 0x01d6, ++ 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, 0x002a, 0xa868, ++ 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, 0x4003, ++ 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x0890, 0x2071, 0x1910, ++ 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8414, 0x002e, 0x00ee, 0x0005, ++ 0x0006, 0xa87c, 0x0006, 0xa867, 0x0103, 0x20a9, 0x001c, 0xa860, ++ 0x20e8, 0xa85c, 0x9080, 0x001d, 0x20a0, 0x9006, 0x4004, 0x000e, ++ 0x9084, 0x00ff, 0xa87e, 0x000e, 0xa87a, 0xa982, 0x0005, 0x2071, ++ 0x1910, 0x7004, 0x0002, 0x6ee1, 0x6ee2, 0x6fcd, 0x6ee2, 0x0dd5, ++ 0x6fcd, 0x0005, 0x2001, 0x1948, 0x2004, 0x0002, 0x6eec, 0x6eec, ++ 0x6f66, 0x6f67, 0x6eec, 0x6f67, 0x0126, 0x2091, 0x8000, 0x1e0c, ++ 0x6fed, 0x701c, 0x904d, 0x0508, 0xa84c, 0x9005, 0x0904, 0x6f37, ++ 0x0e04, 0x6f15, 0xa94c, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, ++ 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0xa850, 0x9082, 0x0019, ++ 0x1278, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x119b, 0x2071, 0x1910, 0x080c, 0x6fce, 0x012e, 0x0804, 0x6f65, ++ 0xa850, 0x9082, 0x001c, 0x1e68, 0xa880, 0x708e, 0x7036, 0x0146, ++ 0x01d6, 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, 0x002a, ++ 0xa868, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, ++ 0x4003, 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x0890, 0x2001, ++ 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd09c, 0x2071, ++ 0x1910, 0x1510, 0x2071, 0x1910, 0x700f, 0x0001, 0xa964, 0x9184, ++ 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, ++ 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, ++ 0x2071, 0x1910, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, ++ 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x00d6, ++ 0x2008, 0x2069, 0x19fa, 0x683c, 0x9005, 0x0760, 0x0158, 0x9186, ++ 0x0003, 0x0540, 0x2001, 0x1815, 0x2004, 0x2009, 0x1ac8, 0x210c, ++ 0x9102, 0x1500, 0x0126, 0x2091, 0x8000, 0x2069, 0x0050, 0x693c, ++ 0x6838, 0x9106, 0x0190, 0x0e04, 0x6f99, 0x2069, 0x0000, 0x6837, ++ 0x8040, 0x6833, 0x0012, 0x6883, 0x8040, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x2069, 0x19fa, 0x683f, ++ 0xffff, 0x012e, 0x00de, 0x0126, 0x2091, 0x8000, 0x1e0c, 0x705e, ++ 0x701c, 0x904d, 0x0540, 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, ++ 0x15c9, 0xd09c, 0x1500, 0x2071, 0x1910, 0x700f, 0x0001, 0xa964, ++ 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, ++ 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, ++ 0x00de, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, ++ 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x701c, 0x904d, 0x0160, 0x7010, 0x8001, 0x7012, 0xa800, ++ 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x080c, 0x1031, 0x0005, ++ 0x012e, 0x0005, 0x2091, 0x8000, 0x0e04, 0x6fe4, 0x0006, 0x0016, ++ 0x2001, 0x8004, 0x0006, 0x0804, 0x0dde, 0x0096, 0x00f6, 0x2079, ++ 0x0050, 0x7044, 0xd084, 0x01e0, 0xc084, 0x7046, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x119b, 0x2009, 0x1947, 0x200b, 0x0000, 0x00fe, 0x009e, 0x0005, ++ 0x782c, 0x9094, 0x0780, 0x1971, 0xd0a4, 0x0db8, 0x2009, 0x1947, ++ 0x2104, 0x8000, 0x200a, 0x9082, 0x000f, 0x0e78, 0x00e6, 0x2071, ++ 0x1800, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, ++ 0x2009, 0x1830, 0x210c, 0x918a, 0x0020, 0x0218, 0x7022, 0x00ee, ++ 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, ++ 0x8000, 0x70c2, 0x080c, 0x8414, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6fe2, 0xd0a4, 0x19f0, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, ++ 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x119b, 0x2009, 0x1947, ++ 0x200b, 0x0000, 0x00ee, 0x00fe, 0x009e, 0x0005, 0x00f6, 0x2079, ++ 0x0050, 0x7044, 0xd084, 0x01b8, 0xc084, 0x7046, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x119b, 0x00fe, 0x0005, 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, ++ 0xd0a4, 0x0db8, 0x00e6, 0x2071, 0x1800, 0x7824, 0x2048, 0x702c, ++ 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8414, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6fe2, 0xd0a4, 0x1d70, 0x00d6, ++ 0x2069, 0x0050, 0x693c, 0x2069, 0x1948, 0x6808, 0x690a, 0x2069, ++ 0x19fa, 0x9102, 0x1118, 0x683c, 0x9005, 0x1328, 0x2001, 0x1949, ++ 0x200c, 0x810d, 0x693e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x7098, ++ 0x908a, 0x0029, 0x1a0c, 0x0dd5, 0x9082, 0x001d, 0x001b, 0x6027, ++ 0x1e00, 0x0005, 0x7186, 0x710c, 0x7128, 0x7152, 0x7175, 0x71b5, ++ 0x71c7, 0x7128, 0x719d, 0x70c7, 0x70f5, 0x70c6, 0x0005, 0x00d6, ++ 0x2069, 0x0200, 0x6804, 0x9005, 0x1180, 0x6808, 0x9005, 0x1518, ++ 0x709b, 0x0028, 0x2069, 0x198f, 0x2d04, 0x7002, 0x080c, 0x74f6, ++ 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0, 0x709b, 0x0028, 0x2069, ++ 0x198f, 0x2d04, 0x7002, 0x6028, 0x9085, 0x0600, 0x602a, 0x00e6, ++ 0x0036, 0x0046, 0x0056, 0x2071, 0x1a62, 0x080c, 0x1aa9, 0x005e, ++ 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, ++ 0x6804, 0x9005, 0x1178, 0x6808, 0x9005, 0x1160, 0x709b, 0x0028, ++ 0x2069, 0x198f, 0x2d04, 0x7002, 0x080c, 0x7591, 0x6028, 0x9085, ++ 0x0600, 0x602a, 0x00de, 0x0005, 0x0006, 0x2001, 0x0090, 0x080c, ++ 0x2cef, 0x000e, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x7234, 0xd1d4, ++ 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x709b, 0x0020, 0x080c, ++ 0x7234, 0x0028, 0x709b, 0x001d, 0x0010, 0x709b, 0x001f, 0x0005, ++ 0x2001, 0x0088, 0x080c, 0x2cef, 0x6124, 0xd1cc, 0x11e8, 0xd1dc, ++ 0x11c0, 0xd1e4, 0x1198, 0x9184, 0x1e00, 0x11d8, 0x080c, 0x1ad3, ++ 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x73e8, 0x2001, ++ 0x0080, 0x080c, 0x2cef, 0x709b, 0x0028, 0x0058, 0x709b, 0x001e, ++ 0x0040, 0x709b, 0x001d, 0x0028, 0x709b, 0x0020, 0x0010, 0x709b, ++ 0x001f, 0x0005, 0x080c, 0x1ad3, 0x60e3, 0x0001, 0x600c, 0xc0b4, ++ 0x600e, 0x080c, 0x73e8, 0x2001, 0x0080, 0x080c, 0x2cef, 0x6124, ++ 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, 0x1e00, ++ 0x1158, 0x709b, 0x0028, 0x0040, 0x709b, 0x001e, 0x0028, 0x709b, ++ 0x001d, 0x0010, 0x709b, 0x001f, 0x0005, 0x2001, 0x00a0, 0x080c, ++ 0x2cef, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1ad3, ++ 0x709b, 0x001e, 0x0010, 0x709b, 0x001d, 0x0005, 0x080c, 0x72b7, ++ 0x6124, 0xd1dc, 0x1188, 0x080c, 0x7234, 0x0016, 0x080c, 0x1ad3, ++ 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x709b, 0x001e, 0x0020, ++ 0x709b, 0x001f, 0x080c, 0x7234, 0x0005, 0x0006, 0x2001, 0x00a0, ++ 0x080c, 0x2cef, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, ++ 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x709b, 0x001e, 0x0028, 0x709b, ++ 0x001d, 0x0010, 0x709b, 0x0021, 0x0005, 0x080c, 0x72b7, 0x6124, ++ 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x709b, 0x001e, ++ 0x0028, 0x709b, 0x001d, 0x0010, 0x709b, 0x001f, 0x0005, 0x0006, ++ 0x2001, 0x0090, 0x080c, 0x2cef, 0x000e, 0x6124, 0xd1d4, 0x1178, ++ 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x709b, 0x001e, ++ 0x0040, 0x709b, 0x001d, 0x0028, 0x709b, 0x0020, 0x0010, 0x709b, ++ 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x080c, ++ 0x73bc, 0x11d8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01b0, 0xc1b4, ++ 0x2102, 0x6027, 0x0200, 0x080c, 0x2c38, 0x6024, 0xd0cc, 0x0148, ++ 0x2001, 0x00a0, 0x080c, 0x2cef, 0x080c, 0x76a4, 0x080c, 0x601a, ++ 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x73d6, 0x0150, ++ 0x080c, 0x73cd, 0x1138, 0x2001, 0x0001, 0x080c, 0x27ea, 0x080c, ++ 0x7394, 0x00a0, 0x080c, 0x72b4, 0x0178, 0x2001, 0x0001, 0x080c, ++ 0x27ea, 0x7098, 0x9086, 0x001e, 0x0120, 0x7098, 0x9086, 0x0022, ++ 0x1118, 0x709b, 0x0025, 0x0010, 0x709b, 0x0021, 0x012e, 0x00ee, ++ 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x7245, 0x080c, ++ 0x85cd, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, 0x7245, ++ 0x080c, 0x85c4, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, ++ 0x080c, 0xa273, 0x2071, 0x1800, 0x080c, 0x71e2, 0x001e, 0x00fe, ++ 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x0126, 0x080c, 0xa273, 0x2061, 0x0100, 0x2069, 0x0140, ++ 0x2071, 0x1800, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, 0x2011, ++ 0x0003, 0x080c, 0xa653, 0x2011, 0x0002, 0x080c, 0xa65d, 0x080c, ++ 0xa540, 0x080c, 0x8579, 0x0036, 0x901e, 0x080c, 0xa5b6, 0x003e, ++ 0x60e3, 0x0000, 0x080c, 0xe9e9, 0x080c, 0xea04, 0x2009, 0x0004, ++ 0x080c, 0x2c3e, 0x080c, 0x2b59, 0x2001, 0x1800, 0x2003, 0x0004, ++ 0x6027, 0x0008, 0x2011, 0x7245, 0x080c, 0x85cd, 0x080c, 0x73d6, ++ 0x0118, 0x9006, 0x080c, 0x2cef, 0x080c, 0x0bae, 0x2001, 0x0001, ++ 0x080c, 0x27ea, 0x012e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x0026, 0x00e6, 0x2011, 0x7252, 0x2071, ++ 0x19fa, 0x701c, 0x9206, 0x1118, 0x7018, 0x9005, 0x0110, 0x9085, ++ 0x0001, 0x00ee, 0x002e, 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, ++ 0x9084, 0xfffe, 0x9086, 0x00c0, 0x0170, 0x2001, 0x00c0, 0x080c, ++ 0x2cef, 0x0156, 0x20a9, 0x002d, 0x1d04, 0x72c4, 0x2091, 0x6000, ++ 0x1f04, 0x72c4, 0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x76b3, 0x2001, ++ 0x196d, 0x2003, 0x0000, 0x9006, 0x709a, 0x60e2, 0x6886, 0x080c, ++ 0x28b2, 0x9006, 0x080c, 0x2cef, 0x080c, 0x5ed9, 0x6027, 0xffff, ++ 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2001, ++ 0x197d, 0x200c, 0x9186, 0x0000, 0x0158, 0x9186, 0x0001, 0x0158, ++ 0x9186, 0x0002, 0x0158, 0x9186, 0x0003, 0x0158, 0x0804, 0x7384, ++ 0x709b, 0x0022, 0x0040, 0x709b, 0x0021, 0x0028, 0x709b, 0x0023, ++ 0x0010, 0x709b, 0x0024, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, ++ 0x0001, 0x080c, 0x28b2, 0x0026, 0x080c, 0xadd2, 0x002e, 0x7000, ++ 0x908e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020, ++ 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac, ++ 0x0150, 0x012e, 0x015e, 0x080c, 0xd230, 0x0118, 0x9006, 0x080c, ++ 0x2d19, 0x0804, 0x7390, 0x6800, 0x9084, 0x00a1, 0xc0bd, 0x6802, ++ 0x080c, 0x2c38, 0x6904, 0xd1d4, 0x1140, 0x2001, 0x0100, 0x080c, ++ 0x2cef, 0x1f04, 0x732e, 0x080c, 0x7413, 0x012e, 0x015e, 0x080c, ++ 0x73cd, 0x01a8, 0x6044, 0x9005, 0x0168, 0x6050, 0x0006, 0x9085, ++ 0x0020, 0x6052, 0x080c, 0x7413, 0x9006, 0x8001, 0x1df0, 0x000e, ++ 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x7413, 0x080c, ++ 0xd230, 0x0118, 0x9006, 0x080c, 0x2d19, 0x0016, 0x0026, 0x7000, ++ 0x908e, 0x0004, 0x0130, 0x2009, 0x00c8, 0x2011, 0x7252, 0x080c, ++ 0x858b, 0x002e, 0x001e, 0x080c, 0x840b, 0x7034, 0xc085, 0x7036, ++ 0x2001, 0x197d, 0x2003, 0x0004, 0x080c, 0x70af, 0x080c, 0x73cd, ++ 0x0138, 0x6804, 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, 0x76a9, ++ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x8422, 0x080c, ++ 0x8414, 0x080c, 0x76b3, 0x2001, 0x196d, 0x2003, 0x0000, 0x9006, ++ 0x709a, 0x60e2, 0x6886, 0x080c, 0x28b2, 0x9006, 0x080c, 0x2cef, ++ 0x6043, 0x0090, 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, ++ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006, 0x2001, 0x197c, 0x2004, ++ 0x9086, 0xaaaa, 0x000e, 0x0005, 0x0006, 0x080c, 0x56d3, 0x9084, ++ 0x0030, 0x9086, 0x0000, 0x000e, 0x0005, 0x0006, 0x080c, 0x56d3, ++ 0x9084, 0x0030, 0x9086, 0x0030, 0x000e, 0x0005, 0x0006, 0x080c, ++ 0x56d3, 0x9084, 0x0030, 0x9086, 0x0010, 0x000e, 0x0005, 0x0006, ++ 0x080c, 0x56d3, 0x9084, 0x0030, 0x9086, 0x0020, 0x000e, 0x0005, ++ 0x0036, 0x0016, 0x2001, 0x180c, 0x2004, 0x908c, 0x0013, 0x0180, ++ 0x0020, 0x080c, 0x28d2, 0x900e, 0x0028, 0x080c, 0x696a, 0x1dc8, ++ 0x2009, 0x0002, 0x2019, 0x0028, 0x080c, 0x318a, 0x9006, 0x0019, ++ 0x001e, 0x003e, 0x0005, 0x00e6, 0x2071, 0x180c, 0x2e04, 0x0130, ++ 0x080c, 0xd229, 0x1128, 0x9085, 0x0010, 0x0010, 0x9084, 0xffef, ++ 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, 0x60ec, 0x0006, 0x600c, ++ 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x0016, 0x6138, 0x6050, ++ 0x9084, 0xfbff, 0x9085, 0x2000, 0x6052, 0x613a, 0x20a9, 0x0012, ++ 0x1d04, 0x7428, 0x2091, 0x6000, 0x1f04, 0x7428, 0x602f, 0x0100, ++ 0x602f, 0x0000, 0x6050, 0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, ++ 0x613a, 0x001e, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, ++ 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x60e3, 0x0000, ++ 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x28b2, 0x2001, 0x00a0, ++ 0x0006, 0x080c, 0xd230, 0x000e, 0x0130, 0x080c, 0x2d0d, 0x9006, ++ 0x080c, 0x2d19, 0x0010, 0x080c, 0x2cef, 0x000e, 0x6052, 0x6050, ++ 0x0006, 0xc0e5, 0x6052, 0x00f6, 0x2079, 0x0100, 0x080c, 0x2bad, ++ 0x00fe, 0x000e, 0x6052, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, ++ 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, ++ 0x1800, 0x6020, 0x9084, 0x0080, 0x0138, 0x2001, 0x180c, 0x200c, ++ 0xc1c5, 0x2102, 0x0804, 0x74e8, 0x2001, 0x180c, 0x200c, 0xc1c4, ++ 0x2102, 0x6028, 0x9084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x2001, ++ 0x0090, 0x080c, 0x2cef, 0x20a9, 0x0366, 0x6024, 0xd0cc, 0x1518, ++ 0x1d04, 0x7495, 0x2091, 0x6000, 0x1f04, 0x7495, 0x2011, 0x0003, ++ 0x080c, 0xa653, 0x2011, 0x0002, 0x080c, 0xa65d, 0x080c, 0xa540, ++ 0x901e, 0x080c, 0xa5b6, 0x2001, 0x00a0, 0x080c, 0x2cef, 0x080c, ++ 0x76a4, 0x080c, 0x601a, 0x080c, 0xd230, 0x0110, 0x080c, 0x0d45, ++ 0x9085, 0x0001, 0x0498, 0x86ff, 0x1110, 0x080c, 0x1ad3, 0x60e3, ++ 0x0000, 0x2001, 0x196d, 0x2004, 0x080c, 0x28b2, 0x60e2, 0x2001, ++ 0x0080, 0x080c, 0x2cef, 0x20a9, 0x0366, 0x6027, 0x1e00, 0x2009, ++ 0x1e00, 0x080c, 0x2c38, 0x6024, 0x910c, 0x0138, 0x1d04, 0x74cd, ++ 0x2091, 0x6000, 0x1f04, 0x74cd, 0x0808, 0x6028, 0x9085, 0x1e00, ++ 0x602a, 0x70b4, 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, ++ 0x080c, 0xd230, 0x0110, 0x080c, 0x0d45, 0x9006, 0x00ee, 0x00de, ++ 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, ++ 0x1800, 0x7000, 0x9086, 0x0003, 0x1168, 0x2001, 0x020b, 0x2004, ++ 0x9084, 0x5540, 0x9086, 0x5540, 0x1128, 0x2069, 0x1a79, 0x2d04, ++ 0x8000, 0x206a, 0x2069, 0x0140, 0x6020, 0x9084, 0x00c0, 0x0120, ++ 0x6884, 0x9005, 0x1904, 0x755b, 0x2001, 0x0088, 0x080c, 0x2cef, ++ 0x9006, 0x60e2, 0x6886, 0x080c, 0x28b2, 0x2069, 0x0200, 0x6804, ++ 0x9005, 0x1118, 0x6808, 0x9005, 0x01c0, 0x6028, 0x9084, 0xfbff, ++ 0x602a, 0x6027, 0x0400, 0x2069, 0x198f, 0x7000, 0x206a, 0x709b, ++ 0x0026, 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x753d, 0x2091, ++ 0x6000, 0x1f04, 0x753d, 0x0804, 0x7589, 0x2069, 0x0140, 0x20a9, ++ 0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x2c38, 0x6024, ++ 0x910c, 0x0508, 0x9084, 0x1a00, 0x11f0, 0x1d04, 0x7549, 0x2091, ++ 0x6000, 0x1f04, 0x7549, 0x2011, 0x0003, 0x080c, 0xa653, 0x2011, ++ 0x0002, 0x080c, 0xa65d, 0x080c, 0xa540, 0x901e, 0x080c, 0xa5b6, ++ 0x2001, 0x00a0, 0x080c, 0x2cef, 0x080c, 0x76a4, 0x080c, 0x601a, ++ 0x9085, 0x0001, 0x00b0, 0x2001, 0x0080, 0x080c, 0x2cef, 0x2069, ++ 0x0140, 0x60e3, 0x0000, 0x70b4, 0x9005, 0x1118, 0x6887, 0x0001, ++ 0x0008, 0x6886, 0x2001, 0x196d, 0x2004, 0x080c, 0x28b2, 0x60e2, ++ 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x6020, 0x9084, 0x00c0, 0x01c8, ++ 0x2011, 0x0003, 0x080c, 0xa653, 0x2011, 0x0002, 0x080c, 0xa65d, ++ 0x080c, 0xa540, 0x901e, 0x080c, 0xa5b6, 0x2069, 0x0140, 0x2001, ++ 0x00a0, 0x080c, 0x2cef, 0x080c, 0x76a4, 0x080c, 0x601a, 0x0804, ++ 0x7624, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x1160, 0xc1b5, 0x2102, ++ 0x080c, 0x723a, 0x2069, 0x0140, 0x2001, 0x0080, 0x080c, 0x2cef, ++ 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, ++ 0x9005, 0x0180, 0x6028, 0x9084, 0xfdff, 0x602a, 0x6027, 0x0200, ++ 0x2069, 0x198f, 0x7000, 0x206a, 0x709b, 0x0027, 0x7003, 0x0001, ++ 0x0804, 0x7624, 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x2c38, ++ 0x6024, 0x910c, 0x01c8, 0x9084, 0x1c00, 0x11b0, 0x1d04, 0x75e2, ++ 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x8453, 0x00ee, ++ 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, 0x19fa, 0x7018, ++ 0x00ee, 0x9005, 0x19f8, 0x0500, 0x0026, 0x2011, 0x7252, 0x080c, ++ 0x84f3, 0x2011, 0x7245, 0x080c, 0x85cd, 0x002e, 0x2069, 0x0140, ++ 0x60e3, 0x0000, 0x70b4, 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, ++ 0x6886, 0x2001, 0x196d, 0x2004, 0x080c, 0x28b2, 0x60e2, 0x2001, ++ 0x180c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, ++ 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x080c, ++ 0xd229, 0x1904, 0x7692, 0x7130, 0xd184, 0x1170, 0x080c, 0x3319, ++ 0x0138, 0xc18d, 0x7132, 0x2011, 0x1848, 0x2214, 0xd2ac, 0x1120, ++ 0x7030, 0xd08c, 0x0904, 0x7692, 0x2011, 0x1848, 0x220c, 0xd1a4, ++ 0x0538, 0x0016, 0x2019, 0x000e, 0x080c, 0xe522, 0x0156, 0x00b6, ++ 0x20a9, 0x007f, 0x900e, 0x9186, 0x007e, 0x01a0, 0x9186, 0x0080, ++ 0x0188, 0x080c, 0x65ff, 0x1170, 0x2120, 0x9006, 0x0016, 0x2009, ++ 0x000e, 0x080c, 0xe5ae, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, ++ 0x86dd, 0x001e, 0x8108, 0x1f04, 0x765b, 0x00be, 0x015e, 0x001e, ++ 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, ++ 0x318a, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, ++ 0x080c, 0x65ff, 0x1110, 0x080c, 0x6034, 0x8108, 0x1f04, 0x7688, ++ 0x00be, 0x015e, 0x080c, 0x1ad3, 0x080c, 0xadd2, 0x60e3, 0x0000, ++ 0x080c, 0x601a, 0x080c, 0x72ee, 0x00ee, 0x00ce, 0x004e, 0x003e, ++ 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, 0x197d, 0x2003, 0x0001, ++ 0x0005, 0x2001, 0x197d, 0x2003, 0x0000, 0x0005, 0x2001, 0x197c, ++ 0x2003, 0xaaaa, 0x0005, 0x2001, 0x197c, 0x2003, 0x0000, 0x0005, ++ 0x2071, 0x18fa, 0x7003, 0x0000, 0x7007, 0x0000, 0x080c, 0x1018, ++ 0x090c, 0x0dd5, 0xa8ab, 0xdcb0, 0x2900, 0x704e, 0x080c, 0x1018, ++ 0x090c, 0x0dd5, 0xa8ab, 0xdcb0, 0x2900, 0x7052, 0xa867, 0x0000, ++ 0xa86b, 0x0001, 0xa89f, 0x0000, 0x0005, 0x00e6, 0x2071, 0x0040, ++ 0x6848, 0x9005, 0x1118, 0x9085, 0x0001, 0x04b0, 0x6840, 0x9005, ++ 0x0150, 0x04a1, 0x6a50, 0x9200, 0x7002, 0x6854, 0x9101, 0x7006, ++ 0x9006, 0x7012, 0x7016, 0x6850, 0x7002, 0x6854, 0x7006, 0x6858, ++ 0x700a, 0x685c, 0x700e, 0x6840, 0x9005, 0x1110, 0x7012, 0x7016, ++ 0x6848, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, 0x2001, 0x0019, ++ 0x7036, 0x702b, 0x0001, 0x2001, 0x0004, 0x200c, 0x918c, 0xfff7, ++ 0x918d, 0x8000, 0x2102, 0x00d6, 0x2069, 0x18fa, 0x6807, 0x0001, ++ 0x00de, 0x080c, 0x7c90, 0x9006, 0x00ee, 0x0005, 0x900e, 0x0156, ++ 0x20a9, 0x0006, 0x8003, 0x2011, 0x0100, 0x2214, 0x9296, 0x0008, ++ 0x1110, 0x818d, 0x0010, 0x81f5, 0x3e08, 0x1f04, 0x771a, 0x015e, ++ 0x0005, 0x2079, 0x0040, 0x2071, 0x18fa, 0x7004, 0x0002, 0x7739, ++ 0x773a, 0x7771, 0x77cc, 0x78dc, 0x7737, 0x7737, 0x7906, 0x080c, ++ 0x0dd5, 0x0005, 0x2079, 0x0040, 0x782c, 0x908c, 0x0780, 0x190c, ++ 0x7d72, 0xd0a4, 0x01f0, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, ++ 0xa864, 0x9084, 0x00ff, 0x908a, 0x0040, 0x0608, 0x00b8, 0x2001, ++ 0x1800, 0x200c, 0x9186, 0x0003, 0x1160, 0x7104, 0x9186, 0x0004, ++ 0x0140, 0x9186, 0x0007, 0x0128, 0x9186, 0x0003, 0x19e8, 0x080c, ++ 0x77cc, 0x782c, 0xd09c, 0x090c, 0x7c90, 0x0005, 0x9082, 0x005a, ++ 0x1218, 0x2100, 0x003b, 0x0c18, 0x080c, 0x7802, 0x0c90, 0x00e3, ++ 0x08f0, 0x0005, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7824, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x780e, 0x7802, ++ 0x79f7, 0x7802, 0x7802, 0x7802, 0x7824, 0x7802, 0x780e, 0x7a38, ++ 0x7a79, 0x7ac0, 0x7ad4, 0x7802, 0x7802, 0x7824, 0x780e, 0x7838, ++ 0x7802, 0x78b0, 0x7b7f, 0x7b9a, 0x7802, 0x7824, 0x7802, 0x7838, ++ 0x7802, 0x7802, 0x78a6, 0x7b9a, 0x7802, 0x7802, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x784c, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7802, 0x7d16, ++ 0x7802, 0x7cc0, 0x7802, 0x7cc0, 0x7802, 0x7861, 0x7802, 0x7802, ++ 0x7802, 0x7802, 0x7802, 0x7802, 0x2079, 0x0040, 0x7004, 0x9086, ++ 0x0003, 0x1198, 0x782c, 0x080c, 0x7cb9, 0xd0a4, 0x0170, 0x7824, ++ 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a, ++ 0x001a, 0x1210, 0x002b, 0x0c50, 0x00e9, 0x080c, 0x7c90, 0x0005, ++ 0x7802, 0x780e, 0x79e3, 0x7802, 0x780e, 0x7802, 0x780e, 0x780e, ++ 0x7802, 0x780e, 0x79e3, 0x780e, 0x780e, 0x780e, 0x780e, 0x780e, ++ 0x7802, 0x780e, 0x79e3, 0x7802, 0x7802, 0x780e, 0x7802, 0x7802, ++ 0x7802, 0x780e, 0x00e6, 0x2071, 0x18fa, 0x2009, 0x0400, 0x0071, ++ 0x00ee, 0x0005, 0x2009, 0x1000, 0x0049, 0x0005, 0x2009, 0x2000, ++ 0x0029, 0x0005, 0x2009, 0x0800, 0x0009, 0x0005, 0x7007, 0x0001, ++ 0xa868, 0x9084, 0x00ff, 0x9105, 0xa86a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6c81, 0x012e, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, ++ 0x0d08, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x7985, 0x7007, ++ 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, 0x7985, 0x0005, ++ 0xa864, 0x8007, 0x9084, 0x00ff, 0x0968, 0x8001, 0x1120, 0x7007, ++ 0x0001, 0x0804, 0x79a0, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, ++ 0x701a, 0x704b, 0x79a0, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, ++ 0x0904, 0x780a, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x79bc, ++ 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, 0x79bc, ++ 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, ++ 0x780a, 0x7007, 0x0001, 0x2009, 0x1834, 0x210c, 0x81ff, 0x11a8, ++ 0xa868, 0x9084, 0x00ff, 0xa86a, 0xa883, 0x0000, 0x080c, 0x62ae, ++ 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0xa867, 0x0139, 0xa87a, ++ 0xa982, 0x080c, 0x6c81, 0x012e, 0x0ca0, 0xa994, 0x9186, 0x0071, ++ 0x0d38, 0x9186, 0x0064, 0x0d20, 0x9186, 0x007c, 0x0d08, 0x9186, ++ 0x0028, 0x09f0, 0x9186, 0x0038, 0x09d8, 0x9186, 0x0078, 0x09c0, ++ 0x9186, 0x005f, 0x09a8, 0x9186, 0x0056, 0x0990, 0xa897, 0x4005, ++ 0xa89b, 0x0001, 0x2001, 0x0030, 0x900e, 0x08a0, 0xa87c, 0x9084, ++ 0x00c0, 0x9086, 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x7bb1, ++ 0x2900, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x0030, 0x2098, 0x7050, 0x2040, 0xa060, 0x20e8, 0xa05c, ++ 0x9080, 0x0023, 0x20a0, 0x4003, 0xa888, 0x7012, 0x9082, 0x0401, ++ 0x1a04, 0x7812, 0xaab4, 0x928a, 0x0002, 0x1a04, 0x7812, 0x82ff, ++ 0x1138, 0xa8b8, 0xa9bc, 0x9105, 0x0118, 0x2001, 0x7943, 0x0018, ++ 0x9280, 0x7939, 0x2005, 0x7056, 0x7010, 0x9015, 0x0904, 0x7924, ++ 0x080c, 0x1018, 0x1118, 0x7007, 0x0004, 0x0005, 0x2900, 0x7022, ++ 0x7054, 0x2060, 0xe000, 0xa866, 0x7050, 0x2040, 0xa95c, 0xe004, ++ 0x9100, 0xa076, 0xa860, 0xa072, 0xe008, 0x920a, 0x1210, 0x900e, ++ 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0x9296, 0x0004, 0x0108, ++ 0x9108, 0xa17a, 0x810b, 0xa17e, 0x080c, 0x10e9, 0xa06c, 0x908e, ++ 0x0100, 0x0170, 0x9086, 0x0200, 0x0118, 0x7007, 0x0007, 0x0005, ++ 0x7020, 0x2048, 0x080c, 0x1031, 0x7014, 0x2048, 0x0804, 0x7812, ++ 0x7020, 0x2048, 0x7018, 0xa802, 0xa807, 0x0000, 0x2908, 0x2048, ++ 0xa906, 0x711a, 0x0804, 0x78dc, 0x7014, 0x2048, 0x7007, 0x0001, ++ 0xa8b4, 0x9005, 0x1128, 0xa8b8, 0xa9bc, 0x9105, 0x0108, 0x00b9, ++ 0xa864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x0904, 0x7bb1, 0x0804, ++ 0x7985, 0x793b, 0x793f, 0x0002, 0x001d, 0x0007, 0x0004, 0x000a, ++ 0x001b, 0x0005, 0x0006, 0x000a, 0x001d, 0x0005, 0x0004, 0x0076, ++ 0x0066, 0xafb8, 0xaebc, 0xa804, 0x2050, 0xb0c0, 0xb0e2, 0xb0bc, ++ 0xb0de, 0xb0b8, 0xb0d2, 0xb0b4, 0xb0ce, 0xb6da, 0xb7d6, 0xb0b0, ++ 0xb0ca, 0xb0ac, 0xb0c6, 0xb0a8, 0xb0ba, 0xb0a4, 0xb0b6, 0xb6c2, ++ 0xb7be, 0xb0a0, 0xb0b2, 0xb09c, 0xb0ae, 0xb098, 0xb0a2, 0xb094, ++ 0xb09e, 0xb6aa, 0xb7a6, 0xb090, 0xb09a, 0xb08c, 0xb096, 0xb088, ++ 0xb08a, 0xb084, 0xb086, 0xb692, 0xb78e, 0xb080, 0xb082, 0xb07c, ++ 0xb07e, 0xb078, 0xb072, 0xb074, 0xb06e, 0xb67a, 0xb776, 0xb004, ++ 0x9055, 0x1958, 0x006e, 0x007e, 0x0005, 0x2009, 0x1834, 0x210c, ++ 0x81ff, 0x1178, 0x080c, 0x60ae, 0x1108, 0x0005, 0x080c, 0x6ec0, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xce24, 0x080c, 0x6c81, 0x012e, ++ 0x0ca0, 0x080c, 0xd229, 0x1d70, 0x2001, 0x0028, 0x900e, 0x0c70, ++ 0x2009, 0x1834, 0x210c, 0x81ff, 0x1188, 0xa888, 0x9005, 0x0188, ++ 0xa883, 0x0000, 0x080c, 0x613e, 0x1108, 0x0005, 0xa87a, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x6c81, 0x012e, 0x0cb8, 0x2001, 0x0028, ++ 0x0ca8, 0x2001, 0x0000, 0x0c90, 0x2009, 0x1834, 0x210c, 0x81ff, ++ 0x11d8, 0xa888, 0x9005, 0x01e0, 0xa883, 0x0000, 0xa87c, 0xd0f4, ++ 0x0120, 0x080c, 0x6210, 0x1138, 0x0005, 0x9006, 0xa87a, 0x080c, ++ 0x618b, 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0xa87a, 0xa982, ++ 0x080c, 0x6c81, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x900e, 0x0c98, ++ 0x2001, 0x0000, 0x0c80, 0x7018, 0xa802, 0x2908, 0x2048, 0xa906, ++ 0x711a, 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0003, 0x0030, ++ 0x7014, 0x2048, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x00b6, ++ 0x7007, 0x0001, 0xa974, 0xa878, 0x9084, 0x00ff, 0x9096, 0x0004, ++ 0x0540, 0x20a9, 0x0001, 0x9096, 0x0001, 0x0190, 0x900e, 0x20a9, ++ 0x0800, 0x9096, 0x0002, 0x0160, 0x9005, 0x11d8, 0xa974, 0x080c, ++ 0x65ff, 0x11b8, 0x0066, 0xae80, 0x080c, 0x670f, 0x006e, 0x0088, ++ 0x0046, 0x2011, 0x180c, 0x2224, 0xc484, 0x2412, 0x004e, 0x00c6, ++ 0x080c, 0x65ff, 0x1110, 0x080c, 0x680f, 0x8108, 0x1f04, 0x7a20, ++ 0x00ce, 0xa87c, 0xd084, 0x1120, 0x080c, 0x1031, 0x00be, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, 0x012e, 0x00be, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x696e, 0x0580, ++ 0x2061, 0x1a71, 0x6100, 0xd184, 0x0178, 0xa888, 0x9084, 0x00ff, ++ 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0x9005, 0x1538, 0x6003, ++ 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0xa890, 0x9005, ++ 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0xa888, 0x9084, 0x00ff, ++ 0x0178, 0x6006, 0xa888, 0x8007, 0x9084, 0x00ff, 0x0148, 0x600a, ++ 0xa888, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804, 0x7c7a, ++ 0x012e, 0x0804, 0x7c74, 0x012e, 0x0804, 0x7c6e, 0x012e, 0x0804, ++ 0x7c71, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x696e, ++ 0x05e0, 0x2061, 0x1a71, 0x6000, 0xd084, 0x05b8, 0x6204, 0x6308, ++ 0xd08c, 0x1530, 0xac78, 0x9484, 0x0003, 0x0170, 0xa988, 0x918c, ++ 0x00ff, 0x8001, 0x1120, 0x2100, 0x9210, 0x0620, 0x0028, 0x8001, ++ 0x1508, 0x2100, 0x9212, 0x02f0, 0x9484, 0x000c, 0x0188, 0xa988, ++ 0x810f, 0x918c, 0x00ff, 0x9082, 0x0004, 0x1120, 0x2100, 0x9318, ++ 0x0288, 0x0030, 0x9082, 0x0004, 0x1168, 0x2100, 0x931a, 0x0250, ++ 0xa890, 0x9005, 0x0110, 0x8000, 0x6016, 0x6206, 0x630a, 0x012e, ++ 0x0804, 0x7c7a, 0x012e, 0x0804, 0x7c77, 0x012e, 0x0804, 0x7c74, ++ 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0x1a71, 0x6300, ++ 0xd38c, 0x1120, 0x6308, 0x8318, 0x0220, 0x630a, 0x012e, 0x0804, ++ 0x7c88, 0x012e, 0x0804, 0x7c77, 0x00b6, 0x0126, 0x00c6, 0x2091, ++ 0x8000, 0x7007, 0x0001, 0xa87c, 0xd0ac, 0x0148, 0x00c6, 0x2061, ++ 0x1a71, 0x6000, 0x9084, 0xfcff, 0x6002, 0x00ce, 0x0440, 0xa888, ++ 0x9005, 0x05d8, 0xa88c, 0x9065, 0x0598, 0x2001, 0x1834, 0x2004, ++ 0x9005, 0x0118, 0x080c, 0xae92, 0x0068, 0x6017, 0xf400, 0x605b, ++ 0x0000, 0xa97c, 0xd1a4, 0x0110, 0xa980, 0x615a, 0x2009, 0x0041, ++ 0x080c, 0xaedc, 0xa988, 0x918c, 0xff00, 0x9186, 0x2000, 0x1138, ++ 0x0026, 0x900e, 0x2011, 0xfdff, 0x080c, 0x86dd, 0x002e, 0xa87c, ++ 0xd0c4, 0x0148, 0x2061, 0x1a71, 0x6000, 0xd08c, 0x1120, 0x6008, ++ 0x8000, 0x0208, 0x600a, 0x00ce, 0x012e, 0x00be, 0x0804, 0x7c7a, ++ 0x00ce, 0x012e, 0x00be, 0x0804, 0x7c74, 0xa984, 0x9186, 0x002e, ++ 0x0d30, 0x9186, 0x002d, 0x0d18, 0x9186, 0x0045, 0x0510, 0x9186, ++ 0x002a, 0x1130, 0x2001, 0x180c, 0x200c, 0xc194, 0x2102, 0x08b8, ++ 0x9186, 0x0020, 0x0158, 0x9186, 0x0029, 0x1d10, 0xa974, 0x080c, ++ 0x65ff, 0x1968, 0xb800, 0xc0e4, 0xb802, 0x0848, 0xa88c, 0x9065, ++ 0x09b8, 0x6007, 0x0024, 0x2001, 0x1986, 0x2004, 0x601a, 0x0804, ++ 0x7b0f, 0xa88c, 0x9065, 0x0960, 0x00e6, 0xa890, 0x9075, 0x2001, ++ 0x1834, 0x2004, 0x9005, 0x0150, 0x080c, 0xae92, 0x8eff, 0x0118, ++ 0x2e60, 0x080c, 0xae92, 0x00ee, 0x0804, 0x7b0f, 0x6024, 0xc0dc, ++ 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0xa8a0, 0x9005, 0x0130, ++ 0x6007, 0x003b, 0xa8a4, 0x602e, 0xa8a8, 0x6016, 0x6003, 0x0001, ++ 0x080c, 0x90f0, 0x080c, 0x968d, 0x00ee, 0x0804, 0x7b0f, 0x2061, ++ 0x1a71, 0x6000, 0xd084, 0x0190, 0xd08c, 0x1904, 0x7c88, 0x0126, ++ 0x2091, 0x8000, 0x6204, 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, ++ 0x7c88, 0x012e, 0xa883, 0x0016, 0x0804, 0x7c81, 0xa883, 0x0007, ++ 0x0804, 0x7c81, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0130, 0x8001, ++ 0x1138, 0x7007, 0x0001, 0x0069, 0x0005, 0x080c, 0x780a, 0x0040, ++ 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, 0x7bb1, ++ 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x903e, 0x2061, ++ 0x1800, 0x61d0, 0x81ff, 0x1904, 0x7c33, 0x6130, 0xd194, 0x1904, ++ 0x7c5d, 0xa878, 0x2070, 0x9e82, 0x1cd0, 0x0a04, 0x7c27, 0x6068, ++ 0x9e02, 0x1a04, 0x7c27, 0x7120, 0x9186, 0x0006, 0x1904, 0x7c19, ++ 0x7010, 0x905d, 0x0904, 0x7c33, 0xb800, 0xd0e4, 0x1904, 0x7c57, ++ 0x2061, 0x1a71, 0x6100, 0x9184, 0x0301, 0x9086, 0x0001, 0x15a0, ++ 0x7024, 0xd0dc, 0x1904, 0x7c60, 0xa883, 0x0000, 0xa803, 0x0000, ++ 0x2908, 0x7014, 0x9005, 0x1198, 0x7116, 0xa87c, 0xd0f4, 0x1904, ++ 0x7c63, 0x080c, 0x56cf, 0xd09c, 0x1118, 0xa87c, 0xc0cc, 0xa87e, ++ 0x2e60, 0x080c, 0x85fd, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2048, ++ 0xa800, 0x9005, 0x1de0, 0xa902, 0x2148, 0xa87c, 0xd0f4, 0x1904, ++ 0x7c63, 0x012e, 0x00ee, 0x00be, 0x0005, 0x012e, 0x00ee, 0xa883, ++ 0x0006, 0x00be, 0x0804, 0x7c81, 0xd184, 0x0db8, 0xd1c4, 0x1190, ++ 0x00a0, 0xa974, 0x080c, 0x65ff, 0x15d0, 0xb800, 0xd0e4, 0x15b8, ++ 0x7120, 0x9186, 0x0007, 0x1118, 0xa883, 0x0002, 0x0490, 0xa883, ++ 0x0008, 0x0478, 0xa883, 0x000e, 0x0460, 0xa883, 0x0017, 0x0448, ++ 0xa883, 0x0035, 0x0430, 0x080c, 0x56d3, 0xd0fc, 0x01e8, 0xa878, ++ 0x2070, 0x9e82, 0x1cd0, 0x02c0, 0x6068, 0x9e02, 0x12a8, 0x7120, ++ 0x9186, 0x0006, 0x1188, 0x7010, 0x905d, 0x0170, 0xb800, 0xd0bc, ++ 0x0158, 0x2039, 0x0001, 0x7000, 0x9086, 0x0007, 0x1904, 0x7bbd, ++ 0x7003, 0x0002, 0x0804, 0x7bbd, 0xa883, 0x0028, 0x0010, 0xa883, ++ 0x0029, 0x012e, 0x00ee, 0x00be, 0x0420, 0xa883, 0x002a, 0x0cc8, ++ 0xa883, 0x0045, 0x0cb0, 0x2e60, 0x2019, 0x0002, 0x601b, 0x0014, ++ 0x080c, 0xe134, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2009, 0x003e, ++ 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, 0x2009, ++ 0x0016, 0x0010, 0x2009, 0x0001, 0xa884, 0x9084, 0xff00, 0x9105, ++ 0xa886, 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, 0x012e, 0x0005, ++ 0x080c, 0x1031, 0x0005, 0x00d6, 0x080c, 0x85f4, 0x00de, 0x0005, ++ 0x00d6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x0040, 0x702c, ++ 0xd084, 0x01d8, 0x908c, 0x0780, 0x190c, 0x7d72, 0xd09c, 0x11a8, ++ 0x2071, 0x1800, 0x70c0, 0x90ea, 0x0020, 0x0278, 0x8001, 0x70c2, ++ 0x702c, 0x2048, 0xa800, 0x702e, 0x9006, 0xa802, 0xa806, 0x2071, ++ 0x0040, 0x2900, 0x7022, 0x702c, 0x0c28, 0x012e, 0x00ee, 0x00de, ++ 0x0005, 0x0006, 0x9084, 0x0780, 0x190c, 0x7d72, 0x000e, 0x0005, ++ 0xa898, 0x9084, 0x0003, 0x05a8, 0x080c, 0xae0b, 0x05d8, 0x2900, ++ 0x6016, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0035, 0x1138, 0x6008, ++ 0xc0fd, 0x600a, 0x2001, 0x196b, 0x2004, 0x0098, 0xa8a0, 0x9084, ++ 0x00ff, 0xa99c, 0x918c, 0xff00, 0x9105, 0xa99c, 0x918c, 0x00ff, ++ 0x080c, 0x283e, 0x1540, 0x00b6, 0x080c, 0x65ff, 0x2b00, 0x00be, ++ 0x1510, 0x6012, 0x6023, 0x0001, 0x2009, 0x0040, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0035, 0x0110, 0x2009, 0x0041, 0x080c, 0xaedc, ++ 0x0005, 0xa87b, 0x0101, 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, ++ 0x012e, 0x0005, 0xa87b, 0x002c, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6c81, 0x012e, 0x0005, 0xa87b, 0x0028, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6c81, 0x012e, 0x080c, 0xae61, 0x0005, 0x00d6, 0x00c6, ++ 0x0036, 0x0026, 0x0016, 0x00b6, 0x7007, 0x0001, 0xaa74, 0x9282, ++ 0x0004, 0x1a04, 0x7d63, 0xa97c, 0x9188, 0x1000, 0x2104, 0x905d, ++ 0xb804, 0xd284, 0x0140, 0x05e8, 0x8007, 0x9084, 0x00ff, 0x9084, ++ 0x0006, 0x1108, 0x04b0, 0x2b10, 0x080c, 0xae0b, 0x1118, 0x080c, ++ 0xaeaf, 0x05a8, 0x6212, 0xa874, 0x0002, 0x7d41, 0x7d46, 0x7d49, ++ 0x7d4f, 0x2019, 0x0002, 0x080c, 0xe522, 0x0060, 0x080c, 0xe4be, ++ 0x0048, 0x2019, 0x0002, 0xa980, 0x080c, 0xe4d9, 0x0018, 0xa980, ++ 0x080c, 0xe4be, 0x080c, 0xae61, 0xa887, 0x0000, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x6c81, 0x012e, 0x00be, 0x001e, 0x002e, 0x003e, ++ 0x00ce, 0x00de, 0x0005, 0xa887, 0x0006, 0x0c80, 0xa887, 0x0002, ++ 0x0c68, 0xa887, 0x0005, 0x0c50, 0xa887, 0x0004, 0x0c38, 0xa887, ++ 0x0007, 0x0c20, 0x2091, 0x8000, 0x0e04, 0x7d74, 0x0006, 0x0016, ++ 0x2001, 0x8003, 0x0006, 0x0804, 0x0dde, 0x2001, 0x1834, 0x2004, ++ 0x9005, 0x0005, 0x0005, 0x00f6, 0x2079, 0x0300, 0x2001, 0x0200, ++ 0x200c, 0xc1e5, 0xc1dc, 0x2102, 0x2009, 0x0218, 0x210c, 0xd1ec, ++ 0x1120, 0x080c, 0x157d, 0x00fe, 0x0005, 0x2001, 0x020d, 0x2003, ++ 0x0020, 0x781f, 0x0300, 0x00fe, 0x0005, 0x781c, 0xd08c, 0x0904, ++ 0x7df4, 0x68c0, 0x90aa, 0x0005, 0x0a04, 0x840b, 0x7d44, 0x7c40, ++ 0x9584, 0x00f6, 0x1510, 0x9484, 0x7000, 0x0140, 0x908a, 0x2000, ++ 0x1260, 0x9584, 0x0700, 0x8007, 0x0804, 0x7dfb, 0x7000, 0x9084, ++ 0xff00, 0x9086, 0x8100, 0x0da8, 0x00b0, 0x9484, 0x0fff, 0x1130, ++ 0x7000, 0x9084, 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, 0xe9c1, ++ 0x080c, 0x8300, 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, 0x1118, ++ 0x080c, 0x835e, 0x19c0, 0xd5a4, 0x0148, 0x0046, 0x0056, 0x080c, ++ 0x7e56, 0x080c, 0x2337, 0x005e, 0x004e, 0x0020, 0x080c, 0xe9c1, ++ 0x7817, 0x0140, 0x080c, 0x73bc, 0x0168, 0x2001, 0x0111, 0x2004, ++ 0xd08c, 0x0140, 0x6893, 0x0000, 0x2001, 0x0110, 0x2003, 0x0008, ++ 0x2003, 0x0000, 0x080c, 0x7e37, 0x2001, 0x19f0, 0x2004, 0x9005, ++ 0x090c, 0x968d, 0x0005, 0x0002, 0x7e0d, 0x8122, 0x7e04, 0x7e04, ++ 0x7e04, 0x7e04, 0x7e04, 0x7e04, 0x7817, 0x0140, 0x2001, 0x19f0, ++ 0x2004, 0x9005, 0x090c, 0x968d, 0x0005, 0x7000, 0x908c, 0xff00, ++ 0x9194, 0xf000, 0x810f, 0x9484, 0x0fff, 0x6892, 0x9286, 0x2000, ++ 0x1150, 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x5730, 0x0070, ++ 0x080c, 0x7e76, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, 0x805d, ++ 0x0028, 0x9286, 0x8000, 0x1110, 0x080c, 0x8230, 0x7817, 0x0140, ++ 0x2001, 0x19f0, 0x2004, 0x9005, 0x090c, 0x968d, 0x0005, 0x2001, ++ 0x1810, 0x2004, 0xd08c, 0x0178, 0x2001, 0x1800, 0x2004, 0x9086, ++ 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, ++ 0x4b04, 0x003e, 0x002e, 0x0005, 0x0036, 0x0046, 0x0056, 0x00f6, ++ 0x2079, 0x0200, 0x2019, 0xfffe, 0x7c30, 0x0050, 0x0036, 0x0046, ++ 0x0056, 0x00f6, 0x2079, 0x0200, 0x7d44, 0x7c40, 0x2019, 0xffff, ++ 0x2001, 0x1810, 0x2004, 0xd08c, 0x0160, 0x2001, 0x1800, 0x2004, ++ 0x9086, 0x0003, 0x1130, 0x0026, 0x2011, 0x8048, 0x080c, 0x4b04, ++ 0x002e, 0x00fe, 0x005e, 0x004e, 0x003e, 0x0005, 0x00b6, 0x00c6, ++ 0x7010, 0x9084, 0xff00, 0x8007, 0x9096, 0x0001, 0x0120, 0x9096, ++ 0x0023, 0x1904, 0x802e, 0x9186, 0x0023, 0x15c0, 0x080c, 0x82c5, ++ 0x0904, 0x802e, 0x6120, 0x9186, 0x0001, 0x0150, 0x9186, 0x0004, ++ 0x0138, 0x9186, 0x0008, 0x0120, 0x9186, 0x000a, 0x1904, 0x802e, ++ 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1130, 0x2009, 0x0015, ++ 0x080c, 0xaedc, 0x0804, 0x802e, 0x908e, 0x0214, 0x0118, 0x908e, ++ 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, 0xaedc, 0x0804, 0x802e, ++ 0x908e, 0x0100, 0x1904, 0x802e, 0x7034, 0x9005, 0x1904, 0x802e, ++ 0x2009, 0x0016, 0x080c, 0xaedc, 0x0804, 0x802e, 0x9186, 0x0022, ++ 0x1904, 0x802e, 0x7030, 0x908e, 0x0300, 0x1580, 0x68dc, 0xd0a4, ++ 0x0528, 0xc0b5, 0x68de, 0x7100, 0x918c, 0x00ff, 0x697e, 0x7004, ++ 0x6882, 0x00f6, 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0x9084, ++ 0x00ff, 0x0016, 0x2008, 0x080c, 0x2887, 0x7932, 0x7936, 0x001e, ++ 0x000e, 0x00fe, 0x080c, 0x283e, 0x695e, 0x703c, 0x00e6, 0x2071, ++ 0x0140, 0x7086, 0x2071, 0x1800, 0x70b6, 0x00ee, 0x7034, 0x9005, ++ 0x1904, 0x802e, 0x2009, 0x0017, 0x0804, 0x7fde, 0x908e, 0x0400, ++ 0x1190, 0x7034, 0x9005, 0x1904, 0x802e, 0x080c, 0x73bc, 0x0120, ++ 0x2009, 0x001d, 0x0804, 0x7fde, 0x68dc, 0xc0a5, 0x68de, 0x2009, ++ 0x0030, 0x0804, 0x7fde, 0x908e, 0x0500, 0x1140, 0x7034, 0x9005, ++ 0x1904, 0x802e, 0x2009, 0x0018, 0x0804, 0x7fde, 0x908e, 0x2010, ++ 0x1120, 0x2009, 0x0019, 0x0804, 0x7fde, 0x908e, 0x2110, 0x1120, ++ 0x2009, 0x001a, 0x0804, 0x7fde, 0x908e, 0x5200, 0x1140, 0x7034, ++ 0x9005, 0x1904, 0x802e, 0x2009, 0x001b, 0x0804, 0x7fde, 0x908e, ++ 0x5000, 0x1140, 0x7034, 0x9005, 0x1904, 0x802e, 0x2009, 0x001c, ++ 0x0804, 0x7fde, 0x908e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, ++ 0x7fde, 0x908e, 0x1200, 0x1140, 0x7034, 0x9005, 0x1904, 0x802e, ++ 0x2009, 0x0024, 0x0804, 0x7fde, 0x908c, 0xff00, 0x918e, 0x2400, ++ 0x1170, 0x2009, 0x002d, 0x2001, 0x1810, 0x2004, 0xd09c, 0x0904, ++ 0x7fde, 0x080c, 0xd905, 0x1904, 0x802e, 0x0804, 0x7fdc, 0x908c, ++ 0xff00, 0x918e, 0x5300, 0x1120, 0x2009, 0x002a, 0x0804, 0x7fde, ++ 0x908e, 0x0f00, 0x1120, 0x2009, 0x0020, 0x0804, 0x7fde, 0x908e, ++ 0x6104, 0x1530, 0x2029, 0x0205, 0x2011, 0x026d, 0x8208, 0x2204, ++ 0x9082, 0x0004, 0x8004, 0x8004, 0x20a8, 0x2011, 0x8015, 0x211c, ++ 0x8108, 0x0046, 0x2124, 0x080c, 0x4b04, 0x004e, 0x8108, 0x0f04, ++ 0x7f92, 0x9186, 0x0280, 0x1d88, 0x2504, 0x8000, 0x202a, 0x2009, ++ 0x0260, 0x0c58, 0x202b, 0x0000, 0x2009, 0x0023, 0x0804, 0x7fde, ++ 0x908e, 0x6000, 0x1120, 0x2009, 0x003f, 0x0804, 0x7fde, 0x908e, ++ 0x5400, 0x1138, 0x080c, 0x83bb, 0x1904, 0x802e, 0x2009, 0x0046, ++ 0x04a8, 0x908e, 0x5500, 0x1148, 0x080c, 0x83e3, 0x1118, 0x2009, ++ 0x0041, 0x0460, 0x2009, 0x0042, 0x0448, 0x908e, 0x7800, 0x1118, ++ 0x2009, 0x0045, 0x0418, 0x908e, 0x1000, 0x1118, 0x2009, 0x004e, ++ 0x00e8, 0x908e, 0x6300, 0x1118, 0x2009, 0x004a, 0x00b8, 0x908c, ++ 0xff00, 0x918e, 0x5600, 0x1118, 0x2009, 0x004f, 0x0078, 0x908c, ++ 0xff00, 0x918e, 0x5700, 0x1118, 0x2009, 0x0050, 0x0038, 0x2009, ++ 0x001d, 0x6838, 0xd0d4, 0x0110, 0x2009, 0x004c, 0x0016, 0x2011, ++ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x283e, 0x1904, 0x8031, ++ 0x080c, 0x659e, 0x1904, 0x8031, 0xbe12, 0xbd16, 0x001e, 0x0016, ++ 0x080c, 0x73bc, 0x01c0, 0x68dc, 0xd08c, 0x1148, 0x7000, 0x9084, ++ 0x00ff, 0x1188, 0x7004, 0x9084, 0xff00, 0x1168, 0x0040, 0x687c, ++ 0x9606, 0x1148, 0x6880, 0x9506, 0x9084, 0xff00, 0x1120, 0x9584, ++ 0x00ff, 0xb8c2, 0x0080, 0xb8c0, 0x9005, 0x1168, 0x9186, 0x0046, ++ 0x1150, 0x687c, 0x9606, 0x1138, 0x6880, 0x9506, 0x9084, 0xff00, ++ 0x1110, 0x001e, 0x0098, 0x080c, 0xae0b, 0x01a8, 0x2b08, 0x6112, ++ 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x9186, 0x004c, 0x1110, ++ 0x6023, 0x000a, 0x0016, 0x001e, 0x080c, 0xaedc, 0x00ce, 0x00be, ++ 0x0005, 0x001e, 0x0cd8, 0x2001, 0x180e, 0x2004, 0xd0ec, 0x0120, ++ 0x2011, 0x8049, 0x080c, 0x4b04, 0x080c, 0xaeaf, 0x0d90, 0x2b08, ++ 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x0016, 0x9186, ++ 0x0017, 0x0118, 0x9186, 0x0030, 0x1128, 0x6007, 0x0009, 0x6017, ++ 0x2900, 0x0020, 0x6007, 0x0051, 0x6017, 0x0000, 0x602f, 0x0009, ++ 0x6003, 0x0001, 0x080c, 0x9138, 0x08a0, 0x080c, 0x32e3, 0x1140, ++ 0x7010, 0x9084, 0xff00, 0x8007, 0x908e, 0x0008, 0x1108, 0x0009, ++ 0x0005, 0x00b6, 0x00c6, 0x0046, 0x7000, 0x908c, 0xff00, 0x810f, ++ 0x9186, 0x0033, 0x11e8, 0x080c, 0x82c5, 0x0904, 0x80ba, 0x7124, ++ 0x610a, 0x7030, 0x908e, 0x0200, 0x1140, 0x7034, 0x9005, 0x15d0, ++ 0x2009, 0x0015, 0x080c, 0xaedc, 0x04a8, 0x908e, 0x0100, 0x1590, ++ 0x7034, 0x9005, 0x1578, 0x2009, 0x0016, 0x080c, 0xaedc, 0x0450, ++ 0x9186, 0x0032, 0x1538, 0x7030, 0x908e, 0x1400, 0x1518, 0x2009, ++ 0x0038, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x283e, 0x11b8, 0x080c, 0x659e, 0x11a0, 0xbe12, 0xbd16, 0x080c, ++ 0xae0b, 0x0178, 0x2b08, 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0004, ++ 0x7120, 0x610a, 0x001e, 0x080c, 0xaedc, 0x080c, 0x968d, 0x0010, ++ 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, 0x00b6, 0x0046, ++ 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, 0x11b8, 0x9592, ++ 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, ++ 0x811c, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, 0x0804, 0x811c, ++ 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, 0x2011, 0x0000, ++ 0x2019, 0x1837, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9, 0x0800, ++ 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x077f, 0x2071, ++ 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, 0x11d0, 0x9496, ++ 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, 0x2600, 0x9706, ++ 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, 0x9745, 0x1148, ++ 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, 0x94c6, 0x0080, ++ 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x80f1, 0x82ff, 0x1118, 0x9085, ++ 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, 0x00ee, 0x004e, ++ 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, 0x9184, 0x000f, ++ 0x0002, 0x8139, 0x8139, 0x8139, 0x82d7, 0x8139, 0x8142, 0x816d, ++ 0x81fb, 0x8139, 0x8139, 0x8139, 0x8139, 0x8139, 0x8139, 0x8139, ++ 0x8139, 0x7817, 0x0140, 0x2001, 0x19f0, 0x2004, 0x9005, 0x090c, ++ 0x968d, 0x0005, 0x00b6, 0x7110, 0xd1bc, 0x01e8, 0x7120, 0x2160, ++ 0x9c8c, 0x0007, 0x11c0, 0x9c8a, 0x1cd0, 0x02a8, 0x6868, 0x9c02, ++ 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, ++ 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, 0x610a, 0x2009, ++ 0x0046, 0x080c, 0xaedc, 0x7817, 0x0140, 0x2001, 0x19f0, 0x2004, ++ 0x9005, 0x090c, 0x968d, 0x00be, 0x0005, 0x00b6, 0x00c6, 0x9484, ++ 0x0fff, 0x0904, 0x81d1, 0x7110, 0xd1bc, 0x1904, 0x81d1, 0x7108, ++ 0x700c, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, 0xff00, 0x15b0, ++ 0x81ff, 0x15a0, 0x9080, 0x3325, 0x200d, 0x918c, 0xff00, 0x810f, ++ 0x2001, 0x0080, 0x9106, 0x0904, 0x81d1, 0x080c, 0x659e, 0x1904, ++ 0x81d1, 0xbe12, 0xbd16, 0xb800, 0xd0ec, 0x15d8, 0xba04, 0x9294, ++ 0xff00, 0x9286, 0x0600, 0x11a0, 0x080c, 0xae0b, 0x05e8, 0x2b08, ++ 0x7028, 0x604a, 0x702c, 0x6046, 0x6112, 0x6023, 0x0006, 0x7120, ++ 0x610a, 0x7130, 0x6156, 0x2009, 0x0044, 0x080c, 0xdb63, 0x0408, ++ 0x080c, 0x6972, 0x1138, 0xb807, 0x0606, 0x0c30, 0x190c, 0x80be, ++ 0x11c0, 0x0898, 0x080c, 0xae0b, 0x2b08, 0x0198, 0x6112, 0x6023, ++ 0x0004, 0x7120, 0x610a, 0x9286, 0x0400, 0x1118, 0x6007, 0x0005, ++ 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x9138, 0x080c, ++ 0x968d, 0x7817, 0x0140, 0x2001, 0x19f0, 0x2004, 0x9005, 0x090c, ++ 0x968d, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180e, 0x2004, 0xd0ec, ++ 0x0120, 0x2011, 0x8049, 0x080c, 0x4b04, 0x080c, 0xaeaf, 0x0d48, ++ 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, 0x6156, ++ 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x08b0, 0x00b6, 0x7110, 0xd1bc, 0x01e8, 0x7020, ++ 0x2060, 0x9c84, 0x0007, 0x11c0, 0x9c82, 0x1cd0, 0x02a8, 0x6868, ++ 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, ++ 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, 0x610a, ++ 0x2009, 0x0045, 0x080c, 0xaedc, 0x7817, 0x0140, 0x2001, 0x19f0, ++ 0x2004, 0x9005, 0x090c, 0x968d, 0x00be, 0x0005, 0x6120, 0x9186, ++ 0x0002, 0x0128, 0x9186, 0x0005, 0x0110, 0x9085, 0x0001, 0x0005, ++ 0x080c, 0x32e3, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086, ++ 0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b, ++ 0x0005, 0x8247, 0x8248, 0x8247, 0x8247, 0x82a7, 0x82b6, 0x0005, ++ 0x00b6, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x82a5, ++ 0x700c, 0x7108, 0x080c, 0x283e, 0x1904, 0x82a5, 0x080c, 0x659e, ++ 0x1904, 0x82a5, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, 0x080c, ++ 0x6972, 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, 0x82c5, ++ 0x00ce, 0x05d8, 0x080c, 0xae0b, 0x2b08, 0x05b8, 0x6112, 0x080c, ++ 0xcfaa, 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, ++ 0xaedc, 0x0458, 0x080c, 0x6972, 0x0148, 0x9086, 0x0004, 0x0130, ++ 0x080c, 0x697a, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, 0xae0b, ++ 0x2b08, 0x01d8, 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0005, 0x7120, ++ 0x610a, 0x2009, 0x0088, 0x080c, 0xaedc, 0x0078, 0x080c, 0xae0b, ++ 0x2b08, 0x0158, 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0004, 0x7120, ++ 0x610a, 0x2009, 0x0001, 0x080c, 0xaedc, 0x00be, 0x0005, 0x7110, ++ 0xd1bc, 0x0158, 0x00d1, 0x0148, 0x080c, 0x8226, 0x1130, 0x7124, ++ 0x610a, 0x2009, 0x0089, 0x080c, 0xaedc, 0x0005, 0x7110, 0xd1bc, ++ 0x0158, 0x0059, 0x0148, 0x080c, 0x8226, 0x1130, 0x7124, 0x610a, ++ 0x2009, 0x008a, 0x080c, 0xaedc, 0x0005, 0x7020, 0x2060, 0x9c84, ++ 0x0007, 0x1158, 0x9c82, 0x1cd0, 0x0240, 0x2001, 0x181a, 0x2004, ++ 0x9c02, 0x1218, 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x00b6, ++ 0x7110, 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84, 0x0007, 0x11b0, ++ 0x9c82, 0x1cd0, 0x0298, 0x6868, 0x9c02, 0x1280, 0x7008, 0x9084, ++ 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1140, 0x700c, 0xb914, ++ 0x9106, 0x1120, 0x2009, 0x0051, 0x080c, 0xaedc, 0x7817, 0x0140, ++ 0x2001, 0x19f0, 0x2004, 0x9005, 0x090c, 0x968d, 0x00be, 0x0005, ++ 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, ++ 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, ++ 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000, 0x9086, 0xc000, ++ 0x05d0, 0x080c, 0xae0b, 0x05b8, 0x0066, 0x00c6, 0x0046, 0x2011, ++ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x283e, 0x15a0, 0x080c, ++ 0x659e, 0x1588, 0xbe12, 0xbd16, 0x2b00, 0x004e, 0x00ce, 0x6012, ++ 0x080c, 0xcfaa, 0x080c, 0x0fff, 0x0510, 0x2900, 0x605a, 0x9006, ++ 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b, 0x20a9, 0x000e, ++ 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98, 0x4003, 0x006e, ++ 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003, 0x0001, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x00fe, 0x009e, 0x00ce, 0x0005, 0x080c, ++ 0xae61, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x00c6, 0x7000, ++ 0x908c, 0xff00, 0x9184, 0xf000, 0x810f, 0x9086, 0x2000, 0x1904, ++ 0x83b5, 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111, 0x2004, 0x9005, ++ 0x1904, 0x83b7, 0x7030, 0x908e, 0x0400, 0x0904, 0x83b7, 0x908e, ++ 0x6000, 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e, 0x0300, 0x11d8, ++ 0x2009, 0x1837, 0x210c, 0xd18c, 0x1590, 0xd1a4, 0x1580, 0x080c, ++ 0x6930, 0x0558, 0x68b0, 0x9084, 0x00ff, 0x7100, 0x918c, 0x00ff, ++ 0x9106, 0x1518, 0x6880, 0x69b0, 0x918c, 0xff00, 0x9105, 0x7104, ++ 0x9106, 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c, 0xd1b4, 0x11a8, ++ 0x908e, 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0, 0x908e, 0x5000, ++ 0x09b8, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c, 0x82c5, 0x0128, ++ 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006, 0x0010, 0x9085, ++ 0x0001, 0x00ce, 0x0005, 0x0156, 0x0046, 0x0016, 0x0036, 0x7038, ++ 0x2020, 0x8427, 0x94a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0004, ++ 0x2019, 0x1805, 0x2011, 0x027a, 0x080c, 0xbe09, 0x1178, 0xd48c, ++ 0x0148, 0x20a9, 0x0004, 0x2019, 0x1801, 0x2011, 0x027e, 0x080c, ++ 0xbe09, 0x1120, 0xd494, 0x0110, 0x9085, 0x0001, 0x003e, 0x001e, ++ 0x004e, 0x015e, 0x0005, 0x0156, 0x0046, 0x0016, 0x0036, 0x7038, ++ 0x2020, 0x8427, 0x94a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0004, ++ 0x2019, 0x1805, 0x2011, 0x0272, 0x080c, 0xbe09, 0x1178, 0xd48c, ++ 0x0148, 0x20a9, 0x0004, 0x2019, 0x1801, 0x2011, 0x0276, 0x080c, ++ 0xbe09, 0x1120, 0xd494, 0x0110, 0x9085, 0x0001, 0x003e, 0x001e, ++ 0x004e, 0x015e, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7800, 0xc0e5, ++ 0xc0cc, 0x7802, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x1800, 0x7834, ++ 0xd084, 0x1130, 0x2079, 0x0200, 0x7800, 0x9085, 0x1200, 0x7802, ++ 0x00fe, 0x0005, 0x00e6, 0x2071, 0x1800, 0x7034, 0xc084, 0x7036, ++ 0x00ee, 0x0005, 0x2071, 0x19fa, 0x7003, 0x0003, 0x700f, 0x0361, ++ 0x9006, 0x701a, 0x7072, 0x7012, 0x7017, 0x1cd0, 0x7007, 0x0000, ++ 0x7026, 0x702b, 0xa289, 0x7032, 0x7037, 0xa2f7, 0x703f, 0xffff, ++ 0x7042, 0x7047, 0x556e, 0x704a, 0x705b, 0x8594, 0x080c, 0x1018, ++ 0x090c, 0x0dd5, 0x2900, 0x703a, 0xa867, 0x0003, 0xa86f, 0x0100, ++ 0xa8ab, 0xdcb0, 0x0005, 0x2071, 0x19fa, 0x1d04, 0x84e2, 0x2091, ++ 0x6000, 0x700c, 0x8001, 0x700e, 0x1530, 0x2001, 0x013c, 0x2004, ++ 0x9005, 0x190c, 0x85d9, 0x2001, 0x1869, 0x2004, 0xd0c4, 0x0158, ++ 0x3a00, 0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, 0x0001, 0x20d1, ++ 0x0000, 0x080c, 0x0dd5, 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, ++ 0x2091, 0x8000, 0x7040, 0x900d, 0x0148, 0x8109, 0x7142, 0x1130, ++ 0x7044, 0x080f, 0x0018, 0x0126, 0x2091, 0x8000, 0x7024, 0x900d, ++ 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, 0x7023, 0x0009, 0x8109, ++ 0x7126, 0x9186, 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff, 0x1110, ++ 0x7028, 0x080f, 0x7030, 0x900d, 0x0180, 0x702c, 0x8001, 0x702e, ++ 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, 0x0128, 0x9184, 0x007f, ++ 0x090c, 0xa418, 0x0010, 0x7034, 0x080f, 0x703c, 0x9005, 0x0118, ++ 0x0310, 0x8001, 0x703e, 0x704c, 0x900d, 0x0168, 0x7048, 0x8001, ++ 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e, 0x1120, 0x7150, ++ 0x714e, 0x7058, 0x080f, 0x7018, 0x900d, 0x01d8, 0x0016, 0x7070, ++ 0x900d, 0x0158, 0x706c, 0x8001, 0x706e, 0x1138, 0x706f, 0x0009, ++ 0x8109, 0x7172, 0x1110, 0x7074, 0x080f, 0x001e, 0x7008, 0x8001, ++ 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, ++ 0x080f, 0x012e, 0x7004, 0x0002, 0x850a, 0x850b, 0x8527, 0x00e6, ++ 0x2071, 0x19fa, 0x7018, 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, ++ 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x19fa, 0x701c, ++ 0x9206, 0x1120, 0x701a, 0x701e, 0x7072, 0x7076, 0x000e, 0x00ee, ++ 0x0005, 0x00e6, 0x2071, 0x19fa, 0xb888, 0x9102, 0x0208, 0xb98a, ++ 0x00ee, 0x0005, 0x0005, 0x00b6, 0x7110, 0x080c, 0x65ff, 0x1168, ++ 0xb888, 0x8001, 0x0250, 0xb88a, 0x1140, 0x0126, 0x2091, 0x8000, ++ 0x0016, 0x080c, 0x968d, 0x001e, 0x012e, 0x8108, 0x9182, 0x0800, ++ 0x0218, 0x900e, 0x7007, 0x0002, 0x7112, 0x00be, 0x0005, 0x7014, ++ 0x2060, 0x0126, 0x2091, 0x8000, 0x6040, 0x9005, 0x0128, 0x8001, ++ 0x6042, 0x1110, 0x080c, 0xce3b, 0x6018, 0x9005, 0x0558, 0x8001, ++ 0x601a, 0x1540, 0x6120, 0x9186, 0x0003, 0x0148, 0x9186, 0x0006, ++ 0x0130, 0x9186, 0x0009, 0x11e0, 0x611c, 0xd1c4, 0x1100, 0x080c, ++ 0xcb35, 0x01b0, 0x6014, 0x2048, 0xa884, 0x908a, 0x199a, 0x0280, ++ 0x9082, 0x1999, 0xa886, 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, ++ 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, 0xd0e4, 0x0110, ++ 0x080c, 0xc833, 0x012e, 0x9c88, 0x0018, 0x7116, 0x2001, 0x181a, ++ 0x2004, 0x9102, 0x0220, 0x7017, 0x1cd0, 0x7007, 0x0000, 0x0005, ++ 0x00e6, 0x2071, 0x19fa, 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, ++ 0x0005, 0x2001, 0x1a03, 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, ++ 0x19fa, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, 0x2011, 0x1a06, ++ 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0x19fa, 0x711a, 0x721e, ++ 0x700b, 0x0009, 0x00ee, 0x0005, 0x0086, 0x0026, 0x7054, 0x8000, ++ 0x7056, 0x2001, 0x1a08, 0x2044, 0xa06c, 0x9086, 0x0000, 0x0150, ++ 0x7068, 0xa09a, 0x7064, 0xa096, 0x7060, 0xa092, 0x705c, 0xa08e, ++ 0x080c, 0x10e9, 0x002e, 0x008e, 0x0005, 0x0006, 0x0016, 0x0096, ++ 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, ++ 0x8453, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, ++ 0x009e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0x19fa, 0x7172, ++ 0x7276, 0x706f, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, ++ 0x19fa, 0x7074, 0x9206, 0x1110, 0x7072, 0x7076, 0x000e, 0x00ee, ++ 0x0005, 0x0016, 0x00c6, 0x2009, 0xfffc, 0x210d, 0x2061, 0x0100, ++ 0x60f0, 0x9100, 0x60f3, 0x0000, 0x2009, 0xfffc, 0x200f, 0x1220, ++ 0x8108, 0x2105, 0x8000, 0x200f, 0x00ce, 0x001e, 0x0005, 0x00c6, ++ 0x2061, 0x1a71, 0x00ce, 0x0005, 0x9184, 0x000f, 0x8003, 0x8003, ++ 0x8003, 0x9080, 0x1a71, 0x2060, 0x0005, 0xa884, 0x908a, 0x199a, ++ 0x1638, 0x9005, 0x1150, 0x00c6, 0x2061, 0x1a71, 0x6014, 0x00ce, ++ 0x9005, 0x1130, 0x2001, 0x001e, 0x0018, 0x908e, 0xffff, 0x01b0, ++ 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, 0x908c, 0x00c0, ++ 0x918e, 0x00c0, 0x0904, 0x8687, 0xd0b4, 0x1168, 0xd0bc, 0x1904, ++ 0x8660, 0x2009, 0x0006, 0x080c, 0x86b4, 0x0005, 0x900e, 0x0c60, ++ 0x2001, 0x1999, 0x08b0, 0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, ++ 0x918e, 0x0003, 0x1904, 0x86ae, 0x908c, 0x2020, 0x918e, 0x2020, ++ 0x01a8, 0x6024, 0xd0d4, 0x11e8, 0x2009, 0x1869, 0x2104, 0xd084, ++ 0x1138, 0x87ff, 0x1120, 0x2009, 0x0043, 0x0804, 0xaedc, 0x0005, ++ 0x87ff, 0x1de8, 0x2009, 0x0042, 0x0804, 0xaedc, 0x6110, 0x00b6, ++ 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6024, 0xc0cd, 0x6026, ++ 0x0c00, 0xc0d4, 0x6026, 0xa890, 0x602e, 0xa88c, 0x6032, 0x08e0, ++ 0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, ++ 0x86ae, 0x908c, 0x2020, 0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, ++ 0x2c78, 0x080c, 0x1725, 0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, ++ 0x0042, 0x080c, 0xaedc, 0x0005, 0x6110, 0x00b6, 0x2158, 0xb900, ++ 0x00be, 0xd1ac, 0x0d58, 0x6124, 0xc1cd, 0x6126, 0x0c38, 0xd0fc, ++ 0x0188, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, ++ 0x908e, 0x0002, 0x0148, 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, ++ 0xaedc, 0x0005, 0x00b9, 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, ++ 0x080c, 0xaedc, 0x0cb0, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, ++ 0xd1ac, 0x0d20, 0x6124, 0xc1cd, 0x6126, 0x0c00, 0x2009, 0x0004, ++ 0x0019, 0x0005, 0x2009, 0x0001, 0x0096, 0x080c, 0xcb35, 0x0518, ++ 0x6014, 0x2048, 0xa982, 0xa800, 0x6016, 0x9186, 0x0001, 0x1188, ++ 0xa97c, 0x918c, 0x8100, 0x918e, 0x8100, 0x1158, 0x00c6, 0x2061, ++ 0x1a71, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, ++ 0x00ce, 0x080c, 0x6abc, 0x6014, 0x904d, 0x0076, 0x2039, 0x0000, ++ 0x190c, 0x85fd, 0x007e, 0x009e, 0x0005, 0x0156, 0x00c6, 0x2061, ++ 0x1a71, 0x6000, 0x81ff, 0x0110, 0x9205, 0x0008, 0x9204, 0x6002, ++ 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808, 0x9005, ++ 0x0120, 0x8001, 0x680a, 0x9085, 0x0001, 0x0005, 0x2071, 0x1923, ++ 0x7003, 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, 0x7013, 0x0001, ++ 0x080c, 0x1018, 0x090c, 0x0dd5, 0xa867, 0x0006, 0xa86b, 0x0001, ++ 0xa8ab, 0xdcb0, 0xa89f, 0x0000, 0x2900, 0x702e, 0x7033, 0x0000, ++ 0x0005, 0x0096, 0x00e6, 0x2071, 0x1923, 0x702c, 0x2048, 0x6a2c, ++ 0x721e, 0x6b30, 0x7322, 0x6834, 0x7026, 0xa896, 0x6838, 0x702a, ++ 0xa89a, 0x6824, 0x7016, 0x683c, 0x701a, 0x2009, 0x0028, 0x200a, ++ 0x9005, 0x0148, 0x900e, 0x9188, 0x000c, 0x8001, 0x1de0, 0x2100, ++ 0x9210, 0x1208, 0x8318, 0xaa8e, 0xab92, 0x7010, 0xd084, 0x0178, ++ 0xc084, 0x7007, 0x0001, 0x700f, 0x0000, 0x0006, 0x2009, 0x181d, ++ 0x2104, 0x9082, 0x0007, 0x2009, 0x1ac8, 0x200a, 0x000e, 0xc095, ++ 0x7012, 0x2008, 0x2001, 0x003b, 0x080c, 0x15ee, 0x9006, 0x2071, ++ 0x193c, 0x7002, 0x7006, 0x702a, 0x00ee, 0x009e, 0x0005, 0x00e6, ++ 0x0126, 0x0156, 0x2091, 0x8000, 0x2071, 0x1800, 0x7154, 0x2001, ++ 0x0008, 0x910a, 0x0638, 0x2001, 0x187d, 0x20ac, 0x9006, 0x9080, ++ 0x0008, 0x1f04, 0x8767, 0x71c0, 0x9102, 0x02e0, 0x2071, 0x1877, ++ 0x20a9, 0x0007, 0x00c6, 0x080c, 0xae0b, 0x6023, 0x0009, 0x6003, ++ 0x0004, 0x601f, 0x0101, 0x0089, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x88ed, 0x012e, 0x1f04, 0x8773, 0x9006, 0x00ce, 0x015e, 0x012e, ++ 0x00ee, 0x0005, 0x9085, 0x0001, 0x0cc8, 0x00e6, 0x00b6, 0x0096, ++ 0x0086, 0x0056, 0x0046, 0x0026, 0x7118, 0x720c, 0x7620, 0x7004, ++ 0xd084, 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, 0x0020, 0x2021, ++ 0x002c, 0x2029, 0x000a, 0x080c, 0x0fff, 0x090c, 0x0dd5, 0x2900, ++ 0x6016, 0x2058, 0xac66, 0x9006, 0xa802, 0xa806, 0xa86a, 0xa87a, ++ 0xa8aa, 0xa887, 0x0005, 0xa87f, 0x0020, 0x7008, 0xa89a, 0x7010, ++ 0xa89e, 0xae8a, 0xa8af, 0xffff, 0xa8b3, 0x0000, 0x8109, 0x0160, ++ 0x080c, 0x0fff, 0x090c, 0x0dd5, 0xad66, 0x2b00, 0xa802, 0x2900, ++ 0xb806, 0x2058, 0x8109, 0x1da0, 0x002e, 0x004e, 0x005e, 0x008e, ++ 0x009e, 0x00be, 0x00ee, 0x0005, 0x2079, 0x0000, 0x2071, 0x1923, ++ 0x7004, 0x004b, 0x700c, 0x0002, 0x87df, 0x87d8, 0x87d8, 0x0005, ++ 0x87e9, 0x884a, 0x884a, 0x884a, 0x884b, 0x885c, 0x885c, 0x700c, ++ 0x0cba, 0x0126, 0x2091, 0x8000, 0x78a0, 0x79a0, 0x9106, 0x0128, ++ 0x78a0, 0x79a0, 0x9106, 0x1904, 0x883d, 0x2001, 0x0005, 0x2004, ++ 0xd0bc, 0x0130, 0x2011, 0x0004, 0x2204, 0xc0c5, 0x2012, 0x0ca8, ++ 0x012e, 0x7018, 0x910a, 0x1130, 0x7030, 0x9005, 0x05a8, 0x080c, ++ 0x888b, 0x0490, 0x1210, 0x7114, 0x910a, 0x9192, 0x000a, 0x0210, ++ 0x2009, 0x000a, 0x2001, 0x1888, 0x2014, 0x2001, 0x1935, 0x2004, ++ 0x9100, 0x9202, 0x0e48, 0x080c, 0x89d7, 0x2200, 0x9102, 0x0208, ++ 0x2208, 0x0096, 0x702c, 0x2048, 0xa873, 0x0001, 0xa976, 0x080c, ++ 0x8ae0, 0x2100, 0xa87e, 0xa86f, 0x0000, 0x009e, 0x0126, 0x2091, ++ 0x8000, 0x2009, 0x1a18, 0x2104, 0xc085, 0x200a, 0x700f, 0x0002, ++ 0x012e, 0x080c, 0x1108, 0x1de8, 0x0005, 0x2001, 0x0005, 0x2004, ++ 0xd0bc, 0x0130, 0x2011, 0x0004, 0x2204, 0xc0c5, 0x2012, 0x0ca8, ++ 0x012e, 0x0005, 0x0005, 0x700c, 0x0002, 0x8850, 0x8853, 0x8852, ++ 0x080c, 0x87e7, 0x0005, 0x8001, 0x700e, 0x0096, 0x702c, 0x2048, ++ 0xa974, 0x009e, 0x0011, 0x0ca0, 0x0005, 0x0096, 0x702c, 0x2048, ++ 0x7018, 0x9100, 0x7214, 0x921a, 0x1130, 0x701c, 0xa88e, 0x7020, ++ 0xa892, 0x9006, 0x0068, 0x0006, 0x080c, 0x8ae0, 0x2100, 0xaa8c, ++ 0x9210, 0xaa8e, 0x1220, 0xa890, 0x9081, 0x0000, 0xa892, 0x000e, ++ 0x009e, 0x2f08, 0x9188, 0x0028, 0x200a, 0x701a, 0x0005, 0x00e6, ++ 0x2071, 0x1923, 0x700c, 0x0002, 0x8889, 0x8889, 0x8887, 0x700f, ++ 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x7030, 0x9005, ++ 0x0508, 0x2078, 0x7814, 0x2048, 0xae88, 0x00b6, 0x2059, 0x0000, ++ 0x080c, 0x88f6, 0x00be, 0x01b0, 0x00e6, 0x2071, 0x193c, 0x080c, ++ 0x893d, 0x00ee, 0x0178, 0x0096, 0x080c, 0x1018, 0x2900, 0x009e, ++ 0x0148, 0xa8aa, 0x04b9, 0x0041, 0x2001, 0x1946, 0x2003, 0x0000, ++ 0x012e, 0x08c8, 0x012e, 0x0005, 0x00d6, 0x00c6, 0x0086, 0x00a6, ++ 0x2940, 0x2650, 0x2600, 0x9005, 0x0180, 0xa864, 0x9084, 0x000f, ++ 0x2068, 0x9d88, 0x2090, 0x2165, 0x0056, 0x2029, 0x0000, 0x080c, ++ 0x8a65, 0x080c, 0x2048, 0x1dd8, 0x005e, 0x00ae, 0x2001, 0x187f, ++ 0x2004, 0xa88a, 0x080c, 0x1725, 0x781f, 0x0101, 0x7813, 0x0000, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x894c, 0x012e, 0x008e, 0x00ce, ++ 0x00de, 0x0005, 0x7030, 0x9005, 0x0138, 0x2078, 0x780c, 0x7032, ++ 0x2001, 0x1946, 0x2003, 0x0001, 0x0005, 0x00e6, 0x2071, 0x1923, ++ 0x7030, 0x600e, 0x2c00, 0x7032, 0x00ee, 0x0005, 0x00d6, 0x00c6, ++ 0x0026, 0x9b80, 0x8bbf, 0x2005, 0x906d, 0x090c, 0x0dd5, 0x9b80, ++ 0x8bb7, 0x2005, 0x9065, 0x090c, 0x0dd5, 0x6114, 0x2600, 0x9102, ++ 0x0248, 0x6828, 0x9102, 0x02f0, 0x9085, 0x0001, 0x002e, 0x00ce, ++ 0x00de, 0x0005, 0x6804, 0xd094, 0x0148, 0x6854, 0xd084, 0x1178, ++ 0xc085, 0x6856, 0x2011, 0x8026, 0x080c, 0x4b04, 0x684c, 0x0096, ++ 0x904d, 0x090c, 0x0dd5, 0xa804, 0x8000, 0xa806, 0x009e, 0x9006, ++ 0x2030, 0x0c20, 0x6854, 0xd08c, 0x1d08, 0xc08d, 0x6856, 0x2011, ++ 0x8025, 0x080c, 0x4b04, 0x684c, 0x0096, 0x904d, 0x090c, 0x0dd5, ++ 0xa800, 0x8000, 0xa802, 0x009e, 0x0888, 0x7000, 0x2019, 0x0008, ++ 0x8319, 0x7104, 0x9102, 0x1118, 0x2300, 0x9005, 0x0020, 0x0210, ++ 0x9302, 0x0008, 0x8002, 0x0005, 0x00d6, 0x7814, 0x9005, 0x090c, ++ 0x0dd5, 0x781c, 0x9084, 0x0101, 0x9086, 0x0101, 0x190c, 0x0dd5, ++ 0x2069, 0x193c, 0x6804, 0x9080, 0x193e, 0x2f08, 0x2102, 0x6904, ++ 0x8108, 0x9182, 0x0008, 0x0208, 0x900e, 0x6906, 0x9180, 0x193e, ++ 0x2003, 0x0000, 0x00de, 0x0005, 0x0096, 0x00c6, 0x2060, 0x6014, ++ 0x2048, 0xa8a8, 0x0096, 0x2048, 0x9005, 0x190c, 0x1031, 0x009e, ++ 0xa8ab, 0x0000, 0x080c, 0x0fb1, 0x080c, 0xae61, 0x00ce, 0x009e, ++ 0x0005, 0x6020, 0x9086, 0x0009, 0x1128, 0x601c, 0xd0c4, 0x0110, ++ 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x6000, 0x9086, 0x0000, ++ 0x0178, 0x6010, 0x9005, 0x0150, 0x00b6, 0x2058, 0x080c, 0x8cf2, ++ 0x00be, 0x6013, 0x0000, 0x601b, 0x0000, 0x0010, 0x2c00, 0x0861, ++ 0x0005, 0x2009, 0x1927, 0x210c, 0xd194, 0x0005, 0x00e6, 0x2071, ++ 0x1923, 0x7110, 0xc194, 0xd19c, 0x1118, 0xc185, 0x7007, 0x0000, ++ 0x7112, 0x2001, 0x003b, 0x080c, 0x15ee, 0x00ee, 0x0005, 0x0096, ++ 0x00d6, 0x9006, 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, ++ 0x702a, 0x7026, 0x702f, 0x0000, 0x080c, 0x8b3f, 0x0170, 0x080c, ++ 0x8b74, 0x0158, 0x2900, 0x7002, 0x700a, 0x701a, 0x7013, 0x0001, ++ 0x701f, 0x000a, 0x00de, 0x009e, 0x0005, 0x900e, 0x0cd8, 0x00e6, ++ 0x0096, 0x0086, 0x00d6, 0x00c6, 0x2071, 0x1930, 0x721c, 0x2100, ++ 0x9202, 0x1618, 0x080c, 0x8b74, 0x090c, 0x0dd5, 0x7018, 0x9005, ++ 0x1160, 0x2900, 0x7002, 0x700a, 0x701a, 0x9006, 0x7006, 0x700e, ++ 0xa806, 0xa802, 0x7012, 0x701e, 0x0038, 0x2040, 0xa806, 0x2900, ++ 0xa002, 0x701a, 0xa803, 0x0000, 0x7010, 0x8000, 0x7012, 0x701c, ++ 0x9080, 0x000a, 0x701e, 0x721c, 0x08d0, 0x721c, 0x00ce, 0x00de, ++ 0x008e, 0x009e, 0x00ee, 0x0005, 0x0096, 0x0156, 0x0136, 0x0146, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1930, 0x7300, 0x831f, ++ 0x831e, 0x831e, 0x9384, 0x003f, 0x20e8, 0x939c, 0xffc0, 0x9398, ++ 0x0003, 0x7104, 0x080c, 0x8ae0, 0x810c, 0x2100, 0x9318, 0x8003, ++ 0x2228, 0x2021, 0x0078, 0x9402, 0x9532, 0x0208, 0x2028, 0x2500, ++ 0x8004, 0x20a8, 0x23a0, 0xa001, 0xa001, 0x4005, 0x2508, 0x080c, ++ 0x8ae9, 0x2130, 0x7014, 0x9600, 0x7016, 0x2600, 0x711c, 0x9102, ++ 0x701e, 0x7004, 0x9600, 0x2008, 0x9082, 0x000a, 0x1190, 0x7000, ++ 0x2048, 0xa800, 0x9005, 0x1148, 0x2009, 0x0001, 0x0026, 0x080c, ++ 0x89d7, 0x002e, 0x7000, 0x2048, 0xa800, 0x7002, 0x7007, 0x0000, ++ 0x0008, 0x7106, 0x2500, 0x9212, 0x1904, 0x8a16, 0x012e, 0x00ee, ++ 0x014e, 0x013e, 0x015e, 0x009e, 0x0005, 0x0016, 0x0026, 0x00e6, ++ 0x0126, 0x2091, 0x8000, 0x9580, 0x8bb7, 0x2005, 0x9075, 0x090c, ++ 0x0dd5, 0x080c, 0x8abb, 0x012e, 0x9580, 0x8bb3, 0x2005, 0x9075, ++ 0x090c, 0x0dd5, 0x0156, 0x0136, 0x01c6, 0x0146, 0x01d6, 0x831f, ++ 0x831e, 0x831e, 0x9384, 0x003f, 0x20e0, 0x9384, 0xffc0, 0x9100, ++ 0x2098, 0xa860, 0x20e8, 0xa95c, 0x2c05, 0x9100, 0x20a0, 0x20a9, ++ 0x0002, 0x4003, 0x2e0c, 0x2d00, 0x0002, 0x8aa5, 0x8aa5, 0x8aa7, ++ 0x8aa5, 0x8aa7, 0x8aa5, 0x8aa5, 0x8aa5, 0x8aa5, 0x8aa5, 0x8aad, ++ 0x8aa5, 0x8aad, 0x8aa5, 0x8aa5, 0x8aa5, 0x080c, 0x0dd5, 0x4104, ++ 0x20a9, 0x0002, 0x4002, 0x4003, 0x0028, 0x20a9, 0x0002, 0x4003, ++ 0x4104, 0x4003, 0x01de, 0x014e, 0x01ce, 0x013e, 0x015e, 0x00ee, ++ 0x002e, 0x001e, 0x0005, 0x0096, 0x7014, 0x8001, 0x7016, 0x710c, ++ 0x2110, 0x00f1, 0x810c, 0x9188, 0x0003, 0x7308, 0x8210, 0x9282, ++ 0x000a, 0x1198, 0x7008, 0x2048, 0xa800, 0x9005, 0x0158, 0x0006, ++ 0x080c, 0x8b83, 0x009e, 0xa807, 0x0000, 0x2900, 0x700a, 0x7010, ++ 0x8001, 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, 0x009e, 0x0005, ++ 0x0006, 0x810b, 0x810b, 0x2100, 0x810b, 0x9100, 0x2008, 0x000e, ++ 0x0005, 0x0006, 0x0026, 0x2100, 0x9005, 0x0158, 0x9092, 0x000c, ++ 0x0240, 0x900e, 0x8108, 0x9082, 0x000c, 0x1de0, 0x002e, 0x000e, ++ 0x0005, 0x900e, 0x0cd8, 0x2d00, 0x90b8, 0x0008, 0x690c, 0x6810, ++ 0x2019, 0x0001, 0x2031, 0x8b29, 0x9112, 0x0220, 0x0118, 0x8318, ++ 0x2208, 0x0cd0, 0x6808, 0x9005, 0x0108, 0x8318, 0x233a, 0x6804, ++ 0xd084, 0x2300, 0x2021, 0x0001, 0x1150, 0x9082, 0x0003, 0x0967, ++ 0x0a67, 0x8420, 0x9082, 0x0007, 0x0967, 0x0a67, 0x0cd0, 0x9082, ++ 0x0002, 0x0967, 0x0a67, 0x8420, 0x9082, 0x0005, 0x0967, 0x0a67, ++ 0x0cd0, 0x6c1a, 0x2d00, 0x90b8, 0x0007, 0x00e6, 0x2071, 0x1800, ++ 0x7128, 0x6810, 0x2019, 0x0001, 0x910a, 0x0118, 0x0210, 0x8318, ++ 0x0cd8, 0x2031, 0x8b3c, 0x0870, 0x6c16, 0x00ee, 0x0005, 0x0096, ++ 0x0046, 0x0126, 0x2091, 0x8000, 0x2b00, 0x9080, 0x8bbb, 0x2005, ++ 0x9005, 0x090c, 0x0dd5, 0x2004, 0x90a0, 0x000a, 0x080c, 0x1018, ++ 0x01d0, 0x2900, 0x7026, 0xa803, 0x0000, 0xa807, 0x0000, 0x080c, ++ 0x1018, 0x0188, 0x7024, 0xa802, 0xa807, 0x0000, 0x2900, 0x7026, ++ 0x94a2, 0x000a, 0x0110, 0x0208, 0x0c90, 0x9085, 0x0001, 0x012e, ++ 0x004e, 0x009e, 0x0005, 0x7024, 0x9005, 0x0dc8, 0x2048, 0xac00, ++ 0x080c, 0x1031, 0x2400, 0x0cc0, 0x0126, 0x2091, 0x8000, 0x7024, ++ 0x2048, 0x9005, 0x0130, 0xa800, 0x7026, 0xa803, 0x0000, 0xa807, ++ 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7024, 0xa802, ++ 0x2900, 0x7026, 0x012e, 0x0005, 0x0096, 0x9e80, 0x0009, 0x2004, ++ 0x9005, 0x0138, 0x2048, 0xa800, 0x0006, 0x080c, 0x1031, 0x000e, ++ 0x0cb8, 0x009e, 0x0005, 0x0096, 0x7008, 0x9005, 0x0138, 0x2048, ++ 0xa800, 0x0006, 0x080c, 0x1031, 0x000e, 0x0cb8, 0x9006, 0x7002, ++ 0x700a, 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x702a, 0x7026, ++ 0x702e, 0x009e, 0x0005, 0x1a64, 0x0000, 0x0000, 0x0000, 0x1930, ++ 0x0000, 0x0000, 0x0000, 0x1888, 0x0000, 0x0000, 0x0000, 0x1877, ++ 0x0000, 0x0000, 0x0000, 0x00e6, 0x00c6, 0x00b6, 0x00a6, 0xa8a8, ++ 0x2040, 0x2071, 0x1877, 0x080c, 0x8cdd, 0xa067, 0x0023, 0x6010, ++ 0x905d, 0x0904, 0x8cb2, 0xb814, 0xa06e, 0xb910, 0xa172, 0xb9a0, ++ 0xa176, 0x2001, 0x0003, 0xa07e, 0xa834, 0xa082, 0xa07b, 0x0000, ++ 0xa898, 0x9005, 0x0118, 0xa078, 0xc085, 0xa07a, 0x2858, 0x2031, ++ 0x0018, 0xa068, 0x908a, 0x0019, 0x1a0c, 0x0dd5, 0x2020, 0x2050, ++ 0x2940, 0xa864, 0x90bc, 0x00ff, 0x908c, 0x000f, 0x91e0, 0x2090, ++ 0x2c65, 0x9786, 0x0024, 0x2c05, 0x1590, 0x908a, 0x0036, 0x1a0c, ++ 0x0dd5, 0x9082, 0x001b, 0x0002, 0x8c1f, 0x8c1f, 0x8c21, 0x8c1f, ++ 0x8c1f, 0x8c1f, 0x8c23, 0x8c1f, 0x8c1f, 0x8c1f, 0x8c25, 0x8c1f, ++ 0x8c1f, 0x8c1f, 0x8c27, 0x8c1f, 0x8c1f, 0x8c1f, 0x8c29, 0x8c1f, ++ 0x8c1f, 0x8c1f, 0x8c2b, 0x8c1f, 0x8c1f, 0x8c1f, 0x8c2d, 0x080c, ++ 0x0dd5, 0xa180, 0x04b8, 0xa190, 0x04a8, 0xa1a0, 0x0498, 0xa1b0, ++ 0x0488, 0xa1c0, 0x0478, 0xa1d0, 0x0468, 0xa1e0, 0x0458, 0x908a, ++ 0x0034, 0x1a0c, 0x0dd5, 0x9082, 0x001b, 0x0002, 0x8c51, 0x8c4f, ++ 0x8c4f, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c53, 0x8c4f, 0x8c4f, 0x8c4f, ++ 0x8c4f, 0x8c4f, 0x8c55, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c4f, ++ 0x8c57, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c4f, 0x8c59, 0x080c, ++ 0x0dd5, 0xa180, 0x0038, 0xa198, 0x0028, 0xa1b0, 0x0018, 0xa1c8, ++ 0x0008, 0xa1e0, 0x2600, 0x0002, 0x8c75, 0x8c77, 0x8c79, 0x8c7b, ++ 0x8c7d, 0x8c7f, 0x8c81, 0x8c83, 0x8c85, 0x8c87, 0x8c89, 0x8c8b, ++ 0x8c8d, 0x8c8f, 0x8c91, 0x8c93, 0x8c95, 0x8c97, 0x8c99, 0x8c9b, ++ 0x8c9d, 0x8c9f, 0x8ca1, 0x8ca3, 0x8ca5, 0x080c, 0x0dd5, 0xb9e2, ++ 0x0468, 0xb9de, 0x0458, 0xb9da, 0x0448, 0xb9d6, 0x0438, 0xb9d2, ++ 0x0428, 0xb9ce, 0x0418, 0xb9ca, 0x0408, 0xb9c6, 0x00f8, 0xb9c2, ++ 0x00e8, 0xb9be, 0x00d8, 0xb9ba, 0x00c8, 0xb9b6, 0x00b8, 0xb9b2, ++ 0x00a8, 0xb9ae, 0x0098, 0xb9aa, 0x0088, 0xb9a6, 0x0078, 0xb9a2, ++ 0x0068, 0xb99e, 0x0058, 0xb99a, 0x0048, 0xb996, 0x0038, 0xb992, ++ 0x0028, 0xb98e, 0x0018, 0xb98a, 0x0008, 0xb986, 0x8631, 0x8421, ++ 0x0120, 0x080c, 0x2048, 0x0804, 0x8bf9, 0x00ae, 0x00be, 0x00ce, ++ 0x00ee, 0x0005, 0xa86c, 0xa06e, 0xa870, 0xa072, 0xa077, 0x00ff, ++ 0x9006, 0x0804, 0x8bdb, 0x0006, 0x0016, 0x00b6, 0x6010, 0x2058, ++ 0xb810, 0x9005, 0x01b0, 0x2001, 0x1924, 0x2004, 0x9005, 0x0188, ++ 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, ++ 0xbba0, 0x2021, 0x0004, 0x2011, 0x8014, 0x080c, 0x4b04, 0x004e, ++ 0x003e, 0x00be, 0x001e, 0x000e, 0x0005, 0x9016, 0x710c, 0xa834, ++ 0x910a, 0xa936, 0x7008, 0x9005, 0x0120, 0x8210, 0x910a, 0x0238, ++ 0x0130, 0x7010, 0x8210, 0x910a, 0x0210, 0x0108, 0x0cd8, 0xaa8a, ++ 0xa26a, 0x0005, 0x00f6, 0x00d6, 0x0036, 0x2079, 0x0300, 0x781b, ++ 0x0200, 0x7818, 0xd094, 0x1dd8, 0x781b, 0x0202, 0xa001, 0xa001, ++ 0x7818, 0xd094, 0x1da0, 0xb8ac, 0x9005, 0x01b8, 0x2068, 0x2079, ++ 0x0000, 0x2c08, 0x911e, 0x1118, 0x680c, 0xb8ae, 0x0060, 0x9106, ++ 0x0140, 0x2d00, 0x2078, 0x680c, 0x9005, 0x090c, 0x0dd5, 0x2068, ++ 0x0cb0, 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x2079, 0x0300, 0x781b, ++ 0x0200, 0x003e, 0x00de, 0x00fe, 0x0005, 0x00e6, 0x00d6, 0x0096, ++ 0x00c6, 0x0036, 0x0126, 0x2091, 0x8000, 0x0156, 0x20a9, 0x01ff, ++ 0x2071, 0x0300, 0x701b, 0x0200, 0x7018, 0xd094, 0x0110, 0x1f04, ++ 0x8d32, 0x701b, 0x0202, 0xa001, 0xa001, 0x7018, 0xd094, 0x1d90, ++ 0xb8ac, 0x9005, 0x01d0, 0x2060, 0x600c, 0xb8ae, 0x6003, 0x0004, ++ 0x601b, 0x0000, 0x6013, 0x0000, 0x601f, 0x0101, 0x6014, 0x2048, ++ 0xa88b, 0x0000, 0xa8a8, 0xa8ab, 0x0000, 0x904d, 0x090c, 0x0dd5, ++ 0x080c, 0x1031, 0x080c, 0x88ed, 0x0c18, 0x2071, 0x0300, 0x701b, ++ 0x0200, 0x015e, 0x012e, 0x003e, 0x00ce, 0x009e, 0x00de, 0x00ee, ++ 0x0005, 0x00c6, 0x00b6, 0x0016, 0x0006, 0x0156, 0x080c, 0x283e, ++ 0x015e, 0x11b0, 0x080c, 0x659e, 0x190c, 0x0dd5, 0x000e, 0x001e, ++ 0xb912, 0xb816, 0x080c, 0xae0b, 0x0140, 0x2b00, 0x6012, 0x6023, ++ 0x0001, 0x2009, 0x0001, 0x080c, 0xaedc, 0x00be, 0x00ce, 0x0005, ++ 0x000e, 0x001e, 0x0cd0, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, ++ 0x0dd5, 0x0013, 0x006e, 0x0005, 0x8da4, 0x8da4, 0x8da4, 0x8da6, ++ 0x8df7, 0x8da4, 0x8da4, 0x8da4, 0x8e5a, 0x8da4, 0x8e97, 0x8da4, ++ 0x8da4, 0x8da4, 0x8da4, 0x8da4, 0x080c, 0x0dd5, 0x9182, 0x0040, ++ 0x0002, 0x8db9, 0x8db9, 0x8db9, 0x8db9, 0x8db9, 0x8db9, 0x8db9, ++ 0x8db9, 0x8db9, 0x8dbb, 0x8dd0, 0x8db9, 0x8db9, 0x8db9, 0x8db9, ++ 0x8de3, 0x080c, 0x0dd5, 0x0096, 0x080c, 0x963d, 0x080c, 0x97b9, ++ 0x6114, 0x2148, 0xa87b, 0x0000, 0x6010, 0x00b6, 0x2058, 0xb8bb, ++ 0x0500, 0x00be, 0x080c, 0x6a87, 0x080c, 0xae61, 0x009e, 0x0005, ++ 0x080c, 0x963d, 0x00d6, 0x6114, 0x080c, 0xcb35, 0x0130, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0x6c81, 0x009e, 0x00de, 0x080c, 0xae61, ++ 0x080c, 0x97b9, 0x0005, 0x080c, 0x963d, 0x080c, 0x31bf, 0x6114, ++ 0x0096, 0x2148, 0x080c, 0xcb35, 0x0120, 0xa87b, 0x0029, 0x080c, ++ 0x6c81, 0x009e, 0x080c, 0xae61, 0x080c, 0x97b9, 0x0005, 0x601b, ++ 0x0000, 0x9182, 0x0040, 0x0096, 0x0002, 0x8e12, 0x8e12, 0x8e12, ++ 0x8e12, 0x8e12, 0x8e12, 0x8e12, 0x8e12, 0x8e14, 0x8e12, 0x8e12, ++ 0x8e12, 0x8e56, 0x8e12, 0x8e12, 0x8e12, 0x8e12, 0x8e12, 0x8e12, ++ 0x8e1a, 0x8e12, 0x080c, 0x0dd5, 0x6114, 0x2148, 0xa938, 0x918e, ++ 0xffff, 0x05e0, 0x00e6, 0x6114, 0x2148, 0x080c, 0x8bc3, 0x0096, ++ 0xa8a8, 0x2048, 0x080c, 0x6a1f, 0x009e, 0xa8ab, 0x0000, 0x6010, ++ 0x9005, 0x0128, 0x00b6, 0x2058, 0x080c, 0x8cf2, 0x00be, 0xae88, ++ 0x00b6, 0x2059, 0x0000, 0x080c, 0x88f6, 0x00be, 0x01e0, 0x2071, ++ 0x193c, 0x080c, 0x893d, 0x01b8, 0x9086, 0x0001, 0x1128, 0x2001, ++ 0x1946, 0x2004, 0x9005, 0x1178, 0x0096, 0x080c, 0x0fff, 0x2900, ++ 0x009e, 0x0148, 0xa8aa, 0x00f6, 0x2c78, 0x080c, 0x88b4, 0x00fe, ++ 0x00ee, 0x009e, 0x0005, 0x080c, 0x88ed, 0x0cd0, 0x080c, 0x8f04, ++ 0x009e, 0x0005, 0x9182, 0x0040, 0x0096, 0x0002, 0x8e6e, 0x8e6e, ++ 0x8e6e, 0x8e70, 0x8e6e, 0x8e6e, 0x8e6e, 0x8e95, 0x8e6e, 0x8e6e, ++ 0x8e6e, 0x8e6e, 0x8e6e, 0x8e6e, 0x8e6e, 0x8e6e, 0x080c, 0x0dd5, ++ 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa8ac, 0xa846, 0xa8b0, ++ 0xa84a, 0xa837, 0x0000, 0xa83b, 0x0000, 0xa884, 0x9092, 0x199a, ++ 0x0210, 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, ++ 0x2c10, 0x080c, 0x1bad, 0x080c, 0x9155, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x97b9, 0x012e, 0x009e, 0x0005, 0x080c, 0x0dd5, 0x080c, ++ 0x963d, 0x080c, 0x97b9, 0x6114, 0x2148, 0xa87b, 0x0000, 0x6010, ++ 0x00b6, 0x2058, 0xb8bb, 0x0500, 0x00be, 0x080c, 0x6c81, 0x080c, ++ 0xae61, 0x009e, 0x0005, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, ++ 0x0096, 0x0013, 0x009e, 0x0005, 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec6, ++ 0x8ed7, 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec4, ++ 0x8ec4, 0x8ec4, 0x8ec4, 0x8ec4, 0x080c, 0x0dd5, 0x080c, 0xa7cc, ++ 0x6114, 0x2148, 0xa87b, 0x0006, 0x6010, 0x00b6, 0x2058, 0xb8bb, ++ 0x0500, 0x00be, 0x080c, 0x6c81, 0x080c, 0xae61, 0x0005, 0x0461, ++ 0x0005, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, 0x0096, 0x0013, ++ 0x009e, 0x0005, 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef4, 0x8f04, 0x8ef2, ++ 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef2, 0x8ef2, ++ 0x8ef2, 0x8ef2, 0x080c, 0x0dd5, 0x0036, 0x00e6, 0x2071, 0x19e7, ++ 0x703c, 0x9c06, 0x1120, 0x2019, 0x0000, 0x080c, 0xa5b6, 0x080c, ++ 0xa7cc, 0x00ee, 0x003e, 0x0005, 0x00f6, 0x00e6, 0x601b, 0x0000, ++ 0x6014, 0x2048, 0x6010, 0x9005, 0x0128, 0x00b6, 0x2058, 0x080c, ++ 0x8cf2, 0x00be, 0x2071, 0x193c, 0x080c, 0x893d, 0x0160, 0x2001, ++ 0x187f, 0x2004, 0xa88a, 0x2031, 0x0000, 0x2c78, 0x080c, 0x88b4, ++ 0x00ee, 0x00fe, 0x0005, 0x0096, 0xa88b, 0x0000, 0xa8a8, 0x2048, ++ 0x080c, 0x1031, 0x009e, 0xa8ab, 0x0000, 0x080c, 0x88ed, 0x0c80, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x187a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0126, 0x2091, 0x8000, 0x0036, 0x0046, 0x20a9, 0x0010, 0x9006, ++ 0x8004, 0x2019, 0x0100, 0x231c, 0x93a6, 0x0008, 0x1118, 0x8086, ++ 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x1208, 0x9200, ++ 0x1f04, 0x8f49, 0x93a6, 0x0008, 0x1118, 0x8086, 0x818e, 0x0020, ++ 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x004e, 0x003e, 0x012e, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x0076, 0x0156, 0x20a9, 0x0010, 0x9005, ++ 0x0510, 0x911a, 0x1600, 0x8213, 0x2039, 0x0100, 0x273c, 0x97be, ++ 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, 0x3e08, 0x0228, 0x911a, ++ 0x1220, 0x1f04, 0x8f73, 0x0028, 0x911a, 0x2308, 0x8210, 0x1f04, ++ 0x8f73, 0x0006, 0x3200, 0x9084, 0xefff, 0x2080, 0x000e, 0x015e, ++ 0x007e, 0x012e, 0x0005, 0x0006, 0x3200, 0x9085, 0x1000, 0x0ca8, ++ 0x0126, 0x2091, 0x2800, 0x2079, 0x19e7, 0x012e, 0x00d6, 0x2069, ++ 0x19e7, 0x6803, 0x0005, 0x0156, 0x0146, 0x01d6, 0x20e9, 0x0000, ++ 0x2069, 0x0200, 0x080c, 0xab21, 0x0401, 0x080c, 0xab0c, 0x00e9, ++ 0x080c, 0xab0f, 0x00d1, 0x080c, 0xab12, 0x00b9, 0x080c, 0xab15, ++ 0x00a1, 0x080c, 0xab18, 0x0089, 0x080c, 0xab1b, 0x0071, 0x080c, ++ 0xab1e, 0x0059, 0x01de, 0x014e, 0x015e, 0x2069, 0x0004, 0x2d04, ++ 0x9085, 0x8001, 0x206a, 0x00de, 0x0005, 0x20a9, 0x0020, 0x20a1, ++ 0x0240, 0x2001, 0x0000, 0x4004, 0x0005, 0x00c6, 0x6027, 0x0001, ++ 0x7804, 0x9084, 0x0007, 0x0002, 0x8fe6, 0x900a, 0x9049, 0x8fec, ++ 0x900a, 0x8fe6, 0x8fe4, 0x8fe4, 0x080c, 0x0dd5, 0x080c, 0x8579, ++ 0x080c, 0x968d, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, ++ 0x0005, 0x2011, 0x5e83, 0x080c, 0x84f3, 0x7828, 0x9092, 0x00c8, ++ 0x1228, 0x8000, 0x782a, 0x080c, 0x5ec3, 0x0c88, 0x62c0, 0x080c, ++ 0xac5d, 0x080c, 0x5e83, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, ++ 0x0000, 0x0c28, 0x080c, 0x8579, 0x6220, 0xd2a4, 0x0160, 0x782b, ++ 0x0000, 0x7824, 0x9065, 0x090c, 0x0dd5, 0x2009, 0x0013, 0x080c, ++ 0xaedc, 0x00ce, 0x0005, 0x00c6, 0x7824, 0x9065, 0x090c, 0x0dd5, ++ 0x7828, 0x9092, 0xc350, 0x12c0, 0x8000, 0x782a, 0x00ce, 0x080c, ++ 0x2ba5, 0x0278, 0x00c6, 0x7924, 0x2160, 0x6010, 0x906d, 0x090c, ++ 0x0dd5, 0x7807, 0x0000, 0x7827, 0x0000, 0x00ce, 0x080c, 0x968d, ++ 0x0c00, 0x080c, 0xa24f, 0x08e8, 0x2011, 0x0130, 0x2214, 0x080c, ++ 0xac5d, 0x080c, 0xe9fe, 0x2009, 0x0014, 0x080c, 0xaedc, 0x00ce, ++ 0x0880, 0x2001, 0x1a03, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, ++ 0x782b, 0x0000, 0x7824, 0x9065, 0x090c, 0x0dd5, 0x2009, 0x0013, ++ 0x080c, 0xaf2e, 0x00ce, 0x0005, 0x00b6, 0x00c6, 0x00d6, 0x7824, ++ 0x9005, 0x090c, 0x0dd5, 0x7828, 0x9092, 0xc350, 0x1648, 0x8000, ++ 0x782a, 0x00de, 0x00ce, 0x00be, 0x080c, 0x2ba5, 0x02f0, 0x00b6, ++ 0x00c6, 0x00d6, 0x781c, 0x905d, 0x090c, 0x0dd5, 0xb800, 0xc0dc, ++ 0xb802, 0x7924, 0x2160, 0x080c, 0xae61, 0xb93c, 0x81ff, 0x090c, ++ 0x0dd5, 0x8109, 0xb93e, 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, ++ 0x00ce, 0x00be, 0x080c, 0x968d, 0x0868, 0x080c, 0xa24f, 0x0850, ++ 0x2011, 0x0130, 0x2214, 0x080c, 0xac5d, 0x080c, 0xe9fe, 0x7824, ++ 0x9065, 0x2009, 0x0014, 0x080c, 0xaedc, 0x00de, 0x00ce, 0x00be, ++ 0x0804, 0x905a, 0x00c6, 0x2001, 0x009b, 0x2004, 0xd0fc, 0x190c, ++ 0x1eb4, 0x6024, 0x6027, 0x0002, 0xd0f4, 0x15b8, 0x62c8, 0x60c4, ++ 0x9205, 0x1170, 0x783c, 0x9065, 0x0130, 0x2009, 0x0049, 0x080c, ++ 0xaedc, 0x00ce, 0x0005, 0x2011, 0x1a06, 0x2013, 0x0000, 0x0cc8, ++ 0x793c, 0x81ff, 0x0dc0, 0x7944, 0x9192, 0x7530, 0x1628, 0x8108, ++ 0x7946, 0x793c, 0x9188, 0x0008, 0x210c, 0x918e, 0x0006, 0x1138, ++ 0x6014, 0x9084, 0x1984, 0x9085, 0x0012, 0x6016, 0x0c10, 0x793c, ++ 0x9188, 0x0008, 0x210c, 0x918e, 0x0009, 0x0d90, 0x6014, 0x9084, ++ 0x1984, 0x9085, 0x0016, 0x6016, 0x08a0, 0x793c, 0x2160, 0x2009, ++ 0x004a, 0x080c, 0xaedc, 0x0868, 0x7848, 0xc085, 0x784a, 0x0848, ++ 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, ++ 0x2c08, 0x2061, 0x19e7, 0x6020, 0x8000, 0x6022, 0x6010, 0x9005, ++ 0x0148, 0x9080, 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce, 0x001e, ++ 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069, 0x19e7, ++ 0xb800, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, 0x9086, 0x0001, ++ 0x1110, 0x2b00, 0x681e, 0x00de, 0x0804, 0x968d, 0x00de, 0x0005, ++ 0xc0d5, 0xb802, 0x6818, 0x9005, 0x0168, 0xb856, 0xb85b, 0x0000, ++ 0x0086, 0x0006, 0x2b00, 0x681a, 0x008e, 0xa05a, 0x008e, 0x2069, ++ 0x19e7, 0x0c08, 0xb856, 0xb85a, 0x2b00, 0x681a, 0x681e, 0x08d8, ++ 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, ++ 0x2c08, 0x2061, 0x19e7, 0x6020, 0x8000, 0x6022, 0x6008, 0x9005, ++ 0x0148, 0x9080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, ++ 0x000e, 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, ++ 0x2c08, 0x2061, 0x19e7, 0x6034, 0x9005, 0x0130, 0x9080, 0x0003, ++ 0x2102, 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x00ce, 0x0005, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x00b6, 0x0096, 0x0076, 0x0066, ++ 0x0056, 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, 0x902e, 0x2071, ++ 0x19e7, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, ++ 0x91df, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x91da, 0x87ff, ++ 0x0120, 0x6054, 0x9106, 0x1904, 0x91da, 0x703c, 0x9c06, 0x1178, ++ 0x0036, 0x2019, 0x0001, 0x080c, 0xa5b6, 0x7033, 0x0000, 0x9006, ++ 0x703e, 0x7042, 0x7046, 0x704a, 0x003e, 0x2029, 0x0001, 0x7038, ++ 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, ++ 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, ++ 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, ++ 0x0000, 0x080c, 0xcb35, 0x01c8, 0x6014, 0x2048, 0x6020, 0x9086, ++ 0x0003, 0x1590, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, ++ 0x0036, 0x0076, 0x080c, 0xce24, 0x080c, 0xe908, 0x080c, 0x6c81, ++ 0x007e, 0x003e, 0x001e, 0x080c, 0xcd1e, 0x080c, 0xae92, 0x00ce, ++ 0x0804, 0x917e, 0x2c78, 0x600c, 0x2060, 0x0804, 0x917e, 0x85ff, ++ 0x0120, 0x0036, 0x080c, 0x97b9, 0x003e, 0x012e, 0x000e, 0x001e, ++ 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x009e, 0x00be, 0x00ce, ++ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, ++ 0x0016, 0x0036, 0x0076, 0x080c, 0xe908, 0x080c, 0xe551, 0x007e, ++ 0x003e, 0x001e, 0x0890, 0x6020, 0x9086, 0x0009, 0x1168, 0xa87b, ++ 0x0006, 0x0016, 0x0036, 0x0076, 0x080c, 0x6c81, 0x080c, 0xae61, ++ 0x007e, 0x003e, 0x001e, 0x0818, 0x6020, 0x9086, 0x000a, 0x0904, ++ 0x91c4, 0x0804, 0x91c2, 0x0006, 0x0066, 0x0096, 0x00c6, 0x00d6, ++ 0x00f6, 0x9036, 0x0126, 0x2091, 0x8000, 0x2079, 0x19e7, 0x7838, ++ 0x9065, 0x0904, 0x926b, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, ++ 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c, 0xa5b6, 0x7833, ++ 0x0000, 0x901e, 0x7b3e, 0x7b42, 0x7b46, 0x7b4a, 0x003e, 0x080c, ++ 0xcb35, 0x0520, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1568, ++ 0x3e08, 0x918e, 0x0002, 0x1188, 0x6010, 0x9005, 0x0170, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6040, 0x9005, 0x1180, ++ 0x2001, 0x1988, 0x2004, 0x6042, 0x0058, 0xa867, 0x0103, 0xab7a, ++ 0xa877, 0x0000, 0x080c, 0x6c75, 0x080c, 0xcd1e, 0x080c, 0xae92, ++ 0x000e, 0x0804, 0x9228, 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, ++ 0x00ce, 0x009e, 0x006e, 0x000e, 0x0005, 0x6020, 0x9086, 0x0006, ++ 0x1118, 0x080c, 0xe551, 0x0c50, 0x6020, 0x9086, 0x0009, 0x1130, ++ 0xab7a, 0x080c, 0x6c81, 0x080c, 0xae61, 0x0c10, 0x6020, 0x9086, ++ 0x000a, 0x09a8, 0x0890, 0x0016, 0x0026, 0x0086, 0x9046, 0x0099, ++ 0x080c, 0x9374, 0x008e, 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, ++ 0x2079, 0x19e7, 0x2091, 0x8000, 0x080c, 0x940b, 0x080c, 0x9499, ++ 0x012e, 0x00fe, 0x0005, 0x00b6, 0x0096, 0x00f6, 0x00e6, 0x00d6, ++ 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x19e7, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904, 0x9339, 0x6010, ++ 0x2058, 0xb8a0, 0x9206, 0x1904, 0x9334, 0x88ff, 0x0120, 0x6054, ++ 0x9106, 0x1904, 0x9334, 0x7024, 0x9c06, 0x1558, 0x2069, 0x0100, ++ 0x6820, 0xd0a4, 0x1508, 0x080c, 0x8579, 0x080c, 0xa273, 0x68c3, ++ 0x0000, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, ++ 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, ++ 0x9006, 0x080c, 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, ++ 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a, 0x0804, ++ 0x9334, 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, ++ 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, ++ 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, ++ 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xcb35, 0x01e8, ++ 0x6020, 0x9086, 0x0003, 0x1580, 0x080c, 0xcd3b, 0x1118, 0x080c, ++ 0xb813, 0x0098, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, ++ 0x0036, 0x0086, 0x080c, 0xce24, 0x080c, 0xe908, 0x080c, 0x6c81, ++ 0x008e, 0x003e, 0x001e, 0x080c, 0xcd1e, 0x080c, 0xae92, 0x080c, ++ 0xa692, 0x00ce, 0x0804, 0x92b4, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x92b4, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x009e, 0x00be, 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, ++ 0x0016, 0x0036, 0x0086, 0x080c, 0xe908, 0x080c, 0xe551, 0x008e, ++ 0x003e, 0x001e, 0x08d0, 0x080c, 0xb813, 0x6020, 0x9086, 0x0002, ++ 0x1160, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x0904, 0x931a, ++ 0x9086, 0x008b, 0x0904, 0x931a, 0x0840, 0x6020, 0x9086, 0x0005, ++ 0x1920, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x09c8, 0x9086, ++ 0x008b, 0x09b0, 0x0804, 0x932d, 0x00b6, 0x00a6, 0x0096, 0x00c6, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x9280, 0x1000, 0x2004, 0x905d, ++ 0x0904, 0x9404, 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, 0x19e7, ++ 0xbe54, 0x7018, 0x9b06, 0x1108, 0x761a, 0x701c, 0x9b06, 0x1130, ++ 0x86ff, 0x1118, 0x7018, 0x701e, 0x0008, 0x761e, 0xb858, 0x904d, ++ 0x0108, 0xae56, 0x96d5, 0x0000, 0x0110, 0x2900, 0xb05a, 0xb857, ++ 0x0000, 0xb85b, 0x0000, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, ++ 0x6531, 0x0904, 0x9400, 0x7624, 0x86ff, 0x0904, 0x93ef, 0x9680, ++ 0x0005, 0x2004, 0x9906, 0x15d8, 0x00d6, 0x2069, 0x0100, 0x68c0, ++ 0x9005, 0x0560, 0x080c, 0x8579, 0x080c, 0xa273, 0x68c3, 0x0000, ++ 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, 0x9006, ++ 0x080c, 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x00de, 0x00c6, 0xb83c, 0x9005, 0x0110, 0x8001, ++ 0xb83e, 0x2660, 0x080c, 0xae92, 0x00ce, 0x0048, 0x00de, 0x00c6, ++ 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x93a7, 0x89ff, ++ 0x0158, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xce24, ++ 0x080c, 0xe908, 0x080c, 0x6c81, 0x080c, 0xa692, 0x0804, 0x93a7, ++ 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, 0x009e, ++ 0x00ae, 0x00be, 0x0005, 0x0096, 0x0006, 0x0066, 0x00c6, 0x00d6, ++ 0x9036, 0x7814, 0x9065, 0x0904, 0x946c, 0x600c, 0x0006, 0x600f, ++ 0x0000, 0x7824, 0x9c06, 0x1570, 0x2069, 0x0100, 0x6820, 0xd0a4, ++ 0x1508, 0x080c, 0x8579, 0x080c, 0xa273, 0x68c3, 0x0000, 0x080c, ++ 0xa7bc, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, ++ 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, 0x9006, 0x080c, ++ 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, ++ 0x003e, 0x0040, 0x080c, 0x690a, 0x1520, 0x6003, 0x0009, 0x630a, ++ 0x2c30, 0x00f8, 0x6014, 0x2048, 0x080c, 0xcb33, 0x01b0, 0x6020, ++ 0x9086, 0x0003, 0x1508, 0x080c, 0xcd3b, 0x1118, 0x080c, 0xb813, ++ 0x0060, 0x080c, 0x690a, 0x1168, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x6c81, 0x080c, 0xcd1e, 0x080c, 0xae92, 0x080c, ++ 0xa692, 0x000e, 0x0804, 0x9412, 0x7e16, 0x7e12, 0x00de, 0x00ce, ++ 0x006e, 0x000e, 0x009e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, ++ 0x080c, 0xe551, 0x0c50, 0x080c, 0xb813, 0x6020, 0x9086, 0x0002, ++ 0x1150, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x0990, 0x9086, ++ 0x008b, 0x0978, 0x08d0, 0x6020, 0x9086, 0x0005, 0x19b0, 0x6004, ++ 0x0006, 0x9086, 0x0085, 0x000e, 0x0d18, 0x9086, 0x008b, 0x0d00, ++ 0x0860, 0x0006, 0x0066, 0x0096, 0x00b6, 0x00c6, 0x00d6, 0x7818, ++ 0x905d, 0x0904, 0x9519, 0xb854, 0x0006, 0x9006, 0xb856, 0xb85a, ++ 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x6531, 0x0904, 0x9516, ++ 0x7e24, 0x86ff, 0x0904, 0x9509, 0x9680, 0x0005, 0x2004, 0x9906, ++ 0x1904, 0x9509, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, ++ 0x9500, 0x080c, 0x8579, 0x080c, 0xa273, 0x68c3, 0x0000, 0x080c, ++ 0xa7bc, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, ++ 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, 0x9006, 0x080c, ++ 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, ++ 0x003e, 0x00de, 0x00c6, 0x3e08, 0x918e, 0x0002, 0x1168, 0xb800, ++ 0xd0bc, 0x0150, 0x9680, 0x0010, 0x200c, 0x81ff, 0x1518, 0x2009, ++ 0x1988, 0x210c, 0x2102, 0x00f0, 0xb83c, 0x9005, 0x0110, 0x8001, ++ 0xb83e, 0x2660, 0x600f, 0x0000, 0x080c, 0xae92, 0x00ce, 0x0048, ++ 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, ++ 0x94ac, 0x89ff, 0x0138, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x080c, 0x6c81, 0x080c, 0xa692, 0x0804, 0x94ac, 0x000e, 0x0804, ++ 0x94a0, 0x781e, 0x781a, 0x00de, 0x00ce, 0x00be, 0x009e, 0x006e, ++ 0x000e, 0x0005, 0x00e6, 0x00d6, 0x0096, 0x0066, 0xb800, 0xd0dc, ++ 0x01a0, 0xb84c, 0x904d, 0x0188, 0xa878, 0x9606, 0x1170, 0x2071, ++ 0x19e7, 0x7024, 0x9035, 0x0148, 0x9080, 0x0005, 0x2004, 0x9906, ++ 0x1120, 0xb800, 0xc0dc, 0xb802, 0x0029, 0x006e, 0x009e, 0x00de, ++ 0x00ee, 0x0005, 0x00f6, 0x2079, 0x0100, 0x78c0, 0x9005, 0x1138, ++ 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x04b8, 0x080c, ++ 0xa273, 0x78c3, 0x0000, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, ++ 0x2079, 0x0140, 0x7b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2cef, 0x9006, 0x080c, 0x2cef, 0x2079, 0x0100, 0x7824, ++ 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0xa7bc, 0x003e, 0x080c, ++ 0x6531, 0x00c6, 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, ++ 0x080c, 0xae61, 0x00ce, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x080c, 0xce24, 0x080c, 0x6c81, 0x080c, 0xa692, 0x00fe, 0x0005, ++ 0x00b6, 0x00e6, 0x00c6, 0x2011, 0x0101, 0x2204, 0xc0c4, 0x2012, ++ 0x2001, 0x180c, 0x2014, 0xc2e4, 0x2202, 0x2071, 0x19e7, 0x7004, ++ 0x9084, 0x0007, 0x0002, 0x95a5, 0x95a9, 0x95c0, 0x95e9, 0x9627, ++ 0x95a5, 0x95c0, 0x95a3, 0x080c, 0x0dd5, 0x00ce, 0x00ee, 0x00be, ++ 0x0005, 0x7024, 0x9065, 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, ++ 0x9015, 0x0158, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, ++ 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7216, 0x7212, 0x0ca8, ++ 0x6010, 0x2058, 0x080c, 0x6531, 0xb800, 0xc0dc, 0xb802, 0x7007, ++ 0x0000, 0x7027, 0x0000, 0x7020, 0x8001, 0x7022, 0x1148, 0x2001, ++ 0x180c, 0x2014, 0xd2ec, 0x1180, 0x00ce, 0x00ee, 0x00be, 0x0005, ++ 0xb854, 0x9015, 0x0120, 0x721e, 0x080c, 0x968d, 0x0ca8, 0x7218, ++ 0x721e, 0x080c, 0x968d, 0x0c80, 0xc2ec, 0x2202, 0x080c, 0x97b9, ++ 0x0c58, 0x7024, 0x9065, 0x05b8, 0x700c, 0x9c06, 0x1160, 0x080c, ++ 0xa692, 0x600c, 0x9015, 0x0120, 0x720e, 0x600f, 0x0000, 0x0448, ++ 0x720e, 0x720a, 0x0430, 0x7014, 0x9c06, 0x1160, 0x080c, 0xa692, ++ 0x600c, 0x9015, 0x0120, 0x7216, 0x600f, 0x0000, 0x00d0, 0x7216, ++ 0x7212, 0x00b8, 0x6020, 0x9086, 0x0003, 0x1198, 0x6010, 0x2058, ++ 0x080c, 0x6531, 0xb800, 0xc0dc, 0xb802, 0x080c, 0xa692, 0x701c, ++ 0x9065, 0x0138, 0xb854, 0x9015, 0x0110, 0x721e, 0x0010, 0x7218, ++ 0x721e, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7024, ++ 0x9065, 0x0140, 0x080c, 0xa692, 0x600c, 0x9015, 0x0158, 0x720e, ++ 0x600f, 0x0000, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x00ce, 0x00ee, ++ 0x00be, 0x0005, 0x720e, 0x720a, 0x0ca8, 0x00d6, 0x2069, 0x19e7, ++ 0x6830, 0x9084, 0x0003, 0x0002, 0x964a, 0x964c, 0x9670, 0x9648, ++ 0x080c, 0x0dd5, 0x00de, 0x0005, 0x00c6, 0x6840, 0x9086, 0x0001, ++ 0x01b8, 0x683c, 0x9065, 0x0130, 0x600c, 0x9015, 0x0170, 0x6a3a, ++ 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011, 0x1a06, ++ 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836, 0x0c90, ++ 0x6843, 0x0000, 0x6838, 0x9065, 0x0d68, 0x6003, 0x0003, 0x0c50, ++ 0x00c6, 0x9006, 0x6842, 0x6846, 0x684a, 0x683c, 0x9065, 0x0160, ++ 0x600c, 0x9015, 0x0130, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, ++ 0x0018, 0x683e, 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005, 0x2001, ++ 0x180c, 0x200c, 0xc1e5, 0x2102, 0x0005, 0x2001, 0x180c, 0x200c, ++ 0xd1ec, 0x0120, 0xc1ec, 0x2102, 0x080c, 0x97b9, 0x2001, 0x19f3, ++ 0x2004, 0x9086, 0x0001, 0x0d58, 0x00d6, 0x2069, 0x19e7, 0x6804, ++ 0x9084, 0x0007, 0x0006, 0x9005, 0x11c8, 0x2001, 0x1837, 0x2004, ++ 0x9084, 0x0028, 0x1198, 0x2001, 0x197c, 0x2004, 0x9086, 0xaaaa, ++ 0x0168, 0x2001, 0x188b, 0x2004, 0xd08c, 0x1118, 0xd084, 0x1118, ++ 0x0028, 0x080c, 0x97b9, 0x000e, 0x00de, 0x0005, 0x000e, 0x0002, ++ 0x96ca, 0x9787, 0x9787, 0x9787, 0x9787, 0x9789, 0x9787, 0x96c8, ++ 0x080c, 0x0dd5, 0x6820, 0x9005, 0x1110, 0x00de, 0x0005, 0x00c6, ++ 0x680c, 0x9065, 0x0520, 0x6114, 0x0096, 0x2148, 0xa964, 0x009e, ++ 0x918c, 0x00ff, 0x918e, 0x0035, 0x1180, 0x2009, 0x1837, 0x210c, ++ 0x918c, 0x0028, 0x1150, 0x080c, 0x73bc, 0x0138, 0x0006, 0x2009, ++ 0x188b, 0x2104, 0xc095, 0x200a, 0x000e, 0x6807, 0x0004, 0x6826, ++ 0x682b, 0x0000, 0x080c, 0x9861, 0x00ce, 0x00de, 0x0005, 0x6814, ++ 0x9065, 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, ++ 0x9861, 0x00ce, 0x00de, 0x0005, 0x00b6, 0x00e6, 0x6a1c, 0x92dd, ++ 0x0000, 0x0904, 0x9773, 0xb84c, 0x900d, 0x0118, 0xb888, 0x9005, ++ 0x01a0, 0xb854, 0x905d, 0x0120, 0x920e, 0x0904, 0x9773, 0x0028, ++ 0x6818, 0x920e, 0x0904, 0x9773, 0x2058, 0xb84c, 0x900d, 0x0d88, ++ 0xb888, 0x9005, 0x1d70, 0x2b00, 0x681e, 0xbb3c, 0xb838, 0x9302, ++ 0x1e40, 0x080c, 0xae38, 0x0904, 0x9773, 0x8318, 0xbb3e, 0x6116, ++ 0x2b10, 0x6212, 0x0096, 0x2148, 0xa880, 0x9084, 0x00ff, 0x605e, ++ 0xa883, 0x0000, 0xa884, 0x009e, 0x908a, 0x199a, 0x0210, 0x2001, ++ 0x1999, 0x8003, 0x801b, 0x831b, 0x9318, 0x631a, 0x6114, 0x0096, ++ 0x2148, 0xa964, 0x009e, 0x918c, 0x00ff, 0x918e, 0x0048, 0x0538, ++ 0x00f6, 0x2c78, 0x2061, 0x0100, 0xbac0, 0x629a, 0x2069, 0x0200, ++ 0x2071, 0x0240, 0x080c, 0x9dae, 0x2069, 0x19e7, 0xbb00, 0xc3dd, ++ 0xbb02, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x7823, ++ 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, 0x00be, ++ 0x00ce, 0x00de, 0x0005, 0x00ee, 0x00be, 0x00ce, 0x0cd0, 0xbb00, ++ 0xc3dd, 0xbb02, 0x6807, 0x0006, 0x2f18, 0x6b26, 0x682b, 0x0000, ++ 0x080c, 0xac7d, 0x00ee, 0x00be, 0x00ce, 0x00de, 0x0005, 0x00de, ++ 0x0005, 0x00c6, 0x680c, 0x9065, 0x0508, 0x6114, 0x0096, 0x2148, ++ 0xa964, 0x009e, 0x918c, 0x00ff, 0x918e, 0x0035, 0x1180, 0x2009, ++ 0x1837, 0x210c, 0x918c, 0x0028, 0x1150, 0x080c, 0x73bc, 0x0138, ++ 0x0006, 0x2009, 0x188b, 0x2104, 0xc095, 0x200a, 0x000e, 0x6807, ++ 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x9861, 0x00ce, 0x00de, ++ 0x0005, 0x2001, 0x180c, 0x2014, 0xc2ed, 0x2202, 0x00de, 0x00fe, ++ 0x0005, 0x00f6, 0x00d6, 0x2069, 0x19e7, 0x6830, 0x9086, 0x0000, ++ 0x1570, 0x2001, 0x180c, 0x2014, 0xd2e4, 0x0130, 0xc2e4, 0x2202, ++ 0x080c, 0x969c, 0x2069, 0x19e7, 0x2001, 0x180c, 0x200c, 0xd1c4, ++ 0x1508, 0x6838, 0x907d, 0x01d8, 0x6a04, 0x9296, 0x0000, 0x1904, ++ 0x985a, 0x7920, 0x918e, 0x0009, 0x0588, 0x6833, 0x0001, 0x683e, ++ 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6, 0x2091, 0x2400, ++ 0x002e, 0x080c, 0x1c46, 0x1178, 0x012e, 0x080c, 0xa0d0, 0x00de, ++ 0x00fe, 0x0005, 0xc1c4, 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, ++ 0x746c, 0x006e, 0x08b0, 0x012e, 0x6843, 0x0000, 0x7803, 0x0002, ++ 0x780c, 0x9015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, ++ 0x683f, 0x0000, 0x0c20, 0x683a, 0x6836, 0x0cc0, 0x7908, 0xd1fc, ++ 0x1198, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, ++ 0x0126, 0x00f6, 0x2091, 0x2400, 0x002e, 0x080c, 0x1c46, 0x19d8, ++ 0x012e, 0x080c, 0xa051, 0x0858, 0x2001, 0x1837, 0x2004, 0x9084, ++ 0x0028, 0x1188, 0x2001, 0x197c, 0x2004, 0x9086, 0xaaaa, 0x0158, ++ 0x2001, 0x19e8, 0x2004, 0x9005, 0x11f0, 0x2001, 0x188b, 0x200c, ++ 0xc185, 0xc18c, 0x2102, 0x2f00, 0x6833, 0x0001, 0x683e, 0x6847, ++ 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6, 0x2091, 0x2400, 0x002e, ++ 0x080c, 0x1c46, 0x1904, 0x97fb, 0x012e, 0x6a3c, 0x2278, 0x080c, ++ 0x9fdb, 0x0804, 0x97ef, 0x2011, 0x188b, 0x2204, 0xc08d, 0x2012, ++ 0x0804, 0x97ef, 0x6a04, 0x9296, 0x0006, 0x0904, 0x97d9, 0x0804, ++ 0x97b1, 0x6020, 0x9084, 0x000f, 0x000b, 0x0005, 0x9875, 0x987a, ++ 0x9ce8, 0x9d77, 0x987a, 0x9ce8, 0x9d77, 0x9875, 0x987a, 0x9875, ++ 0x9875, 0x9875, 0x9875, 0x9875, 0x9875, 0x080c, 0x9588, 0x080c, ++ 0x968d, 0x0005, 0x00b6, 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, ++ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, ++ 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0dd5, 0x6110, 0x2158, 0xb9c0, ++ 0x2c78, 0x2061, 0x0100, 0x619a, 0x908a, 0x0040, 0x1a04, 0x98e6, ++ 0x005b, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, ++ 0x013e, 0x015e, 0x00be, 0x0005, 0x9a6b, 0x9aa6, 0x9acf, 0x9b77, ++ 0x9b99, 0x9b9f, 0x9bac, 0x9bb4, 0x9bc0, 0x9bc6, 0x9bd7, 0x9bc6, ++ 0x9c2f, 0x9bb4, 0x9c3b, 0x9c41, 0x9bc0, 0x9c41, 0x9c4d, 0x98e4, ++ 0x98e4, 0x98e4, 0x98e4, 0x98e4, 0x98e4, 0x98e4, 0x98e4, 0x98e4, ++ 0x98e4, 0x98e4, 0xa46d, 0xa490, 0xa4a1, 0xa4c1, 0xa4f3, 0x9bac, ++ 0x98e4, 0x9bac, 0x9bc6, 0x98e4, 0x9acf, 0x9b77, 0x98e4, 0xa8a9, ++ 0x9bc6, 0x98e4, 0xa8c5, 0x9bc6, 0x98e4, 0x9bc0, 0x9a65, 0x9907, ++ 0x98e4, 0xa8e1, 0xa94e, 0xaa25, 0x98e4, 0xaa32, 0x9ba9, 0xaa5d, ++ 0x98e4, 0xa4fd, 0xaa8a, 0x98e4, 0x080c, 0x0dd5, 0x2100, 0x005b, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, ++ 0x015e, 0x00be, 0x0005, 0xab25, 0xabd7, 0x9905, 0x992e, 0x99da, ++ 0x99e5, 0x9905, 0x9bac, 0x9905, 0x9a2c, 0x9a38, 0x9949, 0x9905, ++ 0x9964, 0x9998, 0xad3f, 0xad84, 0x9bc6, 0x080c, 0x0dd5, 0x00d6, ++ 0x0096, 0x080c, 0x9c60, 0x7003, 0x2414, 0x7007, 0x0018, 0x700b, ++ 0x0800, 0x7814, 0x2048, 0xa83c, 0x700e, 0xa850, 0x7022, 0xa854, ++ 0x7026, 0x60c3, 0x0018, 0x080c, 0xa247, 0x009e, 0x00de, 0x0005, ++ 0x7810, 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x080c, 0xadcb, 0x1118, ++ 0x9084, 0xff80, 0x0110, 0x9085, 0x0001, 0x0005, 0x00d6, 0x0096, ++ 0x080c, 0x9c60, 0x7003, 0x0500, 0x7814, 0x2048, 0xa874, 0x700a, ++ 0xa878, 0x700e, 0xa87c, 0x7012, 0xa880, 0x7016, 0xa884, 0x701a, ++ 0xa888, 0x701e, 0x60c3, 0x0010, 0x080c, 0xa247, 0x009e, 0x00de, ++ 0x0005, 0x00d6, 0x0096, 0x080c, 0x9c60, 0x7003, 0x0500, 0x7814, ++ 0x2048, 0xa8cc, 0x700a, 0xa8d0, 0x700e, 0xa8d4, 0x7012, 0xa8d8, ++ 0x7016, 0xa8dc, 0x701a, 0xa8e0, 0x701e, 0x60c3, 0x0010, 0x080c, ++ 0xa247, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x9c60, 0x20e9, 0x0000, 0x2001, 0x19a3, 0x2003, ++ 0x0000, 0x7814, 0x2048, 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, ++ 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x2001, 0x19a3, ++ 0x0016, 0x200c, 0x2001, 0x0001, 0x080c, 0x23b7, 0x080c, 0xd867, ++ 0x9006, 0x080c, 0x23b7, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, ++ 0x0c28, 0x04d9, 0x080c, 0xa247, 0x012e, 0x009e, 0x00de, 0x0005, ++ 0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x9cab, 0x20e9, ++ 0x0000, 0x2001, 0x19a3, 0x2003, 0x0000, 0x7814, 0x2048, 0xa86f, ++ 0x0200, 0xa873, 0x0000, 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, ++ 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x2001, 0x19a3, ++ 0x0016, 0x200c, 0x080c, 0xd867, 0x001e, 0xa804, 0x9005, 0x0110, ++ 0x2048, 0x0c60, 0x0051, 0x7814, 0x2048, 0x080c, 0x0fb1, 0x080c, ++ 0xa247, 0x012e, 0x009e, 0x00de, 0x0005, 0x60c0, 0x8004, 0x9084, ++ 0x0003, 0x9005, 0x0130, 0x9082, 0x0004, 0x20a3, 0x0000, 0x8000, ++ 0x1de0, 0x0005, 0x080c, 0x9c60, 0x7003, 0x7800, 0x7808, 0x8007, ++ 0x700a, 0x60c3, 0x0008, 0x0804, 0xa247, 0x00d6, 0x00e6, 0x080c, ++ 0x9cab, 0x7814, 0x9084, 0xff00, 0x2073, 0x0200, 0x8e70, 0x8e70, ++ 0x9095, 0x0010, 0x2272, 0x8e70, 0x2073, 0x0034, 0x8e70, 0x2069, ++ 0x1805, 0x20a9, 0x0004, 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x99fb, ++ 0x2069, 0x1801, 0x20a9, 0x0004, 0x2d76, 0x8d68, 0x8e70, 0x1f04, ++ 0x9a04, 0x2069, 0x19b3, 0x9086, 0xdf00, 0x0110, 0x2069, 0x19cd, ++ 0x20a9, 0x001a, 0x9e86, 0x0260, 0x1148, 0x00c6, 0x2061, 0x0200, ++ 0x6010, 0x8000, 0x6012, 0x00ce, 0x2071, 0x0240, 0x2d04, 0x8007, ++ 0x2072, 0x8d68, 0x8e70, 0x1f04, 0x9a12, 0x60c3, 0x004c, 0x080c, ++ 0xa247, 0x00ee, 0x00de, 0x0005, 0x080c, 0x9c60, 0x7003, 0x6300, ++ 0x7007, 0x0028, 0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, 0xa247, ++ 0x00d6, 0x0026, 0x0016, 0x080c, 0x9cab, 0x7003, 0x0200, 0x7814, ++ 0x700e, 0x00e6, 0x9ef0, 0x0004, 0x2009, 0x0001, 0x2011, 0x000c, ++ 0x2069, 0x1923, 0x6810, 0xd084, 0x1148, 0x2073, 0x0500, 0x8e70, ++ 0x2073, 0x0000, 0x8e70, 0x8108, 0x9290, 0x0004, 0x2073, 0x0800, ++ 0x8e70, 0x2073, 0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, ++ 0xa247, 0x001e, 0x002e, 0x00de, 0x0005, 0x2001, 0x1818, 0x2004, ++ 0x609a, 0x0804, 0xa247, 0x080c, 0x9c60, 0x7003, 0x5200, 0x2069, ++ 0x1847, 0x6804, 0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x2871, ++ 0x710e, 0x001e, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, ++ 0x20e9, 0x0000, 0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, ++ 0x1801, 0x20a1, 0x0254, 0x4003, 0x080c, 0xadcb, 0x1120, 0xb8a0, ++ 0x9082, 0x007f, 0x0248, 0x2001, 0x181f, 0x2004, 0x7032, 0x2001, ++ 0x1820, 0x2004, 0x7036, 0x0030, 0x2001, 0x1818, 0x2004, 0x9084, ++ 0x00ff, 0x7036, 0x60c3, 0x001c, 0x0804, 0xa247, 0x080c, 0x9c60, ++ 0x7003, 0x0500, 0x080c, 0xadcb, 0x1120, 0xb8a0, 0x9082, 0x007f, ++ 0x0248, 0x2001, 0x181f, 0x2004, 0x700a, 0x2001, 0x1820, 0x2004, ++ 0x700e, 0x0030, 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, 0x700e, ++ 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, ++ 0x20a1, 0x0250, 0x4003, 0x60c3, 0x0010, 0x0804, 0xa247, 0x080c, ++ 0x9c60, 0x9006, 0x080c, 0x693c, 0xb8a0, 0x9086, 0x007e, 0x1130, ++ 0x7003, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, ++ 0x904d, 0x0120, 0x9006, 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, ++ 0x0300, 0xb8a0, 0x9086, 0x007e, 0x1904, 0x9b3e, 0x00d6, 0x2069, ++ 0x196c, 0x2001, 0x1837, 0x2004, 0xd0a4, 0x0188, 0x6800, 0x700a, ++ 0x6808, 0x9084, 0x2000, 0x7012, 0x080c, 0xade2, 0x680c, 0x7016, ++ 0x701f, 0x2710, 0x6818, 0x7022, 0x681c, 0x7026, 0x0090, 0x6800, ++ 0x700a, 0x6804, 0x700e, 0x6808, 0x080c, 0x73bc, 0x1118, 0x9084, ++ 0x37ff, 0x0010, 0x9084, 0x3fff, 0x7012, 0x080c, 0xade2, 0x680c, ++ 0x7016, 0x00de, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, ++ 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, ++ 0x1801, 0x20a1, 0x025a, 0x4003, 0x00d6, 0x080c, 0xab0c, 0x2069, ++ 0x1974, 0x2071, 0x024e, 0x6800, 0xc0dd, 0x7002, 0x080c, 0x56d3, ++ 0xd0e4, 0x0110, 0x680c, 0x700e, 0x00de, 0x04a8, 0x2001, 0x1837, ++ 0x2004, 0xd0a4, 0x0170, 0x0016, 0x2001, 0x196d, 0x200c, 0x60e0, ++ 0x9106, 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c, 0x28b2, 0x61e2, ++ 0x001e, 0x20e1, 0x0001, 0x2099, 0x196c, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1805, ++ 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1, ++ 0x025a, 0x4003, 0x080c, 0xab0c, 0x20a1, 0x024e, 0x20a9, 0x0008, ++ 0x2099, 0x1974, 0x4003, 0x60c3, 0x0074, 0x0804, 0xa247, 0x080c, ++ 0x9c60, 0x7003, 0x2010, 0x7007, 0x0014, 0x700b, 0x0800, 0x700f, ++ 0x2000, 0x9006, 0x00f6, 0x2079, 0x1847, 0x7904, 0x00fe, 0xd1ac, ++ 0x1110, 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085, 0x0010, 0x9085, ++ 0x0002, 0x00d6, 0x0804, 0x9c10, 0x7026, 0x60c3, 0x0014, 0x0804, ++ 0xa247, 0x080c, 0x9c60, 0x7003, 0x5000, 0x0804, 0x9ae9, 0x080c, ++ 0x9c60, 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3, 0x0014, 0x0804, ++ 0xa247, 0x080c, 0x9ca2, 0x0010, 0x080c, 0x9cab, 0x7003, 0x0200, ++ 0x60c3, 0x0004, 0x0804, 0xa247, 0x080c, 0x9cab, 0x7003, 0x0100, ++ 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, 0xa247, ++ 0x080c, 0x9cab, 0x7003, 0x0200, 0x0804, 0x9ae9, 0x080c, 0x9cab, ++ 0x7003, 0x0100, 0x782c, 0x9005, 0x0110, 0x700a, 0x0010, 0x700b, ++ 0x0003, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0xa247, 0x00d6, ++ 0x080c, 0x9cab, 0x7003, 0x0210, 0x7007, 0x0014, 0x700b, 0x0800, ++ 0xb894, 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184, 0x0030, 0x0190, ++ 0xb998, 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118, 0x700f, 0x2100, ++ 0x0058, 0x700f, 0x0100, 0x0040, 0x700f, 0x0400, 0x0028, 0x700f, ++ 0x0700, 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079, 0x1847, 0x7904, ++ 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085, ++ 0x0010, 0x2009, 0x1869, 0x210c, 0xd184, 0x1110, 0x9085, 0x0002, ++ 0x0026, 0x2009, 0x1867, 0x210c, 0xd1e4, 0x0150, 0xc0c5, 0xbacc, ++ 0xd28c, 0x1108, 0xc0cd, 0x9094, 0x0030, 0x9296, 0x0010, 0x0140, ++ 0xd1ec, 0x0130, 0x9094, 0x0030, 0x9296, 0x0010, 0x0108, 0xc0bd, ++ 0x002e, 0x7026, 0x60c3, 0x0014, 0x00de, 0x0804, 0xa247, 0x080c, ++ 0x9cab, 0x7003, 0x0210, 0x7007, 0x0014, 0x700f, 0x0100, 0x60c3, ++ 0x0014, 0x0804, 0xa247, 0x080c, 0x9cab, 0x7003, 0x0200, 0x0804, ++ 0x9a6f, 0x080c, 0x9cab, 0x7003, 0x0100, 0x700b, 0x0003, 0x700f, ++ 0x2a00, 0x60c3, 0x0008, 0x0804, 0xa247, 0x080c, 0x9cab, 0x7003, ++ 0x0100, 0x700b, 0x000b, 0x60c3, 0x0008, 0x0804, 0xa247, 0x0026, ++ 0x00d6, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0040, ++ 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, ++ 0x080c, 0xab21, 0xb810, 0x9305, 0x7002, 0xb814, 0x7006, 0x2069, ++ 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x9485, 0x0029, 0x7012, ++ 0x004e, 0x003e, 0x00de, 0x080c, 0xa235, 0x721a, 0x9f95, 0x0000, ++ 0x7222, 0x7027, 0xffff, 0x2071, 0x024c, 0x002e, 0x0005, 0x0026, ++ 0x080c, 0xab21, 0x7003, 0x02ff, 0x7007, 0xfffc, 0x00d6, 0x2069, ++ 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x00de, 0x7013, 0x2029, ++ 0x0c10, 0x7003, 0x0100, 0x7007, 0x0000, 0x700b, 0xfc02, 0x700f, ++ 0x0000, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3300, ++ 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, ++ 0x2300, 0x2021, 0x0100, 0x080c, 0xab21, 0xb810, 0x9305, 0x7002, ++ 0xb814, 0x7006, 0x2069, 0x1800, 0xb810, 0x9005, 0x1140, 0xb814, ++ 0x9005, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0020, 0x687c, ++ 0x700a, 0x6880, 0x700e, 0x0000, 0x9485, 0x0098, 0x7012, 0x004e, ++ 0x003e, 0x00de, 0x080c, 0xa235, 0x721a, 0x7a08, 0x7222, 0x2f10, ++ 0x7226, 0x2071, 0x024c, 0x002e, 0x0005, 0x080c, 0xa235, 0x721a, ++ 0x7a08, 0x7222, 0x7814, 0x7026, 0x2071, 0x024c, 0x002e, 0x0005, ++ 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, ++ 0x0240, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0dd5, 0x908a, 0x0092, ++ 0x1a0c, 0x0dd5, 0x6110, 0x2158, 0xb9c0, 0x2c78, 0x2061, 0x0100, ++ 0x619a, 0x9082, 0x0085, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x00be, 0x0005, 0x9d19, 0x9d28, 0x9d33, 0x9d17, 0x9d17, 0x9d17, ++ 0x9d19, 0x9d17, 0x9d17, 0x9d17, 0x9d17, 0x9d17, 0x9d17, 0x080c, ++ 0x0dd5, 0x0411, 0x60c3, 0x0000, 0x0026, 0x080c, 0x2ba5, 0x0228, ++ 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, 0x002e, 0x0804, 0xa247, ++ 0x0431, 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3, ++ 0x000c, 0x0804, 0xa247, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300, ++ 0x60c3, 0x0004, 0x0804, 0xa247, 0x0026, 0x080c, 0xab21, 0xb810, ++ 0x9085, 0x8100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x687c, ++ 0x700a, 0x6880, 0x700e, 0x7013, 0x0009, 0x0804, 0x9c7b, 0x0026, ++ 0x080c, 0xab21, 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006, ++ 0x2069, 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x2001, 0x0099, ++ 0x7012, 0x0804, 0x9cdd, 0x0026, 0x080c, 0xab21, 0xb810, 0x9085, ++ 0x8500, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x687c, 0x700a, ++ 0x6880, 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, 0x9cdd, 0x00b6, ++ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071, ++ 0x0240, 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0dd5, 0x908a, 0x0054, ++ 0x1a0c, 0x0dd5, 0x7910, 0x2158, 0xb9c0, 0x2061, 0x0100, 0x619a, ++ 0x9082, 0x0040, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x0005, 0x9dae, 0x9e6a, 0x9e3d, 0x9f8c, 0x9dac, 0x9dac, 0x9dac, ++ 0x9dac, 0x9dac, 0x9dac, 0x9dac, 0xa66f, 0xa677, 0xa67f, 0xa687, ++ 0x9dac, 0xaa69, 0x9dac, 0xa667, 0x080c, 0x0dd5, 0x0096, 0x780b, ++ 0xffff, 0x080c, 0x9e19, 0x7914, 0x2148, 0xa978, 0x7956, 0xae64, ++ 0x96b4, 0x00ff, 0x9686, 0x0008, 0x1148, 0xa8b4, 0x7032, 0xa8b8, ++ 0x7036, 0xa8bc, 0x703a, 0xa8c0, 0x703e, 0x0008, 0x7132, 0xa97c, ++ 0x9184, 0x000f, 0x1118, 0x2001, 0x0005, 0x0040, 0xd184, 0x0118, ++ 0x2001, 0x0004, 0x0018, 0x9084, 0x0006, 0x8004, 0x2010, 0x785c, ++ 0x9084, 0x00ff, 0x8007, 0x9205, 0x7042, 0xd1ac, 0x0158, 0x7047, ++ 0x0002, 0x9686, 0x0008, 0x1118, 0x080c, 0x18ac, 0x0010, 0x080c, ++ 0x1725, 0x0050, 0xd1b4, 0x0118, 0x7047, 0x0001, 0x0028, 0x7047, ++ 0x0000, 0x9016, 0x2230, 0x0010, 0xaab0, 0xaeac, 0x726a, 0x766e, ++ 0x20a9, 0x0008, 0x20e9, 0x0000, 0xa860, 0x20e0, 0xa85c, 0x9080, ++ 0x0023, 0x2098, 0x20a1, 0x0252, 0x2069, 0x0200, 0x6813, 0x0018, ++ 0x4003, 0x6813, 0x0008, 0x60c3, 0x0020, 0x6017, 0x0009, 0x2001, ++ 0x1a03, 0x2003, 0x07d0, 0x2001, 0x1a02, 0x2003, 0x0009, 0x009e, ++ 0x0005, 0x6813, 0x0008, 0xba8c, 0x8210, 0xb8cc, 0xd084, 0x0128, ++ 0x7a46, 0x7b14, 0x7b4a, 0x722e, 0x732a, 0x9294, 0x00ff, 0xba8e, ++ 0x8217, 0x721a, 0xba10, 0x9295, 0x0600, 0x7202, 0xba14, 0x7206, ++ 0x2069, 0x1800, 0x6a7c, 0x720a, 0x6a80, 0x720e, 0x7013, 0x0829, ++ 0x2f10, 0x7222, 0x7027, 0xffff, 0x0005, 0x00d6, 0x0096, 0x0081, ++ 0x7814, 0x2048, 0xa890, 0x7002, 0xa88c, 0x7006, 0xa8b0, 0x700a, ++ 0xa8ac, 0x700e, 0x60c3, 0x000c, 0x009e, 0x00de, 0x0804, 0xa247, ++ 0x6813, 0x0008, 0xb810, 0x9085, 0x0500, 0x7002, 0xb814, 0x7006, ++ 0x2069, 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x7013, 0x0889, ++ 0x080c, 0xa235, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x2071, ++ 0x024c, 0x0005, 0x00d6, 0x0096, 0x080c, 0x9f6a, 0x7814, 0x2048, ++ 0x080c, 0xcb33, 0x1130, 0x7814, 0x9084, 0x0700, 0x8007, 0x0033, ++ 0x0010, 0x9006, 0x001b, 0x009e, 0x00de, 0x0005, 0x9e88, 0x9ef1, ++ 0x9f01, 0x9f27, 0x9f33, 0x9f44, 0x9f4c, 0x9e86, 0x080c, 0x0dd5, ++ 0x0016, 0x0036, 0xa97c, 0x918c, 0x0003, 0x0118, 0x9186, 0x0003, ++ 0x1198, 0xaba8, 0x7824, 0xd0cc, 0x1168, 0x7316, 0xa898, 0x701a, ++ 0xa894, 0x701e, 0x003e, 0x001e, 0x2001, 0x19b1, 0x2004, 0x60c2, ++ 0x0804, 0xa247, 0xc3e5, 0x0c88, 0x9186, 0x0001, 0x190c, 0x0dd5, ++ 0xaba8, 0x7824, 0xd0cc, 0x1904, 0x9eee, 0x7316, 0xa898, 0x701a, ++ 0xa894, 0x701e, 0xa8a4, 0x7026, 0xa8ac, 0x702e, 0x2009, 0x0018, ++ 0x9384, 0x0300, 0x0570, 0xd3c4, 0x0110, 0xa8ac, 0x9108, 0xd3cc, ++ 0x0110, 0xa8a4, 0x9108, 0x6810, 0x9085, 0x0010, 0x6812, 0x2011, ++ 0x0258, 0x20e9, 0x0000, 0x22a0, 0x0156, 0x20a9, 0x0008, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x002c, 0x2098, 0x4003, 0x6810, 0x8000, ++ 0x6812, 0x2011, 0x0240, 0x22a0, 0x20a9, 0x0005, 0x4003, 0x6810, ++ 0xc084, 0x6812, 0x015e, 0x9184, 0x0003, 0x0118, 0x2019, 0x0245, ++ 0x201a, 0x61c2, 0x003e, 0x001e, 0x0804, 0xa247, 0xc3e5, 0x0804, ++ 0x9ead, 0x2011, 0x0008, 0x2001, 0x180f, 0x2004, 0xd0a4, 0x0110, ++ 0x2011, 0x0028, 0x7824, 0xd0cc, 0x1110, 0x7216, 0x0470, 0x0ce8, ++ 0xc2e5, 0x2011, 0x0302, 0x0016, 0x782c, 0x701a, 0x7930, 0x711e, ++ 0x9105, 0x0108, 0xc2dd, 0x001e, 0x7824, 0xd0cc, 0x0108, 0xc2e5, ++ 0x7216, 0x7027, 0x0012, 0x702f, 0x0008, 0x7043, 0x7000, 0x7047, ++ 0x0500, 0x704f, 0x000a, 0x2069, 0x0200, 0x6813, 0x0009, 0x2071, ++ 0x0240, 0x700b, 0x2500, 0x60c3, 0x0032, 0x0804, 0xa247, 0x2011, ++ 0x0028, 0x7824, 0xd0cc, 0x1128, 0x7216, 0x60c3, 0x0018, 0x0804, ++ 0xa247, 0x0cd0, 0xc2e5, 0x2011, 0x0100, 0x7824, 0xd0cc, 0x0108, ++ 0xc2e5, 0x7216, 0x702f, 0x0008, 0x7858, 0x9084, 0x00ff, 0x7036, ++ 0x60c3, 0x0020, 0x0804, 0xa247, 0x2011, 0x0008, 0x7824, 0xd0cc, ++ 0x0108, 0xc2e5, 0x7216, 0x0c08, 0x0036, 0x7b14, 0x9384, 0xff00, ++ 0x7816, 0x9384, 0x00ff, 0x8001, 0x1138, 0x7824, 0xd0cc, 0x0108, ++ 0xc2e5, 0x7216, 0x003e, 0x0888, 0x0046, 0x2021, 0x0800, 0x0006, ++ 0x7824, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x7416, 0x004e, 0x701e, ++ 0x003e, 0x0818, 0x00d6, 0x6813, 0x0008, 0xb810, 0x9085, 0x0700, ++ 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x687c, 0x700a, 0x6880, ++ 0x700e, 0x7824, 0xd0cc, 0x1168, 0x7013, 0x0898, 0x080c, 0xa235, ++ 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x2071, 0x024c, 0x00de, ++ 0x0005, 0x7013, 0x0889, 0x0c90, 0x0016, 0x7814, 0x9084, 0x0700, ++ 0x8007, 0x0013, 0x001e, 0x0005, 0x9f9c, 0x9f9c, 0x9f9e, 0x9f9c, ++ 0x9f9c, 0x9f9c, 0x9fb8, 0x9f9c, 0x080c, 0x0dd5, 0x7914, 0x918c, ++ 0x08ff, 0x918d, 0xf600, 0x7916, 0x2009, 0x0003, 0x00b9, 0x2069, ++ 0x1847, 0x6804, 0xd0bc, 0x0130, 0x682c, 0x9084, 0x00ff, 0x8007, ++ 0x7032, 0x0010, 0x7033, 0x3f00, 0x60c3, 0x0001, 0x0804, 0xa247, ++ 0x2009, 0x0003, 0x0019, 0x7033, 0x7f00, 0x0cb0, 0x0016, 0x080c, ++ 0xab21, 0x001e, 0xb810, 0x9085, 0x0100, 0x7002, 0xb814, 0x7006, ++ 0x2069, 0x1800, 0x6a7c, 0x720a, 0x6a80, 0x720e, 0x7013, 0x0888, ++ 0x918d, 0x0008, 0x7116, 0x080c, 0xa235, 0x721a, 0x7a08, 0x7222, ++ 0x2f10, 0x7226, 0x0005, 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, ++ 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, 0x7160, ++ 0x7810, 0x2058, 0x76dc, 0x96b4, 0x0028, 0x0110, 0x737c, 0x7480, ++ 0x2500, 0x76dc, 0x96b4, 0x0028, 0x0140, 0x2001, 0x04ff, 0x6062, ++ 0x6067, 0xffff, 0x636a, 0x646e, 0x0050, 0x2001, 0x00ff, 0x9085, ++ 0x0400, 0x6062, 0x6067, 0xffff, 0x606b, 0x0000, 0x616e, 0xb8b8, ++ 0x6073, 0x0530, 0x6077, 0x0008, 0xb88c, 0x8000, 0x9084, 0x00ff, ++ 0xb88e, 0x8007, 0x9085, 0x0020, 0x607a, 0x607f, 0x0000, 0x2b00, ++ 0x6082, 0x6087, 0xffff, 0x7814, 0x0096, 0x2048, 0xa838, 0x608a, ++ 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0x009e, 0xb86c, ++ 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x2001, ++ 0x1837, 0x2004, 0x9084, 0x0028, 0x0128, 0x609f, 0x0000, 0x2001, ++ 0x0092, 0x0048, 0x6028, 0xc0bd, 0x602a, 0x609f, 0x00ff, 0x6027, ++ 0xffff, 0x2001, 0x00b2, 0x6016, 0x2009, 0x07d0, 0x080c, 0x857e, ++ 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00be, ++ 0x0005, 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, ++ 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, 0x7160, 0x7810, 0x2058, ++ 0xb8a0, 0x2028, 0x76dc, 0xd6ac, 0x1168, 0x9582, 0x007e, 0x1250, ++ 0x2500, 0x9094, 0xff80, 0x1130, 0x9080, 0x3325, 0x2015, 0x9294, ++ 0x00ff, 0x0020, 0xb910, 0xba14, 0x737c, 0x7480, 0x70dc, 0xd0ac, ++ 0x1130, 0x9582, 0x007e, 0x1218, 0x9584, 0xff80, 0x0138, 0x9185, ++ 0x0400, 0x6062, 0x6266, 0x636a, 0x646e, 0x0030, 0x6063, 0x0400, ++ 0x6266, 0x606b, 0x0000, 0x616e, 0xb8b8, 0x6072, 0x6077, 0x0000, ++ 0xb864, 0xd0a4, 0x0110, 0x6077, 0x0008, 0xb88c, 0x8000, 0x9084, ++ 0x00ff, 0xb88e, 0x8007, 0x9085, 0x0020, 0x607a, 0x607f, 0x0000, ++ 0x2b00, 0x6082, 0x6087, 0xffff, 0x7814, 0x0096, 0x2048, 0xa838, ++ 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0x009e, ++ 0xb86c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, ++ 0xbac0, 0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, 0x0000, 0x00fe, ++ 0x2009, 0x0092, 0x6116, 0x2009, 0x07d0, 0x080c, 0x857e, 0x003e, ++ 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00be, 0x0005, ++ 0x00b6, 0x0096, 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, 0x0036, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x7810, 0x2058, 0xb8a0, 0x2028, ++ 0xb910, 0xba14, 0x737c, 0x7480, 0x7820, 0x90be, 0x0006, 0x0904, ++ 0xa1a4, 0x90be, 0x000a, 0x1904, 0xa160, 0xb8c0, 0x609e, 0x7814, ++ 0x2048, 0xa87c, 0xd0fc, 0x0558, 0xaf90, 0x9784, 0xff00, 0x9105, ++ 0x6062, 0x873f, 0x9784, 0xff00, 0x0006, 0x7814, 0x2048, 0xa878, ++ 0xc0fc, 0x9005, 0x000e, 0x1160, 0xaf94, 0x87ff, 0x0198, 0x2039, ++ 0x0098, 0x9705, 0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, 0x0038, ++ 0x9185, 0x2200, 0x6062, 0x6073, 0x0129, 0x6077, 0x0000, 0xb8c0, ++ 0x609e, 0x0050, 0x2039, 0x0029, 0x9705, 0x6072, 0x0cc0, 0x9185, ++ 0x0200, 0x6062, 0x6073, 0x2029, 0xa87c, 0xd0fc, 0x0118, 0xaf94, ++ 0x87ff, 0x1120, 0x2f00, 0x6082, 0x7808, 0x6086, 0x6266, 0x636a, ++ 0x646e, 0x6077, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, ++ 0x8007, 0x607a, 0x607f, 0x0000, 0xa838, 0x608a, 0xa834, 0x608e, ++ 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0x080c, 0xab06, 0x2009, 0x07d0, 0x60c4, 0x9084, ++ 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x857e, 0x003e, ++ 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x009e, 0x00be, 0x0005, ++ 0x7804, 0x9086, 0x0040, 0x0904, 0xa1e0, 0x9185, 0x0100, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x60af, ++ 0x95d5, 0x60d7, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, ++ 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, ++ 0x7814, 0x2048, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, ++ 0xa844, 0x60ca, 0xb86c, 0x60ce, 0xbac0, 0x629e, 0x080c, 0xab06, ++ 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, 0x0110, 0x2009, ++ 0x1b58, 0x080c, 0x857e, 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, ++ 0x00ee, 0x009e, 0x00be, 0x0005, 0x7814, 0x2048, 0xa87c, 0x9084, ++ 0x0003, 0x9086, 0x0002, 0x0904, 0xa1fc, 0x9185, 0x0100, 0x6062, ++ 0x6266, 0x636a, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0xb88c, ++ 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x7838, 0x607e, ++ 0x2f00, 0x6086, 0x7808, 0x6082, 0xa890, 0x608a, 0xa88c, 0x608e, ++ 0xa8b0, 0x60c6, 0xa8ac, 0x60ca, 0xa8ac, 0x7930, 0x9108, 0x7932, ++ 0xa8b0, 0x792c, 0x9109, 0x792e, 0xb86c, 0x60ce, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0xbac0, 0x629e, 0x080c, 0xaae3, 0x0804, 0xa190, ++ 0xb8cc, 0xd084, 0x0148, 0xb88c, 0x7814, 0x2048, 0xb88c, 0x7846, ++ 0xa836, 0x2900, 0xa83a, 0xb04a, 0x9185, 0x0600, 0x6062, 0x6266, ++ 0x636a, 0x646e, 0x6073, 0x0829, 0x6077, 0x0000, 0x60af, 0x9575, ++ 0x60d7, 0x0000, 0x0804, 0xa173, 0x9185, 0x0700, 0x6062, 0x6266, ++ 0x636a, 0x646e, 0x7824, 0xd0cc, 0x7826, 0x0118, 0x6073, 0x0889, ++ 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0xb88c, 0x8000, 0x9084, ++ 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, ++ 0x7808, 0x6082, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, ++ 0xa844, 0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, ++ 0xbac0, 0x629e, 0x7824, 0xd0cc, 0x0120, 0x080c, 0xab06, 0x0804, ++ 0xa190, 0x080c, 0xaae3, 0x0804, 0xa190, 0x7a10, 0x00b6, 0x2258, ++ 0xba8c, 0x8210, 0x9294, 0x00ff, 0xba8e, 0x00be, 0x8217, 0x0005, ++ 0x00d6, 0x2069, 0x19e7, 0x6843, 0x0001, 0x00de, 0x0005, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x00f1, 0x080c, 0x8570, 0x0005, 0x0016, ++ 0x2001, 0x180c, 0x200c, 0x9184, 0x0600, 0x9086, 0x0600, 0x0128, ++ 0x0089, 0x080c, 0x8570, 0x001e, 0x0005, 0xc1e5, 0x2001, 0x180c, ++ 0x2102, 0x2001, 0x19e8, 0x2003, 0x0000, 0x2001, 0x19f0, 0x2003, ++ 0x0000, 0x0c88, 0x0006, 0x6014, 0x9084, 0x1804, 0x9085, 0x0009, ++ 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, ++ 0x61a4, 0x60a7, 0x95f5, 0x6014, 0x9084, 0x1804, 0x9085, 0x0008, ++ 0x6016, 0x000e, 0xa001, 0xa001, 0xa001, 0x61a6, 0x00ce, 0x001e, ++ 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x73bc, 0x11e8, 0x2001, 0x1a03, 0x2004, 0x9005, ++ 0x1904, 0xa2d9, 0x0066, 0x2031, 0x0001, 0x080c, 0x746c, 0x006e, ++ 0x1160, 0x2061, 0x0100, 0x6020, 0xd0b4, 0x1120, 0x6024, 0xd084, ++ 0x090c, 0x0dd5, 0x080c, 0x8570, 0x0460, 0x00c6, 0x2061, 0x19e7, ++ 0x00d0, 0x6904, 0x9194, 0x4000, 0x0548, 0x080c, 0xa273, 0x080c, ++ 0x2cff, 0x00c6, 0x2061, 0x19e7, 0x6128, 0x9192, 0x0008, 0x1258, ++ 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, 0x8570, ++ 0x080c, 0xa26a, 0x0070, 0x6124, 0x91e5, 0x0000, 0x0140, 0x080c, ++ 0xe9fe, 0x080c, 0x8579, 0x2009, 0x0014, 0x080c, 0xaedc, 0x00ce, ++ 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0x1a03, ++ 0x2004, 0x9005, 0x1db0, 0x00c6, 0x2061, 0x19e7, 0x6128, 0x9192, ++ 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x8570, 0x080c, ++ 0x5ed9, 0x2009, 0x1846, 0x2114, 0x8210, 0x220a, 0x0c10, 0x0096, ++ 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, 0x8586, 0x2071, ++ 0x19e7, 0x713c, 0x81ff, 0x0904, 0xa37d, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x73bc, 0x1500, 0x0036, 0x2019, 0x0002, 0x080c, ++ 0xa5b6, 0x003e, 0x713c, 0x2160, 0x080c, 0xe9fe, 0x2009, 0x004a, ++ 0x6220, 0x9296, 0x0009, 0x1130, 0x6114, 0x2148, 0xa87b, 0x0006, ++ 0x2009, 0x004a, 0x080c, 0xaedc, 0x0066, 0x2031, 0x0001, 0x080c, ++ 0x746c, 0x006e, 0x0804, 0xa37d, 0x080c, 0xa389, 0x0904, 0xa37d, ++ 0x6904, 0xd1f4, 0x0904, 0xa384, 0x080c, 0x2cff, 0x00c6, 0x703c, ++ 0x9065, 0x090c, 0x0dd5, 0x6020, 0x00ce, 0x9086, 0x0006, 0x1528, ++ 0x61c8, 0x60c4, 0x9105, 0x1508, 0x2009, 0x180c, 0x2104, 0xd0d4, ++ 0x01e0, 0x6214, 0x9294, 0x1800, 0x1128, 0x6224, 0x9294, 0x0002, ++ 0x1560, 0x0030, 0xc0d4, 0x200a, 0xd0cc, 0x0110, 0x080c, 0x2c52, ++ 0x6014, 0x9084, 0xe7fd, 0x9085, 0x0010, 0x6016, 0x703c, 0x2060, ++ 0x2009, 0x0049, 0x080c, 0xaedc, 0x00c0, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0xa5b6, 0x003e, 0x713c, 0x2160, 0x080c, 0xe9fe, 0x2009, ++ 0x004a, 0x6220, 0x9296, 0x0009, 0x1130, 0x6114, 0x2148, 0xa87b, ++ 0x0006, 0x2009, 0x004a, 0x080c, 0xaedc, 0x002e, 0x001e, 0x00ee, ++ 0x00de, 0x00ce, 0x009e, 0x0005, 0xd1ec, 0x1904, 0xa334, 0x0804, ++ 0xa336, 0x00d6, 0x00c6, 0x0096, 0x703c, 0x9065, 0x090c, 0x0dd5, ++ 0x2001, 0x1837, 0x2004, 0xd09c, 0x1904, 0xa415, 0x2001, 0x0306, ++ 0x200c, 0x9184, 0x0030, 0x0904, 0xa415, 0x9184, 0x0048, 0x9086, ++ 0x0008, 0x1904, 0xa415, 0x2001, 0x020b, 0x2004, 0xd0fc, 0x0904, ++ 0xa415, 0xd08c, 0x0904, 0xa415, 0x2009, 0x1a80, 0x2104, 0x8000, ++ 0x0208, 0x200a, 0x2069, 0x0100, 0x6914, 0x918c, 0x0184, 0x918d, ++ 0x0010, 0x6916, 0x69c8, 0x2011, 0x0020, 0x68c8, 0x9106, 0x1570, ++ 0x8211, 0x1dd8, 0x2001, 0x0306, 0x2003, 0x4800, 0x2001, 0x009a, ++ 0x2003, 0x0004, 0x2001, 0x1a66, 0x2003, 0x0000, 0x2001, 0x1a6f, ++ 0x2003, 0x0000, 0x6a88, 0x698c, 0x2200, 0x9105, 0x1120, 0x2c10, ++ 0x080c, 0x1bad, 0x0040, 0x6014, 0x2048, 0xaa3a, 0xa936, 0x6ac4, ++ 0x69c8, 0xa946, 0xaa4a, 0x0126, 0x00c6, 0x2091, 0x2400, 0x002e, ++ 0x080c, 0x1c46, 0x190c, 0x0dd5, 0x012e, 0x0090, 0x2009, 0x1a81, ++ 0x2104, 0x8000, 0x0208, 0x200a, 0x69c8, 0x2011, 0x0020, 0x8211, ++ 0x1df0, 0x68c8, 0x9106, 0x1dc0, 0x69c4, 0x68c8, 0x9105, 0x0160, ++ 0x6824, 0xd08c, 0x0110, 0x6827, 0x0002, 0x7048, 0xc085, 0x704a, ++ 0x0079, 0x7048, 0xc084, 0x704a, 0x2009, 0x07d0, 0x080c, 0x857e, ++ 0x9006, 0x009e, 0x00ce, 0x00de, 0x0005, 0x9085, 0x0001, 0x0cc8, ++ 0x0026, 0x00e6, 0x2071, 0x19e7, 0x7048, 0xd084, 0x01d8, 0x713c, ++ 0x81ff, 0x01c0, 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e, ++ 0x0006, 0x1138, 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, ++ 0x0048, 0x928e, 0x0009, 0x0db0, 0x7014, 0x9084, 0x1984, 0x9085, ++ 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00b6, 0x00e6, 0x00d6, ++ 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x6010, 0x2058, 0xbca0, 0x2071, 0x19e7, 0x7018, 0x2058, 0x8bff, ++ 0x0190, 0xb8a0, 0x9406, 0x0118, 0xb854, 0x2058, 0x0cc0, 0x6014, ++ 0x0096, 0x2048, 0xac6c, 0xad70, 0xae78, 0x009e, 0x080c, 0x6731, ++ 0x0110, 0x9085, 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, ++ 0x00ce, 0x00de, 0x00ee, 0x00be, 0x0005, 0x080c, 0x9c60, 0x7003, ++ 0x1200, 0x7838, 0x7012, 0x783c, 0x7016, 0x00c6, 0x7820, 0x9086, ++ 0x0004, 0x1148, 0x7810, 0x9005, 0x0130, 0x00b6, 0x2058, 0xb810, ++ 0xb914, 0x00be, 0x0020, 0x2061, 0x1800, 0x607c, 0x6180, 0x9084, ++ 0x00ff, 0x700a, 0x710e, 0x00ce, 0x60c3, 0x002c, 0x0804, 0xa247, ++ 0x080c, 0x9c60, 0x7003, 0x0f00, 0x7808, 0xd09c, 0x0128, 0xb810, ++ 0x9084, 0x00ff, 0x700a, 0xb814, 0x700e, 0x60c3, 0x0008, 0x0804, ++ 0xa247, 0x0156, 0x080c, 0x9cab, 0x7003, 0x0200, 0x080c, 0x85d9, ++ 0x20a9, 0x0006, 0x2011, 0xfff4, 0x2019, 0xfff5, 0x9ef0, 0x0002, ++ 0x2305, 0x2072, 0x8e70, 0x2205, 0x2072, 0x8e70, 0x9398, 0x0002, ++ 0x9290, 0x0002, 0x1f04, 0xa4b0, 0x60c3, 0x001c, 0x015e, 0x0804, ++ 0xa247, 0x0016, 0x0026, 0x080c, 0x9c87, 0x080c, 0x9c99, 0x9e80, ++ 0x0004, 0x20e9, 0x0000, 0x20a0, 0x7814, 0x0096, 0x2048, 0xa800, ++ 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, 0x009e, ++ 0x7808, 0x9088, 0x0002, 0x21a8, 0x9192, 0x0010, 0x1250, 0x4003, ++ 0x9080, 0x0004, 0x8003, 0x60c2, 0x080c, 0xa247, 0x002e, 0x001e, ++ 0x0005, 0x20a9, 0x0010, 0x4003, 0x080c, 0xab0c, 0x20a1, 0x0240, ++ 0x22a8, 0x4003, 0x0c68, 0x080c, 0x9c60, 0x7003, 0x6200, 0x7808, ++ 0x700e, 0x60c3, 0x0008, 0x0804, 0xa247, 0x0016, 0x0026, 0x080c, ++ 0x9c60, 0x20e9, 0x0000, 0x20a1, 0x024c, 0x7814, 0x0096, 0x2048, ++ 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0023, 0x2098, ++ 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x4003, 0x8003, 0x60c2, ++ 0x080c, 0xa247, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00c6, 0x0006, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, 0x700c, 0x2060, 0x8cff, ++ 0x0178, 0x080c, 0xcd3b, 0x1110, 0x080c, 0xb813, 0x600c, 0x0006, ++ 0x080c, 0xcfa2, 0x080c, 0xae61, 0x080c, 0xa692, 0x00ce, 0x0c78, ++ 0x2c00, 0x700e, 0x700a, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, ++ 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, ++ 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, ++ 0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19e7, ++ 0x7024, 0x2060, 0x8cff, 0x01f8, 0x080c, 0xa273, 0x6ac0, 0x68c3, ++ 0x0000, 0x080c, 0x8579, 0x00c6, 0x2061, 0x0100, 0x080c, 0xac5d, ++ 0x00ce, 0x20a9, 0x01f4, 0x0461, 0x2009, 0x0013, 0x080c, 0xaedc, ++ 0x000e, 0x001e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, ++ 0x015e, 0x012e, 0x0005, 0x2001, 0x1800, 0x2004, 0x9096, 0x0001, ++ 0x0d78, 0x9096, 0x0004, 0x0d60, 0x080c, 0x8579, 0x6814, 0x9084, ++ 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, ++ 0x2011, 0x5e83, 0x080c, 0x84f3, 0x20a9, 0x01f4, 0x0009, 0x08c0, ++ 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000, ++ 0x190c, 0x2cff, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, ++ 0x1f04, 0xa598, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2cef, 0x9006, 0x080c, 0x2cef, 0x0005, 0x0126, 0x0156, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0016, 0x0006, ++ 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, 0xdbff, 0x2102, ++ 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19e7, 0x703c, 0x2060, ++ 0x8cff, 0x0904, 0xa648, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, ++ 0x0002, 0x0904, 0xa648, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, ++ 0x00fa, 0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x8586, ++ 0x080c, 0x1ffa, 0x0046, 0x2009, 0x00a5, 0x080c, 0x0e51, 0x2021, ++ 0x0169, 0x2404, 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, ++ 0x95f5, 0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, ++ 0x2071, 0x1a66, 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, ++ 0x782b, 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, ++ 0x1128, 0x7884, 0x9005, 0x1110, 0x7887, 0x0001, 0x2001, 0x1981, ++ 0x200c, 0x080c, 0x0e51, 0x004e, 0x20a9, 0x03e8, 0x6824, 0xd094, ++ 0x0140, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000, 0x190c, 0x2cff, ++ 0x0090, 0xd08c, 0x0118, 0x6827, 0x0002, 0x0010, 0x1f04, 0xa61e, ++ 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, ++ 0x9006, 0x080c, 0x2cef, 0x6827, 0x4000, 0x6824, 0x83ff, 0x1140, ++ 0x2009, 0x0049, 0x6020, 0x9086, 0x0009, 0x0110, 0x080c, 0xaedc, ++ 0x000e, 0x001e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, ++ 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, ++ 0x19e7, 0x6a06, 0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, ++ 0x8000, 0x2069, 0x19e7, 0x6a32, 0x012e, 0x00de, 0x0005, 0x080c, ++ 0x9e19, 0x7854, 0x7032, 0x7042, 0x7047, 0x1000, 0x00f8, 0x080c, ++ 0x9e19, 0x7854, 0x7032, 0x7042, 0x7047, 0x4000, 0x00b8, 0x080c, ++ 0x9e19, 0x7854, 0x7032, 0x7042, 0x7047, 0x2000, 0x0078, 0x080c, ++ 0x9e19, 0x7854, 0x7032, 0x7042, 0x7047, 0x0400, 0x0038, 0x080c, ++ 0x9e19, 0x7854, 0x7032, 0x7042, 0x7047, 0x0200, 0x60c3, 0x0020, ++ 0x0804, 0xa247, 0x00e6, 0x2071, 0x19e7, 0x7020, 0x9005, 0x0110, ++ 0x8001, 0x7022, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, ++ 0x0076, 0x0066, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, ++ 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff, 0x0904, 0xa737, ++ 0x8cff, 0x0904, 0xa737, 0x6020, 0x9086, 0x0006, 0x1904, 0xa732, ++ 0x88ff, 0x0138, 0x2800, 0x9c06, 0x1904, 0xa732, 0x2039, 0x0000, ++ 0x0050, 0x6010, 0x9b06, 0x1904, 0xa732, 0x85ff, 0x0120, 0x6054, ++ 0x9106, 0x1904, 0xa732, 0x7024, 0x9c06, 0x15b0, 0x2069, 0x0100, ++ 0x68c0, 0x9005, 0x1160, 0x6824, 0xd084, 0x0148, 0x6827, 0x0001, ++ 0x080c, 0x8579, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0428, 0x080c, ++ 0x8579, 0x6820, 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, ++ 0x68c3, 0x0000, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, 0x2069, ++ 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, ++ 0x2cef, 0x9006, 0x080c, 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, ++ 0x0110, 0x6827, 0x0001, 0x003e, 0x7014, 0x9c36, 0x1110, 0x660c, ++ 0x7616, 0x7010, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, ++ 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, ++ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, 0x1168, 0x600f, 0x0000, ++ 0x6014, 0x0096, 0x2048, 0x080c, 0xcb33, 0x0110, 0x080c, 0xe551, ++ 0x009e, 0x080c, 0xae92, 0x080c, 0xa692, 0x88ff, 0x1190, 0x00ce, ++ 0x0804, 0xa6ad, 0x2c78, 0x600c, 0x2060, 0x0804, 0xa6ad, 0x9006, ++ 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, ++ 0x0005, 0x601b, 0x0000, 0x00ce, 0x98c5, 0x0001, 0x0c88, 0x00f6, ++ 0x00e6, 0x00d6, 0x0096, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0x19e7, 0x7638, 0x2660, 0x2678, 0x8cff, ++ 0x0904, 0xa7ab, 0x6020, 0x9086, 0x0006, 0x1904, 0xa7a6, 0x87ff, ++ 0x0128, 0x2700, 0x9c06, 0x1904, 0xa7a6, 0x0040, 0x6010, 0x9b06, ++ 0x15e8, 0x85ff, 0x0118, 0x6054, 0x9106, 0x15c0, 0x703c, 0x9c06, ++ 0x1168, 0x0036, 0x2019, 0x0001, 0x080c, 0xa5b6, 0x7033, 0x0000, ++ 0x9006, 0x703e, 0x7042, 0x7046, 0x704a, 0x003e, 0x7038, 0x9c36, ++ 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, ++ 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, ++ 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, ++ 0x6014, 0x2048, 0x080c, 0xcb33, 0x0110, 0x080c, 0xe551, 0x080c, ++ 0xae92, 0x87ff, 0x1198, 0x00ce, 0x0804, 0xa757, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0xa757, 0x9006, 0x012e, 0x000e, 0x002e, 0x006e, ++ 0x00ce, 0x009e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, ++ 0x00ce, 0x97bd, 0x0001, 0x0c80, 0x00e6, 0x2071, 0x19e7, 0x2001, ++ 0x1800, 0x2004, 0x9086, 0x0002, 0x1118, 0x7007, 0x0005, 0x0010, ++ 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, ++ 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, 0x2c10, ++ 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200, 0x9c06, 0x11e0, ++ 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, ++ 0x660c, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, ++ 0x0000, 0x9085, 0x0001, 0x0020, 0x2c78, 0x600c, 0x2060, 0x08d8, ++ 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, ++ 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, 0x760c, 0x2660, 0x2678, ++ 0x8cff, 0x0904, 0xa898, 0x6010, 0x00b6, 0x2058, 0xb8a0, 0x00be, ++ 0x9206, 0x1904, 0xa893, 0x7024, 0x9c06, 0x1520, 0x2069, 0x0100, ++ 0x68c0, 0x9005, 0x0904, 0xa86f, 0x080c, 0xa273, 0x68c3, 0x0000, ++ 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2cef, 0x9006, ++ 0x080c, 0x2cef, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110, 0x660c, 0x760e, 0x7008, ++ 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x700a, 0x0010, ++ 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, ++ 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xcd2a, 0x1158, 0x080c, ++ 0x31e8, 0x080c, 0xcd3b, 0x11f0, 0x080c, 0xb813, 0x00d8, 0x080c, ++ 0xa7bc, 0x08c0, 0x080c, 0xcd3b, 0x1118, 0x080c, 0xb813, 0x0090, ++ 0x6014, 0x2048, 0x080c, 0xcb33, 0x0168, 0x6020, 0x9086, 0x0003, ++ 0x1508, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x6c75, ++ 0x080c, 0xcd1e, 0x080c, 0xcfa2, 0x080c, 0xae92, 0x080c, 0xa692, ++ 0x00ce, 0x0804, 0xa818, 0x2c78, 0x600c, 0x2060, 0x0804, 0xa818, ++ 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, ++ 0x009e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1d20, 0x080c, 0xe551, ++ 0x0c08, 0x00d6, 0x080c, 0x9cab, 0x7003, 0x0200, 0x7007, 0x0014, ++ 0x60c3, 0x0014, 0x20e1, 0x0001, 0x2099, 0x1989, 0x20e9, 0x0000, ++ 0x20a1, 0x0250, 0x20a9, 0x0004, 0x4003, 0x7023, 0x0004, 0x7027, ++ 0x7878, 0x080c, 0xa247, 0x00de, 0x0005, 0x080c, 0x9cab, 0x700b, ++ 0x0800, 0x7814, 0x9084, 0xff00, 0x700e, 0x7814, 0x9084, 0x00ff, ++ 0x7022, 0x782c, 0x7026, 0x7858, 0x9084, 0x00ff, 0x9085, 0x0200, ++ 0x7002, 0x7858, 0x9084, 0xff00, 0x8007, 0x7006, 0x60c2, 0x0804, ++ 0xa247, 0x00b6, 0x00d6, 0x0016, 0x00d6, 0x2f68, 0x2009, 0x0035, ++ 0x080c, 0xd1a8, 0x00de, 0x1904, 0xa946, 0x080c, 0x9c60, 0x7003, ++ 0x1300, 0x782c, 0x080c, 0xaa48, 0x2068, 0x6820, 0x9086, 0x0003, ++ 0x0560, 0x7810, 0x2058, 0xbaa0, 0x080c, 0xadcb, 0x11d8, 0x9286, ++ 0x007e, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0498, 0x9286, ++ 0x007f, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffd, 0x0458, 0x9284, ++ 0xff80, 0x0180, 0x9286, 0x0080, 0x1128, 0x700b, 0x00ff, 0x700f, ++ 0xfffc, 0x0400, 0x92d8, 0x1000, 0x2b5c, 0xb810, 0x700a, 0xb814, ++ 0x700e, 0x00c0, 0x6098, 0x700e, 0x00a8, 0x080c, 0xadcb, 0x1130, ++ 0x7810, 0x2058, 0xb8a0, 0x9082, 0x007e, 0x0250, 0x00d6, 0x2069, ++ 0x181f, 0x2d04, 0x700a, 0x8d68, 0x2d04, 0x700e, 0x00de, 0x0010, ++ 0x6034, 0x700e, 0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, 0x000c, ++ 0x001e, 0x00de, 0x080c, 0xa247, 0x00be, 0x0005, 0x781b, 0x0001, ++ 0x7803, 0x0006, 0x001e, 0x00de, 0x00be, 0x0005, 0x792c, 0x9180, ++ 0x0008, 0x200c, 0x9186, 0x0006, 0x01c0, 0x9186, 0x0003, 0x0904, ++ 0xa9c0, 0x9186, 0x0005, 0x0904, 0xa9a9, 0x9186, 0x0004, 0x05d8, ++ 0x9186, 0x0008, 0x0904, 0xa9b1, 0x7807, 0x0037, 0x782f, 0x0003, ++ 0x7817, 0x1700, 0x080c, 0xaa25, 0x0005, 0x080c, 0xa9e6, 0x00d6, ++ 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x6800, 0x0002, 0xa98a, ++ 0xa995, 0xa98c, 0xa995, 0xa991, 0xa98a, 0xa98a, 0xa995, 0xa995, ++ 0xa995, 0xa995, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa98a, 0xa995, ++ 0xa98a, 0xa995, 0x080c, 0x0dd5, 0x6824, 0xd0e4, 0x0110, 0xd0cc, ++ 0x0110, 0x900e, 0x0010, 0x2009, 0x2000, 0x682c, 0x7022, 0x6830, ++ 0x7026, 0x0804, 0xa9df, 0x080c, 0xa9e6, 0x00d6, 0x0026, 0x792c, ++ 0x2168, 0x2009, 0x4000, 0x6a00, 0x9286, 0x0002, 0x1108, 0x900e, ++ 0x04b0, 0x04e1, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, ++ 0x0470, 0x04a1, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, ++ 0x9286, 0x0005, 0x0118, 0x9286, 0x0002, 0x1108, 0x900e, 0x00f8, ++ 0x0429, 0x00d6, 0x0026, 0x792c, 0x2168, 0x6814, 0x0096, 0x2048, ++ 0xa9ac, 0xa834, 0x9112, 0xa9b0, 0xa838, 0x009e, 0x9103, 0x7022, ++ 0x7226, 0x792c, 0x9180, 0x0000, 0x2004, 0x908e, 0x0002, 0x0130, ++ 0x908e, 0x0004, 0x0118, 0x2009, 0x4000, 0x0008, 0x900e, 0x712a, ++ 0x60c3, 0x0018, 0x002e, 0x00de, 0x0804, 0xa247, 0x00b6, 0x0036, ++ 0x0046, 0x0056, 0x0066, 0x080c, 0x9cab, 0x9006, 0x7003, 0x0200, ++ 0x7938, 0x710a, 0x793c, 0x710e, 0x7810, 0x2058, 0xb8a0, 0x080c, ++ 0xadcb, 0x1118, 0x9092, 0x007e, 0x0268, 0x00d6, 0x2069, 0x181f, ++ 0x2d2c, 0x8d68, 0x2d34, 0x90d8, 0x1000, 0x2b5c, 0xbb10, 0xbc14, ++ 0x00de, 0x0028, 0x901e, 0x6498, 0x2029, 0x0000, 0x6634, 0x782c, ++ 0x9080, 0x0008, 0x2004, 0x9086, 0x0003, 0x1128, 0x7512, 0x7616, ++ 0x731a, 0x741e, 0x0020, 0x7312, 0x7416, 0x751a, 0x761e, 0x006e, ++ 0x005e, 0x004e, 0x003e, 0x00be, 0x0005, 0x080c, 0x9cab, 0x7003, ++ 0x0100, 0x782c, 0x700a, 0x7814, 0x700e, 0x700e, 0x60c3, 0x0008, ++ 0x0804, 0xa247, 0x080c, 0x9c57, 0x7003, 0x1400, 0x7838, 0x700a, ++ 0x0079, 0x783c, 0x700e, 0x782c, 0x7012, 0x7830, 0x7016, 0x7834, ++ 0x9084, 0x00ff, 0x8007, 0x701a, 0x60c3, 0x0010, 0x0804, 0xa247, ++ 0x00e6, 0x2071, 0x0240, 0x0006, 0x00f6, 0x2078, 0x7810, 0x00b6, ++ 0x2058, 0xb8cc, 0xd084, 0x0120, 0x7848, 0x702a, 0x7844, 0x702e, ++ 0x00be, 0x00fe, 0x000e, 0x00ee, 0x0005, 0x080c, 0x9ca2, 0x7003, ++ 0x0100, 0x782c, 0x700a, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, ++ 0xa247, 0x0021, 0x60c3, 0x0000, 0x0804, 0xa247, 0x00d6, 0x080c, ++ 0xab21, 0xb810, 0x9085, 0x0300, 0x7002, 0xb814, 0x7006, 0x2069, ++ 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x7013, 0x0819, 0x080c, ++ 0xa235, 0x721a, 0x2f10, 0x7222, 0x7a08, 0x7226, 0x2071, 0x024c, ++ 0x00de, 0x0005, 0x00a9, 0x7914, 0x712a, 0x60c3, 0x0000, 0x60a7, ++ 0x9575, 0x0026, 0x080c, 0x2ba5, 0x0228, 0x2011, 0x0101, 0x2204, ++ 0xc0c5, 0x2012, 0x002e, 0x080c, 0xa26a, 0x080c, 0x8570, 0x0005, ++ 0x0036, 0x0096, 0x00d6, 0x00e6, 0x7858, 0x2048, 0xaa7c, 0x9296, ++ 0x00c0, 0x9294, 0xfffd, 0xaa7e, 0xaa80, 0x9294, 0x0300, 0xaa82, ++ 0xa96c, 0x9194, 0x00ff, 0xab74, 0x9384, 0x00ff, 0x908d, 0xc200, ++ 0xa96e, 0x9384, 0xff00, 0x9215, 0xaa76, 0xa870, 0xaa78, 0xa87a, ++ 0xaa72, 0x00d6, 0x2069, 0x0200, 0x080c, 0xab21, 0x00de, 0x20e9, ++ 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000a, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x001b, 0x2098, 0x4003, 0x60a3, 0x0035, 0xaa68, 0x9294, ++ 0x7000, 0x9286, 0x3000, 0x0110, 0x60a3, 0x0037, 0x00ee, 0x00de, ++ 0x009e, 0x003e, 0x0005, 0x900e, 0x7814, 0x0096, 0x2048, 0xa87c, ++ 0xd0fc, 0x01c0, 0x9084, 0x0003, 0x11a8, 0x2001, 0x180c, 0x2004, ++ 0xd0bc, 0x0180, 0x7824, 0xd0cc, 0x1168, 0xd0c4, 0x1158, 0xa8a8, ++ 0x9005, 0x1140, 0x2001, 0x180c, 0x200c, 0xc1d5, 0x2102, 0x2009, ++ 0x19b2, 0x210c, 0x009e, 0x918d, 0x0092, 0x0010, 0x2009, 0x0096, ++ 0x60ab, 0x0036, 0x6116, 0x0005, 0x2009, 0x0009, 0x00a0, 0x2009, ++ 0x000a, 0x0088, 0x2009, 0x000b, 0x0070, 0x2009, 0x000c, 0x0058, ++ 0x2009, 0x000d, 0x0040, 0x2009, 0x000e, 0x0028, 0x2009, 0x000f, ++ 0x0010, 0x2009, 0x0008, 0x6912, 0x0005, 0x080c, 0x9c60, 0x0016, ++ 0x0026, 0x0096, 0x00d6, 0x7814, 0x2048, 0x7013, 0x0138, 0x2001, ++ 0x1837, 0x2004, 0x9084, 0x0028, 0x1138, 0x2001, 0x197c, 0x2004, ++ 0x9086, 0xaaaa, 0x1904, 0xabc6, 0x7003, 0x5400, 0x00c6, 0x2061, ++ 0x1800, 0x607c, 0x9084, 0x00ff, 0xa998, 0x810f, 0x918c, 0xff00, ++ 0x9105, 0x700a, 0x6080, 0x700e, 0xa998, 0x918c, 0xff00, 0x7112, ++ 0x20a9, 0x0004, 0x2009, 0x1805, 0x2e10, 0x9290, 0x0006, 0x2104, ++ 0x2012, 0x8108, 0x8210, 0x1f04, 0xab57, 0x20a9, 0x0004, 0x2009, ++ 0x1801, 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xab61, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x0029, 0x2098, 0x2009, 0x0006, 0x20a9, ++ 0x0001, 0x4002, 0x8007, 0x2012, 0x8210, 0x8109, 0x1dc0, 0x00d6, ++ 0x2069, 0x0200, 0x080c, 0xab0c, 0x00de, 0x2071, 0x0240, 0x2011, ++ 0x0240, 0x2009, 0x0002, 0x20a9, 0x0001, 0x4002, 0x8007, 0x2012, ++ 0x8210, 0x8109, 0x1dc0, 0x2009, 0x0008, 0x20a9, 0x0001, 0x4002, ++ 0x8007, 0x2012, 0x8210, 0x8109, 0x1dc0, 0xa85c, 0x9080, 0x0031, ++ 0x2098, 0x2009, 0x0008, 0x20a9, 0x0001, 0x4002, 0x8007, 0x2012, ++ 0x8210, 0x8109, 0x1dc0, 0x00ce, 0x60c3, 0x004c, 0x60a3, 0x0056, ++ 0x60a7, 0x9575, 0x2001, 0x1837, 0x2004, 0x9084, 0x0028, 0x1168, ++ 0x080c, 0x73bc, 0x0150, 0x6028, 0xc0bd, 0x602a, 0x6014, 0x9084, ++ 0x1804, 0x9085, 0x0029, 0x6016, 0x0010, 0x080c, 0xa247, 0x080c, ++ 0x8570, 0x00de, 0x009e, 0x002e, 0x001e, 0x0005, 0x00e6, 0x2071, ++ 0x0240, 0x2001, 0x2200, 0x9085, 0x00ff, 0x7002, 0x7007, 0xffff, ++ 0x2071, 0x0100, 0x709b, 0x00ff, 0x00ee, 0x0804, 0xab3c, 0x080c, ++ 0x9c60, 0x0016, 0x0026, 0x0096, 0x00d6, 0x7814, 0x2048, 0x7013, ++ 0x0138, 0x7003, 0x5500, 0x00c6, 0xa89c, 0x9084, 0x00ff, 0xa998, ++ 0x810f, 0x918c, 0xff00, 0x9105, 0x700a, 0xa99c, 0x918c, 0xff00, ++ 0xa8a0, 0x9084, 0x00ff, 0x9105, 0x700e, 0xa998, 0x918c, 0xff00, ++ 0x2061, 0x1800, 0x607c, 0x9084, 0x00ff, 0x910d, 0x7112, 0x6180, ++ 0x7116, 0x2009, 0x0008, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0029, ++ 0x2098, 0x2e10, 0x9290, 0x0006, 0x20a9, 0x0001, 0x4002, 0x8007, ++ 0x2012, 0x8210, 0x8109, 0x1dc0, 0x20a9, 0x0004, 0x2009, 0x1805, ++ 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xac18, 0x20a9, 0x0002, ++ 0x2009, 0x1801, 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xac22, ++ 0x00d6, 0x0016, 0x2069, 0x0200, 0x080c, 0xab0c, 0x001e, 0x00de, ++ 0x2071, 0x0240, 0x20a9, 0x0002, 0x2009, 0x1803, 0x2011, 0x0240, ++ 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xac38, 0x2009, 0x0008, ++ 0x4002, 0x8007, 0x2012, 0x8210, 0x8109, 0x1dd0, 0x9006, 0x20a9, ++ 0x0008, 0x2012, 0x8210, 0x1f04, 0xac49, 0x00ce, 0x60c3, 0x004c, ++ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0xa247, 0x080c, 0x8570, ++ 0x00de, 0x009e, 0x002e, 0x001e, 0x0005, 0x00d6, 0x9290, 0x0018, ++ 0x8214, 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813, 0x0000, 0x22a8, ++ 0x9284, 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292, 0x0020, 0x0008, ++ 0x9016, 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff, 0x0120, 0x6810, ++ 0x8000, 0x6812, 0x0c60, 0x00de, 0x0005, 0x00d6, 0x0096, 0x6014, ++ 0x2048, 0xa878, 0x6056, 0x9006, 0xa836, 0xa83a, 0xa99c, 0xa946, ++ 0xa84a, 0x6023, 0x0003, 0x6007, 0x0040, 0x6003, 0x0003, 0x600b, ++ 0xffff, 0xa817, 0x0001, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa813, ++ 0x208e, 0x080c, 0x9155, 0x0126, 0x2091, 0x8000, 0x080c, 0x97b9, ++ 0x012e, 0x009e, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, ++ 0x00a6, 0x0096, 0x0066, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, ++ 0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, 0xad2b, 0x7024, 0x9c06, ++ 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0xad02, 0x080c, ++ 0xa273, 0x68c3, 0x0000, 0x080c, 0xa7bc, 0x7027, 0x0000, 0x0036, ++ 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2cef, 0x9006, 0x080c, 0x2cef, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110, ++ 0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, ++ 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00, ++ 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, ++ 0xcd2a, 0x1158, 0x080c, 0x31e8, 0x080c, 0xcd3b, 0x11f0, 0x080c, ++ 0xb813, 0x00d8, 0x080c, 0xa7bc, 0x08c0, 0x080c, 0xcd3b, 0x1118, ++ 0x080c, 0xb813, 0x0090, 0x6014, 0x2048, 0x080c, 0xcb33, 0x0168, ++ 0x6020, 0x9086, 0x0003, 0x1520, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x6c81, 0x080c, 0xcd1e, 0x080c, 0xcfa2, 0x080c, ++ 0xae92, 0x080c, 0xa692, 0x00ce, 0x0804, 0xacb3, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0xacb3, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e, ++ 0x006e, 0x009e, 0x00ae, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, ++ 0x6020, 0x9086, 0x0006, 0x1d08, 0x080c, 0xe551, 0x08f0, 0x00d6, ++ 0x0156, 0x080c, 0x9cab, 0x7a14, 0x82ff, 0x0138, 0x7003, 0x0100, ++ 0x700b, 0x0003, 0x60c3, 0x0008, 0x0490, 0x7003, 0x0200, 0x7007, ++ 0x0000, 0x2069, 0x1800, 0x901e, 0x6800, 0x9086, 0x0004, 0x1110, ++ 0xc38d, 0x0060, 0x080c, 0x73bc, 0x1110, 0xc3ad, 0x0008, 0xc3a5, ++ 0x6adc, 0xd29c, 0x1110, 0xd2ac, 0x0108, 0xc39d, 0x730e, 0x080c, ++ 0x85d9, 0x20a9, 0x0006, 0x2011, 0xfff4, 0x2019, 0xfff5, 0x2071, ++ 0x0250, 0x2305, 0x2072, 0x8e70, 0x2205, 0x2072, 0x8e70, 0x9398, ++ 0x0002, 0x9290, 0x0002, 0x1f04, 0xad71, 0x60c3, 0x0020, 0x080c, ++ 0xa247, 0x015e, 0x00de, 0x0005, 0x0156, 0x080c, 0x9cab, 0x7a14, ++ 0x82ff, 0x0168, 0x9286, 0xffff, 0x0118, 0x9282, 0x000e, 0x1238, ++ 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, 0x0488, 0x7003, ++ 0x0200, 0x7007, 0x001c, 0x700f, 0x0001, 0x2011, 0x19bd, 0x2204, ++ 0x8007, 0x701a, 0x8210, 0x2204, 0x8007, 0x701e, 0x0421, 0x1120, ++ 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001, 0x181f, 0x2004, 0x7022, ++ 0x2001, 0x1820, 0x2004, 0x7026, 0x0030, 0x2001, 0x1818, 0x2004, ++ 0x9084, 0x00ff, 0x7026, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, ++ 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x60c3, 0x001c, ++ 0x015e, 0x0804, 0xa247, 0x0006, 0x2001, 0x1837, 0x2004, 0xd0ac, ++ 0x000e, 0x0005, 0x2011, 0x0003, 0x080c, 0xa653, 0x2011, 0x0002, ++ 0x080c, 0xa65d, 0x080c, 0xa540, 0x0036, 0x901e, 0x080c, 0xa5b6, ++ 0x003e, 0x0005, 0x080c, 0x331e, 0x0188, 0x0016, 0x00b6, 0x00c6, ++ 0x7010, 0x9085, 0x0020, 0x7012, 0x2009, 0x007e, 0x080c, 0x65ff, ++ 0xb85c, 0xc0ac, 0xb85e, 0x00ce, 0x00be, 0x001e, 0x0005, 0x2071, ++ 0x188d, 0x7000, 0x9005, 0x0140, 0x2001, 0x0976, 0x2071, 0x1800, ++ 0x7076, 0x707a, 0x706b, 0xffe0, 0x2071, 0x1800, 0x7074, 0x7056, ++ 0x705b, 0x1cd0, 0x0005, 0x00e6, 0x0126, 0x2071, 0x1800, 0x2091, ++ 0x8000, 0x7554, 0x9582, 0x0010, 0x0608, 0x7058, 0x2060, 0x6000, ++ 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, 0x7068, 0x9c02, 0x1208, ++ 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003, 0x0008, 0x8529, 0x7556, ++ 0x9ca8, 0x0018, 0x7068, 0x9502, 0x1230, 0x755a, 0x9085, 0x0001, ++ 0x012e, 0x00ee, 0x0005, 0x705b, 0x1cd0, 0x0cc0, 0x9006, 0x0cc0, ++ 0x00e6, 0x2071, 0x1800, 0x7554, 0x9582, 0x0010, 0x0600, 0x7058, ++ 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, 0x7068, ++ 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003, 0x0008, ++ 0x8529, 0x7556, 0x9ca8, 0x0018, 0x7068, 0x9502, 0x1228, 0x755a, ++ 0x9085, 0x0001, 0x00ee, 0x0005, 0x705b, 0x1cd0, 0x0cc8, 0x9006, ++ 0x0cc8, 0x9c82, 0x1cd0, 0x0a0c, 0x0dd5, 0x2001, 0x181a, 0x2004, ++ 0x9c02, 0x1a0c, 0x0dd5, 0x9006, 0x6006, 0x600a, 0x600e, 0x6016, ++ 0x601a, 0x6012, 0x6023, 0x0000, 0x6003, 0x0000, 0x601e, 0x6056, ++ 0x605a, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, 0x603e, ++ 0x6042, 0x602a, 0x2061, 0x1800, 0x6054, 0x8000, 0x6056, 0x9086, ++ 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x968d, ++ 0x012e, 0x0cc0, 0x0006, 0x6000, 0x9086, 0x0000, 0x01b0, 0x601c, ++ 0xd084, 0x190c, 0x1a5e, 0x6017, 0x0000, 0x6023, 0x0007, 0x2001, ++ 0x1986, 0x2004, 0x0006, 0x9082, 0x0051, 0x000e, 0x0208, 0x8004, ++ 0x601a, 0x080c, 0xe80b, 0x6043, 0x0000, 0x000e, 0x0005, 0x00e6, ++ 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7554, 0x9582, 0x0001, ++ 0x0608, 0x7058, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, ++ 0x0018, 0x7068, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, ++ 0x6003, 0x0008, 0x8529, 0x7556, 0x9ca8, 0x0018, 0x7068, 0x9502, ++ 0x1230, 0x755a, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x705b, ++ 0x1cd0, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084, 0x000f, 0x0002, ++ 0xaeef, 0xaef8, 0xaf13, 0xaf2e, 0xd256, 0xd273, 0xd28e, 0xaeef, ++ 0xaef8, 0x8d8b, 0xaf4a, 0xaeef, 0xaeef, 0xaeef, 0xaeef, 0x9186, ++ 0x0013, 0x1128, 0x080c, 0x9588, 0x080c, 0x968d, 0x0005, 0x0005, ++ 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0dd5, 0x0013, 0x006e, ++ 0x0005, 0xaf11, 0xb67f, 0xb85a, 0xaf11, 0xb8f0, 0xb22d, 0xaf11, ++ 0xaf11, 0xb601, 0xbe55, 0xaf11, 0xaf11, 0xaf11, 0xaf11, 0xaf11, ++ 0xaf11, 0x080c, 0x0dd5, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, ++ 0x0dd5, 0x0013, 0x006e, 0x0005, 0xaf2c, 0xc529, 0xaf2c, 0xaf2c, ++ 0xaf2c, 0xaf2c, 0xaf2c, 0xaf2c, 0xc4ce, 0xc6ab, 0xaf2c, 0xc56a, ++ 0xc5e9, 0xc56a, 0xc5e9, 0xaf2c, 0x080c, 0x0dd5, 0x6000, 0x9082, ++ 0x0016, 0x1a0c, 0x0dd5, 0x6000, 0x0002, 0xaf48, 0xbe9c, 0xbf81, ++ 0xc0b1, 0xc25c, 0xaf48, 0xaf48, 0xaf48, 0xbe70, 0xc45a, 0xc45d, ++ 0xaf48, 0xaf48, 0xaf48, 0xaf48, 0xc48c, 0xaf48, 0xaf48, 0xaf48, ++ 0x080c, 0x0dd5, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0dd5, ++ 0x0013, 0x006e, 0x0005, 0xaf63, 0xaf63, 0xafa6, 0xb045, 0xb0da, ++ 0xaf63, 0xaf63, 0xaf63, 0xaf65, 0xaf63, 0xaf63, 0xaf63, 0xaf63, ++ 0xaf63, 0xaf63, 0xaf63, 0x080c, 0x0dd5, 0x9186, 0x004c, 0x0588, ++ 0x9186, 0x0003, 0x190c, 0x0dd5, 0x0096, 0x601c, 0xc0ed, 0x601e, ++ 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa87c, 0x9084, 0xa000, ++ 0xc0b5, 0xa87e, 0xa8ac, 0xa846, 0xa8b0, 0xa84a, 0x9006, 0xa836, ++ 0xa83a, 0xa884, 0x9092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, ++ 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, 0x2c10, 0x080c, 0x1bad, ++ 0x080c, 0x9155, 0x0126, 0x2091, 0x8000, 0x080c, 0x97b9, 0x012e, ++ 0x0005, 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x080c, ++ 0xb0fc, 0x080c, 0xd248, 0x6003, 0x0007, 0x0005, 0x00d6, 0x0096, ++ 0x00f6, 0x2079, 0x1800, 0x7a90, 0x6014, 0x2048, 0xa87c, 0xd0ec, ++ 0x1110, 0x9290, 0x0018, 0xac78, 0xc4fc, 0x0046, 0xa8e0, 0x9005, ++ 0x1140, 0xa8dc, 0x921a, 0x0140, 0x0220, 0xa87b, 0x0007, 0x2010, ++ 0x0028, 0xa87b, 0x0015, 0x0010, 0xa87b, 0x0000, 0x8214, 0xa883, ++ 0x0000, 0xaa02, 0x0006, 0x0016, 0x0026, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x2400, 0x9005, 0x1108, 0x009a, 0x2100, 0x9086, 0x0015, ++ 0x1118, 0x2001, 0x0001, 0x0038, 0x2100, 0x9086, 0x0016, 0x0118, ++ 0x2001, 0x0001, 0x002a, 0x94a4, 0x0007, 0x8423, 0x9405, 0x0002, ++ 0xb00d, 0xb00d, 0xb008, 0xb00b, 0xb00d, 0xb005, 0xaff8, 0xaff8, ++ 0xaff8, 0xaff8, 0xaff8, 0xaff8, 0xaff8, 0xaff8, 0xaff8, 0xaff8, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e, 0x000e, 0x004e, ++ 0x00fe, 0x009e, 0x00de, 0x080c, 0x0dd5, 0x080c, 0xbaad, 0x0028, ++ 0x080c, 0xbb92, 0x0010, 0x080c, 0xbc88, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x002e, 0x001e, 0x2c00, 0xa896, 0x000e, 0x080c, 0xb1ba, ++ 0x0530, 0xa804, 0xa80e, 0x00a6, 0x2050, 0xb100, 0x00ae, 0x8006, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, ++ 0xaacc, 0xabd0, 0xacd4, 0xadd8, 0x2031, 0x0000, 0x2041, 0x125d, ++ 0x080c, 0xb37a, 0x0160, 0x000e, 0x9005, 0x0120, 0x00fe, 0x009e, ++ 0x00de, 0x0005, 0x00fe, 0x009e, 0x00de, 0x0804, 0xae61, 0x2001, ++ 0x002c, 0x900e, 0x080c, 0xb220, 0x0c70, 0x91b6, 0x0015, 0x0170, ++ 0x91b6, 0x0016, 0x0158, 0x91b2, 0x0047, 0x0a0c, 0x0dd5, 0x91b2, ++ 0x0050, 0x1a0c, 0x0dd5, 0x9182, 0x0047, 0x00ca, 0x2001, 0x0109, ++ 0x2004, 0xd08c, 0x0198, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, ++ 0x0026, 0x080c, 0x90a2, 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, ++ 0x6000, 0x9086, 0x0002, 0x1110, 0x0804, 0xafa6, 0x0005, 0xb078, ++ 0xb078, 0xb07a, 0xb0b0, 0xb078, 0xb078, 0xb078, 0xb078, 0xb0c3, ++ 0x080c, 0x0dd5, 0x00d6, 0x0016, 0x0096, 0x080c, 0x963d, 0x080c, ++ 0x97b9, 0x6003, 0x0004, 0x6114, 0x2148, 0xa87c, 0xd0fc, 0x01c0, ++ 0xa878, 0xc0fc, 0x9005, 0x1158, 0xa894, 0x9005, 0x0140, 0x2001, ++ 0x0000, 0x900e, 0x080c, 0xb220, 0x080c, 0xae61, 0x00a8, 0x6003, ++ 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae, 0xa8b2, 0x0c78, ++ 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae, 0xa8a8, 0xa8b2, ++ 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e, 0x00de, 0x0005, ++ 0x080c, 0x963d, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xcb35, ++ 0x0120, 0xa87b, 0x0006, 0x080c, 0x6c81, 0x009e, 0x00de, 0x080c, ++ 0xae61, 0x0804, 0x97b9, 0x080c, 0x963d, 0x080c, 0x31bf, 0x080c, ++ 0xd245, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xcb35, 0x0120, ++ 0xa87b, 0x0029, 0x080c, 0x6c81, 0x009e, 0x00de, 0x080c, 0xae61, ++ 0x0804, 0x97b9, 0x9182, 0x0047, 0x0002, 0xb0ea, 0xb0ec, 0xb0ea, ++ 0xb0ea, 0xb0ea, 0xb0ea, 0xb0ea, 0xb0ea, 0xb0ea, 0xb0ea, 0xb0ea, ++ 0xb0ea, 0xb0ec, 0x080c, 0x0dd5, 0x00d6, 0x0096, 0x601f, 0x0000, ++ 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000, 0x080c, 0x6c81, ++ 0x009e, 0x00de, 0x0804, 0xae61, 0x0026, 0x0036, 0x0056, 0x0066, ++ 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x0fff, 0x000e, 0x090c, ++ 0x0dd5, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, 0x21a0, 0x900e, ++ 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800, 0x7990, 0x9188, ++ 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950, 0x00a6, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001, 0x9182, 0x0034, ++ 0x1228, 0x2011, 0x001f, 0x080c, 0xc730, 0x04c0, 0x2130, 0x2009, ++ 0x0034, 0x2011, 0x001f, 0x080c, 0xc730, 0x96b2, 0x0034, 0xb004, ++ 0x904d, 0x0110, 0x080c, 0x0fb1, 0x080c, 0x0fff, 0x01d0, 0x8528, ++ 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, ++ 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xc730, 0x00b8, 0x96b2, ++ 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x080c, 0xc730, ++ 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, ++ 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048, 0x2001, 0x0205, ++ 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050, 0xb566, 0x2a48, ++ 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x6c81, 0x000e, 0x2048, ++ 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e, 0x005e, 0x003e, ++ 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006, 0x080c, 0x0fff, ++ 0x000e, 0x090c, 0x0dd5, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, ++ 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66, 0xa87a, 0x2079, ++ 0x1800, 0x7990, 0x810c, 0x9188, 0x000c, 0x9182, 0x001a, 0x0210, ++ 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76, 0x2e98, 0xa85c, ++ 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, ++ 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x6c81, 0x009e, 0x00fe, ++ 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096, 0x0016, 0x2001, ++ 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e, 0x2079, 0x0200, ++ 0x2e98, 0xa87c, 0xd0ec, 0x0118, 0x9e80, 0x000c, 0x2098, 0x2021, ++ 0x003e, 0x901e, 0x9282, 0x0020, 0x0218, 0x2011, 0x0020, 0x2018, ++ 0x9486, 0x003e, 0x1170, 0x0096, 0x080c, 0x0fff, 0x2900, 0x009e, ++ 0x05c0, 0xa806, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, ++ 0x20a0, 0x3300, 0x908e, 0x0260, 0x0140, 0x2009, 0x0280, 0x9102, ++ 0x920a, 0x0218, 0x2010, 0x2100, 0x9318, 0x2200, 0x9402, 0x1228, ++ 0x2400, 0x9202, 0x2410, 0x9318, 0x9006, 0x2020, 0x22a8, 0xa800, ++ 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003, 0x83ff, 0x0180, 0x3300, ++ 0x9086, 0x0280, 0x1130, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, ++ 0x2e98, 0x2310, 0x84ff, 0x0904, 0xb1cf, 0x0804, 0xb1d1, 0x9085, ++ 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe, 0x00de, 0x001e, 0x0005, ++ 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, 0x080c, ++ 0x6c75, 0x009e, 0x003e, 0x00de, 0x0005, 0x91b6, 0x0015, 0x1118, ++ 0x080c, 0xae61, 0x0030, 0x91b6, 0x0016, 0x190c, 0x0dd5, 0x080c, ++ 0xae61, 0x0005, 0x20a9, 0x000e, 0x20e1, 0x0000, 0x2e98, 0x6014, ++ 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x20a0, 0x009e, 0x4003, ++ 0x0136, 0x9080, 0x001b, 0x2011, 0x0006, 0x20a9, 0x0001, 0x3418, ++ 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318, 0x2398, 0x8211, 0x1db8, ++ 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318, 0x8318, 0x2398, 0x4003, ++ 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8, 0x0096, 0x080c, 0xcb35, ++ 0x0130, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0x009e, ++ 0x0804, 0xae61, 0x0096, 0x00d6, 0x0036, 0x7330, 0x9386, 0x0200, ++ 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8cf, 0x0000, 0x00be, 0x6014, ++ 0x9005, 0x0130, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xab32, ++ 0x080c, 0xae61, 0x003e, 0x00de, 0x009e, 0x0005, 0x0011, 0x1d48, ++ 0x0cc8, 0x0006, 0x0016, 0x080c, 0xd230, 0x0188, 0x6014, 0x9005, ++ 0x1170, 0x600b, 0x0003, 0x601b, 0x0000, 0x6043, 0x0000, 0x2009, ++ 0x0022, 0x080c, 0xb657, 0x9006, 0x001e, 0x000e, 0x0005, 0x9085, ++ 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9, 0x0014, 0x9e80, 0x000c, ++ 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0001, ++ 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003, 0x20a9, 0x000a, 0xa804, ++ 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, ++ 0x2001, 0x0205, 0x2003, 0x0002, 0x2099, 0x0260, 0x20a9, 0x0020, ++ 0x4003, 0x2003, 0x0000, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, ++ 0x0103, 0x080c, 0xae61, 0x001e, 0x009e, 0x0005, 0x0096, 0x0016, ++ 0x900e, 0x7030, 0x9086, 0x0100, 0x0140, 0x7038, 0x9084, 0x00ff, ++ 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004, 0x9080, 0x0004, 0x9108, ++ 0x810b, 0x2011, 0x0002, 0x2019, 0x000c, 0x6014, 0x2048, 0x080c, ++ 0xc730, 0x080c, 0xcb35, 0x0140, 0x6014, 0x2048, 0xa807, 0x0000, ++ 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0xae61, 0x001e, 0x009e, ++ 0x0005, 0x0016, 0x2009, 0x0000, 0x7030, 0x9086, 0x0200, 0x0110, ++ 0x2009, 0x0001, 0x0096, 0x6014, 0x904d, 0x090c, 0x0dd5, 0xa97a, ++ 0x080c, 0x6c81, 0x009e, 0x080c, 0xae61, 0x001e, 0x0005, 0x0016, ++ 0x0096, 0x7030, 0x9086, 0x0100, 0x1118, 0x2009, 0x0004, 0x0010, ++ 0x7034, 0x800c, 0x810b, 0x2011, 0x000c, 0x2019, 0x000c, 0x6014, ++ 0x2048, 0xa804, 0x0096, 0x9005, 0x0108, 0x2048, 0x080c, 0xc730, ++ 0x009e, 0x080c, 0xcb35, 0x0148, 0xa804, 0x9005, 0x1158, 0xa807, ++ 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0xae61, 0x009e, ++ 0x001e, 0x0005, 0x0086, 0x2040, 0xa030, 0x8007, 0x9086, 0x0100, ++ 0x1118, 0x080c, 0xb813, 0x00e0, 0xa034, 0x8007, 0x800c, 0x8806, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x000c, ++ 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0xaaa0, 0xab9c, ++ 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x1243, 0x0019, 0x0d08, ++ 0x008e, 0x0898, 0x0096, 0x0006, 0x080c, 0x0fff, 0x000e, 0x01b0, ++ 0xa8ab, 0x0dcb, 0xa876, 0x000e, 0xa8a2, 0x0006, 0xae6a, 0x2800, ++ 0xa89e, 0xa97a, 0xaf72, 0xaa8e, 0xab92, 0xac96, 0xad9a, 0x0086, ++ 0x2940, 0x080c, 0x10e9, 0x008e, 0x9085, 0x0001, 0x009e, 0x0005, ++ 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, ++ 0x2258, 0xba10, 0x00be, 0x9206, 0x1520, 0x700c, 0x6210, 0x00b6, ++ 0x2258, 0xba14, 0x00be, 0x9206, 0x11e0, 0x6043, 0x0000, 0x2c68, ++ 0x0016, 0x2009, 0x0035, 0x080c, 0xd1a8, 0x001e, 0x1158, 0x622c, ++ 0x2268, 0x2071, 0x026c, 0x6b20, 0x9386, 0x0003, 0x0130, 0x9386, ++ 0x0006, 0x0128, 0x080c, 0xae61, 0x0020, 0x0039, 0x0010, 0x080c, ++ 0xb48c, 0x002e, 0x00de, 0x00ee, 0x0005, 0x0096, 0x6814, 0x2048, ++ 0x9186, 0x0015, 0x0904, 0xb474, 0x918e, 0x0016, 0x1904, 0xb48a, ++ 0x700c, 0x908c, 0xff00, 0x9186, 0x1700, 0x0120, 0x9186, 0x0300, ++ 0x1904, 0xb44e, 0x89ff, 0x1138, 0x6800, 0x9086, 0x000f, 0x0904, ++ 0xb431, 0x0804, 0xb488, 0x6808, 0x9086, 0xffff, 0x1904, 0xb476, ++ 0xa87c, 0x9084, 0x0060, 0x9086, 0x0020, 0x1128, 0xa83c, 0xa940, ++ 0x9105, 0x1904, 0xb476, 0x6824, 0xd0b4, 0x1904, 0xb476, 0x080c, ++ 0xcd1e, 0x685c, 0xa882, 0xa87c, 0xc0dc, 0xc0f4, 0xc0d4, 0xa87e, ++ 0x0026, 0x900e, 0x6a18, 0x2001, 0x000a, 0x080c, 0x8f68, 0xa884, ++ 0x920a, 0x0208, 0x8011, 0xaa86, 0x82ff, 0x002e, 0x1138, 0x00c6, ++ 0x2d60, 0x080c, 0xc85a, 0x00ce, 0x0804, 0xb488, 0x00c6, 0xa868, ++ 0xd0fc, 0x1118, 0x080c, 0x60ae, 0x0010, 0x080c, 0x64b4, 0x00ce, ++ 0x1904, 0xb476, 0x00c6, 0x2d60, 0x080c, 0xae61, 0x00ce, 0x0804, ++ 0xb488, 0x00c6, 0x080c, 0xaeaf, 0x0198, 0x6017, 0x0000, 0x6810, ++ 0x6012, 0x080c, 0xcfaa, 0x6023, 0x0003, 0x6904, 0x00c6, 0x2d60, ++ 0x080c, 0xae61, 0x00ce, 0x080c, 0xaedc, 0x00ce, 0x0804, 0xb488, ++ 0x2001, 0x1988, 0x2004, 0x6842, 0x00ce, 0x04d0, 0x7008, 0x9086, ++ 0x000b, 0x11c8, 0x6010, 0x00b6, 0x2058, 0xb900, 0xc1bc, 0xb902, ++ 0x00be, 0x00c6, 0x2d60, 0xa87b, 0x0003, 0x080c, 0xd1ea, 0x6007, ++ 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x90f0, 0x080c, ++ 0x968d, 0x00ce, 0x00e8, 0x700c, 0x9086, 0x2a00, 0x1138, 0x2001, ++ 0x1988, 0x2004, 0x6842, 0x00a0, 0x0479, 0x00a0, 0x89ff, 0x090c, ++ 0x0dd5, 0x00c6, 0x00d6, 0x2d60, 0xa867, 0x0103, 0xa87b, 0x0003, ++ 0x080c, 0x6a9d, 0x080c, 0xcd1e, 0x080c, 0xae92, 0x00de, 0x00ce, ++ 0x080c, 0xae61, 0x009e, 0x0005, 0x9186, 0x0015, 0x1128, 0x2001, ++ 0x1988, 0x2004, 0x6842, 0x0068, 0x918e, 0x0016, 0x1160, 0x00c6, ++ 0x2d00, 0x2060, 0x080c, 0xe80b, 0x080c, 0x86b2, 0x080c, 0xae61, ++ 0x00ce, 0x080c, 0xae61, 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, ++ 0xacb0, 0xabac, 0xd2f4, 0x0130, 0x2001, 0x1988, 0x2004, 0x6842, ++ 0x0804, 0xb506, 0x00c6, 0x2d60, 0x080c, 0xc75b, 0x00ce, 0x6804, ++ 0x9086, 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, ++ 0x6007, 0x0050, 0x080c, 0x90f0, 0x080c, 0x968d, 0x00ce, 0x04f0, ++ 0x6800, 0x9086, 0x000f, 0x01a8, 0x89ff, 0x090c, 0x0dd5, 0x6800, ++ 0x9086, 0x0004, 0x1190, 0xa87c, 0xd0ac, 0x0178, 0xa843, 0x0fff, ++ 0xa83f, 0x0fff, 0xa880, 0xc0fc, 0xa882, 0x2001, 0x0001, 0x6832, ++ 0x0400, 0x2001, 0x0007, 0x6832, 0x00e0, 0xa87c, 0xd0b4, 0x1150, ++ 0xd0ac, 0x0db8, 0x6824, 0xd0f4, 0x1d48, 0xa838, 0xa934, 0x9105, ++ 0x0d80, 0x0c20, 0xd2ec, 0x1d68, 0x7024, 0x9306, 0x1118, 0x7020, ++ 0x9406, 0x0d38, 0x7020, 0x683e, 0x7024, 0x683a, 0x2001, 0x0005, ++ 0x6832, 0x080c, 0xcea1, 0x080c, 0x968d, 0x0010, 0x080c, 0xae61, ++ 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x7008, ++ 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, 0x00be, 0x9206, ++ 0x1904, 0xb571, 0x700c, 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be, ++ 0x9206, 0x1904, 0xb571, 0x6038, 0x2068, 0x6824, 0xc0dc, 0x6826, ++ 0x6a20, 0x9286, 0x0007, 0x0904, 0xb571, 0x9286, 0x0002, 0x0904, ++ 0xb571, 0x9286, 0x0000, 0x05e8, 0x6808, 0x633c, 0x9306, 0x15c8, ++ 0x2071, 0x026c, 0x9186, 0x0015, 0x0570, 0x918e, 0x0016, 0x1100, ++ 0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, 0x01c0, 0x9186, ++ 0x004c, 0x01a8, 0x9186, 0x004d, 0x0190, 0x9186, 0x004e, 0x0178, ++ 0x9186, 0x0052, 0x0160, 0x6014, 0x0096, 0x2048, 0x080c, 0xcb35, ++ 0x090c, 0x0dd5, 0xa87b, 0x0003, 0x009e, 0x080c, 0xd1ea, 0x6007, ++ 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x90f0, 0x080c, ++ 0x968d, 0x00ce, 0x0030, 0x6038, 0x2070, 0x2001, 0x1988, 0x2004, ++ 0x7042, 0x080c, 0xae61, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00b6, ++ 0x0096, 0x00f6, 0x6014, 0x2048, 0x6010, 0x2058, 0x91b6, 0x0015, ++ 0x0130, 0xba08, 0xbb0c, 0xbc00, 0xc48c, 0xbc02, 0x0460, 0x0096, ++ 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0010, 0x2019, 0x000a, ++ 0x20a9, 0x0004, 0x080c, 0xbe1d, 0x002e, 0x003e, 0x015e, 0x009e, ++ 0x1904, 0xb5e0, 0x0096, 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, ++ 0x0014, 0x2019, 0x0006, 0x20a9, 0x0004, 0x080c, 0xbe1d, 0x002e, ++ 0x003e, 0x015e, 0x009e, 0x15a0, 0x7238, 0xba0a, 0x733c, 0xbb0e, ++ 0xbc00, 0xc48d, 0xbc02, 0xa804, 0x9005, 0x1128, 0x00fe, 0x009e, ++ 0x00be, 0x0804, 0xb265, 0x0096, 0x2048, 0xaa12, 0xab16, 0xac0a, ++ 0x009e, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, ++ 0x2031, 0x0000, 0x2041, 0x1243, 0x080c, 0xb37a, 0x0130, 0x00fe, ++ 0x009e, 0x080c, 0xae61, 0x00be, 0x0005, 0x080c, 0xb813, 0x0cb8, ++ 0x2b78, 0x00f6, 0x080c, 0x31bf, 0x080c, 0xd245, 0x00fe, 0x00c6, ++ 0x080c, 0xae0b, 0x2f00, 0x6012, 0x6017, 0x0000, 0x6023, 0x0001, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x654f, ++ 0x080c, 0x657b, 0x080c, 0x9138, 0x080c, 0x968d, 0x00ce, 0x0804, ++ 0xb5b3, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0dd5, 0x91b2, 0x0040, ++ 0x1a04, 0xb669, 0x0002, 0xb657, 0xb657, 0xb64d, 0xb657, 0xb657, ++ 0xb657, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, ++ 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, ++ 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, ++ 0xb64b, 0xb64b, 0xb657, 0xb64b, 0xb657, 0xb657, 0xb64b, 0xb64b, ++ 0xb64b, 0xb64b, 0xb64b, 0xb64d, 0xb64b, 0xb64b, 0xb64b, 0xb64b, ++ 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb657, 0xb657, 0xb64b, ++ 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, 0xb64b, ++ 0xb657, 0xb64b, 0xb64b, 0x080c, 0x0dd5, 0x0066, 0x00b6, 0x6610, ++ 0x2658, 0xb8cc, 0xc08c, 0xb8ce, 0x00be, 0x006e, 0x0000, 0x6003, ++ 0x0001, 0x6106, 0x9186, 0x0032, 0x0118, 0x080c, 0x9138, 0x0010, ++ 0x080c, 0x90f0, 0x0126, 0x2091, 0x8000, 0x080c, 0x968d, 0x012e, ++ 0x0005, 0x2600, 0x0002, 0xb657, 0xb657, 0xb67d, 0xb657, 0xb657, ++ 0xb67d, 0xb67d, 0xb67d, 0xb67d, 0xb657, 0xb67d, 0xb657, 0xb67d, ++ 0xb657, 0xb67d, 0xb67d, 0xb67d, 0xb67d, 0x080c, 0x0dd5, 0x6004, ++ 0x90b2, 0x0053, 0x1a0c, 0x0dd5, 0x91b6, 0x0013, 0x0904, 0xb741, ++ 0x91b6, 0x0027, 0x1904, 0xb6fc, 0x080c, 0x9588, 0x6004, 0x080c, ++ 0xcd2a, 0x01b0, 0x080c, 0xcd3b, 0x01a8, 0x908e, 0x0021, 0x0904, ++ 0xb6f9, 0x908e, 0x0022, 0x1130, 0x080c, 0xb291, 0x0904, 0xb6f5, ++ 0x0804, 0xb6f6, 0x908e, 0x003d, 0x0904, 0xb6f9, 0x0804, 0xb6ef, ++ 0x080c, 0x31e8, 0x2001, 0x0007, 0x080c, 0x654f, 0x6010, 0x00b6, ++ 0x2058, 0xb9a0, 0x00be, 0x080c, 0xb813, 0x9186, 0x007e, 0x1148, ++ 0x2001, 0x1837, 0x2014, 0xc285, 0x080c, 0x73bc, 0x1108, 0xc2ad, ++ 0x2202, 0x0036, 0x0026, 0x2019, 0x0028, 0x2110, 0x080c, 0xe917, ++ 0x002e, 0x003e, 0x0016, 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, ++ 0x080c, 0x928b, 0x0076, 0x903e, 0x080c, 0x9168, 0x6010, 0x00b6, ++ 0x905d, 0x0100, 0x00be, 0x2c08, 0x080c, 0xe2eb, 0x007e, 0x003e, ++ 0x002e, 0x001e, 0x080c, 0xd245, 0x0016, 0x080c, 0xcfa2, 0x080c, ++ 0xae61, 0x001e, 0x080c, 0x32bb, 0x080c, 0x968d, 0x0030, 0x080c, ++ 0xcfa2, 0x080c, 0xae61, 0x080c, 0x968d, 0x0005, 0x080c, 0xb813, ++ 0x0cb0, 0x080c, 0xb84f, 0x0c98, 0x9186, 0x0014, 0x1db0, 0x080c, ++ 0x9588, 0x6004, 0x908e, 0x0022, 0x1118, 0x080c, 0xb291, 0x0d68, ++ 0x080c, 0x31bf, 0x080c, 0xd245, 0x080c, 0xcd2a, 0x1190, 0x080c, ++ 0x31e8, 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, 0x080c, 0xb813, ++ 0x9186, 0x007e, 0x1128, 0x2001, 0x1837, 0x200c, 0xc185, 0x2102, ++ 0x0870, 0x080c, 0xcd3b, 0x1118, 0x080c, 0xb813, 0x0840, 0x6004, ++ 0x908e, 0x0032, 0x1160, 0x00e6, 0x00f6, 0x2071, 0x189e, 0x2079, ++ 0x0000, 0x080c, 0x3556, 0x00fe, 0x00ee, 0x0804, 0xb6ef, 0x6004, ++ 0x908e, 0x0021, 0x0d48, 0x908e, 0x0022, 0x090c, 0xb813, 0x0804, ++ 0xb6ef, 0x90b2, 0x0040, 0x1a04, 0xb7ef, 0x2008, 0x0002, 0xb789, ++ 0xb78a, 0xb78d, 0xb790, 0xb793, 0xb796, 0xb787, 0xb787, 0xb787, ++ 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, ++ 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, ++ 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb799, 0xb7a4, 0xb787, ++ 0xb7a6, 0xb7a4, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb7a4, ++ 0xb7a4, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, 0xb787, ++ 0xb787, 0xb7d6, 0xb7a4, 0xb787, 0xb7a0, 0xb787, 0xb787, 0xb787, ++ 0xb7a1, 0xb787, 0xb787, 0xb787, 0xb7a4, 0xb7cd, 0xb787, 0x080c, ++ 0x0dd5, 0x00d0, 0x2001, 0x000b, 0x0410, 0x2001, 0x0003, 0x00f8, ++ 0x2001, 0x0005, 0x00e0, 0x2001, 0x0001, 0x00c8, 0x2001, 0x0009, ++ 0x00b0, 0x080c, 0x9588, 0x6003, 0x0005, 0x080c, 0x968d, 0x0070, ++ 0x0018, 0x0010, 0x080c, 0x654f, 0x0804, 0xb7e7, 0x080c, 0x9588, ++ 0x080c, 0xd248, 0x6003, 0x0004, 0x080c, 0x968d, 0x0005, 0x080c, ++ 0x654f, 0x080c, 0x9588, 0x6003, 0x0002, 0x0036, 0x2019, 0x1852, ++ 0x2304, 0x9084, 0xff00, 0x1120, 0x2001, 0x1986, 0x201c, 0x0040, ++ 0x8007, 0x909a, 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, 0x9318, ++ 0x631a, 0x003e, 0x080c, 0x968d, 0x0c08, 0x080c, 0x9588, 0x080c, ++ 0xcfa2, 0x080c, 0xae61, 0x080c, 0x968d, 0x08c0, 0x00e6, 0x00f6, ++ 0x2071, 0x189e, 0x2079, 0x0000, 0x080c, 0x3556, 0x00fe, 0x00ee, ++ 0x080c, 0x9588, 0x080c, 0xae61, 0x080c, 0x968d, 0x0838, 0x080c, ++ 0x9588, 0x6003, 0x0002, 0x080c, 0xd248, 0x0804, 0x968d, 0x2600, ++ 0x2008, 0x0002, 0xb806, 0xb7e7, 0xb804, 0xb7e7, 0xb7e7, 0xb804, ++ 0xb804, 0xb804, 0xb804, 0xb7e7, 0xb804, 0xb7e7, 0xb804, 0xb7e7, ++ 0xb804, 0xb804, 0xb804, 0xb804, 0x080c, 0x0dd5, 0x080c, 0x9588, ++ 0x0096, 0x6014, 0x2048, 0x080c, 0x6c81, 0x009e, 0x080c, 0xae61, ++ 0x080c, 0x968d, 0x0005, 0x00e6, 0x0096, 0x0026, 0x0016, 0x080c, ++ 0xcb35, 0x0568, 0x6014, 0x2048, 0xa864, 0x9086, 0x0139, 0x11a8, ++ 0xa894, 0x9086, 0x0056, 0x1148, 0x080c, 0x5478, 0x0130, 0x2001, ++ 0x0000, 0x900e, 0x2011, 0x4000, 0x0028, 0x2001, 0x0030, 0x900e, ++ 0x2011, 0x4005, 0x080c, 0xd10f, 0x0090, 0xa868, 0xd0fc, 0x0178, ++ 0xa807, 0x0000, 0x0016, 0x6004, 0x908e, 0x0021, 0x0168, 0x908e, ++ 0x003d, 0x0150, 0x001e, 0xa867, 0x0103, 0xa833, 0x0100, 0x001e, ++ 0x002e, 0x009e, 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc0, 0x0096, ++ 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, 0xa823, 0x8001, ++ 0x009e, 0x0005, 0x00b6, 0x6610, 0x2658, 0xb804, 0x9084, 0x00ff, ++ 0x90b2, 0x000c, 0x1a0c, 0x0dd5, 0x6604, 0x96b6, 0x004d, 0x1120, ++ 0x080c, 0xd02e, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x0043, 0x1120, ++ 0x080c, 0xd077, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x004b, 0x1120, ++ 0x080c, 0xd0a3, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x0033, 0x1120, ++ 0x080c, 0xcfc4, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x0028, 0x1120, ++ 0x080c, 0xcd74, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x0029, 0x1120, ++ 0x080c, 0xcdb5, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x001f, 0x1120, ++ 0x080c, 0xb23a, 0x0804, 0xb8df, 0x6604, 0x96b6, 0x0000, 0x1118, ++ 0x080c, 0xb577, 0x04e0, 0x6604, 0x96b6, 0x0022, 0x1118, 0x080c, ++ 0xb272, 0x04a8, 0x6604, 0x96b6, 0x0035, 0x1118, 0x080c, 0xb398, ++ 0x0470, 0x6604, 0x96b6, 0x0039, 0x1118, 0x080c, 0xb50c, 0x0438, ++ 0x6604, 0x96b6, 0x003d, 0x1118, 0x080c, 0xb2aa, 0x0400, 0x6604, ++ 0x96b6, 0x0044, 0x1118, 0x080c, 0xb2e6, 0x00c8, 0x6604, 0x96b6, ++ 0x0049, 0x1118, 0x080c, 0xb327, 0x0090, 0x6604, 0x96b6, 0x0041, ++ 0x1118, 0x080c, 0xb311, 0x0058, 0x91b6, 0x0015, 0x1110, 0x0063, ++ 0x0030, 0x91b6, 0x0016, 0x1128, 0x00be, 0x0804, 0xbb39, 0x00be, ++ 0x0005, 0x080c, 0xaef7, 0x0cd8, 0xb8fc, 0xb8ff, 0xb8fc, 0xb946, ++ 0xb8fc, 0xbaad, 0xbb46, 0xb8fc, 0xb8fc, 0xbb0f, 0xb8fc, 0xbb25, ++ 0x0096, 0x601f, 0x0000, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, ++ 0x0103, 0x009e, 0x0804, 0xae61, 0xa001, 0xa001, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x7090, 0x9086, 0x0074, 0x1540, 0x080c, 0xe2bc, ++ 0x11b0, 0x6010, 0x00b6, 0x2058, 0x7030, 0xd08c, 0x0128, 0xb800, ++ 0xd0bc, 0x0110, 0xc0c5, 0xb802, 0x00f9, 0x00be, 0x2001, 0x0006, ++ 0x080c, 0x654f, 0x080c, 0x31e8, 0x080c, 0xae61, 0x0098, 0x2001, ++ 0x000a, 0x080c, 0x654f, 0x080c, 0x31e8, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x9138, 0x080c, 0x968d, 0x0020, 0x2001, 0x0001, ++ 0x080c, 0xba7d, 0x00ee, 0x0005, 0x00d6, 0xb800, 0xd084, 0x0160, ++ 0x9006, 0x080c, 0x653b, 0x2069, 0x1847, 0x6804, 0xd0a4, 0x0120, ++ 0x2001, 0x0006, 0x080c, 0x657b, 0x00de, 0x0005, 0x00b6, 0x0096, ++ 0x00d6, 0x2011, 0x1824, 0x2204, 0x9086, 0x0074, 0x1904, 0xba54, ++ 0x6010, 0x2058, 0xbaa0, 0x9286, 0x007e, 0x1120, 0x080c, 0xbc93, ++ 0x0804, 0xb9b8, 0x080c, 0xbc88, 0x6010, 0x2058, 0xbaa0, 0x9286, ++ 0x0080, 0x1510, 0x6014, 0x9005, 0x01a8, 0x2048, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, ++ 0x4000, 0x080c, 0xd10f, 0x0030, 0xa807, 0x0000, 0xa867, 0x0103, ++ 0xa833, 0x0200, 0x2001, 0x0006, 0x080c, 0x654f, 0x080c, 0x31e8, ++ 0x080c, 0xae61, 0x0804, 0xba57, 0x080c, 0xba65, 0x6014, 0x9005, ++ 0x0190, 0x2048, 0xa868, 0xd0f4, 0x01e8, 0xa864, 0x9084, 0x00ff, ++ 0x9086, 0x0039, 0x1d08, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, ++ 0x080c, 0xd10f, 0x08f8, 0x080c, 0xba5b, 0x0160, 0x9006, 0x080c, ++ 0x653b, 0x2001, 0x0004, 0x080c, 0x657b, 0x2001, 0x0007, 0x080c, ++ 0x654f, 0x08a0, 0x2001, 0x0004, 0x080c, 0x654f, 0x6003, 0x0001, ++ 0x6007, 0x0003, 0x080c, 0x9138, 0x080c, 0x968d, 0x0804, 0xba57, ++ 0xb85c, 0xd0e4, 0x01d8, 0x080c, 0xcf44, 0x080c, 0x73bc, 0x0118, ++ 0xd0dc, 0x1904, 0xb97a, 0x2011, 0x1837, 0x2204, 0xc0ad, 0x2012, ++ 0x2001, 0x196d, 0x2004, 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, ++ 0x080c, 0x28b2, 0x78e2, 0x00fe, 0x0804, 0xb97a, 0x080c, 0xcf81, ++ 0x2011, 0x1837, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xe441, ++ 0x000e, 0x1904, 0xb97a, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, ++ 0x654f, 0x9006, 0x080c, 0x653b, 0x00c6, 0x2001, 0x180f, 0x2004, ++ 0xd09c, 0x0520, 0x00f6, 0x2079, 0x0100, 0x00e6, 0x2071, 0x1800, ++ 0x700c, 0x9084, 0x00ff, 0x78e6, 0x707e, 0x7010, 0x78ea, 0x7082, ++ 0x908c, 0x00ff, 0x00ee, 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, ++ 0x2887, 0x00f6, 0x2100, 0x900e, 0x080c, 0x283e, 0x795e, 0x00fe, ++ 0x9186, 0x0081, 0x01d8, 0x2009, 0x0081, 0x00c8, 0x2009, 0x00ef, ++ 0x00f6, 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, 0x780c, 0xc0b5, ++ 0x780e, 0x00fe, 0x080c, 0x2887, 0x00f6, 0x2079, 0x1800, 0x7982, ++ 0x2100, 0x900e, 0x080c, 0x283e, 0x795e, 0x00fe, 0x8108, 0x080c, ++ 0x659e, 0x2b00, 0x00ce, 0x1904, 0xb97a, 0x6012, 0x2009, 0x180f, ++ 0x210c, 0xd19c, 0x0150, 0x2009, 0x027c, 0x210c, 0x918c, 0x00ff, ++ 0xb912, 0x2009, 0x027d, 0x210c, 0xb916, 0x2001, 0x0002, 0x080c, ++ 0x654f, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x0018, 0x2001, 0x0001, 0x0431, 0x00de, ++ 0x009e, 0x00be, 0x0005, 0x2001, 0x1810, 0x2004, 0xd0a4, 0x0120, ++ 0x2001, 0x1848, 0x2004, 0xd0ac, 0x0005, 0x00e6, 0x080c, 0xe970, ++ 0x0190, 0x2071, 0x0260, 0x7108, 0x720c, 0x918c, 0x00ff, 0x1118, ++ 0x9284, 0xff00, 0x0140, 0x6010, 0x2058, 0xb8a0, 0x9084, 0xff80, ++ 0x1110, 0xb912, 0xba16, 0x00ee, 0x0005, 0x2030, 0x9005, 0x0158, ++ 0x2001, 0x0007, 0x080c, 0x654f, 0x080c, 0x56e3, 0x1120, 0x2001, ++ 0x0007, 0x080c, 0x657b, 0x2600, 0x9005, 0x11b0, 0x6014, 0x0096, ++ 0x2048, 0xa868, 0x009e, 0xd0fc, 0x1178, 0x0036, 0x0046, 0x6010, ++ 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0004, 0x2011, 0x8014, ++ 0x080c, 0x4b04, 0x004e, 0x003e, 0x080c, 0x31e8, 0x6020, 0x9086, ++ 0x000a, 0x1108, 0x0005, 0x0804, 0xae61, 0x00b6, 0x00e6, 0x0026, ++ 0x0016, 0x2071, 0x1800, 0x7090, 0x9086, 0x0014, 0x1904, 0xbb05, ++ 0x080c, 0x56e3, 0x1170, 0x6014, 0x9005, 0x1158, 0x0036, 0x0046, ++ 0x6010, 0x2058, 0xbba0, 0x2021, 0x0006, 0x080c, 0x4cbb, 0x004e, ++ 0x003e, 0x00d6, 0x6010, 0x2058, 0x080c, 0x669a, 0x080c, 0xb934, ++ 0x00de, 0x080c, 0xbd59, 0x1588, 0x6010, 0x2058, 0xb890, 0x9005, ++ 0x0560, 0x2001, 0x0006, 0x080c, 0x654f, 0x0096, 0x6014, 0x904d, ++ 0x01d0, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, ++ 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xd10f, 0x0060, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x0029, 0x0130, 0xa807, 0x0000, 0xa867, ++ 0x0103, 0xa833, 0x0200, 0x009e, 0x080c, 0x31e8, 0x6020, 0x9086, ++ 0x000a, 0x0140, 0x080c, 0xae61, 0x0028, 0x080c, 0xb813, 0x9006, ++ 0x080c, 0xba7d, 0x001e, 0x002e, 0x00ee, 0x00be, 0x0005, 0x2011, ++ 0x1824, 0x2204, 0x9086, 0x0014, 0x1160, 0x2001, 0x0002, 0x080c, ++ 0x654f, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x9138, 0x0804, ++ 0x968d, 0x2001, 0x0001, 0x0804, 0xba7d, 0x2030, 0x2011, 0x1824, ++ 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, 0x000b, 0x1120, 0x2001, ++ 0x0007, 0x080c, 0x654f, 0x0804, 0xae61, 0x2001, 0x0001, 0x0804, ++ 0xba7d, 0x0002, 0xb8fc, 0xbb51, 0xb8fc, 0xbb92, 0xb8fc, 0xbc3f, ++ 0xbb46, 0xb8fc, 0xb8fc, 0xbc53, 0xb8fc, 0xbc65, 0x6604, 0x9686, ++ 0x0003, 0x0904, 0xbaad, 0x96b6, 0x001e, 0x1110, 0x080c, 0xae61, ++ 0x0005, 0x00b6, 0x00d6, 0x00c6, 0x080c, 0xbc77, 0x11a0, 0x9006, ++ 0x080c, 0x653b, 0x080c, 0x31bf, 0x080c, 0xd245, 0x2001, 0x0002, ++ 0x080c, 0x654f, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x9138, ++ 0x080c, 0x968d, 0x0418, 0x2009, 0x026e, 0x2104, 0x9086, 0x0009, ++ 0x1160, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0170, ++ 0x8001, 0xb842, 0x601b, 0x000a, 0x0088, 0x2009, 0x026f, 0x2104, ++ 0x9084, 0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, 0x080c, 0x31bf, ++ 0x080c, 0xd245, 0x2001, 0x0001, 0x080c, 0xba7d, 0x00ce, 0x00de, ++ 0x00be, 0x0005, 0x0096, 0x00b6, 0x0026, 0x9016, 0x080c, 0xbc85, ++ 0x00d6, 0x2069, 0x197c, 0x2d04, 0x9005, 0x0168, 0x6010, 0x2058, ++ 0xb8a0, 0x9086, 0x007e, 0x1138, 0x2069, 0x1820, 0x2d04, 0x8000, ++ 0x206a, 0x00de, 0x0010, 0x00de, 0x0088, 0x9006, 0x080c, 0x653b, ++ 0x2001, 0x0002, 0x080c, 0x654f, 0x6003, 0x0001, 0x6007, 0x0002, ++ 0x080c, 0x9138, 0x080c, 0x968d, 0x0804, 0xbc0f, 0x080c, 0xcb35, ++ 0x01b0, 0x6014, 0x2048, 0xa864, 0x2010, 0x9086, 0x0139, 0x1138, ++ 0x6007, 0x0016, 0x2001, 0x0002, 0x080c, 0xd169, 0x00b0, 0x6014, ++ 0x2048, 0xa864, 0xd0fc, 0x0118, 0x2001, 0x0001, 0x0ca8, 0x2001, ++ 0x180e, 0x2004, 0xd0dc, 0x0148, 0x6010, 0x2058, 0xb840, 0x9084, ++ 0x00ff, 0x9005, 0x1110, 0x9006, 0x0c38, 0x080c, 0xb813, 0x2009, ++ 0x026e, 0x2134, 0x96b4, 0x00ff, 0x9686, 0x0005, 0x0520, 0x9686, ++ 0x000b, 0x01c8, 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, 0x1118, ++ 0x9686, 0x0009, 0x01c0, 0x9086, 0x1900, 0x1168, 0x9686, 0x0009, ++ 0x0190, 0x2001, 0x0004, 0x080c, 0x654f, 0x2001, 0x0028, 0x601a, ++ 0x6007, 0x0052, 0x0020, 0x2001, 0x0001, 0x080c, 0xba7d, 0x002e, ++ 0x00be, 0x009e, 0x0005, 0x9286, 0x0139, 0x0160, 0x6014, 0x2048, ++ 0x080c, 0xcb35, 0x0140, 0xa864, 0x9086, 0x0139, 0x0118, 0xa868, ++ 0xd0fc, 0x0108, 0x0c40, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, ++ 0x9005, 0x0138, 0x8001, 0xb842, 0x601b, 0x000a, 0x6007, 0x0016, ++ 0x08f0, 0xb8a0, 0x9086, 0x007e, 0x1138, 0x00e6, 0x2071, 0x1800, ++ 0x080c, 0x5fad, 0x00ee, 0x0010, 0x080c, 0x31bf, 0x0860, 0x080c, ++ 0xbc85, 0x1160, 0x2001, 0x0004, 0x080c, 0x654f, 0x6003, 0x0001, ++ 0x6007, 0x0003, 0x080c, 0x9138, 0x0804, 0x968d, 0x080c, 0xb813, ++ 0x9006, 0x0804, 0xba7d, 0x0489, 0x1160, 0x2001, 0x0008, 0x080c, ++ 0x654f, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, 0x9138, 0x0804, ++ 0x968d, 0x2001, 0x0001, 0x0804, 0xba7d, 0x00f9, 0x1160, 0x2001, ++ 0x000a, 0x080c, 0x654f, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, ++ 0x9138, 0x0804, 0x968d, 0x2001, 0x0001, 0x0804, 0xba7d, 0x2009, ++ 0x026e, 0x2104, 0x9086, 0x0003, 0x1138, 0x2009, 0x026f, 0x2104, ++ 0x9084, 0xff00, 0x9086, 0x2a00, 0x0005, 0x9085, 0x0001, 0x0005, ++ 0x00b6, 0x00c6, 0x0016, 0x6110, 0x2158, 0x080c, 0x660e, 0x001e, ++ 0x00ce, 0x00be, 0x0005, 0x00b6, 0x00f6, 0x00e6, 0x00d6, 0x0036, ++ 0x0016, 0x6010, 0x2058, 0x2009, 0x1837, 0x2104, 0x9085, 0x0003, ++ 0x200a, 0x080c, 0xbd2b, 0x0560, 0x2009, 0x1837, 0x2104, 0xc0cd, ++ 0x200a, 0x080c, 0x696e, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, ++ 0x080c, 0xe5ae, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, ++ 0x002a, 0x2009, 0x0001, 0x080c, 0x318a, 0x00e6, 0x2071, 0x1800, ++ 0x080c, 0x2f96, 0x00ee, 0x00c6, 0x0156, 0x20a9, 0x0781, 0x2009, ++ 0x007f, 0x080c, 0x32bb, 0x8108, 0x1f04, 0xbcc9, 0x015e, 0x00ce, ++ 0x080c, 0xbc88, 0x2071, 0x0260, 0x2079, 0x0200, 0x7817, 0x0001, ++ 0x2001, 0x1837, 0x200c, 0xc1c5, 0x7018, 0xd0fc, 0x0110, 0xd0dc, ++ 0x0118, 0x7038, 0xd0dc, 0x1108, 0xc1c4, 0x7817, 0x0000, 0x2001, ++ 0x1837, 0x2102, 0x2079, 0x0100, 0x2e04, 0x9084, 0x00ff, 0x2069, ++ 0x181f, 0x206a, 0x78e6, 0x0006, 0x8e70, 0x2e04, 0x2069, 0x1820, ++ 0x206a, 0x78ea, 0x7832, 0x7836, 0x2010, 0x9084, 0xff00, 0x001e, ++ 0x9105, 0x2009, 0x182c, 0x200a, 0x2200, 0x9084, 0x00ff, 0x2008, ++ 0x080c, 0x2887, 0x080c, 0x73bc, 0x0170, 0x2071, 0x0260, 0x2069, ++ 0x1982, 0x7048, 0x206a, 0x704c, 0x6806, 0x7050, 0x680a, 0x7054, ++ 0x680e, 0x080c, 0xcf44, 0x0040, 0x2001, 0x0006, 0x080c, 0x654f, ++ 0x080c, 0x31e8, 0x080c, 0xae61, 0x001e, 0x003e, 0x00de, 0x00ee, ++ 0x00fe, 0x00be, 0x0005, 0x0096, 0x0026, 0x0036, 0x00e6, 0x0156, ++ 0x2019, 0x182c, 0x231c, 0x83ff, 0x01f0, 0x2071, 0x0260, 0x7200, ++ 0x9294, 0x00ff, 0x7004, 0x9084, 0xff00, 0x9205, 0x9306, 0x1198, ++ 0x2011, 0x0276, 0x20a9, 0x0004, 0x2b48, 0x2019, 0x000a, 0x080c, ++ 0xbe1d, 0x1148, 0x2011, 0x027a, 0x20a9, 0x0004, 0x2019, 0x0006, ++ 0x080c, 0xbe1d, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, 0x009e, ++ 0x0005, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9086, 0x0014, 0x11a8, ++ 0x7038, 0x9086, 0x0800, 0x1188, 0x703c, 0xd0ec, 0x0160, 0x9084, ++ 0x0f00, 0x9086, 0x0100, 0x1138, 0x7054, 0xd0a4, 0x1110, 0xd0ac, ++ 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, ++ 0x0096, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2029, 0x19f0, 0x252c, 0x2021, 0x19f6, 0x2424, ++ 0x2061, 0x1cd0, 0x2071, 0x1800, 0x7254, 0x7074, 0x9202, 0x1a04, ++ 0xbde9, 0x080c, 0x8981, 0x0904, 0xbde2, 0x080c, 0xe5df, 0x0904, ++ 0xbde2, 0x6720, 0x9786, 0x0007, 0x0904, 0xbde2, 0x2500, 0x9c06, ++ 0x0904, 0xbde2, 0x2400, 0x9c06, 0x05e8, 0x3e08, 0x9186, 0x0002, ++ 0x1148, 0x6010, 0x9005, 0x0130, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x1580, 0x00c6, 0x6000, 0x9086, 0x0004, 0x1110, 0x080c, ++ 0x1a5e, 0x9786, 0x000a, 0x0148, 0x080c, 0xcd3b, 0x1130, 0x00ce, ++ 0x080c, 0xb813, 0x080c, 0xae92, 0x00e8, 0x6014, 0x2048, 0x080c, ++ 0xcb35, 0x01a8, 0x9786, 0x0003, 0x1530, 0xa867, 0x0103, 0xa87c, ++ 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0fb1, 0x009e, ++ 0xab7a, 0xa877, 0x0000, 0x080c, 0x6c75, 0x080c, 0xcd1e, 0x080c, ++ 0xae92, 0x00ce, 0x9ce0, 0x0018, 0x7068, 0x9c02, 0x1210, 0x0804, ++ 0xbd8c, 0x012e, 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, ++ 0x009e, 0x00ee, 0x0005, 0x9786, 0x0006, 0x1118, 0x080c, 0xe551, ++ 0x0c30, 0x9786, 0x0009, 0x1148, 0x6000, 0x9086, 0x0004, 0x0d08, ++ 0x2009, 0x004c, 0x080c, 0xaedc, 0x08e0, 0x9786, 0x000a, 0x0938, ++ 0x0820, 0x220c, 0x2304, 0x9106, 0x1130, 0x8210, 0x8318, 0x1f04, ++ 0xbe09, 0x9006, 0x0005, 0x2304, 0x9102, 0x0218, 0x2001, 0x0001, ++ 0x0008, 0x9006, 0x918d, 0x0001, 0x0005, 0x0136, 0x01c6, 0x0016, ++ 0x8906, 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, ++ 0x9300, 0x2098, 0x3518, 0x20a9, 0x0001, 0x220c, 0x4002, 0x910e, ++ 0x1140, 0x8210, 0x8319, 0x1dc8, 0x9006, 0x001e, 0x01ce, 0x013e, ++ 0x0005, 0x220c, 0x9102, 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, ++ 0x0000, 0x918d, 0x0001, 0x001e, 0x01ce, 0x013e, 0x0005, 0x220c, ++ 0x810f, 0x2304, 0x9106, 0x1130, 0x8210, 0x8318, 0x1f04, 0xbe47, ++ 0x9006, 0x0005, 0x918d, 0x0001, 0x0005, 0x6004, 0x908a, 0x0053, ++ 0x1a0c, 0x0dd5, 0x080c, 0xcd2a, 0x0120, 0x080c, 0xcd3b, 0x0168, ++ 0x0028, 0x080c, 0x31e8, 0x080c, 0xcd3b, 0x0138, 0x080c, 0x9588, ++ 0x080c, 0xae61, 0x080c, 0x968d, 0x0005, 0x080c, 0xb813, 0x0cb0, ++ 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, 0x0005, ++ 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8c, ++ 0xbe8c, 0xbe8c, 0xbe8c, 0xbe8e, 0xbe8e, 0xbe8e, 0xbe8e, 0xbe8c, ++ 0xbe8c, 0xbe8c, 0xbe8e, 0xbe8c, 0x080c, 0x0dd5, 0x600b, 0xffff, ++ 0x6003, 0x0001, 0x6106, 0x080c, 0x90f0, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x968d, 0x012e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, ++ 0x9082, 0x0040, 0x0804, 0xbf43, 0x9186, 0x0027, 0x1520, 0x080c, ++ 0x9588, 0x080c, 0x31bf, 0x080c, 0xd245, 0x0096, 0x6114, 0x2148, ++ 0x080c, 0xcb35, 0x0198, 0x080c, 0xcd3b, 0x1118, 0x080c, 0xb813, ++ 0x0068, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000, 0xa97c, ++ 0xc1c5, 0xa97e, 0x080c, 0x6c81, 0x080c, 0xcd1e, 0x009e, 0x080c, ++ 0xae61, 0x0804, 0x968d, 0x9186, 0x0014, 0x1120, 0x6004, 0x9082, ++ 0x0040, 0x04a0, 0x9186, 0x0046, 0x0150, 0x9186, 0x0045, 0x0138, ++ 0x9186, 0x0053, 0x0120, 0x9186, 0x0048, 0x190c, 0x0dd5, 0x2001, ++ 0x0109, 0x2004, 0xd084, 0x0508, 0x0126, 0x2091, 0x2800, 0x0006, ++ 0x0016, 0x0026, 0x0036, 0x00f6, 0x00e6, 0x00c6, 0x2079, 0x19e7, ++ 0x2071, 0x1800, 0x2061, 0x0100, 0x080c, 0x8fd5, 0x00ce, 0x00ee, ++ 0x00fe, 0x003e, 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, 0x6000, ++ 0x9086, 0x0002, 0x1110, 0x0804, 0xbf81, 0x0005, 0x0002, 0xbf1d, ++ 0xbf1b, 0xbf1b, 0xbf1b, 0xbf1b, 0xbf1b, 0xbf1b, 0xbf1b, 0xbf1b, ++ 0xbf1b, 0xbf1b, 0xbf38, 0xbf38, 0xbf38, 0xbf38, 0xbf1b, 0xbf38, ++ 0xbf1b, 0xbf38, 0xbf1b, 0x080c, 0x0dd5, 0x080c, 0x9588, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0xcb35, 0x0168, 0xa867, 0x0103, 0xa87b, ++ 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, 0x080c, 0x6c81, ++ 0x080c, 0xcd1e, 0x009e, 0x080c, 0xae61, 0x080c, 0x968d, 0x0005, ++ 0x080c, 0x9588, 0x080c, 0xcd3b, 0x090c, 0xb813, 0x080c, 0xae61, ++ 0x080c, 0x968d, 0x0005, 0x0002, 0xbf5a, 0xbf58, 0xbf58, 0xbf58, ++ 0xbf58, 0xbf58, 0xbf58, 0xbf58, 0xbf58, 0xbf58, 0xbf58, 0xbf71, ++ 0xbf71, 0xbf71, 0xbf71, 0xbf58, 0xbf7b, 0xbf58, 0xbf71, 0xbf58, ++ 0x080c, 0x0dd5, 0x0096, 0x080c, 0x9588, 0x6014, 0x2048, 0x2001, ++ 0x1988, 0x2004, 0x6042, 0xa97c, 0xd1ac, 0x0140, 0x6003, 0x0004, ++ 0xa87c, 0x9085, 0x0400, 0xa87e, 0x009e, 0x0005, 0x6003, 0x0002, ++ 0x0cb8, 0x080c, 0x9588, 0x080c, 0xd248, 0x080c, 0xd24d, 0x6003, ++ 0x000f, 0x0804, 0x968d, 0x080c, 0x9588, 0x080c, 0xae61, 0x0804, ++ 0x968d, 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, ++ 0x0005, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9f, 0xc07c, ++ 0xbf9d, 0xc0b0, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, ++ 0xbf9d, 0xbf9d, 0xbf9d, 0xbf9d, 0xc0b0, 0x080c, 0x0dd5, 0x00b6, ++ 0x0096, 0x6114, 0x2148, 0x7644, 0x96b4, 0x0fff, 0x86ff, 0x1528, ++ 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xc06b, 0xa87b, 0x0000, ++ 0xa867, 0x0103, 0xae76, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xc245, 0x080c, 0x6a9d, 0x6210, 0x2258, 0xba3c, ++ 0x82ff, 0x0110, 0x8211, 0xba3e, 0x7044, 0xd0e4, 0x1904, 0xc04f, ++ 0x080c, 0xae61, 0x009e, 0x00be, 0x0005, 0x968c, 0x0c00, 0x0150, ++ 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xc053, 0x7348, 0xab92, ++ 0x734c, 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, ++ 0x0028, 0x1118, 0xa87b, 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0xa87b, ++ 0x0015, 0xa87c, 0xd0ac, 0x0170, 0xa938, 0xaa34, 0x2100, 0x9205, ++ 0x0148, 0x7048, 0x9106, 0x1118, 0x704c, 0x9206, 0x0118, 0xa992, ++ 0xaa8e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, ++ 0xa87b, 0x0000, 0xa867, 0x0103, 0xae76, 0x901e, 0xd6c4, 0x01d8, ++ 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, ++ 0xbfa6, 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, ++ 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, ++ 0x080c, 0xc730, 0x003e, 0xd6cc, 0x0904, 0xbfbb, 0x7154, 0xa98a, ++ 0x81ff, 0x0904, 0xbfbb, 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, ++ 0x0018, 0x2011, 0x0029, 0x080c, 0xc730, 0x2011, 0x0205, 0x2013, ++ 0x0000, 0x080c, 0xd1d5, 0x0804, 0xbfbb, 0xa868, 0xd0fc, 0x0120, ++ 0x2009, 0x0020, 0xa98a, 0x0c50, 0x00a6, 0x2950, 0x080c, 0xc6cf, ++ 0x00ae, 0x080c, 0xd1d5, 0x080c, 0xc720, 0x0804, 0xbfbd, 0x080c, ++ 0xce2e, 0x0804, 0xbfca, 0xa87c, 0xd0ac, 0x0904, 0xbfd6, 0xa880, ++ 0xd0bc, 0x1904, 0xbfd6, 0x7348, 0xa838, 0x9306, 0x11c8, 0x734c, ++ 0xa834, 0x931e, 0x0904, 0xbfd6, 0xd6d4, 0x0190, 0xab38, 0x9305, ++ 0x0904, 0xbfd6, 0x0068, 0xa87c, 0xd0ac, 0x0904, 0xbfae, 0xa838, ++ 0xa934, 0x9105, 0x0904, 0xbfae, 0xa880, 0xd0bc, 0x1904, 0xbfae, ++ 0x080c, 0xce68, 0x0804, 0xbfca, 0x0096, 0x00f6, 0x6003, 0x0003, ++ 0x6007, 0x0043, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, ++ 0x6014, 0x2048, 0xa87c, 0xd0ac, 0x0140, 0x6003, 0x0002, 0x00fe, ++ 0x009e, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0xa9ac, 0x910a, ++ 0x2300, 0xaab0, 0x9213, 0x2600, 0x9102, 0x2500, 0x9203, 0x0e90, ++ 0xac36, 0xab3a, 0xae46, 0xad4a, 0x00fe, 0x6043, 0x0000, 0x2c10, ++ 0x080c, 0x1bad, 0x080c, 0x9155, 0x080c, 0x97b9, 0x009e, 0x0005, ++ 0x0005, 0x9182, 0x0054, 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, ++ 0x0005, 0xc0cd, 0xc0cd, 0xc0cd, 0xc0cd, 0xc0cd, 0xc0cf, 0xc165, ++ 0xc0cd, 0xc0cd, 0xc17c, 0xc208, 0xc0cd, 0xc0cd, 0xc0cd, 0xc0cd, ++ 0xc21d, 0xc0cd, 0xc0cd, 0xc0cd, 0xc0cd, 0x080c, 0x0dd5, 0x0076, ++ 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114, 0x2150, 0x7644, ++ 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e, 0x6210, 0x00b6, ++ 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0x00be, 0x86ff, ++ 0x0904, 0xc160, 0x9694, 0xff00, 0x9284, 0x0c00, 0x0120, 0x7048, ++ 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904, 0xc160, 0x080c, ++ 0x0fff, 0x090c, 0x0dd5, 0x2900, 0xb07a, 0xb77c, 0xc7cd, 0xb77e, ++ 0xa867, 0x0103, 0xb068, 0xa86a, 0xb06c, 0xa86e, 0xb070, 0xa872, ++ 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, 0xab8e, ++ 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118, ++ 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, 0x0038, ++ 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0xaf7e, ++ 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, 0x735c, ++ 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, ++ 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xc730, ++ 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8, 0x9192, ++ 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, 0x080c, ++ 0xc730, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068, 0xd0fc, ++ 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c, 0xc6cf, ++ 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, 0x00f6, 0x00a6, 0x6003, ++ 0x0003, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6014, ++ 0x2050, 0xb436, 0xb33a, 0xb646, 0xb54a, 0x00ae, 0x00fe, 0x2c10, ++ 0x080c, 0x1bad, 0x0804, 0xa240, 0x6003, 0x0002, 0x6004, 0x9086, ++ 0x0040, 0x11c8, 0x0096, 0x6014, 0x2048, 0xa87c, 0xd0ac, 0x0160, ++ 0x601c, 0xd084, 0x1130, 0x00f6, 0x2c00, 0x2078, 0x080c, 0x1725, ++ 0x00fe, 0x6003, 0x0004, 0x0010, 0x6003, 0x0002, 0x009e, 0x080c, ++ 0x9588, 0x080c, 0x968d, 0x0096, 0x2001, 0x1988, 0x2004, 0x6042, ++ 0x080c, 0x963d, 0x080c, 0x97b9, 0x6114, 0x2148, 0xa97c, 0xd1e4, ++ 0x0904, 0xc203, 0xd1cc, 0x05a8, 0xa978, 0xa868, 0xd0fc, 0x0538, ++ 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0019, 0x20a0, 0x810e, 0x810e, 0x810f, 0x9184, 0x003f, ++ 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0019, 0x2098, 0x0156, 0x20a9, ++ 0x0020, 0x4003, 0x015e, 0x000e, 0xa882, 0x000e, 0xa87e, 0x001e, ++ 0xa874, 0x0006, 0x2148, 0x080c, 0x0fb1, 0x001e, 0x0440, 0x0016, ++ 0x080c, 0x0fb1, 0x009e, 0xa974, 0x0016, 0x080c, 0xc720, 0x001e, ++ 0x00f0, 0xa867, 0x0103, 0xa974, 0x9184, 0x00ff, 0x90b6, 0x0002, ++ 0x0180, 0x9086, 0x0028, 0x1118, 0xa87b, 0x001c, 0x0060, 0xd1dc, ++ 0x0118, 0xa87b, 0x0015, 0x0038, 0xd1d4, 0x0118, 0xa87b, 0x0007, ++ 0x0010, 0xa87b, 0x0000, 0x0016, 0x080c, 0x6a9d, 0x001e, 0xd1e4, ++ 0x1120, 0x080c, 0xae61, 0x009e, 0x0005, 0x080c, 0xce2e, 0x0cd8, ++ 0x6004, 0x9086, 0x0040, 0x1120, 0x080c, 0x9588, 0x080c, 0x968d, ++ 0x2019, 0x0001, 0x080c, 0xa5b6, 0x6003, 0x0002, 0x080c, 0xd24d, ++ 0x080c, 0x963d, 0x080c, 0x97b9, 0x0005, 0x6004, 0x9086, 0x0040, ++ 0x1120, 0x080c, 0x9588, 0x080c, 0x968d, 0x2019, 0x0001, 0x080c, ++ 0xa5b6, 0x080c, 0x963d, 0x080c, 0x31bf, 0x080c, 0xd245, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0xcb35, 0x0150, 0xa867, 0x0103, 0xa87b, ++ 0x0029, 0xa877, 0x0000, 0x080c, 0x6c81, 0x080c, 0xcd1e, 0x009e, ++ 0x080c, 0xae61, 0x080c, 0x97b9, 0x0005, 0xa87b, 0x0015, 0xd1fc, ++ 0x0180, 0xa87b, 0x0007, 0x8002, 0x8000, 0x810a, 0x9189, 0x0000, ++ 0x0006, 0x0016, 0x2009, 0x1a7a, 0x2104, 0x8000, 0x200a, 0x001e, ++ 0x000e, 0xa992, 0xa88e, 0x0005, 0x9182, 0x0054, 0x1220, 0x9182, ++ 0x0040, 0x0208, 0x000a, 0x0005, 0xc278, 0xc278, 0xc278, 0xc278, ++ 0xc278, 0xc27a, 0xc278, 0xc278, 0xc320, 0xc278, 0xc278, 0xc278, ++ 0xc278, 0xc278, 0xc278, 0xc278, 0xc278, 0xc278, 0xc278, 0xc451, ++ 0x080c, 0x0dd5, 0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, ++ 0x6114, 0x2150, 0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, ++ 0xb77e, 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, ++ 0xba3e, 0x00be, 0x86ff, 0x0904, 0xc319, 0x9694, 0xff00, 0x9284, ++ 0x0c00, 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, ++ 0x0904, 0xc319, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, ++ 0xc6c4, 0xb676, 0x0c38, 0x080c, 0x0fff, 0x090c, 0x0dd5, 0x2900, ++ 0xb07a, 0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, 0x0103, 0xb068, ++ 0xa86a, 0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, 0x9084, 0xf000, ++ 0x9635, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, ++ 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, ++ 0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, ++ 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, ++ 0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, ++ 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, ++ 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, ++ 0xc730, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8, ++ 0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, ++ 0x080c, 0xc730, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068, ++ 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c, ++ 0xc6cf, 0x080c, 0x1a3c, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, ++ 0x2001, 0x1988, 0x2004, 0x6042, 0x0096, 0x6114, 0x2148, 0xa83c, ++ 0xa940, 0x9105, 0x1118, 0xa87c, 0xc0dc, 0xa87e, 0x6003, 0x0002, ++ 0xa97c, 0xd1e4, 0x0904, 0xc44c, 0x6043, 0x0000, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1500, 0xd1cc, 0x0904, 0xc41b, ++ 0xa978, 0xa868, 0xd0fc, 0x0904, 0xc3dc, 0x0016, 0xa87c, 0x0006, ++ 0xa880, 0x0006, 0x00a6, 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, ++ 0x0002, 0x0904, 0xc3aa, 0x9086, 0x0028, 0x1904, 0xc396, 0xa87b, ++ 0x001c, 0xb07b, 0x001c, 0x0804, 0xc3b2, 0x6024, 0xd0f4, 0x11d0, ++ 0xa838, 0xaa34, 0x9205, 0x09c8, 0xa838, 0xaa90, 0x9206, 0x1120, ++ 0xa88c, 0xaa34, 0x9206, 0x0988, 0x6024, 0xd0d4, 0x1148, 0xa9ac, ++ 0xa834, 0x9102, 0x603a, 0xa9b0, 0xa838, 0x9103, 0x603e, 0x6024, ++ 0xc0f5, 0x6026, 0x6010, 0x00b6, 0x2058, 0xb83c, 0x8000, 0xb83e, ++ 0x00be, 0x9006, 0xa876, 0xa892, 0xa88e, 0xa87c, 0xc0e4, 0xa87e, ++ 0xd0cc, 0x0140, 0xc0cc, 0xa87e, 0x0096, 0xa878, 0x2048, 0x080c, ++ 0x0fb1, 0x009e, 0x080c, 0xce68, 0x0804, 0xc44c, 0xd1dc, 0x0158, ++ 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xd0f8, 0x0118, 0xb174, ++ 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, 0xb07b, ++ 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115, ++ 0x190c, 0xc245, 0xa87c, 0xb07e, 0xa890, 0xb092, 0xa88c, 0xb08e, ++ 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, 0x20a9, 0x0020, ++ 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e0, 0x9084, 0xffc0, ++ 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, 0x000e, 0xa882, 0x000e, ++ 0xa87e, 0x080c, 0xd1d5, 0x001e, 0xa874, 0x0006, 0x2148, 0x080c, ++ 0x0fb1, 0x001e, 0x0804, 0xc448, 0x0016, 0x00a6, 0x2150, 0xb174, ++ 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, 0x9086, 0x0028, 0x1128, ++ 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, 0xd1dc, 0x0158, 0xa87b, ++ 0x0015, 0xb07b, 0x0015, 0x080c, 0xd0f8, 0x0118, 0xb174, 0xc1dc, ++ 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, 0xb07b, 0x0007, ++ 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115, 0x190c, ++ 0xc245, 0xa890, 0xb092, 0xa88c, 0xb08e, 0xa87c, 0xb07e, 0x00ae, ++ 0x080c, 0x0fb1, 0x009e, 0x080c, 0xd1d5, 0xa974, 0x0016, 0x080c, ++ 0xc720, 0x001e, 0x0468, 0xa867, 0x0103, 0xa974, 0x9184, 0x00ff, ++ 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, 0x1118, 0xa87b, 0x001c, ++ 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, 0x080c, 0xd0f8, 0x0118, ++ 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, 0x0118, 0xa87b, 0x0007, ++ 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xc245, 0xa974, 0x0016, 0x080c, 0x6a9d, 0x001e, ++ 0xd1e4, 0x1120, 0x080c, 0xae61, 0x009e, 0x0005, 0x080c, 0xce2e, ++ 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, 0xd1e4, 0x190c, 0x1a4a, ++ 0x009e, 0x0005, 0x080c, 0x9588, 0x0010, 0x080c, 0x963d, 0x080c, ++ 0xcb35, 0x01f0, 0x0096, 0x6114, 0x2148, 0x080c, 0xcd3b, 0x1118, ++ 0x080c, 0xb813, 0x00a0, 0xa867, 0x0103, 0x2009, 0x180c, 0x210c, ++ 0xd18c, 0x11b8, 0xd184, 0x1190, 0x6108, 0xa97a, 0x918e, 0x0029, ++ 0x1110, 0x080c, 0xe908, 0xa877, 0x0000, 0x080c, 0x6c81, 0x009e, ++ 0x080c, 0xae61, 0x080c, 0x968d, 0x0804, 0x97b9, 0xa87b, 0x0004, ++ 0x0c90, 0xa87b, 0x0004, 0x0c78, 0x9182, 0x0054, 0x1220, 0x9182, ++ 0x0040, 0x0208, 0x000a, 0x0005, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, ++ 0xc4a8, 0xc4aa, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, ++ 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, 0xc4a8, ++ 0x080c, 0x0dd5, 0x080c, 0x56d7, 0x01f8, 0x6014, 0x7144, 0x918c, ++ 0x0fff, 0x9016, 0xd1c4, 0x0118, 0x7264, 0x9294, 0x00ff, 0x0096, ++ 0x904d, 0x0188, 0xa87b, 0x0000, 0xa864, 0x9086, 0x0139, 0x0128, ++ 0xa867, 0x0103, 0xa976, 0xaa96, 0x0030, 0xa897, 0x4000, 0xa99a, ++ 0xaa9e, 0x080c, 0x6c81, 0x009e, 0x0804, 0xae61, 0x9182, 0x0085, ++ 0x0002, 0xc4e0, 0xc4de, 0xc4de, 0xc4ec, 0xc4de, 0xc4de, 0xc4de, ++ 0xc4de, 0xc4de, 0xc4de, 0xc4de, 0xc4de, 0xc4de, 0x080c, 0x0dd5, ++ 0x6003, 0x0001, 0x6106, 0x080c, 0x90f0, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x968d, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6, ++ 0x2071, 0x0260, 0x7224, 0x6216, 0x7220, 0x080c, 0xcb23, 0x01a0, ++ 0x2268, 0x6800, 0x9086, 0x0000, 0x0178, 0x6010, 0x6d10, 0x952e, ++ 0x1158, 0x00c6, 0x2d60, 0x080c, 0xc75b, 0x00ce, 0x0128, 0x6803, ++ 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001, ++ 0x080c, 0x90f0, 0x080c, 0x968d, 0x9280, 0x0004, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6824, 0xd0ec, 0x0128, 0x00c6, ++ 0x2260, 0x080c, 0xce68, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e, ++ 0x0005, 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, ++ 0x0dd5, 0x908a, 0x0092, 0x1a0c, 0x0dd5, 0x9082, 0x0085, 0x00e2, ++ 0x9186, 0x0027, 0x0120, 0x9186, 0x0014, 0x190c, 0x0dd5, 0x080c, ++ 0x9588, 0x0096, 0x6014, 0x2048, 0x080c, 0xcb35, 0x0140, 0xa867, ++ 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, 0x6c81, 0x009e, ++ 0x080c, 0xae92, 0x0804, 0x968d, 0xc561, 0xc563, 0xc563, 0xc561, ++ 0xc561, 0xc561, 0xc561, 0xc561, 0xc561, 0xc561, 0xc561, 0xc561, ++ 0xc561, 0x080c, 0x0dd5, 0x080c, 0x9588, 0x080c, 0xae92, 0x080c, ++ 0x968d, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, 0x0085, ++ 0x2008, 0x04b8, 0x9186, 0x0027, 0x11f8, 0x080c, 0x9588, 0x080c, ++ 0x31bf, 0x080c, 0xd245, 0x0096, 0x6014, 0x2048, 0x080c, 0xcb35, ++ 0x0150, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, ++ 0x6c81, 0x080c, 0xcd1e, 0x009e, 0x080c, 0xae61, 0x080c, 0x968d, ++ 0x0005, 0x080c, 0xaef7, 0x0ce0, 0x9186, 0x0014, 0x1dd0, 0x080c, ++ 0x9588, 0x0096, 0x6014, 0x2048, 0x080c, 0xcb35, 0x0d60, 0xa867, ++ 0x0103, 0xa877, 0x0000, 0xa87b, 0x0006, 0xa880, 0xc0ec, 0xa882, ++ 0x08f0, 0x0002, 0xc5b9, 0xc5b7, 0xc5b7, 0xc5b7, 0xc5b7, 0xc5b7, ++ 0xc5d1, 0xc5b7, 0xc5b7, 0xc5b7, 0xc5b7, 0xc5b7, 0xc5b7, 0x080c, ++ 0x0dd5, 0x080c, 0x9588, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, ++ 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1986, 0x0010, ++ 0x2001, 0x1987, 0x2004, 0x601a, 0x6003, 0x000c, 0x080c, 0x968d, ++ 0x0005, 0x080c, 0x9588, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, ++ 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1986, 0x0010, ++ 0x2001, 0x1987, 0x2004, 0x601a, 0x6003, 0x000e, 0x080c, 0x968d, ++ 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x0012, ++ 0x0804, 0xaef7, 0xc5ff, 0xc5ff, 0xc5ff, 0xc5ff, 0xc601, 0xc64e, ++ 0xc5ff, 0xc5ff, 0xc5ff, 0xc5ff, 0xc5ff, 0xc5ff, 0xc5ff, 0x080c, ++ 0x0dd5, 0x0096, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x0168, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, ++ 0x9186, 0x0035, 0x1118, 0x009e, 0x0804, 0xc662, 0x080c, 0xcb35, ++ 0x1118, 0x080c, 0xcd1e, 0x0068, 0x6014, 0x2048, 0xa87c, 0xd0e4, ++ 0x1110, 0x080c, 0xcd1e, 0xa867, 0x0103, 0x080c, 0xd210, 0x080c, ++ 0x6c81, 0x00d6, 0x2c68, 0x080c, 0xae0b, 0x01d0, 0x6003, 0x0001, ++ 0x6007, 0x001e, 0x600b, 0xffff, 0x2009, 0x026e, 0x210c, 0x613a, ++ 0x2009, 0x026f, 0x210c, 0x613e, 0x6910, 0x6112, 0x080c, 0xcfaa, ++ 0x6954, 0x6156, 0x6023, 0x0001, 0x080c, 0x90f0, 0x080c, 0x968d, ++ 0x2d60, 0x00de, 0x080c, 0xae61, 0x009e, 0x0005, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x05a0, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0035, 0x0130, 0x9186, 0x001e, 0x0118, 0x9186, ++ 0x0039, 0x1538, 0x00d6, 0x2c68, 0x080c, 0xd1a8, 0x11f0, 0x080c, ++ 0xae0b, 0x01d8, 0x6106, 0x6003, 0x0001, 0x6023, 0x0001, 0x6910, ++ 0x6112, 0x692c, 0x612e, 0x6930, 0x6132, 0x6934, 0x918c, 0x00ff, ++ 0x6136, 0x6938, 0x613a, 0x693c, 0x613e, 0x6954, 0x6156, 0x080c, ++ 0xcfaa, 0x080c, 0x90f0, 0x080c, 0x968d, 0x2d60, 0x00de, 0x0804, ++ 0xae61, 0x0096, 0x6014, 0x2048, 0x080c, 0xcb35, 0x01c8, 0xa867, ++ 0x0103, 0xa880, 0xd0b4, 0x0128, 0xc0ec, 0xa882, 0xa87b, 0x0006, ++ 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, ++ 0x080c, 0xce2a, 0xa877, 0x0000, 0x080c, 0x6c81, 0x080c, 0xcd1e, ++ 0x009e, 0x0804, 0xae61, 0x0016, 0x0096, 0x6014, 0x2048, 0x080c, ++ 0xcb35, 0x0140, 0xa867, 0x0103, 0xa87b, 0x0028, 0xa877, 0x0000, ++ 0x080c, 0x6c81, 0x009e, 0x001e, 0x9186, 0x0013, 0x0148, 0x9186, ++ 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0xaef7, 0x0030, ++ 0x080c, 0x9588, 0x080c, 0xae92, 0x080c, 0x968d, 0x0005, 0x0056, ++ 0x0066, 0x0096, 0x00a6, 0x2029, 0x0001, 0x9182, 0x0101, 0x1208, ++ 0x0010, 0x2009, 0x0100, 0x2130, 0x8304, 0x9098, 0x0018, 0x2009, ++ 0x0020, 0x2011, 0x0029, 0x080c, 0xc730, 0x96b2, 0x0020, 0xb004, ++ 0x904d, 0x0110, 0x080c, 0x0fb1, 0x080c, 0x0fff, 0x0520, 0x8528, ++ 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, ++ 0x1228, 0x2608, 0x2011, 0x001b, 0x0499, 0x00a8, 0x96b2, 0x003c, ++ 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x0451, 0x0c28, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, ++ 0x95ac, 0x0000, 0x0048, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, ++ 0x852f, 0x95ad, 0x0003, 0xb566, 0x009e, 0x006e, 0x005e, 0x0005, ++ 0x00a6, 0x89ff, 0x0158, 0xa804, 0x9055, 0x0130, 0xa807, 0x0000, ++ 0x080c, 0x6c81, 0x2a48, 0x0cb8, 0x080c, 0x6c81, 0x00ae, 0x0005, ++ 0x00f6, 0x2079, 0x0200, 0x7814, 0x9085, 0x0080, 0x7816, 0xd184, ++ 0x0108, 0x8108, 0x810c, 0x20a9, 0x0001, 0xa860, 0x20e8, 0xa85c, ++ 0x9200, 0x20a0, 0x20e1, 0x0000, 0x2300, 0x9e00, 0x2098, 0x4003, ++ 0x8318, 0x9386, 0x0020, 0x1148, 0x2018, 0x2300, 0x9e00, 0x2098, ++ 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, 0x8109, 0x1d80, 0x7817, ++ 0x0000, 0x00fe, 0x0005, 0x0066, 0x0126, 0x2091, 0x8000, 0x2031, ++ 0x0001, 0x6020, 0x9084, 0x000f, 0x0083, 0x012e, 0x006e, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, 0x6020, 0x9084, ++ 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xc796, 0xc796, 0xc791, ++ 0xc7b8, 0xc784, 0xc791, 0xc7b8, 0xc791, 0xc784, 0x8ed9, 0xc791, ++ 0xc791, 0xc791, 0xc784, 0xc784, 0x080c, 0x0dd5, 0x0036, 0x2019, ++ 0x0010, 0x080c, 0xe134, 0x6023, 0x0006, 0x6003, 0x0007, 0x003e, ++ 0x0005, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x0096, 0x86ff, ++ 0x11d8, 0x6014, 0x2048, 0x080c, 0xcb35, 0x01c0, 0xa864, 0x9086, ++ 0x0139, 0x1128, 0xa87b, 0x0005, 0xa883, 0x0000, 0x0028, 0x900e, ++ 0x2001, 0x0005, 0x080c, 0x6ec0, 0x080c, 0xce2a, 0x080c, 0x6c75, ++ 0x080c, 0xae92, 0x9085, 0x0001, 0x009e, 0x0005, 0x9006, 0x0ce0, ++ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, 0x0002, 0xc7ce, 0xc7fc, ++ 0xc7d0, 0xc81d, 0xc7f7, 0xc7ce, 0xc791, 0xc796, 0xc796, 0xc791, ++ 0xc791, 0xc791, 0xc791, 0xc791, 0xc791, 0xc791, 0x080c, 0x0dd5, ++ 0x86ff, 0x1510, 0x6020, 0x9086, 0x0006, 0x01f0, 0x0096, 0x6014, ++ 0x2048, 0x080c, 0xcb35, 0x0158, 0xa87c, 0xd0cc, 0x0130, 0x0096, ++ 0xa878, 0x2048, 0x080c, 0x0fb1, 0x009e, 0x080c, 0xce2a, 0x009e, ++ 0x080c, 0xd1ea, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, ++ 0x080c, 0x90f0, 0x080c, 0x968d, 0x9085, 0x0001, 0x0005, 0x0066, ++ 0x080c, 0x1a5e, 0x006e, 0x08a0, 0x00e6, 0x2071, 0x19e7, 0x7024, ++ 0x9c06, 0x1120, 0x080c, 0xa540, 0x00ee, 0x0850, 0x6020, 0x9084, ++ 0x000f, 0x9086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, ++ 0x2c40, 0x080c, 0xa69c, 0x009e, 0x008e, 0x0010, 0x080c, 0xa43d, ++ 0x00ee, 0x1904, 0xc7d0, 0x0804, 0xc791, 0x0036, 0x00e6, 0x2071, ++ 0x19e7, 0x703c, 0x9c06, 0x1138, 0x901e, 0x080c, 0xa5b6, 0x00ee, ++ 0x003e, 0x0804, 0xc7d0, 0x080c, 0xa7cc, 0x00ee, 0x003e, 0x1904, ++ 0xc7d0, 0x0804, 0xc791, 0x00c6, 0x6020, 0x9084, 0x000f, 0x0013, ++ 0x00ce, 0x0005, 0xc850, 0xc919, 0xca80, 0xc85a, 0xae92, 0xc850, ++ 0xe126, 0xd252, 0xc919, 0x8eab, 0xcaff, 0xc849, 0xc849, 0xc849, ++ 0xc849, 0x080c, 0x0dd5, 0x080c, 0xcd3b, 0x1110, 0x080c, 0xb813, ++ 0x0005, 0x080c, 0x9588, 0x080c, 0x968d, 0x0804, 0xae61, 0x601b, ++ 0x0001, 0x0005, 0x080c, 0xcb35, 0x0130, 0x6014, 0x0096, 0x2048, ++ 0x2c00, 0xa896, 0x009e, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, ++ 0x0002, 0xc879, 0xc87b, 0xc89f, 0xc8b3, 0xc8d7, 0xc879, 0xc850, ++ 0xc850, 0xc850, 0xc8b3, 0xc8b3, 0xc879, 0xc879, 0xc879, 0xc879, ++ 0xc8bd, 0x080c, 0x0dd5, 0x00e6, 0x6014, 0x0096, 0x2048, 0xa880, ++ 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19e7, 0x7024, 0x9c06, 0x01a0, ++ 0x080c, 0xa43d, 0x080c, 0xd1ea, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0002, 0x2001, 0x1987, 0x2004, 0x601a, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x00ee, 0x0005, 0x601b, 0x0001, 0x0cd8, 0x0096, ++ 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x080c, 0xd1ea, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x0005, 0x0096, 0x601b, 0x0001, 0x6014, 0x2048, ++ 0xa880, 0xc0b5, 0xa882, 0x009e, 0x0005, 0x080c, 0x56d7, 0x01a8, ++ 0x6014, 0x0096, 0x904d, 0x0180, 0xa864, 0xa867, 0x0103, 0xa87b, ++ 0x0006, 0x9086, 0x0139, 0x1140, 0xa867, 0x0139, 0xa897, 0x4005, ++ 0xa89b, 0x0004, 0x080c, 0x6c81, 0x009e, 0x0804, 0xae61, 0x6014, ++ 0x0096, 0x904d, 0x05c8, 0xa97c, 0xd1e4, 0x05b0, 0x2001, 0x180f, ++ 0x2004, 0xd0c4, 0x0110, 0x009e, 0x0005, 0xa884, 0x009e, 0x8003, ++ 0x800b, 0x810b, 0x9108, 0x611a, 0x2001, 0x0030, 0x2c08, 0x080c, ++ 0x15ee, 0x2001, 0x030c, 0x2004, 0x9086, 0x0041, 0x11a0, 0x6014, ++ 0x0096, 0x904d, 0x090c, 0x0dd5, 0xa880, 0xd0f4, 0x1130, 0xc0f5, ++ 0xa882, 0x009e, 0x601b, 0x0002, 0x0070, 0x009e, 0x2001, 0x0037, ++ 0x2c08, 0x080c, 0x15ee, 0x6000, 0x9086, 0x0004, 0x1120, 0x2009, ++ 0x0048, 0x080c, 0xaedc, 0x0005, 0x009e, 0x080c, 0x1a5e, 0x0804, ++ 0xc89f, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, 0x000b, 0x0005, ++ 0xc930, 0xc857, 0xc932, 0xc930, 0xc932, 0xc932, 0xc851, 0xc930, ++ 0xc84b, 0xc84b, 0xc930, 0xc930, 0xc930, 0xc930, 0xc930, 0xc930, ++ 0x080c, 0x0dd5, 0x6010, 0x00b6, 0x2058, 0xb804, 0x9084, 0x00ff, ++ 0x00be, 0x908a, 0x000c, 0x1a0c, 0x0dd5, 0x00b6, 0x0013, 0x00be, ++ 0x0005, 0xc94d, 0xca1a, 0xc94f, 0xc98f, 0xc94f, 0xc98f, 0xc94f, ++ 0xc95d, 0xc94d, 0xc98f, 0xc94d, 0xc97e, 0x080c, 0x0dd5, 0x6004, ++ 0x908e, 0x0016, 0x05c0, 0x908e, 0x0004, 0x05a8, 0x908e, 0x0002, ++ 0x0590, 0x908e, 0x0052, 0x0904, 0xca16, 0x6004, 0x080c, 0xcd3b, ++ 0x0904, 0xca33, 0x908e, 0x0004, 0x1110, 0x080c, 0x31e8, 0x908e, ++ 0x0021, 0x0904, 0xca37, 0x908e, 0x0022, 0x0904, 0xca7b, 0x908e, ++ 0x003d, 0x0904, 0xca37, 0x908e, 0x0039, 0x0904, 0xca3b, 0x908e, ++ 0x0035, 0x0904, 0xca3b, 0x908e, 0x001e, 0x0178, 0x908e, 0x0001, ++ 0x1140, 0x6010, 0x2058, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, ++ 0x0110, 0x080c, 0x31bf, 0x080c, 0xb813, 0x0804, 0xae92, 0x00c6, ++ 0x00d6, 0x6104, 0x9186, 0x0016, 0x0904, 0xca07, 0x9186, 0x0002, ++ 0x1904, 0xc9dc, 0x2001, 0x1837, 0x2004, 0xd08c, 0x11c8, 0x080c, ++ 0x73bc, 0x11b0, 0x080c, 0xd230, 0x0138, 0x080c, 0x73df, 0x1120, ++ 0x080c, 0x72cc, 0x0804, 0xca64, 0x2001, 0x197d, 0x2003, 0x0001, ++ 0x2001, 0x1800, 0x2003, 0x0001, 0x080c, 0x72ee, 0x0804, 0xca64, ++ 0x6010, 0x2058, 0x2001, 0x1837, 0x2004, 0xd0ac, 0x1904, 0xca64, ++ 0xb8a0, 0x9084, 0xff80, 0x1904, 0xca64, 0xb840, 0x9084, 0x00ff, ++ 0x9005, 0x0190, 0x8001, 0xb842, 0x6017, 0x0000, 0x6023, 0x0007, ++ 0x601b, 0x0398, 0x6043, 0x0000, 0x080c, 0xae0b, 0x0128, 0x2b00, ++ 0x6012, 0x6023, 0x0001, 0x0458, 0x00de, 0x00ce, 0x6004, 0x908e, ++ 0x0002, 0x11a0, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1170, ++ 0x2009, 0x1837, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0x1800, ++ 0x080c, 0x5fad, 0x00ee, 0x080c, 0xb813, 0x0030, 0x080c, 0xb813, ++ 0x080c, 0x31bf, 0x080c, 0xd245, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x31e8, 0x012e, 0x00ee, 0x080c, 0xae92, 0x0005, 0x2001, ++ 0x0002, 0x080c, 0x654f, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x31e8, ++ 0x0804, 0xc98b, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38, ++ 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xc9dc, ++ 0x8001, 0xb842, 0x6003, 0x0001, 0x080c, 0x9138, 0x080c, 0x968d, ++ 0x00de, 0x00ce, 0x0898, 0x080c, 0xb813, 0x0804, 0xc98d, 0x080c, ++ 0xb84f, 0x0804, 0xc98d, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xd1a8, ++ 0x00de, 0x0118, 0x080c, 0xae61, 0x00f0, 0x6004, 0x8007, 0x6134, ++ 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0002, 0x603c, 0x600a, 0x2001, 0x1987, 0x2004, 0x601a, ++ 0x602c, 0x2c08, 0x2060, 0x6024, 0xc0b5, 0x6026, 0x2160, 0x080c, ++ 0x90f0, 0x080c, 0x968d, 0x0005, 0x00de, 0x00ce, 0x080c, 0xb813, ++ 0x080c, 0x31bf, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x31e8, ++ 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, 0x6043, 0x0000, ++ 0x012e, 0x00ee, 0x0005, 0x080c, 0xb291, 0x1904, 0xca33, 0x0005, ++ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0dd5, 0x0096, 0x00d6, 0x001b, ++ 0x00de, 0x009e, 0x0005, 0xca9b, 0xca9b, 0xca9b, 0xca9b, 0xca9b, ++ 0xca9b, 0xca9b, 0xca9b, 0xca9b, 0xc850, 0xca9b, 0xc857, 0xca9d, ++ 0xc857, 0xcaaa, 0xca9b, 0x080c, 0x0dd5, 0x6004, 0x9086, 0x008b, ++ 0x0148, 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, 0x90f0, 0x080c, ++ 0x968d, 0x0005, 0x080c, 0xd224, 0x0118, 0x080c, 0xd237, 0x0010, ++ 0x080c, 0xd245, 0x080c, 0xcd1e, 0x080c, 0xcb35, 0x0570, 0x080c, ++ 0x31bf, 0x080c, 0xcb35, 0x0168, 0x6014, 0x2048, 0xa867, 0x0103, ++ 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ed, 0xa882, 0x080c, ++ 0x6c81, 0x2c68, 0x080c, 0xae0b, 0x0150, 0x6810, 0x6012, 0x080c, ++ 0xcfaa, 0x00c6, 0x2d60, 0x080c, 0xae92, 0x00ce, 0x0008, 0x2d60, ++ 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, ++ 0x080c, 0x9138, 0x080c, 0x968d, 0x00c8, 0x080c, 0xd224, 0x0138, ++ 0x6034, 0x9086, 0x4000, 0x1118, 0x080c, 0x31bf, 0x08d0, 0x6034, ++ 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, ++ 0x1118, 0x080c, 0x31bf, 0x0868, 0x080c, 0xae92, 0x0005, 0x6000, ++ 0x908a, 0x0016, 0x1a0c, 0x0dd5, 0x0002, 0xcb15, 0xcb15, 0xcb17, ++ 0xcb17, 0xcb17, 0xcb15, 0xcb15, 0xae92, 0xcb15, 0xcb15, 0xcb15, ++ 0xcb15, 0xcb15, 0xcb15, 0xcb15, 0xcb15, 0x080c, 0x0dd5, 0x080c, ++ 0xa7cc, 0x6114, 0x0096, 0x2148, 0xa87b, 0x0006, 0x080c, 0x6c81, ++ 0x009e, 0x0804, 0xae61, 0x9284, 0x0007, 0x1158, 0x9282, 0x1cd0, ++ 0x0240, 0x2001, 0x181a, 0x2004, 0x9202, 0x1218, 0x9085, 0x0001, ++ 0x0005, 0x9006, 0x0ce8, 0x0096, 0x0028, 0x0096, 0x0006, 0x6014, ++ 0x2048, 0x000e, 0x0006, 0x9984, 0xf000, 0x9086, 0xf000, 0x0110, ++ 0x080c, 0x10aa, 0x000e, 0x009e, 0x0005, 0x00e6, 0x00c6, 0x0036, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, 0x1cd0, 0x2071, 0x1800, ++ 0x7354, 0x7074, 0x9302, 0x1640, 0x6020, 0x9206, 0x11f8, 0x080c, ++ 0xd230, 0x0180, 0x9286, 0x0001, 0x1168, 0x6004, 0x9086, 0x0004, ++ 0x1148, 0x080c, 0x31bf, 0x080c, 0xd245, 0x00c6, 0x080c, 0xae92, ++ 0x00ce, 0x0060, 0x080c, 0xcf24, 0x0148, 0x080c, 0xcd3b, 0x1110, ++ 0x080c, 0xb813, 0x00c6, 0x080c, 0xae61, 0x00ce, 0x9ce0, 0x0018, ++ 0x7068, 0x9c02, 0x1208, 0x08a0, 0x012e, 0x000e, 0x003e, 0x00ce, ++ 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, 0x1000, 0x210c, ++ 0x81ff, 0x0128, 0x2061, 0x1ab0, 0x6112, 0x080c, 0x31bf, 0x9006, ++ 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xae0b, 0x01b0, 0x6656, 0x2b00, ++ 0x6012, 0x080c, 0x56d7, 0x0118, 0x080c, 0xcc62, 0x0168, 0x080c, ++ 0xcfaa, 0x6023, 0x0003, 0x2009, 0x004b, 0x080c, 0xaedc, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0xbaa0, 0x080c, 0xaeaf, 0x0560, 0x6057, 0x0000, ++ 0x2b00, 0x6012, 0x080c, 0xcfaa, 0x6023, 0x0003, 0x0016, 0x080c, ++ 0x928b, 0x0076, 0x903e, 0x080c, 0x9168, 0x2c08, 0x080c, 0xe2eb, ++ 0x007e, 0x001e, 0xd184, 0x0128, 0x080c, 0xae61, 0x9085, 0x0001, ++ 0x0070, 0x080c, 0x56d7, 0x0128, 0xd18c, 0x1170, 0x080c, 0xcc62, ++ 0x0148, 0x2009, 0x004c, 0x080c, 0xaedc, 0x9085, 0x0001, 0x012e, ++ 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x2900, 0x6016, 0x0c90, 0x2009, ++ 0x004d, 0x0010, 0x2009, 0x004e, 0x00f6, 0x00c6, 0x0046, 0x0016, ++ 0x080c, 0xae0b, 0x2c78, 0x0590, 0x7e56, 0x2b00, 0x7812, 0x7823, ++ 0x0003, 0x2021, 0x0005, 0x080c, 0xcc74, 0x9186, 0x004d, 0x0118, ++ 0x9186, 0x004e, 0x0148, 0x2001, 0x1980, 0x200c, 0xd1fc, 0x0168, ++ 0x2f60, 0x080c, 0xae61, 0x00d0, 0x2001, 0x197f, 0x200c, 0xd1fc, ++ 0x0120, 0x2f60, 0x080c, 0xae61, 0x0088, 0x2f60, 0x080c, 0x56d7, ++ 0x0138, 0xd18c, 0x1118, 0x04f1, 0x0148, 0x0010, 0x2900, 0x7816, ++ 0x001e, 0x0016, 0x080c, 0xaedc, 0x9085, 0x0001, 0x001e, 0x004e, ++ 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x080c, 0xae0b, ++ 0x2c78, 0x0508, 0x7e56, 0x2b00, 0x7812, 0x7823, 0x0003, 0x0096, ++ 0x2021, 0x0004, 0x0489, 0x009e, 0x2001, 0x197e, 0x200c, 0xd1fc, ++ 0x0120, 0x2f60, 0x080c, 0xae61, 0x0060, 0x2f60, 0x080c, 0x56d7, ++ 0x0120, 0xd18c, 0x1160, 0x0071, 0x0130, 0x2009, 0x0052, 0x080c, ++ 0xaedc, 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x2900, ++ 0x7816, 0x0c98, 0x00c6, 0x080c, 0x4aa4, 0x00ce, 0x1120, 0x080c, ++ 0xae61, 0x9006, 0x0005, 0xa867, 0x0000, 0xa86b, 0x8000, 0x2900, ++ 0x6016, 0x9085, 0x0001, 0x0005, 0x0096, 0x0076, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x6733, 0x0158, 0x2001, 0xcc79, 0x0006, 0x900e, ++ 0x2400, 0x080c, 0x6ec0, 0x080c, 0x6c81, 0x000e, 0x0807, 0x2418, ++ 0x080c, 0x9522, 0xbaa0, 0x0086, 0x2041, 0x0001, 0x2039, 0x0001, ++ 0x2608, 0x080c, 0x92a3, 0x008e, 0x080c, 0x9168, 0x2f08, 0x2648, ++ 0x080c, 0xe2eb, 0xb93c, 0x81ff, 0x090c, 0x9374, 0x080c, 0x968d, ++ 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0xae0b, 0x0190, 0x660a, 0x2b08, 0x6112, 0x080c, 0xcfaa, ++ 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f, 0x080c, 0xaedc, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xaeaf, 0x01b8, 0x660a, 0x2b08, ++ 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0008, 0x2900, 0x6016, 0x00f6, ++ 0x2c78, 0x080c, 0x1725, 0x00fe, 0x2009, 0x0021, 0x080c, 0xaedc, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x2009, ++ 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000, 0x080c, 0xae0b, ++ 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0001, ++ 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0xaedc, 0x9085, 0x0001, ++ 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0xaeaf, 0x0188, 0x2b08, 0x6112, 0x080c, ++ 0xcfaa, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x0000, 0x080c, ++ 0xaedc, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818, 0x0026, 0x00b6, ++ 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0x00be, ++ 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, 0x0002, 0x0140, ++ 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110, 0x9085, 0x0001, ++ 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6020, 0x9086, 0x0004, ++ 0x0190, 0x6014, 0x904d, 0x080c, 0xcb35, 0x0168, 0xa864, 0x9086, ++ 0x0139, 0x0158, 0x6020, 0x9086, 0x0003, 0x0128, 0xa868, 0xd0fc, ++ 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, 0x000e, 0x0005, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0xaeaf, 0x0198, 0x2b08, ++ 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0001, 0x2900, 0x6016, 0x080c, ++ 0x31bf, 0x2009, 0x0028, 0x080c, 0xaedc, 0x9085, 0x0001, 0x012e, ++ 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, 0x11a8, 0x2011, ++ 0x1824, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, 0x080c, 0xba65, ++ 0x00be, 0x080c, 0xbc88, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x0078, 0x6014, 0x0096, 0x2048, 0xa868, ++ 0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, 0xd169, 0x080c, ++ 0xb813, 0x080c, 0xae61, 0x0005, 0x0096, 0x6014, 0x904d, 0x090c, ++ 0x0dd5, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b, ++ 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, ++ 0x012e, 0x009e, 0x080c, 0xae61, 0x0c30, 0x0096, 0x9186, 0x0016, ++ 0x1128, 0x2001, 0x0004, 0x080c, 0x654f, 0x00e8, 0x9186, 0x0015, ++ 0x1510, 0x2011, 0x1824, 0x2204, 0x9086, 0x0014, 0x11e0, 0x6010, ++ 0x00b6, 0x2058, 0x080c, 0x669a, 0x00be, 0x080c, 0xbd59, 0x1198, ++ 0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, 0x0160, 0x2001, ++ 0x0006, 0x080c, 0x654f, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0170, ++ 0x080c, 0xb265, 0x0048, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0528, ++ 0x080c, 0xb813, 0x080c, 0xae61, 0x009e, 0x0005, 0x6014, 0x6310, ++ 0x2358, 0x904d, 0x090c, 0x0dd5, 0xa87b, 0x0000, 0xa883, 0x0000, ++ 0xa897, 0x4000, 0x900e, 0x080c, 0x681f, 0x1108, 0xc185, 0xb800, ++ 0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6c81, 0x012e, 0x080c, 0xae61, 0x08f8, 0x6014, 0x904d, 0x090c, ++ 0x0dd5, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b, ++ 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x6c81, ++ 0x012e, 0x080c, 0xae61, 0x0840, 0xa878, 0x9086, 0x0005, 0x1108, ++ 0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, 0x6043, 0x0000, ++ 0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x0005, 0x00c6, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x0120, 0x6020, 0x9084, 0x000f, 0x0013, 0x00ce, ++ 0x0005, 0xc850, 0xce5a, 0xce5a, 0xce5d, 0xe5fd, 0xe618, 0xe61b, ++ 0xc850, 0xc850, 0xc850, 0xc850, 0xc850, 0xc850, 0xc850, 0xc850, ++ 0x080c, 0x0dd5, 0xa001, 0xa001, 0x0005, 0x0096, 0x6014, 0x904d, ++ 0x0118, 0xa87c, 0xd0e4, 0x1110, 0x009e, 0x0010, 0x009e, 0x0005, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0550, 0x2001, ++ 0x1834, 0x2004, 0x9005, 0x1540, 0x00f6, 0x2c78, 0x080c, 0xae0b, ++ 0x0508, 0x7810, 0x6012, 0x080c, 0xcfaa, 0x7820, 0x9086, 0x0003, ++ 0x0128, 0x7808, 0x603a, 0x2f00, 0x603e, 0x0020, 0x7808, 0x603e, ++ 0x2f00, 0x603a, 0x602e, 0x6023, 0x0001, 0x6007, 0x0035, 0x6003, ++ 0x0001, 0x7954, 0x6156, 0x080c, 0x90f0, 0x080c, 0x968d, 0x2f60, ++ 0x00fe, 0x0005, 0x2f60, 0x00fe, 0x2001, 0x1988, 0x2004, 0x6042, ++ 0x0005, 0x0016, 0x0096, 0x6814, 0x2048, 0xa87c, 0xd0e4, 0x0180, ++ 0xc0e4, 0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, 0xa88f, 0x0000, ++ 0xd0cc, 0x0130, 0xc0cc, 0xa87e, 0xa878, 0x2048, 0x080c, 0x0fb1, ++ 0x6830, 0x6036, 0x908e, 0x0001, 0x0148, 0x6803, 0x0002, 0x9086, ++ 0x0005, 0x0170, 0x9006, 0x602e, 0x6032, 0x00d0, 0x681c, 0xc085, ++ 0x681e, 0x6803, 0x0004, 0x6824, 0xc0f4, 0x9085, 0x0c00, 0x6826, ++ 0x6814, 0x2048, 0xa8ac, 0x6938, 0x9102, 0xa8b0, 0x693c, 0x9103, ++ 0x1e48, 0x683c, 0x602e, 0x6838, 0x9084, 0xfffc, 0x683a, 0x6032, ++ 0x2d00, 0x603a, 0x6808, 0x603e, 0x6910, 0x6112, 0x6954, 0x6156, ++ 0x6023, 0x0001, 0x6007, 0x0039, 0x6003, 0x0001, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x009e, 0x001e, 0x0005, 0x6024, 0xd0d4, 0x0510, ++ 0xd0f4, 0x11f8, 0x6038, 0x940a, 0x603c, 0x9303, 0x0230, 0x9105, ++ 0x0120, 0x6024, 0xc0d4, 0xc0f5, 0x0098, 0x643a, 0x633e, 0xac3e, ++ 0xab42, 0x0046, 0x0036, 0x2400, 0xacac, 0x9402, 0xa836, 0x2300, ++ 0xabb0, 0x9303, 0xa83a, 0x003e, 0x004e, 0x6024, 0xc0d4, 0x0000, ++ 0x6026, 0x0005, 0xd0f4, 0x1138, 0xa83c, 0x603a, 0xa840, 0x603e, ++ 0x6024, 0xc0f5, 0x6026, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, ++ 0x0034, 0x01b8, 0x908e, 0x0035, 0x01a0, 0x908e, 0x0036, 0x0188, ++ 0x908e, 0x0037, 0x0170, 0x908e, 0x0038, 0x0158, 0x908e, 0x0039, ++ 0x0140, 0x908e, 0x003a, 0x0128, 0x908e, 0x003b, 0x0110, 0x9085, ++ 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, ++ 0x00e6, 0x2001, 0x1982, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, ++ 0x080c, 0x8f68, 0x2001, 0x1986, 0x82ff, 0x1110, 0x2011, 0x0014, ++ 0x2202, 0x2001, 0x1984, 0x200c, 0x8000, 0x2014, 0x2071, 0x196c, ++ 0x711a, 0x721e, 0x2001, 0x0064, 0x080c, 0x8f68, 0x2001, 0x1987, ++ 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0x1988, 0x9288, ++ 0x000a, 0x2102, 0x2001, 0x1a91, 0x2102, 0x2001, 0x0032, 0x080c, ++ 0x15ee, 0x080c, 0x6953, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x0006, 0x0016, 0x00e6, 0x2001, 0x1986, 0x2003, 0x0028, ++ 0x2001, 0x1987, 0x2003, 0x0014, 0x2071, 0x196c, 0x701b, 0x0000, ++ 0x701f, 0x07d0, 0x2001, 0x1988, 0x2009, 0x001e, 0x2102, 0x2001, ++ 0x1a91, 0x2102, 0x2001, 0x0032, 0x080c, 0x15ee, 0x00ee, 0x001e, ++ 0x000e, 0x0005, 0x0096, 0x6058, 0x904d, 0x0110, 0x080c, 0x1031, ++ 0x009e, 0x0005, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xae0b, 0x0180, 0x2b08, 0x6112, 0x0ca9, 0x6023, 0x0001, 0x2900, ++ 0x6016, 0x2009, 0x0033, 0x080c, 0xaedc, 0x9085, 0x0001, 0x012e, ++ 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x00e6, 0x00f6, 0x2071, ++ 0x1800, 0x9186, 0x0015, 0x1500, 0x7090, 0x9086, 0x0018, 0x11e0, ++ 0x6014, 0x2048, 0xaa3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x9920, ++ 0x01d8, 0x707c, 0xaa50, 0x9206, 0x1160, 0x7080, 0xaa54, 0x9206, ++ 0x1140, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, 0x900e, 0x080c, ++ 0x3208, 0x080c, 0xb265, 0x0020, 0x080c, 0xb813, 0x080c, 0xae61, ++ 0x00fe, 0x00ee, 0x009e, 0x0005, 0x7060, 0xaa54, 0x9206, 0x0d48, ++ 0x0c80, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0xae0b, 0x0188, ++ 0x2b08, 0x6112, 0x080c, 0xcfaa, 0x6023, 0x0001, 0x2900, 0x6016, ++ 0x2009, 0x004d, 0x080c, 0xaedc, 0x9085, 0x0001, 0x012e, 0x00ce, ++ 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, ++ 0x080c, 0xae0b, 0x0180, 0x2b08, 0x6112, 0x080c, 0xcfaa, 0x6023, ++ 0x0001, 0x2900, 0x6016, 0x001e, 0x080c, 0xaedc, 0x9085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0x001e, 0x9006, 0x0cd0, 0x0016, 0x0026, ++ 0x0036, 0x0046, 0x0056, 0x0066, 0x0096, 0x00e6, 0x00f6, 0x2071, ++ 0x1800, 0x9186, 0x0015, 0x1568, 0x7190, 0x6014, 0x2048, 0xa814, ++ 0x8003, 0x9106, 0x1530, 0x20e1, 0x0000, 0x2001, 0x19a0, 0x2003, ++ 0x0000, 0x6014, 0x2048, 0xa830, 0x20a8, 0x8906, 0x8006, 0x8007, ++ 0x9094, 0x003f, 0x22e8, 0x9084, 0xffc0, 0x9080, 0x001b, 0x20a0, ++ 0x2001, 0x19a0, 0x0016, 0x200c, 0x080c, 0xd81b, 0x001e, 0xa804, ++ 0x9005, 0x0110, 0x2048, 0x0c38, 0x6014, 0x2048, 0xa867, 0x0103, ++ 0x0010, 0x080c, 0xb813, 0x080c, 0xae61, 0x00fe, 0x00ee, 0x009e, ++ 0x006e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0005, 0x0096, ++ 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x11b8, 0x7090, ++ 0x9086, 0x0004, 0x1198, 0x6014, 0x2048, 0x2c78, 0x080c, 0x9920, ++ 0x01a8, 0x707c, 0xaa74, 0x9206, 0x1130, 0x7080, 0xaa78, 0x9206, ++ 0x1110, 0x080c, 0x31bf, 0x080c, 0xb265, 0x0020, 0x080c, 0xb813, ++ 0x080c, 0xae61, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x7060, 0xaa78, ++ 0x9206, 0x0d78, 0x0c80, 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, ++ 0x9186, 0x0015, 0x1550, 0x7090, 0x9086, 0x0004, 0x1530, 0x6014, ++ 0x2048, 0x2c78, 0x080c, 0x9920, 0x05f0, 0x707c, 0xaacc, 0x9206, ++ 0x1180, 0x7080, 0xaad0, 0x9206, 0x1160, 0x080c, 0x31bf, 0x0016, ++ 0xa998, 0xaab0, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x5687, 0x001e, ++ 0x0010, 0x080c, 0x5478, 0x080c, 0xcb35, 0x0508, 0xa87b, 0x0000, ++ 0xa883, 0x0000, 0xa897, 0x4000, 0x0080, 0x080c, 0xcb35, 0x01b8, ++ 0x6014, 0x2048, 0x080c, 0x5478, 0x1d70, 0xa87b, 0x0030, 0xa883, ++ 0x0000, 0xa897, 0x4005, 0xa89b, 0x0004, 0x0126, 0x2091, 0x8000, ++ 0xa867, 0x0139, 0x080c, 0x6c81, 0x012e, 0x080c, 0xae61, 0x00fe, ++ 0x00ee, 0x009e, 0x0005, 0x7060, 0xaad0, 0x9206, 0x0930, 0x0888, ++ 0x0016, 0x0026, 0xa87c, 0xd0ac, 0x0178, 0xa938, 0xaa34, 0x2100, ++ 0x9205, 0x0150, 0xa890, 0x9106, 0x1118, 0xa88c, 0x9206, 0x0120, ++ 0xa992, 0xaa8e, 0x9085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00b6, ++ 0x00d6, 0x0036, 0x080c, 0xcb35, 0x0904, 0xd165, 0x0096, 0x6314, ++ 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, 0x6310, 0x00c6, ++ 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, 0x080c, 0x681f, ++ 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xaa96, 0xa99a, ++ 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, ++ 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, 0x2098, 0x080c, 0x0f7c, ++ 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8c8, 0x9080, ++ 0x000a, 0x2098, 0x080c, 0x0f7c, 0x00ce, 0x0090, 0xaa96, 0x3918, ++ 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, 0x0110, 0xa89b, ++ 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, 0x00ff, 0xa89e, ++ 0x080c, 0x6c75, 0x6017, 0x0000, 0x009e, 0x003e, 0x00de, 0x00be, ++ 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, 0x00f6, 0x6214, ++ 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, 0x0000, 0x11a0, ++ 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x283e, 0x2118, 0x831f, ++ 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, 0x7c3c, 0x2011, ++ 0x8018, 0x080c, 0x4b04, 0x00a8, 0x9096, 0x0001, 0x1148, 0x89ff, ++ 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, 0xa8aa, 0x0048, ++ 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, ++ 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, 0x002e, 0x0005, ++ 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, 0x6a38, 0x0008, ++ 0x6a2c, 0x080c, 0xcb23, 0x01f0, 0x2260, 0x6120, 0x9186, 0x0003, ++ 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, 0x0140, 0x683c, ++ 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, 0x0020, 0x6008, ++ 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, 0x001e, 0x002e, ++ 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, 0xd1cc, 0x0188, ++ 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, 0x918c, 0x0f00, ++ 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, 0x9115, 0x190c, ++ 0xc245, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, 0x0036, 0x901e, ++ 0x0499, 0x01e0, 0x080c, 0xcb35, 0x01c8, 0x080c, 0xcd1e, 0x6037, ++ 0x4000, 0x6014, 0x6017, 0x0000, 0x0096, 0x2048, 0xa87c, 0x080c, ++ 0xcd3b, 0x1118, 0x080c, 0xb813, 0x0040, 0xa867, 0x0103, 0xa877, ++ 0x0000, 0x83ff, 0x1129, 0x080c, 0x6c81, 0x009e, 0x003e, 0x0005, ++ 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, 0xa882, 0x0048, ++ 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, 0x080c, ++ 0xce2a, 0xa877, 0x0000, 0x0005, 0x2001, 0x1810, 0x2004, 0xd0ec, ++ 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0f4, 0x000e, 0x0005, ++ 0x0006, 0x2001, 0x1810, 0x2004, 0xd0e4, 0x000e, 0x0005, 0x0036, ++ 0x0046, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0007, ++ 0x080c, 0x4cbb, 0x004e, 0x003e, 0x0005, 0x0c51, 0x1d81, 0x0005, ++ 0x2001, 0x1986, 0x2004, 0x601a, 0x0005, 0x2001, 0x1988, 0x2004, ++ 0x6042, 0x0005, 0x080c, 0xae61, 0x0804, 0x968d, 0x00b6, 0x0066, ++ 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0dd5, 0x001b, 0x006e, 0x00be, ++ 0x0005, 0xd271, 0xd978, 0xdad5, 0xd271, 0xd271, 0xd271, 0xd271, ++ 0xd271, 0xd2a8, 0xdb57, 0xd271, 0xd271, 0xd271, 0xd271, 0xd271, ++ 0xd271, 0x080c, 0x0dd5, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, ++ 0x0dd5, 0x0013, 0x006e, 0x0005, 0xd28c, 0xe0bf, 0xd28c, 0xd28c, ++ 0xd28c, 0xd28c, 0xd28c, 0xd28c, 0xe06c, 0xe113, 0xd28c, 0xe738, ++ 0xe76e, 0xe738, 0xe76e, 0xd28c, 0x080c, 0x0dd5, 0x6000, 0x9082, ++ 0x0016, 0x1a0c, 0x0dd5, 0x6000, 0x000a, 0x0005, 0xd2a6, 0xdd34, ++ 0xde24, 0xde46, 0xdf05, 0xd2a6, 0xdfe3, 0xdf8d, 0xdb63, 0xe042, ++ 0xe057, 0xd2a6, 0xd2a6, 0xd2a6, 0xd2a6, 0xd2a6, 0x080c, 0x0dd5, ++ 0x91b2, 0x0053, 0x1a0c, 0x0dd5, 0x2100, 0x91b2, 0x0040, 0x1a04, ++ 0xd6ec, 0x0002, 0xd2f2, 0xd4dd, 0xd2f2, 0xd2f2, 0xd2f2, 0xd4e6, ++ 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, ++ 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, ++ 0xd2f2, 0xd2f4, 0xd357, 0xd366, 0xd3ca, 0xd3f5, 0xd46e, 0xd4c8, ++ 0xd2f2, 0xd2f2, 0xd4e9, 0xd2f2, 0xd2f2, 0xd4fe, 0xd50b, 0xd2f2, ++ 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd58e, 0xd2f2, 0xd2f2, 0xd5a2, ++ 0xd2f2, 0xd2f2, 0xd55d, 0xd2f2, 0xd2f2, 0xd2f2, 0xd5ba, 0xd2f2, ++ 0xd2f2, 0xd2f2, 0xd637, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, 0xd2f2, ++ 0xd2f2, 0xd6b4, 0x080c, 0x0dd5, 0x080c, 0x6930, 0x1150, 0x2001, ++ 0x1837, 0x2004, 0xd0cc, 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, ++ 0x1140, 0x6007, 0x0009, 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, ++ 0xd4d6, 0x080c, 0x68cc, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, ++ 0x6210, 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x928b, ++ 0x0076, 0x903e, 0x080c, 0x9168, 0x2c08, 0x080c, 0xe2eb, 0x007e, ++ 0x001e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6610, 0x2658, ++ 0x080c, 0x660e, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x1268, ++ 0x0016, 0x0026, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, 0x2c08, ++ 0x080c, 0xe997, 0x002e, 0x001e, 0x1178, 0x080c, 0xe21d, 0x1904, ++ 0xd3c2, 0x080c, 0xe1b9, 0x1120, 0x6007, 0x0008, 0x0804, 0xd4d6, ++ 0x6007, 0x0009, 0x0804, 0xd4d6, 0x080c, 0xe441, 0x0128, 0x080c, ++ 0xe21d, 0x0d78, 0x0804, 0xd3c2, 0x6017, 0x1900, 0x0c88, 0x080c, ++ 0x32e3, 0x1904, 0xd6e9, 0x6106, 0x080c, 0xe16e, 0x6007, 0x0006, ++ 0x0804, 0xd4d6, 0x6007, 0x0007, 0x0804, 0xd4d6, 0x080c, 0xe7aa, ++ 0x1904, 0xd6e9, 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x00d6, 0x6610, ++ 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x1220, 0x2001, ++ 0x0001, 0x080c, 0x653b, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, ++ 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4, 0x00ff, 0x9686, ++ 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686, 0x0005, 0x0110, ++ 0x00de, 0x0480, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9084, 0x0003, ++ 0x1140, 0x7034, 0x9082, 0x0014, 0x0220, 0x7030, 0x9084, 0x0003, ++ 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, 0x00b0, 0x00ee, ++ 0x080c, 0xe281, 0x1190, 0x9686, 0x0006, 0x1140, 0x0026, 0x6210, ++ 0x2258, 0xbaa0, 0x900e, 0x080c, 0x3208, 0x002e, 0x080c, 0x669a, ++ 0x6007, 0x000a, 0x00de, 0x0804, 0xd4d6, 0x6007, 0x000b, 0x00de, ++ 0x0804, 0xd4d6, 0x080c, 0x31bf, 0x080c, 0xd245, 0x6007, 0x0001, ++ 0x0804, 0xd4d6, 0x080c, 0xe7aa, 0x1904, 0xd6e9, 0x080c, 0x32e3, ++ 0x1904, 0xd6e9, 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, 0x1948, ++ 0x90b2, 0x0014, 0x0a30, 0x7030, 0x9084, 0x0003, 0x1910, 0x6610, ++ 0x2658, 0xbe04, 0x9686, 0x0707, 0x09e8, 0x0026, 0x6210, 0x2258, ++ 0xbaa0, 0x900e, 0x080c, 0x3208, 0x002e, 0x6007, 0x000c, 0x2001, ++ 0x0001, 0x080c, 0xe977, 0x0804, 0xd4d6, 0x080c, 0x6930, 0x1140, ++ 0x2001, 0x1837, 0x2004, 0x9084, 0x0009, 0x9086, 0x0008, 0x1110, ++ 0x0804, 0xd301, 0x080c, 0x68cc, 0x6610, 0x2658, 0xbe04, 0x9684, ++ 0x00ff, 0x9082, 0x0006, 0x06c8, 0x1138, 0x0026, 0x2001, 0x0006, ++ 0x080c, 0x657b, 0x002e, 0x0050, 0x96b4, 0xff00, 0x8637, 0x9686, ++ 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xd3c2, 0x080c, 0xe28e, ++ 0x1120, 0x6007, 0x000e, 0x0804, 0xd4d6, 0x0046, 0x6410, 0x2458, ++ 0xbca0, 0x0046, 0x080c, 0x31bf, 0x080c, 0xd245, 0x004e, 0x0016, ++ 0x9006, 0x2009, 0x1848, 0x210c, 0xd1a4, 0x0148, 0x2009, 0x0029, ++ 0x080c, 0xe5ae, 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802, 0x001e, ++ 0x004e, 0x6007, 0x0001, 0x0804, 0xd4d6, 0x2001, 0x0001, 0x080c, ++ 0x653b, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0270, 0x080c, 0xbe09, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, 0x9682, 0x0004, ++ 0x0a04, 0xd3c2, 0x9682, 0x0007, 0x0a04, 0xd41e, 0x0804, 0xd3c2, ++ 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xd4d6, 0x080c, 0x6930, ++ 0x1140, 0x2001, 0x1837, 0x2004, 0x9084, 0x0009, 0x9086, 0x0008, ++ 0x1110, 0x0804, 0xd301, 0x080c, 0x68cc, 0x6610, 0x2658, 0xbe04, ++ 0x9684, 0x00ff, 0x9082, 0x0006, 0x0698, 0x0150, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xd3c2, ++ 0x080c, 0xe2bc, 0x1130, 0x080c, 0xe1b9, 0x1118, 0x6007, 0x0010, ++ 0x04e8, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x31bf, ++ 0x080c, 0xd245, 0x004e, 0x0016, 0x9006, 0x2009, 0x1848, 0x210c, ++ 0xd1a4, 0x0148, 0x2009, 0x0029, 0x080c, 0xe5ae, 0x6010, 0x2058, ++ 0xb800, 0xc0e5, 0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, ++ 0x080c, 0xe441, 0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, ++ 0x0978, 0x0804, 0xd3c2, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, ++ 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x080c, 0xe7aa, 0x1904, 0xd6e9, ++ 0x080c, 0xd8b6, 0x1904, 0xd3c2, 0x6007, 0x0012, 0x6003, 0x0001, ++ 0x080c, 0x9138, 0x080c, 0x968d, 0x0005, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x9138, 0x080c, 0x968d, 0x0cb0, 0x6007, 0x0005, ++ 0x0c68, 0x080c, 0xe7aa, 0x1904, 0xd6e9, 0x080c, 0x32e3, 0x1904, ++ 0xd6e9, 0x080c, 0xd8b6, 0x1904, 0xd3c2, 0x6007, 0x0020, 0x6003, ++ 0x0001, 0x080c, 0x9138, 0x080c, 0x968d, 0x0005, 0x080c, 0x32e3, ++ 0x1904, 0xd6e9, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x9138, ++ 0x080c, 0x968d, 0x0005, 0x080c, 0xe7aa, 0x1904, 0xd6e9, 0x080c, ++ 0x32e3, 0x1904, 0xd6e9, 0x080c, 0xd8b6, 0x1904, 0xd3c2, 0x0016, ++ 0x0026, 0x00e6, 0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, ++ 0x2c08, 0x080c, 0xcb23, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, ++ 0x1188, 0x6010, 0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, ++ 0x7240, 0x2c08, 0x9006, 0x080c, 0xe578, 0x1180, 0x7244, 0x9286, ++ 0xffff, 0x01b0, 0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, ++ 0x9296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, ++ 0x0007, 0x1d80, 0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0xae61, ++ 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x9138, 0x080c, ++ 0x968d, 0x00ee, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, ++ 0x653b, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0276, 0x080c, 0xbe09, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xd4d6, 0x080c, 0xba7d, ++ 0x080c, 0x73bc, 0x1190, 0x0006, 0x0026, 0x0036, 0x080c, 0x73d6, ++ 0x1138, 0x080c, 0x76a4, 0x080c, 0x601a, 0x080c, 0x72ee, 0x0010, ++ 0x080c, 0x7394, 0x003e, 0x002e, 0x000e, 0x0005, 0x080c, 0x32e3, ++ 0x1904, 0xd6e9, 0x080c, 0xd8b6, 0x1904, 0xd3c2, 0x6106, 0x080c, ++ 0xd8d2, 0x1120, 0x6007, 0x002b, 0x0804, 0xd4d6, 0x6007, 0x002c, ++ 0x0804, 0xd4d6, 0x080c, 0xe7aa, 0x1904, 0xd6e9, 0x080c, 0x32e3, ++ 0x1904, 0xd6e9, 0x080c, 0xd8b6, 0x1904, 0xd3c2, 0x6106, 0x080c, ++ 0xd8d7, 0x1120, 0x6007, 0x002e, 0x0804, 0xd4d6, 0x6007, 0x002f, ++ 0x0804, 0xd4d6, 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x00e6, 0x00d6, ++ 0x00c6, 0x6010, 0x2058, 0xb904, 0x9184, 0x00ff, 0x9086, 0x0006, ++ 0x0158, 0x9184, 0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, ++ 0x00de, 0x00ee, 0x0804, 0xd4dd, 0x080c, 0x56d3, 0xd0e4, 0x0904, ++ 0xd634, 0x2071, 0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, ++ 0x720c, 0x080c, 0x696e, 0x0140, 0x6010, 0x2058, 0xb810, 0x9106, ++ 0x1118, 0xb814, 0x9206, 0x0510, 0x080c, 0x696a, 0x15b8, 0x2069, ++ 0x1800, 0x6880, 0x9206, 0x1590, 0x687c, 0x9106, 0x1578, 0x7210, ++ 0x080c, 0xcb23, 0x0590, 0x080c, 0xd7a1, 0x0578, 0x080c, 0xe62a, ++ 0x0560, 0x622e, 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, ++ 0xffff, 0x0150, 0x080c, 0xcb23, 0x01c0, 0x9280, 0x0002, 0x2004, ++ 0x7110, 0x9106, 0x1190, 0x08e0, 0x7210, 0x2c08, 0x9085, 0x0001, ++ 0x080c, 0xe578, 0x2c10, 0x2160, 0x0140, 0x0890, 0x6007, 0x0037, ++ 0x602f, 0x0009, 0x6017, 0x1500, 0x08b8, 0x6007, 0x0037, 0x602f, ++ 0x0003, 0x6017, 0x1700, 0x0880, 0x6007, 0x0012, 0x0868, 0x080c, ++ 0x32e3, 0x1904, 0xd6e9, 0x6010, 0x2058, 0xb804, 0x9084, 0xff00, ++ 0x8007, 0x9086, 0x0006, 0x1904, 0xd4dd, 0x00e6, 0x00d6, 0x00c6, ++ 0x080c, 0x56d3, 0xd0e4, 0x0904, 0xd6ac, 0x2069, 0x1800, 0x2071, ++ 0x026c, 0x7008, 0x603a, 0x720c, 0x623e, 0x9286, 0xffff, 0x1150, ++ 0x7208, 0x00c6, 0x2c08, 0x9085, 0x0001, 0x080c, 0xe578, 0x2c10, ++ 0x00ce, 0x05e8, 0x080c, 0xcb23, 0x05d0, 0x7108, 0x9280, 0x0002, ++ 0x2004, 0x9106, 0x15a0, 0x00c6, 0x0026, 0x2260, 0x080c, 0xc75b, ++ 0x002e, 0x00ce, 0x7118, 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, ++ 0x0178, 0x9186, 0x0005, 0x0118, 0x9186, 0x0007, 0x1198, 0x9280, ++ 0x0005, 0x2004, 0x9005, 0x0170, 0x080c, 0xd7a1, 0x0904, 0xd62d, ++ 0x0056, 0x7510, 0x7614, 0x080c, 0xe643, 0x005e, 0x00ce, 0x00de, ++ 0x00ee, 0x0005, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, ++ 0x6003, 0x0001, 0x080c, 0x90f0, 0x080c, 0x968d, 0x0c78, 0x6007, ++ 0x003b, 0x602f, 0x0003, 0x6017, 0x0300, 0x6003, 0x0001, 0x080c, ++ 0x90f0, 0x080c, 0x968d, 0x0c10, 0x6007, 0x003b, 0x602f, 0x000b, ++ 0x6017, 0x0000, 0x0804, 0xd604, 0x00e6, 0x0026, 0x080c, 0x6930, ++ 0x0550, 0x080c, 0x68cc, 0x080c, 0xe81c, 0x1518, 0x2071, 0x1800, ++ 0x70dc, 0x9085, 0x0003, 0x70de, 0x00f6, 0x2079, 0x0100, 0x72b0, ++ 0x9284, 0x00ff, 0x707e, 0x78e6, 0x9284, 0xff00, 0x7280, 0x9205, ++ 0x7082, 0x78ea, 0x00fe, 0x70e7, 0x0000, 0x080c, 0x696e, 0x0120, ++ 0x2011, 0x1a00, 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2f96, ++ 0x0010, 0x080c, 0xe84e, 0x002e, 0x00ee, 0x080c, 0xae61, 0x0804, ++ 0xd4dc, 0x080c, 0xae61, 0x0005, 0x2600, 0x0002, 0xd700, 0xd731, ++ 0xd742, 0xd700, 0xd700, 0xd702, 0xd753, 0xd700, 0xd700, 0xd700, ++ 0xd71f, 0xd700, 0xd700, 0xd700, 0xd75e, 0xd76b, 0xd79c, 0xd700, ++ 0x080c, 0x0dd5, 0x080c, 0xe7aa, 0x1d20, 0x080c, 0x32e3, 0x1d08, ++ 0x080c, 0xd8b6, 0x1148, 0x7038, 0x6016, 0x6007, 0x0045, 0x6003, ++ 0x0001, 0x080c, 0x9138, 0x0005, 0x080c, 0x31bf, 0x080c, 0xd245, ++ 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x9138, 0x0005, 0x080c, ++ 0xe7aa, 0x1938, 0x080c, 0x32e3, 0x1920, 0x080c, 0xd8b6, 0x1d60, ++ 0x703c, 0x6016, 0x6007, 0x004a, 0x6003, 0x0001, 0x080c, 0x9138, ++ 0x0005, 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x2009, 0x0041, 0x080c, ++ 0xe857, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x9138, 0x080c, ++ 0x968d, 0x0005, 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x2009, 0x0042, ++ 0x080c, 0xe857, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x9138, ++ 0x080c, 0x968d, 0x0005, 0x080c, 0x32e3, 0x1904, 0xd6e9, 0x2009, ++ 0x0046, 0x080c, 0xe857, 0x080c, 0xae61, 0x0005, 0x080c, 0xd7be, ++ 0x0904, 0xd6e9, 0x6007, 0x004e, 0x6003, 0x0001, 0x080c, 0x9138, ++ 0x080c, 0x968d, 0x0005, 0x6007, 0x004f, 0x6017, 0x0000, 0x7134, ++ 0x918c, 0x00ff, 0x81ff, 0x0508, 0x9186, 0x0001, 0x1160, 0x7140, ++ 0x2001, 0x19bd, 0x2004, 0x9106, 0x11b0, 0x7144, 0x2001, 0x19be, ++ 0x2004, 0x9106, 0x0190, 0x9186, 0x0002, 0x1168, 0x2011, 0x0276, ++ 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, ++ 0xbe1d, 0x009e, 0x0110, 0x6017, 0x0001, 0x6003, 0x0001, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x0005, 0x6007, 0x0050, 0x703c, 0x6016, ++ 0x0ca0, 0x0016, 0x00e6, 0x2071, 0x0260, 0x00b6, 0x00c6, 0x2260, ++ 0x6010, 0x2058, 0xb8cc, 0xd084, 0x0150, 0x7128, 0x6048, 0x9106, ++ 0x1120, 0x712c, 0x6044, 0x9106, 0x0110, 0x9006, 0x0010, 0x9085, ++ 0x0001, 0x00ce, 0x00be, 0x00ee, 0x001e, 0x0005, 0x0016, 0x0096, ++ 0x0086, 0x00e6, 0x01c6, 0x01d6, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x1800, 0x7090, 0x908a, 0x00f9, 0x16e8, 0x20e1, 0x0000, 0x2001, ++ 0x19a0, 0x2003, 0x0000, 0x080c, 0x1018, 0x05a0, 0x2900, 0x6016, ++ 0x7090, 0x8004, 0xa816, 0x908a, 0x001e, 0x02d0, 0xa833, 0x001e, ++ 0x20a9, 0x001e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, ++ 0x2001, 0x19a0, 0x0016, 0x200c, 0x0471, 0x001e, 0x2940, 0x080c, ++ 0x1018, 0x01c0, 0x2900, 0xa006, 0x2100, 0x81ff, 0x0180, 0x0c18, ++ 0xa832, 0x20a8, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, ++ 0x2001, 0x19a0, 0x0016, 0x200c, 0x00b1, 0x001e, 0x0000, 0x9085, ++ 0x0001, 0x0048, 0x2071, 0x1800, 0x7093, 0x0000, 0x6014, 0x2048, ++ 0x080c, 0x0fb1, 0x9006, 0x012e, 0x01de, 0x01ce, 0x00ee, 0x008e, ++ 0x009e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, ++ 0x918c, 0xffff, 0x11a8, 0x080c, 0x23ab, 0x2099, 0x026c, 0x2001, ++ 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x00f8, 0x20a8, ++ 0x4003, 0x22a8, 0x8108, 0x080c, 0x23ab, 0x2099, 0x0260, 0x0ca8, ++ 0x080c, 0x23ab, 0x2061, 0x19a0, 0x6004, 0x2098, 0x6008, 0x3518, ++ 0x9312, 0x1218, 0x23a8, 0x4003, 0x0048, 0x20a8, 0x4003, 0x22a8, ++ 0x8108, 0x080c, 0x23ab, 0x2099, 0x0260, 0x0ca8, 0x2061, 0x19a0, ++ 0x2019, 0x0280, 0x3300, 0x931e, 0x0110, 0x6006, 0x0020, 0x2001, ++ 0x0260, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, 0x9296, 0xffff, ++ 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, ++ 0x0016, 0x0026, 0x0036, 0x00c6, 0x81ff, 0x11b8, 0x080c, 0x23c3, ++ 0x20a1, 0x024c, 0x2001, 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, ++ 0x4003, 0x0418, 0x20a8, 0x4003, 0x82ff, 0x01f8, 0x22a8, 0x8108, ++ 0x080c, 0x23c3, 0x20a1, 0x0240, 0x0c98, 0x080c, 0x23c3, 0x2061, ++ 0x19a3, 0x6004, 0x20a0, 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, ++ 0x4003, 0x0058, 0x20a8, 0x4003, 0x82ff, 0x0138, 0x22a8, 0x8108, ++ 0x080c, 0x23c3, 0x20a1, 0x0240, 0x0c98, 0x2061, 0x19a3, 0x2019, ++ 0x0260, 0x3400, 0x931e, 0x0110, 0x6006, 0x0020, 0x2001, 0x0240, ++ 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, 0x9296, 0xffff, 0x620a, ++ 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x00b6, 0x0066, ++ 0x6610, 0x2658, 0xbe04, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, ++ 0x0170, 0x9686, 0x0004, 0x0158, 0xbe04, 0x96b4, 0x00ff, 0x9686, ++ 0x0006, 0x0128, 0x9686, 0x0004, 0x0110, 0x9085, 0x0001, 0x006e, ++ 0x00be, 0x0005, 0x00d6, 0x080c, 0xd94e, 0x00de, 0x0005, 0x00d6, ++ 0x080c, 0xd95b, 0x1520, 0x680c, 0x908c, 0xff00, 0x6820, 0x9084, ++ 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e, 0xd1e4, 0x0130, 0x9006, ++ 0x080c, 0xe977, 0x2009, 0x0001, 0x0078, 0xd1ec, 0x0180, 0x6920, ++ 0x918c, 0x00ff, 0x6824, 0x080c, 0x283e, 0x1148, 0x2001, 0x0001, ++ 0x080c, 0xe977, 0x2110, 0x900e, 0x080c, 0x3208, 0x0018, 0x9085, ++ 0x0001, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, 0x00c6, 0x080c, ++ 0xaeaf, 0x05a8, 0x0016, 0x0026, 0x00c6, 0x2011, 0x0263, 0x2204, ++ 0x8211, 0x220c, 0x080c, 0x283e, 0x1578, 0x080c, 0x659e, 0x1560, ++ 0xbe12, 0xbd16, 0x00ce, 0x002e, 0x001e, 0x2b00, 0x6012, 0x080c, ++ 0xe7aa, 0x11d8, 0x080c, 0x32e3, 0x11c0, 0x080c, 0xd8b6, 0x0510, ++ 0x2001, 0x0007, 0x080c, 0x654f, 0x2001, 0x0007, 0x080c, 0x657b, ++ 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, ++ 0x080c, 0x9138, 0x080c, 0x968d, 0x0010, 0x080c, 0xae61, 0x9085, ++ 0x0001, 0x00ce, 0x00be, 0x0005, 0x080c, 0xae61, 0x00ce, 0x002e, ++ 0x001e, 0x0ca8, 0x080c, 0xae61, 0x9006, 0x0c98, 0x2069, 0x026d, ++ 0x6800, 0x9082, 0x0010, 0x1228, 0x6017, 0x0000, 0x9085, 0x0001, ++ 0x0008, 0x9006, 0x0005, 0x6017, 0x0000, 0x2069, 0x026c, 0x6808, ++ 0x9084, 0xff00, 0x9086, 0x0800, 0x1190, 0x6904, 0x9186, 0x0018, ++ 0x0118, 0x9186, 0x0014, 0x1158, 0x810f, 0x6800, 0x9084, 0x00ff, ++ 0x910d, 0x615a, 0x908e, 0x0014, 0x0110, 0x908e, 0x0010, 0x0005, ++ 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0dd5, 0x91b6, 0x0013, 0x1130, ++ 0x2008, 0x91b2, 0x0040, 0x1a04, 0xdaa5, 0x0092, 0x91b6, 0x0027, ++ 0x0120, 0x91b6, 0x0014, 0x190c, 0x0dd5, 0x2001, 0x0007, 0x080c, ++ 0x657b, 0x080c, 0x9588, 0x080c, 0xae92, 0x080c, 0x968d, 0x0005, ++ 0xd9d8, 0xd9da, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9da, 0xd9e9, 0xda9e, ++ 0xda3b, 0xda9e, 0xda4f, 0xda9e, 0xd9e9, 0xda9e, 0xda96, 0xda9e, ++ 0xda96, 0xda9e, 0xda9e, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, ++ 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9da, 0xd9d8, ++ 0xda9e, 0xd9d8, 0xd9d8, 0xda9e, 0xd9d8, 0xda9b, 0xda9e, 0xd9d8, ++ 0xd9d8, 0xd9d8, 0xd9d8, 0xda9e, 0xda9e, 0xd9d8, 0xda9e, 0xda9e, ++ 0xd9d8, 0xd9e4, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, 0xda9a, 0xda9e, ++ 0xd9d8, 0xd9d8, 0xda9e, 0xda9e, 0xd9d8, 0xd9d8, 0xd9d8, 0xd9d8, ++ 0x080c, 0x0dd5, 0x080c, 0x9588, 0x080c, 0xd248, 0x6003, 0x0002, ++ 0x080c, 0x968d, 0x0804, 0xdaa4, 0x9006, 0x080c, 0x653b, 0x0804, ++ 0xda9e, 0x080c, 0x696a, 0x1904, 0xda9e, 0x9006, 0x080c, 0x653b, ++ 0x6010, 0x2058, 0xb810, 0x9086, 0x00ff, 0x1140, 0x00f6, 0x2079, ++ 0x1800, 0x78a8, 0x8000, 0x78aa, 0x00fe, 0x0428, 0x6010, 0x2058, ++ 0xb8c0, 0x9005, 0x1178, 0x080c, 0xd230, 0x1904, 0xda9e, 0x0036, ++ 0x0046, 0xbba0, 0x2021, 0x0007, 0x080c, 0x4cbb, 0x004e, 0x003e, ++ 0x0804, 0xda9e, 0x080c, 0x3314, 0x1904, 0xda9e, 0x2001, 0x1800, ++ 0x2004, 0x9086, 0x0002, 0x1138, 0x00f6, 0x2079, 0x1800, 0x78a8, ++ 0x8000, 0x78aa, 0x00fe, 0x2001, 0x0002, 0x080c, 0x654f, 0x080c, ++ 0x9588, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x6110, 0x2158, 0x2009, 0x0001, 0x080c, ++ 0x8501, 0x0804, 0xdaa4, 0x6610, 0x2658, 0xbe04, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0006, 0x0904, 0xda9e, 0x9686, 0x0004, 0x0904, ++ 0xda9e, 0x080c, 0x8cbb, 0x2001, 0x0004, 0x0804, 0xda9c, 0x2001, ++ 0x1800, 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, 0x6010, ++ 0x2058, 0xbba0, 0x2021, 0x0006, 0x080c, 0x4cbb, 0x004e, 0x003e, ++ 0x2001, 0x0006, 0x080c, 0xdac2, 0x6610, 0x2658, 0xbe04, 0x0066, ++ 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x006e, 0x0168, 0x2001, ++ 0x0006, 0x080c, 0x657b, 0x9284, 0x00ff, 0x908e, 0x0007, 0x1120, ++ 0x2001, 0x0006, 0x080c, 0x654f, 0x080c, 0x696a, 0x11f8, 0x2001, ++ 0x1837, 0x2004, 0xd0a4, 0x01d0, 0xbe04, 0x96b4, 0x00ff, 0x9686, ++ 0x0006, 0x01a0, 0x00f6, 0x2079, 0x1800, 0x78a8, 0x8000, 0x78aa, ++ 0x00fe, 0x0804, 0xda23, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, ++ 0x0449, 0x0020, 0x0018, 0x0010, 0x080c, 0x657b, 0x080c, 0x9588, ++ 0x080c, 0xae61, 0x080c, 0x968d, 0x0005, 0x2600, 0x0002, 0xdab9, ++ 0xdab9, 0xdab9, 0xdab9, 0xdab9, 0xdabb, 0xdab9, 0xdabb, 0xdab9, ++ 0xdab9, 0xdabb, 0xdab9, 0xdab9, 0xdab9, 0xdabb, 0xdabb, 0xdabb, ++ 0xdabb, 0x080c, 0x0dd5, 0x080c, 0x9588, 0x080c, 0xae61, 0x080c, ++ 0x968d, 0x0005, 0x0016, 0x00b6, 0x00d6, 0x6110, 0x2158, 0xb900, ++ 0xd184, 0x0138, 0x080c, 0x654f, 0x9006, 0x080c, 0x653b, 0x080c, ++ 0x31e8, 0x00de, 0x00be, 0x001e, 0x0005, 0x6610, 0x2658, 0xb804, ++ 0x9084, 0xff00, 0x8007, 0x90b2, 0x000c, 0x1a0c, 0x0dd5, 0x91b6, ++ 0x0015, 0x1110, 0x003b, 0x0028, 0x91b6, 0x0016, 0x190c, 0x0dd5, ++ 0x006b, 0x0005, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, ++ 0xdb41, 0xdb02, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, ++ 0xb8fc, 0xb8fc, 0xb8fc, 0xb8fc, 0xdb41, 0xdb48, 0xb8fc, 0xb8fc, ++ 0xb8fc, 0xb8fc, 0x00f6, 0x080c, 0x696a, 0x11d8, 0x080c, 0xd230, ++ 0x11c0, 0x6010, 0x905d, 0x01a8, 0xb8c0, 0x9005, 0x0190, 0x9006, ++ 0x080c, 0x653b, 0x2001, 0x0002, 0x080c, 0x654f, 0x6023, 0x0001, ++ 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x9138, 0x080c, 0x968d, ++ 0x00f0, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x283e, ++ 0x11b0, 0x080c, 0x65ff, 0x0118, 0x080c, 0xae61, 0x0080, 0xb810, ++ 0x0006, 0xb814, 0x0006, 0xb8c0, 0x0006, 0x080c, 0x6034, 0x000e, ++ 0xb8c2, 0x000e, 0xb816, 0x000e, 0xb812, 0x080c, 0xae61, 0x00fe, ++ 0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, 0xae61, 0x0005, ++ 0x080c, 0xbc85, 0x1148, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, ++ 0x9138, 0x080c, 0x968d, 0x0010, 0x080c, 0xae61, 0x0005, 0x6004, ++ 0x908a, 0x0053, 0x1a0c, 0x0dd5, 0x080c, 0x9588, 0x080c, 0xae92, ++ 0x080c, 0x968d, 0x0005, 0x9182, 0x0040, 0x0002, 0xdb79, 0xdb79, ++ 0xdb79, 0xdb79, 0xdb7b, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, ++ 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, 0xdb79, ++ 0xdb79, 0x080c, 0x0dd5, 0x0096, 0x00b6, 0x00d6, 0x00e6, 0x00f6, ++ 0x0046, 0x0026, 0x6210, 0x2258, 0xb8bc, 0x9005, 0x11a8, 0x6106, ++ 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xdbe1, 0x080c, ++ 0xe96b, 0x1170, 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, 0x2011, ++ 0x0200, 0x080c, 0x86dd, 0x0020, 0x9026, 0x080c, 0xe7ef, 0x0c38, ++ 0x080c, 0x0fff, 0x090c, 0x0dd5, 0x6003, 0x0007, 0xa867, 0x010d, ++ 0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, 0xa88e, 0x6008, 0xa8e2, ++ 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, 0x0016, 0xa876, 0xa87f, ++ 0x0000, 0xa883, 0x0000, 0xa887, 0x0036, 0x080c, 0x6c81, 0x001e, ++ 0x080c, 0xe96b, 0x1904, 0xdc41, 0x9486, 0x2000, 0x1130, 0x2019, ++ 0x0017, 0x080c, 0xe522, 0x0804, 0xdc41, 0x9486, 0x0200, 0x1120, ++ 0x080c, 0xe4be, 0x0804, 0xdc41, 0x9486, 0x0400, 0x0120, 0x9486, ++ 0x1000, 0x1904, 0xdc41, 0x2019, 0x0002, 0x080c, 0xe4d9, 0x0804, ++ 0xdc41, 0x2069, 0x1a71, 0x6a00, 0xd284, 0x0904, 0xdcab, 0x9284, ++ 0x0300, 0x1904, 0xdca4, 0x6804, 0x9005, 0x0904, 0xdc8c, 0x2d78, ++ 0x6003, 0x0007, 0x080c, 0x1018, 0x0904, 0xdc4d, 0x7800, 0xd08c, ++ 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x2001, 0x180f, ++ 0x2004, 0xd084, 0x1904, 0xdcaf, 0x9006, 0xa802, 0xa867, 0x0116, ++ 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, 0x6010, 0x2058, 0xb8a0, ++ 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, 0xb92c, 0xa9be, 0xb930, ++ 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, 0x7044, 0x9084, 0x0003, ++ 0x9080, 0xdc49, 0x2005, 0xa87e, 0x20a9, 0x000a, 0x2001, 0x0270, ++ 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080, 0x20e1, ++ 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, 0x4003, 0x200b, 0x0000, ++ 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, 0x200c, 0xa9ae, 0x080c, ++ 0x6c81, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x00be, 0x009e, ++ 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x1810, 0x2004, ++ 0xd084, 0x0120, 0x080c, 0x0fff, 0x1904, 0xdbf6, 0x6017, 0xf100, ++ 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x90f0, 0x080c, 0x968d, ++ 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086, 0x1200, ++ 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c, 0xf700, ++ 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, ++ 0x90f0, 0x080c, 0x968d, 0x0828, 0x6868, 0x602e, 0x686c, 0x6032, ++ 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x0804, 0xdc41, 0x2001, 0x180e, 0x2004, 0xd0ec, ++ 0x0120, 0x2011, 0x8049, 0x080c, 0x4b04, 0x6017, 0xf300, 0x0010, ++ 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x0804, 0xdc41, 0x6017, 0xf500, 0x0c98, 0x6017, ++ 0xf600, 0x0804, 0xdc61, 0x6017, 0xf200, 0x0804, 0xdc61, 0xa867, ++ 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, 0x2c00, 0xa87a, 0x7044, ++ 0x9084, 0x0003, 0x9080, 0xdc49, 0x2005, 0xa87e, 0x2928, 0x6010, ++ 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, 0xb82c, 0xa88e, 0xb830, ++ 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, 0x2009, 0x0205, 0x2104, ++ 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, 0x2011, 0x0210, 0x2214, ++ 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, 0x1a0c, 0x0dd5, 0x8210, ++ 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0029, 0x20a0, 0x2011, 0xdd2b, 0x2041, 0x0001, 0x223d, 0x9784, ++ 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, 0x4003, 0x931a, 0x0530, ++ 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, 0x2001, 0x0260, 0x2098, ++ 0x0c68, 0x2950, 0x080c, 0x1018, 0x0170, 0x2900, 0xb002, 0xa867, ++ 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x001b, ++ 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, 0x902d, 0x0118, 0x080c, ++ 0x1031, 0x0cc8, 0x080c, 0x1031, 0x0804, 0xdc4d, 0x2548, 0x8847, ++ 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, 0x200b, 0x0000, 0x080c, ++ 0xe551, 0x0804, 0xdc41, 0x8010, 0x0004, 0x801a, 0x0006, 0x8018, ++ 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, 0x0013, 0x1160, 0x6004, ++ 0x908a, 0x0054, 0x1a0c, 0x0dd5, 0x9082, 0x0040, 0x0a0c, 0x0dd5, ++ 0x2008, 0x0804, 0xdddc, 0x9186, 0x0051, 0x0108, 0x00c0, 0x2001, ++ 0x0109, 0x2004, 0xd084, 0x0904, 0xdd8d, 0x0126, 0x2091, 0x2800, ++ 0x0006, 0x0016, 0x0026, 0x080c, 0x8fd5, 0x002e, 0x001e, 0x000e, ++ 0x012e, 0x6000, 0x9086, 0x0002, 0x1580, 0x0804, 0xde24, 0x9186, ++ 0x0027, 0x0530, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014, 0x0500, ++ 0x190c, 0x0dd5, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x00c6, ++ 0x0126, 0x2091, 0x2800, 0x00c6, 0x2061, 0x0100, 0x0006, 0x0016, ++ 0x0026, 0x080c, 0x8fd5, 0x002e, 0x001e, 0x000e, 0x00ce, 0x012e, ++ 0x00ce, 0x6000, 0x9086, 0x0004, 0x190c, 0x0dd5, 0x0804, 0xdf05, ++ 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, 0x080c, 0xaef7, 0x0005, ++ 0xdda3, 0xdda5, 0xdda5, 0xddcc, 0xdda3, 0xdda3, 0xdda3, 0xdda3, ++ 0xdda3, 0xdda3, 0xdda3, 0xdda3, 0xdda3, 0xdda3, 0xdda3, 0xdda3, ++ 0xdda3, 0xdda3, 0xdda3, 0x080c, 0x0dd5, 0x080c, 0x9588, 0x080c, ++ 0x968d, 0x0036, 0x0096, 0x6014, 0x904d, 0x01d8, 0x080c, 0xcb35, ++ 0x01c0, 0x6003, 0x0002, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, 0xe551, 0x6017, 0x0000, ++ 0x6018, 0x9005, 0x1120, 0x2001, 0x1987, 0x2004, 0x601a, 0x6003, ++ 0x0007, 0x009e, 0x003e, 0x0005, 0x0096, 0x080c, 0x9588, 0x080c, ++ 0x968d, 0x080c, 0xcb35, 0x0120, 0x6014, 0x2048, 0x080c, 0x1031, ++ 0x080c, 0xae92, 0x009e, 0x0005, 0x0002, 0xddf0, 0xde07, 0xddf2, ++ 0xde1e, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, ++ 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, 0xddf0, ++ 0x080c, 0x0dd5, 0x0096, 0x080c, 0x9588, 0x6014, 0x2048, 0xa87c, ++ 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c, 0xaedc, ++ 0x0010, 0x6003, 0x0004, 0x080c, 0x968d, 0x009e, 0x0005, 0x080c, ++ 0x9588, 0x080c, 0xcb35, 0x0138, 0x6114, 0x0096, 0x2148, 0xa97c, ++ 0x009e, 0xd1ec, 0x1138, 0x080c, 0x86b2, 0x080c, 0xae61, 0x080c, ++ 0x968d, 0x0005, 0x080c, 0xe7b3, 0x0db0, 0x0cc8, 0x080c, 0x9588, ++ 0x2009, 0x0041, 0x0804, 0xdf8d, 0x9182, 0x0040, 0x0002, 0xde3a, ++ 0xde3c, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, ++ 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, 0xde3a, ++ 0xde3d, 0xde3a, 0x080c, 0x0dd5, 0x0005, 0x00d6, 0x080c, 0x86b2, ++ 0x00de, 0x080c, 0xe80b, 0x080c, 0xae61, 0x0005, 0x9182, 0x0040, ++ 0x0002, 0xde5c, 0xde5c, 0xde5c, 0xde5c, 0xde5c, 0xde5c, 0xde5c, ++ 0xde5c, 0xde5c, 0xde5e, 0xdecd, 0xde5c, 0xde5c, 0xde5c, 0xde5c, ++ 0xdecd, 0xde5c, 0xde5c, 0xde5c, 0x080c, 0x0dd5, 0x2001, 0x0105, ++ 0x2004, 0x9084, 0x1800, 0x01c8, 0x2001, 0x0132, 0x200c, 0x2001, ++ 0x0131, 0x2004, 0x9105, 0x1904, 0xdecd, 0x2009, 0x180c, 0x2104, ++ 0xd0d4, 0x0904, 0xdecd, 0xc0d4, 0x200a, 0x2009, 0x0105, 0x2104, ++ 0x9084, 0xe7fd, 0x9085, 0x0010, 0x200a, 0x2001, 0x1867, 0x2004, ++ 0xd0e4, 0x1528, 0x603b, 0x0000, 0x080c, 0x963d, 0x6014, 0x0096, ++ 0x2048, 0xa87c, 0xd0fc, 0x0188, 0x908c, 0x0003, 0x918e, 0x0002, ++ 0x0508, 0x2001, 0x180c, 0x2004, 0xd0d4, 0x11e0, 0x080c, 0x97b9, ++ 0x2009, 0x0041, 0x009e, 0x0804, 0xdf8d, 0x080c, 0x97b9, 0x6003, ++ 0x0007, 0x601b, 0x0000, 0x080c, 0x86b2, 0x009e, 0x0005, 0x2001, ++ 0x0100, 0x2004, 0x9082, 0x0005, 0x0aa8, 0x2001, 0x011f, 0x2004, ++ 0x603a, 0x0890, 0x2001, 0x180c, 0x200c, 0xc1d4, 0x2102, 0xd1cc, ++ 0x0110, 0x080c, 0x2c52, 0x080c, 0x97b9, 0x6014, 0x2048, 0xa97c, ++ 0xd1ec, 0x1130, 0x080c, 0x86b2, 0x080c, 0xae61, 0x009e, 0x0005, ++ 0x080c, 0xe7b3, 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c, 0x200c, ++ 0xc1d4, 0x2102, 0x0036, 0x080c, 0x963d, 0x080c, 0x97b9, 0x6014, ++ 0x0096, 0x2048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x0188, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x0140, 0xa8ac, ++ 0x6330, 0x931a, 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e, 0x6003, ++ 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xe551, 0x6018, 0x9005, ++ 0x1128, 0x2001, 0x1987, 0x2004, 0x8003, 0x601a, 0x6017, 0x0000, ++ 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x9182, 0x0040, 0x0002, ++ 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, ++ 0xdf1e, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, 0xdf1c, ++ 0xdf1c, 0xdf1c, 0xdf1c, 0xdf69, 0x080c, 0x0dd5, 0x6014, 0x0096, ++ 0x2048, 0xa834, 0xaa38, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, ++ 0xd1bc, 0x1190, 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128, 0x2009, ++ 0x0041, 0x009e, 0x0804, 0xdf8d, 0x6003, 0x0007, 0x601b, 0x0000, ++ 0x080c, 0x86b2, 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58, 0x0006, ++ 0x0046, 0xacac, 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030, 0x9420, ++ 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8, 0x6110, ++ 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009, 0x180e, ++ 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, ++ 0x00e9, 0x080c, 0x86b4, 0x009e, 0x0005, 0x6003, 0x0002, 0x009e, ++ 0x0005, 0x6024, 0xd0f4, 0x0128, 0x080c, 0x15e5, 0x1904, 0xdf1e, ++ 0x0005, 0x6014, 0x0096, 0x2048, 0xa834, 0xa938, 0x009e, 0x9105, ++ 0x1120, 0x080c, 0x15e5, 0x1904, 0xdf1e, 0x0005, 0xd2fc, 0x0140, ++ 0x8002, 0x8000, 0x8212, 0x9291, 0x0000, 0x2009, 0x0009, 0x0010, ++ 0x2009, 0x0015, 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040, 0x0208, ++ 0x0062, 0x9186, 0x0013, 0x0120, 0x9186, 0x0014, 0x190c, 0x0dd5, ++ 0x6024, 0xd0dc, 0x090c, 0x0dd5, 0x0005, 0xdfb0, 0xdfbc, 0xdfc8, ++ 0xdfd4, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb7, 0xdfb2, 0xdfb2, ++ 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb0, 0xdfb2, 0xdfb0, 0xdfb2, 0xdfb0, ++ 0x080c, 0x0dd5, 0x6024, 0xd0dc, 0x090c, 0x0dd5, 0x0005, 0x6014, ++ 0x9005, 0x190c, 0x0dd5, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, ++ 0x90f0, 0x0126, 0x2091, 0x8000, 0x080c, 0x968d, 0x012e, 0x0005, ++ 0x6003, 0x0001, 0x6106, 0x080c, 0x90f0, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x968d, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, 0x2c10, ++ 0x080c, 0x1bad, 0x0126, 0x2091, 0x8000, 0x080c, 0x9155, 0x080c, ++ 0x97b9, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x0096, ++ 0x9182, 0x0040, 0x0023, 0x009e, 0x003e, 0x012e, 0x0005, 0xdfff, ++ 0xe001, 0xe013, 0xe02d, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, ++ 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x080c, ++ 0x0dd5, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x01f8, 0x909c, 0x0003, ++ 0x939e, 0x0003, 0x01d0, 0x6003, 0x0001, 0x6106, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x0470, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0168, ++ 0x909c, 0x0003, 0x939e, 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, ++ 0x080c, 0x90f0, 0x080c, 0x968d, 0x00e0, 0x901e, 0x6316, 0x631a, ++ 0x2019, 0x0004, 0x080c, 0xe551, 0x00a0, 0x6014, 0x2048, 0xa87c, ++ 0xd0fc, 0x0d98, 0x909c, 0x0003, 0x939e, 0x0003, 0x0d70, 0x6003, ++ 0x0003, 0x6106, 0x2c10, 0x080c, 0x1bad, 0x080c, 0x9155, 0x080c, ++ 0x97b9, 0x0005, 0x080c, 0x9588, 0x6114, 0x81ff, 0x0158, 0x0096, ++ 0x2148, 0x080c, 0xe908, 0x0036, 0x2019, 0x0029, 0x080c, 0xe551, ++ 0x003e, 0x009e, 0x080c, 0xae92, 0x080c, 0x968d, 0x0005, 0x080c, ++ 0x963d, 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, 0xe908, ++ 0x0036, 0x2019, 0x0029, 0x080c, 0xe551, 0x003e, 0x009e, 0x080c, ++ 0xae92, 0x080c, 0x97b9, 0x0005, 0x9182, 0x0085, 0x0002, 0xe07e, ++ 0xe07c, 0xe07c, 0xe08a, 0xe07c, 0xe07c, 0xe07c, 0xe07c, 0xe07c, ++ 0xe07c, 0xe07c, 0xe07c, 0xe07c, 0x080c, 0x0dd5, 0x6003, 0x000b, ++ 0x6106, 0x080c, 0x90f0, 0x0126, 0x2091, 0x8000, 0x080c, 0x968d, ++ 0x012e, 0x0005, 0x0026, 0x00e6, 0x080c, 0xe7aa, 0x0118, 0x080c, ++ 0xae61, 0x0450, 0x2071, 0x0260, 0x7224, 0x6216, 0x2001, 0x180e, ++ 0x2004, 0xd0e4, 0x0150, 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be, ++ 0x2c00, 0x2011, 0x014e, 0x080c, 0xb182, 0x7220, 0x080c, 0xe3f7, ++ 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, 0x9296, ++ 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x080c, 0x97b9, 0x00ee, 0x002e, 0x0005, 0x9186, ++ 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0dd5, 0x908a, ++ 0x0092, 0x1a0c, 0x0dd5, 0x9082, 0x0085, 0x00a2, 0x9186, 0x0027, ++ 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, 0xaef7, 0x0050, 0x2001, ++ 0x0007, 0x080c, 0x657b, 0x080c, 0x9588, 0x080c, 0xae92, 0x080c, ++ 0x968d, 0x0005, 0xe0ef, 0xe0f1, 0xe0f1, 0xe0ef, 0xe0ef, 0xe0ef, ++ 0xe0ef, 0xe0ef, 0xe0ef, 0xe0ef, 0xe0ef, 0xe0ef, 0xe0ef, 0x080c, ++ 0x0dd5, 0x080c, 0x9588, 0x080c, 0xae92, 0x080c, 0x968d, 0x0005, ++ 0x9182, 0x0085, 0x0a0c, 0x0dd5, 0x9182, 0x0092, 0x1a0c, 0x0dd5, ++ 0x9182, 0x0085, 0x0002, 0xe110, 0xe110, 0xe110, 0xe112, 0xe110, ++ 0xe110, 0xe110, 0xe110, 0xe110, 0xe110, 0xe110, 0xe110, 0xe110, ++ 0x080c, 0x0dd5, 0x0005, 0x9186, 0x0013, 0x0148, 0x9186, 0x0014, ++ 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0xaef7, 0x0030, 0x080c, ++ 0x9588, 0x080c, 0xae92, 0x080c, 0x968d, 0x0005, 0x0036, 0x080c, ++ 0xe80b, 0x6043, 0x0000, 0x2019, 0x000b, 0x0031, 0x6023, 0x0006, ++ 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, ++ 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0xa69c, 0x009e, 0x008e, ++ 0x1550, 0x0076, 0x2c38, 0x080c, 0xa747, 0x007e, 0x1520, 0x6000, ++ 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007, 0x01e0, 0x0096, ++ 0x601c, 0xd084, 0x0140, 0x080c, 0xe80b, 0x080c, 0xd248, 0x080c, ++ 0x1a5e, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, 0xcb35, 0x0110, ++ 0x080c, 0xe551, 0x009e, 0x6017, 0x0000, 0x080c, 0xe80b, 0x6023, ++ 0x0007, 0x080c, 0xd248, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, ++ 0x00b6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938, 0x783c, 0x080c, ++ 0x283e, 0x15c8, 0x0016, 0x00c6, 0x080c, 0x65ff, 0x1590, 0x001e, ++ 0x00c6, 0x2160, 0x080c, 0xd245, 0x00ce, 0x002e, 0x0026, 0x0016, ++ 0x2019, 0x0029, 0x080c, 0xa808, 0x080c, 0x928b, 0x0076, 0x903e, ++ 0x080c, 0x9168, 0x007e, 0x001e, 0x0076, 0x903e, 0x080c, 0xe2eb, ++ 0x007e, 0x0026, 0xba04, 0x9294, 0xff00, 0x8217, 0x9286, 0x0006, ++ 0x0118, 0x9286, 0x0004, 0x1118, 0xbaa0, 0x080c, 0x327d, 0x002e, ++ 0xbcc0, 0x001e, 0x080c, 0x6034, 0xbe12, 0xbd16, 0xbcc2, 0x9006, ++ 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00be, 0x00ce, 0x00fe, ++ 0x0005, 0x00c6, 0x00d6, 0x00b6, 0x0016, 0x2009, 0x1824, 0x2104, ++ 0x9086, 0x0074, 0x1904, 0xe212, 0x2069, 0x0260, 0x6944, 0x9182, ++ 0x0100, 0x06e0, 0x6940, 0x9184, 0x8000, 0x0904, 0xe20f, 0x2001, ++ 0x197c, 0x2004, 0x9005, 0x1140, 0x6010, 0x2058, 0xb8c0, 0x9005, ++ 0x0118, 0x9184, 0x0800, 0x0598, 0x6948, 0x918a, 0x0001, 0x0648, ++ 0x080c, 0xe970, 0x0118, 0x6978, 0xd1fc, 0x11b8, 0x2009, 0x0205, ++ 0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, 0x9182, 0x0100, ++ 0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, 0x0001, 0x0288, ++ 0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, 0x0100, 0x00a0, ++ 0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, 0x6017, 0x0700, ++ 0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, 0x0028, 0x6017, ++ 0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, 0x0008, 0x9006, ++ 0x001e, 0x00be, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00b6, 0x0026, ++ 0x0036, 0x0156, 0x6210, 0x2258, 0xbb04, 0x9394, 0x00ff, 0x9286, ++ 0x0006, 0x0180, 0x9286, 0x0004, 0x0168, 0x9394, 0xff00, 0x8217, ++ 0x9286, 0x0006, 0x0138, 0x9286, 0x0004, 0x0120, 0x080c, 0x660e, ++ 0x0804, 0xe27a, 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x000a, 0x080c, 0xbe1d, 0x009e, 0x15a8, 0x2011, 0x027a, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xbe1d, ++ 0x009e, 0x1548, 0x0046, 0x0016, 0xbaa0, 0x2220, 0x9006, 0x2009, ++ 0x1848, 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xe5ae, ++ 0xb800, 0xc0e5, 0xb802, 0x2019, 0x0029, 0x080c, 0x928b, 0x0076, ++ 0x2039, 0x0000, 0x080c, 0x9168, 0x2c08, 0x080c, 0xe2eb, 0x007e, ++ 0x2001, 0x0007, 0x080c, 0x657b, 0x2001, 0x0007, 0x080c, 0x654f, ++ 0x001e, 0x004e, 0x9006, 0x015e, 0x003e, 0x002e, 0x00be, 0x00ce, ++ 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800, 0x9086, 0x0800, 0x0118, ++ 0x6017, 0x0000, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, 0x00f6, ++ 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0x026c, 0x7930, 0x7834, ++ 0x080c, 0x283e, 0x11d0, 0x080c, 0x65ff, 0x11b8, 0x2011, 0x0270, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xbe1d, ++ 0x009e, 0x1158, 0x2011, 0x0274, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x0006, 0x080c, 0xbe1d, 0x009e, 0x015e, 0x003e, 0x002e, ++ 0x001e, 0x00fe, 0x00be, 0x0005, 0x00b6, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x0156, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x283e, 0x11d0, 0x080c, 0x65ff, 0x11b8, 0x2011, 0x0276, 0x20a9, ++ 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xbe1d, 0x009e, ++ 0x1158, 0x2011, 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, ++ 0x0006, 0x080c, 0xbe1d, 0x009e, 0x015e, 0x003e, 0x002e, 0x001e, ++ 0x000e, 0x00be, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, ++ 0x0056, 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, ++ 0x19f0, 0x252c, 0x2021, 0x19f6, 0x2424, 0x2061, 0x1cd0, 0x2071, ++ 0x1800, 0x7654, 0x7074, 0x81ff, 0x0150, 0x0006, 0x9186, 0x1ab0, ++ 0x000e, 0x0128, 0x8001, 0x9602, 0x1a04, 0xe388, 0x0018, 0x9606, ++ 0x0904, 0xe388, 0x080c, 0x8981, 0x0904, 0xe37f, 0x2100, 0x9c06, ++ 0x0904, 0xe37f, 0x080c, 0xe5ef, 0x1904, 0xe37f, 0x080c, 0xe98d, ++ 0x0904, 0xe37f, 0x080c, 0xe5df, 0x0904, 0xe37f, 0x6720, 0x9786, ++ 0x0001, 0x1148, 0x080c, 0x3314, 0x0904, 0xe3c7, 0x6004, 0x9086, ++ 0x0000, 0x1904, 0xe3c7, 0x9786, 0x0004, 0x0904, 0xe3c7, 0x9786, ++ 0x0007, 0x0904, 0xe37f, 0x2500, 0x9c06, 0x0904, 0xe37f, 0x2400, ++ 0x9c06, 0x05e8, 0x88ff, 0x0118, 0x6054, 0x9906, 0x15c0, 0x0096, ++ 0x6000, 0x9086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1a5e, 0x001e, ++ 0x9786, 0x000a, 0x0148, 0x080c, 0xcd3b, 0x1130, 0x080c, 0xb813, ++ 0x009e, 0x080c, 0xae92, 0x0418, 0x6014, 0x2048, 0x080c, 0xcb35, ++ 0x01d8, 0x9786, 0x0003, 0x1570, 0xa867, 0x0103, 0xa87c, 0xd0cc, ++ 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0fb1, 0x009e, 0xab7a, ++ 0xa877, 0x0000, 0x080c, 0xe908, 0x0016, 0x080c, 0xce24, 0x080c, ++ 0x6c75, 0x001e, 0x080c, 0xcd1e, 0x009e, 0x080c, 0xae92, 0x9ce0, ++ 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1210, 0x0804, 0xe2ff, ++ 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce, ++ 0x00ee, 0x0005, 0x9786, 0x0006, 0x1150, 0x9386, 0x0005, 0x0128, ++ 0x080c, 0xe908, 0x080c, 0xe551, 0x08f8, 0x009e, 0x0c00, 0x9786, ++ 0x0009, 0x11f8, 0x6000, 0x9086, 0x0004, 0x01c0, 0x6000, 0x9086, ++ 0x0003, 0x11a0, 0x080c, 0x963d, 0x0096, 0x6114, 0x2148, 0x080c, ++ 0xcb35, 0x0118, 0x6010, 0x080c, 0x6c81, 0x009e, 0x00c6, 0x080c, ++ 0xae61, 0x00ce, 0x0036, 0x080c, 0x97b9, 0x003e, 0x009e, 0x0804, ++ 0xe37f, 0x9786, 0x000a, 0x0904, 0xe366, 0x0804, 0xe364, 0x81ff, ++ 0x0904, 0xe37f, 0x9180, 0x0001, 0x2004, 0x9086, 0x0018, 0x0138, ++ 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, 0x1904, 0xe37f, 0x6000, ++ 0x9086, 0x0002, 0x1904, 0xe37f, 0x080c, 0xcd2a, 0x0138, 0x080c, ++ 0xcd3b, 0x1904, 0xe37f, 0x080c, 0xb813, 0x0038, 0x080c, 0x31e8, ++ 0x080c, 0xcd3b, 0x1110, 0x080c, 0xb813, 0x080c, 0xae92, 0x0804, ++ 0xe37f, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x0005, 0x00c6, ++ 0x00e6, 0x0016, 0x2c08, 0x2170, 0x9006, 0x080c, 0xe578, 0x001e, ++ 0x0120, 0x6020, 0x9084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, ++ 0xe416, 0xe416, 0xe416, 0xe416, 0xe416, 0xe416, 0xe418, 0xe416, ++ 0xe416, 0xe416, 0xe416, 0xae92, 0xae92, 0xe416, 0x9006, 0x0005, ++ 0x0036, 0x0046, 0x0016, 0x7010, 0x00b6, 0x2058, 0xbca0, 0x00be, ++ 0x2c00, 0x2009, 0x0020, 0x080c, 0xe5ae, 0x001e, 0x004e, 0x2019, ++ 0x0002, 0x080c, 0xe134, 0x003e, 0x9085, 0x0001, 0x0005, 0x0096, ++ 0x080c, 0xcb35, 0x0140, 0x6014, 0x904d, 0x080c, 0xc768, 0x687b, ++ 0x0005, 0x080c, 0x6c81, 0x009e, 0x080c, 0xae92, 0x9085, 0x0001, ++ 0x0005, 0x2001, 0x0001, 0x080c, 0x653b, 0x0156, 0x0016, 0x0026, ++ 0x0036, 0x20a9, 0x0004, 0x2019, 0x1805, 0x2011, 0x0276, 0x080c, ++ 0xbe09, 0x003e, 0x002e, 0x001e, 0x015e, 0x9005, 0x0005, 0x00f6, ++ 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x00b6, 0x0126, 0x2091, ++ 0x8000, 0x2740, 0x2061, 0x1cd0, 0x2079, 0x0001, 0x8fff, 0x0904, ++ 0xe4b1, 0x2071, 0x1800, 0x7654, 0x7074, 0x8001, 0x9602, 0x1a04, ++ 0xe4b1, 0x88ff, 0x0120, 0x2800, 0x9c06, 0x1590, 0x2078, 0x080c, ++ 0xe5df, 0x0570, 0x2400, 0x9c06, 0x0558, 0x6720, 0x9786, 0x0006, ++ 0x1538, 0x9786, 0x0007, 0x0520, 0x88ff, 0x1140, 0x6010, 0x9b06, ++ 0x11f8, 0x85ff, 0x0118, 0x6054, 0x9106, 0x11d0, 0x0096, 0x601c, ++ 0xd084, 0x0140, 0x080c, 0xe80b, 0x080c, 0xd248, 0x080c, 0x1a5e, ++ 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, 0xcb35, 0x0120, 0x0046, ++ 0x080c, 0xe551, 0x004e, 0x009e, 0x080c, 0xae92, 0x88ff, 0x1198, ++ 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1210, 0x0804, ++ 0xe466, 0x9006, 0x012e, 0x00be, 0x006e, 0x007e, 0x008e, 0x00ce, ++ 0x00ee, 0x00fe, 0x0005, 0x98c5, 0x0001, 0x0ca0, 0x00b6, 0x0076, ++ 0x0056, 0x0086, 0x9046, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, ++ 0x6210, 0x2258, 0x0096, 0x904e, 0x080c, 0xa69c, 0x009e, 0x008e, ++ 0x903e, 0x080c, 0xa747, 0x080c, 0xe457, 0x005e, 0x007e, 0x00be, ++ 0x0005, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, ++ 0x2128, 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x65ff, ++ 0x1190, 0x0056, 0x0086, 0x9046, 0x2508, 0x2029, 0x0001, 0x0096, ++ 0x904e, 0x080c, 0xa69c, 0x009e, 0x008e, 0x903e, 0x080c, 0xa747, ++ 0x080c, 0xe457, 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xe4e4, ++ 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x0005, 0x00b6, ++ 0x0076, 0x0056, 0x6210, 0x2258, 0x0086, 0x9046, 0x2029, 0x0001, ++ 0x2019, 0x0048, 0x0096, 0x904e, 0x080c, 0xa69c, 0x009e, 0x008e, ++ 0x903e, 0x080c, 0xa747, 0x2c20, 0x080c, 0xe457, 0x005e, 0x007e, ++ 0x00be, 0x0005, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, ++ 0x2c20, 0x20a9, 0x0800, 0x900e, 0x0016, 0x0036, 0x080c, 0x65ff, ++ 0x11a0, 0x0086, 0x9046, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, ++ 0xe7ef, 0x004e, 0x0096, 0x904e, 0x080c, 0xa69c, 0x009e, 0x008e, ++ 0x903e, 0x080c, 0xa747, 0x080c, 0xe457, 0x003e, 0x001e, 0x8108, ++ 0x1f04, 0xe52c, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, ++ 0x0005, 0x0016, 0x00f6, 0x080c, 0xcb33, 0x0198, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0046, 0x0180, 0xa800, 0x907d, 0x0138, 0xa803, ++ 0x0000, 0xab82, 0x080c, 0x6c81, 0x2f48, 0x0cb0, 0xab82, 0x080c, ++ 0x6c81, 0x00fe, 0x001e, 0x0005, 0xa800, 0x907d, 0x0130, 0xa803, ++ 0x0000, 0x080c, 0x6c81, 0x2f48, 0x0cb8, 0x080c, 0x6c81, 0x0c88, ++ 0x00e6, 0x0046, 0x0036, 0x2061, 0x1cd0, 0x9005, 0x1138, 0x2071, ++ 0x1800, 0x7454, 0x7074, 0x8001, 0x9402, 0x12f8, 0x2100, 0x9c06, ++ 0x0188, 0x6000, 0x9086, 0x0000, 0x0168, 0x6008, 0x9206, 0x1150, ++ 0x6320, 0x9386, 0x0009, 0x01b0, 0x6010, 0x91a0, 0x0004, 0x2424, ++ 0x9406, 0x0140, 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, ++ 0x1220, 0x0c20, 0x9085, 0x0001, 0x0008, 0x9006, 0x003e, 0x004e, ++ 0x00ee, 0x0005, 0x631c, 0xd3c4, 0x1d68, 0x0c30, 0x0096, 0x0006, ++ 0x080c, 0x0fff, 0x000e, 0x090c, 0x0dd5, 0xaae2, 0xa867, 0x010d, ++ 0xa88e, 0x0026, 0x2010, 0x080c, 0xcb23, 0x2001, 0x0000, 0x0120, ++ 0x2200, 0x9080, 0x0015, 0x2004, 0x002e, 0xa87a, 0x9186, 0x0020, ++ 0x0110, 0xa8e3, 0xffff, 0xa986, 0xac76, 0xa87f, 0x0000, 0x2001, ++ 0x198e, 0x2004, 0xa882, 0x9006, 0xa802, 0xa86a, 0xa88a, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x6c81, 0x012e, 0x009e, 0x0005, 0x6700, ++ 0x9786, 0x0000, 0x0158, 0x9786, 0x0001, 0x0140, 0x9786, 0x000a, ++ 0x0128, 0x9786, 0x0009, 0x0110, 0x9085, 0x0001, 0x0005, 0x00e6, ++ 0x6010, 0x9075, 0x0138, 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x9206, ++ 0x00ee, 0x0005, 0x9085, 0x0001, 0x0cd8, 0x0016, 0x6004, 0x908e, ++ 0x001e, 0x11a0, 0x8007, 0x6134, 0x918c, 0x00ff, 0x9105, 0x6036, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0005, 0x2001, 0x1987, ++ 0x2004, 0x601a, 0x080c, 0x90f0, 0x080c, 0x968d, 0x001e, 0x0005, ++ 0xa001, 0xa001, 0x0005, 0x6024, 0xd0e4, 0x0158, 0xd0cc, 0x0118, ++ 0x080c, 0xce68, 0x0030, 0x080c, 0xe80b, 0x080c, 0x86b2, 0x080c, ++ 0xae61, 0x0005, 0x9280, 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, ++ 0xe63e, 0xe63e, 0xe63e, 0xe640, 0xe63e, 0xe640, 0xe640, 0xe63e, ++ 0xe640, 0xe63e, 0xe63e, 0xe63e, 0xe63e, 0xe63e, 0x9006, 0x0005, ++ 0x9085, 0x0001, 0x0005, 0x9280, 0x0008, 0x2004, 0x9084, 0x000f, ++ 0x0002, 0xe657, 0xe657, 0xe657, 0xe657, 0xe657, 0xe657, 0xe664, ++ 0xe657, 0xe657, 0xe657, 0xe657, 0xe657, 0xe657, 0xe657, 0x6007, ++ 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003, 0x0001, 0x080c, ++ 0x90f0, 0x080c, 0x968d, 0x0005, 0x0096, 0x00c6, 0x2260, 0x080c, ++ 0xe80b, 0x6043, 0x0000, 0x6024, 0xc0f4, 0xc0e4, 0x6026, 0x603b, ++ 0x0000, 0x00ce, 0x00d6, 0x2268, 0x9186, 0x0007, 0x1904, 0xe6bd, ++ 0x6814, 0x9005, 0x0138, 0x2048, 0xa87c, 0xd0fc, 0x1118, 0x00de, ++ 0x009e, 0x08a8, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x00c6, 0x2d60, 0x6100, 0x9186, 0x0002, 0x1904, ++ 0xe734, 0x6014, 0x9005, 0x1138, 0x6000, 0x9086, 0x0007, 0x190c, ++ 0x0dd5, 0x0804, 0xe734, 0x2048, 0x080c, 0xcb35, 0x1130, 0x0028, ++ 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, 0x2048, 0xa87c, 0x9084, ++ 0x0003, 0x9086, 0x0002, 0x1168, 0xa87c, 0xc0dc, 0xc0f4, 0xa87e, ++ 0xa880, 0xc0fc, 0xa882, 0x2009, 0x0043, 0x080c, 0xdf8d, 0x0804, ++ 0xe734, 0x2009, 0x0041, 0x0804, 0xe72e, 0x9186, 0x0005, 0x15a0, ++ 0x6814, 0x2048, 0xa87c, 0xd0bc, 0x1120, 0x00de, 0x009e, 0x0804, ++ 0xe657, 0xd0b4, 0x0128, 0xd0fc, 0x090c, 0x0dd5, 0x0804, 0xe678, ++ 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, 0x90f0, 0x080c, 0x968d, ++ 0x00c6, 0x2d60, 0x6100, 0x9186, 0x0002, 0x0120, 0x9186, 0x0004, ++ 0x1904, 0xe734, 0x6814, 0x2048, 0xa97c, 0xc1f4, 0xc1dc, 0xa97e, ++ 0xa980, 0xc1fc, 0xc1bc, 0xa982, 0x00f6, 0x2c78, 0x080c, 0x1725, ++ 0x00fe, 0x2009, 0x0042, 0x04d0, 0x0036, 0x080c, 0x0fff, 0x090c, ++ 0x0dd5, 0xa867, 0x010d, 0x9006, 0xa802, 0xa86a, 0xa88a, 0x2d18, ++ 0xab8e, 0xa887, 0x0045, 0x2c00, 0xa892, 0x6038, 0xa8a2, 0x2360, ++ 0x6024, 0xc0dd, 0x6026, 0x6010, 0x00b6, 0x2058, 0xb8a0, 0x00be, ++ 0x2004, 0x6354, 0xab7a, 0xa876, 0x9006, 0xa87e, 0xa882, 0xad9a, ++ 0xae96, 0xa89f, 0x0001, 0x080c, 0x6c81, 0x2019, 0x0045, 0x6008, ++ 0x2068, 0x080c, 0xe134, 0x2d00, 0x600a, 0x6023, 0x0006, 0x6003, ++ 0x0007, 0x901e, 0x631a, 0x6342, 0x003e, 0x0038, 0x6043, 0x0000, ++ 0x6003, 0x0007, 0x080c, 0xdf8d, 0x00ce, 0x00de, 0x009e, 0x0005, ++ 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, 0x0085, 0x2008, 0x00c2, ++ 0x9186, 0x0027, 0x1178, 0x080c, 0x9588, 0x0036, 0x0096, 0x6014, ++ 0x2048, 0x2019, 0x0004, 0x080c, 0xe551, 0x009e, 0x003e, 0x080c, ++ 0x968d, 0x0005, 0x9186, 0x0014, 0x0d70, 0x080c, 0xaef7, 0x0005, ++ 0xe767, 0xe765, 0xe765, 0xe765, 0xe765, 0xe765, 0xe767, 0xe765, ++ 0xe765, 0xe765, 0xe765, 0xe765, 0xe765, 0x080c, 0x0dd5, 0x080c, ++ 0x9588, 0x6003, 0x000c, 0x080c, 0x968d, 0x0005, 0x9182, 0x0092, ++ 0x1220, 0x9182, 0x0085, 0x0208, 0x001a, 0x080c, 0xaef7, 0x0005, ++ 0xe785, 0xe785, 0xe785, 0xe785, 0xe787, 0xe7a7, 0xe785, 0xe785, ++ 0xe785, 0xe785, 0xe785, 0xe785, 0xe785, 0x080c, 0x0dd5, 0x00d6, ++ 0x2c68, 0x080c, 0xae0b, 0x01b0, 0x6003, 0x0001, 0x6007, 0x001e, ++ 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, 0x613e, ++ 0x600b, 0xffff, 0x6910, 0x6112, 0x6023, 0x0004, 0x080c, 0x90f0, ++ 0x080c, 0x968d, 0x2d60, 0x080c, 0xae61, 0x00de, 0x0005, 0x080c, ++ 0xae61, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0ec, 0x00ee, 0x0005, 0x2009, 0x1867, 0x210c, 0xd1ec, 0x05b0, ++ 0x6003, 0x0002, 0x6024, 0xc0e5, 0x6026, 0xd0cc, 0x0150, 0x2001, ++ 0x1988, 0x2004, 0x6042, 0x2009, 0x1867, 0x210c, 0xd1f4, 0x1520, ++ 0x00a0, 0x2009, 0x1867, 0x210c, 0xd1f4, 0x0128, 0x6024, 0xc0e4, ++ 0x6026, 0x9006, 0x00d8, 0x2001, 0x1988, 0x200c, 0x2001, 0x1986, ++ 0x2004, 0x9100, 0x9080, 0x000a, 0x6042, 0x6010, 0x00b6, 0x2058, ++ 0xb8bc, 0x00be, 0x0008, 0x2104, 0x9005, 0x0118, 0x9088, 0x0003, ++ 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0x9085, 0x0001, 0x0005, 0x0016, ++ 0x00c6, 0x00e6, 0x6154, 0xb8bc, 0x2060, 0x8cff, 0x0180, 0x84ff, ++ 0x1118, 0x6054, 0x9106, 0x1138, 0x600c, 0x2072, 0x080c, 0x86b2, ++ 0x080c, 0xae61, 0x0010, 0x9cf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, ++ 0x00ce, 0x001e, 0x0005, 0x00d6, 0x00b6, 0x6010, 0x2058, 0xb8bc, ++ 0x2068, 0x9005, 0x0130, 0x9c06, 0x0110, 0x680c, 0x0cd0, 0x600c, ++ 0x680e, 0x00be, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, ++ 0x182c, 0x2204, 0x9084, 0x00ff, 0x2019, 0x026e, 0x2334, 0x9636, ++ 0x1508, 0x8318, 0x2334, 0x2204, 0x9084, 0xff00, 0x9636, 0x11d0, ++ 0x2011, 0x0270, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, ++ 0x000a, 0x080c, 0xbe1d, 0x009e, 0x1168, 0x2011, 0x0274, 0x20a9, ++ 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, 0x0006, 0x080c, 0xbe1d, ++ 0x009e, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x2071, ++ 0x1800, 0x080c, 0x5fad, 0x080c, 0x2f96, 0x00ee, 0x0005, 0x0096, ++ 0x0026, 0x080c, 0x0fff, 0x090c, 0x0dd5, 0xa85c, 0x9080, 0x001a, ++ 0x20a0, 0x20a9, 0x000c, 0xa860, 0x20e8, 0x9006, 0x4004, 0x9186, ++ 0x0046, 0x1118, 0xa867, 0x0136, 0x0038, 0xa867, 0x0138, 0x9186, ++ 0x0041, 0x0110, 0xa87b, 0x0001, 0x7038, 0x9084, 0xff00, 0x7240, ++ 0x9294, 0xff00, 0x8007, 0x9215, 0xaa9a, 0x9186, 0x0046, 0x1168, ++ 0x7038, 0x9084, 0x00ff, 0x723c, 0x9294, 0xff00, 0x9215, 0xaa9e, ++ 0x723c, 0x9294, 0x00ff, 0xaaa2, 0x0060, 0x7040, 0x9084, 0x00ff, ++ 0x7244, 0x9294, 0xff00, 0x9215, 0xaa9e, 0x7244, 0x9294, 0x00ff, ++ 0xaaa2, 0x9186, 0x0046, 0x1118, 0x9e90, 0x0012, 0x0010, 0x9e90, ++ 0x001a, 0x2204, 0x8007, 0xa8a6, 0x8210, 0x2204, 0x8007, 0xa8aa, ++ 0x8210, 0x2204, 0x8007, 0xa8ae, 0x8210, 0x2204, 0x8007, 0xa8b2, ++ 0x8210, 0x9186, 0x0046, 0x11b8, 0x9e90, 0x0016, 0x2204, 0x8007, ++ 0xa8b6, 0x8210, 0x2204, 0x8007, 0xa8ba, 0x8210, 0x2204, 0x8007, ++ 0xa8be, 0x8210, 0x2204, 0x8007, 0xa8c2, 0x8210, 0x2011, 0x0205, ++ 0x2013, 0x0001, 0x00b0, 0x9e90, 0x001e, 0x2204, 0x8007, 0xa8b6, ++ 0x8210, 0x2204, 0x8007, 0xa8ba, 0x2011, 0x0205, 0x2013, 0x0001, ++ 0x2011, 0x0260, 0x2204, 0x8007, 0xa8be, 0x8210, 0x2204, 0x8007, ++ 0xa8c2, 0x9186, 0x0046, 0x1118, 0x2011, 0x0262, 0x0010, 0x2011, ++ 0x026a, 0x0146, 0x01d6, 0x0036, 0x20a9, 0x0001, 0x2019, 0x0008, ++ 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, 0x2204, 0x8007, ++ 0x4004, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x01ce, 0x013e, 0x2011, ++ 0x0205, 0x2013, 0x0000, 0x002e, 0x080c, 0x6c81, 0x009e, 0x0005, ++ 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0fc, 0x0108, ++ 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5, 0xa882, 0x0005, 0x00e6, ++ 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0016, ++ 0x0126, 0x2091, 0x8000, 0x2029, 0x19f0, 0x252c, 0x2021, 0x19f6, ++ 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800, 0x7654, 0x7074, 0x9606, ++ 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, 0x9786, 0x0008, 0x1500, ++ 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, 0x01d0, 0x080c, 0xe5df, ++ 0x01b8, 0x080c, 0xe5ef, 0x11a0, 0x6000, 0x9086, 0x0004, 0x1120, ++ 0x0016, 0x080c, 0x1a5e, 0x001e, 0x080c, 0xcd2a, 0x1110, 0x080c, ++ 0x31e8, 0x080c, 0xcd3b, 0x1110, 0x080c, 0xb813, 0x080c, 0xae92, ++ 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1208, 0x0858, ++ 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x00ce, ++ 0x00de, 0x00ee, 0x0005, 0x2001, 0x1810, 0x2004, 0xd0dc, 0x0005, ++ 0x0006, 0x2001, 0x1837, 0x2004, 0xd09c, 0x000e, 0x0005, 0x0006, ++ 0x0036, 0x0046, 0x080c, 0xd230, 0x0168, 0x2019, 0xffff, 0x9005, ++ 0x0128, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0004, ++ 0x080c, 0x4cbb, 0x004e, 0x003e, 0x000e, 0x6004, 0x9086, 0x0001, ++ 0x1128, 0x080c, 0xa808, 0x080c, 0xae92, 0x9006, 0x0005, 0x00e6, ++ 0x00c6, 0x00b6, 0x0046, 0x2061, 0x1cd0, 0x2071, 0x1800, 0x7454, ++ 0x7074, 0x8001, 0x9402, 0x12b8, 0x2100, 0x9c06, 0x0148, 0x6000, ++ 0x9086, 0x0000, 0x0128, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x0140, ++ 0x9ce0, 0x0018, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1220, 0x0c60, ++ 0x9085, 0x0001, 0x0008, 0x9006, 0x004e, 0x00be, 0x00ce, 0x00ee, ++ 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, ++ 0x1840, 0xd5a4, 0x0118, 0x7004, 0x8000, 0x7006, 0xd5b4, 0x0118, ++ 0x7000, 0x8000, 0x7002, 0xd5ac, 0x0178, 0x2500, 0x9084, 0x0007, ++ 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, 0x0130, 0x908e, 0x0005, ++ 0x0118, 0x2071, 0xfffe, 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, ++ 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xfff6, ++ 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e05, 0x8000, 0x2077, ++ 0x1220, 0x8e70, 0x2e05, 0x8000, 0x2077, 0x0005, 0x00e6, 0x2071, ++ 0xfff4, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xfff8, 0x0c69, ++ 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, ++ 0x1840, 0x7014, 0x8000, 0x7016, 0x00ee, 0x000e, 0x012e, 0x0005, ++ 0x0003, 0x000b, 0x079e, 0x0000, 0xc000, 0x0001, 0x8064, 0x0008, ++ 0x0010, 0x0000, 0x8066, 0x0000, 0x0101, 0x0008, 0x4407, 0x0003, ++ 0x8060, 0x0000, 0x0400, 0x0000, 0x580d, 0x000b, 0x79a8, 0x000b, ++ 0x50ee, 0x000b, 0x4c0a, 0x0003, 0xbac0, 0x0009, 0x008a, 0x0000, ++ 0x0c0a, 0x000b, 0x15fe, 0x0008, 0x340a, 0x0003, 0xc4c0, 0x0009, ++ 0x7000, 0x0000, 0xffa0, 0x0001, 0x2000, 0x0000, 0x1668, 0x000b, ++ 0x808c, 0x0008, 0x0001, 0x0000, 0x0000, 0x0007, 0x4028, 0x0000, ++ 0x4047, 0x000a, 0x808c, 0x0008, 0x0002, 0x0000, 0x0822, 0x0003, ++ 0x4022, 0x0000, 0x0028, 0x000b, 0x4122, 0x0008, 0x94c0, 0x0009, ++ 0xff00, 0x0008, 0xffe0, 0x0009, 0x0500, 0x0008, 0x0a93, 0x000b, ++ 0x4447, 0x0002, 0x0e90, 0x0003, 0x0bfe, 0x0008, 0x11a0, 0x0001, ++ 0x126e, 0x0003, 0x0ca0, 0x0001, 0x126e, 0x0003, 0x9180, 0x0001, ++ 0x0004, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x0009, 0x0008, 0x4436, 0x000b, 0x808c, 0x0008, ++ 0x0000, 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x0004, 0x0000, ++ 0x8066, 0x0000, 0x0411, 0x0000, 0x443e, 0x0003, 0x03fe, 0x0000, ++ 0x43e0, 0x0001, 0x0e6b, 0x000b, 0xc2c0, 0x0009, 0x00ff, 0x0008, ++ 0x02e0, 0x0001, 0x0e6b, 0x000b, 0x9180, 0x0001, 0x0005, 0x0008, ++ 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, ++ 0x0019, 0x0000, 0x444d, 0x000b, 0x0240, 0x0002, 0x0a68, 0x0003, ++ 0x00fe, 0x0000, 0x326b, 0x000b, 0x0248, 0x000a, 0x085c, 0x0003, ++ 0x9180, 0x0001, 0x0006, 0x0008, 0x7f62, 0x0008, 0x8002, 0x0008, ++ 0x0003, 0x0008, 0x8066, 0x0000, 0x020a, 0x0000, 0x445b, 0x0003, ++ 0x112a, 0x0000, 0x002e, 0x0008, 0x022c, 0x0008, 0x3a44, 0x0002, ++ 0x0c0a, 0x000b, 0x808c, 0x0008, 0x0002, 0x0000, 0x1760, 0x0008, ++ 0x8062, 0x0008, 0x000f, 0x0008, 0x8066, 0x0000, 0x0011, 0x0008, ++ 0x4468, 0x0003, 0x01fe, 0x0008, 0x42e0, 0x0009, 0x0e5c, 0x0003, ++ 0x00fe, 0x0000, 0x43e0, 0x0001, 0x0e5c, 0x0003, 0x1734, 0x0000, ++ 0x1530, 0x0000, 0x1632, 0x0008, 0x0d2a, 0x0008, 0x9880, 0x0001, ++ 0x0010, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x1e0a, 0x0008, 0x447a, 0x0003, 0x808a, 0x0008, ++ 0x0003, 0x0008, 0x1a60, 0x0000, 0x8062, 0x0008, 0x0002, 0x0000, ++ 0x5880, 0x000b, 0x8066, 0x0000, 0x3679, 0x0000, 0x4483, 0x0003, ++ 0x5884, 0x0003, 0x3efe, 0x0008, 0x7f4f, 0x0002, 0x088a, 0x000b, ++ 0x0d00, 0x0000, 0x0092, 0x000c, 0x8054, 0x0008, 0x0011, 0x0008, ++ 0x8074, 0x0000, 0x1010, 0x0008, 0x1efe, 0x0000, 0x300a, 0x000b, ++ 0x00c8, 0x000c, 0x000a, 0x000b, 0x00fe, 0x0000, 0x349a, 0x0003, ++ 0x1a60, 0x0000, 0x8062, 0x0008, 0x0007, 0x0000, 0x8066, 0x0000, ++ 0x0231, 0x0008, 0x4499, 0x000b, 0x03fe, 0x0000, 0x04d0, 0x0001, ++ 0x0cc0, 0x000b, 0x82c0, 0x0001, 0x1f00, 0x0000, 0xffa0, 0x0001, ++ 0x0400, 0x0000, 0x08af, 0x0003, 0x14c0, 0x000b, 0x01fe, 0x0008, ++ 0x0580, 0x0009, 0x7f06, 0x0000, 0x02fe, 0x0008, 0xffc0, 0x0001, ++ 0x00ff, 0x0008, 0x0690, 0x0001, 0x10af, 0x0003, 0x7f08, 0x0008, ++ 0x84c0, 0x0001, 0xff00, 0x0008, 0x08c0, 0x0003, 0x00fe, 0x0000, ++ 0x34b6, 0x000b, 0x8072, 0x0000, 0x1010, 0x0008, 0x3944, 0x0002, ++ 0x08b1, 0x0003, 0x00ba, 0x0003, 0x8072, 0x0000, 0x2020, 0x0008, ++ 0x3945, 0x000a, 0x08b6, 0x000b, 0x3946, 0x000a, 0x0cc7, 0x0003, ++ 0x0000, 0x0007, 0x3943, 0x000a, 0x08c7, 0x000b, 0x00ba, 0x0003, ++ 0x00fe, 0x0000, 0x34c5, 0x0003, 0x8072, 0x0000, 0x1000, 0x0000, ++ 0x00c7, 0x0003, 0x8072, 0x0000, 0x2000, 0x0000, 0x4000, 0x000f, ++ 0x1c60, 0x0000, 0x1b62, 0x0000, 0x8066, 0x0000, 0x0231, 0x0008, ++ 0x44cc, 0x000b, 0x58cd, 0x000b, 0x0140, 0x0008, 0x0242, 0x0000, ++ 0x1f43, 0x0002, 0x0cdb, 0x000b, 0x0d44, 0x0000, 0x0d46, 0x0008, ++ 0x0348, 0x0008, 0x044a, 0x0008, 0x030a, 0x0008, 0x040c, 0x0000, ++ 0x0d06, 0x0000, 0x0d08, 0x0008, 0x00df, 0x0003, 0x0344, 0x0008, ++ 0x0446, 0x0008, 0x0548, 0x0008, 0x064a, 0x0000, 0x1948, 0x000a, ++ 0x08e2, 0x0003, 0x0d4a, 0x0008, 0x58e2, 0x0003, 0x3efe, 0x0008, ++ 0x7f4f, 0x0002, 0x08e9, 0x000b, 0x8000, 0x0000, 0x0001, 0x0000, ++ 0x0092, 0x000c, 0x8054, 0x0008, 0x0001, 0x0000, 0x8074, 0x0000, ++ 0x2020, 0x0008, 0x4000, 0x000f, 0x3a40, 0x000a, 0x0c0d, 0x0003, ++ 0x2b24, 0x0008, 0x2b24, 0x0008, 0x58f2, 0x000b, 0x8054, 0x0008, ++ 0x0002, 0x0000, 0x1242, 0x0002, 0x0940, 0x0003, 0x3a45, 0x000a, ++ 0x092f, 0x0003, 0x8072, 0x0000, 0x1000, 0x0000, 0x3945, 0x000a, ++ 0x08ff, 0x0003, 0x8072, 0x0000, 0x3010, 0x0000, 0x1e10, 0x000a, ++ 0x7f3c, 0x0000, 0x092a, 0x0003, 0x1d00, 0x0002, 0x7f3a, 0x0000, ++ 0x0d60, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, ++ 0x4508, 0x000b, 0x00fe, 0x0000, 0x3527, 0x000b, 0x1c60, 0x0000, ++ 0x8062, 0x0008, 0x0001, 0x0000, 0x8066, 0x0000, 0x0009, 0x0008, ++ 0x4510, 0x000b, 0x00fe, 0x0000, 0x3243, 0x000b, 0x0038, 0x0000, ++ 0x0060, 0x0008, 0x8062, 0x0008, 0x0019, 0x0000, 0x8066, 0x0000, ++ 0x0009, 0x0008, 0x4519, 0x000b, 0x80c0, 0x0009, 0x00ff, 0x0008, ++ 0x7f3e, 0x0008, 0x0d60, 0x0000, 0x0efe, 0x0008, 0x1f80, 0x0001, ++ 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x4523, 0x000b, ++ 0x003a, 0x0008, 0x1dfe, 0x0000, 0x0104, 0x000b, 0x0036, 0x0008, ++ 0x00c8, 0x000c, 0x0140, 0x000b, 0x8074, 0x0000, 0x2000, 0x0000, ++ 0x8072, 0x0000, 0x2000, 0x0000, 0x0140, 0x000b, 0x3a44, 0x0002, ++ 0x0a71, 0x000b, 0x8074, 0x0000, 0x1000, 0x0000, 0x8072, 0x0000, ++ 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, 0x0000, 0x3640, 0x0003, ++ 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, 0x0008, 0x2700, 0x0008, ++ 0x00d0, 0x0009, 0x0d52, 0x000b, 0x8074, 0x0000, 0x4040, 0x0008, ++ 0x5940, 0x0003, 0x50ee, 0x000b, 0x3a46, 0x000a, 0x0d52, 0x000b, ++ 0x3a47, 0x0002, 0x094d, 0x000b, 0x8054, 0x0008, 0x0004, 0x0000, ++ 0x8074, 0x0000, 0x8000, 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, ++ 0x019c, 0x0003, 0x92c0, 0x0009, 0x0fc8, 0x0000, 0x080a, 0x0003, ++ 0x1246, 0x000a, 0x0e3a, 0x0003, 0x1a60, 0x0000, 0x8062, 0x0008, ++ 0x0002, 0x0000, 0x8066, 0x0000, 0x362a, 0x0000, 0x4557, 0x000b, ++ 0x2000, 0x0000, 0x2000, 0x0000, 0x2102, 0x0000, 0x2102, 0x0000, ++ 0x2204, 0x0000, 0x2204, 0x0000, 0x2306, 0x0000, 0x2306, 0x0000, ++ 0x2408, 0x0000, 0x2408, 0x0000, 0x250a, 0x0000, 0x250a, 0x0000, ++ 0x260c, 0x0000, 0x260c, 0x0000, 0x270e, 0x0000, 0x270e, 0x0000, ++ 0x2810, 0x0000, 0x2810, 0x0000, 0x2912, 0x0000, 0x2912, 0x0000, ++ 0x1a60, 0x0000, 0x8062, 0x0008, 0x0007, 0x0000, 0x8066, 0x0000, ++ 0x0052, 0x0000, 0x4571, 0x0003, 0x92c0, 0x0009, 0x0780, 0x0008, ++ 0x0e56, 0x0003, 0x124b, 0x0002, 0x097a, 0x0003, 0x2e4d, 0x0002, ++ 0x2e4d, 0x0002, 0x0a40, 0x0003, 0x3a46, 0x000a, 0x0d8a, 0x000b, ++ 0x597c, 0x0003, 0x8054, 0x0008, 0x0004, 0x0000, 0x1243, 0x000a, ++ 0x0998, 0x0003, 0x8010, 0x0008, 0x000d, 0x0000, 0x021b, 0x000c, ++ 0x1948, 0x000a, 0x0987, 0x000b, 0x0210, 0x0004, 0x1810, 0x0000, ++ 0x021b, 0x000c, 0x0198, 0x000b, 0x1948, 0x000a, 0x098e, 0x000b, ++ 0x1243, 0x000a, 0x0a43, 0x0003, 0x194d, 0x000a, 0x0992, 0x0003, ++ 0x1243, 0x000a, 0x0a4a, 0x0003, 0x5992, 0x0003, 0x8054, 0x0008, ++ 0x0004, 0x0000, 0x0210, 0x0004, 0x1810, 0x0000, 0x021b, 0x000c, ++ 0x8074, 0x0000, 0xf000, 0x0008, 0x8072, 0x0000, 0x3000, 0x0008, ++ 0x0d30, 0x0000, 0x3a42, 0x0002, 0x0da2, 0x000b, 0x15fe, 0x0008, ++ 0x3461, 0x000b, 0x000a, 0x000b, 0x8074, 0x0000, 0x0501, 0x0000, ++ 0x8010, 0x0008, 0x000c, 0x0008, 0x021b, 0x000c, 0x000a, 0x000b, ++ 0xbbe0, 0x0009, 0x0030, 0x0008, 0x0db8, 0x0003, 0x18fe, 0x0000, ++ 0x3ce0, 0x0009, 0x09b5, 0x0003, 0x15fe, 0x0008, 0x3ce0, 0x0009, ++ 0x09b5, 0x0003, 0x020b, 0x0004, 0x8076, 0x0008, 0x0040, 0x0000, ++ 0x0208, 0x000b, 0x8076, 0x0008, 0x0041, 0x0008, 0x0208, 0x000b, ++ 0xbbe0, 0x0009, 0x0032, 0x0000, 0x0dbd, 0x0003, 0x3c1e, 0x0008, ++ 0x0208, 0x000b, 0xbbe0, 0x0009, 0x003b, 0x0000, 0x0dc2, 0x000b, ++ 0x3c20, 0x0000, 0x0208, 0x000b, 0xbbe0, 0x0009, 0x0035, 0x0008, ++ 0x0dc8, 0x000b, 0x8072, 0x0000, 0x8000, 0x0000, 0x0384, 0x000b, ++ 0xbbe0, 0x0009, 0x0036, 0x0008, 0x0aa5, 0x000b, 0xbbe0, 0x0009, ++ 0x0037, 0x0000, 0x0de9, 0x000b, 0x18fe, 0x0000, 0x3ce0, 0x0009, ++ 0x0db5, 0x000b, 0x8076, 0x0008, 0x0040, 0x0000, 0x1a60, 0x0000, ++ 0x8062, 0x0008, 0x000d, 0x0000, 0x2604, 0x0008, 0x2604, 0x0008, ++ 0x2706, 0x0008, 0x2706, 0x0008, 0x2808, 0x0000, 0x2808, 0x0000, ++ 0x290a, 0x0000, 0x290a, 0x0000, 0x8066, 0x0000, 0x0422, 0x0000, ++ 0x45e0, 0x000b, 0x0210, 0x0004, 0x8054, 0x0008, 0x0004, 0x0000, ++ 0x8074, 0x0000, 0xf000, 0x0008, 0x8072, 0x0000, 0xb000, 0x0000, ++ 0x019c, 0x0003, 0xbbe0, 0x0009, 0x0038, 0x0000, 0x0dfb, 0x000b, ++ 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x09f8, 0x0003, 0x15fe, 0x0008, ++ 0x3ce0, 0x0009, 0x0db1, 0x0003, 0x020b, 0x0004, 0x8076, 0x0008, ++ 0x0040, 0x0000, 0x8072, 0x0000, 0x8000, 0x0000, 0x0268, 0x000b, ++ 0x8076, 0x0008, 0x0042, 0x0008, 0x0208, 0x000b, 0xbbe0, 0x0009, ++ 0x0016, 0x0000, 0x0e08, 0x000b, 0x8074, 0x0000, 0x0808, 0x0008, ++ 0x3a44, 0x0002, 0x0c0c, 0x000b, 0x8074, 0x0000, 0x0800, 0x0000, ++ 0x8072, 0x0000, 0x8000, 0x0000, 0x8000, 0x000f, 0x000a, 0x000b, ++ 0x8072, 0x0000, 0x8000, 0x0000, 0x000a, 0x000b, 0x3d30, 0x000a, ++ 0x7f00, 0x0000, 0xbc80, 0x0001, 0x0007, 0x0000, 0x0214, 0x0003, ++ 0x1930, 0x000a, 0x7f00, 0x0000, 0x9880, 0x0001, 0x0007, 0x0000, ++ 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, ++ 0x000a, 0x0008, 0x4619, 0x000b, 0x4000, 0x000f, 0x221e, 0x000b, ++ 0x0870, 0x0008, 0x4000, 0x000f, 0x7e1b, 0x000b, 0xbbe0, 0x0009, ++ 0x0030, 0x0008, 0x0e1b, 0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, ++ 0x0a2c, 0x0003, 0x15fe, 0x0008, 0x3ce0, 0x0009, 0x0a2c, 0x0003, ++ 0x020b, 0x0004, 0x8076, 0x0008, 0x0040, 0x0000, 0x022e, 0x0003, ++ 0x8076, 0x0008, 0x0041, 0x0008, 0x8072, 0x0000, 0x8000, 0x0000, ++ 0x021b, 0x0003, 0xbac0, 0x0009, 0x0090, 0x0008, 0x0a37, 0x0003, ++ 0x8074, 0x0000, 0x0706, 0x0000, 0x0239, 0x0003, 0x8074, 0x0000, ++ 0x0703, 0x0000, 0x4000, 0x000f, 0x8010, 0x0008, 0x0023, 0x0000, ++ 0x0276, 0x000b, 0x8010, 0x0008, 0x0008, 0x0000, 0x0276, 0x000b, ++ 0x8010, 0x0008, 0x0022, 0x0008, 0x0276, 0x000b, 0x0210, 0x0004, ++ 0x8010, 0x0008, 0x0007, 0x0000, 0x021b, 0x000c, 0x1810, 0x0000, ++ 0x021b, 0x000c, 0x0282, 0x0003, 0x0210, 0x0004, 0x8010, 0x0008, ++ 0x001b, 0x0008, 0x021b, 0x000c, 0x1810, 0x0000, 0x021b, 0x000c, ++ 0x8074, 0x0000, 0xf080, 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, ++ 0x0d30, 0x0000, 0x000a, 0x000b, 0x8010, 0x0008, 0x0009, 0x0008, ++ 0x0276, 0x000b, 0x8010, 0x0008, 0x0005, 0x0008, 0x0276, 0x000b, ++ 0x1648, 0x000a, 0x0c6f, 0x000b, 0x808c, 0x0008, 0x0001, 0x0000, ++ 0x8010, 0x0008, 0x0004, 0x0000, 0x4143, 0x000a, 0x086f, 0x0003, ++ 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x0d2a, 0x0008, 0x0276, 0x000b, ++ 0x8010, 0x0008, 0x0003, 0x0008, 0x027a, 0x000b, 0x8010, 0x0008, ++ 0x000b, 0x0000, 0x027a, 0x000b, 0x8010, 0x0008, 0x0002, 0x0000, ++ 0x027a, 0x000b, 0x3a47, 0x0002, 0x0d40, 0x000b, 0x8010, 0x0008, ++ 0x0006, 0x0008, 0x027a, 0x000b, 0x8074, 0x0000, 0xf000, 0x0008, ++ 0x8072, 0x0000, 0x3000, 0x0008, 0x021b, 0x000c, 0x0231, 0x0004, ++ 0x3a40, 0x000a, 0x080a, 0x0003, 0x8010, 0x0008, 0x000c, 0x0008, ++ 0x021b, 0x000c, 0x000a, 0x000b, 0x8074, 0x0000, 0xf080, 0x0000, ++ 0x8072, 0x0000, 0x3000, 0x0008, 0x0d30, 0x0000, 0x2e4d, 0x0002, ++ 0x2e4d, 0x0002, 0x0a8d, 0x000b, 0x8054, 0x0008, 0x0019, 0x0000, ++ 0x000a, 0x000b, 0x8054, 0x0008, 0x0009, 0x0008, 0x000a, 0x000b, ++ 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x026b, 0x000b, 0x808c, 0x0008, ++ 0x0000, 0x0008, 0x4447, 0x0002, 0x0ab9, 0x0003, 0xc0c0, 0x0001, ++ 0x00ff, 0x0008, 0xffe0, 0x0009, 0x00ff, 0x0008, 0x0e90, 0x0003, ++ 0xc1e0, 0x0001, 0xffff, 0x0008, 0x0e90, 0x0003, 0x8010, 0x0008, ++ 0x0013, 0x0000, 0x021b, 0x000c, 0x8074, 0x0000, 0x0202, 0x0008, ++ 0x000a, 0x000b, 0x3a40, 0x000a, 0x0eb6, 0x000b, 0x8074, 0x0000, ++ 0x0200, 0x0000, 0x3d00, 0x0000, 0x3cfe, 0x0000, 0x8072, 0x0000, ++ 0x8000, 0x0000, 0x43e0, 0x0001, 0x0eb4, 0x0003, 0x42fe, 0x0000, ++ 0xffc0, 0x0001, 0x00ff, 0x0008, 0x00e0, 0x0009, 0x0a90, 0x000b, ++ 0x0d08, 0x0008, 0x0309, 0x000b, 0x8072, 0x0000, 0x8000, 0x0000, ++ 0x000a, 0x000b, 0x038d, 0x0004, 0x808c, 0x0008, 0x0001, 0x0000, ++ 0x04fe, 0x0008, 0x3370, 0x0003, 0x0460, 0x0000, 0x8062, 0x0008, ++ 0x0001, 0x0000, 0x8066, 0x0000, 0x0009, 0x0008, 0x46c3, 0x0003, ++ 0x0004, 0x0000, 0x80c0, 0x0009, 0x00ff, 0x0008, 0x7f00, 0x0000, ++ 0x80e0, 0x0001, 0x0004, 0x0000, 0x0add, 0x000b, 0x80e0, 0x0001, ++ 0x0005, 0x0008, 0x0add, 0x000b, 0x80e0, 0x0001, 0x0006, 0x0008, ++ 0x0add, 0x000b, 0x82c0, 0x0001, 0xff00, 0x0008, 0x7f04, 0x0008, ++ 0x82e0, 0x0009, 0x0600, 0x0008, 0x0add, 0x000b, 0x82e0, 0x0009, ++ 0x0500, 0x0008, 0x0add, 0x000b, 0x82e0, 0x0009, 0x0400, 0x0000, ++ 0x0f70, 0x0003, 0xc4c0, 0x0009, 0x7000, 0x0000, 0xffe0, 0x0009, ++ 0x1000, 0x0000, 0x0b09, 0x0003, 0x037e, 0x0004, 0x3941, 0x0002, ++ 0x0ae8, 0x000b, 0x8072, 0x0000, 0x0400, 0x0000, 0x000a, 0x000b, ++ 0x0460, 0x0000, 0x80fe, 0x0008, 0x002b, 0x0008, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x2209, 0x0008, 0x46ee, 0x0003, 0x11fe, 0x0000, ++ 0x3304, 0x0003, 0x9180, 0x0001, 0x0002, 0x0000, 0x8060, 0x0000, ++ 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0609, 0x0008, ++ 0x46f8, 0x000b, 0x42fe, 0x0000, 0xffc0, 0x0001, 0xff00, 0x0008, ++ 0x03e0, 0x0009, 0x0f01, 0x0003, 0x8072, 0x0000, 0x0400, 0x0000, ++ 0x0046, 0x0003, 0x9180, 0x0001, 0x0003, 0x0008, 0x02eb, 0x0003, ++ 0x8072, 0x0000, 0x0400, 0x0000, 0x8010, 0x0008, 0x0010, 0x0000, ++ 0x0361, 0x0003, 0x037e, 0x0004, 0x3941, 0x0002, 0x0b0f, 0x0003, ++ 0x8072, 0x0000, 0x0400, 0x0000, 0x000a, 0x000b, 0x0346, 0x000c, ++ 0x11fe, 0x0000, 0x3717, 0x0003, 0x8072, 0x0000, 0x0400, 0x0000, ++ 0x8010, 0x0008, 0x000e, 0x0000, 0x0361, 0x0003, 0x8060, 0x0000, ++ 0x0400, 0x0000, 0x04fe, 0x0008, 0x372c, 0x000b, 0x808c, 0x0008, ++ 0x0000, 0x0008, 0x9180, 0x0001, 0x0005, 0x0008, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x0009, 0x0008, 0x4722, 0x000b, 0x0060, 0x0008, ++ 0x8062, 0x0008, 0x001b, 0x0008, 0x4304, 0x0008, 0x4206, 0x0008, ++ 0x8066, 0x0000, 0x0412, 0x0000, 0x472a, 0x0003, 0x0343, 0x0003, ++ 0x808c, 0x0008, 0x0001, 0x0000, 0x0460, 0x0000, 0x8062, 0x0008, ++ 0x002b, 0x0008, 0x8066, 0x0000, 0x0609, 0x0008, 0x4733, 0x000b, ++ 0x8066, 0x0000, 0x220a, 0x0008, 0x4736, 0x000b, 0x42fe, 0x0000, ++ 0xffc0, 0x0001, 0xff00, 0x0008, 0x7f04, 0x0008, 0x8060, 0x0000, ++ 0x0400, 0x0000, 0x9180, 0x0001, 0x0002, 0x0000, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x041a, 0x0008, 0x4742, 0x000b, 0x8072, 0x0000, ++ 0x0400, 0x0000, 0x0046, 0x0003, 0x8060, 0x0000, 0x0400, 0x0000, ++ 0x1362, 0x0008, 0x8066, 0x0000, 0x0411, 0x0000, 0x474b, 0x000b, ++ 0x02fe, 0x0008, 0x03e0, 0x0009, 0x0f51, 0x0003, 0x0d22, 0x0000, ++ 0x4000, 0x000f, 0x8280, 0x0009, 0x0002, 0x0000, 0x1380, 0x0001, ++ 0x7f62, 0x0008, 0x8066, 0x0000, 0x2209, 0x0008, 0x4757, 0x0003, ++ 0x0200, 0x000a, 0xffc0, 0x0001, 0x0007, 0x0000, 0x7f06, 0x0000, ++ 0x1362, 0x0008, 0x8066, 0x0000, 0x060a, 0x0008, 0x475f, 0x000b, ++ 0x4000, 0x000f, 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x2f44, 0x000a, ++ 0x2f44, 0x000a, 0x0e6b, 0x000b, 0x808a, 0x0008, 0x0003, 0x0008, ++ 0x8074, 0x0000, 0xf080, 0x0000, 0x8072, 0x0000, 0x3000, 0x0008, ++ 0x5b6c, 0x0003, 0x8054, 0x0008, 0x0019, 0x0000, 0x000a, 0x000b, ++ 0x3a44, 0x0002, 0x0c0a, 0x000b, 0x808c, 0x0008, 0x0000, 0x0008, ++ 0x8010, 0x0008, 0x0011, 0x0008, 0x021b, 0x000c, 0x42fe, 0x0000, ++ 0xffc0, 0x0001, 0x00ff, 0x0008, 0x7f10, 0x0008, 0x021b, 0x000c, ++ 0x4310, 0x0008, 0x027a, 0x000b, 0x3941, 0x0002, 0x0b81, 0x0003, ++ 0x4000, 0x000f, 0x8072, 0x0000, 0x0404, 0x0008, 0x4000, 0x000f, ++ 0x8010, 0x0008, 0x0012, 0x0008, 0x021b, 0x000c, 0x0346, 0x000c, ++ 0x1110, 0x0000, 0x021b, 0x000c, 0x11fe, 0x0000, 0x3787, 0x0003, ++ 0x000a, 0x000b, 0xc2c0, 0x0009, 0x00ff, 0x0008, 0x7f00, 0x0000, ++ 0xc3c0, 0x0001, 0xff00, 0x0008, 0x00d0, 0x0009, 0x0bb2, 0x0003, ++ 0x0d0a, 0x0000, 0x8580, 0x0001, 0x1000, 0x0000, 0x7f62, 0x0008, ++ 0x8060, 0x0000, 0x0400, 0x0000, 0x8066, 0x0000, 0x0809, 0x0000, ++ 0x479c, 0x000b, 0x04fe, 0x0008, 0x33ab, 0x0003, 0x0460, 0x0000, ++ 0x8062, 0x0008, 0x0004, 0x0000, 0x8066, 0x0000, 0x0211, 0x0000, ++ 0x47a4, 0x0003, 0x01fe, 0x0008, 0x00e0, 0x0009, 0x0fab, 0x0003, ++ 0x02fe, 0x0008, 0x43e0, 0x0001, 0x0bb1, 0x0003, 0x0500, 0x0002, ++ 0x7f0a, 0x0000, 0xffe0, 0x0009, 0x0800, 0x0000, 0x0f95, 0x000b, ++ 0x0d08, 0x0008, 0x4000, 0x000f, 0x43fe, 0x0008, 0x3e80, 0x0001, ++ 0xffc0, 0x0001, 0x7fff, 0x0000, 0x0d60, 0x0000, 0x7f62, 0x0008, ++ 0x8066, 0x0000, 0x0809, 0x0000, 0x47ba, 0x0003, 0x8060, 0x0000, ++ 0x0400, 0x0000, 0x84c0, 0x0001, 0xff00, 0x0008, 0x7f60, 0x000a, ++ 0x7f60, 0x000a, 0x7f60, 0x000a, 0x7f60, 0x000a, 0x7f60, 0x000a, ++ 0x7f60, 0x000a, 0x7f60, 0x000a, 0x7f60, 0x000a, 0xff80, 0x0009, ++ 0x1000, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0809, 0x0000, ++ 0x47cc, 0x000b, 0x4000, 0x000f, 0x5ff4, 0xebed, 0x0001, 0x0002, ++ 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, ++ 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x2c40 ++}; ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2300ipx_length01 = 0xe9c7; ++#else ++unsigned short risc_code_length01 = 0xe9c7; ++#endif ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2322flx_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2322flx_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2322flx_fw.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2322flx_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,7401 @@ ++/************************************************************************ ++ * * ++ * --- ISP2322 Initiator/Target Firmware --- * ++ * with Fabric (Public Loop), Point-point, * ++ * expanded LUN addressing for FCTAPE, and 2K port logins * ++ * FibreLite enabled * ++ * * ++ ********************************************************************** */ ++/* ++ * Firmware Version 3.02.28 (14:05 Apr 03, 2004) ++ */ ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322flx_version = 3*1024+2; ++#else ++unsigned short risc_code_version = 3*1024+2; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned char fw2322flx_version_str[] = {3, 2,28}; ++#else ++unsigned char firmware_version[] = {3, 2,28}; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++#define fw2322flx_VERSION_STRING "3.02.28" ++#else ++#define FW_VERSION_STRING "3.02.28" ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322flx_addr01 = 0x0800 ; ++#else ++unsigned short risc_code_addr01 = 0x0800 ; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322flx_code01[] = { ++#else ++unsigned short risc_code01[] = { ++#endif ++ 0x0470, 0x0000, 0x0000, 0xce3b, 0x0000, 0x0003, 0x0002, 0x001c, ++ 0x0317, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, ++ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, ++ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972, ++ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, ++ 0x332e, 0x3032, 0x2e32, 0x3820, 0x2020, 0x2020, 0x2400, 0x20a9, ++ 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f, ++ 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001, ++ 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000, ++ 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, ++ 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, ++ 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00, ++ 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001, ++ 0x0000, 0x20c1, 0x0004, 0x20c9, 0x1cff, 0x2059, 0x0000, 0x2b78, ++ 0x7883, 0x0004, 0x2089, 0x28de, 0x2051, 0x1800, 0x2a70, 0x20e1, ++ 0x0001, 0x20e9, 0x0001, 0x2009, 0x0000, 0x080c, 0x0e3d, 0x00f6, ++ 0x7888, 0x9005, 0x11f8, 0x2061, 0xc000, 0x080c, 0x1efc, 0x1170, ++ 0x2079, 0x0300, 0x080c, 0x1f12, 0x2061, 0xe000, 0x080c, 0x1efc, ++ 0x1128, 0x2079, 0x0380, 0x080c, 0x1f12, 0x0060, 0x00fe, 0x7883, ++ 0x4010, 0x7837, 0x4010, 0x7833, 0x0010, 0x2091, 0x5000, 0x2091, ++ 0x4080, 0x0cf8, 0x00fe, 0x2029, 0x26c0, 0x2031, 0xffff, 0x2039, ++ 0x269c, 0x2021, 0x0050, 0x20e9, 0x0001, 0x20a1, 0x0000, 0x20a9, ++ 0x0800, 0x900e, 0x4104, 0x20e9, 0x0001, 0x20a1, 0x1000, 0x900e, ++ 0x2001, 0x0dc1, 0x9084, 0x0fff, 0x20a8, 0x4104, 0x2001, 0x0000, ++ 0x9086, 0x0000, 0x0120, 0x21a8, 0x4104, 0x8001, 0x1de0, 0x756a, ++ 0x766e, 0x7766, 0x7472, 0x7476, 0x00e6, 0x2071, 0x1b1e, 0x2472, ++ 0x00ee, 0x20a1, 0x1ddc, 0x716c, 0x810d, 0x810d, 0x810d, 0x810d, ++ 0x918c, 0x000f, 0x2001, 0x0001, 0x9112, 0x900e, 0x21a8, 0x4104, ++ 0x8211, 0x1de0, 0x716c, 0x3400, 0x8001, 0x9102, 0x0120, 0x0218, ++ 0x20a8, 0x900e, 0x4104, 0x2009, 0x1800, 0x810d, 0x810d, 0x810d, ++ 0x810d, 0x810d, 0x918c, 0x001f, 0x2001, 0x0001, 0x9112, 0x20e9, ++ 0x0001, 0x20a1, 0x0800, 0x900e, 0x20a9, 0x0800, 0x4104, 0x8211, ++ 0x1dd8, 0x080c, 0x0f3a, 0x080c, 0x5cea, 0x080c, 0x9b7d, 0x080c, ++ 0x10f1, 0x080c, 0x12d6, 0x080c, 0x1a5a, 0x080c, 0x8440, 0x080c, ++ 0x0cf7, 0x080c, 0x1076, 0x080c, 0x328b, 0x080c, 0x73cb, 0x080c, ++ 0x6722, 0x080c, 0x808a, 0x080c, 0x20dd, 0x080c, 0x7a5f, 0x080c, ++ 0x1f2b, 0x080c, 0x2065, 0x080c, 0x20d2, 0x2091, 0x3009, 0x7883, ++ 0x0000, 0x1004, 0x0941, 0x7880, 0x9086, 0x0002, 0x1190, 0x7883, ++ 0x4000, 0x7837, 0x4000, 0x7833, 0x0010, 0x0e04, 0x0935, 0x2091, ++ 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x11be, 0x2071, 0x1800, 0x7003, 0x0000, 0x2071, 0x1800, 0x7000, ++ 0x908e, 0x0003, 0x1158, 0x080c, 0x499d, 0x080c, 0x32b2, 0x080c, ++ 0x7433, 0x080c, 0x6bca, 0x080c, 0x80b3, 0x0c78, 0x000b, 0x0c98, ++ 0x0962, 0x0963, 0x0afa, 0x0960, 0x0bab, 0x0cf6, 0x0cf6, 0x0cf6, ++ 0x080c, 0x0d65, 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, ++ 0x9086, 0x0001, 0x1904, 0x0acd, 0x080c, 0x0e8d, 0x080c, 0x70b7, ++ 0x0150, 0x080c, 0x70da, 0x15b0, 0x2079, 0x0100, 0x7828, 0x9085, ++ 0x1800, 0x782a, 0x0478, 0x080c, 0x6fe8, 0x7000, 0x9086, 0x0001, ++ 0x1904, 0x0acd, 0x7094, 0x9086, 0x0028, 0x1904, 0x0acd, 0x080c, ++ 0x8082, 0x080c, 0x8074, 0x2001, 0x0161, 0x2003, 0x0001, 0x2079, ++ 0x0100, 0x2011, 0xffff, 0x080c, 0x286d, 0x7a28, 0x9295, 0x5e2c, ++ 0x7a2a, 0x2011, 0x6f2d, 0x080c, 0x8159, 0x2011, 0x6f20, 0x080c, ++ 0x825f, 0x2011, 0x5b41, 0x080c, 0x8159, 0x2011, 0x8030, 0x901e, ++ 0x7392, 0x04d0, 0x080c, 0x53ee, 0x2079, 0x0100, 0x7844, 0x9005, ++ 0x1904, 0x0acd, 0x2011, 0x5b41, 0x080c, 0x8159, 0x2011, 0x6f2d, ++ 0x080c, 0x8159, 0x2011, 0x6f20, 0x080c, 0x825f, 0x2001, 0x0265, ++ 0x2001, 0x0205, 0x2003, 0x0000, 0x7840, 0x9084, 0xfffb, 0x7842, ++ 0x2001, 0x1977, 0x2004, 0x9005, 0x1140, 0x00c6, 0x2061, 0x0100, ++ 0x080c, 0x5c92, 0x00ce, 0x0804, 0x0acd, 0x780f, 0x006b, 0x7a28, ++ 0x080c, 0x70bf, 0x0118, 0x9295, 0x5e2c, 0x0010, 0x9295, 0x402c, ++ 0x7a2a, 0x2011, 0x8010, 0x73d4, 0x2001, 0x1978, 0x2003, 0x0001, ++ 0x080c, 0x273f, 0x080c, 0x48d8, 0x7244, 0xc284, 0x7246, 0x2001, ++ 0x180c, 0x200c, 0xc1ac, 0xc1cc, 0x2102, 0x2001, 0x0390, 0x2003, ++ 0x0400, 0x080c, 0x98c8, 0x080c, 0x91e1, 0x2011, 0x0004, 0x080c, ++ 0xb857, 0x080c, 0x98e4, 0x080c, 0x6562, 0x080c, 0x70b7, 0x1120, ++ 0x080c, 0x279a, 0x0600, 0x0420, 0x080c, 0x5c99, 0x0140, 0x7093, ++ 0x0001, 0x70cf, 0x0000, 0x080c, 0x55bb, 0x0804, 0x0acd, 0x080c, ++ 0x538d, 0xd094, 0x01a8, 0x2001, 0x0390, 0x2003, 0x0404, 0x2011, ++ 0x180c, 0x2204, 0xc0cd, 0x2012, 0x080c, 0x5391, 0xd0d4, 0x1118, ++ 0x080c, 0x279a, 0x1270, 0x2011, 0x180c, 0x2204, 0xc0bc, 0x0088, ++ 0x080c, 0x5391, 0xd0d4, 0x1db8, 0x2011, 0x180c, 0x2204, 0xc0bd, ++ 0x0040, 0x2011, 0x180c, 0x2204, 0xc0bd, 0x2012, 0x080c, 0x665f, ++ 0x0008, 0x2012, 0x080c, 0x6625, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, ++ 0x00a8, 0x707b, 0x0000, 0x080c, 0x70b7, 0x1130, 0x70ac, 0x9005, ++ 0x1168, 0x080c, 0xbcae, 0x0050, 0x080c, 0xbcae, 0x70d8, 0xd09c, ++ 0x1128, 0x70ac, 0x9005, 0x0110, 0x080c, 0x5c6f, 0x70e3, 0x0000, ++ 0x70df, 0x0000, 0x70a3, 0x0000, 0x080c, 0x27a2, 0x0228, 0x2011, ++ 0x0101, 0x2204, 0xc0c4, 0x2012, 0x72d8, 0x080c, 0x70b7, 0x1178, ++ 0x9016, 0x0016, 0x2009, 0x0002, 0x2019, 0x193e, 0x211a, 0x001e, ++ 0x705b, 0xffff, 0x705f, 0x00ef, 0x707f, 0x0000, 0x0020, 0x2019, ++ 0x193e, 0x201b, 0x0000, 0x2079, 0x1853, 0x7804, 0xd0ac, 0x0108, ++ 0xc295, 0x72da, 0x080c, 0x70b7, 0x0118, 0x9296, 0x0004, 0x0518, ++ 0x2011, 0x0001, 0x080c, 0xb857, 0x70a7, 0x0000, 0x70ab, 0xffff, ++ 0x7003, 0x0002, 0x00fe, 0x080c, 0x2ddb, 0x080c, 0x98c8, 0x2011, ++ 0x0005, 0x080c, 0x9339, 0x080c, 0x98e4, 0x080c, 0x70b7, 0x0148, ++ 0x00c6, 0x2061, 0x0100, 0x0016, 0x2009, 0x0002, 0x61e2, 0x001e, ++ 0x00ce, 0x012e, 0x00e0, 0x70a7, 0x0000, 0x70ab, 0xffff, 0x7003, ++ 0x0002, 0x080c, 0x98c8, 0x2011, 0x0005, 0x080c, 0x9339, 0x080c, ++ 0x98e4, 0x080c, 0x70b7, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, ++ 0x2009, 0x0002, 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, ++ 0x00c6, 0x00b6, 0x080c, 0x70b7, 0x1118, 0x20a9, 0x0800, 0x0010, ++ 0x20a9, 0x0782, 0x080c, 0x70b7, 0x1110, 0x900e, 0x0010, 0x2009, ++ 0x007e, 0x86ff, 0x0138, 0x9180, 0x1000, 0x2004, 0x905d, 0x0110, ++ 0xb800, 0xd0bc, 0x090c, 0x311a, 0x8108, 0x1f04, 0x0ae1, 0x707b, ++ 0x0000, 0x707c, 0x9084, 0x00ff, 0x707e, 0x70af, 0x0000, 0x00be, ++ 0x00ce, 0x0005, 0x00b6, 0x0126, 0x2091, 0x8000, 0x7000, 0x9086, ++ 0x0002, 0x1904, 0x0ba8, 0x70a8, 0x9086, 0xffff, 0x0120, 0x080c, ++ 0x2ddb, 0x0804, 0x0ba8, 0x70d8, 0xd0ac, 0x1110, 0xd09c, 0x0520, ++ 0xd084, 0x0510, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, ++ 0xd08c, 0x01d0, 0x70dc, 0x9086, 0xffff, 0x0190, 0x080c, 0x2f66, ++ 0x70d8, 0xd094, 0x1904, 0x0ba8, 0x2011, 0x0001, 0x080c, 0xbf61, ++ 0x0110, 0x2011, 0x0003, 0x901e, 0x080c, 0x2fa0, 0x0804, 0x0ba8, ++ 0x70e0, 0x9005, 0x1904, 0x0ba8, 0x70a4, 0x9005, 0x1904, 0x0ba8, ++ 0x70d8, 0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x0ba8, 0x080c, 0x6625, ++ 0x1904, 0x0ba8, 0x080c, 0x6678, 0x1904, 0x0ba8, 0x080c, 0x665f, ++ 0x01c0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, ++ 0x6270, 0x1118, 0xb800, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, ++ 0x0b4e, 0x00ce, 0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, ++ 0x0ba8, 0x0006, 0x2001, 0x0103, 0x2003, 0x006b, 0x000e, 0x2011, ++ 0x1984, 0x080c, 0x0faa, 0x2011, 0x199e, 0x080c, 0x0faa, 0x7030, ++ 0xc08c, 0x7032, 0x7003, 0x0003, 0x70ab, 0xffff, 0x080c, 0x0e61, ++ 0x9006, 0x080c, 0x23c9, 0x0036, 0x0046, 0x2019, 0xffff, 0x2021, ++ 0x0006, 0x080c, 0x4a75, 0x004e, 0x003e, 0x00f6, 0x2079, 0x0100, ++ 0x080c, 0x70da, 0x0150, 0x080c, 0x70b7, 0x7828, 0x0118, 0x9084, ++ 0xe1ff, 0x0010, 0x9084, 0xffdf, 0x782a, 0x00fe, 0x080c, 0x98c8, ++ 0x2001, 0x19b9, 0x2004, 0x9086, 0x0005, 0x1120, 0x2011, 0x0000, ++ 0x080c, 0x9339, 0x2011, 0x0000, 0x080c, 0x9343, 0x080c, 0x98e4, ++ 0x012e, 0x00be, 0x0005, 0x0016, 0x0026, 0x0046, 0x00f6, 0x0126, ++ 0x2091, 0x8000, 0x2079, 0x0100, 0x7904, 0x918c, 0xfffd, 0x7906, ++ 0x2009, 0x00f7, 0x080c, 0x5c58, 0x7940, 0x918c, 0x0010, 0x7942, ++ 0x7924, 0xd1b4, 0x0120, 0x2011, 0x0040, 0x080c, 0x286d, 0xd19c, ++ 0x0120, 0x2011, 0x0008, 0x080c, 0x286d, 0x0006, 0x0036, 0x0156, ++ 0x0000, 0x2001, 0x1978, 0x2004, 0x9005, 0x1518, 0x080c, 0x2801, ++ 0x1148, 0x2001, 0x0001, 0x080c, 0x276e, 0x2001, 0x0001, 0x080c, ++ 0x2751, 0x00b8, 0x080c, 0x2809, 0x1138, 0x9006, 0x080c, 0x276e, ++ 0x9006, 0x080c, 0x2751, 0x0068, 0x080c, 0x2811, 0x1d50, 0x2001, ++ 0x1969, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, 0x2568, 0x0804, ++ 0x0ca9, 0x080c, 0x2890, 0x080c, 0x28d4, 0x20a9, 0x003a, 0x1d04, ++ 0x0bff, 0x080c, 0x823f, 0x1f04, 0x0bff, 0x080c, 0x70c8, 0x0148, ++ 0x080c, 0x70da, 0x1118, 0x080c, 0x73c6, 0x0050, 0x080c, 0x70bf, ++ 0x0dd0, 0x080c, 0x73c1, 0x080c, 0x73b7, 0x080c, 0x6fe8, 0x0020, ++ 0x2009, 0x00f8, 0x080c, 0x5c58, 0x7850, 0xc0e5, 0x7852, 0x080c, ++ 0x70b7, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, ++ 0x2019, 0xea60, 0x0d0c, 0x823f, 0x7820, 0xd09c, 0x15a0, 0x080c, ++ 0x70b7, 0x0904, 0x0c8b, 0x7824, 0xd0ac, 0x1904, 0x0cae, 0x080c, ++ 0x70da, 0x1548, 0x0046, 0x2021, 0x0320, 0x8421, 0x1df0, 0x004e, ++ 0x2011, 0x1800, 0x080c, 0x286d, 0x080c, 0x2819, 0x7824, 0x9084, ++ 0x1800, 0x1168, 0x9484, 0x0fff, 0x1140, 0x2001, 0x1810, 0x2004, ++ 0x9084, 0x9000, 0x0110, 0x080c, 0x0cd1, 0x8421, 0x1160, 0x1d04, ++ 0x0c5b, 0x080c, 0x823f, 0x080c, 0x73c1, 0x080c, 0x73b7, 0x7003, ++ 0x0001, 0x0804, 0x0cae, 0x8319, 0x1928, 0x2001, 0x1810, 0x2004, ++ 0x9084, 0x9000, 0x0110, 0x080c, 0x0cd1, 0x1d04, 0x0c71, 0x080c, ++ 0x823f, 0x2009, 0x196c, 0x2104, 0x9005, 0x0118, 0x8001, 0x200a, ++ 0x1188, 0x200b, 0x000a, 0x2011, 0x0048, 0x080c, 0x286d, 0x20a9, ++ 0x0002, 0x080c, 0x27fa, 0x7924, 0x080c, 0x2819, 0xd19c, 0x0110, ++ 0x080c, 0x273f, 0x00f0, 0x080c, 0x70c8, 0x1140, 0x94a2, 0x03e8, ++ 0x1128, 0x080c, 0x708b, 0x7003, 0x0001, 0x00c0, 0x2011, 0x1800, ++ 0x080c, 0x286d, 0x080c, 0x2819, 0x7824, 0x080c, 0x70d1, 0x0110, ++ 0xd0ac, 0x1160, 0x9084, 0x1800, 0x0904, 0x0c63, 0x7003, 0x0001, ++ 0x0028, 0x2001, 0x0001, 0x080c, 0x23c9, 0x00a0, 0x7850, 0xc0e4, ++ 0x7852, 0x2009, 0x180c, 0x210c, 0xd19c, 0x1120, 0x7904, 0x918d, ++ 0x0002, 0x7906, 0x2011, 0x0048, 0x080c, 0x286d, 0x7828, 0x9085, ++ 0x0028, 0x782a, 0x2001, 0x1978, 0x2003, 0x0000, 0x9006, 0x78f2, ++ 0x015e, 0x003e, 0x000e, 0x012e, 0x00fe, 0x004e, 0x002e, 0x001e, ++ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0071, 0x0d0c, 0x823f, 0x015e, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x004e, 0x003e, 0x002e, ++ 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0x1894, 0x7004, 0x9086, ++ 0x0001, 0x1110, 0x080c, 0x32b2, 0x00ee, 0x0005, 0x0005, 0x2a70, ++ 0x2061, 0x197c, 0x2063, 0x0003, 0x6007, 0x0002, 0x600b, 0x001c, ++ 0x600f, 0x0317, 0x2001, 0x194d, 0x900e, 0x2102, 0x7192, 0x2001, ++ 0x0100, 0x2004, 0x9082, 0x0002, 0x0218, 0x705b, 0xffff, 0x0008, ++ 0x715a, 0x7063, 0xffff, 0x717a, 0x717e, 0x080c, 0xbcae, 0x70eb, ++ 0x00c0, 0x2061, 0x193d, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, ++ 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x000f, 0x611a, 0x601f, ++ 0x07d0, 0x2061, 0x1945, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, ++ 0x0200, 0x6013, 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, ++ 0x195a, 0x6003, 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, ++ 0x2020, 0x2001, 0x182b, 0x2102, 0x0005, 0x9016, 0x080c, 0x6270, ++ 0x1178, 0xb804, 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, ++ 0xff00, 0x98c6, 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, ++ 0x8108, 0x9186, 0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, ++ 0x2079, 0x0000, 0x000e, 0x00f6, 0x0010, 0x2091, 0x8000, 0x0e04, ++ 0x0d67, 0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, ++ 0x000e, 0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, ++ 0x7886, 0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, ++ 0x00d6, 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1af4, 0x7a08, ++ 0x226a, 0x2069, 0x1af5, 0x7a18, 0x226a, 0x8d68, 0x7a1c, 0x226a, ++ 0x782c, 0x2019, 0x1b02, 0x201a, 0x2019, 0x1b05, 0x9016, 0x7808, ++ 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210, 0x8318, 0x9386, 0x1b1e, ++ 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110, 0x2011, 0xdead, 0x2019, ++ 0x1b03, 0x782c, 0x201a, 0x8318, 0x221a, 0x7803, 0x0000, 0x2069, ++ 0x1a4a, 0x901e, 0x20a9, 0x0020, 0x7b26, 0x7a28, 0x226a, 0x8d68, ++ 0x8318, 0x1f04, 0x0db4, 0x0491, 0x002e, 0x003e, 0x00de, 0x015e, ++ 0x2079, 0x1800, 0x7803, 0x0005, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x0180, 0x2001, 0x19f3, 0x2004, 0x9005, 0x0128, ++ 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, ++ 0x0002, 0x2003, 0x1001, 0x080c, 0x539c, 0x1170, 0x080c, 0x0efb, ++ 0x0110, 0x080c, 0x0e4e, 0x080c, 0x539c, 0x1130, 0x2071, 0x1800, ++ 0x2011, 0x8000, 0x080c, 0x0f0f, 0x0c70, 0x0005, 0x2001, 0x0382, ++ 0x2004, 0x9084, 0x0007, 0x9086, 0x0001, 0x1120, 0x2001, 0x0015, ++ 0x080c, 0x98b9, 0x2079, 0x0380, 0x2069, 0x1ad4, 0x7818, 0x6802, ++ 0x781c, 0x6806, 0x7840, 0x680a, 0x7844, 0x680e, 0x782c, 0x6812, ++ 0x2019, 0x1adf, 0x9016, 0x7808, 0xd09c, 0x0150, 0x7820, 0x201a, ++ 0x8210, 0x8318, 0x8210, 0x9282, 0x0011, 0x0ea8, 0x2011, 0xdead, ++ 0x6a2a, 0x7830, 0x681a, 0x7834, 0x681e, 0x7838, 0x6822, 0x783c, ++ 0x6826, 0x7803, 0x0000, 0x2069, 0x1a94, 0x901e, 0x20a9, 0x0020, ++ 0x7b26, 0x7828, 0x206a, 0x8d68, 0x8318, 0x1f04, 0x0e28, 0x2069, ++ 0x1ab4, 0x2019, 0x00b0, 0x20a9, 0x0020, 0x7b26, 0x7828, 0x206a, ++ 0x8d68, 0x8318, 0x1f04, 0x0e35, 0x0005, 0x918c, 0x03ff, 0x2001, ++ 0x0003, 0x2004, 0x9084, 0x0600, 0x1118, 0x918d, 0x6c00, 0x0010, ++ 0x918d, 0x6400, 0x2001, 0x017f, 0x2102, 0x0005, 0x0026, 0x0126, ++ 0x2011, 0x0080, 0x080c, 0x0eed, 0x20a9, 0x0900, 0x080c, 0x0f23, ++ 0x2011, 0x0040, 0x080c, 0x0eed, 0x20a9, 0x0900, 0x080c, 0x0f23, ++ 0x0c78, 0x0026, 0x080c, 0x0efb, 0x1188, 0x2011, 0x010e, 0x2214, ++ 0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0x0947, 0x0010, ++ 0x2011, 0x1b47, 0x080c, 0x0f0f, 0x002e, 0x0005, 0x2011, 0x010e, ++ 0x2214, 0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0xa880, ++ 0x0010, 0x2011, 0x6840, 0xd0e4, 0x70ef, 0x0000, 0x1128, 0x70ef, ++ 0x0fa0, 0x080c, 0x0f00, 0x002e, 0x0005, 0x0026, 0x080c, 0x0efb, ++ 0x0148, 0xd0a4, 0x1138, 0x2011, 0xcdd5, 0x0010, 0x2011, 0x0080, ++ 0x080c, 0x0f00, 0x002e, 0x0005, 0x0026, 0x70ef, 0x0000, 0x080c, ++ 0x0efb, 0x1130, 0x2011, 0x8040, 0x080c, 0x0f0f, 0x002e, 0x0005, ++ 0x080c, 0x2811, 0x1118, 0x2011, 0xcdc5, 0x0010, 0x2011, 0xcac2, ++ 0x080c, 0x0f00, 0x002e, 0x0005, 0x00e6, 0x0016, 0x0006, 0x2071, ++ 0x1800, 0xd0b4, 0x70e8, 0x71e4, 0x1118, 0xc0e4, 0xc1f4, 0x0050, ++ 0x0006, 0x3b00, 0x9084, 0xff3e, 0x20d8, 0x000e, 0x70ef, 0x0000, ++ 0xc0e5, 0xc1f5, 0x0099, 0x000e, 0x001e, 0x00ee, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0xd0e4, 0x70e8, 0x1110, 0xc0dc, 0x0008, 0xc0dd, ++ 0x0016, 0x71e4, 0x0019, 0x001e, 0x00ee, 0x0005, 0x70ea, 0x71e6, ++ 0x7000, 0x9084, 0x0007, 0x000b, 0x0005, 0x0eb3, 0x0e8d, 0x0e8d, ++ 0x0e61, 0x0e9c, 0x0e8d, 0x0e8d, 0x0e9c, 0xc284, 0x0016, 0x3b08, ++ 0x3a00, 0x9104, 0x918d, 0x00c1, 0x21d8, 0x9084, 0xff3e, 0x9205, ++ 0x20d0, 0x001e, 0x0005, 0x2001, 0x183a, 0x2004, 0xd0dc, 0x0005, ++ 0x9e86, 0x1800, 0x190c, 0x0d65, 0x70e8, 0xd0e4, 0x0108, 0xc2e5, ++ 0x72ea, 0xd0e4, 0x1118, 0x9294, 0x00c1, 0x08f9, 0x0005, 0x9e86, ++ 0x1800, 0x190c, 0x0d65, 0x70e4, 0xd0f4, 0x0108, 0xc2f5, 0x72e6, ++ 0xd0f4, 0x1140, 0x9284, 0x8000, 0x8005, 0xc284, 0x9215, 0x9294, ++ 0x00c1, 0x0861, 0x0005, 0x1d04, 0x0f23, 0x2091, 0x6000, 0x1f04, ++ 0x0f23, 0x0005, 0x890e, 0x810e, 0x810f, 0x9194, 0x003f, 0x918c, ++ 0xffc0, 0x0005, 0x0006, 0x2200, 0x914d, 0x894f, 0x894d, 0x894d, ++ 0x000e, 0x0005, 0x01d6, 0x0146, 0x0036, 0x0096, 0x2061, 0x1883, ++ 0x600b, 0x0000, 0x600f, 0x0000, 0x6003, 0x0000, 0x6007, 0x0000, ++ 0x2009, 0xffc0, 0x2105, 0x0006, 0x2001, 0xaaaa, 0x200f, 0x2019, ++ 0x5555, 0x9016, 0x2049, 0x0bff, 0xab02, 0xa001, 0xa001, 0xa800, ++ 0x9306, 0x1138, 0x2105, 0x9306, 0x0120, 0x8210, 0x99c8, 0x0400, ++ 0x0c98, 0x000e, 0x200f, 0x2001, 0x1893, 0x928a, 0x000e, 0x1638, ++ 0x928a, 0x0006, 0x2011, 0x0006, 0x1210, 0x2011, 0x0000, 0x2202, ++ 0x9006, 0x2008, 0x82ff, 0x01b0, 0x8200, 0x600a, 0x600f, 0xffff, ++ 0x6003, 0x0002, 0x6007, 0x0000, 0x0026, 0x2019, 0x0010, 0x9280, ++ 0x0001, 0x20e8, 0x21a0, 0x21a8, 0x4104, 0x8319, 0x1de0, 0x8211, ++ 0x1da0, 0x002e, 0x009e, 0x003e, 0x014e, 0x01de, 0x0005, 0x2011, ++ 0x000e, 0x08e8, 0x0016, 0x0026, 0x0096, 0x3348, 0x080c, 0x0f2a, ++ 0x2100, 0x9300, 0x2098, 0x22e0, 0x009e, 0x002e, 0x001e, 0x0036, ++ 0x3518, 0x20a9, 0x0001, 0x4002, 0x8007, 0x4004, 0x8319, 0x1dd8, ++ 0x003e, 0x0005, 0x20e9, 0x0001, 0x71b4, 0x81ff, 0x11c0, 0x9006, ++ 0x2009, 0x0200, 0x20a9, 0x0002, 0x9298, 0x0018, 0x23a0, 0x4001, ++ 0x2009, 0x0700, 0x20a9, 0x0002, 0x9298, 0x0008, 0x23a0, 0x4001, ++ 0x7078, 0x8007, 0x717c, 0x810f, 0x20a9, 0x0002, 0x4001, 0x9298, ++ 0x000c, 0x23a0, 0x900e, 0x080c, 0x0d45, 0x2001, 0x0000, 0x810f, ++ 0x20a9, 0x0002, 0x4001, 0x0005, 0x89ff, 0x0140, 0xa804, 0xa807, ++ 0x0000, 0x0006, 0x080c, 0x1054, 0x009e, 0x0cb0, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x10cd, 0x090c, 0x0d65, 0x00ee, 0x0005, ++ 0x0086, 0x00e6, 0x0006, 0x0026, 0x0036, 0x0126, 0x2091, 0x8000, ++ 0x00c9, 0x2071, 0x1800, 0x73bc, 0x702c, 0x9016, 0x9045, 0x0158, ++ 0x8210, 0x9906, 0x090c, 0x0d65, 0x2300, 0x9202, 0x0120, 0x1a0c, ++ 0x0d65, 0xa000, 0x0c98, 0x012e, 0x003e, 0x002e, 0x000e, 0x00ee, ++ 0x008e, 0x0005, 0x0086, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x1906, 0x7010, 0x9005, 0x0140, 0x7018, 0x9045, 0x0128, ++ 0x9906, 0x090c, 0x0d65, 0xa000, 0x0cc8, 0x012e, 0x000e, 0x00ee, ++ 0x008e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x0126, 0x2091, 0x8000, ++ 0x70bc, 0x8001, 0x0270, 0x70be, 0x702c, 0x2048, 0x9085, 0x0001, ++ 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, ++ 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x1800, 0x70bc, 0x90ca, 0x0040, 0x0268, 0x8001, 0x70be, 0x702c, ++ 0x2048, 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, ++ 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x0016, 0x890e, 0x810e, 0x810f, 0x9184, 0x003f, 0xa862, 0x9184, ++ 0xffc0, 0xa85e, 0x001e, 0x0020, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, ++ 0x70be, 0x080c, 0x8074, 0x012e, 0x00ee, 0x0005, 0x2071, 0x1800, ++ 0x9026, 0x2009, 0x0000, 0x2049, 0x0400, 0x2900, 0x702e, 0x8940, ++ 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, 0x0440, ++ 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, 0x1883, 0x7000, ++ 0x9005, 0x11a0, 0x2001, 0x049b, 0xa802, 0x2048, 0x2009, 0x26c0, ++ 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, ++ 0x0800, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, 0x1883, ++ 0x7104, 0x7200, 0x82ff, 0x01d0, 0x7308, 0x8318, 0x831f, 0x831b, ++ 0x831b, 0x7312, 0x8319, 0x2001, 0x0800, 0xa802, 0x2048, 0x8900, ++ 0xa802, 0x2040, 0xa95e, 0xaa62, 0x8420, 0x2300, 0x9906, 0x0130, ++ 0x2848, 0x9188, 0x0040, 0x9291, 0x0000, 0x0c88, 0xa803, 0x0000, ++ 0x2071, 0x1800, 0x74ba, 0x74be, 0x0005, 0x00e6, 0x0016, 0x9984, ++ 0xfc00, 0x01e8, 0x908c, 0xf800, 0x1168, 0x9982, 0x0400, 0x02b8, ++ 0x9982, 0x0440, 0x0278, 0x9982, 0x049b, 0x0288, 0x9982, 0x0800, ++ 0x1270, 0x0040, 0x9982, 0x0800, 0x0250, 0x2071, 0x1883, 0x7010, ++ 0x9902, 0x1228, 0x9085, 0x0001, 0x001e, 0x00ee, 0x0005, 0x9006, ++ 0x0cd8, 0x00e6, 0x2071, 0x19f2, 0x7007, 0x0000, 0x9006, 0x701e, ++ 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085, 0x8044, 0x7012, ++ 0x2071, 0x0080, 0x9006, 0x20a9, 0x0040, 0x7022, 0x1f04, 0x1105, ++ 0x702b, 0x0020, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, ++ 0xa06f, 0x0000, 0x2071, 0x19f2, 0x701c, 0x9088, 0x19fc, 0x280a, ++ 0x8000, 0x9084, 0x003f, 0x701e, 0x7120, 0x9106, 0x090c, 0x0d65, ++ 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x00a9, 0x00fe, ++ 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0x2071, ++ 0x19f2, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x0021, ++ 0x00fe, 0x00ee, 0x012e, 0x0005, 0x7004, 0x9086, 0x0000, 0x1110, ++ 0x7007, 0x0006, 0x7000, 0x0002, 0x114e, 0x114c, 0x114c, 0x114c, ++ 0x12c5, 0x12c5, 0x12c5, 0x12c5, 0x080c, 0x0d65, 0x701c, 0x7120, ++ 0x9106, 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110, ++ 0x7007, 0x0000, 0x0005, 0x0096, 0x9180, 0x19fc, 0x2004, 0x700a, ++ 0x2048, 0x8108, 0x918c, 0x003f, 0x7122, 0x782b, 0x0026, 0xa88c, ++ 0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, 0xa878, ++ 0x700e, 0xa870, 0x7016, 0xa874, 0x701a, 0xa868, 0x009e, 0xd084, ++ 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1, ++ 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040, ++ 0x1210, 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, 0x782b, ++ 0x0020, 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, ++ 0x0136, 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9, ++ 0x0000, 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, 0x0040, ++ 0x9182, 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006, ++ 0x8203, 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, 0x0001, ++ 0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, 0x19f2, ++ 0x2104, 0xc095, 0x200a, 0x080c, 0x112b, 0x0005, 0x0016, 0x00e6, ++ 0x2071, 0x19f2, 0x00f6, 0x2079, 0x0080, 0x792c, 0xd1bc, 0x190c, ++ 0x0d5e, 0x782b, 0x0002, 0xd1fc, 0x0120, 0x918c, 0x0700, 0x7004, ++ 0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x113c, 0x11e4, 0x1218, ++ 0x0d65, 0x0d65, 0x12d1, 0x0d65, 0x918c, 0x0700, 0x1550, 0x0136, ++ 0x0146, 0x0156, 0x7014, 0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, ++ 0x2099, 0x0088, 0x782b, 0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, ++ 0x701a, 0x015e, 0x014e, 0x013e, 0x700c, 0x9005, 0x0578, 0x7800, ++ 0x7802, 0x7804, 0x7806, 0x080c, 0x1181, 0x0005, 0x7008, 0x0096, ++ 0x2048, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x080c, 0x113c, ++ 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e, 0x0ca0, ++ 0x918c, 0x0700, 0x1150, 0x700c, 0x9005, 0x0180, 0x7800, 0x7802, ++ 0x7804, 0x7806, 0x080c, 0x1196, 0x0005, 0x7008, 0x0096, 0x2048, ++ 0xa86f, 0x0200, 0x009e, 0x7007, 0x0000, 0x0080, 0x0096, 0x7008, ++ 0x2048, 0x7800, 0xa88e, 0x7804, 0xa892, 0x7808, 0xa896, 0x780c, ++ 0xa89a, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x0096, 0x00d6, ++ 0x7008, 0x2048, 0x2001, 0x18af, 0x2004, 0x9906, 0x1128, 0xa89c, ++ 0x080f, 0x00de, 0x009e, 0x00a0, 0x00de, 0x009e, 0x0096, 0x00d6, ++ 0x7008, 0x2048, 0x0081, 0x0150, 0xa89c, 0x0086, 0x2940, 0x080f, ++ 0x008e, 0x00de, 0x009e, 0x080c, 0x112b, 0x0005, 0x00de, 0x009e, ++ 0x080c, 0x112b, 0x0005, 0xa8a8, 0xd08c, 0x0005, 0x0096, 0xa0a0, ++ 0x904d, 0x090c, 0x0d65, 0xa06c, 0x908e, 0x0100, 0x0130, 0xa87b, ++ 0x0030, 0xa883, 0x0000, 0xa897, 0x4002, 0x080c, 0x698a, 0xa09f, ++ 0x0000, 0xa0a3, 0x0000, 0x2848, 0x080c, 0x1054, 0x009e, 0x0005, ++ 0x00a6, 0xa0a0, 0x904d, 0x090c, 0x0d65, 0xa06c, 0x908e, 0x0100, ++ 0x0128, 0xa87b, 0x0001, 0xa883, 0x0000, 0x00c0, 0xa80c, 0x2050, ++ 0xb004, 0x9005, 0x0198, 0xa80e, 0x2050, 0x8006, 0x8006, 0x8007, ++ 0x908c, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xa076, 0xa172, ++ 0xb000, 0xa07a, 0x2810, 0x080c, 0x110c, 0x00e8, 0xa97c, 0xa894, ++ 0x0016, 0x0006, 0x080c, 0x698a, 0x000e, 0x001e, 0xd1fc, 0x1138, ++ 0xd1f4, 0x0128, 0x00c6, 0x2060, 0x080c, 0x9be7, 0x00ce, 0x7008, ++ 0x2048, 0xa89f, 0x0000, 0xa8a3, 0x0000, 0x080c, 0x1054, 0x7007, ++ 0x0000, 0x080c, 0x112b, 0x00ae, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x782b, 0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x012e, ++ 0x0005, 0x7007, 0x0000, 0x080c, 0x113c, 0x0005, 0x0126, 0x2091, ++ 0x2200, 0x2079, 0x0300, 0x2071, 0x1a3c, 0x7003, 0x0000, 0x78bf, ++ 0x00f6, 0x0041, 0x7807, 0x0007, 0x7803, 0x0000, 0x7803, 0x0001, ++ 0x012e, 0x0005, 0x00c6, 0x7803, 0x0000, 0x2001, 0x0165, 0x2003, ++ 0x4198, 0x7808, 0xd09c, 0x0110, 0x7820, 0x0cd8, 0x2001, 0x1a3d, ++ 0x2003, 0x0000, 0x78ab, 0x0004, 0x78ac, 0xd0ac, 0x1de8, 0x78ab, ++ 0x0002, 0x7807, 0x0007, 0x7827, 0x0030, 0x782b, 0x0400, 0x7827, ++ 0x0031, 0x782b, 0x1a4a, 0x781f, 0xff00, 0x781b, 0xff00, 0x2001, ++ 0x0200, 0x2004, 0xd0dc, 0x0110, 0x781f, 0x0303, 0x2061, 0x1a4a, ++ 0x602f, 0x1ddc, 0x2001, 0x1819, 0x2004, 0x9082, 0x1ddc, 0x6032, ++ 0x603b, 0x1cf7, 0x602b, 0x1a8a, 0x6007, 0x1a6a, 0x2061, 0x1a6a, ++ 0x00ce, 0x0005, 0x0126, 0x2091, 0x2200, 0x7908, 0x9184, 0x0070, ++ 0x190c, 0x0d5e, 0xd19c, 0x05a0, 0x7820, 0x908c, 0xf000, 0x0540, ++ 0x2060, 0x6020, 0x9086, 0x0003, 0x1550, 0x6000, 0x9086, 0x0004, ++ 0x1530, 0x6114, 0x2148, 0xa876, 0xa87a, 0xa867, 0x0103, 0x080c, ++ 0x67ac, 0x00b6, 0x6010, 0x2058, 0xba3c, 0x8211, 0x0208, 0xba3e, ++ 0xb8c0, 0x9005, 0x190c, 0x639b, 0x00be, 0x6044, 0xd0fc, 0x190c, ++ 0x98f1, 0x080c, 0x9c0f, 0x7808, 0xd09c, 0x19b0, 0x012e, 0x0005, ++ 0x908a, 0x0024, 0x1a0c, 0x0d65, 0x002b, 0x012e, 0x0005, 0x04b0, ++ 0x012e, 0x0005, 0x138e, 0x13b4, 0x13e4, 0x13e9, 0x13ed, 0x13f2, ++ 0x141a, 0x141e, 0x142c, 0x1430, 0x138e, 0x14ba, 0x14be, 0x1521, ++ 0x138e, 0x138e, 0x138e, 0x138e, 0x138e, 0x138e, 0x138e, 0x138e, ++ 0x138e, 0x138e, 0x138e, 0x138e, 0x138e, 0x13f4, 0x138e, 0x13bc, ++ 0x13e1, 0x13a8, 0x138e, 0x13c8, 0x1392, 0x1390, 0x080c, 0x0d65, ++ 0x080c, 0x0d5e, 0x080c, 0x1528, 0x2009, 0x1a49, 0x2104, 0x8000, ++ 0x200a, 0x080c, 0x7b22, 0x080c, 0x195f, 0x0005, 0x6044, 0xd0fc, ++ 0x190c, 0x98f1, 0x2009, 0x0055, 0x080c, 0x9c85, 0x012e, 0x0005, ++ 0x080c, 0x1528, 0x2060, 0x6044, 0xd0fc, 0x190c, 0x98f1, 0x2009, ++ 0x0055, 0x080c, 0x9c85, 0x0005, 0x2009, 0x0048, 0x080c, 0x1528, ++ 0x2060, 0x080c, 0x9c85, 0x0005, 0x2009, 0x0054, 0x080c, 0x1528, ++ 0x2060, 0x6044, 0xd0fc, 0x190c, 0x98f1, 0x080c, 0x9c85, 0x0005, ++ 0x080c, 0x1528, 0x2060, 0x0056, 0x0066, 0x080c, 0x1528, 0x2028, ++ 0x080c, 0x1528, 0x2030, 0x0036, 0x0046, 0x2021, 0x0000, 0x2418, ++ 0x2009, 0x0056, 0x080c, 0x9c85, 0x004e, 0x003e, 0x006e, 0x005e, ++ 0x0005, 0x080c, 0x1528, 0x0005, 0x7004, 0xc085, 0xc0b5, 0x7006, ++ 0x0005, 0x7004, 0xc085, 0x7006, 0x0005, 0x080c, 0x1528, 0x080c, ++ 0x15e5, 0x0005, 0x080c, 0x0d65, 0x080c, 0x1528, 0x2060, 0x6014, ++ 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, ++ 0x9c85, 0x2001, 0x015d, 0x2003, 0x0000, 0x2009, 0x03e8, 0x8109, ++ 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, ++ 0x2004, 0xd0ec, 0x1110, 0x080c, 0x152d, 0x2001, 0x0307, 0x2003, ++ 0x8000, 0x0005, 0x7004, 0xc095, 0x7006, 0x0005, 0x080c, 0x1528, ++ 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, ++ 0x0048, 0x080c, 0x9c85, 0x0005, 0x080c, 0x1528, 0x080c, 0x0d65, ++ 0x080c, 0x1528, 0x080c, 0x14a5, 0x7827, 0x0018, 0x79ac, 0xd1dc, ++ 0x0540, 0x7827, 0x0015, 0x7828, 0x782b, 0x0000, 0x9065, 0x0138, ++ 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0400, 0x7004, ++ 0x9005, 0x1180, 0x78ab, 0x0004, 0x7827, 0x0018, 0x782b, 0x0000, ++ 0xd1bc, 0x090c, 0x0d65, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, ++ 0x0020, 0x0480, 0x78ab, 0x0004, 0x7803, 0x0001, 0x080c, 0x14be, ++ 0x0005, 0x7828, 0x782b, 0x0000, 0x9065, 0x090c, 0x0d65, 0x6014, ++ 0x2048, 0x78ab, 0x0004, 0x918c, 0x0700, 0x0198, 0x080c, 0x7b22, ++ 0x080c, 0x195f, 0x080c, 0xb847, 0x0158, 0xa9ac, 0xa936, 0xa9b0, ++ 0xa93a, 0xa83f, 0xffff, 0xa843, 0xffff, 0xa880, 0xc0bd, 0xa882, ++ 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x6024, ++ 0x190c, 0xbc43, 0x2029, 0x00c8, 0x8529, 0x0128, 0x2001, 0x0201, ++ 0x2004, 0x9005, 0x0dc8, 0x7dbc, 0x080c, 0xd5d3, 0xd5a4, 0x1118, ++ 0x080c, 0x152d, 0x0005, 0x080c, 0x7b22, 0x080c, 0x195f, 0x0005, ++ 0x781f, 0x0300, 0x7803, 0x0001, 0x0005, 0x0016, 0x0066, 0x0076, ++ 0x00f6, 0x2079, 0x0300, 0x7908, 0x918c, 0x0007, 0x9186, 0x0003, ++ 0x0120, 0x2001, 0x0016, 0x080c, 0x159e, 0x00fe, 0x007e, 0x006e, ++ 0x001e, 0x0005, 0x7004, 0xc09d, 0x7006, 0x0005, 0x7104, 0x9184, ++ 0x0004, 0x190c, 0x0d65, 0xd184, 0x1189, 0xd19c, 0x0158, 0xc19c, ++ 0x7106, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x080c, ++ 0x152d, 0x0005, 0x81ff, 0x190c, 0x0d65, 0x0005, 0xc184, 0xd1b4, ++ 0xc1b4, 0x7106, 0x0016, 0x00e6, 0x15e0, 0x2071, 0x0200, 0x080c, ++ 0x15d9, 0x6014, 0x9005, 0x05a8, 0x0096, 0x2048, 0xa864, 0x009e, ++ 0x9084, 0x00ff, 0x908e, 0x0029, 0x0160, 0x908e, 0x0048, 0x1548, ++ 0x601c, 0xd084, 0x11d8, 0x00f6, 0x2c78, 0x080c, 0x164f, 0x00fe, ++ 0x00a8, 0x00f6, 0x2c78, 0x080c, 0x1797, 0x00fe, 0x2009, 0x01f4, ++ 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, ++ 0x0218, 0x2004, 0xd0ec, 0x1110, 0x0401, 0x0040, 0x2001, 0x020d, ++ 0x2003, 0x0020, 0x080c, 0x12ea, 0x7803, 0x0001, 0x00ee, 0x001e, ++ 0x0005, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0069, ++ 0x0ca8, 0x0031, 0x2060, 0x2009, 0x0053, 0x080c, 0x9c85, 0x0005, ++ 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, 0x080c, 0x14a5, 0x00d6, ++ 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, 0x0510, 0x6804, 0x9005, ++ 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, 0x79bc, 0xd1a4, 0x1528, ++ 0x79b8, 0x918c, 0x0fff, 0x0180, 0x9182, 0x0841, 0x1268, 0x9188, ++ 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, 0x810c, 0x080c, 0x1590, ++ 0x6827, 0x0001, 0x8109, 0x1dd0, 0x04d9, 0x6827, 0x0002, 0x04c1, ++ 0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, 0x1500, 0x6804, 0x9005, ++ 0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c0, 0x080c, 0x7b22, 0x080c, ++ 0x195f, 0x0090, 0x7827, 0x0015, 0x782b, 0x0000, 0x7827, 0x0018, ++ 0x782b, 0x0000, 0x2001, 0x020d, 0x2003, 0x0020, 0x2001, 0x0307, ++ 0x2003, 0x0300, 0x7803, 0x0001, 0x00de, 0x0005, 0x682c, 0x9084, ++ 0x5400, 0x9086, 0x5400, 0x0d30, 0x7827, 0x0015, 0x782b, 0x0000, ++ 0x7803, 0x0001, 0x6800, 0x9085, 0x1800, 0x6802, 0x00de, 0x0005, ++ 0x6824, 0x9084, 0x0003, 0x1de0, 0x0005, 0x2001, 0x0030, 0x2c08, ++ 0x621c, 0x0021, 0x7830, 0x9086, 0x0041, 0x0005, 0x00f6, 0x2079, ++ 0x0300, 0x0006, 0x7808, 0xd09c, 0x0140, 0x0016, 0x0026, 0x00c6, ++ 0x080c, 0x132a, 0x00ce, 0x002e, 0x001e, 0x000e, 0x0006, 0x7832, ++ 0x7936, 0x7a3a, 0x781b, 0x8080, 0x0059, 0x1118, 0x000e, 0x00fe, ++ 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c, 0x0d65, ++ 0x2009, 0xff00, 0x8109, 0x0120, 0x7818, 0xd0bc, 0x1dd8, 0x0005, ++ 0x9085, 0x0001, 0x0005, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, ++ 0x0c79, 0x1108, 0x0005, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c, ++ 0x0d65, 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, 0x2060, ++ 0xd1bc, 0x1110, 0x7054, 0x2060, 0x0005, 0x00e6, 0x0016, 0x2071, ++ 0x0200, 0x0c79, 0x6124, 0xd1dc, 0x01f8, 0x701c, 0xd08c, 0x0904, ++ 0x1644, 0x7017, 0x0000, 0x2001, 0x0264, 0x2004, 0xd0bc, 0x0904, ++ 0x1644, 0x2001, 0x0268, 0x00c6, 0x2064, 0x6104, 0x6038, 0x00ce, ++ 0x918e, 0x0039, 0x1904, 0x1644, 0x9c06, 0x15f0, 0x0126, 0x2091, ++ 0x2600, 0x080c, 0x7a7a, 0x012e, 0x7358, 0x745c, 0x6014, 0x905d, ++ 0x0598, 0x2b48, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x190c, 0xbc1e, 0xab42, 0xac3e, 0x2001, 0x1875, 0x2004, 0xd0b4, ++ 0x1170, 0x601c, 0xd0e4, 0x1158, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x1120, 0xa83b, 0x7fff, 0xa837, 0xffff, 0x080c, ++ 0x1d17, 0x1190, 0x080c, 0x17f2, 0x2a00, 0xa816, 0x0130, 0x2800, ++ 0xa80e, 0x2c05, 0xa80a, 0x2c00, 0xa812, 0x7037, 0x0020, 0x781f, ++ 0x0300, 0x001e, 0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, 0x0020, ++ 0x001e, 0x00ee, 0x080c, 0x152d, 0x0005, 0x080c, 0x0d65, 0x0016, ++ 0x2009, 0x00a0, 0x8109, 0xa001, 0xa001, 0xa001, 0x1dd8, 0x001e, ++ 0x2cf0, 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, 0x2048, ++ 0x2940, 0x903e, 0x2730, 0xa864, 0x2068, 0xa81a, 0x9d84, 0x000f, ++ 0x9088, 0x1cf7, 0x2165, 0x0002, 0x1683, 0x16d0, 0x1683, 0x1683, ++ 0x1683, 0x16b2, 0x1683, 0x1687, 0x167c, 0x16c7, 0x1683, 0x1683, ++ 0x1683, 0x178c, 0x169b, 0x1691, 0xa964, 0x918c, 0x00ff, 0x918e, ++ 0x0048, 0x0904, 0x16c7, 0x9085, 0x0001, 0x0804, 0x1783, 0xa87c, ++ 0xd0bc, 0x0dc8, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, 0x0804, ++ 0x16d7, 0xa87c, 0xd0bc, 0x0d78, 0xa890, 0xa842, 0xa88c, 0xa83e, ++ 0xa888, 0x0804, 0x1726, 0xa87c, 0xd0bc, 0x0d28, 0xa890, 0xa842, ++ 0xa88c, 0xa83e, 0xa804, 0x9045, 0x090c, 0x0d65, 0xa164, 0xa91a, ++ 0x91ec, 0x000f, 0x9d80, 0x1cf7, 0x2065, 0xa888, 0xd19c, 0x1904, ++ 0x1726, 0x0428, 0xa87c, 0xd0ac, 0x0970, 0xa804, 0x9045, 0x090c, ++ 0x0d65, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1cf7, 0x2065, ++ 0x9006, 0xa842, 0xa83e, 0xd19c, 0x1904, 0x1726, 0x0080, 0xa87c, ++ 0xd0ac, 0x0904, 0x1683, 0x9006, 0xa842, 0xa83e, 0x0804, 0x1726, ++ 0xa87c, 0xd0ac, 0x0904, 0x1683, 0x9006, 0xa842, 0xa83e, 0x2c05, ++ 0x908a, 0x0036, 0x1a0c, 0x0d65, 0x9082, 0x001b, 0x0002, 0x16fa, ++ 0x16fa, 0x16fc, 0x16fa, 0x16fa, 0x16fa, 0x1702, 0x16fa, 0x16fa, ++ 0x16fa, 0x1708, 0x16fa, 0x16fa, 0x16fa, 0x170e, 0x16fa, 0x16fa, ++ 0x16fa, 0x1714, 0x16fa, 0x16fa, 0x16fa, 0x171a, 0x16fa, 0x16fa, ++ 0x16fa, 0x1720, 0x080c, 0x0d65, 0xa574, 0xa478, 0xa37c, 0xa280, ++ 0x0804, 0x176b, 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, 0x176b, ++ 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x176b, 0xa5a4, 0xa4a8, ++ 0xa3ac, 0xa2b0, 0x0804, 0x176b, 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0, ++ 0x0804, 0x176b, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, 0x176b, ++ 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x176b, 0x2c05, 0x908a, ++ 0x0034, 0x1a0c, 0x0d65, 0x9082, 0x001b, 0x0002, 0x1749, 0x1747, ++ 0x1747, 0x1747, 0x1747, 0x1747, 0x1750, 0x1747, 0x1747, 0x1747, ++ 0x1747, 0x1747, 0x1757, 0x1747, 0x1747, 0x1747, 0x1747, 0x1747, ++ 0x175e, 0x1747, 0x1747, 0x1747, 0x1747, 0x1747, 0x1765, 0x080c, ++ 0x0d65, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, 0x00d8, ++ 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, 0x00a0, 0xa59c, ++ 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, 0x0068, 0xa5b4, 0xa4b8, ++ 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0030, 0xa5cc, 0xa4d0, 0xa7d4, ++ 0xa6d8, 0xa3dc, 0xa2e0, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, ++ 0xae2a, 0xa988, 0x8c60, 0x2c1d, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, ++ 0x8109, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, 0x601e, 0xa87c, ++ 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, 0x2800, 0xa80e, ++ 0xab0a, 0x2c00, 0xa812, 0x0c78, 0x0804, 0x1683, 0x0016, 0x2009, ++ 0x00a0, 0x8109, 0xa001, 0xa001, 0xa001, 0x1dd8, 0x001e, 0x2ff0, ++ 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, 0x2048, 0x2940, ++ 0xa80e, 0x2061, 0x1cf2, 0xa813, 0x1cf2, 0x2c05, 0xa80a, 0xa964, ++ 0xa91a, 0xa87c, 0xd0ac, 0x090c, 0x0d65, 0x9006, 0xa842, 0xa83e, ++ 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d65, 0xadcc, 0xacd0, 0xafd4, ++ 0xaed8, 0xabdc, 0xaae0, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, ++ 0xae2a, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0xa988, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0008, 0x1120, 0x8109, 0xa916, 0x0128, 0x0078, ++ 0x918a, 0x0002, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, 0x601e, ++ 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, 0xa804, ++ 0x9045, 0x090c, 0x0d65, 0xa80e, 0xa064, 0xa81a, 0x9084, 0x000f, ++ 0x9080, 0x1cf7, 0x2015, 0x82ff, 0x090c, 0x0d65, 0xaa12, 0x2205, ++ 0xa80a, 0x0c10, 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, 0x2d00, ++ 0x0002, 0x18e7, 0x1849, 0x1849, 0x18e7, 0x18e7, 0x18e1, 0x18e7, ++ 0x1849, 0x1898, 0x1898, 0x1898, 0x18e7, 0x18e7, 0x18e7, 0x18de, ++ 0x1898, 0xc0fc, 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, 0xdd9c, ++ 0x0904, 0x18e9, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d65, 0x9082, ++ 0x001b, 0x0002, 0x1835, 0x1833, 0x1833, 0x1833, 0x1833, 0x1833, ++ 0x1839, 0x1833, 0x1833, 0x1833, 0x1833, 0x1833, 0x183d, 0x1833, ++ 0x1833, 0x1833, 0x1833, 0x1833, 0x1841, 0x1833, 0x1833, 0x1833, ++ 0x1833, 0x1833, 0x1845, 0x080c, 0x0d65, 0xa774, 0xa678, 0x0804, ++ 0x18e9, 0xa78c, 0xa690, 0x0804, 0x18e9, 0xa7a4, 0xa6a8, 0x0804, ++ 0x18e9, 0xa7bc, 0xa6c0, 0x0804, 0x18e9, 0xa7d4, 0xa6d8, 0x0804, ++ 0x18e9, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d65, 0x9082, 0x001b, ++ 0x0002, 0x186c, 0x186c, 0x186e, 0x186c, 0x186c, 0x186c, 0x1874, ++ 0x186c, 0x186c, 0x186c, 0x187a, 0x186c, 0x186c, 0x186c, 0x1880, ++ 0x186c, 0x186c, 0x186c, 0x1886, 0x186c, 0x186c, 0x186c, 0x188c, ++ 0x186c, 0x186c, 0x186c, 0x1892, 0x080c, 0x0d65, 0xa574, 0xa478, ++ 0xa37c, 0xa280, 0x0804, 0x18e9, 0xa584, 0xa488, 0xa38c, 0xa290, ++ 0x0804, 0x18e9, 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x18e9, ++ 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x18e9, 0xa5b4, 0xa4b8, ++ 0xa3bc, 0xa2c0, 0x0804, 0x18e9, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, ++ 0x0804, 0x18e9, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x18e9, ++ 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d65, 0x9082, 0x001b, 0x0002, ++ 0x18bb, 0x18b9, 0x18b9, 0x18b9, 0x18b9, 0x18b9, 0x18c2, 0x18b9, ++ 0x18b9, 0x18b9, 0x18b9, 0x18b9, 0x18c9, 0x18b9, 0x18b9, 0x18b9, ++ 0x18b9, 0x18b9, 0x18d0, 0x18b9, 0x18b9, 0x18b9, 0x18b9, 0x18b9, ++ 0x18d7, 0x080c, 0x0d65, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, ++ 0xa280, 0x0438, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, ++ 0x0400, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, 0x00c8, ++ 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0090, 0xa5cc, ++ 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0x0058, 0x9d86, 0x000e, ++ 0x1130, 0x080c, 0x1ccd, 0x1904, 0x17f2, 0x900e, 0x0050, 0x080c, ++ 0x0d65, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0x080c, ++ 0x1ccd, 0x0005, 0x6014, 0x2048, 0x6118, 0x810c, 0x810c, 0x810c, ++ 0x81ff, 0x1118, 0xa887, 0x0001, 0x0008, 0xa986, 0x601b, 0x0002, ++ 0xa974, 0xd1dc, 0x1108, 0x0005, 0xa934, 0xa88c, 0x9106, 0x1158, ++ 0xa938, 0xa890, 0x9106, 0x1138, 0x601c, 0xc084, 0x601e, 0x2009, ++ 0x0048, 0x0804, 0x9c85, 0x0005, 0x0126, 0x00c6, 0x2091, 0x2200, ++ 0x00ce, 0x7908, 0x918c, 0x0007, 0x9186, 0x0000, 0x05b0, 0x9186, ++ 0x0003, 0x0598, 0x6020, 0x6023, 0x0000, 0x0006, 0x2031, 0x0008, ++ 0x00c6, 0x781f, 0x0808, 0x7808, 0xd09c, 0x0120, 0x080c, 0x132a, ++ 0x8631, 0x1db8, 0x00ce, 0x781f, 0x0800, 0x2031, 0x0168, 0x00c6, ++ 0x7808, 0xd09c, 0x190c, 0x132a, 0x00ce, 0x2001, 0x0038, 0x080c, ++ 0x19ec, 0x7930, 0x9186, 0x0040, 0x0160, 0x9186, 0x0042, 0x190c, ++ 0x0d65, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631, 0x1d40, 0x080c, ++ 0x19fb, 0x000e, 0x6022, 0x012e, 0x0005, 0x080c, 0x19e8, 0x7827, ++ 0x0015, 0x7828, 0x9c06, 0x1db8, 0x782b, 0x0000, 0x0ca0, 0x00f6, ++ 0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, 0x080c, ++ 0x70b7, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, 0x0160, ++ 0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, 0x1de0, ++ 0x0081, 0x2001, 0x0386, 0x2003, 0x2020, 0x080c, 0x7158, 0x0005, ++ 0x0479, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, ++ 0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x2825, 0x2009, 0x003c, ++ 0x080c, 0x2052, 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, 0x9084, ++ 0x003c, 0x1de0, 0x080c, 0x8074, 0x70a0, 0x70a2, 0x7098, 0x709a, ++ 0x709c, 0x709e, 0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, 0x2079, ++ 0x0300, 0x080c, 0x12ea, 0x7803, 0x0001, 0x00fe, 0x00ee, 0x0005, ++ 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, ++ 0x2003, 0x0000, 0x080c, 0x70b7, 0x1108, 0x0005, 0x2021, 0x0260, ++ 0x2001, 0x0141, 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, ++ 0x939c, 0x0048, 0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, ++ 0x8421, 0x1d70, 0x2001, 0x015d, 0x2003, 0x0000, 0x0005, 0x0046, ++ 0x2021, 0x0019, 0x2003, 0x0048, 0xa001, 0xa001, 0x201c, 0x939c, ++ 0x0048, 0x0120, 0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, 0x0c40, ++ 0x601c, 0xc084, 0x601e, 0x0005, 0x2c08, 0x621c, 0x080c, 0x159e, ++ 0x7930, 0x0005, 0x2c08, 0x621c, 0x080c, 0x15cb, 0x7930, 0x0005, ++ 0x8001, 0x1df0, 0x0005, 0x2031, 0x0005, 0x781c, 0x9084, 0x0007, ++ 0x0170, 0x2001, 0x0038, 0x0c41, 0x9186, 0x0040, 0x0904, 0x1a59, ++ 0x2001, 0x001e, 0x0c69, 0x8631, 0x1d80, 0x080c, 0x0d65, 0x781f, ++ 0x0202, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0b10, 0x0c01, ++ 0x781c, 0xd084, 0x0110, 0x0861, 0x04e0, 0x2001, 0x0030, 0x0891, ++ 0x9186, 0x0040, 0x0568, 0x781c, 0xd084, 0x1da8, 0x781f, 0x0101, ++ 0x2001, 0x0014, 0x0869, 0x2001, 0x0037, 0x0821, 0x9186, 0x0040, ++ 0x0140, 0x2001, 0x0030, 0x080c, 0x19f2, 0x9186, 0x0040, 0x190c, ++ 0x0d65, 0x00d6, 0x2069, 0x0200, 0x692c, 0xd1f4, 0x1170, 0xd1c4, ++ 0x0160, 0xd19c, 0x0130, 0x6800, 0x9085, 0x1800, 0x6802, 0x00de, ++ 0x0080, 0x6908, 0x9184, 0x0007, 0x1db0, 0x00de, 0x781f, 0x0100, ++ 0x791c, 0x9184, 0x0007, 0x090c, 0x0d65, 0xa001, 0xa001, 0x781f, ++ 0x0200, 0x0005, 0x0126, 0x2091, 0x2400, 0x2079, 0x0380, 0x2001, ++ 0x19b8, 0x2070, 0x012e, 0x0005, 0x2cf0, 0x0126, 0x2091, 0x2400, ++ 0x3e60, 0x6014, 0x2048, 0xa964, 0xa91a, 0x918c, 0x00ff, 0x9184, ++ 0x000f, 0x0002, 0x1a8e, 0x1a8e, 0x1a8e, 0x1a8e, 0x1a8e, 0x1a8e, ++ 0x1a8e, 0x1a8e, 0x1a82, 0x1a90, 0x1a8e, 0x1a8e, 0x1a8e, 0x1a8e, ++ 0x1a8e, 0x1a8e, 0x9086, 0x0008, 0x1148, 0xa87c, 0xd0b4, 0x0904, ++ 0x1c00, 0x2011, 0x1cf2, 0x2205, 0xab88, 0x0068, 0x080c, 0x0d65, ++ 0xa87c, 0xd0b4, 0x0904, 0x1c00, 0x9184, 0x000f, 0x9080, 0x1cf7, ++ 0x2015, 0x2205, 0xab88, 0x2908, 0xa80a, 0xa90e, 0xaa12, 0xab16, ++ 0x9006, 0xa842, 0xa83e, 0x012e, 0x0005, 0x2cf0, 0x0126, 0x2091, ++ 0x2400, 0x3e60, 0x6014, 0x2048, 0xa88c, 0xa990, 0xaaac, 0xabb0, ++ 0xaa36, 0xab3a, 0xa83e, 0xa942, 0xa846, 0xa94a, 0xa964, 0x918c, ++ 0x00ff, 0x9186, 0x001e, 0x0198, 0x2940, 0xa064, 0xa81a, 0x90ec, ++ 0x000f, 0x9d80, 0x1cf7, 0x2065, 0x2c05, 0x2808, 0x2c10, 0xab88, ++ 0xa80a, 0xa90e, 0xaa12, 0xab16, 0x012e, 0x3e60, 0x0005, 0xa804, ++ 0x2040, 0x0c58, 0x2cf0, 0x0126, 0x2091, 0x2400, 0x3e60, 0x6014, ++ 0x2048, 0xa97c, 0x2950, 0xd1dc, 0x1904, 0x1bca, 0xc1dd, 0xa97e, ++ 0x9006, 0xa842, 0xa83e, 0xa988, 0x8109, 0xa916, 0xa964, 0xa91a, ++ 0x9184, 0x000f, 0x9088, 0x1cf7, 0x2145, 0x0002, 0x1afe, 0x1b0c, ++ 0x1afe, 0x1afe, 0x1afe, 0x1b00, 0x1afe, 0x1afe, 0x1b61, 0x1b61, ++ 0x1afe, 0x1afe, 0x1afe, 0x1b5f, 0x1afe, 0x1afe, 0x080c, 0x0d65, ++ 0xa804, 0x2050, 0xb164, 0xa91a, 0x9184, 0x000f, 0x9080, 0x1cf7, ++ 0x2045, 0xd19c, 0x1904, 0x1b61, 0x9036, 0x2638, 0x2805, 0x908a, ++ 0x0036, 0x1a0c, 0x0d65, 0x9082, 0x001b, 0x0002, 0x1b31, 0x1b31, ++ 0x1b33, 0x1b31, 0x1b31, 0x1b31, 0x1b39, 0x1b31, 0x1b31, 0x1b31, ++ 0x1b3f, 0x1b31, 0x1b31, 0x1b31, 0x1b45, 0x1b31, 0x1b31, 0x1b31, ++ 0x1b4b, 0x1b31, 0x1b31, 0x1b31, 0x1b51, 0x1b31, 0x1b31, 0x1b31, ++ 0x1b57, 0x080c, 0x0d65, 0xb574, 0xb478, 0xb37c, 0xb280, 0x0804, ++ 0x1ba6, 0xb584, 0xb488, 0xb38c, 0xb290, 0x0804, 0x1ba6, 0xb594, ++ 0xb498, 0xb39c, 0xb2a0, 0x0804, 0x1ba6, 0xb5a4, 0xb4a8, 0xb3ac, ++ 0xb2b0, 0x0804, 0x1ba6, 0xb5b4, 0xb4b8, 0xb3bc, 0xb2c0, 0x0804, ++ 0x1ba6, 0xb5c4, 0xb4c8, 0xb3cc, 0xb2d0, 0x0804, 0x1ba6, 0xb5d4, ++ 0xb4d8, 0xb3dc, 0xb2e0, 0x0804, 0x1ba6, 0x0804, 0x1ba6, 0x080c, ++ 0x0d65, 0x2805, 0x908a, 0x0034, 0x1a0c, 0x0d65, 0x9082, 0x001b, ++ 0x0002, 0x1b84, 0x1b82, 0x1b82, 0x1b82, 0x1b82, 0x1b82, 0x1b8b, ++ 0x1b82, 0x1b82, 0x1b82, 0x1b82, 0x1b82, 0x1b92, 0x1b82, 0x1b82, ++ 0x1b82, 0x1b82, 0x1b82, 0x1b99, 0x1b82, 0x1b82, 0x1b82, 0x1b82, ++ 0x1b82, 0x1ba0, 0x080c, 0x0d65, 0xb56c, 0xb470, 0xb774, 0xb678, ++ 0xb37c, 0xb280, 0x00d8, 0xb584, 0xb488, 0xb78c, 0xb690, 0xb394, ++ 0xb298, 0x00a0, 0xb59c, 0xb4a0, 0xb7a4, 0xb6a8, 0xb3ac, 0xb2b0, ++ 0x0068, 0xb5b4, 0xb4b8, 0xb7bc, 0xb6c0, 0xb3c4, 0xb2c8, 0x0030, ++ 0xb5cc, 0xb4d0, 0xb7d4, 0xb6d8, 0xb3dc, 0xb2e0, 0xab2e, 0xaa32, ++ 0xad1e, 0xac22, 0xaf26, 0xae2a, 0xa988, 0x8109, 0xa916, 0x1118, ++ 0x9006, 0x012e, 0x0005, 0x8840, 0x2805, 0x9005, 0x1168, 0xb004, ++ 0x9005, 0x090c, 0x0d65, 0x2050, 0xb164, 0xa91a, 0x9184, 0x000f, ++ 0x9080, 0x1cf7, 0x2045, 0x2805, 0x2810, 0x2a08, 0xa80a, 0xa90e, ++ 0xaa12, 0x0c30, 0x3e60, 0x6344, 0xd3fc, 0x190c, 0x0d65, 0xa93c, ++ 0xaa40, 0xa844, 0x9106, 0x1118, 0xa848, 0x9206, 0x0508, 0x2958, ++ 0xab48, 0xac44, 0x2940, 0x080c, 0x1d17, 0x1998, 0x2850, 0x2c40, ++ 0xab14, 0xa880, 0xd0fc, 0x1140, 0xa810, 0x2005, 0xa80a, 0x2a00, ++ 0xa80e, 0x2009, 0x8015, 0x0070, 0x00c6, 0x3e60, 0x6044, 0xc0a4, ++ 0x9085, 0x8005, 0x6046, 0x00ce, 0x8319, 0xab16, 0x1904, 0x1bb3, ++ 0x2009, 0x8005, 0x3e60, 0x6044, 0x9105, 0x6046, 0x0804, 0x1bb0, ++ 0x080c, 0x0d65, 0x00f6, 0x00e6, 0x0096, 0x00c6, 0x0026, 0x704c, ++ 0x9c06, 0x190c, 0x0d65, 0x2079, 0x0090, 0x2001, 0x0105, 0x2003, ++ 0x0010, 0x782b, 0x0004, 0x7057, 0x0000, 0x6014, 0x2048, 0x080c, ++ 0xb847, 0x0118, 0xa880, 0xc0bd, 0xa882, 0x6020, 0x9086, 0x0006, ++ 0x1170, 0x2061, 0x0100, 0x62c8, 0x2001, 0x00fa, 0x8001, 0x1df0, ++ 0x60c8, 0x9206, 0x1dc0, 0x60c4, 0xa89a, 0x60c8, 0xa896, 0x704c, ++ 0x2060, 0x00c6, 0x080c, 0xb452, 0x080c, 0x98c8, 0x00ce, 0x704c, ++ 0x9c06, 0x1150, 0x2009, 0x0040, 0x080c, 0x2052, 0x080c, 0x94b8, ++ 0x2011, 0x0000, 0x080c, 0x9343, 0x002e, 0x00ce, 0x009e, 0x00ee, ++ 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0090, 0x781c, 0x0006, 0x7818, ++ 0x0006, 0x2079, 0x0100, 0x7a14, 0x9284, 0x1984, 0x9085, 0x0012, ++ 0x7816, 0x2019, 0x1000, 0x8319, 0x090c, 0x0d65, 0x7820, 0xd0bc, ++ 0x1dd0, 0x79c8, 0x000e, 0x9102, 0x001e, 0x0006, 0x0016, 0x79c4, ++ 0x000e, 0x9103, 0x78c6, 0x000e, 0x78ca, 0x9284, 0x1984, 0x9085, ++ 0x0012, 0x7816, 0x2079, 0x0090, 0x782b, 0x0008, 0x7057, 0x0000, ++ 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x19b8, 0x7054, 0x9086, ++ 0x0000, 0x0904, 0x1cc8, 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, ++ 0xd194, 0x01b8, 0x2009, 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, ++ 0x080c, 0xd61c, 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d65, ++ 0x0016, 0x2009, 0x0040, 0x080c, 0x2052, 0x001e, 0x2001, 0x020c, ++ 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, ++ 0x1120, 0x2009, 0x0040, 0x080c, 0x2052, 0x782c, 0xd0fc, 0x09a8, ++ 0x080c, 0x98e4, 0x782c, 0xd0fc, 0x1de8, 0x080c, 0x98c8, 0x7054, ++ 0x9086, 0x0000, 0x1950, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, ++ 0x2009, 0x0040, 0x080c, 0x2052, 0x782b, 0x0002, 0x7057, 0x0000, ++ 0x00ee, 0x00fe, 0x0005, 0x080c, 0x0d65, 0x8c60, 0x2c05, 0x9005, ++ 0x0110, 0x8a51, 0x0005, 0xa004, 0x9005, 0x0168, 0xa85a, 0x2040, ++ 0xa064, 0x9084, 0x000f, 0x9080, 0x1cf7, 0x2065, 0x8cff, 0x090c, ++ 0x0d65, 0x8a51, 0x0005, 0x2050, 0x0005, 0x0000, 0x001d, 0x0021, ++ 0x0025, 0x0029, 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, 0x0021, ++ 0x0027, 0x002d, 0x0033, 0x0000, 0x0000, 0x0023, 0x0000, 0x0000, ++ 0x1cea, 0x1ce6, 0x0000, 0x0000, 0x1cf4, 0x0000, 0x1cea, 0x1cf1, ++ 0x1cf1, 0x1cee, 0x0000, 0x0000, 0x0000, 0x1cf4, 0x1cf1, 0x0000, ++ 0x1cec, 0x1cec, 0x0000, 0x0000, 0x1cf4, 0x0000, 0x1cec, 0x1cf2, ++ 0x1cf2, 0x1cf2, 0x0000, 0x0000, 0x0000, 0x1cf4, 0x1cf2, 0x00c6, ++ 0x00d6, 0x0086, 0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, 0x1ef6, ++ 0x2940, 0xa064, 0x90ec, 0x000f, 0x9084, 0x00ff, 0x9086, 0x0008, ++ 0x1118, 0x2061, 0x1cf2, 0x00d0, 0x9de0, 0x1cf7, 0x9d86, 0x0007, ++ 0x0130, 0x9d86, 0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, 0xa08c, ++ 0x9422, 0xa090, 0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, 0x0804, ++ 0x1ef6, 0xa004, 0x9045, 0x0904, 0x1ef6, 0x08d8, 0x2c05, 0x9005, ++ 0x0904, 0x1dde, 0xdd9c, 0x1904, 0x1d9a, 0x908a, 0x0036, 0x1a0c, ++ 0x0d65, 0x9082, 0x001b, 0x0002, 0x1d6f, 0x1d6f, 0x1d71, 0x1d6f, ++ 0x1d6f, 0x1d6f, 0x1d77, 0x1d6f, 0x1d6f, 0x1d6f, 0x1d7d, 0x1d6f, ++ 0x1d6f, 0x1d6f, 0x1d83, 0x1d6f, 0x1d6f, 0x1d6f, 0x1d89, 0x1d6f, ++ 0x1d6f, 0x1d6f, 0x1d8f, 0x1d6f, 0x1d6f, 0x1d6f, 0x1d95, 0x080c, ++ 0x0d65, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0804, 0x1dd4, 0xa08c, ++ 0x9422, 0xa090, 0x931b, 0x0804, 0x1dd4, 0xa09c, 0x9422, 0xa0a0, ++ 0x931b, 0x0804, 0x1dd4, 0xa0ac, 0x9422, 0xa0b0, 0x931b, 0x0804, ++ 0x1dd4, 0xa0bc, 0x9422, 0xa0c0, 0x931b, 0x0804, 0x1dd4, 0xa0cc, ++ 0x9422, 0xa0d0, 0x931b, 0x0804, 0x1dd4, 0xa0dc, 0x9422, 0xa0e0, ++ 0x931b, 0x04d0, 0x908a, 0x0034, 0x1a0c, 0x0d65, 0x9082, 0x001b, ++ 0x0002, 0x1dbc, 0x1dba, 0x1dba, 0x1dba, 0x1dba, 0x1dba, 0x1dc1, ++ 0x1dba, 0x1dba, 0x1dba, 0x1dba, 0x1dba, 0x1dc6, 0x1dba, 0x1dba, ++ 0x1dba, 0x1dba, 0x1dba, 0x1dcb, 0x1dba, 0x1dba, 0x1dba, 0x1dba, ++ 0x1dba, 0x1dd0, 0x080c, 0x0d65, 0xa07c, 0x9422, 0xa080, 0x931b, ++ 0x0098, 0xa094, 0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, 0x9422, ++ 0xa0b0, 0x931b, 0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, 0x0020, ++ 0xa0dc, 0x9422, 0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, 0x0160, ++ 0x8a51, 0x0904, 0x1ef6, 0x8c60, 0x0804, 0x1d46, 0xa004, 0x9045, ++ 0x0904, 0x1ef6, 0x0804, 0x1d21, 0x8a51, 0x0904, 0x1ef6, 0x8c60, ++ 0x2c05, 0x9005, 0x1158, 0xa004, 0x9045, 0x0904, 0x1ef6, 0xa064, ++ 0x90ec, 0x000f, 0x9de0, 0x1cf7, 0x2c05, 0x2060, 0xa880, 0xc0fc, ++ 0xa882, 0x0804, 0x1eeb, 0x2c05, 0x8422, 0x8420, 0x831a, 0x9399, ++ 0x0000, 0xac2e, 0xab32, 0xdd9c, 0x1904, 0x1e88, 0x9082, 0x001b, ++ 0x0002, 0x1e24, 0x1e24, 0x1e26, 0x1e24, 0x1e24, 0x1e24, 0x1e34, ++ 0x1e24, 0x1e24, 0x1e24, 0x1e42, 0x1e24, 0x1e24, 0x1e24, 0x1e50, ++ 0x1e24, 0x1e24, 0x1e24, 0x1e5e, 0x1e24, 0x1e24, 0x1e24, 0x1e6c, ++ 0x1e24, 0x1e24, 0x1e24, 0x1e7a, 0x080c, 0x0d65, 0xa17c, 0x2400, ++ 0x9122, 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa074, 0x9420, ++ 0xa078, 0x9319, 0x0804, 0x1ee6, 0xa18c, 0x2400, 0x9122, 0xa190, ++ 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa084, 0x9420, 0xa088, 0x9319, ++ 0x0804, 0x1ee6, 0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, 0x911b, ++ 0x0a0c, 0x0d65, 0xa094, 0x9420, 0xa098, 0x9319, 0x0804, 0x1ee6, ++ 0xa1ac, 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d65, ++ 0xa0a4, 0x9420, 0xa0a8, 0x9319, 0x0804, 0x1ee6, 0xa1bc, 0x2400, ++ 0x9122, 0xa1c0, 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa0b4, 0x9420, ++ 0xa0b8, 0x9319, 0x0804, 0x1ee6, 0xa1cc, 0x2400, 0x9122, 0xa1d0, ++ 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa0c4, 0x9420, 0xa0c8, 0x9319, ++ 0x0804, 0x1ee6, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, ++ 0x0a0c, 0x0d65, 0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, 0x1ee6, ++ 0x9082, 0x001b, 0x0002, 0x1ea6, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ea4, ++ 0x1ea4, 0x1eb3, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ec0, ++ 0x1ea4, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ea4, 0x1ecd, 0x1ea4, 0x1ea4, ++ 0x1ea4, 0x1ea4, 0x1ea4, 0x1eda, 0x080c, 0x0d65, 0xa17c, 0x2400, ++ 0x9122, 0xa180, 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa06c, 0x9420, ++ 0xa070, 0x9319, 0x0498, 0xa194, 0x2400, 0x9122, 0xa198, 0x2300, ++ 0x911b, 0x0a0c, 0x0d65, 0xa084, 0x9420, 0xa088, 0x9319, 0x0430, ++ 0xa1ac, 0x2400, 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d65, ++ 0xa09c, 0x9420, 0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, 0x9122, ++ 0xa1c8, 0x2300, 0x911b, 0x0a0c, 0x0d65, 0xa0b4, 0x9420, 0xa0b8, ++ 0x9319, 0x0060, 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, ++ 0x0a0c, 0x0d65, 0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, 0xab22, ++ 0xa880, 0xc0fd, 0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x2a00, ++ 0xa816, 0x000e, 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, 0x00de, ++ 0x00ce, 0x9085, 0x0001, 0x0005, 0x00c6, 0x610c, 0x0016, 0x9026, ++ 0x2410, 0x6004, 0x9420, 0x9291, 0x0000, 0x2c04, 0x9210, 0x9ce0, ++ 0x0002, 0x918a, 0x0002, 0x1da8, 0x9284, 0x000f, 0x9405, 0x001e, ++ 0x00ce, 0x0005, 0x7803, 0x0003, 0x780f, 0x0000, 0x6004, 0x7812, ++ 0x2c04, 0x7816, 0x9ce0, 0x0002, 0x918a, 0x0002, 0x1db8, 0x0005, ++ 0x2001, 0x0005, 0x2004, 0xd0bc, 0x190c, 0x0d5e, 0xd094, 0x0110, ++ 0x080c, 0x11c6, 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200, ++ 0x2071, 0x0260, 0x2069, 0x1800, 0x7817, 0x0000, 0x789b, 0x0814, ++ 0x78a3, 0x0406, 0x789f, 0x0410, 0x2009, 0x013b, 0x200b, 0x0400, ++ 0x781b, 0x0002, 0x783b, 0x001f, 0x7837, 0x0020, 0x7803, 0x1600, ++ 0x012e, 0x0005, 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, 0x204f, ++ 0x7900, 0xd1dc, 0x1118, 0x9084, 0x0006, 0x001a, 0x9084, 0x000e, ++ 0x0002, 0x1f71, 0x1f69, 0x7a7a, 0x1f69, 0x1f6b, 0x1f6b, 0x1f6b, ++ 0x1f6b, 0x7a60, 0x1f69, 0x1f6d, 0x1f69, 0x1f6b, 0x1f69, 0x1f6b, ++ 0x1f69, 0x080c, 0x0d65, 0x0031, 0x0020, 0x080c, 0x7a60, 0x080c, ++ 0x7a7a, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xd61c, 0x7930, ++ 0x9184, 0x0003, 0x01f0, 0x080c, 0x98c8, 0x2001, 0x19cb, 0x2004, ++ 0x9005, 0x0180, 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d65, ++ 0x00c6, 0x2001, 0x19cb, 0x2064, 0x080c, 0x98e4, 0x080c, 0xb452, ++ 0x00ce, 0x0408, 0x2009, 0x0040, 0x080c, 0x2052, 0x080c, 0x98e4, ++ 0x00d0, 0x9184, 0x0014, 0x01a0, 0x6a00, 0x9286, 0x0003, 0x0160, ++ 0x080c, 0x70b7, 0x1138, 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x080c, ++ 0x6fe8, 0x0010, 0x080c, 0x5b97, 0x080c, 0x7b18, 0x0041, 0x0018, ++ 0x9184, 0x9540, 0x1dc8, 0x002e, 0x001e, 0x000e, 0x0005, 0x00e6, ++ 0x0036, 0x0046, 0x0056, 0x2071, 0x1a3c, 0x080c, 0x195f, 0x005e, ++ 0x004e, 0x003e, 0x00ee, 0x0005, 0x0126, 0x2091, 0x2e00, 0x2071, ++ 0x1800, 0x7128, 0x2001, 0x1940, 0x2102, 0x2001, 0x1948, 0x2102, ++ 0x2001, 0x013b, 0x2102, 0x2079, 0x0200, 0x2001, 0x0201, 0x789e, ++ 0x78a3, 0x0200, 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, ++ 0x0005, 0x2320, 0x9182, 0x0204, 0x1230, 0x2011, 0x0008, 0x8423, ++ 0x8423, 0x8423, 0x0488, 0x9182, 0x024c, 0x1240, 0x2011, 0x0007, ++ 0x8403, 0x8003, 0x9400, 0x9400, 0x9420, 0x0430, 0x9182, 0x02bc, ++ 0x1238, 0x2011, 0x0006, 0x8403, 0x8003, 0x9400, 0x9420, 0x00e0, ++ 0x9182, 0x034c, 0x1230, 0x2011, 0x0005, 0x8403, 0x8003, 0x9420, ++ 0x0098, 0x9182, 0x042c, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, ++ 0x0058, 0x9182, 0x059c, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, ++ 0x0018, 0x2011, 0x0002, 0x8423, 0x9482, 0x0228, 0x8002, 0x8020, ++ 0x8301, 0x9402, 0x0110, 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, ++ 0x789a, 0x012e, 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6814, ++ 0x9084, 0xffc0, 0x910d, 0x6916, 0x00de, 0x000e, 0x0005, 0x00d6, ++ 0x2069, 0x0200, 0x9005, 0x6810, 0x0110, 0xc0a5, 0x0008, 0xc0a4, ++ 0x6812, 0x00de, 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6810, ++ 0x9084, 0xfff8, 0x910d, 0x6912, 0x00de, 0x000e, 0x0005, 0x7938, ++ 0x080c, 0x0d5e, 0x00f6, 0x2079, 0x0200, 0x7902, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0x7902, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0xa001, 0x00fe, 0x0005, 0x0126, 0x2091, 0x2800, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x2009, 0x0000, 0x080c, 0x281f, ++ 0x080c, 0x273f, 0x080c, 0x2890, 0x9006, 0x080c, 0x276e, 0x9006, ++ 0x080c, 0x2751, 0x20a9, 0x0012, 0x1d04, 0x207c, 0x2091, 0x6000, ++ 0x1f04, 0x207c, 0x602f, 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, ++ 0x0400, 0x9084, 0xdfff, 0x6052, 0x6224, 0x080c, 0x286d, 0x080c, ++ 0x245d, 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x246d, 0x60e7, ++ 0x0000, 0x61ea, 0x60e3, 0x0002, 0x604b, 0xf7f7, 0x6043, 0x0000, ++ 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x149f, 0x00c6, 0x2061, ++ 0x0140, 0x608b, 0x000b, 0x608f, 0x10b8, 0x6093, 0x0000, 0x6097, ++ 0x0198, 0x00ce, 0x6004, 0x9085, 0x8000, 0x6006, 0x60bb, 0x0000, ++ 0x20a9, 0x0018, 0x60bf, 0x0000, 0x1f04, 0x20ba, 0x60bb, 0x0000, ++ 0x60bf, 0x0108, 0x60bf, 0x0012, 0x60bf, 0x0320, 0x60bf, 0x0018, ++ 0x601b, 0x00f0, 0x601f, 0x001e, 0x600f, 0x006b, 0x602b, 0x402c, ++ 0x012e, 0x0005, 0x00f6, 0x2079, 0x0140, 0x78c3, 0x0080, 0x78c3, ++ 0x0083, 0x78c3, 0x0000, 0x00fe, 0x0005, 0x2001, 0x1834, 0x2003, ++ 0x0000, 0x2001, 0x1833, 0x2003, 0x0001, 0x0005, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, 0x6028, 0x910c, 0x9184, ++ 0x5e2c, 0x1118, 0x9184, 0x0007, 0x002a, 0x9195, 0x0004, 0x9284, ++ 0x0007, 0x0002, 0x2105, 0x2102, 0x2102, 0x2102, 0x2104, 0x2102, ++ 0x2102, 0x2102, 0x080c, 0x0d65, 0x0029, 0x002e, 0x001e, 0x000e, ++ 0x012e, 0x0005, 0x00a6, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, ++ 0x1904, 0x2364, 0xd1f4, 0x190c, 0x0d5e, 0x080c, 0x70b7, 0x0904, ++ 0x2162, 0x080c, 0xbf61, 0x1120, 0x7000, 0x9086, 0x0003, 0x0580, ++ 0x6024, 0x9084, 0x1800, 0x0560, 0x080c, 0x70da, 0x0118, 0x080c, ++ 0x70c8, 0x1530, 0x2011, 0x0020, 0x080c, 0x286d, 0x6043, 0x0000, ++ 0x080c, 0xbf61, 0x0168, 0x080c, 0x70da, 0x1150, 0x2001, 0x1978, ++ 0x2003, 0x0001, 0x6027, 0x1800, 0x080c, 0x6f2d, 0x0804, 0x2367, ++ 0x70a0, 0x9005, 0x1150, 0x70a3, 0x0001, 0x00d6, 0x2069, 0x0140, ++ 0x080c, 0x710e, 0x00de, 0x1904, 0x2367, 0x080c, 0x73c1, 0x0428, ++ 0x080c, 0x70da, 0x1590, 0x6024, 0x9084, 0x1800, 0x1108, 0x0468, ++ 0x080c, 0x73c1, 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x080c, 0x6fe8, ++ 0x0804, 0x2364, 0xd1ac, 0x1508, 0x6024, 0xd0dc, 0x1170, 0xd0e4, ++ 0x1178, 0xd0d4, 0x1190, 0xd0cc, 0x0130, 0x7094, 0x9086, 0x0028, ++ 0x1110, 0x080c, 0x729a, 0x0804, 0x2364, 0x080c, 0x73bc, 0x0048, ++ 0x2001, 0x194e, 0x2003, 0x0002, 0x0020, 0x080c, 0x71f8, 0x0804, ++ 0x2364, 0x080c, 0x733c, 0x0804, 0x2364, 0xd1ac, 0x0904, 0x227e, ++ 0x080c, 0x70b7, 0x11d0, 0x2011, 0x0020, 0x080c, 0x286d, 0x0006, ++ 0x0026, 0x0036, 0x080c, 0x70d1, 0x1158, 0x080c, 0x73b7, 0x080c, ++ 0x5cdc, 0x080c, 0x6fe8, 0x003e, 0x002e, 0x000e, 0x00ae, 0x0005, ++ 0x003e, 0x002e, 0x000e, 0x080c, 0x708b, 0x0016, 0x0046, 0x00c6, ++ 0x644c, 0x9486, 0xf0f0, 0x1138, 0x2061, 0x0100, 0x644a, 0x6043, ++ 0x0090, 0x6043, 0x0010, 0x74d6, 0x948c, 0xff00, 0x7038, 0xd084, ++ 0x0178, 0x9186, 0xf800, 0x1160, 0x7044, 0xd084, 0x1148, 0xc085, ++ 0x7046, 0x0036, 0x2418, 0x2011, 0x8016, 0x080c, 0x48d8, 0x003e, ++ 0x080c, 0xbf5a, 0x1904, 0x2255, 0x9196, 0xff00, 0x05a8, 0x705c, ++ 0x9084, 0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, ++ 0xd184, 0x1550, 0x080c, 0x3186, 0x0128, 0xc18d, 0x7132, 0x080c, ++ 0x665f, 0x1510, 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, ++ 0xff00, 0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x2255, ++ 0x7038, 0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, ++ 0x2255, 0xc1ad, 0x2102, 0x0036, 0x73d4, 0x2011, 0x8013, 0x080c, ++ 0x48d8, 0x003e, 0x0804, 0x2255, 0x7038, 0xd08c, 0x1140, 0x2001, ++ 0x180c, 0x200c, 0xd1ac, 0x1904, 0x2255, 0xc1ad, 0x2102, 0x0036, ++ 0x73d4, 0x2011, 0x8013, 0x080c, 0x48d8, 0x003e, 0x7130, 0xc185, ++ 0x7132, 0x2011, 0x1854, 0x220c, 0x00f0, 0x0016, 0x2009, 0x0001, ++ 0x2011, 0x0100, 0x080c, 0x83eb, 0x2019, 0x000e, 0x00c6, 0x2061, ++ 0x0000, 0x080c, 0xd1eb, 0x00ce, 0x9484, 0x00ff, 0x9080, 0x318b, ++ 0x200d, 0x918c, 0xff00, 0x810f, 0x2120, 0x9006, 0x2009, 0x000e, ++ 0x080c, 0xd273, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0002, ++ 0x2019, 0x0004, 0x080c, 0x2fc5, 0x001e, 0x0078, 0x0156, 0x00b6, ++ 0x20a9, 0x007f, 0x900e, 0x080c, 0x6270, 0x1110, 0x080c, 0x5cf6, ++ 0x8108, 0x1f04, 0x224b, 0x00be, 0x015e, 0x00ce, 0x004e, 0x080c, ++ 0x98c8, 0x080c, 0x9b6d, 0x080c, 0x98e4, 0x60e3, 0x0000, 0x001e, ++ 0x2001, 0x1800, 0x2014, 0x9296, 0x0004, 0x1170, 0xd19c, 0x11b0, ++ 0x2011, 0x180c, 0x2214, 0xd29c, 0x1120, 0x6204, 0x9295, 0x0002, ++ 0x6206, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x1825, ++ 0x2003, 0x0000, 0x2011, 0x0020, 0x080c, 0x286d, 0xd194, 0x0904, ++ 0x2364, 0x0016, 0x080c, 0x98c8, 0x6220, 0xd2b4, 0x0904, 0x230c, ++ 0x080c, 0x820b, 0x080c, 0x8fb7, 0x2011, 0x0004, 0x080c, 0x286d, ++ 0x00f6, 0x2019, 0x19c4, 0x2304, 0x907d, 0x0904, 0x22d9, 0x7804, ++ 0x9086, 0x0032, 0x15f0, 0x00d6, 0x00c6, 0x00e6, 0x0096, 0x2069, ++ 0x0140, 0x782c, 0x685e, 0x7808, 0x685a, 0x6043, 0x0002, 0x2001, ++ 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, 0x2001, 0x003c, 0x8001, ++ 0x1df0, 0x080c, 0x2843, 0x2001, 0x001e, 0x8001, 0x0240, 0x20a9, ++ 0x0009, 0x080c, 0x27fa, 0x6904, 0xd1dc, 0x1140, 0x0cb0, 0x2001, ++ 0x0100, 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x080c, 0x8874, ++ 0x080c, 0x98e4, 0x7814, 0x2048, 0xa867, 0x0103, 0x2f60, 0x080c, ++ 0x9be7, 0x009e, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x00ae, ++ 0x0005, 0x00fe, 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, ++ 0x0110, 0x080c, 0x2843, 0x00de, 0x00c6, 0x2061, 0x19b8, 0x6034, ++ 0x080c, 0xbf61, 0x0120, 0x909a, 0x0003, 0x1258, 0x0018, 0x909a, ++ 0x00c8, 0x1238, 0x8000, 0x6036, 0x00ce, 0x080c, 0x8f8f, 0x0804, ++ 0x2361, 0x2061, 0x0100, 0x62c0, 0x080c, 0x97fe, 0x2019, 0x19c4, ++ 0x2304, 0x9065, 0x0130, 0x6003, 0x0001, 0x2009, 0x0027, 0x080c, ++ 0x9c85, 0x00ce, 0x0804, 0x2361, 0xd2bc, 0x05e0, 0x080c, 0x8218, ++ 0x2011, 0x0004, 0x080c, 0x286d, 0x00d6, 0x2069, 0x0140, 0x6804, ++ 0x9084, 0x4000, 0x0110, 0x080c, 0x2843, 0x00de, 0x00c6, 0x2061, ++ 0x19b8, 0x6050, 0x080c, 0xbf61, 0x0120, 0x909a, 0x0003, 0x1638, ++ 0x0018, 0x909a, 0x00c8, 0x1618, 0x8000, 0x6052, 0x604c, 0x00ce, ++ 0x9005, 0x0578, 0x2009, 0x07d0, 0x080c, 0x8210, 0x9080, 0x0008, ++ 0x2004, 0x9086, 0x0006, 0x1138, 0x2009, 0x1984, 0x2011, 0x0012, ++ 0x080c, 0x287c, 0x00f0, 0x2009, 0x1984, 0x2011, 0x0016, 0x080c, ++ 0x287c, 0x00b8, 0x2011, 0x0004, 0x080c, 0x286d, 0x0090, 0x0036, ++ 0x2019, 0x0001, 0x080c, 0x9286, 0x003e, 0x2019, 0x19cb, 0x2304, ++ 0x9065, 0x0130, 0x2009, 0x004f, 0x6003, 0x0003, 0x080c, 0x9c85, ++ 0x00ce, 0x080c, 0x98e4, 0x001e, 0xd19c, 0x0904, 0x23c2, 0x7038, ++ 0xd0ac, 0x1538, 0x0016, 0x0156, 0x2011, 0x0008, 0x080c, 0x286d, ++ 0x6050, 0xc0e5, 0x6052, 0x20a9, 0x0367, 0x1f04, 0x238f, 0x1d04, ++ 0x2377, 0x080c, 0x823f, 0x6020, 0xd09c, 0x1db8, 0x00f6, 0x2079, ++ 0x0100, 0x080c, 0x27aa, 0x00fe, 0x1d80, 0x6050, 0xc0e4, 0x6052, ++ 0x2011, 0x0008, 0x080c, 0x286d, 0x015e, 0x001e, 0x0498, 0x015e, ++ 0x001e, 0x0016, 0x6028, 0xc09c, 0x602a, 0x080c, 0x98c8, 0x080c, ++ 0x9b6d, 0x080c, 0x98e4, 0x60e3, 0x0000, 0x080c, 0xd5fb, 0x080c, ++ 0xd616, 0x080c, 0x5391, 0xd0fc, 0x1138, 0x080c, 0xbf5a, 0x1120, ++ 0x9085, 0x0001, 0x080c, 0x70fe, 0x9006, 0x080c, 0x2833, 0x2009, ++ 0x0002, 0x080c, 0x281f, 0x00e6, 0x2071, 0x1800, 0x7003, 0x0004, ++ 0x080c, 0x0e9c, 0x00ee, 0x2011, 0x0008, 0x080c, 0x286d, 0x080c, ++ 0x0bab, 0x001e, 0x918c, 0xffd0, 0x2110, 0x080c, 0x286d, 0x00ae, ++ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x00f6, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0x1800, 0x71cc, 0x70ce, 0x9116, 0x0904, ++ 0x241c, 0x81ff, 0x01a0, 0x2009, 0x0000, 0x080c, 0x281f, 0x2011, ++ 0x8011, 0x2019, 0x010e, 0x231c, 0x939e, 0x0007, 0x1118, 0x2019, ++ 0x0001, 0x0010, 0x2019, 0x0000, 0x080c, 0x48d8, 0x0468, 0x2001, ++ 0x1979, 0x200c, 0x81ff, 0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, ++ 0x0118, 0x2019, 0x0003, 0x0008, 0x2118, 0x2011, 0x8012, 0x080c, ++ 0x48d8, 0x080c, 0x0e9c, 0x080c, 0x5391, 0xd0fc, 0x11a8, 0x080c, ++ 0xbf5a, 0x1190, 0x00c6, 0x080c, 0x24b8, 0x080c, 0x98c8, 0x080c, ++ 0x91e1, 0x080c, 0x98e4, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, ++ 0x0002, 0x080c, 0x2fc5, 0x00ce, 0x012e, 0x00fe, 0x00ee, 0x003e, ++ 0x002e, 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff, 0x2130, ++ 0x9094, 0xff00, 0x11f0, 0x2011, 0x1836, 0x2214, 0xd2ac, 0x11c8, ++ 0x81ff, 0x01e8, 0x2011, 0x181e, 0x2204, 0x9106, 0x1190, 0x2011, ++ 0x181f, 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, 0x9206, 0x1148, ++ 0x2011, 0x181f, 0x2214, 0x9294, 0x00ff, 0x9584, 0x00ff, 0x9206, ++ 0x1120, 0x2500, 0x080c, 0x7d70, 0x0048, 0x9584, 0x00ff, 0x9080, ++ 0x318b, 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005, 0x9080, ++ 0x318b, 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069, 0x0140, ++ 0x2001, 0x1817, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006, 0x6852, ++ 0x6856, 0x1f04, 0x2468, 0x00de, 0x0005, 0x0006, 0x00d6, 0x0026, ++ 0x2069, 0x0140, 0x2001, 0x1817, 0x2102, 0x8114, 0x8214, 0x8214, ++ 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff, 0x1128, ++ 0x9184, 0x000f, 0x9080, 0xd62a, 0x2005, 0x6856, 0x8211, 0x1f04, ++ 0x247d, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061, 0x1800, ++ 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce, 0x0005, ++ 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140, 0x6980, ++ 0x9116, 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8, 0x2001, ++ 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04, 0x24ad, ++ 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e, 0x0005, ++ 0x080c, 0x538d, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006, 0x0046, ++ 0x2020, 0x2009, 0x002e, 0x080c, 0xd273, 0x004e, 0x0005, 0x00f6, ++ 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904, 0x2524, ++ 0x080c, 0x279a, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600, 0x1120, ++ 0x2011, 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120, 0x2011, ++ 0x8000, 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016, 0x2009, ++ 0x0001, 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009, 0x0002, ++ 0x00b0, 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004, 0x0078, ++ 0x908e, 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040, 0x9084, ++ 0x0700, 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058, 0x2300, ++ 0x9080, 0x0020, 0x2018, 0x080c, 0x8419, 0x928c, 0xff00, 0x0110, ++ 0x2011, 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2, 0x2009, ++ 0x0138, 0x220a, 0x080c, 0x70b7, 0x1118, 0x2009, 0x193e, 0x220a, ++ 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, 0x0126, ++ 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, 0x200c, ++ 0x8000, 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0d5e, 0x002e, ++ 0x001e, 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004, 0xd0dc, ++ 0x0168, 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e, 0x004c, ++ 0x1128, 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e, 0x2001, ++ 0x0227, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x2001, ++ 0x0226, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x0005, ++ 0x0018, 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000, 0x1800, ++ 0x0156, 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x1961, 0x2004, ++ 0x908a, 0x0007, 0x1a0c, 0x0d65, 0x0033, 0x00ee, 0x002e, 0x001e, ++ 0x000e, 0x015e, 0x0005, 0x2582, 0x25a0, 0x25c4, 0x25c6, 0x25ef, ++ 0x25f1, 0x25f3, 0x2001, 0x0001, 0x080c, 0x23c9, 0x080c, 0x27e4, ++ 0x2001, 0x1963, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7, 0x782a, ++ 0x9006, 0x20a9, 0x0009, 0x080c, 0x27b6, 0x2001, 0x1961, 0x2003, ++ 0x0006, 0x2009, 0x001e, 0x2011, 0x25f4, 0x080c, 0x821d, 0x0005, ++ 0x2009, 0x1966, 0x200b, 0x0000, 0x2001, 0x196b, 0x2003, 0x0036, ++ 0x2001, 0x196a, 0x2003, 0x002a, 0x2001, 0x1963, 0x2003, 0x0001, ++ 0x9006, 0x080c, 0x2751, 0x2001, 0xffff, 0x20a9, 0x0009, 0x080c, ++ 0x27b6, 0x2001, 0x1961, 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, ++ 0x25f4, 0x080c, 0x821d, 0x0005, 0x080c, 0x0d65, 0x2001, 0x196b, ++ 0x2003, 0x0036, 0x2001, 0x1963, 0x2003, 0x0003, 0x7a38, 0x9294, ++ 0x0005, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, ++ 0x080c, 0x2751, 0x2001, 0x1967, 0x2003, 0x0000, 0x2001, 0xffff, ++ 0x20a9, 0x0009, 0x080c, 0x27b6, 0x2001, 0x1961, 0x2003, 0x0006, ++ 0x2009, 0x001e, 0x2011, 0x25f4, 0x080c, 0x821d, 0x0005, 0x080c, ++ 0x0d65, 0x080c, 0x0d65, 0x0005, 0x0006, 0x0016, 0x0026, 0x00e6, ++ 0x00f6, 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x2001, ++ 0x1963, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d65, 0x0043, 0x012e, ++ 0x015e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, 0x2616, ++ 0x2636, 0x2676, 0x26a6, 0x26ca, 0x26da, 0x26dc, 0x080c, 0x27aa, ++ 0x11b0, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1969, 0x2104, ++ 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d, 0x0008, ++ 0xc085, 0x200a, 0x2001, 0x1961, 0x2003, 0x0001, 0x0030, 0x080c, ++ 0x2700, 0x2001, 0xffff, 0x080c, 0x2591, 0x0005, 0x080c, 0x26de, ++ 0x05e0, 0x2009, 0x196a, 0x2104, 0x8001, 0x200a, 0x080c, 0x27aa, ++ 0x1178, 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0005, 0x0518, 0x2009, 0x1969, 0x2104, 0xc085, 0x200a, ++ 0x2009, 0x1966, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0118, ++ 0x080c, 0x26e6, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, ++ 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x276e, 0x2001, 0x1963, 0x2003, 0x0002, 0x0028, 0x2001, 0x1961, ++ 0x2003, 0x0003, 0x0010, 0x080c, 0x25b3, 0x0005, 0x080c, 0x26de, ++ 0x0560, 0x2009, 0x196a, 0x2104, 0x8001, 0x200a, 0x080c, 0x27aa, ++ 0x1168, 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x1961, 0x2003, ++ 0x0003, 0x2001, 0x1962, 0x2003, 0x0000, 0x00b8, 0x2009, 0x196a, ++ 0x2104, 0x9005, 0x1118, 0x080c, 0x2723, 0x0010, 0x080c, 0x26f3, ++ 0x080c, 0x26e6, 0x2009, 0x1966, 0x200b, 0x0000, 0x2001, 0x1963, ++ 0x2003, 0x0001, 0x080c, 0x25b3, 0x0000, 0x0005, 0x04b9, 0x0508, ++ 0x080c, 0x27aa, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, ++ 0x1967, 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108, 0x0078, ++ 0x2001, 0x196c, 0x2003, 0x000a, 0x2009, 0x1969, 0x2104, 0xc0fd, ++ 0x200a, 0x0038, 0x0419, 0x2001, 0x1963, 0x2003, 0x0004, 0x080c, ++ 0x25de, 0x0005, 0x0099, 0x0168, 0x080c, 0x27aa, 0x1138, 0x7850, ++ 0x9084, 0xefff, 0x7852, 0x080c, 0x25ca, 0x0018, 0x0079, 0x080c, ++ 0x25de, 0x0005, 0x080c, 0x0d65, 0x080c, 0x0d65, 0x2009, 0x196b, ++ 0x2104, 0x8001, 0x200a, 0x090c, 0x273f, 0x0005, 0x7a38, 0x9294, ++ 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, ++ 0x080c, 0x276e, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, ++ 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x2751, 0x0005, ++ 0x2009, 0x1966, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0108, ++ 0x0068, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, ++ 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, 0x7a38, 0x9294, ++ 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, ++ 0x080c, 0x276e, 0x0005, 0x0086, 0x2001, 0x1969, 0x2004, 0x9084, ++ 0x7fff, 0x090c, 0x0d65, 0x2009, 0x1968, 0x2144, 0x8846, 0x280a, ++ 0x9844, 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, 0x080c, 0x0d65, ++ 0x9006, 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, 0x0005, 0x0006, ++ 0x0156, 0x2001, 0x1961, 0x20a9, 0x0009, 0x2003, 0x0000, 0x8000, ++ 0x1f04, 0x2745, 0x2001, 0x1968, 0x2003, 0x8000, 0x015e, 0x000e, ++ 0x0005, 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0158, 0x7838, ++ 0x9084, 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, 0x196e, 0x210c, ++ 0x795a, 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0006, 0x783a, ++ 0x2009, 0x196f, 0x210c, 0x795a, 0x00fe, 0x0005, 0x00f6, 0x2079, ++ 0x0100, 0x9085, 0x0000, 0x0158, 0x7838, 0x9084, 0xfffa, 0x9085, ++ 0x0004, 0x783a, 0x7850, 0x9084, 0xfff0, 0x7852, 0x00c8, 0x7838, ++ 0x9084, 0xfffb, 0x9085, 0x0005, 0x783a, 0x7850, 0x9084, 0xfff0, ++ 0x0016, 0x2009, 0x0003, 0x210c, 0x918c, 0x0600, 0x918e, 0x0400, ++ 0x0118, 0x9085, 0x000a, 0x0010, 0x9085, 0x0000, 0x001e, 0x7852, ++ 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0007, ++ 0x000e, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0009, ++ 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, 0x7820, 0x080c, 0x2819, ++ 0xd09c, 0x1110, 0x1f04, 0x27ad, 0x015e, 0x0005, 0x0126, 0x0016, ++ 0x0006, 0x2091, 0x8000, 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, ++ 0x783b, 0x0007, 0x0090, 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, ++ 0x0060, 0x9186, 0x0002, 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, ++ 0x0003, 0x1118, 0x783b, 0x0004, 0x0000, 0x0006, 0x1d04, 0x27d6, ++ 0x080c, 0x823f, 0x1f04, 0x27d6, 0x7850, 0x9085, 0x1000, 0x7852, ++ 0x000e, 0x001e, 0x012e, 0x0005, 0x080c, 0x28d4, 0x0005, 0x0006, ++ 0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac, ++ 0x1100, 0x7854, 0xd08c, 0x1110, 0x1f04, 0x27f1, 0x00fe, 0x015e, ++ 0x000e, 0x0005, 0x1d04, 0x27fa, 0x080c, 0x823f, 0x1f04, 0x27fa, ++ 0x0005, 0x0006, 0x2001, 0x196d, 0x2004, 0x9086, 0x0000, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0x196d, 0x2004, 0x9086, 0x0001, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0x196d, 0x2004, 0x9086, 0x0002, 0x000e, ++ 0x0005, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, ++ 0x2001, 0x1979, 0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, ++ 0xd0dc, 0x0140, 0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, ++ 0xa001, 0x200a, 0x0005, 0x0016, 0x0026, 0x080c, 0x70d1, 0x0108, ++ 0xc0bc, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, 0x220a, ++ 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, ++ 0x9294, 0x0001, 0x9285, 0x1000, 0x200a, 0x220a, 0x002e, 0x001e, ++ 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, ++ 0x9215, 0x220a, 0x002e, 0x001e, 0x0005, 0x0006, 0x0016, 0x2009, ++ 0x0140, 0x2104, 0x1128, 0x080c, 0x70d1, 0x0110, 0xc0bc, 0x0008, ++ 0xc0bd, 0x200a, 0x001e, 0x000e, 0x0005, 0x00f6, 0x2079, 0x0380, ++ 0x7843, 0x0101, 0x7844, 0xd084, 0x1de8, 0x2001, 0x0109, 0x2202, ++ 0x7843, 0x0100, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0380, 0x7843, ++ 0x0202, 0x7844, 0xd08c, 0x1de8, 0x2079, 0x0100, 0x7814, 0x9104, ++ 0x9205, 0x7a16, 0x2079, 0x0380, 0x7843, 0x0200, 0x00fe, 0x0005, ++ 0x0016, 0x0026, 0x0036, 0x00c6, 0x2061, 0x0100, 0x6050, 0x9084, ++ 0xfbff, 0x9085, 0x0040, 0x6052, 0x20a9, 0x0002, 0x080c, 0x27fa, ++ 0x6050, 0x9085, 0x0400, 0x9084, 0xff9f, 0x6052, 0x20a9, 0x0005, ++ 0x080c, 0x27fa, 0x6054, 0xd0bc, 0x090c, 0x0d65, 0x20a9, 0x0005, ++ 0x080c, 0x27fa, 0x6054, 0xd0ac, 0x090c, 0x0d65, 0x2009, 0x1980, ++ 0x9084, 0x7e00, 0x8007, 0x8004, 0x8004, 0x200a, 0x9085, 0x0000, ++ 0x605a, 0x2009, 0x196e, 0x2011, 0x196f, 0x6358, 0x939c, 0x38df, ++ 0x2320, 0x939d, 0x0000, 0x94a5, 0x0000, 0x230a, 0x2412, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x0006, 0x00c6, 0x2061, 0x0100, ++ 0x6050, 0xc0cd, 0x6052, 0x00ce, 0x000e, 0x0005, 0x2dda, 0x2dda, ++ 0x29de, 0x29de, 0x29ea, 0x29ea, 0x29f6, 0x29f6, 0x2a04, 0x2a04, ++ 0x2a10, 0x2a10, 0x2a1e, 0x2a1e, 0x2a2c, 0x2a2c, 0x2a3e, 0x2a3e, ++ 0x2a4a, 0x2a4a, 0x2a58, 0x2a58, 0x2a76, 0x2a76, 0x2a96, 0x2a96, ++ 0x2a66, 0x2a66, 0x2a86, 0x2a86, 0x2aa4, 0x2aa4, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2ab6, 0x2ab6, ++ 0x2ac2, 0x2ac2, 0x2ad0, 0x2ad0, 0x2ade, 0x2ade, 0x2aee, 0x2aee, ++ 0x2afc, 0x2afc, 0x2b0c, 0x2b0c, 0x2b1c, 0x2b1c, 0x2b2e, 0x2b2e, ++ 0x2b3c, 0x2b3c, 0x2b4c, 0x2b4c, 0x2b6e, 0x2b6e, 0x2b92, 0x2b92, ++ 0x2b5c, 0x2b5c, 0x2b80, 0x2b80, 0x2ba2, 0x2ba2, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2bb6, 0x2bb6, ++ 0x2bc2, 0x2bc2, 0x2bd0, 0x2bd0, 0x2bde, 0x2bde, 0x2bee, 0x2bee, ++ 0x2bfc, 0x2bfc, 0x2c0c, 0x2c0c, 0x2c1c, 0x2c1c, 0x2c2e, 0x2c2e, ++ 0x2c3c, 0x2c3c, 0x2c4c, 0x2c4c, 0x2c5c, 0x2c5c, 0x2c6e, 0x2c6e, ++ 0x2c7e, 0x2c7e, 0x2c90, 0x2c90, 0x2ca2, 0x2ca2, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2cb6, 0x2cb6, ++ 0x2cc4, 0x2cc4, 0x2cd4, 0x2cd4, 0x2ce4, 0x2ce4, 0x2cf6, 0x2cf6, ++ 0x2d06, 0x2d06, 0x2d18, 0x2d18, 0x2d2a, 0x2d2a, 0x2d3e, 0x2d3e, ++ 0x2d4e, 0x2d4e, 0x2d60, 0x2d60, 0x2d72, 0x2d72, 0x2d86, 0x2d86, ++ 0x2d97, 0x2d97, 0x2daa, 0x2daa, 0x2dbd, 0x2dbd, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, ++ 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x2a3c, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x20e6, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x1f20, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, ++ 0x080c, 0x20e6, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f4a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x20e6, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x20e6, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0xa001, 0x0cf0, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x132a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x1f20, 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, ++ 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x132a, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x20e6, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2527, 0x080c, 0x1f20, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x1f20, 0x080c, 0x20e6, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x20e6, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, ++ 0x080c, 0x20e6, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x1f20, 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x132a, 0x080c, 0x1f4a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x132a, 0x080c, 0x1f4a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x992e, 0x080c, 0x20e6, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x1f20, 0x080c, 0x992e, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, ++ 0x080c, 0x992e, 0x080c, 0x20e6, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, 0x080c, 0x20e6, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x1f20, 0x080c, 0x992e, 0x080c, 0x132a, 0x080c, 0x1f4a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x1f20, 0x080c, 0x992e, 0x080c, 0x20e6, ++ 0x080c, 0x132a, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, ++ 0x080c, 0x992e, 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, ++ 0x080c, 0x992e, 0x080c, 0x20e6, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x080c, 0x20e6, 0x080c, 0x1f4a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x992e, 0x080c, 0x1f4a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x080c, 0x1f4a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, ++ 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, ++ 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x992e, 0x080c, 0x132a, ++ 0x0804, 0x2dd2, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x992e, ++ 0x080c, 0x20e6, 0x080c, 0x132a, 0x0804, 0x2dd2, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, ++ 0x080c, 0x992e, 0x080c, 0x132a, 0x080c, 0x1f4a, 0x04d8, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2527, 0x080c, 0x992e, 0x080c, 0x20e6, 0x080c, 0x132a, 0x080c, ++ 0x1f4a, 0x0440, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, ++ 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, 0x1f20, 0x080c, 0x132a, ++ 0x080c, 0x992e, 0x080c, 0x1f4a, 0x00a8, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2527, 0x080c, ++ 0x1f20, 0x080c, 0x992e, 0x080c, 0x20e6, 0x080c, 0x132a, 0x080c, ++ 0x1f4a, 0x0000, 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, ++ 0x000e, 0x010e, 0x000d, 0x00b6, 0x00c6, 0x0026, 0x0046, 0x9026, ++ 0x080c, 0x6625, 0x1904, 0x2ee1, 0x72d8, 0x2001, 0x194d, 0x2004, ++ 0x9005, 0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, ++ 0x2ee1, 0x080c, 0x2ee6, 0x0804, 0x2ee1, 0xd2cc, 0x1904, 0x2ee1, ++ 0x080c, 0x70b7, 0x1120, 0x70ab, 0xffff, 0x0804, 0x2ee1, 0xd294, ++ 0x0120, 0x70ab, 0xffff, 0x0804, 0x2ee1, 0x080c, 0x3181, 0x0160, ++ 0x080c, 0xbf61, 0x0128, 0x2001, 0x1817, 0x203c, 0x0804, 0x2e73, ++ 0x70ab, 0xffff, 0x0804, 0x2ee1, 0x2001, 0x1817, 0x203c, 0x7290, ++ 0xd284, 0x0904, 0x2e73, 0xd28c, 0x1904, 0x2e73, 0x0036, 0x73a8, ++ 0x938e, 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1d80, ++ 0x2c04, 0x938c, 0x0001, 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, ++ 0x9084, 0x00ff, 0x970e, 0x05a8, 0x908e, 0x0000, 0x0590, 0x908e, ++ 0x00ff, 0x1150, 0x7230, 0xd284, 0x1588, 0x7290, 0xc28d, 0x7292, ++ 0x70ab, 0xffff, 0x003e, 0x0478, 0x0026, 0x2011, 0x0010, 0x080c, ++ 0x668b, 0x002e, 0x0118, 0x70ab, 0xffff, 0x0410, 0x900e, 0x080c, ++ 0x2424, 0x080c, 0x6210, 0x11c0, 0x080c, 0x6667, 0x1168, 0x7030, ++ 0xd08c, 0x0130, 0xb800, 0xd0bc, 0x0138, 0x080c, 0x655f, 0x0120, ++ 0x080c, 0x2eff, 0x0148, 0x0028, 0x080c, 0x3057, 0x080c, 0x2f2b, ++ 0x0118, 0x8318, 0x0804, 0x2e25, 0x73aa, 0x0010, 0x70ab, 0xffff, ++ 0x003e, 0x0804, 0x2ee1, 0x9780, 0x318b, 0x203d, 0x97bc, 0xff00, ++ 0x873f, 0x2041, 0x007e, 0x70a8, 0x9096, 0xffff, 0x1118, 0x900e, ++ 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, 0x20a8, 0x0020, ++ 0x70ab, 0xffff, 0x0804, 0x2ee1, 0x2700, 0x0156, 0x0016, 0x9106, ++ 0x0904, 0x2ed6, 0x0026, 0x2011, 0x0010, 0x080c, 0x668b, 0x002e, ++ 0x0120, 0x2009, 0xffff, 0x0804, 0x2ede, 0xc484, 0x080c, 0x6270, ++ 0x0138, 0x080c, 0xbf61, 0x1590, 0x080c, 0x6210, 0x15b8, 0x0008, ++ 0xc485, 0x080c, 0x6667, 0x1130, 0x7030, 0xd08c, 0x01f8, 0xb800, ++ 0xd0bc, 0x11e0, 0x7290, 0xd28c, 0x0180, 0x080c, 0x6667, 0x9082, ++ 0x0006, 0x02e0, 0xd484, 0x1118, 0x080c, 0x6234, 0x0028, 0x080c, ++ 0x30ef, 0x01a0, 0x080c, 0x311a, 0x0088, 0x080c, 0x3057, 0x080c, ++ 0xbf61, 0x1160, 0x080c, 0x2f2b, 0x0188, 0x0040, 0x080c, 0xbf61, ++ 0x1118, 0x080c, 0x30ef, 0x0110, 0x0451, 0x0140, 0x001e, 0x8108, ++ 0x015e, 0x1f04, 0x2e8c, 0x70ab, 0xffff, 0x0018, 0x001e, 0x015e, ++ 0x71aa, 0x004e, 0x002e, 0x00ce, 0x00be, 0x0005, 0x00c6, 0x0016, ++ 0x70ab, 0x0001, 0x2009, 0x007e, 0x080c, 0x6210, 0x1168, 0xb813, ++ 0x00ff, 0xb817, 0xfffe, 0x080c, 0x3057, 0x04a9, 0x0128, 0x70d8, ++ 0xc0bd, 0x70da, 0x080c, 0xbcae, 0x001e, 0x00ce, 0x0005, 0x0016, ++ 0x0076, 0x00d6, 0x00c6, 0x2001, 0x1858, 0x2004, 0x9084, 0x00ff, ++ 0xb842, 0x080c, 0x9c58, 0x01d0, 0x2b00, 0x6012, 0x080c, 0xbcdb, ++ 0x6023, 0x0001, 0x9006, 0x080c, 0x61ad, 0x2001, 0x0000, 0x080c, ++ 0x61c1, 0x0126, 0x2091, 0x8000, 0x70a4, 0x8000, 0x70a6, 0x012e, ++ 0x2009, 0x0004, 0x080c, 0x9c85, 0x9085, 0x0001, 0x00ce, 0x00de, ++ 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001, ++ 0x1858, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0x9c58, 0x0548, ++ 0x2b00, 0x6012, 0xb800, 0xc0c4, 0xb802, 0xb8a0, 0x9086, 0x007e, ++ 0x0140, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1110, 0x080c, ++ 0x3006, 0x080c, 0xbcdb, 0x6023, 0x0001, 0x9006, 0x080c, 0x61ad, ++ 0x2001, 0x0002, 0x080c, 0x61c1, 0x0126, 0x2091, 0x8000, 0x70a4, ++ 0x8000, 0x70a6, 0x012e, 0x2009, 0x0002, 0x080c, 0x9c85, 0x9085, ++ 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00b6, 0x00c6, ++ 0x0026, 0x2009, 0x0080, 0x080c, 0x6210, 0x1140, 0xb813, 0x00ff, ++ 0xb817, 0xfffc, 0x0039, 0x0110, 0x70df, 0xffff, 0x002e, 0x00ce, ++ 0x00be, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x080c, 0x9b91, ++ 0x01d0, 0x2b00, 0x6012, 0x080c, 0xbcdb, 0x6023, 0x0001, 0x9006, ++ 0x080c, 0x61ad, 0x2001, 0x0002, 0x080c, 0x61c1, 0x0126, 0x2091, ++ 0x8000, 0x70e0, 0x8000, 0x70e2, 0x012e, 0x2009, 0x0002, 0x080c, ++ 0x9c85, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, ++ 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c, ++ 0x6210, 0x11b8, 0xb813, 0x00ff, 0xb817, 0xfffd, 0xb8c7, 0x0004, ++ 0x080c, 0x9b91, 0x0170, 0x2b00, 0x6012, 0x6316, 0x6023, 0x0001, ++ 0x620a, 0x080c, 0xbcdb, 0x2009, 0x0022, 0x080c, 0x9c85, 0x9085, ++ 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066, ++ 0x0036, 0x0026, 0x00b6, 0x21f0, 0x9036, 0x080c, 0x98c8, 0x1110, ++ 0x2031, 0x0001, 0x0066, 0x080c, 0x8646, 0x080c, 0x85c6, 0x080c, ++ 0x981e, 0x080c, 0xab46, 0x006e, 0x86ff, 0x0110, 0x080c, 0x98e4, ++ 0x3e08, 0x2130, 0x81ff, 0x0120, 0x20a9, 0x007e, 0x900e, 0x0018, ++ 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x6270, 0x1140, 0x9686, ++ 0x0002, 0x1118, 0xb800, 0xd0bc, 0x1110, 0x080c, 0x5cf6, 0x001e, ++ 0x8108, 0x1f04, 0x2feb, 0x9686, 0x0001, 0x190c, 0x3155, 0x00be, ++ 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, ++ 0x0046, 0x0036, 0x0026, 0x0016, 0x00b6, 0x9016, 0x080c, 0x98c8, ++ 0x1110, 0x2011, 0x0001, 0x0026, 0x6210, 0x2258, 0xbaa0, 0x0026, ++ 0x2019, 0x0029, 0x080c, 0x863b, 0x0076, 0x2039, 0x0000, 0x080c, ++ 0x852a, 0x2c08, 0x080c, 0xcfc8, 0x007e, 0x001e, 0x002e, 0x82ff, ++ 0x0110, 0x080c, 0x98e4, 0xba10, 0xbb14, 0xbc84, 0x080c, 0x5cf6, ++ 0xba12, 0xbb16, 0xbc86, 0x00be, 0x001e, 0x002e, 0x003e, 0x004e, ++ 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x00b6, 0x6010, 0x2058, ++ 0xb8a0, 0x00be, 0x9086, 0x0080, 0x0150, 0x2071, 0x1800, 0x70a4, ++ 0x9005, 0x0110, 0x8001, 0x70a6, 0x000e, 0x00ee, 0x0005, 0x2071, ++ 0x1800, 0x70e0, 0x9005, 0x0dc0, 0x8001, 0x70e2, 0x0ca8, 0xb800, ++ 0xc08c, 0xb802, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x00b6, 0x0046, ++ 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x9016, 0x080c, 0x98c8, ++ 0x1110, 0x2011, 0x0001, 0x0026, 0x81ff, 0x1118, 0x20a9, 0x0001, ++ 0x0070, 0x080c, 0x538d, 0xd0c4, 0x0138, 0x0030, 0x9006, 0x2020, ++ 0x2009, 0x002d, 0x080c, 0xd273, 0x20a9, 0x0800, 0x9016, 0x0026, ++ 0x928e, 0x007e, 0x0904, 0x30c9, 0x928e, 0x007f, 0x0904, 0x30c9, ++ 0x928e, 0x0080, 0x05f0, 0x9288, 0x1000, 0x210c, 0x81ff, 0x05c8, ++ 0x8fff, 0x1150, 0x2001, 0x195f, 0x0006, 0x2003, 0x0001, 0x080c, ++ 0x30dc, 0x000e, 0x2003, 0x0000, 0x00b6, 0x00c6, 0x2158, 0x2001, ++ 0x0001, 0x080c, 0x6631, 0x00ce, 0x00be, 0x2019, 0x0029, 0x080c, ++ 0x863b, 0x0076, 0x2039, 0x0000, 0x080c, 0x852a, 0x00b6, 0x00c6, ++ 0x0026, 0x2158, 0xba04, 0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, ++ 0xb807, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0x9215, 0xba06, ++ 0x002e, 0x00ce, 0x00be, 0x0016, 0x2c08, 0x080c, 0xcfc8, 0x001e, ++ 0x007e, 0x002e, 0x8210, 0x1f04, 0x307f, 0x002e, 0x82ff, 0x0110, ++ 0x080c, 0x98e4, 0x015e, 0x001e, 0x002e, 0x003e, 0x004e, 0x00be, ++ 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, 0x080c, ++ 0x538d, 0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, 0x2220, 0x2009, ++ 0x0029, 0x080c, 0xd273, 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x7290, 0x82ff, 0x01e8, 0x080c, 0x665f, ++ 0x11d0, 0x2100, 0x080c, 0x2457, 0x81ff, 0x01b8, 0x2019, 0x0001, ++ 0x8314, 0x92e0, 0x1d80, 0x2c04, 0xd384, 0x0120, 0x9084, 0xff00, ++ 0x8007, 0x0010, 0x9084, 0x00ff, 0x9116, 0x0138, 0x9096, 0x00ff, ++ 0x0110, 0x8318, 0x0c68, 0x9085, 0x0001, 0x00ce, 0x003e, 0x002e, ++ 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0066, ++ 0x9036, 0x080c, 0x98c8, 0x1110, 0x2031, 0x0001, 0x0066, 0x0036, ++ 0x2019, 0x0029, 0x00d9, 0x003e, 0x006e, 0x86ff, 0x0110, 0x080c, ++ 0x98e4, 0x006e, 0x9180, 0x1000, 0x2004, 0x9065, 0x0158, 0x0016, ++ 0x00c6, 0x2061, 0x1b02, 0x001e, 0x6112, 0x080c, 0x3006, 0x001e, ++ 0x080c, 0x6234, 0x012e, 0x00ce, 0x001e, 0x0005, 0x0016, 0x0026, ++ 0x2110, 0x080c, 0x94f4, 0x080c, 0xd529, 0x002e, 0x001e, 0x0005, ++ 0x2001, 0x1836, 0x2004, 0xd0cc, 0x0005, 0x00c6, 0x00b6, 0x080c, ++ 0x70b7, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c, ++ 0x70b7, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, 0x9180, 0x1000, ++ 0x2004, 0x905d, 0x0130, 0x86ff, 0x0110, 0xb800, 0xd0bc, 0x090c, ++ 0x6234, 0x8108, 0x1f04, 0x3166, 0x2061, 0x1800, 0x607b, 0x0000, ++ 0x607c, 0x9084, 0x00ff, 0x607e, 0x60af, 0x0000, 0x00be, 0x00ce, ++ 0x0005, 0x2001, 0x1875, 0x2004, 0xd0bc, 0x0005, 0x2011, 0x1854, ++ 0x2214, 0xd2ec, 0x0005, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, ++ 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, ++ 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, ++ 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, ++ 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, ++ 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, ++ 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, ++ 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, ++ 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, ++ 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, ++ 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, ++ 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, ++ 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, ++ 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, ++ 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, ++ 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, ++ 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, ++ 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, ++ 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, ++ 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, ++ 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, ++ 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, ++ 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, ++ 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, ++ 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, ++ 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, ++ 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x2071, 0x1894, 0x7003, 0x0002, 0x9006, ++ 0x7016, 0x701a, 0x704a, 0x704e, 0x700e, 0x7042, 0x7046, 0x703b, ++ 0x18b0, 0x703f, 0x18b0, 0x7007, 0x0001, 0x080c, 0x103b, 0x090c, ++ 0x0d65, 0x2900, 0x706a, 0xa867, 0x0002, 0xa8ab, 0xdcb0, 0x080c, ++ 0x103b, 0x090c, 0x0d65, 0x2900, 0x706e, 0xa867, 0x0002, 0xa8ab, ++ 0xdcb0, 0x0005, 0x2071, 0x1894, 0x7004, 0x0002, 0x32ba, 0x32bb, ++ 0x32ce, 0x32e2, 0x0005, 0x1004, 0x32cb, 0x0e04, 0x32cb, 0x2079, ++ 0x0000, 0x0126, 0x2091, 0x8000, 0x700c, 0x9005, 0x1128, 0x700f, ++ 0x0001, 0x012e, 0x0468, 0x0005, 0x012e, 0x0ce8, 0x2079, 0x0000, ++ 0x2061, 0x18ae, 0x2c4c, 0xa86c, 0x908e, 0x0100, 0x0128, 0x9086, ++ 0x0200, 0x0904, 0x33b6, 0x0005, 0x7018, 0x2048, 0x2061, 0x1800, ++ 0x701c, 0x0807, 0x7014, 0x2048, 0xa864, 0x9094, 0x00ff, 0x9296, ++ 0x0029, 0x1120, 0xaa78, 0xd2fc, 0x0128, 0x0005, 0x9086, 0x0103, ++ 0x0108, 0x0005, 0x2079, 0x0000, 0x2061, 0x1800, 0x701c, 0x0807, ++ 0x2061, 0x1800, 0x7880, 0x908a, 0x0040, 0x1210, 0x61cc, 0x0042, ++ 0x2100, 0x908a, 0x003f, 0x1a04, 0x33b3, 0x61cc, 0x0804, 0x3348, ++ 0x338a, 0x33c2, 0x33cc, 0x33d0, 0x33da, 0x33e0, 0x33e4, 0x33f4, ++ 0x33f7, 0x3401, 0x3406, 0x340b, 0x3416, 0x3421, 0x3430, 0x343f, ++ 0x344d, 0x3464, 0x347f, 0x33b3, 0x3528, 0x3566, 0x360b, 0x361c, ++ 0x363f, 0x33b3, 0x33b3, 0x33b3, 0x3677, 0x3697, 0x36a0, 0x36cc, ++ 0x36d2, 0x33b3, 0x3718, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, ++ 0x3723, 0x372c, 0x3734, 0x3736, 0x33b3, 0x33b3, 0x33b3, 0x33b3, ++ 0x33b3, 0x33b3, 0x3766, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, ++ 0x3783, 0x37de, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, ++ 0x0002, 0x3808, 0x380b, 0x386a, 0x3883, 0x38b3, 0x3b55, 0x33b3, ++ 0x4f5e, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x33b3, ++ 0x33b3, 0x3401, 0x3406, 0x4054, 0x53b1, 0x406a, 0x4fed, 0x503e, ++ 0x5141, 0x33b3, 0x51a3, 0x51df, 0x5210, 0x531c, 0x523d, 0x529c, ++ 0x33b3, 0x406e, 0x41fe, 0x4214, 0x4239, 0x429e, 0x4312, 0x4332, ++ 0x43a9, 0x4405, 0x4461, 0x4464, 0x4489, 0x44fc, 0x4566, 0x456e, ++ 0x46a0, 0x4802, 0x4836, 0x4a80, 0x33b3, 0x4a9e, 0x4b61, 0x4c37, ++ 0x33b3, 0x33b3, 0x33b3, 0x33b3, 0x4c9d, 0x4cb8, 0x456e, 0x4efe, ++ 0x714c, 0x0000, 0x2021, 0x4000, 0x080c, 0x48b4, 0x0126, 0x2091, ++ 0x8000, 0x0e04, 0x3394, 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, ++ 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833, 0x0010, 0x7c82, ++ 0x7986, 0x7a8a, 0x7b8e, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x190c, 0x11be, 0x7007, 0x0001, 0x2091, 0x5000, 0x700f, ++ 0x0000, 0x012e, 0x0005, 0x2021, 0x4001, 0x08b0, 0x2021, 0x4002, ++ 0x0898, 0x2021, 0x4003, 0x0880, 0x2021, 0x4005, 0x0868, 0x2021, ++ 0x4006, 0x0850, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88, 0x7a8c, ++ 0x7884, 0x7990, 0x0804, 0x48c1, 0x7883, 0x0004, 0x7884, 0x0807, ++ 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, ++ 0x0804, 0x48c4, 0x7984, 0x7888, 0x2114, 0x200a, 0x0804, 0x338a, ++ 0x7984, 0x2114, 0x0804, 0x338a, 0x20e1, 0x0000, 0x2099, 0x0021, ++ 0x20e9, 0x0000, 0x20a1, 0x0021, 0x20a9, 0x001f, 0x4003, 0x7984, ++ 0x7a88, 0x7b8c, 0x0804, 0x338a, 0x7884, 0x2060, 0x04d8, 0x2009, ++ 0x0003, 0x2011, 0x0002, 0x2019, 0x001c, 0x789b, 0x0317, 0x0804, ++ 0x338a, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0800, 0x2039, 0x0001, ++ 0x7d98, 0x7c9c, 0x0848, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, ++ 0x33bf, 0x2138, 0x7d98, 0x7c9c, 0x0804, 0x33c6, 0x79a0, 0x9182, ++ 0x0040, 0x0210, 0x0804, 0x33bf, 0x2138, 0x7d98, 0x7c9c, 0x0804, ++ 0x33d4, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x33bf, 0x21e8, ++ 0x7984, 0x7888, 0x20a9, 0x0001, 0x21a0, 0x4004, 0x0804, 0x338a, ++ 0x2061, 0x0800, 0xe10c, 0x9006, 0x2c15, 0x9200, 0x8c60, 0x8109, ++ 0x1dd8, 0x2010, 0x9005, 0x0904, 0x338a, 0x0804, 0x33b9, 0x79a0, ++ 0x9182, 0x0040, 0x0210, 0x0804, 0x33bf, 0x21e0, 0x20a9, 0x0001, ++ 0x7984, 0x2198, 0x4012, 0x0804, 0x338a, 0x2069, 0x1853, 0x7884, ++ 0x7990, 0x911a, 0x1a04, 0x33bf, 0x8019, 0x0904, 0x33bf, 0x684a, ++ 0x6942, 0x788c, 0x6852, 0x7888, 0x6856, 0x9006, 0x685a, 0x685e, ++ 0x080c, 0x73e8, 0x0804, 0x338a, 0x2069, 0x1853, 0x7884, 0x7994, ++ 0x911a, 0x1a04, 0x33bf, 0x8019, 0x0904, 0x33bf, 0x684e, 0x6946, ++ 0x788c, 0x6862, 0x7888, 0x6866, 0x9006, 0x686a, 0x686e, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x6769, 0x012e, 0x0804, 0x338a, 0x902e, ++ 0x2520, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x33bc, 0x7984, ++ 0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, 0x20a1, 0x189c, ++ 0x4101, 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, ++ 0x2009, 0x0020, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x48c1, ++ 0x701f, 0x34a3, 0x0005, 0xa864, 0x2008, 0x9084, 0x00ff, 0x9096, ++ 0x0011, 0x0168, 0x9096, 0x0019, 0x0150, 0x9096, 0x0015, 0x0138, ++ 0x9096, 0x0048, 0x0120, 0x9096, 0x0029, 0x1904, 0x33bc, 0x810f, ++ 0x918c, 0x00ff, 0x0904, 0x33bc, 0x7112, 0x7010, 0x8001, 0x0560, ++ 0x7012, 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, ++ 0x2009, 0x0020, 0x7068, 0x2040, 0xa28c, 0xa390, 0xa494, 0xa598, ++ 0x9290, 0x0040, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, 0x0000, ++ 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x48c1, 0x701f, 0x34e1, ++ 0x0005, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0002, 0x0120, 0x9096, ++ 0x000a, 0x1904, 0x33bc, 0x0888, 0x7014, 0x2048, 0xa868, 0xc0fd, ++ 0xa86a, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0029, 0x1160, 0xc2fd, ++ 0xaa7a, 0x080c, 0x5de4, 0x0150, 0x0126, 0x2091, 0x8000, 0xa87a, ++ 0xa982, 0x012e, 0x0050, 0x080c, 0x60fb, 0x1128, 0x7007, 0x0003, ++ 0x701f, 0x350d, 0x0005, 0x080c, 0x6bb3, 0x0126, 0x2091, 0x8000, ++ 0x20a9, 0x0005, 0x20e1, 0x0001, 0x2099, 0x189c, 0x400a, 0x2100, ++ 0x9210, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, 0x0000, 0xa85c, ++ 0x9080, 0x0019, 0x2009, 0x0020, 0x012e, 0xaf60, 0x0804, 0x48c4, ++ 0x2091, 0x8000, 0x7837, 0x4000, 0x7833, 0x0010, 0x7883, 0x4000, ++ 0x7887, 0x4953, 0x788b, 0x5020, 0x788f, 0x2020, 0x2009, 0x017f, ++ 0x2104, 0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, 0x6200, 0x2061, ++ 0x0200, 0x603c, 0x8007, 0x9205, 0x789a, 0x2009, 0x04fd, 0x2104, ++ 0x789e, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x0180, 0x2001, 0x19f3, 0x2004, 0x9005, 0x0128, 0x2001, ++ 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, ++ 0x2003, 0x1001, 0x2071, 0x0080, 0x0804, 0x0427, 0x81ff, 0x1904, ++ 0x33bc, 0x7984, 0x080c, 0x6270, 0x1904, 0x33bf, 0x7e98, 0x9684, ++ 0x3fff, 0x9082, 0x4000, 0x1a04, 0x33bf, 0x7c88, 0x7d8c, 0x080c, ++ 0x64a2, 0x080c, 0x6433, 0x1518, 0x2061, 0x1ddc, 0x0126, 0x2091, ++ 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130, ++ 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0150, 0x012e, 0x9ce0, ++ 0x001c, 0x2001, 0x1819, 0x2004, 0x9c02, 0x1a04, 0x33bc, 0x0c30, ++ 0x080c, 0xb452, 0x012e, 0x0904, 0x33bc, 0x0804, 0x338a, 0x900e, ++ 0x2001, 0x0005, 0x080c, 0x6bb3, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xbb4b, 0x080c, 0x6996, 0x012e, 0x0804, 0x338a, 0x00a6, 0x2950, ++ 0xb198, 0x080c, 0x6270, 0x1904, 0x35f8, 0xb6a4, 0x9684, 0x3fff, ++ 0x9082, 0x4000, 0x16e8, 0xb49c, 0xb5a0, 0x080c, 0x64a2, 0x080c, ++ 0x644d, 0x1520, 0x2061, 0x1ddc, 0x0126, 0x2091, 0x8000, 0x6000, ++ 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130, 0xa86c, 0x9406, ++ 0x1118, 0xa870, 0x9506, 0x0158, 0x012e, 0x9ce0, 0x001c, 0x2001, ++ 0x1819, 0x2004, 0x9c02, 0x2009, 0x000d, 0x12b0, 0x0c28, 0x080c, ++ 0xb452, 0x012e, 0x2009, 0x0003, 0x0178, 0x00e0, 0x900e, 0x2001, ++ 0x0005, 0x080c, 0x6bb3, 0x0126, 0x2091, 0x8000, 0x080c, 0xbb4b, ++ 0x080c, 0x698a, 0x012e, 0x0070, 0xb097, 0x4005, 0xb19a, 0x0010, ++ 0xb097, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x2a48, ++ 0x00ae, 0x0005, 0xb097, 0x4000, 0x9006, 0x918d, 0x0001, 0x2008, ++ 0x2a48, 0x00ae, 0x0005, 0x81ff, 0x1904, 0x33bc, 0x080c, 0x488f, ++ 0x0904, 0x33bf, 0x080c, 0x6337, 0x0904, 0x33bc, 0x080c, 0x64a8, ++ 0x0904, 0x33bc, 0x0804, 0x4329, 0x81ff, 0x1904, 0x33bc, 0x080c, ++ 0x48ab, 0x0904, 0x33bf, 0x080c, 0x6536, 0x0904, 0x33bc, 0x2019, ++ 0x0005, 0x79a8, 0x080c, 0x64c3, 0x0904, 0x33bc, 0x7888, 0x908a, ++ 0x1000, 0x1a04, 0x33bf, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, ++ 0x8167, 0x7984, 0xd184, 0x1904, 0x338a, 0x0804, 0x4329, 0x0126, ++ 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, 0x0001, 0x0450, 0x2029, ++ 0x07ff, 0x6458, 0x2400, 0x9506, 0x01f8, 0x2508, 0x080c, 0x6270, ++ 0x11d8, 0x080c, 0x6536, 0x1128, 0x2009, 0x0002, 0x62bc, 0x2518, ++ 0x00c0, 0x2019, 0x0004, 0x900e, 0x080c, 0x64c3, 0x1118, 0x2009, ++ 0x0006, 0x0078, 0x7884, 0x908a, 0x1000, 0x1270, 0x8003, 0x800b, ++ 0x810b, 0x9108, 0x080c, 0x8167, 0x8529, 0x1ae0, 0x012e, 0x0804, ++ 0x338a, 0x012e, 0x0804, 0x33bc, 0x012e, 0x0804, 0x33bf, 0x080c, ++ 0x488f, 0x0904, 0x33bf, 0x080c, 0x6337, 0x0904, 0x33bc, 0x080c, ++ 0x98c8, 0xbaa0, 0x2019, 0x0005, 0x00c6, 0x9066, 0x080c, 0x863b, ++ 0x0076, 0x903e, 0x080c, 0x852a, 0x900e, 0x080c, 0xcfc8, 0x007e, ++ 0x00ce, 0x080c, 0x98e4, 0x080c, 0x64a2, 0x0804, 0x338a, 0x080c, ++ 0x488f, 0x0904, 0x33bf, 0x080c, 0x64a2, 0x2208, 0x0804, 0x338a, ++ 0x0156, 0x00d6, 0x00e6, 0x00c6, 0x2069, 0x1906, 0x6810, 0x6914, ++ 0x910a, 0x1208, 0x900e, 0x6816, 0x9016, 0x901e, 0x2071, 0x19b8, ++ 0x7028, 0x9065, 0x0118, 0x8210, 0x600c, 0x0cd8, 0x2300, 0x9218, ++ 0x00ce, 0x00ee, 0x00de, 0x015e, 0x0804, 0x338a, 0x00f6, 0x0016, ++ 0x907d, 0x0138, 0x9006, 0x8000, 0x2f0c, 0x81ff, 0x0110, 0x2178, ++ 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0x1906, 0x6910, 0x62b8, ++ 0x0804, 0x338a, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x33bc, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x53a1, 0x0128, 0x2009, 0x0007, ++ 0x012e, 0x0804, 0x33bc, 0x012e, 0x6158, 0x9190, 0x318b, 0x2215, ++ 0x9294, 0x00ff, 0x6378, 0x83ff, 0x0108, 0x627c, 0x67d8, 0x97c4, ++ 0x000a, 0x98c6, 0x000a, 0x1118, 0x2031, 0x0001, 0x00e8, 0x97c4, ++ 0x0022, 0x98c6, 0x0022, 0x1118, 0x2031, 0x0003, 0x00a8, 0x97c4, ++ 0x0012, 0x98c6, 0x0012, 0x1118, 0x2031, 0x0002, 0x0068, 0x080c, ++ 0x70b7, 0x1118, 0x2031, 0x0004, 0x0038, 0xd79c, 0x0120, 0x2009, ++ 0x0005, 0x0804, 0x33bc, 0x9036, 0x7e9a, 0x7f9e, 0x0804, 0x338a, ++ 0x6148, 0x624c, 0x2019, 0x1957, 0x231c, 0x2001, 0x1958, 0x2004, ++ 0x789a, 0x0804, 0x338a, 0x0126, 0x2091, 0x8000, 0x6138, 0x623c, ++ 0x6340, 0x012e, 0x0804, 0x338a, 0x080c, 0x48ab, 0x0904, 0x33bf, ++ 0xba44, 0xbb38, 0x0804, 0x338a, 0x080c, 0x0d65, 0x080c, 0x48ab, ++ 0x2110, 0x0904, 0x33bf, 0xb804, 0x908c, 0x00ff, 0x918e, 0x0006, ++ 0x0140, 0x9084, 0xff00, 0x9086, 0x0600, 0x2009, 0x0009, 0x1904, ++ 0x33bc, 0x0126, 0x2091, 0x8000, 0x2019, 0x0005, 0x00c6, 0x9066, ++ 0x080c, 0x98c8, 0x080c, 0x94f4, 0x080c, 0x863b, 0x0076, 0x903e, ++ 0x080c, 0x852a, 0x900e, 0x080c, 0xcfc8, 0x007e, 0x00ce, 0x080c, ++ 0x98e4, 0xb807, 0x0407, 0x012e, 0x0804, 0x338a, 0x6148, 0x624c, ++ 0x7884, 0x604a, 0x7b88, 0x634e, 0x2069, 0x1853, 0x831f, 0x9305, ++ 0x6816, 0x788c, 0x2069, 0x1957, 0x2d1c, 0x206a, 0x7e98, 0x9682, ++ 0x0014, 0x1210, 0x2031, 0x07d0, 0x2069, 0x1958, 0x2d04, 0x266a, ++ 0x789a, 0x0804, 0x338a, 0x0126, 0x2091, 0x8000, 0x6138, 0x7884, ++ 0x603a, 0x910e, 0xd1b4, 0x190c, 0x0eb4, 0xd0c4, 0x01a8, 0x00d6, ++ 0x78a8, 0x2009, 0x196e, 0x200a, 0x78ac, 0x2011, 0x196f, 0x2012, ++ 0x2069, 0x0100, 0x6838, 0x9086, 0x0007, 0x1118, 0x2214, 0x6a5a, ++ 0x0010, 0x210c, 0x695a, 0x00de, 0x7888, 0x603e, 0x2011, 0x0116, ++ 0x220c, 0x7888, 0xd08c, 0x0118, 0x918d, 0x0040, 0x0010, 0x918c, ++ 0xff7f, 0x2112, 0x6140, 0x788c, 0x6042, 0x910e, 0xd1e4, 0x190c, ++ 0x0ecf, 0x6040, 0xd0cc, 0x0120, 0x78b0, 0x2011, 0x0114, 0x2012, ++ 0x012e, 0x0804, 0x338a, 0x00f6, 0x2079, 0x1800, 0x7a38, 0xa898, ++ 0x9084, 0xfebf, 0x9215, 0xa89c, 0x9084, 0xfebf, 0x8002, 0x9214, ++ 0x7838, 0x9084, 0x0140, 0x9215, 0x7a3a, 0xa897, 0x4000, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0000, 0x00fe, 0x0005, 0x7898, 0x9005, ++ 0x01a8, 0x7888, 0x9025, 0x0904, 0x33bf, 0x788c, 0x902d, 0x0904, ++ 0x33bf, 0x900e, 0x080c, 0x6270, 0x1120, 0xba44, 0xbb38, 0xbc46, ++ 0xbd3a, 0x9186, 0x07ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x48ab, ++ 0x0904, 0x33bf, 0x7888, 0x900d, 0x0904, 0x33bf, 0x788c, 0x9005, ++ 0x0904, 0x33bf, 0xba44, 0xb946, 0xbb38, 0xb83a, 0x0804, 0x338a, ++ 0x2011, 0xbc09, 0x0010, 0x2011, 0xbc05, 0x080c, 0x53a1, 0x1904, ++ 0x33bc, 0x00c6, 0x2061, 0x0100, 0x7984, 0x9186, 0x00ff, 0x1130, ++ 0x2001, 0x1817, 0x2004, 0x9085, 0xff00, 0x0088, 0x9182, 0x007f, ++ 0x16e0, 0x9188, 0x318b, 0x210d, 0x918c, 0x00ff, 0x2001, 0x1817, ++ 0x2004, 0x0026, 0x9116, 0x002e, 0x0580, 0x810f, 0x9105, 0x0126, ++ 0x2091, 0x8000, 0x0006, 0x080c, 0x9b91, 0x000e, 0x0510, 0x602e, ++ 0x620a, 0x7984, 0x00b6, 0x080c, 0x6216, 0x2b08, 0x00be, 0x1500, ++ 0x6112, 0x6023, 0x0001, 0x080c, 0x4878, 0x01d0, 0x9006, 0xa866, ++ 0x7007, 0x0003, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x701f, 0x3863, ++ 0x2900, 0x6016, 0x2009, 0x0032, 0x080c, 0x9c85, 0x012e, 0x00ce, ++ 0x0005, 0x012e, 0x00ce, 0x0804, 0x33bc, 0x00ce, 0x0804, 0x33bf, ++ 0x080c, 0x9be7, 0x0cb0, 0xa830, 0x9086, 0x0100, 0x0904, 0x33bc, ++ 0x0804, 0x338a, 0x2061, 0x1a3f, 0x0126, 0x2091, 0x8000, 0x6000, ++ 0xd084, 0x0170, 0x6104, 0x6208, 0x2061, 0x1800, 0x6350, 0x6070, ++ 0x789a, 0x60bc, 0x789e, 0x60b8, 0x78aa, 0x012e, 0x0804, 0x338a, ++ 0x900e, 0x2110, 0x0c88, 0x81ff, 0x1904, 0x33bc, 0x080c, 0x70b7, ++ 0x0904, 0x33bc, 0x0126, 0x2091, 0x8000, 0x6250, 0x6070, 0x9202, ++ 0x0248, 0x9085, 0x0001, 0x080c, 0x248d, 0x080c, 0x55bb, 0x012e, ++ 0x0804, 0x338a, 0x012e, 0x0804, 0x33bf, 0x0006, 0x0016, 0x00c6, ++ 0x00e6, 0x2001, 0x197a, 0x2070, 0x2061, 0x1853, 0x6008, 0x2072, ++ 0x900e, 0x2011, 0x1400, 0x080c, 0x8419, 0x7206, 0x00ee, 0x00ce, ++ 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0128, ++ 0x012e, 0x2021, 0x400b, 0x0804, 0x338c, 0x7884, 0xd0fc, 0x0148, ++ 0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x0288, 0x012e, 0x0804, ++ 0x33bf, 0x2001, 0x002a, 0x2004, 0x2069, 0x1853, 0x6908, 0x9102, ++ 0x1230, 0x012e, 0x0804, 0x33bf, 0x012e, 0x0804, 0x33bc, 0x080c, ++ 0x9b66, 0x0dd0, 0x7884, 0xd0fc, 0x0904, 0x392e, 0x00c6, 0x080c, ++ 0x4878, 0x00ce, 0x0d88, 0xa867, 0x0000, 0x7884, 0xa80a, 0x7898, ++ 0xa80e, 0x789c, 0xa812, 0x2001, 0x002e, 0x2004, 0xa81a, 0x2001, ++ 0x002f, 0x2004, 0xa81e, 0x2001, 0x0030, 0x2004, 0xa822, 0x2001, ++ 0x0031, 0x2004, 0xa826, 0x2001, 0x0034, 0x2004, 0xa82a, 0x2001, ++ 0x0035, 0x2004, 0xa82e, 0x2001, 0x002a, 0x2004, 0x9080, 0x0003, ++ 0x9084, 0x00fc, 0x8004, 0xa816, 0x080c, 0x3ab8, 0x0928, 0x7014, ++ 0x2048, 0xad2c, 0xac28, 0xab1c, 0xaa18, 0xa930, 0xa808, 0xd0b4, ++ 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x080c, 0x48c1, ++ 0x701f, 0x39f5, 0x7023, 0x0001, 0x012e, 0x0005, 0x080c, 0x98c8, ++ 0x0046, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x080c, 0x389d, 0x2001, 0x1970, 0x2003, 0x0000, 0x2021, ++ 0x000a, 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb, 0x0000, 0x60bf, ++ 0x32e1, 0x60bf, 0x0012, 0x080c, 0x3b27, 0x080c, 0x3ae6, 0x00f6, ++ 0x00e6, 0x0086, 0x2940, 0x2071, 0x19b8, 0x2079, 0x0090, 0x00d6, ++ 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001, 0x0035, 0x2004, ++ 0x780e, 0x2001, 0x0034, 0x2004, 0x780a, 0x00de, 0x2011, 0x0001, ++ 0x080c, 0x3e98, 0x008e, 0x00ee, 0x00fe, 0x080c, 0x3dc5, 0x080c, ++ 0x3cf2, 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140, 0x1db8, ++ 0x080c, 0x3f0c, 0x00f6, 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, ++ 0x0070, 0x1560, 0x2071, 0x0200, 0x7037, 0x0000, 0x7050, 0x9084, ++ 0xff00, 0x9086, 0x3200, 0x1510, 0x7037, 0x0001, 0x7050, 0x9084, ++ 0xff00, 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000, 0x7054, 0x7037, ++ 0x0000, 0x715c, 0x9106, 0x1190, 0x2001, 0x181f, 0x2004, 0x9106, ++ 0x1168, 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084, 0x1e00, 0x00ce, ++ 0x0138, 0x080c, 0x3cfc, 0x080c, 0x3ae1, 0x0058, 0x080c, 0x3ae1, ++ 0x080c, 0x3e30, 0x080c, 0x3dbb, 0x2001, 0x020b, 0x2004, 0xd0e4, ++ 0x0dd8, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, 0x0100, 0x6027, ++ 0x0002, 0x001e, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020, 0x60bb, ++ 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001, 0x0004, 0x200c, ++ 0x918c, 0xfffd, 0x2102, 0x080c, 0x12d6, 0x2009, 0x0028, 0x080c, ++ 0x2052, 0x2001, 0x0227, 0x200c, 0x2102, 0x080c, 0x98e4, 0x00fe, ++ 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x004e, ++ 0x2001, 0x1970, 0x2004, 0x9005, 0x1118, 0x012e, 0x0804, 0x338a, ++ 0x012e, 0x2021, 0x400c, 0x0804, 0x338c, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, 0x0156, 0x7014, ++ 0x2048, 0x7020, 0x20a8, 0x8000, 0x7022, 0xa804, 0x9005, 0x0904, ++ 0x3a51, 0x2048, 0x1f04, 0x3a05, 0x7068, 0x2040, 0xa28c, 0xa390, ++ 0xa494, 0xa598, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, ++ 0x2021, 0x0000, 0x0096, 0x7014, 0x2048, 0xa864, 0x009e, 0x9086, ++ 0x0103, 0x0170, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x001b, 0x080c, 0x48c1, 0x701f, 0x39f5, 0x00b0, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c, ++ 0x0f9f, 0x000e, 0x080c, 0x48c4, 0x701f, 0x39f5, 0x015e, 0x00de, ++ 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x7014, 0x2048, 0xa864, 0x9086, 0x0103, 0x1118, 0x701f, ++ 0x3ab6, 0x0450, 0x7014, 0x2048, 0xa868, 0xc0fd, 0xa86a, 0x2009, ++ 0x007f, 0x080c, 0x6210, 0x0110, 0x9006, 0x0030, 0xb813, 0x00ff, ++ 0xb817, 0xfffd, 0x080c, 0xbd2a, 0x015e, 0x00de, 0x009e, 0x008e, ++ 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0904, 0x33bc, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, ++ 0x00d6, 0x0156, 0x701f, 0x3a88, 0x7007, 0x0003, 0x0804, 0x3a46, ++ 0xa830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, 0x338c, 0x0076, ++ 0xad10, 0xac0c, 0xab24, 0xaa20, 0xa930, 0xa808, 0xd0b4, 0x1120, ++ 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098, ++ 0x27e8, 0x20a0, 0x0006, 0x080c, 0x0f9f, 0x000e, 0x080c, 0x48c4, ++ 0x007e, 0x701f, 0x39f5, 0x7023, 0x0001, 0x0005, 0x0804, 0x338a, ++ 0x0156, 0x00c6, 0xa814, 0x908a, 0x001e, 0x0218, 0xa833, 0x001e, ++ 0x0010, 0xa832, 0x0078, 0x81ff, 0x0168, 0x0016, 0x080c, 0x4878, ++ 0x001e, 0x0130, 0xa800, 0x2040, 0xa008, 0xa80a, 0x2100, 0x0c58, ++ 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, 0x0005, 0x0006, ++ 0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, 0x00fe, 0x000e, ++ 0x0005, 0x2001, 0x1970, 0x2003, 0x0001, 0x0005, 0x00f6, 0x00e6, ++ 0x00c6, 0x2061, 0x0200, 0x2001, 0x197b, 0x2004, 0x601a, 0x2061, ++ 0x0100, 0x2001, 0x197a, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106, ++ 0x080c, 0x4878, 0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, ++ 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, ++ 0x2061, 0x0090, 0x2079, 0x0100, 0x2001, 0x197a, 0x2004, 0x6036, ++ 0x2009, 0x0040, 0x080c, 0x2052, 0x2001, 0x002a, 0x2004, 0x9084, ++ 0xfff8, 0xa86e, 0x601a, 0xa873, 0x0000, 0x601f, 0x0000, 0x78ca, ++ 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, ++ 0x080c, 0x4878, 0x2940, 0xa013, 0x0019, 0xa017, 0x0001, 0x2800, ++ 0xa05a, 0x2001, 0x0030, 0x2004, 0xa866, 0x2001, 0x0031, 0x2004, ++ 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, 0xa873, ++ 0x0000, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x0300, 0x2003, ++ 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, ++ 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x81ff, 0x0148, 0x080c, 0x2811, 0x1130, 0x9006, 0x080c, 0x276e, ++ 0x9006, 0x080c, 0x2751, 0x7884, 0x9084, 0x0007, 0x0002, 0x3b72, ++ 0x3b7b, 0x3b84, 0x3b6f, 0x3b6f, 0x3b6f, 0x3b6f, 0x3b6f, 0x012e, ++ 0x0804, 0x33bf, 0x2009, 0x0114, 0x2104, 0x9085, 0x0800, 0x200a, ++ 0x080c, 0x3d46, 0x00c0, 0x2009, 0x0114, 0x2104, 0x9085, 0x4000, ++ 0x200a, 0x080c, 0x3d46, 0x0078, 0x080c, 0x70b7, 0x1128, 0x012e, ++ 0x2009, 0x0016, 0x0804, 0x33bc, 0x81ff, 0x0128, 0x012e, 0x2021, ++ 0x400b, 0x0804, 0x338c, 0x080c, 0x98c8, 0x0086, 0x0096, 0x00a6, ++ 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x389d, 0x2009, ++ 0x0101, 0x210c, 0x0016, 0x7ec8, 0x7dcc, 0x9006, 0x2068, 0x2060, ++ 0x2058, 0x080c, 0x3fe7, 0x080c, 0x3f37, 0x903e, 0x2720, 0x00f6, ++ 0x00e6, 0x0086, 0x2940, 0x2071, 0x19b8, 0x2079, 0x0090, 0x00d6, ++ 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0120, 0x68d4, 0x780e, 0x68d0, ++ 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, 0x3e98, 0x080c, 0x2819, ++ 0x080c, 0x2819, 0x080c, 0x2819, 0x080c, 0x2819, 0x080c, 0x3e98, ++ 0x008e, 0x00ee, 0x00fe, 0x080c, 0x3dc5, 0x2009, 0x9c40, 0x8109, ++ 0x11b0, 0x080c, 0x3cfc, 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, ++ 0x2102, 0x001e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, ++ 0x009e, 0x008e, 0x2009, 0x0017, 0x080c, 0x33bc, 0x0cf8, 0x2001, ++ 0x020b, 0x2004, 0x9084, 0x0140, 0x1d10, 0x00f6, 0x2079, 0x0000, ++ 0x7884, 0x00fe, 0xd0bc, 0x0178, 0x2001, 0x0201, 0x200c, 0x81ff, ++ 0x0150, 0x080c, 0x3da3, 0x2d00, 0x9c05, 0x9b05, 0x0120, 0x080c, ++ 0x3cfc, 0x0804, 0x3ca5, 0x080c, 0x3f0c, 0x080c, 0x3e30, 0x080c, ++ 0x3d86, 0x080c, 0x3dbb, 0x00f6, 0x2079, 0x0100, 0x7824, 0xd0ac, ++ 0x0130, 0x8b58, 0x080c, 0x3cfc, 0x00fe, 0x0804, 0x3ca5, 0x00fe, ++ 0x080c, 0x3cf2, 0x1150, 0x8d68, 0x2001, 0x0032, 0x2602, 0x2001, ++ 0x0033, 0x2502, 0x080c, 0x3cfc, 0x0080, 0x87ff, 0x0138, 0x2001, ++ 0x0201, 0x2004, 0x9005, 0x1908, 0x8739, 0x0038, 0x2001, 0x1a3c, ++ 0x2004, 0x9086, 0x0000, 0x1904, 0x3bf5, 0x2001, 0x032f, 0x2003, ++ 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, 0x9605, 0x0904, 0x3ca5, ++ 0x7884, 0xd0bc, 0x0128, 0x2d00, 0x9c05, 0x9b05, 0x1904, 0x3ca5, ++ 0xa013, 0x0019, 0x2001, 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, ++ 0x1148, 0x2001, 0x1a3c, 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, ++ 0x0009, 0x0030, 0xa017, 0x0001, 0x78b4, 0x9005, 0x0108, 0xa016, ++ 0x2800, 0xa05a, 0x2009, 0x0040, 0x080c, 0x2052, 0x2900, 0xa85a, ++ 0xa813, 0x0019, 0x7884, 0xd0a4, 0x1180, 0xa817, 0x0000, 0x00c6, ++ 0x20a9, 0x0004, 0x2061, 0x0090, 0x602b, 0x0008, 0x2001, 0x0203, ++ 0x2004, 0x1f04, 0x3c7c, 0x00ce, 0x0030, 0xa817, 0x0001, 0x78b0, ++ 0x9005, 0x0108, 0xa816, 0x00f6, 0x00c6, 0x2079, 0x0100, 0x2061, ++ 0x0090, 0x7827, 0x0002, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, ++ 0x78ca, 0x00ce, 0x00fe, 0x0804, 0x3baf, 0x001e, 0x00c6, 0x2001, ++ 0x032a, 0x2003, 0x0004, 0x2061, 0x0100, 0x6027, 0x0002, 0x6106, ++ 0x2011, 0x020d, 0x2013, 0x0020, 0x2001, 0x0004, 0x200c, 0x918c, ++ 0xfffd, 0x2102, 0x080c, 0x12d6, 0x7884, 0x9084, 0x0003, 0x9086, ++ 0x0002, 0x01b0, 0x2009, 0x0028, 0x080c, 0x2052, 0x2001, 0x0227, ++ 0x200c, 0x2102, 0x6050, 0x9084, 0xb7ff, 0x080c, 0x28d4, 0x6052, ++ 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, 0x0090, 0x6043, 0x0010, ++ 0x080c, 0x98e4, 0x00ce, 0x2d08, 0x2c10, 0x2b18, 0x2b00, 0x9c05, ++ 0x9d05, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, ++ 0x008e, 0x1118, 0x012e, 0x0804, 0x338a, 0x012e, 0x2021, 0x400c, ++ 0x0804, 0x338c, 0x9085, 0x0001, 0x1d04, 0x3cfb, 0x2091, 0x6000, ++ 0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010, ++ 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x1a3c, 0x2003, 0x0000, ++ 0x0071, 0x2009, 0x0048, 0x080c, 0x2052, 0x2001, 0x0227, 0x2024, ++ 0x2402, 0x2001, 0x0109, 0x2003, 0x4000, 0x9026, 0x0005, 0x00f6, ++ 0x00e6, 0x2071, 0x19b8, 0x7054, 0x9086, 0x0000, 0x0520, 0x2079, ++ 0x0090, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, ++ 0x1120, 0x2009, 0x0040, 0x080c, 0x2052, 0x782c, 0xd0fc, 0x0d88, ++ 0x080c, 0x3f0c, 0x7054, 0x9086, 0x0000, 0x1d58, 0x782b, 0x0004, ++ 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, 0x2052, 0x782b, ++ 0x0002, 0x7057, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, ++ 0x0100, 0x2001, 0x1817, 0x200c, 0x7932, 0x7936, 0x080c, 0x246d, ++ 0x080c, 0x2890, 0x080c, 0x28d4, 0x784b, 0xf7f7, 0x7843, 0x0090, ++ 0x7843, 0x0010, 0x7850, 0xc0e5, 0x7852, 0x2019, 0x61a8, 0x7820, ++ 0xd09c, 0x0110, 0x8319, 0x1dd8, 0x7850, 0xc0e4, 0x7852, 0x2011, ++ 0x0048, 0x080c, 0x286d, 0x7843, 0x0040, 0x2019, 0x01f4, 0xa001, ++ 0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, 0x080c, 0x2833, 0x2011, ++ 0x0020, 0x080c, 0x286d, 0x7843, 0x0000, 0x9006, 0x080c, 0x2833, ++ 0x2011, 0x0048, 0x080c, 0x286d, 0x00fe, 0x0005, 0x7884, 0xd0ac, ++ 0x11c8, 0x00f6, 0x00e6, 0x2071, 0x1a3c, 0x2079, 0x0320, 0x2001, ++ 0x0201, 0x2004, 0x9005, 0x0160, 0x7000, 0x9086, 0x0000, 0x1140, ++ 0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, 0x782b, 0x0019, ++ 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0300, 0x78bc, 0x00fe, ++ 0x908c, 0x0070, 0x0178, 0x2009, 0x0032, 0x260a, 0x2009, 0x0033, ++ 0x250a, 0xd0b4, 0x0108, 0x8c60, 0xd0ac, 0x0108, 0x8d68, 0xd0a4, ++ 0x0108, 0x8b58, 0x0005, 0x00f6, 0x2079, 0x0200, 0x781c, 0xd084, ++ 0x0110, 0x7837, 0x0050, 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0100, ++ 0x2001, 0x197b, 0x2004, 0x70e2, 0x080c, 0x3ad7, 0x1188, 0x2001, ++ 0x181f, 0x2004, 0x2009, 0x181e, 0x210c, 0x918c, 0x00ff, 0x706e, ++ 0x716a, 0x7066, 0x918d, 0x3200, 0x7162, 0x7073, 0xe109, 0x0080, ++ 0x702c, 0x9085, 0x0002, 0x702e, 0x2009, 0x1817, 0x210c, 0x716e, ++ 0x7063, 0x0100, 0x7166, 0x719e, 0x706b, 0x0000, 0x7073, 0x0809, ++ 0x7077, 0x0008, 0x7078, 0x9080, 0x0100, 0x707a, 0x7080, 0x8000, ++ 0x7082, 0x7087, 0xaaaa, 0x9006, 0x708a, 0x708e, 0x707e, 0x70d6, ++ 0x70ab, 0x0036, 0x70af, 0x95d5, 0x7014, 0x9084, 0x1984, 0x9085, ++ 0x0092, 0x7016, 0x080c, 0x3f0c, 0x00f6, 0x2071, 0x1a3c, 0x2079, ++ 0x0320, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0120, 0x689c, ++ 0x780e, 0x6898, 0x780a, 0x00de, 0x2009, 0x03e8, 0x8109, 0x1df0, ++ 0x792c, 0xd1fc, 0x0110, 0x782b, 0x0004, 0x2011, 0x0011, 0x080c, ++ 0x3e98, 0x2011, 0x0001, 0x080c, 0x3e98, 0x00fe, 0x00ee, 0x0005, ++ 0x00f6, 0x00e6, 0x2071, 0x1a3c, 0x2079, 0x0320, 0x792c, 0xd1fc, ++ 0x0904, 0x3e95, 0x782b, 0x0002, 0x9026, 0xd19c, 0x1904, 0x3e91, ++ 0x7000, 0x0002, 0x3e95, 0x3e46, 0x3e76, 0x3e91, 0xd1bc, 0x1170, ++ 0xd1dc, 0x1190, 0x8001, 0x7002, 0x2011, 0x0001, 0x080c, 0x3e98, ++ 0x0904, 0x3e95, 0x080c, 0x3e98, 0x0804, 0x3e95, 0x00f6, 0x2079, ++ 0x0300, 0x78bf, 0x0000, 0x00fe, 0x7810, 0x7914, 0x782b, 0x0004, ++ 0x7812, 0x7916, 0x2001, 0x0201, 0x200c, 0x81ff, 0x0de8, 0x080c, ++ 0x3da3, 0x2009, 0x0001, 0x00f6, 0x2079, 0x0300, 0x78b8, 0x00fe, ++ 0xd0ec, 0x0110, 0x2009, 0x0011, 0x792a, 0x00f8, 0x8001, 0x7002, ++ 0x9184, 0x0880, 0x1140, 0x782c, 0xd0fc, 0x1904, 0x3e3a, 0x2011, ++ 0x0001, 0x00b1, 0x0090, 0xa010, 0x9092, 0x0004, 0x9086, 0x0015, ++ 0x1120, 0xa000, 0xa05a, 0x2011, 0x0031, 0xa212, 0xd1dc, 0x1960, ++ 0x0828, 0x782b, 0x0004, 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, ++ 0xa014, 0x9005, 0x0550, 0x8001, 0x0036, 0x0096, 0xa016, 0xa058, ++ 0x2048, 0xa010, 0x2009, 0x0031, 0x911a, 0x831c, 0x831c, 0x938a, ++ 0x0007, 0x1a0c, 0x0d65, 0x9398, 0x3ec6, 0x231d, 0x083f, 0x9080, ++ 0x0004, 0x7a2a, 0x7100, 0x8108, 0x7102, 0x009e, 0x003e, 0x908a, ++ 0x0035, 0x1140, 0x0096, 0xa058, 0x2048, 0xa804, 0xa05a, 0x2001, ++ 0x0019, 0x009e, 0xa012, 0x9085, 0x0001, 0x0005, 0x3f03, 0x3efa, ++ 0x3ef1, 0x3ee8, 0x3edf, 0x3ed6, 0x3ecd, 0xa964, 0x7902, 0xa968, ++ 0x7906, 0xa96c, 0x7912, 0xa970, 0x7916, 0x0005, 0xa974, 0x7902, ++ 0xa978, 0x7906, 0xa97c, 0x7912, 0xa980, 0x7916, 0x0005, 0xa984, ++ 0x7902, 0xa988, 0x7906, 0xa98c, 0x7912, 0xa990, 0x7916, 0x0005, ++ 0xa994, 0x7902, 0xa998, 0x7906, 0xa99c, 0x7912, 0xa9a0, 0x7916, ++ 0x0005, 0xa9a4, 0x7902, 0xa9a8, 0x7906, 0xa9ac, 0x7912, 0xa9b0, ++ 0x7916, 0x0005, 0xa9b4, 0x7902, 0xa9b8, 0x7906, 0xa9bc, 0x7912, ++ 0xa9c0, 0x7916, 0x0005, 0xa9c4, 0x7902, 0xa9c8, 0x7906, 0xa9cc, ++ 0x7912, 0xa9d0, 0x7916, 0x0005, 0x00f6, 0x00e6, 0x0086, 0x2071, ++ 0x19b8, 0x2079, 0x0090, 0x792c, 0xd1fc, 0x01e8, 0x782b, 0x0002, ++ 0x2940, 0x9026, 0x7054, 0x0002, 0x3f33, 0x3f1f, 0x3f2a, 0x8001, ++ 0x7056, 0xd19c, 0x1180, 0x2011, 0x0001, 0x080c, 0x3e98, 0x190c, ++ 0x3e98, 0x0048, 0x8001, 0x7056, 0x782c, 0xd0fc, 0x1d38, 0x2011, ++ 0x0001, 0x080c, 0x3e98, 0x008e, 0x00ee, 0x00fe, 0x0005, 0x00f6, ++ 0x00e6, 0x00c6, 0x0086, 0x2061, 0x0200, 0x2001, 0x197b, 0x2004, ++ 0x601a, 0x2061, 0x0100, 0x2001, 0x197a, 0x2004, 0x60ce, 0x6104, ++ 0xc1ac, 0x6106, 0x2001, 0x002c, 0x2004, 0x9005, 0x0520, 0x2038, ++ 0x2001, 0x002e, 0x2024, 0x2001, 0x002f, 0x201c, 0x080c, 0x4878, ++ 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, 0x0220, ++ 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, 0xa858, ++ 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, 0x3faf, 0x1d68, ++ 0x2900, 0xa85a, 0x00d0, 0x080c, 0x4878, 0xa813, 0x0019, 0xa817, ++ 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, ++ 0x002f, 0x2004, 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0xa86e, 0x2001, 0x002b, 0x2004, 0xa872, 0x2061, 0x0090, 0x2079, ++ 0x0100, 0x2001, 0x197a, 0x2004, 0x6036, 0x2009, 0x0040, 0x080c, ++ 0x2052, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, ++ 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x9006, ++ 0x600a, 0x600e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, ++ 0x2071, 0x0080, 0xaa60, 0x22e8, 0x20a0, 0x20e1, 0x0000, 0x2099, ++ 0x0088, 0x702b, 0x0026, 0x7402, 0x7306, 0x9006, 0x700a, 0x700e, ++ 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112, 0x702b, 0x0041, 0x702c, ++ 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b, 0x0040, 0x4005, 0x7400, ++ 0x7304, 0x87ff, 0x0190, 0x0086, 0x0096, 0x2940, 0x0086, 0x080c, ++ 0x4878, 0x008e, 0xa058, 0x00a6, 0x2050, 0x2900, 0xb006, 0xa05a, ++ 0x00ae, 0x009e, 0x008e, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, ++ 0x2001, 0x002d, 0x2004, 0x9005, 0x0528, 0x2038, 0x2001, 0x0030, ++ 0x2024, 0x2001, 0x0031, 0x201c, 0x080c, 0x4878, 0x2940, 0xa813, ++ 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, 0x0220, 0x2138, ++ 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, 0xa858, 0x2048, ++ 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, 0x3faf, 0x1d68, 0x2900, ++ 0xa85a, 0x00d8, 0x080c, 0x4878, 0x2940, 0xa013, 0x0019, 0xa017, ++ 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030, 0x2004, 0xa066, 0x2001, ++ 0x0031, 0x2004, 0xa06a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0xa06e, 0x2001, 0x002b, 0x2004, 0xa072, 0x2001, 0x032a, 0x2003, ++ 0x0004, 0x7884, 0xd0ac, 0x1180, 0x2001, 0x0101, 0x200c, 0x918d, ++ 0x0200, 0x2102, 0xa017, 0x0000, 0x2001, 0x1a3c, 0x2003, 0x0003, ++ 0x2001, 0x032a, 0x2003, 0x0009, 0x2001, 0x0300, 0x2003, 0x0000, ++ 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, 0x918d, ++ 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x20a9, ++ 0x0013, 0x20a1, 0x1840, 0x20e9, 0x0001, 0x9006, 0x4004, 0x2009, ++ 0x013c, 0x200a, 0x012e, 0x7880, 0x9086, 0x0052, 0x0108, 0x0005, ++ 0x0804, 0x338a, 0x7d98, 0x7c9c, 0x0804, 0x3481, 0x080c, 0x70b7, ++ 0x190c, 0x5ca1, 0x2069, 0x1853, 0x2d00, 0x2009, 0x0030, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x080c, 0x48c1, 0x701f, ++ 0x4082, 0x0005, 0x080c, 0x539c, 0x1130, 0x3b00, 0x3a08, 0xc194, ++ 0xc095, 0x20d8, 0x21d0, 0x2069, 0x1853, 0x6800, 0x9005, 0x0904, ++ 0x33bf, 0x6804, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138, ++ 0x6200, 0x9292, 0x0005, 0x0218, 0x918c, 0xffdf, 0x0010, 0x918d, ++ 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061, 0x0100, 0x6104, ++ 0x0118, 0x918d, 0x0010, 0x0010, 0x918c, 0xffef, 0x6106, 0x00ce, ++ 0xd084, 0x0158, 0x6a28, 0x928a, 0x007f, 0x1a04, 0x33bf, 0x9288, ++ 0x318b, 0x210d, 0x918c, 0x00ff, 0x6162, 0xd0dc, 0x0130, 0x6828, ++ 0x908a, 0x007f, 0x1a04, 0x33bf, 0x605a, 0x6888, 0x9084, 0x0030, ++ 0x8004, 0x8004, 0x8004, 0x8004, 0x0006, 0x2009, 0x1982, 0x9080, ++ 0x2560, 0x2005, 0x200a, 0x2008, 0x2001, 0x0018, 0x080c, 0x98b9, ++ 0x2009, 0x0390, 0x200b, 0x0400, 0x000e, 0x2009, 0x1983, 0x9080, ++ 0x2564, 0x2005, 0x200a, 0x6808, 0x908a, 0x0100, 0x0a04, 0x33bf, ++ 0x908a, 0x0841, 0x1a04, 0x33bf, 0x9084, 0x0007, 0x1904, 0x33bf, ++ 0x680c, 0x9005, 0x0904, 0x33bf, 0x6810, 0x9005, 0x0904, 0x33bf, ++ 0x6848, 0x6940, 0x910a, 0x1a04, 0x33bf, 0x8001, 0x0904, 0x33bf, ++ 0x684c, 0x6944, 0x910a, 0x1a04, 0x33bf, 0x8001, 0x0904, 0x33bf, ++ 0x6814, 0x908c, 0x00ff, 0x614a, 0x8007, 0x9084, 0x00ff, 0x604e, ++ 0x080c, 0x73e8, 0x080c, 0x6734, 0x080c, 0x6769, 0x6808, 0x602a, ++ 0x080c, 0x1fc4, 0x2009, 0x0170, 0x200b, 0x0080, 0xa001, 0xa001, ++ 0x200b, 0x0000, 0x0036, 0x6b08, 0x080c, 0x24c7, 0x003e, 0x6000, ++ 0x9086, 0x0000, 0x1904, 0x41ee, 0x6818, 0x691c, 0x6a20, 0x6b24, ++ 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, ++ 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, ++ 0x810f, 0x8217, 0x831f, 0x0010, 0x9084, 0xf0ff, 0x6006, 0x610a, ++ 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, ++ 0x20a1, 0x1984, 0x20e9, 0x0001, 0x4001, 0x20a9, 0x0004, 0x20a1, ++ 0x199e, 0x20e9, 0x0001, 0x4001, 0x080c, 0x82d0, 0x00c6, 0x900e, ++ 0x20a9, 0x0001, 0x6b70, 0xd384, 0x01c8, 0x0020, 0x839d, 0x12b0, ++ 0x3508, 0x8109, 0x080c, 0x79be, 0x6878, 0x6016, 0x6874, 0x2008, ++ 0x9084, 0xff00, 0x8007, 0x600a, 0x9184, 0x00ff, 0x6006, 0x8108, ++ 0x1118, 0x6003, 0x0003, 0x0010, 0x6003, 0x0001, 0x1f04, 0x4166, ++ 0x00ce, 0x00c6, 0x2061, 0x196d, 0x2063, 0x0001, 0x9006, 0x080c, ++ 0x276e, 0x9006, 0x080c, 0x2751, 0x0000, 0x00ce, 0x00e6, 0x2c70, ++ 0x080c, 0x0e9c, 0x00ee, 0x6888, 0xd0ec, 0x0130, 0x2011, 0x0114, ++ 0x2204, 0x9085, 0x0180, 0x2012, 0x6a80, 0x9284, 0x0030, 0x9086, ++ 0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, 0x6a82, 0x2001, ++ 0x194d, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, 0x0170, 0x928e, ++ 0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c, ++ 0x253c, 0x2001, 0x193e, 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061, ++ 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x70b7, ++ 0x0128, 0x080c, 0x4c91, 0x0110, 0x080c, 0x248d, 0x60d0, 0x9005, ++ 0x01c0, 0x6003, 0x0001, 0x2009, 0x41d6, 0x00d0, 0x080c, 0x70b7, ++ 0x1168, 0x2011, 0x6f2d, 0x080c, 0x8159, 0x2011, 0x6f20, 0x080c, ++ 0x825f, 0x080c, 0x73bc, 0x080c, 0x6fe8, 0x0040, 0x080c, 0x5b97, ++ 0x0028, 0x6003, 0x0004, 0x2009, 0x41ee, 0x0010, 0x0804, 0x338a, ++ 0x2001, 0x0170, 0x2004, 0x9084, 0x00ff, 0x9086, 0x004c, 0x1118, ++ 0x2091, 0x31bd, 0x0817, 0x2091, 0x313d, 0x0817, 0x6000, 0x9086, ++ 0x0000, 0x0904, 0x33bc, 0x2069, 0x1853, 0x7890, 0x6842, 0x7894, ++ 0x6846, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0x2039, 0x0001, 0x0804, 0x48c4, 0x9006, 0x080c, 0x248d, 0x81ff, ++ 0x1904, 0x33bc, 0x080c, 0x70b7, 0x11b0, 0x080c, 0x73b7, 0x080c, ++ 0x5cdc, 0x080c, 0x3186, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c, ++ 0xbf61, 0x0130, 0x080c, 0x70da, 0x1118, 0x080c, 0x708b, 0x0038, ++ 0x080c, 0x6fe8, 0x0020, 0x080c, 0x5ca1, 0x080c, 0x5b97, 0x0804, ++ 0x338a, 0x81ff, 0x1904, 0x33bc, 0x080c, 0x70b7, 0x1110, 0x0804, ++ 0x33bc, 0x6190, 0x81ff, 0x01a8, 0x704f, 0x0000, 0x2001, 0x1d80, ++ 0x2009, 0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, ++ 0x8000, 0x2039, 0x0001, 0x080c, 0x48c4, 0x701f, 0x3388, 0x012e, ++ 0x0005, 0x704f, 0x0001, 0x00d6, 0x2069, 0x1d80, 0x20a9, 0x0040, ++ 0x20e9, 0x0001, 0x20a1, 0x1d80, 0x2019, 0xffff, 0x4304, 0x6558, ++ 0x9588, 0x318b, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, ++ 0x0002, 0x2100, 0x9506, 0x01a8, 0x080c, 0x6270, 0x1190, 0xb814, ++ 0x821c, 0x0238, 0x9398, 0x1d80, 0x9085, 0xff00, 0x8007, 0x201a, ++ 0x0038, 0x9398, 0x1d80, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, ++ 0x8210, 0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, ++ 0x2d0c, 0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1d80, ++ 0x2099, 0x1d80, 0x080c, 0x5c2c, 0x0804, 0x4246, 0x080c, 0x48ab, ++ 0x0904, 0x33bf, 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x33bc, 0x080c, 0x538d, 0xd0b4, 0x0558, 0x7884, 0x908e, 0x007e, ++ 0x0538, 0x908e, 0x007f, 0x0520, 0x908e, 0x0080, 0x0508, 0x080c, ++ 0x3181, 0x1148, 0xb800, 0xd08c, 0x11d8, 0xb804, 0x9084, 0x00ff, ++ 0x9086, 0x0006, 0x11a8, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, ++ 0x080c, 0xba16, 0x1120, 0x2009, 0x0003, 0x0804, 0x33bc, 0x7007, ++ 0x0003, 0x701f, 0x42d4, 0x0005, 0x080c, 0x48ab, 0x0904, 0x33bf, ++ 0x20a9, 0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860, 0x20e8, ++ 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, ++ 0x0006, 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, ++ 0x080c, 0x0f9f, 0x0070, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x000a, ++ 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, ++ 0x0f9f, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0002, 0x2009, 0x002b, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0x0804, 0x48c4, 0x81ff, 0x1904, 0x33bc, 0x080c, 0x488f, 0x0904, ++ 0x33bf, 0x080c, 0x64b1, 0x0904, 0x33bc, 0x0058, 0xa878, 0x9005, ++ 0x0120, 0x2009, 0x0004, 0x0804, 0x33bc, 0xa974, 0xaa94, 0x0804, ++ 0x338a, 0x080c, 0x5395, 0x0904, 0x338a, 0x701f, 0x431e, 0x7007, ++ 0x0003, 0x0005, 0x81ff, 0x1904, 0x33bc, 0x7888, 0x908a, 0x1000, ++ 0x1a04, 0x33bf, 0x080c, 0x48ab, 0x0904, 0x33bf, 0x080c, 0x6667, ++ 0x0120, 0x080c, 0x666f, 0x1904, 0x33bf, 0x080c, 0x6536, 0x0904, ++ 0x33bc, 0x2019, 0x0004, 0x900e, 0x080c, 0x64c3, 0x0904, 0x33bc, ++ 0x7984, 0x7a88, 0x04c9, 0x08a8, 0xa89c, 0x908a, 0x1000, 0x12f8, ++ 0x080c, 0x48a9, 0x01e0, 0x080c, 0x6667, 0x0118, 0x080c, 0x666f, ++ 0x11b0, 0x080c, 0x6536, 0x2009, 0x0002, 0x0168, 0x2009, 0x0002, ++ 0x2019, 0x0004, 0x080c, 0x64c3, 0x2009, 0x0003, 0x0120, 0xa998, ++ 0xaa9c, 0x00d1, 0x0060, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, ++ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, ++ 0x4000, 0x080c, 0x5395, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0000, 0x0005, 0x9186, 0x00ff, 0x0110, 0x0071, ++ 0x0060, 0x2029, 0x007e, 0x2061, 0x1800, 0x6458, 0x2400, 0x9506, ++ 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x6270, ++ 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x8167, ++ 0x0005, 0x81ff, 0x1904, 0x33bc, 0x798c, 0x2001, 0x1951, 0x918c, ++ 0x8000, 0x2102, 0x080c, 0x488f, 0x0904, 0x33bf, 0x080c, 0x6667, ++ 0x0120, 0x080c, 0x666f, 0x1904, 0x33bf, 0x080c, 0x6337, 0x0904, ++ 0x33bc, 0x080c, 0x64ba, 0x0904, 0x33bc, 0x2001, 0x1951, 0x2004, ++ 0xd0fc, 0x1904, 0x338a, 0x0804, 0x4329, 0xa9a0, 0x2001, 0x1951, ++ 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, 0x489c, 0x01a0, 0x080c, ++ 0x6667, 0x0118, 0x080c, 0x666f, 0x1170, 0x080c, 0x6337, 0x2009, ++ 0x0002, 0x0128, 0x080c, 0x64ba, 0x1170, 0x2009, 0x0003, 0xa897, ++ 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, 0x1951, 0x2004, ++ 0xd0fc, 0x1128, 0x080c, 0x5395, 0x0110, 0x9006, 0x0018, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x81ff, 0x1904, 0x33bc, ++ 0x798c, 0x2001, 0x1950, 0x918c, 0x8000, 0x2102, 0x080c, 0x488f, ++ 0x0904, 0x33bf, 0x080c, 0x6667, 0x0120, 0x080c, 0x666f, 0x1904, ++ 0x33bf, 0x080c, 0x6337, 0x0904, 0x33bc, 0x080c, 0x64a8, 0x0904, ++ 0x33bc, 0x2001, 0x1950, 0x2004, 0xd0fc, 0x1904, 0x338a, 0x0804, ++ 0x4329, 0xa9a0, 0x2001, 0x1950, 0x918c, 0x8000, 0xc18d, 0x2102, ++ 0x080c, 0x489c, 0x01a0, 0x080c, 0x6667, 0x0118, 0x080c, 0x666f, ++ 0x1170, 0x080c, 0x6337, 0x2009, 0x0002, 0x0128, 0x080c, 0x64a8, ++ 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, ++ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, ++ 0x4000, 0x2001, 0x1950, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x5395, ++ 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, ++ 0x0005, 0x6100, 0x0804, 0x338a, 0x080c, 0x48ab, 0x0904, 0x33bf, ++ 0x080c, 0x53a1, 0x1904, 0x33bc, 0x79a8, 0xd184, 0x1158, 0xb834, ++ 0x8007, 0x789e, 0xb830, 0x8007, 0x789a, 0xbb2c, 0x831f, 0xba28, ++ 0x8217, 0x0050, 0xb824, 0x8007, 0x789e, 0xb820, 0x8007, 0x789a, ++ 0xbb1c, 0x831f, 0xba18, 0x8217, 0xb900, 0x918c, 0x0200, 0x0804, ++ 0x338a, 0x78a8, 0x909c, 0x0003, 0xd0b4, 0x1140, 0x939a, 0x0003, ++ 0x1a04, 0x33bc, 0x6258, 0x7884, 0x9206, 0x1560, 0x2031, 0x1848, ++ 0x2009, 0x013c, 0x2136, 0x2001, 0x1840, 0x2009, 0x000c, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x0006, 0x78a8, 0x9084, ++ 0x0080, 0x1118, 0x000e, 0x0804, 0x48c4, 0x000e, 0x2031, 0x0000, ++ 0x2061, 0x18ae, 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, ++ 0xa392, 0xa496, 0xa59a, 0x080c, 0x110c, 0x7007, 0x0002, 0x701f, ++ 0x44e2, 0x0005, 0x81ff, 0x1904, 0x33bc, 0x080c, 0x48ab, 0x0904, ++ 0x33bf, 0x080c, 0x6667, 0x1904, 0x33bc, 0x00c6, 0x080c, 0x4878, ++ 0x00ce, 0x0904, 0x33bc, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, ++ 0x7ea8, 0x080c, 0xb9bc, 0x0904, 0x33bc, 0x7007, 0x0003, 0x701f, ++ 0x44e6, 0x0005, 0x080c, 0x4054, 0x0804, 0x338a, 0xa830, 0x9086, ++ 0x0100, 0x0904, 0x33bc, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, ++ 0x9084, 0xffc0, 0x9080, 0x001b, 0x2009, 0x000c, 0x7a8c, 0x7b88, ++ 0x7c9c, 0x7d98, 0x0804, 0x48c4, 0x9006, 0x080c, 0x248d, 0x78a8, ++ 0x9084, 0x00ff, 0x9086, 0x00ff, 0x0118, 0x81ff, 0x1904, 0x33bc, ++ 0x080c, 0x70b7, 0x0110, 0x080c, 0x5ca1, 0x7888, 0x908a, 0x1000, ++ 0x1a04, 0x33bf, 0x7984, 0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, ++ 0x1a04, 0x33bf, 0x2100, 0x080c, 0x2457, 0x0026, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x2061, 0x19d4, 0x601b, 0x0000, 0x601f, 0x0000, ++ 0x6073, 0x0000, 0x6077, 0x0000, 0x080c, 0x70b7, 0x1158, 0x080c, ++ 0x73b7, 0x080c, 0x5cdc, 0x9085, 0x0001, 0x080c, 0x70fe, 0x080c, ++ 0x6fe8, 0x00f0, 0x080c, 0x98c8, 0x080c, 0x9b6d, 0x080c, 0x98e4, ++ 0x2061, 0x0100, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, 0x810f, ++ 0x9105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x196a, ++ 0x200b, 0x0000, 0x2009, 0x002d, 0x2011, 0x5bc7, 0x080c, 0x821d, ++ 0x7984, 0x080c, 0x70b7, 0x1110, 0x2009, 0x00ff, 0x7a88, 0x080c, ++ 0x438c, 0x012e, 0x00ce, 0x002e, 0x0804, 0x338a, 0x7984, 0x080c, ++ 0x6210, 0x2b08, 0x1904, 0x33bf, 0x0804, 0x338a, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x33bc, 0x60d8, 0xd0ac, 0x1130, 0xd09c, ++ 0x1120, 0x2009, 0x0005, 0x0804, 0x33bc, 0x080c, 0x4878, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x33bc, 0x7984, 0x9192, 0x0021, 0x1a04, ++ 0x33bf, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, ++ 0x702a, 0xaf60, 0x7736, 0x080c, 0x48c1, 0x701f, 0x459e, 0x7880, ++ 0x9086, 0x006e, 0x0110, 0x701f, 0x4e43, 0x0005, 0x2009, 0x0080, ++ 0x080c, 0x6270, 0x1118, 0x080c, 0x6667, 0x0120, 0x2021, 0x400a, ++ 0x0804, 0x338c, 0x00d6, 0x0096, 0xa964, 0xaa6c, 0xab70, 0xac74, ++ 0xad78, 0xae7c, 0xa884, 0x90be, 0x0100, 0x0904, 0x4637, 0x90be, ++ 0x0112, 0x0904, 0x4637, 0x90be, 0x0113, 0x0904, 0x4637, 0x90be, ++ 0x0114, 0x0904, 0x4637, 0x90be, 0x0117, 0x0904, 0x4637, 0x90be, ++ 0x011a, 0x0904, 0x4637, 0x90be, 0x011c, 0x0904, 0x4637, 0x90be, ++ 0x0121, 0x0904, 0x461e, 0x90be, 0x0131, 0x0904, 0x461e, 0x90be, ++ 0x0171, 0x0904, 0x4637, 0x90be, 0x0173, 0x0904, 0x4637, 0x90be, ++ 0x01a1, 0x1128, 0xa894, 0x8007, 0xa896, 0x0804, 0x4642, 0x90be, ++ 0x0212, 0x0904, 0x462b, 0x90be, 0x0213, 0x05e8, 0x90be, 0x0214, ++ 0x0500, 0x90be, 0x0217, 0x0188, 0x90be, 0x021a, 0x1120, 0xa89c, ++ 0x8007, 0xa89e, 0x04e0, 0x90be, 0x021f, 0x05c8, 0x90be, 0x0300, ++ 0x05b0, 0x009e, 0x00de, 0x0804, 0x33bf, 0x7028, 0x9080, 0x0010, ++ 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0007, 0x080c, ++ 0x4680, 0x7028, 0x9080, 0x000e, 0x2098, 0x20a0, 0x7034, 0x20e0, ++ 0x20e8, 0x20a9, 0x0001, 0x080c, 0x4680, 0x00c8, 0x7028, 0x9080, ++ 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, ++ 0x080c, 0x468d, 0x00b8, 0x7028, 0x9080, 0x000e, 0x2098, 0x20a0, ++ 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x468d, 0x7028, ++ 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, ++ 0x0001, 0x04f1, 0x00c6, 0x080c, 0x4878, 0x0550, 0xa868, 0xc0fd, ++ 0xa86a, 0xa867, 0x0119, 0x9006, 0xa882, 0xa87f, 0x0020, 0xa88b, ++ 0x0001, 0x810b, 0xa9ae, 0xa8b2, 0xaab6, 0xabba, 0xacbe, 0xadc2, ++ 0xa9c6, 0xa8ca, 0x00ce, 0x009e, 0x00de, 0xa866, 0xa822, 0xa868, ++ 0xc0fd, 0xa86a, 0xa804, 0x2048, 0x080c, 0xb9d7, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x33bc, 0x7007, 0x0003, 0x701f, 0x4677, 0x0005, ++ 0x00ce, 0x009e, 0x00de, 0x2009, 0x0002, 0x0804, 0x33bc, 0xa820, ++ 0x9086, 0x8001, 0x1904, 0x338a, 0x2009, 0x0004, 0x0804, 0x33bc, ++ 0x0016, 0x0026, 0x3510, 0x20a9, 0x0002, 0x4002, 0x4104, 0x4004, ++ 0x8211, 0x1dc8, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x3520, 0x20a9, 0x0004, 0x4002, 0x4304, 0x4204, 0x4104, ++ 0x4004, 0x8421, 0x1db8, 0x004e, 0x003e, 0x002e, 0x001e, 0x0005, ++ 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x33bc, 0x60d8, 0xd0ac, ++ 0x1160, 0xd09c, 0x0120, 0x2009, 0x0016, 0x0804, 0x33bc, 0xd09c, ++ 0x1120, 0x2009, 0x0005, 0x0804, 0x33bc, 0x7984, 0x78a8, 0x2040, ++ 0x080c, 0x9b66, 0x1120, 0x9182, 0x007f, 0x0a04, 0x33bf, 0x9186, ++ 0x00ff, 0x0904, 0x33bf, 0x9182, 0x0800, 0x1a04, 0x33bf, 0x7a8c, ++ 0x7b88, 0x6078, 0x9306, 0x1140, 0x607c, 0x924e, 0x0904, 0x33bf, ++ 0x99cc, 0xff00, 0x0904, 0x33bf, 0x0126, 0x2091, 0x8000, 0x0026, ++ 0x2011, 0x8008, 0x080c, 0x668b, 0x002e, 0x0140, 0x918d, 0x8000, ++ 0x080c, 0x66d5, 0x1118, 0x2001, 0x4009, 0x0458, 0x080c, 0x4792, ++ 0x0560, 0x90c6, 0x4000, 0x1170, 0x00c6, 0x0006, 0x900e, 0x080c, ++ 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x000e, ++ 0x00ce, 0x00b8, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0090, 0x90c6, ++ 0x4008, 0x1118, 0x2708, 0x2610, 0x0060, 0x90c6, 0x4009, 0x1108, ++ 0x0040, 0x90c6, 0x4006, 0x1108, 0x0020, 0x2001, 0x4005, 0x2009, ++ 0x000a, 0x2020, 0x012e, 0x0804, 0x338c, 0x2b00, 0x7026, 0x0016, ++ 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x9c58, 0x0904, 0x475f, ++ 0x2b00, 0x6012, 0x080c, 0xbcdb, 0x2e58, 0x00ee, 0x00e6, 0x00c6, ++ 0x080c, 0x4878, 0x00ce, 0x2b70, 0x1158, 0x080c, 0x9be7, 0x00ee, ++ 0x00ce, 0x00be, 0x001e, 0x012e, 0x2009, 0x0002, 0x0804, 0x33bc, ++ 0x900e, 0xa966, 0xa96a, 0x2900, 0x6016, 0xa932, 0xa868, 0xc0fd, ++ 0xd88c, 0x0108, 0xc0f5, 0xa86a, 0x080c, 0x3006, 0x6023, 0x0001, ++ 0x9006, 0x080c, 0x61ad, 0x2001, 0x0002, 0x080c, 0x61c1, 0x2009, ++ 0x0002, 0x080c, 0x9c85, 0x78a8, 0xd094, 0x0138, 0x00ee, 0x7024, ++ 0x00e6, 0x2058, 0xb8c4, 0xc08d, 0xb8c6, 0x9085, 0x0001, 0x00ee, ++ 0x00ce, 0x00be, 0x001e, 0x012e, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x33bc, 0x7007, 0x0003, 0x701f, 0x476e, 0x0005, 0xa830, 0x2008, ++ 0x918e, 0xdead, 0x1120, 0x2021, 0x4009, 0x0804, 0x338c, 0x9086, ++ 0x0100, 0x7024, 0x2058, 0x1138, 0x2009, 0x0004, 0xba04, 0x9294, ++ 0x00ff, 0x0804, 0x52ea, 0x900e, 0xa868, 0xd0f4, 0x1904, 0x338a, ++ 0x080c, 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x0804, 0x338a, 0x00e6, 0x00d6, 0x0096, 0x83ff, 0x0904, 0x47da, ++ 0x902e, 0x080c, 0x9b66, 0x0130, 0x9026, 0x20a9, 0x0800, 0x2071, ++ 0x1000, 0x0030, 0x2021, 0x007f, 0x20a9, 0x0781, 0x2071, 0x107f, ++ 0x2e04, 0x9005, 0x11b0, 0x2100, 0x9406, 0x15e8, 0x2428, 0x94ce, ++ 0x007f, 0x1120, 0x92ce, 0xfffd, 0x1528, 0x0030, 0x94ce, 0x0080, ++ 0x1130, 0x92ce, 0xfffc, 0x11f0, 0x93ce, 0x00ff, 0x11d8, 0xc5fd, ++ 0x0450, 0x2058, 0xbf10, 0x2700, 0x9306, 0x11b8, 0xbe14, 0x2600, ++ 0x9206, 0x1198, 0x2400, 0x9106, 0x1150, 0xd884, 0x0568, 0xd894, ++ 0x1558, 0x080c, 0x6667, 0x1540, 0x2001, 0x4000, 0x0430, 0x2001, ++ 0x4007, 0x0418, 0x2001, 0x4006, 0x0400, 0x2400, 0x9106, 0x1158, ++ 0xbe14, 0x87ff, 0x1128, 0x86ff, 0x0948, 0x080c, 0x9b66, 0x1930, ++ 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, 0x47a8, 0x85ff, ++ 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, 0x0030, 0x080c, ++ 0x6210, 0x1dd0, 0xbb12, 0xba16, 0x9006, 0x9005, 0x009e, 0x00de, ++ 0x00ee, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x33bc, ++ 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, 0xa867, ++ 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x7884, 0x9005, 0x0904, 0x33bf, ++ 0x9096, 0x00ff, 0x0120, 0x9092, 0x0004, 0x1a04, 0x33bf, 0x2010, ++ 0x2918, 0x080c, 0x2fa0, 0x1120, 0x2009, 0x0003, 0x0804, 0x33bc, ++ 0x7007, 0x0003, 0x701f, 0x482d, 0x0005, 0xa830, 0x9086, 0x0100, ++ 0x1904, 0x338a, 0x2009, 0x0004, 0x0804, 0x33bc, 0x7984, 0x080c, ++ 0x9b66, 0x1120, 0x9182, 0x007f, 0x0a04, 0x33bf, 0x9186, 0x00ff, ++ 0x0904, 0x33bf, 0x9182, 0x0800, 0x1a04, 0x33bf, 0x2001, 0x9000, ++ 0x080c, 0x5345, 0x1904, 0x33bc, 0x0804, 0x338a, 0xa998, 0x080c, ++ 0x9b66, 0x1118, 0x9182, 0x007f, 0x0280, 0x9186, 0x00ff, 0x0168, ++ 0x9182, 0x0800, 0x1250, 0x2001, 0x9000, 0x080c, 0x5345, 0x11a8, ++ 0x0060, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x900e, ++ 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x2009, 0x000a, 0x0c48, ++ 0x080c, 0x1022, 0x0198, 0x9006, 0xa802, 0x7014, 0x9005, 0x1120, ++ 0x2900, 0x7016, 0x701a, 0x0040, 0x7018, 0xa802, 0x0086, 0x2040, ++ 0x2900, 0xa006, 0x701a, 0x008e, 0x9085, 0x0001, 0x0005, 0x7984, ++ 0x080c, 0x6270, 0x1130, 0x7e88, 0x9684, 0x3fff, 0x9082, 0x4000, ++ 0x0208, 0x905e, 0x8bff, 0x0005, 0xa998, 0x080c, 0x6270, 0x1130, ++ 0xae9c, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, 0x8bff, ++ 0x0005, 0xae98, 0x0008, 0x7e84, 0x2608, 0x080c, 0x6270, 0x1108, ++ 0x0008, 0x905e, 0x8bff, 0x0005, 0x0016, 0x7114, 0x81ff, 0x0128, ++ 0x2148, 0xa904, 0x080c, 0x1054, 0x0cc8, 0x7116, 0x711a, 0x001e, ++ 0x0005, 0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0x18ae, ++ 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496, ++ 0xa59a, 0x080c, 0x110c, 0x7007, 0x0002, 0x701f, 0x338a, 0x0005, ++ 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x18a6, ++ 0x2004, 0x9005, 0x1190, 0x0e04, 0x48f5, 0x7a36, 0x7833, 0x0012, ++ 0x7a82, 0x7b86, 0x7c8a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x190c, 0x11be, 0x0804, 0x495b, 0x0016, 0x0086, 0x0096, ++ 0x00c6, 0x00e6, 0x2071, 0x1894, 0x7044, 0x9005, 0x1540, 0x7148, ++ 0x9182, 0x0010, 0x0288, 0x7038, 0x2060, 0x080c, 0x1022, 0x0904, ++ 0x4953, 0xa84b, 0x0000, 0x2900, 0x7046, 0x2001, 0x0002, 0x9080, ++ 0x1cf7, 0x2005, 0xa846, 0x0098, 0x7038, 0x90e0, 0x0004, 0x2001, ++ 0x18b0, 0x9c82, 0x18f0, 0x0210, 0x2061, 0x18b0, 0x2c00, 0x703a, ++ 0x7148, 0x81ff, 0x1108, 0x703e, 0x8108, 0x714a, 0x0460, 0x7148, ++ 0x8108, 0x714a, 0x7044, 0x2040, 0xa144, 0x2105, 0x0016, 0x908a, ++ 0x0036, 0x1a0c, 0x0d65, 0x2060, 0x001e, 0x8108, 0x2105, 0x9005, ++ 0xa146, 0x1520, 0x080c, 0x1022, 0x1130, 0x8109, 0xa946, 0x7148, ++ 0x8109, 0x714a, 0x00d8, 0x9006, 0xa806, 0xa84a, 0xa046, 0x2800, ++ 0xa802, 0x2900, 0xa006, 0x7046, 0x2001, 0x0002, 0x9080, 0x1cf7, ++ 0x2005, 0xa846, 0x0058, 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, ++ 0x009e, 0x008e, 0x001e, 0x012e, 0x00fe, 0x0005, 0x2c00, 0x9082, ++ 0x001b, 0x0002, 0x497d, 0x497d, 0x497f, 0x497d, 0x497d, 0x497d, ++ 0x4983, 0x497d, 0x497d, 0x497d, 0x4987, 0x497d, 0x497d, 0x497d, ++ 0x498b, 0x497d, 0x497d, 0x497d, 0x498f, 0x497d, 0x497d, 0x497d, ++ 0x4993, 0x497d, 0x497d, 0x497d, 0x4998, 0x080c, 0x0d65, 0xa276, ++ 0xa37a, 0xa47e, 0x0898, 0xa286, 0xa38a, 0xa48e, 0x0878, 0xa296, ++ 0xa39a, 0xa49e, 0x0858, 0xa2a6, 0xa3aa, 0xa4ae, 0x0838, 0xa2b6, ++ 0xa3ba, 0xa4be, 0x0818, 0xa2c6, 0xa3ca, 0xa4ce, 0x0804, 0x4956, ++ 0xa2d6, 0xa3da, 0xa4de, 0x0804, 0x4956, 0x00e6, 0x2071, 0x1894, ++ 0x7048, 0x9005, 0x0904, 0x4a2f, 0x0126, 0x2091, 0x8000, 0x0e04, ++ 0x4a2e, 0x00f6, 0x2079, 0x0000, 0x00c6, 0x0096, 0x0086, 0x0076, ++ 0x9006, 0x2038, 0x7040, 0x2048, 0x9005, 0x0500, 0xa948, 0x2105, ++ 0x0016, 0x908a, 0x0036, 0x1a0c, 0x0d65, 0x2060, 0x001e, 0x8108, ++ 0x2105, 0x9005, 0xa94a, 0x1904, 0x4a31, 0xa804, 0x9005, 0x090c, ++ 0x0d65, 0x7042, 0x2938, 0x2040, 0xa003, 0x0000, 0x2001, 0x0002, ++ 0x9080, 0x1cf7, 0x2005, 0xa04a, 0x0804, 0x4a31, 0x703c, 0x2060, ++ 0x2c14, 0x6304, 0x6408, 0x650c, 0x2200, 0x7836, 0x7833, 0x0012, ++ 0x7882, 0x2300, 0x7886, 0x2400, 0x788a, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x87ff, 0x0118, 0x2748, ++ 0x080c, 0x1054, 0x7048, 0x8001, 0x704a, 0x9005, 0x1170, 0x7040, ++ 0x2048, 0x9005, 0x0128, 0x080c, 0x1054, 0x9006, 0x7042, 0x7046, ++ 0x703b, 0x18b0, 0x703f, 0x18b0, 0x0420, 0x7040, 0x9005, 0x1508, ++ 0x7238, 0x2c00, 0x9206, 0x0148, 0x9c80, 0x0004, 0x90fa, 0x18f0, ++ 0x0210, 0x2001, 0x18b0, 0x703e, 0x00a0, 0x9006, 0x703e, 0x703a, ++ 0x7044, 0x9005, 0x090c, 0x0d65, 0x2048, 0xa800, 0x9005, 0x1de0, ++ 0x2900, 0x7042, 0x2001, 0x0002, 0x9080, 0x1cf7, 0x2005, 0xa84a, ++ 0x0000, 0x007e, 0x008e, 0x009e, 0x00ce, 0x00fe, 0x012e, 0x00ee, ++ 0x0005, 0x2c00, 0x9082, 0x001b, 0x0002, 0x4a50, 0x4a50, 0x4a52, ++ 0x4a50, 0x4a50, 0x4a50, 0x4a57, 0x4a50, 0x4a50, 0x4a50, 0x4a5c, ++ 0x4a50, 0x4a50, 0x4a50, 0x4a61, 0x4a50, 0x4a50, 0x4a50, 0x4a66, ++ 0x4a50, 0x4a50, 0x4a50, 0x4a6b, 0x4a50, 0x4a50, 0x4a50, 0x4a70, ++ 0x080c, 0x0d65, 0xaa74, 0xab78, 0xac7c, 0x0804, 0x49dc, 0xaa84, ++ 0xab88, 0xac8c, 0x0804, 0x49dc, 0xaa94, 0xab98, 0xac9c, 0x0804, ++ 0x49dc, 0xaaa4, 0xaba8, 0xacac, 0x0804, 0x49dc, 0xaab4, 0xabb8, ++ 0xacbc, 0x0804, 0x49dc, 0xaac4, 0xabc8, 0xaccc, 0x0804, 0x49dc, ++ 0xaad4, 0xabd8, 0xacdc, 0x0804, 0x49dc, 0x0026, 0x080c, 0x538d, ++ 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x48d8, 0x002e, 0x0005, ++ 0x81ff, 0x1904, 0x33bc, 0x0126, 0x2091, 0x8000, 0x6030, 0xc08d, ++ 0xc085, 0xc0ac, 0x6032, 0x080c, 0x70b7, 0x1158, 0x080c, 0x73b7, ++ 0x080c, 0x5cdc, 0x9085, 0x0001, 0x080c, 0x70fe, 0x080c, 0x6fe8, ++ 0x0010, 0x080c, 0x5b97, 0x012e, 0x0804, 0x338a, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x33bc, 0x080c, 0x53a1, 0x0120, 0x2009, ++ 0x0007, 0x0804, 0x33bc, 0x080c, 0x665f, 0x0120, 0x2009, 0x0008, ++ 0x0804, 0x33bc, 0x0026, 0x2011, 0x0010, 0x080c, 0x668b, 0x002e, ++ 0x0140, 0x7984, 0x080c, 0x66d5, 0x1120, 0x2009, 0x4009, 0x0804, ++ 0x33bc, 0x080c, 0x3181, 0x0128, 0x7984, 0x080c, 0x6210, 0x1904, ++ 0x33bf, 0x080c, 0x48ab, 0x0904, 0x33bf, 0x2b00, 0x7026, 0x080c, ++ 0x6667, 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, 0x900e, 0x080c, ++ 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, ++ 0x338a, 0x080c, 0x4878, 0x0904, 0x33bc, 0x9006, 0xa866, 0xa832, ++ 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xba79, 0x0904, 0x33bc, 0x7888, ++ 0xd094, 0x0118, 0xb8c4, 0xc08d, 0xb8c6, 0x7007, 0x0003, 0x701f, ++ 0x4b46, 0x0005, 0x2061, 0x1800, 0x080c, 0x53a1, 0x2009, 0x0007, ++ 0x1578, 0x080c, 0x665f, 0x0118, 0x2009, 0x0008, 0x0448, 0x080c, ++ 0x3181, 0x0120, 0xa998, 0x080c, 0x6210, 0x1530, 0x080c, 0x48a9, ++ 0x0518, 0x080c, 0x6667, 0xa89c, 0x1168, 0x9084, 0x0005, 0x1150, ++ 0x900e, 0x080c, 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, ++ 0xc18d, 0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, 0xba79, 0x11e0, ++ 0xa89c, 0xd094, 0x0118, 0xb8c4, 0xc08d, 0xb8c6, 0x2009, 0x0003, ++ 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0xa99a, 0x9006, ++ 0x918d, 0x0001, 0x2008, 0x0005, 0x9006, 0x0005, 0xa830, 0x2008, ++ 0x918e, 0xdead, 0x1120, 0x2021, 0x4009, 0x0804, 0x338c, 0x9086, ++ 0x0100, 0x7024, 0x2058, 0x1110, 0x0804, 0x52ea, 0x900e, 0x080c, ++ 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, ++ 0x338a, 0x080c, 0x53a1, 0x0120, 0x2009, 0x0007, 0x0804, 0x33bc, ++ 0x7f84, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, 0x4878, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x33bc, 0x900e, 0x2130, 0x7126, 0x7132, ++ 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0005, 0x702a, 0x20a0, ++ 0x080c, 0x6270, 0x1904, 0x4be4, 0x080c, 0x6667, 0x0120, 0x080c, ++ 0x666f, 0x1904, 0x4be4, 0x080c, 0x665f, 0x1130, 0x080c, 0x655f, ++ 0x1118, 0xd79c, 0x0904, 0x4be4, 0xd794, 0x1110, 0xd784, 0x01a8, ++ 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x3400, 0xd794, ++ 0x0160, 0x20a9, 0x0008, 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, ++ 0x20a9, 0x0002, 0x080c, 0x468d, 0x0048, 0x20a9, 0x0004, 0x4003, ++ 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x468d, 0x4104, 0xd794, ++ 0x0528, 0xb8b4, 0x20e0, 0xb8b8, 0x2060, 0x9c80, 0x0000, 0x2098, ++ 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, 0x2098, 0x20a9, 0x0001, ++ 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002, 0x4003, ++ 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x4680, 0x9c80, 0x0026, ++ 0x2098, 0xb8b4, 0x20e0, 0x20a9, 0x0002, 0x4003, 0xd794, 0x0110, ++ 0x96b0, 0x000b, 0x96b0, 0x0005, 0x8108, 0x080c, 0x9b66, 0x0118, ++ 0x9186, 0x0800, 0x0040, 0xd78c, 0x0120, 0x9186, 0x0800, 0x0170, ++ 0x0018, 0x9186, 0x007e, 0x0150, 0xd794, 0x0118, 0x9686, 0x0020, ++ 0x0010, 0x9686, 0x0028, 0x0150, 0x0804, 0x4b80, 0x86ff, 0x1120, ++ 0x7124, 0x810b, 0x0804, 0x338a, 0x7033, 0x0001, 0x7122, 0x7024, ++ 0x9600, 0x7026, 0x772e, 0x2061, 0x18ae, 0x2c44, 0xa06b, 0x0000, ++ 0xa67a, 0x7034, 0xa072, 0x7028, 0xa076, 0xa28e, 0xa392, 0xa496, ++ 0xa59a, 0x080c, 0x110c, 0x7007, 0x0002, 0x701f, 0x4c20, 0x0005, ++ 0x7030, 0x9005, 0x1180, 0x7120, 0x7028, 0x20a0, 0x772c, 0x9036, ++ 0x7034, 0x20e8, 0x2061, 0x18ae, 0x2c44, 0xa28c, 0xa390, 0xa494, ++ 0xa598, 0x0804, 0x4b80, 0x7124, 0x810b, 0x0804, 0x338a, 0x2029, ++ 0x007e, 0x7984, 0x7a88, 0x7b8c, 0x7c98, 0x9184, 0xff00, 0x8007, ++ 0x90e2, 0x0020, 0x0a04, 0x33bf, 0x9502, 0x0a04, 0x33bf, 0x9184, ++ 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x33bf, 0x9502, 0x0a04, 0x33bf, ++ 0x9284, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x33bf, 0x9502, ++ 0x0a04, 0x33bf, 0x9284, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x33bf, ++ 0x9502, 0x0a04, 0x33bf, 0x9384, 0xff00, 0x8007, 0x90e2, 0x0020, ++ 0x0a04, 0x33bf, 0x9502, 0x0a04, 0x33bf, 0x9384, 0x00ff, 0x90e2, ++ 0x0020, 0x0a04, 0x33bf, 0x9502, 0x0a04, 0x33bf, 0x9484, 0xff00, ++ 0x8007, 0x90e2, 0x0020, 0x0a04, 0x33bf, 0x9502, 0x0a04, 0x33bf, ++ 0x9484, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x33bf, 0x9502, 0x0a04, ++ 0x33bf, 0x2061, 0x195a, 0x6102, 0x6206, 0x630a, 0x640e, 0x0804, ++ 0x338a, 0x0006, 0x080c, 0x538d, 0xd0cc, 0x000e, 0x0005, 0x0006, ++ 0x080c, 0x5391, 0xd0bc, 0x000e, 0x0005, 0x6170, 0x7a84, 0x6300, ++ 0x82ff, 0x1118, 0x7986, 0x0804, 0x338a, 0x83ff, 0x1904, 0x33bf, ++ 0x2001, 0xfff0, 0x9200, 0x1a04, 0x33bf, 0x2019, 0xffff, 0x6074, ++ 0x9302, 0x9200, 0x0a04, 0x33bf, 0x7986, 0x6272, 0x0804, 0x338a, ++ 0x080c, 0x53a1, 0x1904, 0x33bc, 0x7c88, 0x7d84, 0x7e98, 0x7f8c, ++ 0x080c, 0x4878, 0x0904, 0x33bc, 0x900e, 0x901e, 0x7326, 0x7332, ++ 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0003, 0x702a, 0x20a0, ++ 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6667, 0x0118, ++ 0x080c, 0x666f, 0x1148, 0x20a9, 0x0001, 0xb814, 0x4004, 0xb810, ++ 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, ++ 0x9386, 0x003c, 0x0170, 0x0c20, 0x83ff, 0x1148, 0x7224, 0x900e, ++ 0x2001, 0x0003, 0x080c, 0x8419, 0x2208, 0x0804, 0x338a, 0x7033, ++ 0x0001, 0x7122, 0x7024, 0x9300, 0x7026, 0x2061, 0x18ae, 0x2c44, ++ 0xa06b, 0x0000, 0xa37a, 0x7028, 0xa076, 0x7034, 0xa072, 0xa48e, ++ 0xa592, 0xa696, 0xa79a, 0x080c, 0x110c, 0x7007, 0x0002, 0x701f, ++ 0x4d12, 0x0005, 0x7030, 0x9005, 0x1178, 0x7120, 0x7028, 0x20a0, ++ 0x901e, 0x7034, 0x20e8, 0x2061, 0x18ae, 0x2c44, 0xa48c, 0xa590, ++ 0xa694, 0xa798, 0x0804, 0x4cd0, 0x7224, 0x900e, 0x2001, 0x0003, ++ 0x080c, 0x8419, 0x2208, 0x0804, 0x338a, 0x00f6, 0x00e6, 0x080c, ++ 0x53a1, 0x2009, 0x0007, 0x1904, 0x4da5, 0x2071, 0x1894, 0x745c, ++ 0x84ff, 0x2009, 0x000e, 0x1904, 0x4da5, 0xac9c, 0xad98, 0xaea4, ++ 0xafa0, 0x0096, 0x080c, 0x103b, 0x2009, 0x0002, 0x0904, 0x4da5, ++ 0x2900, 0x705e, 0x900e, 0x901e, 0x7356, 0x7362, 0xa860, 0x7066, ++ 0xa85c, 0x9080, 0x0003, 0x705a, 0x20a0, 0x91d8, 0x1000, 0x2b5c, ++ 0x8bff, 0x0178, 0x080c, 0x6667, 0x0118, 0x080c, 0x666f, 0x1148, ++ 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, 0x4104, 0x9398, ++ 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c, 0x01e8, ++ 0x0c20, 0x83ff, 0x11c0, 0x7254, 0x900e, 0x2001, 0x0003, 0x080c, ++ 0x8419, 0x2208, 0x009e, 0xa897, 0x4000, 0xa99a, 0x715c, 0x81ff, ++ 0x090c, 0x0d65, 0x2148, 0x080c, 0x1054, 0x9006, 0x705e, 0x918d, ++ 0x0001, 0x2008, 0x0418, 0x7063, 0x0001, 0x7152, 0x7054, 0x9300, ++ 0x7056, 0x2061, 0x18af, 0x2c44, 0xa37a, 0x7058, 0xa076, 0x7064, ++ 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0xa09f, 0x4db1, 0x000e, ++ 0xa0a2, 0x080c, 0x110c, 0x9006, 0x0048, 0x009e, 0xa897, 0x4005, ++ 0xa99a, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ee, 0x00fe, ++ 0x0005, 0x00f6, 0xa0a0, 0x904d, 0x090c, 0x0d65, 0x00e6, 0x2071, ++ 0x1894, 0xa06c, 0x908e, 0x0100, 0x0138, 0xa87b, 0x0030, 0xa883, ++ 0x0000, 0xa897, 0x4002, 0x00d8, 0x7060, 0x9005, 0x1158, 0x7150, ++ 0x7058, 0x20a0, 0x901e, 0x7064, 0x20e8, 0xa48c, 0xa590, 0xa694, ++ 0xa798, 0x0428, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, ++ 0x7254, 0x900e, 0x2001, 0x0003, 0x080c, 0x8419, 0xaa9a, 0x715c, ++ 0x81ff, 0x090c, 0x0d65, 0x2148, 0x080c, 0x1054, 0x705f, 0x0000, ++ 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x6996, 0x012e, ++ 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x91d8, ++ 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x6667, 0x0118, 0x080c, ++ 0x666f, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, ++ 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, ++ 0x003c, 0x0518, 0x0c20, 0x83ff, 0x11f0, 0x7154, 0x810c, 0xa99a, ++ 0xa897, 0x4000, 0x715c, 0x81ff, 0x090c, 0x0d65, 0x2148, 0x080c, ++ 0x1054, 0x9006, 0x705e, 0x918d, 0x0001, 0x2008, 0xa0a0, 0x2048, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x6996, 0x012e, 0xa09f, 0x0000, ++ 0xa0a3, 0x0000, 0x0070, 0x7063, 0x0001, 0x7152, 0x7054, 0x9300, ++ 0x7056, 0xa37a, 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, 0x110c, ++ 0x9006, 0x00ee, 0x0005, 0x0096, 0xa88c, 0x90be, 0x7000, 0x0148, ++ 0x90be, 0x7100, 0x0130, 0x90be, 0x7200, 0x0118, 0x009e, 0x0804, ++ 0x33bf, 0xa884, 0xa988, 0x080c, 0x2424, 0x1518, 0x080c, 0x6210, ++ 0x1500, 0x7126, 0xbe12, 0xbd16, 0xae7c, 0x080c, 0x4878, 0x01c8, ++ 0x080c, 0x4878, 0x01b0, 0x009e, 0xa867, 0x0000, 0xa868, 0xc0fd, ++ 0xa86a, 0xa823, 0x0000, 0xa804, 0x2048, 0x080c, 0xb9f7, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x33bc, 0x7007, 0x0003, 0x701f, 0x4e7e, ++ 0x0005, 0x009e, 0x2009, 0x0002, 0x0804, 0x33bc, 0x7124, 0x080c, ++ 0x311a, 0xa820, 0x9086, 0x8001, 0x1120, 0x2009, 0x0004, 0x0804, ++ 0x33bc, 0x2900, 0x7022, 0xa804, 0x0096, 0x2048, 0x8906, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x009e, 0x9080, 0x0002, ++ 0x0076, 0x0006, 0x2098, 0x20a0, 0x27e0, 0x27e8, 0x20a9, 0x002a, ++ 0x080c, 0x0f9f, 0xaa6c, 0xab70, 0xac74, 0xad78, 0x2061, 0x18ae, ++ 0x2c44, 0xa06b, 0x0000, 0xae64, 0xaf8c, 0x97c6, 0x7000, 0x0118, ++ 0x97c6, 0x7100, 0x1148, 0x96c2, 0x0004, 0x0600, 0x2009, 0x0004, ++ 0x000e, 0x007e, 0x0804, 0x48c4, 0x97c6, 0x7200, 0x11b8, 0x96c2, ++ 0x0054, 0x02a0, 0x000e, 0x007e, 0x2061, 0x18ae, 0x2c44, 0xa076, ++ 0xa772, 0xa07b, 0x002a, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, ++ 0x110c, 0x7007, 0x0002, 0x701f, 0x4eda, 0x0005, 0x000e, 0x007e, ++ 0x0804, 0x33bf, 0x7020, 0x2048, 0xa804, 0x2048, 0xa804, 0x2048, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x0002, 0x2098, 0x20a0, 0x27e0, 0x27e8, 0x20a9, 0x002a, 0x080c, ++ 0x0f9f, 0x2100, 0x2238, 0x2061, 0x18ae, 0x2c44, 0xa28c, 0xa390, ++ 0xa494, 0xa598, 0x2009, 0x002a, 0x0804, 0x48c4, 0x81ff, 0x1904, ++ 0x33bc, 0x798c, 0x2001, 0x194f, 0x918c, 0x8000, 0x2102, 0x080c, ++ 0x488f, 0x0904, 0x33bf, 0x080c, 0x6667, 0x0120, 0x080c, 0x666f, ++ 0x1904, 0x33bf, 0x080c, 0x6337, 0x0904, 0x33bc, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x64cc, 0x012e, 0x0904, 0x33bc, 0x2001, 0x194f, ++ 0x2004, 0xd0fc, 0x1904, 0x338a, 0x0804, 0x4329, 0xa9a0, 0x2001, ++ 0x194f, 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, 0x489c, 0x01a0, ++ 0x080c, 0x6667, 0x0118, 0x080c, 0x666f, 0x1170, 0x080c, 0x6337, ++ 0x2009, 0x0002, 0x0128, 0x080c, 0x64cc, 0x1170, 0x2009, 0x0003, ++ 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, 0x194f, ++ 0x2004, 0xd0fc, 0x1128, 0x080c, 0x5395, 0x0110, 0x9006, 0x0018, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x78a8, 0xd08c, ++ 0x1118, 0xd084, 0x0904, 0x429e, 0x080c, 0x48ab, 0x0904, 0x33bf, ++ 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, 0x080c, ++ 0x6667, 0x0130, 0x908e, 0x0004, 0x0118, 0x908e, 0x0005, 0x15a0, ++ 0x78a8, 0xd08c, 0x0120, 0xb800, 0xc08c, 0xb802, 0x0028, 0x080c, ++ 0x538d, 0xd0b4, 0x0904, 0x42d8, 0x7884, 0x908e, 0x007e, 0x0904, ++ 0x42d8, 0x908e, 0x007f, 0x0904, 0x42d8, 0x908e, 0x0080, 0x0904, ++ 0x42d8, 0xb800, 0xd08c, 0x1904, 0x42d8, 0xa867, 0x0000, 0xa868, ++ 0xc0fd, 0xa86a, 0x080c, 0xba16, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x33bc, 0x7007, 0x0003, 0x701f, 0x4fa6, 0x0005, 0x080c, 0x48ab, ++ 0x0904, 0x33bf, 0x0804, 0x42d8, 0x080c, 0x3181, 0x0108, 0x0005, ++ 0x2009, 0x1833, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x33bc, 0x080c, 0x53a1, 0x0120, 0x2009, 0x0007, 0x0804, 0x33bc, ++ 0x080c, 0x665f, 0x0120, 0x2009, 0x0008, 0x0804, 0x33bc, 0xb89c, ++ 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x42d8, 0x9006, 0xa866, 0xa832, ++ 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xba79, 0x1120, 0x2009, 0x0003, ++ 0x0804, 0x33bc, 0x7007, 0x0003, 0x701f, 0x4fdf, 0x0005, 0xa830, ++ 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x52ea, 0x080c, ++ 0x48ab, 0x0904, 0x33bf, 0x0804, 0x4f78, 0x81ff, 0x2009, 0x0001, ++ 0x1904, 0x33bc, 0x080c, 0x53a1, 0x2009, 0x0007, 0x1904, 0x33bc, ++ 0x080c, 0x665f, 0x0120, 0x2009, 0x0008, 0x0804, 0x33bc, 0x080c, ++ 0x48ab, 0x0904, 0x33bf, 0x080c, 0x6667, 0x2009, 0x0009, 0x1904, ++ 0x33bc, 0x080c, 0x4878, 0x2009, 0x0002, 0x0904, 0x33bc, 0x9006, ++ 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x7988, 0x9194, 0xff00, ++ 0x918c, 0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, 0xa952, 0x798c, ++ 0xa956, 0x0038, 0x928e, 0x0100, 0x1904, 0x33bf, 0xc0e5, 0xa952, ++ 0xa956, 0xa83e, 0x080c, 0xbcdc, 0x2009, 0x0003, 0x0904, 0x33bc, ++ 0x7007, 0x0003, 0x701f, 0x5035, 0x0005, 0xa830, 0x9086, 0x0100, ++ 0x2009, 0x0004, 0x0904, 0x33bc, 0x0804, 0x338a, 0x7aa8, 0x9284, ++ 0xc000, 0x0148, 0xd2ec, 0x01a0, 0x080c, 0x53a1, 0x1188, 0x2009, ++ 0x0014, 0x0804, 0x33bc, 0xd2dc, 0x1568, 0x81ff, 0x2009, 0x0001, ++ 0x1904, 0x33bc, 0x080c, 0x53a1, 0x2009, 0x0007, 0x1904, 0x33bc, ++ 0xd2f4, 0x0130, 0x9284, 0x5000, 0x080c, 0x5368, 0x0804, 0x338a, ++ 0xd2fc, 0x0158, 0x080c, 0x48ab, 0x0904, 0x33bf, 0x7984, 0x9284, ++ 0x9000, 0x080c, 0x5345, 0x0804, 0x338a, 0x080c, 0x48ab, 0x0904, ++ 0x33bf, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x2009, 0x0009, ++ 0x1904, 0x511e, 0x080c, 0x4878, 0x2009, 0x0002, 0x0904, 0x511e, ++ 0xa85c, 0x9080, 0x001b, 0xaf60, 0x2009, 0x0008, 0x7a8c, 0x7b88, ++ 0x7c9c, 0x7d98, 0x080c, 0x48c1, 0x701f, 0x508f, 0x0005, 0xa86c, ++ 0x9086, 0x0500, 0x1138, 0xa870, 0x9005, 0x1120, 0xa874, 0x9084, ++ 0xff00, 0x0110, 0x1904, 0x33bf, 0xa866, 0xa832, 0xa868, 0xc0fd, ++ 0xa86a, 0x080c, 0x48ab, 0x1110, 0x0804, 0x33bf, 0x2009, 0x0043, ++ 0x080c, 0xbd44, 0x2009, 0x0003, 0x0904, 0x511e, 0x7007, 0x0003, ++ 0x701f, 0x50b3, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009, 0x0004, ++ 0x0904, 0x511e, 0x7984, 0x7aa8, 0x9284, 0x1000, 0x080c, 0x5345, ++ 0x0804, 0x338a, 0x00c6, 0xaab0, 0x9284, 0xc000, 0x0140, 0xd2ec, ++ 0x0168, 0x080c, 0x53a1, 0x1150, 0x2009, 0x0014, 0x04f0, 0x2061, ++ 0x1800, 0x080c, 0x53a1, 0x2009, 0x0007, 0x15b8, 0xd2f4, 0x0128, ++ 0x9284, 0x5000, 0x080c, 0x5368, 0x0050, 0xd2fc, 0x0178, 0x080c, ++ 0x48a9, 0x0588, 0xa998, 0x9284, 0x9000, 0x080c, 0x5345, 0xa87b, ++ 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0438, 0x080c, 0x48a9, ++ 0x0510, 0x080c, 0x6667, 0x2009, 0x0009, 0x11b8, 0xa8c4, 0x9086, ++ 0x0500, 0x11c8, 0xa8c8, 0x9005, 0x11b0, 0xa8cc, 0x9084, 0xff00, ++ 0x1190, 0x080c, 0x48a9, 0x1108, 0x0070, 0x2009, 0x004b, 0x080c, ++ 0xbd44, 0x2009, 0x0003, 0x0108, 0x0078, 0x0429, 0x19c0, 0xa897, ++ 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0030, 0x00ce, 0x0005, 0x9006, 0x0ce0, 0x7aa8, 0xd2dc, ++ 0x0904, 0x33bc, 0x0016, 0x7984, 0x9284, 0x1000, 0xc0fd, 0x080c, ++ 0x5345, 0x001e, 0x1904, 0x33bc, 0x0804, 0x338a, 0x00f6, 0x2d78, ++ 0x0011, 0x00fe, 0x0005, 0xaab0, 0xd2dc, 0x0150, 0x0016, 0xa998, ++ 0x9284, 0x1000, 0xc0fd, 0x080c, 0x5345, 0x001e, 0x9085, 0x0001, ++ 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x33bc, 0x080c, ++ 0x53a1, 0x0120, 0x2009, 0x0007, 0x0804, 0x33bc, 0x7984, 0x7ea8, ++ 0x96b4, 0x00ff, 0x080c, 0x6270, 0x1904, 0x33bf, 0x9186, 0x007f, ++ 0x0138, 0x080c, 0x6667, 0x0120, 0x2009, 0x0009, 0x0804, 0x33bc, ++ 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, 0xa867, ++ 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x2001, 0x0100, 0x8007, 0xa80a, ++ 0x080c, 0xba30, 0x1120, 0x2009, 0x0003, 0x0804, 0x33bc, 0x7007, ++ 0x0003, 0x701f, 0x517c, 0x0005, 0xa808, 0x8007, 0x9086, 0x0100, ++ 0x1120, 0x2009, 0x0004, 0x0804, 0x33bc, 0xa8e0, 0xa866, 0xa810, ++ 0x8007, 0x9084, 0x00ff, 0x800c, 0xa814, 0x8007, 0x9084, 0x00ff, ++ 0x8004, 0x9080, 0x0002, 0x9108, 0x8906, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x0004, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0x0804, 0x48c4, 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x33bc, 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, ++ 0x82ff, 0x1118, 0x7023, 0x1984, 0x0040, 0x92c6, 0x0001, 0x1118, ++ 0x7023, 0x199e, 0x0010, 0x0804, 0x33bf, 0x2009, 0x001a, 0x7a8c, ++ 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, ++ 0x48c1, 0x701f, 0x51cc, 0x0005, 0x2001, 0x182d, 0x2003, 0x0001, ++ 0xa85c, 0x9080, 0x0019, 0x2098, 0xa860, 0x20e0, 0x20a9, 0x001a, ++ 0x7020, 0x20a0, 0x20e9, 0x0001, 0x4003, 0x0804, 0x338a, 0x080c, ++ 0x4878, 0x1120, 0x2009, 0x0002, 0x0804, 0x33bc, 0x7984, 0x9194, ++ 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, 0x2099, 0x1984, ++ 0x0040, 0x92c6, 0x0001, 0x1118, 0x2099, 0x199e, 0x0010, 0x0804, ++ 0x33bf, 0xa85c, 0x9080, 0x0019, 0x20a0, 0xa860, 0x20e8, 0x20a9, ++ 0x001a, 0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, 0x7a8c, 0x7b88, ++ 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x0804, 0x48c4, ++ 0x7884, 0x908a, 0x1000, 0x1a04, 0x33bf, 0x0126, 0x2091, 0x8000, ++ 0x8003, 0x800b, 0x810b, 0x9108, 0x00c6, 0x2061, 0x19d4, 0x6142, ++ 0x00ce, 0x012e, 0x0804, 0x338a, 0x00c6, 0x080c, 0x70b7, 0x1160, ++ 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x9085, 0x0001, 0x080c, 0x70fe, ++ 0x080c, 0x6fe8, 0x080c, 0x0d65, 0x2061, 0x1800, 0x6030, 0xc09d, ++ 0x6032, 0x080c, 0x5b97, 0x00ce, 0x0005, 0x00c6, 0x2001, 0x1800, ++ 0x2004, 0x908e, 0x0000, 0x0904, 0x33bc, 0x7884, 0x9005, 0x0188, ++ 0x7888, 0x2061, 0x196d, 0x2c0c, 0x2062, 0x080c, 0x2801, 0x01a0, ++ 0x080c, 0x2809, 0x0188, 0x080c, 0x2811, 0x0170, 0x2162, 0x0804, ++ 0x33bf, 0x2061, 0x0100, 0x6038, 0x9086, 0x0007, 0x1118, 0x2009, ++ 0x0001, 0x0010, 0x2009, 0x0000, 0x7884, 0x9086, 0x0002, 0x1588, ++ 0x2061, 0x0100, 0x6028, 0xc09c, 0x602a, 0x080c, 0x98c8, 0x0026, ++ 0x2011, 0x0003, 0x080c, 0x9339, 0x2011, 0x0002, 0x080c, 0x9343, ++ 0x002e, 0x080c, 0x9206, 0x0036, 0x901e, 0x080c, 0x9286, 0x003e, ++ 0x080c, 0x98e4, 0x60e3, 0x0000, 0x080c, 0xd5fb, 0x080c, 0xd616, ++ 0x9085, 0x0001, 0x080c, 0x70fe, 0x9006, 0x080c, 0x2833, 0x2001, ++ 0x1800, 0x2003, 0x0004, 0x0026, 0x2011, 0x0008, 0x080c, 0x286d, ++ 0x002e, 0x00ce, 0x0804, 0x338a, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x33bc, 0x080c, 0x53a1, 0x0120, 0x2009, 0x0007, 0x0804, ++ 0x33bc, 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x6270, 0x1904, ++ 0x33bf, 0x9186, 0x007f, 0x0138, 0x080c, 0x6667, 0x0120, 0x2009, ++ 0x0009, 0x0804, 0x33bc, 0x080c, 0x4878, 0x1120, 0x2009, 0x0002, ++ 0x0804, 0x33bc, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, ++ 0xba33, 0x1120, 0x2009, 0x0003, 0x0804, 0x33bc, 0x7007, 0x0003, ++ 0x701f, 0x52d3, 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, ++ 0x0004, 0x0804, 0x33bc, 0xa8e0, 0xa866, 0xa834, 0x8007, 0x800c, ++ 0xa85c, 0x9080, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xaf60, ++ 0x0804, 0x48c4, 0xa898, 0x9086, 0x000d, 0x1904, 0x33bc, 0x2021, ++ 0x4005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x52f7, 0x0010, 0x012e, ++ 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, ++ 0x7833, 0x0010, 0x7883, 0x4005, 0xa998, 0x7986, 0xa9a4, 0x799a, ++ 0xa9a8, 0x799e, 0x080c, 0x48b4, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x11be, 0x7007, 0x0001, 0x2091, 0x5000, ++ 0x700f, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, ++ 0x2061, 0x19d4, 0x7984, 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, ++ 0x0009, 0x7898, 0x606a, 0x789c, 0x6066, 0x7888, 0x6062, 0x788c, ++ 0x605e, 0x2001, 0x19e2, 0x2044, 0x2001, 0x19e9, 0xa076, 0xa060, ++ 0xa072, 0xa07b, 0x0001, 0xa07f, 0x0002, 0xa06b, 0x0000, 0xa09f, ++ 0x0000, 0x00ce, 0x012e, 0x0804, 0x338a, 0x0126, 0x2091, 0x8000, ++ 0x00b6, 0x00c6, 0x90e4, 0xc000, 0x0128, 0x0006, 0x080c, 0xb894, ++ 0x000e, 0x1198, 0xd0e4, 0x0160, 0x9180, 0x1000, 0x2004, 0x905d, ++ 0x0160, 0x080c, 0x5cf6, 0x080c, 0x9b66, 0x0110, 0xb817, 0x0000, ++ 0x9006, 0x00ce, 0x00be, 0x012e, 0x0005, 0x9085, 0x0001, 0x0cc8, ++ 0x0126, 0x2091, 0x8000, 0x0156, 0x2010, 0x900e, 0x20a9, 0x0800, ++ 0x0016, 0x9180, 0x1000, 0x2004, 0x9005, 0x0180, 0x9186, 0x007e, ++ 0x0168, 0x9186, 0x007f, 0x0150, 0x9186, 0x0080, 0x0138, 0x9186, ++ 0x00ff, 0x0120, 0x0026, 0x2200, 0x0801, 0x002e, 0x001e, 0x8108, ++ 0x1f04, 0x5370, 0x015e, 0x012e, 0x0005, 0x2001, 0x1854, 0x2004, ++ 0x0005, 0x2001, 0x1873, 0x2004, 0x0005, 0x0006, 0x2001, 0x1810, ++ 0x2004, 0xd0d4, 0x000e, 0x0005, 0x2001, 0x180e, 0x2004, 0xd0b4, ++ 0x0005, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x0005, 0x0016, ++ 0x00e6, 0x2071, 0x1894, 0x7108, 0x910d, 0x710a, 0x00ee, 0x001e, ++ 0x0005, 0x79a4, 0x9182, 0x0081, 0x1a04, 0x33bf, 0x810c, 0x0016, ++ 0x080c, 0x4878, 0x080c, 0x0f2a, 0x2100, 0x2238, 0x7d84, 0x7c88, ++ 0x7b8c, 0x7a90, 0x001e, 0x080c, 0x48c1, 0x701f, 0x53c8, 0x0005, ++ 0x2079, 0x0000, 0x7d94, 0x7c98, 0x7ba8, 0x7aac, 0x79a4, 0x810c, ++ 0x2061, 0x18ae, 0x2c44, 0xa770, 0xa074, 0x2071, 0x1894, 0x080c, ++ 0x48c4, 0x701f, 0x53dc, 0x0005, 0x2061, 0x18ae, 0x2c44, 0x0016, ++ 0x0026, 0xa270, 0xa174, 0x080c, 0x0f32, 0x002e, 0x001e, 0x080c, ++ 0x0fdf, 0x9006, 0xa802, 0xa806, 0x0804, 0x338a, 0x0126, 0x0156, ++ 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, ++ 0x2061, 0x0100, 0x2069, 0x0200, 0x2071, 0x1800, 0x6044, 0xd0a4, ++ 0x11e8, 0xd084, 0x0118, 0x080c, 0x5597, 0x0068, 0xd08c, 0x0118, ++ 0x080c, 0x54a0, 0x0040, 0xd094, 0x0118, 0x080c, 0x5470, 0x0018, ++ 0xd09c, 0x0108, 0x0099, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, ++ 0x01ce, 0x014e, 0x013e, 0x015e, 0x012e, 0x0005, 0x0016, 0x6128, ++ 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, 0x0c68, 0x0006, 0x7094, ++ 0x9005, 0x000e, 0x0120, 0x7097, 0x0000, 0x708f, 0x0000, 0x624c, ++ 0x9286, 0xf0f0, 0x1150, 0x6048, 0x9086, 0xf0f0, 0x0130, 0x624a, ++ 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0x9294, 0xff00, 0x9296, ++ 0xf700, 0x0178, 0x7138, 0xd1a4, 0x1160, 0x6240, 0x9295, 0x0100, ++ 0x6242, 0x9294, 0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, 0x5c58, ++ 0x00f0, 0x6040, 0x9084, 0x0010, 0x9085, 0x0140, 0x6042, 0x6043, ++ 0x0000, 0x7083, 0x0000, 0x709f, 0x0001, 0x70c3, 0x0000, 0x70db, ++ 0x0000, 0x2009, 0x1d80, 0x200b, 0x0000, 0x7093, 0x0000, 0x7087, ++ 0x000f, 0x2009, 0x000f, 0x2011, 0x5b3a, 0x080c, 0x821d, 0x0005, ++ 0x2001, 0x1875, 0x2004, 0xd08c, 0x0110, 0x705b, 0xffff, 0x7084, ++ 0x9005, 0x1528, 0x2011, 0x5b3a, 0x080c, 0x8159, 0x6040, 0x9094, ++ 0x0010, 0x9285, 0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, ++ 0x1168, 0x1f04, 0x5486, 0x6242, 0x7097, 0x0000, 0x6040, 0x9094, ++ 0x0010, 0x9285, 0x0080, 0x6042, 0x6242, 0x0048, 0x6242, 0x7097, ++ 0x0000, 0x708b, 0x0000, 0x9006, 0x080c, 0x5ce1, 0x0000, 0x0005, ++ 0x7088, 0x908a, 0x0003, 0x1a0c, 0x0d65, 0x000b, 0x0005, 0x54aa, ++ 0x54fb, 0x5596, 0x00f6, 0x0016, 0x6900, 0x918c, 0x0800, 0x708b, ++ 0x0001, 0x2001, 0x015d, 0x2003, 0x0000, 0x6803, 0x00fc, 0x20a9, ++ 0x0004, 0x6800, 0x9084, 0x00fc, 0x0120, 0x1f04, 0x54b9, 0x080c, ++ 0x0d65, 0x68a0, 0x68a2, 0x689c, 0x689e, 0x6898, 0x689a, 0xa001, ++ 0x918d, 0x1600, 0x6902, 0x001e, 0x6837, 0x0020, 0x080c, 0x5cbd, ++ 0x2079, 0x1d00, 0x7833, 0x1101, 0x7837, 0x0000, 0x20e1, 0x0001, ++ 0x2099, 0x1805, 0x20e9, 0x0001, 0x20a1, 0x1d0e, 0x20a9, 0x0004, ++ 0x4003, 0x080c, 0x97fa, 0x20e1, 0x0001, 0x2099, 0x1d00, 0x20e9, ++ 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, ++ 0x600f, 0x0000, 0x080c, 0x5b6b, 0x00fe, 0x9006, 0x708e, 0x6043, ++ 0x0008, 0x6042, 0x0005, 0x00f6, 0x708c, 0x708f, 0x0000, 0x9025, ++ 0x0904, 0x5573, 0x6020, 0xd0b4, 0x1904, 0x5571, 0x719c, 0x81ff, ++ 0x0904, 0x555f, 0x9486, 0x000c, 0x1904, 0x556c, 0x9480, 0x0018, ++ 0x8004, 0x20a8, 0x080c, 0x5cb6, 0x2011, 0x0260, 0x2019, 0x1d00, ++ 0x220c, 0x2304, 0x9106, 0x11e8, 0x8210, 0x8318, 0x1f04, 0x5518, ++ 0x6043, 0x0004, 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, ++ 0x2061, 0x0100, 0x6043, 0x0006, 0x708b, 0x0002, 0x7097, 0x0002, ++ 0x2009, 0x07d0, 0x2011, 0x5b41, 0x080c, 0x821d, 0x080c, 0x5cbd, ++ 0x04c0, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7930, 0x918e, 0x1101, ++ 0x1558, 0x7834, 0x9005, 0x1540, 0x7900, 0x918c, 0x00ff, 0x1118, ++ 0x7804, 0x9005, 0x0190, 0x080c, 0x5cb6, 0x2011, 0x026e, 0x2019, ++ 0x1805, 0x20a9, 0x0004, 0x220c, 0x2304, 0x9102, 0x0230, 0x11a0, ++ 0x8210, 0x8318, 0x1f04, 0x5553, 0x0078, 0x709f, 0x0000, 0x080c, ++ 0x5cb6, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0001, 0x20a1, ++ 0x1d00, 0x20a9, 0x0014, 0x4003, 0x6043, 0x0008, 0x6043, 0x0000, ++ 0x0010, 0x00fe, 0x0005, 0x6040, 0x9085, 0x0100, 0x6042, 0x6020, ++ 0xd0b4, 0x1db8, 0x080c, 0x97fa, 0x20e1, 0x0001, 0x2099, 0x1d00, ++ 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, ++ 0x000c, 0x2011, 0x19c5, 0x2013, 0x0000, 0x708f, 0x0000, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x080c, 0x8faa, 0x08d8, 0x0005, 0x7094, ++ 0x908a, 0x001d, 0x1a0c, 0x0d65, 0x000b, 0x0005, 0x55c8, 0x55db, ++ 0x5604, 0x5624, 0x564a, 0x5679, 0x569f, 0x56d7, 0x56fd, 0x572b, ++ 0x5766, 0x579e, 0x57bc, 0x57e7, 0x5809, 0x5824, 0x582e, 0x5862, ++ 0x5888, 0x58b7, 0x58dd, 0x5915, 0x5959, 0x5996, 0x59b7, 0x5a10, ++ 0x5a32, 0x5a60, 0x5a60, 0x00c6, 0x2061, 0x1800, 0x6003, 0x0007, ++ 0x2061, 0x0100, 0x6004, 0x9084, 0xfff9, 0x6006, 0x00ce, 0x0005, ++ 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, ++ 0x6043, 0x0002, 0x7097, 0x0001, 0x2009, 0x07d0, 0x2011, 0x5b41, ++ 0x080c, 0x821d, 0x0005, 0x00f6, 0x708c, 0x9086, 0x0014, 0x1510, ++ 0x6042, 0x6020, 0xd0b4, 0x11f0, 0x080c, 0x5cb6, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1102, 0x11a0, 0x7834, 0x9005, 0x1188, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x2011, ++ 0x5b41, 0x080c, 0x8159, 0x7097, 0x0010, 0x080c, 0x582e, 0x0010, ++ 0x708f, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0003, 0x6043, ++ 0x0004, 0x2011, 0x5b41, 0x080c, 0x8159, 0x080c, 0x5c3a, 0x2079, ++ 0x0240, 0x7833, 0x1102, 0x7837, 0x0000, 0x20a9, 0x0008, 0x9f88, ++ 0x000e, 0x200b, 0x0000, 0x8108, 0x1f04, 0x5619, 0x60c3, 0x0014, ++ 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, 0x0500, ++ 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, 0x0014, 0x11b8, 0x080c, ++ 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x1178, 0x7834, ++ 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, ++ 0x70c3, 0x0001, 0x7097, 0x0004, 0x0029, 0x0010, 0x080c, 0x5c92, ++ 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0005, 0x080c, 0x5c3a, 0x2079, ++ 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, 0x5cb6, 0x080c, ++ 0x5c99, 0x1170, 0x7080, 0x9005, 0x1158, 0x7158, 0x9186, 0xffff, ++ 0x0138, 0x2011, 0x0008, 0x080c, 0x5aee, 0x0168, 0x080c, 0x5c6f, ++ 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b6b, 0x00fe, ++ 0x0005, 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, 0x5b41, 0x080c, ++ 0x8159, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cb6, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, ++ 0x0006, 0x0029, 0x0010, 0x080c, 0x5c92, 0x00fe, 0x0005, 0x00f6, ++ 0x7097, 0x0007, 0x080c, 0x5c3a, 0x2079, 0x0240, 0x7833, 0x1104, ++ 0x7837, 0x0000, 0x080c, 0x5cb6, 0x080c, 0x5c99, 0x11b8, 0x7080, ++ 0x9005, 0x11a0, 0x7160, 0x9186, 0xffff, 0x0180, 0x9180, 0x318b, ++ 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, 0x5aee, ++ 0x0180, 0x080c, 0x4c97, 0x0110, 0x080c, 0x248d, 0x20a9, 0x0008, ++ 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, ++ 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, ++ 0x708c, 0x9005, 0x0500, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, ++ 0x0014, 0x11b8, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x0008, 0x0029, ++ 0x0010, 0x080c, 0x5c92, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0009, ++ 0x080c, 0x5c3a, 0x2079, 0x0240, 0x7833, 0x1105, 0x7837, 0x0100, ++ 0x080c, 0x5c99, 0x1150, 0x7080, 0x9005, 0x1138, 0x080c, 0x5a61, ++ 0x1188, 0x9085, 0x0001, 0x080c, 0x248d, 0x20a9, 0x0008, 0x080c, ++ 0x5cb6, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b6b, 0x0010, 0x080c, ++ 0x55bb, 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, 0x05a8, 0x2011, ++ 0x5b41, 0x080c, 0x8159, 0x9086, 0x0014, 0x1560, 0x080c, 0x5cb6, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, 0x1520, 0x7834, 0x9084, ++ 0x0100, 0x2011, 0x0100, 0x921e, 0x1160, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x000a, 0x00b1, ++ 0x0098, 0x9005, 0x1178, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, ++ 0x1110, 0x70c3, 0x0001, 0x7093, 0x0000, 0x7097, 0x000e, 0x080c, ++ 0x5809, 0x0010, 0x080c, 0x5c92, 0x00fe, 0x0005, 0x00f6, 0x7097, ++ 0x000b, 0x2011, 0x1d0e, 0x20e9, 0x0001, 0x22a0, 0x20a9, 0x0040, ++ 0x2019, 0xffff, 0x4304, 0x080c, 0x5c3a, 0x2079, 0x0240, 0x7833, ++ 0x1106, 0x7837, 0x0000, 0x080c, 0x5c99, 0x0118, 0x2013, 0x0000, ++ 0x0020, 0x705c, 0x9085, 0x0100, 0x2012, 0x20a9, 0x0040, 0x2009, ++ 0x024e, 0x2011, 0x1d0e, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, ++ 0x1128, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x1f04, 0x578b, ++ 0x60c3, 0x0084, 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, 0x708c, ++ 0x9005, 0x01c0, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, 0x0084, ++ 0x1178, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, ++ 0x1138, 0x7834, 0x9005, 0x1120, 0x7097, 0x000c, 0x0029, 0x0010, ++ 0x080c, 0x5c92, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x000d, 0x080c, ++ 0x5c3a, 0x2079, 0x0240, 0x7833, 0x1107, 0x7837, 0x0000, 0x080c, ++ 0x5cb6, 0x20a9, 0x0040, 0x2011, 0x026e, 0x2009, 0x024e, 0x220e, ++ 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, ++ 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, ++ 0x57cf, 0x60c3, 0x0084, 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, ++ 0x708c, 0x9005, 0x01e0, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, ++ 0x0084, 0x1198, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, 0x7093, 0x0001, 0x080c, ++ 0x5c0c, 0x7097, 0x000e, 0x0029, 0x0010, 0x080c, 0x5c92, 0x00fe, ++ 0x0005, 0x918d, 0x0001, 0x080c, 0x5ce1, 0x7097, 0x000f, 0x708f, ++ 0x0000, 0x2061, 0x0140, 0x605b, 0xbc85, 0x605f, 0xb5b5, 0x2061, ++ 0x0100, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, ++ 0x5b41, 0x080c, 0x814d, 0x0005, 0x708c, 0x9005, 0x0130, 0x2011, ++ 0x5b41, 0x080c, 0x8159, 0x7097, 0x0000, 0x0005, 0x7097, 0x0011, ++ 0x080c, 0x97fa, 0x080c, 0x5cb6, 0x20e1, 0x0000, 0x2099, 0x0260, ++ 0x20e9, 0x0000, 0x20a1, 0x0240, 0x748c, 0x9480, 0x0018, 0x9080, ++ 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x4003, 0x080c, 0x5c99, ++ 0x11a0, 0x7178, 0x81ff, 0x0188, 0x900e, 0x707c, 0x9084, 0x00ff, ++ 0x0160, 0x080c, 0x2424, 0x9186, 0x007e, 0x0138, 0x9186, 0x0080, ++ 0x0120, 0x2011, 0x0008, 0x080c, 0x5aee, 0x60c3, 0x0014, 0x080c, ++ 0x5b6b, 0x0005, 0x00f6, 0x708c, 0x9005, 0x0500, 0x2011, 0x5b41, ++ 0x080c, 0x8159, 0x9086, 0x0014, 0x11b8, 0x080c, 0x5cb6, 0x2079, ++ 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, ++ 0x7097, 0x0012, 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, ++ 0x00f6, 0x7097, 0x0013, 0x080c, 0x5c48, 0x2079, 0x0240, 0x7833, ++ 0x1103, 0x7837, 0x0000, 0x080c, 0x5cb6, 0x080c, 0x5c99, 0x1170, ++ 0x7080, 0x9005, 0x1158, 0x7158, 0x9186, 0xffff, 0x0138, 0x2011, ++ 0x0008, 0x080c, 0x5aee, 0x0168, 0x080c, 0x5c6f, 0x20a9, 0x0008, ++ 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, ++ 0x4003, 0x60c3, 0x0014, 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, ++ 0x708c, 0x9005, 0x0500, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, ++ 0x0014, 0x11b8, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1104, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7097, 0x0014, 0x0029, ++ 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7097, 0x0015, ++ 0x080c, 0x5c48, 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, ++ 0x080c, 0x5cb6, 0x080c, 0x5c99, 0x11b8, 0x7080, 0x9005, 0x11a0, ++ 0x7160, 0x9186, 0xffff, 0x0180, 0x9180, 0x318b, 0x200d, 0x918c, ++ 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, 0x5aee, 0x0180, 0x080c, ++ 0x4c97, 0x0110, 0x080c, 0x248d, 0x20a9, 0x0008, 0x20e1, 0x0000, ++ 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, ++ 0x0014, 0x080c, 0x5b6b, 0x00fe, 0x0005, 0x00f6, 0x708c, 0x9005, ++ 0x05f0, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, 0x0014, 0x15a8, ++ 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, 0x1568, ++ 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e, 0x1168, 0x9085, ++ 0x0001, 0x080c, 0x5ce1, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, ++ 0x1110, 0x70c3, 0x0001, 0x0080, 0x9005, 0x11b8, 0x7a38, 0xd2fc, ++ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x9085, 0x0001, ++ 0x080c, 0x5ce1, 0x7093, 0x0000, 0x7a38, 0xd2f4, 0x0110, 0x70db, ++ 0x0008, 0x7097, 0x0016, 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, ++ 0x0005, 0x080c, 0x97fa, 0x080c, 0x5cb6, 0x20e1, 0x0000, 0x2099, ++ 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000e, 0x4003, ++ 0x2011, 0x026d, 0x2204, 0x9084, 0x0100, 0x2011, 0x024d, 0x2012, ++ 0x2011, 0x026e, 0x7097, 0x0017, 0x080c, 0x5c99, 0x1150, 0x7080, ++ 0x9005, 0x1138, 0x080c, 0x5a61, 0x1188, 0x9085, 0x0001, 0x080c, ++ 0x248d, 0x20a9, 0x0008, 0x080c, 0x5cb6, 0x20e1, 0x0000, 0x2099, ++ 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, ++ 0x080c, 0x5b6b, 0x0010, 0x080c, 0x55bb, 0x0005, 0x00f6, 0x708c, ++ 0x9005, 0x01d8, 0x2011, 0x5b41, 0x080c, 0x8159, 0x9086, 0x0084, ++ 0x1190, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, ++ 0x1150, 0x7834, 0x9005, 0x1138, 0x9006, 0x080c, 0x5ce1, 0x7097, ++ 0x0018, 0x0029, 0x0010, 0x708f, 0x0000, 0x00fe, 0x0005, 0x00f6, ++ 0x7097, 0x0019, 0x080c, 0x5c48, 0x2079, 0x0240, 0x7833, 0x1106, ++ 0x7837, 0x0000, 0x080c, 0x5cb6, 0x2009, 0x026e, 0x2039, 0x1d0e, ++ 0x20a9, 0x0040, 0x213e, 0x8738, 0x8108, 0x9186, 0x0280, 0x1128, ++ 0x6814, 0x8000, 0x6816, 0x2009, 0x0260, 0x1f04, 0x59ca, 0x2039, ++ 0x1d0e, 0x080c, 0x5c99, 0x11e8, 0x2728, 0x2514, 0x8207, 0x9084, ++ 0x00ff, 0x8000, 0x2018, 0x9294, 0x00ff, 0x8007, 0x9205, 0x202a, ++ 0x705c, 0x2310, 0x8214, 0x92a0, 0x1d0e, 0x2414, 0x938c, 0x0001, ++ 0x0118, 0x9294, 0xff00, 0x0018, 0x9294, 0x00ff, 0x8007, 0x9215, ++ 0x2222, 0x20a9, 0x0040, 0x2009, 0x024e, 0x270e, 0x8738, 0x8108, ++ 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, ++ 0x1f04, 0x59fd, 0x60c3, 0x0084, 0x080c, 0x5b6b, 0x00fe, 0x0005, ++ 0x00f6, 0x708c, 0x9005, 0x01e0, 0x2011, 0x5b41, 0x080c, 0x8159, ++ 0x9086, 0x0084, 0x1198, 0x080c, 0x5cb6, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, 0x7093, 0x0001, ++ 0x080c, 0x5c0c, 0x7097, 0x001a, 0x0029, 0x0010, 0x708f, 0x0000, ++ 0x00fe, 0x0005, 0x9085, 0x0001, 0x080c, 0x5ce1, 0x7097, 0x001b, ++ 0x080c, 0x97fa, 0x080c, 0x5cb6, 0x2011, 0x0260, 0x2009, 0x0240, ++ 0x748c, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004, ++ 0x20a8, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, ++ 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, ++ 0x0260, 0x1f04, 0x5a49, 0x60c3, 0x0084, 0x080c, 0x5b6b, 0x0005, ++ 0x0005, 0x0086, 0x0096, 0x2029, 0x1854, 0x252c, 0x20a9, 0x0008, ++ 0x2041, 0x1d0e, 0x20e9, 0x0001, 0x28a0, 0x080c, 0x5cb6, 0x20e1, ++ 0x0000, 0x2099, 0x026e, 0x4003, 0x20a9, 0x0008, 0x2011, 0x0007, ++ 0xd5d4, 0x0108, 0x9016, 0x2800, 0x9200, 0x200c, 0x91a6, 0xffff, ++ 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, 0x5a7b, ++ 0x0804, 0x5aea, 0x82ff, 0x1160, 0xd5d4, 0x0120, 0x91a6, 0x3fff, ++ 0x0d90, 0x0020, 0x91a6, 0x3fff, 0x0904, 0x5aea, 0x918d, 0xc000, ++ 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, 0x0010, ++ 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, 0xd5d4, ++ 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, 0x5aa1, 0x04d8, 0x23a8, ++ 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, 0x5ab3, 0x2328, 0x8529, ++ 0x92be, 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, 0x973a, ++ 0x000e, 0x27a8, 0x95a8, 0x0010, 0x1f04, 0x5ac2, 0x755a, 0x95c8, ++ 0x318b, 0x292d, 0x95ac, 0x00ff, 0x757e, 0x6532, 0x6536, 0x0016, ++ 0x2508, 0x080c, 0x246d, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x2018, ++ 0x2304, 0x9405, 0x201a, 0x7083, 0x0001, 0x20e9, 0x0000, 0x20a1, ++ 0x024e, 0x20e1, 0x0001, 0x2898, 0x20a9, 0x0008, 0x4003, 0x9085, ++ 0x0001, 0x0008, 0x9006, 0x009e, 0x008e, 0x0005, 0x0156, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x22a8, 0x20e1, 0x0000, 0x2099, 0x026e, ++ 0x20e9, 0x0000, 0x2011, 0x024e, 0x22a0, 0x4003, 0x014e, 0x013e, ++ 0x01de, 0x01ce, 0x015e, 0x2118, 0x9026, 0x2001, 0x0007, 0x939a, ++ 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, ++ 0x939a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, ++ 0x8423, 0x8319, 0x1de8, 0x9238, 0x2029, 0x026e, 0x9528, 0x2504, ++ 0x942c, 0x11b8, 0x9405, 0x203a, 0x715a, 0x91a0, 0x318b, 0x242d, ++ 0x95ac, 0x00ff, 0x757e, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, ++ 0x246d, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x7083, 0x0001, 0x9084, ++ 0x0000, 0x0005, 0x00e6, 0x2071, 0x1800, 0x7087, 0x0000, 0x00ee, ++ 0x0005, 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, ++ 0x5bfb, 0x080c, 0x8fb7, 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, ++ 0x2843, 0x0126, 0x2091, 0x8000, 0x2071, 0x1825, 0x2073, 0x0000, ++ 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x5c58, 0x001e, ++ 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, ++ 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x27a2, ++ 0x0228, 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, 0x2011, 0x19c5, ++ 0x2013, 0x0000, 0x708f, 0x0000, 0x012e, 0x60a3, 0x0056, 0x60a7, ++ 0x9575, 0x080c, 0x8faa, 0x6144, 0xd184, 0x0120, 0x7194, 0x918d, ++ 0x2000, 0x0018, 0x7188, 0x918d, 0x1000, 0x2011, 0x196a, 0x2112, ++ 0x2009, 0x07d0, 0x2011, 0x5b41, 0x080c, 0x821d, 0x0005, 0x0016, ++ 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x98c8, 0x080c, ++ 0x9b6d, 0x080c, 0x98e4, 0x2009, 0x00f7, 0x080c, 0x5c58, 0x2061, ++ 0x19d4, 0x900e, 0x611a, 0x611e, 0x6172, 0x6176, 0x2061, 0x1800, ++ 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, ++ 0x2009, 0x196a, 0x200b, 0x0000, 0x2009, 0x002d, 0x2011, 0x5bc7, ++ 0x080c, 0x814d, 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x0471, 0x2071, 0x0100, 0x080c, ++ 0x8fb7, 0x2071, 0x0140, 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, ++ 0x2843, 0x080c, 0x70bf, 0x0188, 0x080c, 0x70da, 0x1170, 0x080c, ++ 0x73c1, 0x0016, 0x080c, 0x253c, 0x2001, 0x193e, 0x2102, 0x001e, ++ 0x080c, 0x73bc, 0x080c, 0x6fe8, 0x0050, 0x2009, 0x0001, 0x080c, ++ 0x281f, 0x2001, 0x0001, 0x080c, 0x23c9, 0x080c, 0x5b97, 0x012e, ++ 0x000e, 0x00ee, 0x0005, 0x2001, 0x180e, 0x2004, 0xd0bc, 0x0158, ++ 0x0026, 0x0036, 0x2011, 0x8017, 0x2001, 0x196a, 0x201c, 0x080c, ++ 0x48d8, 0x003e, 0x002e, 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001, ++ 0x20a1, 0x1d80, 0x080c, 0x5cb6, 0x20e9, 0x0000, 0x2099, 0x026e, ++ 0x0099, 0x20a9, 0x0020, 0x080c, 0x5cb0, 0x2099, 0x0260, 0x20a1, ++ 0x1d92, 0x0051, 0x20a9, 0x000e, 0x080c, 0x5cb3, 0x2099, 0x0260, ++ 0x20a1, 0x1db2, 0x0009, 0x0005, 0x0016, 0x0026, 0x3410, 0x3308, ++ 0x2104, 0x8007, 0x2012, 0x8108, 0x8210, 0x1f04, 0x5c30, 0x002e, ++ 0x001e, 0x0005, 0x080c, 0x97fa, 0x20e1, 0x0001, 0x2099, 0x1d00, ++ 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, ++ 0x080c, 0x97fa, 0x080c, 0x5cb6, 0x20e1, 0x0000, 0x2099, 0x0260, ++ 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, ++ 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0x1833, 0x2004, ++ 0x9005, 0x1138, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, 0x9105, ++ 0x0010, 0x9185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, ++ 0x0046, 0x080c, 0x6663, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, ++ 0x080c, 0xd273, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, ++ 0x002a, 0x900e, 0x080c, 0x2fc5, 0x080c, 0xbf61, 0x0140, 0x0036, ++ 0x2019, 0xffff, 0x2021, 0x0007, 0x080c, 0x4a75, 0x003e, 0x004e, ++ 0x001e, 0x0005, 0x080c, 0x5b97, 0x7097, 0x0000, 0x708f, 0x0000, ++ 0x0005, 0x0006, 0x2001, 0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, ++ 0x0005, 0x0006, 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, ++ 0x200c, 0x918d, 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, ++ 0x2009, 0x0001, 0x0020, 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, ++ 0x9084, 0xffc0, 0x910d, 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, ++ 0x01d6, 0x9006, 0x20a9, 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1d00, ++ 0x4004, 0x2079, 0x1d00, 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, ++ 0x00ef, 0x7813, 0x0138, 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, ++ 0x014e, 0x015e, 0x00fe, 0x0005, 0x2001, 0x1800, 0x2003, 0x0001, ++ 0x0005, 0x2001, 0x1977, 0x0118, 0x2003, 0x0001, 0x0010, 0x2003, ++ 0x0000, 0x0005, 0x0156, 0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, ++ 0x200a, 0x8108, 0x1f04, 0x5cf0, 0x015e, 0x0005, 0x00d6, 0x0036, ++ 0x0156, 0x0136, 0x0146, 0x2069, 0x1853, 0x9006, 0xb802, 0xb8c6, ++ 0xb807, 0x0707, 0xb80a, 0xb80e, 0xb812, 0x9198, 0x318b, 0x231d, ++ 0x939c, 0x00ff, 0xbb16, 0x0016, 0x0026, 0xb886, 0x080c, 0x9b66, ++ 0x1120, 0x9192, 0x007e, 0x1208, 0xbb86, 0x20a9, 0x0004, 0xb8b4, ++ 0x20e8, 0xb9b8, 0x9198, 0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, ++ 0x0004, 0x9198, 0x000a, 0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, ++ 0xb842, 0xb8be, 0xb8c2, 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, ++ 0x0100, 0xb872, 0xb876, 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, ++ 0xb896, 0xb89a, 0xb89e, 0xb8ae, 0xb9a2, 0x0096, 0xb8a4, 0x904d, ++ 0x0110, 0x080c, 0x1054, 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, ++ 0x6810, 0xb83a, 0x680c, 0xb846, 0x6814, 0x9084, 0x00ff, 0xb842, ++ 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, ++ 0x5db4, 0x9182, 0x0800, 0x1a04, 0x5db8, 0x2001, 0x180c, 0x2004, ++ 0x9084, 0x0003, 0x1904, 0x5dbe, 0x9188, 0x1000, 0x2104, 0x905d, ++ 0x0198, 0xb804, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1188, 0xb8a4, ++ 0x900d, 0x1904, 0x5dd0, 0x080c, 0x612a, 0x9006, 0x012e, 0x0005, ++ 0x2001, 0x0005, 0x900e, 0x04b8, 0x2001, 0x0028, 0x900e, 0x0498, ++ 0x9082, 0x0006, 0x1290, 0x080c, 0x9b66, 0x1160, 0xb8a0, 0x9084, ++ 0xff80, 0x1140, 0xb900, 0xd1fc, 0x0d10, 0x2001, 0x0029, 0x2009, ++ 0x1000, 0x0408, 0x2001, 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, ++ 0xd18c, 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, ++ 0x0004, 0x0040, 0x2001, 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, ++ 0x1000, 0x0048, 0x900e, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, ++ 0x2001, 0x0029, 0x900e, 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, ++ 0x2004, 0xd084, 0x19d0, 0x9188, 0x1000, 0x2104, 0x9065, 0x09a8, ++ 0x080c, 0x6667, 0x1990, 0xb800, 0xd0bc, 0x0978, 0x0804, 0x5d77, ++ 0x080c, 0x64db, 0x0904, 0x5d80, 0x0804, 0x5d7b, 0x00e6, 0x2071, ++ 0x19b8, 0x7004, 0x9086, 0x0002, 0x1128, 0x7030, 0x9080, 0x0004, ++ 0x2004, 0x9b06, 0x00ee, 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, ++ 0x8000, 0xa974, 0x9182, 0x0800, 0x1a04, 0x5e5f, 0x9188, 0x1000, ++ 0x2104, 0x905d, 0x0904, 0x5e37, 0xb8a0, 0x9086, 0x007f, 0x0178, ++ 0x080c, 0x666f, 0x0160, 0xa994, 0x81ff, 0x0130, 0x908e, 0x0004, ++ 0x0130, 0x908e, 0x0005, 0x0118, 0x080c, 0x6667, 0x1598, 0xa87c, ++ 0xd0fc, 0x01e0, 0xa894, 0x9005, 0x01c8, 0x2060, 0x0026, 0x2010, ++ 0x080c, 0xb835, 0x002e, 0x1120, 0x2001, 0x0008, 0x0804, 0x5e61, ++ 0x6020, 0x9086, 0x000a, 0x0120, 0x2001, 0x0008, 0x0804, 0x5e61, ++ 0x601a, 0x6003, 0x0008, 0x2900, 0x6016, 0x0058, 0x080c, 0x9b91, ++ 0x05e8, 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, 0xffff, 0x6023, ++ 0x000a, 0x2009, 0x0003, 0x080c, 0x9c85, 0x9006, 0x0458, 0x2001, ++ 0x0028, 0x0438, 0x9082, 0x0006, 0x1290, 0x080c, 0x9b66, 0x1160, ++ 0xb8a0, 0x9084, 0xff80, 0x1140, 0xb900, 0xd1fc, 0x0900, 0x2001, ++ 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, ++ 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, ++ 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, ++ 0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2001, 0x002c, ++ 0x0cc0, 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, 0xa8e0, 0x9005, ++ 0x1550, 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, 0x9005, 0x1518, ++ 0xa8c4, 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, 0x1800, 0x9182, ++ 0x0800, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, 0xaa98, 0xab94, ++ 0xa878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, 0x0118, 0x2001, ++ 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, ++ 0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, ++ 0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, 0x00be, 0x00fe, ++ 0x0005, 0x5ef6, 0x5eb1, 0x5ec8, 0x5ef6, 0x5ef6, 0x5ef6, 0x5ef6, ++ 0x5ef6, 0x2100, 0x9082, 0x007e, 0x1278, 0x080c, 0x6210, 0x0148, ++ 0x9046, 0xb810, 0x9306, 0x1904, 0x5efe, 0xb814, 0x9206, 0x15f0, ++ 0x0028, 0xbb12, 0xba16, 0x0010, 0x080c, 0x4792, 0x0150, 0x04b0, ++ 0x080c, 0x6270, 0x1598, 0xb810, 0x9306, 0x1580, 0xb814, 0x9206, ++ 0x1568, 0x080c, 0x9b91, 0x0530, 0x2b00, 0x6012, 0x080c, 0xbcdb, ++ 0x2900, 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, 0xa878, 0x9086, ++ 0x0001, 0x1170, 0x080c, 0x3006, 0x9006, 0x080c, 0x61ad, 0x2001, ++ 0x0002, 0x080c, 0x61c1, 0x2001, 0x0200, 0xb86e, 0xb893, 0x0002, ++ 0x2009, 0x0003, 0x080c, 0x9c85, 0x9006, 0x0068, 0x2001, 0x0001, ++ 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, 0x0028, ++ 0x900e, 0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, 0x0005, 0x00b6, ++ 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, 0x90c6, 0x0015, ++ 0x0904, 0x60d3, 0x90c6, 0x0056, 0x0904, 0x60d7, 0x90c6, 0x0066, ++ 0x0904, 0x60db, 0x90c6, 0x0067, 0x0904, 0x60df, 0x90c6, 0x0068, ++ 0x0904, 0x60e3, 0x90c6, 0x0071, 0x0904, 0x60e7, 0x90c6, 0x0074, ++ 0x0904, 0x60eb, 0x90c6, 0x007c, 0x0904, 0x60ef, 0x90c6, 0x007e, ++ 0x0904, 0x60f3, 0x90c6, 0x0037, 0x0904, 0x60f7, 0x9016, 0x2079, ++ 0x1800, 0xa974, 0x9186, 0x00ff, 0x0904, 0x60ce, 0x9182, 0x0800, ++ 0x1a04, 0x60ce, 0x080c, 0x6270, 0x1198, 0xb804, 0x9084, 0x00ff, ++ 0x9082, 0x0006, 0x1268, 0xa894, 0x90c6, 0x006f, 0x0148, 0x080c, ++ 0x9b66, 0x1904, 0x60b7, 0xb8a0, 0x9084, 0xff80, 0x1904, 0x60b7, ++ 0xa894, 0x90c6, 0x006f, 0x0158, 0x90c6, 0x005e, 0x0904, 0x6017, ++ 0x90c6, 0x0064, 0x0904, 0x6040, 0x2008, 0x0804, 0x5fda, 0xa998, ++ 0xa8b0, 0x2040, 0x080c, 0x9b66, 0x1120, 0x9182, 0x007f, 0x0a04, ++ 0x5fda, 0x9186, 0x00ff, 0x0904, 0x5fda, 0x9182, 0x0800, 0x1a04, ++ 0x5fda, 0xaaa0, 0xab9c, 0x7878, 0x9306, 0x1188, 0x787c, 0x0096, ++ 0x924e, 0x1128, 0x2208, 0x2310, 0x009e, 0x0804, 0x5fda, 0x99cc, ++ 0xff00, 0x009e, 0x1120, 0x2208, 0x2310, 0x0804, 0x5fda, 0x080c, ++ 0x4792, 0x0904, 0x5fe3, 0x900e, 0x9016, 0x90c6, 0x4000, 0x1558, ++ 0x0006, 0x080c, 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, ++ 0xc18d, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, ++ 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c, ++ 0x0f9f, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0035, ++ 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, ++ 0x0f9f, 0x000e, 0x00c8, 0x90c6, 0x4007, 0x1110, 0x2408, 0x00a0, ++ 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0070, 0x90c6, 0x4009, ++ 0x1108, 0x0050, 0x90c6, 0x4006, 0x0138, 0x2001, 0x4005, 0x2009, ++ 0x000a, 0x0010, 0x2001, 0x4006, 0xa896, 0xa99a, 0xaa9e, 0x2001, ++ 0x0030, 0x900e, 0x0470, 0x080c, 0x9b91, 0x1130, 0x2001, 0x4005, ++ 0x2009, 0x0003, 0x9016, 0x0c80, 0x2b00, 0x6012, 0x080c, 0xbcdb, ++ 0x2900, 0x6016, 0x6023, 0x0001, 0xa868, 0xd88c, 0x0108, 0xc0f5, ++ 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x3006, 0x012e, 0x9006, ++ 0x080c, 0x61ad, 0x2001, 0x0002, 0x080c, 0x61c1, 0x2009, 0x0002, ++ 0x080c, 0x9c85, 0xa8b0, 0xd094, 0x0118, 0xb8c4, 0xc08d, 0xb8c6, ++ 0x9006, 0x9005, 0x012e, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x080c, ++ 0x53a1, 0x0118, 0x2009, 0x0007, 0x00f8, 0xa998, 0xaeb0, 0x080c, ++ 0x6270, 0x1904, 0x5fd5, 0x9186, 0x007f, 0x0130, 0x080c, 0x6667, ++ 0x0118, 0x2009, 0x0009, 0x0080, 0x0096, 0x080c, 0x1022, 0x1120, ++ 0x009e, 0x2009, 0x0002, 0x0040, 0x2900, 0x009e, 0xa806, 0x080c, ++ 0xba33, 0x19b0, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, 0x5fdc, ++ 0xa998, 0xaeb0, 0x080c, 0x6270, 0x1904, 0x5fd5, 0x0096, 0x080c, ++ 0x1022, 0x1128, 0x009e, 0x2009, 0x0002, 0x0804, 0x6094, 0x2900, ++ 0x009e, 0xa806, 0x0096, 0x2048, 0x20a9, 0x002b, 0xb8b4, 0x20e0, ++ 0xb8b8, 0x2098, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, ++ 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006, 0x20a0, 0xbbb8, 0x9398, ++ 0x0006, 0x2398, 0x080c, 0x0f9f, 0x009e, 0xa87b, 0x0000, 0xa883, ++ 0x0000, 0xa897, 0x4000, 0xd684, 0x1168, 0x080c, 0x538d, 0xd0b4, ++ 0x1118, 0xa89b, 0x000b, 0x00e0, 0xb800, 0xd08c, 0x0118, 0xa89b, ++ 0x000c, 0x00b0, 0x080c, 0x6667, 0x0118, 0xa89b, 0x0009, 0x0080, ++ 0x080c, 0x53a1, 0x0118, 0xa89b, 0x0007, 0x0050, 0x080c, 0xba16, ++ 0x1904, 0x6010, 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, 0x5fdc, ++ 0xa87b, 0x0030, 0xa897, 0x4005, 0xa804, 0x8006, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, 0x002b, ++ 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x1266, ++ 0x080c, 0xa0f5, 0x1904, 0x6010, 0x2009, 0x0002, 0x08e8, 0x2001, ++ 0x0028, 0x900e, 0x0804, 0x6011, 0x2009, 0x180c, 0x210c, 0xd18c, ++ 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, ++ 0x0010, 0x2001, 0x0029, 0x900e, 0x0804, 0x6011, 0x2001, 0x0029, ++ 0x900e, 0x0804, 0x6011, 0x080c, 0x35ae, 0x0804, 0x6012, 0x080c, ++ 0x50c2, 0x0804, 0x6012, 0x080c, 0x4354, 0x0804, 0x6012, 0x080c, ++ 0x43cd, 0x0804, 0x6012, 0x080c, 0x4429, 0x0804, 0x6012, 0x080c, ++ 0x484e, 0x0804, 0x6012, 0x080c, 0x4afa, 0x0804, 0x6012, 0x080c, ++ 0x4d2d, 0x0804, 0x6012, 0x080c, 0x4f26, 0x0804, 0x6012, 0x080c, ++ 0x37c3, 0x0804, 0x6012, 0x00b6, 0xa974, 0xae78, 0x9684, 0x3fff, ++ 0x9082, 0x4000, 0x1608, 0x9182, 0x0800, 0x1258, 0x9188, 0x1000, ++ 0x2104, 0x905d, 0x0130, 0x080c, 0x6667, 0x1138, 0x00d9, 0x9006, ++ 0x00b0, 0x2001, 0x0028, 0x900e, 0x0090, 0x9082, 0x0006, 0x1240, ++ 0xb900, 0xd1fc, 0x0d98, 0x2001, 0x0029, 0x2009, 0x1000, 0x0038, ++ 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, 0x0029, 0x900e, 0x9005, ++ 0x00be, 0x0005, 0xa877, 0x0000, 0xb8c0, 0x9005, 0x1904, 0x61a1, ++ 0xb888, 0x9005, 0x1904, 0x61a1, 0xb838, 0xb93c, 0x9102, 0x1a04, ++ 0x61a1, 0x2b10, 0x080c, 0x9bbe, 0x0904, 0x619d, 0x8108, 0xb93e, ++ 0x6212, 0x2900, 0x6016, 0x6023, 0x0003, 0x600b, 0xffff, 0x6007, ++ 0x0040, 0xa878, 0x605e, 0xa880, 0x9084, 0x00ff, 0x6066, 0xa883, ++ 0x0000, 0xa87c, 0xd0ac, 0x05c0, 0xc0dd, 0xa87e, 0xa888, 0x8001, ++ 0x1568, 0x2001, 0x00f8, 0x8001, 0xa001, 0xa001, 0xa001, 0x1dd8, ++ 0xa816, 0xa864, 0x9094, 0x00f7, 0x9296, 0x0011, 0x11f8, 0x9084, ++ 0x00ff, 0xc0bd, 0x601e, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x2001, ++ 0x000f, 0x8001, 0x1df0, 0x2001, 0x8004, 0x6003, 0x0004, 0x6046, ++ 0x00f6, 0x2079, 0x0380, 0x7818, 0xd0bc, 0x1de8, 0x7833, 0x0010, ++ 0x2c00, 0x7836, 0x781b, 0x8080, 0x00fe, 0x0005, 0x080c, 0x164f, ++ 0x601c, 0xc0bd, 0x601e, 0x0c38, 0x0006, 0x2001, 0x00e8, 0x8001, ++ 0xa001, 0xa001, 0xa001, 0x1dd8, 0x000e, 0xd0b4, 0x190c, 0x1ad2, ++ 0x2001, 0x8004, 0x6003, 0x0002, 0x08d0, 0x81ff, 0x1110, 0xb88b, ++ 0x0001, 0x2908, 0xb8bc, 0xb9be, 0x9005, 0x1110, 0xb9c2, 0x0020, ++ 0x0096, 0x2048, 0xa902, 0x009e, 0x0005, 0x00b6, 0x0126, 0x00c6, ++ 0x0026, 0x2091, 0x8000, 0x6210, 0x2258, 0xba00, 0x9005, 0x0110, ++ 0xc285, 0x0008, 0xc284, 0xba02, 0x002e, 0x00ce, 0x012e, 0x00be, ++ 0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258, ++ 0xba04, 0x0006, 0x9086, 0x0006, 0x1170, 0xb89c, 0xd0ac, 0x0158, ++ 0x080c, 0x6663, 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007, ++ 0x1110, 0x2011, 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0xba06, ++ 0x0006, 0x9086, 0x0006, 0x1120, 0xba90, 0x82ff, 0x090c, 0x0d65, ++ 0x000e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6, ++ 0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006, ++ 0x1168, 0xb89c, 0xd0a4, 0x0150, 0x080c, 0x665f, 0x1138, 0x9284, ++ 0x00ff, 0x9086, 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0x9294, ++ 0x00ff, 0x8007, 0x9215, 0xba06, 0x00ce, 0x012e, 0x00be, 0x0005, ++ 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0005, 0x00d6, 0x0026, ++ 0x9190, 0x1000, 0x2204, 0x905d, 0x1180, 0x0096, 0x080c, 0x1022, ++ 0x2958, 0x009e, 0x0160, 0x2b00, 0x2012, 0xb85c, 0xb8ba, 0xb860, ++ 0xb8b6, 0x9006, 0xb8a6, 0x080c, 0x5cf6, 0x9006, 0x0010, 0x9085, ++ 0x0001, 0x002e, 0x00de, 0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, ++ 0x8000, 0x0026, 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0458, ++ 0x00d6, 0x9190, 0x1000, 0x2204, 0x905d, 0x0518, 0x2013, 0x0000, ++ 0xb8a4, 0x904d, 0x0110, 0x080c, 0x1054, 0x00d6, 0x00c6, 0xb8ac, ++ 0x2060, 0x8cff, 0x0168, 0x600c, 0x0006, 0x6014, 0x2048, 0x080c, ++ 0xb847, 0x0110, 0x080c, 0x0fd4, 0x080c, 0x9be7, 0x00ce, 0x0c88, ++ 0x00ce, 0x00de, 0x2b48, 0xb8b8, 0xb85e, 0xb8b4, 0xb862, 0x080c, ++ 0x1064, 0x00de, 0x9006, 0x002e, 0x012e, 0x009e, 0x00be, 0x0005, ++ 0x0016, 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, ++ 0x1000, 0x2104, 0x905d, 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, ++ 0x0156, 0x0136, 0x0146, 0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, ++ 0xb802, 0x080c, 0x70b7, 0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, ++ 0x080c, 0x9b66, 0x11d8, 0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, ++ 0x2061, 0x1953, 0x7048, 0x2062, 0x704c, 0x6006, 0x7050, 0x600a, ++ 0x7054, 0x600e, 0x00ce, 0x703c, 0x2069, 0x0140, 0x9005, 0x1110, ++ 0x2001, 0x0001, 0x6886, 0x2069, 0x1800, 0x68b2, 0x7040, 0xb85e, ++ 0x7048, 0xb862, 0x704c, 0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, ++ 0xb8b4, 0x20e8, 0xb8b8, 0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, ++ 0x4003, 0x2099, 0x027a, 0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, ++ 0x4003, 0x2069, 0x0200, 0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, ++ 0xb96e, 0x7048, 0xb872, 0x7050, 0xb876, 0x2069, 0x0200, 0x6817, ++ 0x0000, 0xb8a0, 0x9086, 0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, ++ 0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, ++ 0x2009, 0x0007, 0x00d0, 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, ++ 0x00a0, 0x9182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, ++ 0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, ++ 0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0xb992, 0x014e, 0x013e, ++ 0x015e, 0x00de, 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, ++ 0x7034, 0xb896, 0x703c, 0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbc4, ++ 0xc384, 0xba00, 0x2009, 0x1873, 0x210c, 0xd0bc, 0x0120, 0xd1ec, ++ 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, ++ 0xc2bd, 0xd0cc, 0x0128, 0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, ++ 0xba02, 0xbbc6, 0x003e, 0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, ++ 0x0126, 0x2091, 0x8000, 0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, ++ 0x15c0, 0xaa04, 0x9282, 0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, ++ 0x01d6, 0x8906, 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, ++ 0xffc0, 0x9080, 0x0004, 0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, ++ 0x4002, 0x9086, 0xffff, 0x0120, 0x8109, 0x1dd0, 0x080c, 0x0d65, ++ 0x3c00, 0x20e8, 0x3300, 0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, ++ 0x01de, 0x01ce, 0x014e, 0x013e, 0x0060, 0x080c, 0x1022, 0x0170, ++ 0x2900, 0xb8a6, 0xa803, 0x0000, 0x080c, 0x64fb, 0xa807, 0x0001, ++ 0xae12, 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, ++ 0x0126, 0x2091, 0x8000, 0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, ++ 0x9005, 0x1150, 0x080c, 0x650a, 0x1158, 0xa804, 0x908a, 0x0002, ++ 0x0218, 0x8001, 0xa806, 0x0020, 0x080c, 0x1054, 0xb8a7, 0x0000, ++ 0x009e, 0x012e, 0x0005, 0x0096, 0x00c6, 0xb888, 0x9005, 0x1904, ++ 0x63f4, 0xb8c0, 0x904d, 0x0904, 0x63f4, 0x080c, 0x9bbe, 0x0904, ++ 0x63f0, 0x8210, 0xba3e, 0xa800, 0xb8c2, 0x9005, 0x1108, 0xb8be, ++ 0x2b00, 0x6012, 0x2900, 0x6016, 0x6023, 0x0003, 0x600b, 0xffff, ++ 0x6007, 0x0040, 0xa878, 0x605e, 0xa880, 0x9084, 0x00ff, 0x6066, ++ 0xa883, 0x0000, 0xa87c, 0xd0ac, 0x01c8, 0xc0dd, 0xa87e, 0xa888, ++ 0x8001, 0x1568, 0xa816, 0xa864, 0x9094, 0x00f7, 0x9296, 0x0011, ++ 0x1530, 0x9084, 0x00ff, 0xc0bd, 0x601e, 0xa8ac, 0xaab0, 0xa836, ++ 0xaa3a, 0x2001, 0x8004, 0x6003, 0x0004, 0x0030, 0x080c, 0x1ad2, ++ 0x2001, 0x8004, 0x6003, 0x0002, 0x6046, 0x2001, 0x0010, 0x2c08, ++ 0x080c, 0x98b9, 0xb838, 0xba3c, 0x9202, 0x0a04, 0x63a1, 0x0020, ++ 0x82ff, 0x1110, 0xb88b, 0x0001, 0x00ce, 0x009e, 0x0005, 0x080c, ++ 0x164f, 0x601c, 0xc0bd, 0x601e, 0x08e0, 0x00b6, 0x0096, 0x0016, ++ 0x20a9, 0x0800, 0x900e, 0x0016, 0x080c, 0x6270, 0x1158, 0xb8c0, ++ 0x904d, 0x0140, 0x3e00, 0x9086, 0x0002, 0x1118, 0xb800, 0xd0bc, ++ 0x1108, 0x0041, 0x001e, 0x8108, 0x1f04, 0x6403, 0x001e, 0x00be, ++ 0x009e, 0x0005, 0x0096, 0x0016, 0xb8c0, 0x904d, 0x0188, 0xa800, ++ 0xb8c2, 0x9005, 0x1108, 0xb8be, 0x9006, 0xa802, 0xa867, 0x0103, ++ 0xab7a, 0xa877, 0x0000, 0x080c, 0xbb45, 0x080c, 0x6996, 0x0c60, ++ 0x001e, 0x009e, 0x0005, 0x0086, 0x9046, 0xb8c0, 0x904d, 0x0198, ++ 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0128, 0x2940, 0xa800, ++ 0x904d, 0x0148, 0x0ca8, 0xa800, 0x88ff, 0x1110, 0xb8c2, 0x0008, ++ 0xa002, 0xa803, 0x0000, 0x008e, 0x0005, 0x901e, 0x0010, 0x2019, ++ 0x0001, 0x00e6, 0x0096, 0x00c6, 0x0086, 0x0026, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x19b8, 0x9046, 0x7028, 0x9065, 0x01e8, 0x6014, ++ 0x2068, 0x83ff, 0x0120, 0x605c, 0x9606, 0x0158, 0x0030, 0xa86c, ++ 0x9406, 0x1118, 0xa870, 0x9506, 0x0120, 0x2c40, 0x600c, 0x2060, ++ 0x0c60, 0x600c, 0x0006, 0x0066, 0x2830, 0x080c, 0x9110, 0x006e, ++ 0x000e, 0x83ff, 0x0508, 0x0c08, 0x9046, 0xb8c0, 0x904d, 0x01e0, ++ 0x83ff, 0x0120, 0xa878, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, ++ 0x1118, 0xa870, 0x9506, 0x0120, 0x2940, 0xa800, 0x2048, 0x0c70, ++ 0xb8c0, 0xaa00, 0x0026, 0x9906, 0x1110, 0xbac2, 0x0008, 0xa202, ++ 0x000e, 0x83ff, 0x0108, 0x0c10, 0x002e, 0x008e, 0x00ce, 0x009e, ++ 0x00ee, 0x0005, 0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, ++ 0x080c, 0x655f, 0x0128, 0x080c, 0xb908, 0x0010, 0x9085, 0x0001, ++ 0x0005, 0x080c, 0x655f, 0x0128, 0x080c, 0xb8a9, 0x0010, 0x9085, ++ 0x0001, 0x0005, 0x080c, 0x655f, 0x0128, 0x080c, 0xb905, 0x0010, ++ 0x9085, 0x0001, 0x0005, 0x080c, 0x655f, 0x0128, 0x080c, 0xb8c8, ++ 0x0010, 0x9085, 0x0001, 0x0005, 0x080c, 0x655f, 0x0128, 0x080c, ++ 0xb949, 0x0010, 0x9085, 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, ++ 0x9085, 0x0001, 0x0005, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, ++ 0x890e, 0x810e, 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, ++ 0x9080, 0x0004, 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, ++ 0x9606, 0x0128, 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, ++ 0x01ce, 0x013e, 0x0005, 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0004, 0x20a0, 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, ++ 0x01de, 0x014e, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, ++ 0x810e, 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, ++ 0x0004, 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, ++ 0x0128, 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, ++ 0x3300, 0x8001, 0x20a0, 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, ++ 0x01de, 0x014e, 0x9006, 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, ++ 0x2091, 0x8000, 0xb8a4, 0x904d, 0x1128, 0x080c, 0x1022, 0x0168, ++ 0x2900, 0xb8a6, 0x080c, 0x64fb, 0xa803, 0x0001, 0xa807, 0x0000, ++ 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, ++ 0x0126, 0x2091, 0x8000, 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, ++ 0x080c, 0x1054, 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, ++ 0xd0a4, 0x0005, 0x00b6, 0x00f6, 0x080c, 0x70b7, 0x01b0, 0x71c0, ++ 0x81ff, 0x1198, 0x71d8, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, ++ 0x1000, 0x2004, 0x905d, 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, ++ 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x2079, 0x1853, 0x7804, ++ 0x00d0, 0x0156, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x6270, ++ 0x1168, 0xb804, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, ++ 0x9086, 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, 0x8108, ++ 0x1f04, 0x6585, 0x015e, 0x080c, 0x6625, 0x0120, 0x2001, 0x1956, ++ 0x200c, 0x0030, 0x2079, 0x1853, 0x7804, 0x0030, 0x2009, 0x07d0, ++ 0x2011, 0x65af, 0x080c, 0x821d, 0x00fe, 0x00be, 0x0005, 0x00b6, ++ 0x2011, 0x65af, 0x080c, 0x8159, 0x080c, 0x6625, 0x01d8, 0x2001, ++ 0x107e, 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, 0x080c, 0x6663, ++ 0x0130, 0x2009, 0x07d0, 0x2011, 0x65af, 0x080c, 0x821d, 0x00e6, ++ 0x2071, 0x1800, 0x9006, 0x707a, 0x705c, 0x707e, 0x080c, 0x2ddb, ++ 0x00ee, 0x04d0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, ++ 0x080c, 0x6270, 0x1558, 0xb800, 0xd0ec, 0x0540, 0x0046, 0xbaa0, ++ 0x2220, 0x9006, 0x2009, 0x0029, 0x080c, 0xd273, 0xb800, 0xc0e5, ++ 0xc0ec, 0xb802, 0x080c, 0x665f, 0x2001, 0x0707, 0x1128, 0xb804, ++ 0x9084, 0x00ff, 0x9085, 0x0700, 0xb806, 0x080c, 0x98c8, 0x2019, ++ 0x0029, 0x080c, 0x863b, 0x0076, 0x903e, 0x080c, 0x852a, 0x900e, ++ 0x080c, 0xcfc8, 0x007e, 0x004e, 0x080c, 0x98e4, 0x001e, 0x8108, ++ 0x1f04, 0x65d7, 0x00ce, 0x015e, 0x00be, 0x0005, 0x00b6, 0x6010, ++ 0x2058, 0xb800, 0xc0ec, 0xb802, 0x00be, 0x0005, 0x7810, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0ac, 0x0005, 0x6010, 0x00b6, 0x905d, ++ 0x0108, 0xb800, 0x00be, 0xd0bc, 0x0005, 0x00b6, 0x00f6, 0x2001, ++ 0x107e, 0x2004, 0x905d, 0x0110, 0xb800, 0xd0ec, 0x00fe, 0x00be, ++ 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, 0x0006, 0xbaa0, 0x9290, ++ 0x1000, 0x2204, 0x9b06, 0x190c, 0x0d65, 0x000e, 0xba00, 0x9005, ++ 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0xba02, 0x002e, 0x012e, 0x0005, ++ 0x2011, 0x1836, 0x2204, 0xd0cc, 0x0138, 0x2001, 0x1954, 0x200c, ++ 0x2011, 0x6655, 0x080c, 0x821d, 0x0005, 0x2011, 0x6655, 0x080c, ++ 0x8159, 0x2011, 0x1836, 0x2204, 0xc0cc, 0x2012, 0x0005, 0x080c, ++ 0x538d, 0xd0ac, 0x0005, 0x080c, 0x538d, 0xd0a4, 0x0005, 0x0016, ++ 0xb904, 0x9184, 0x00ff, 0x908e, 0x0006, 0x001e, 0x0005, 0x0016, ++ 0xb904, 0x9184, 0xff00, 0x8007, 0x908e, 0x0006, 0x001e, 0x0005, ++ 0x00b6, 0x00f6, 0x080c, 0xbf61, 0x0158, 0x70d8, 0x9084, 0x0028, ++ 0x0138, 0x2001, 0x107f, 0x2004, 0x905d, 0x0110, 0xb8c4, 0xd094, ++ 0x00fe, 0x00be, 0x0005, 0x0006, 0x0016, 0x0036, 0x0046, 0x0076, ++ 0x00b6, 0x2001, 0x1817, 0x203c, 0x9780, 0x318b, 0x203d, 0x97bc, ++ 0xff00, 0x873f, 0x9006, 0x2018, 0x2008, 0x9284, 0x8000, 0x0110, ++ 0x2019, 0x0001, 0x9294, 0x7fff, 0x2100, 0x9706, 0x0190, 0x91a0, ++ 0x1000, 0x2404, 0x905d, 0x0168, 0xb804, 0x9084, 0x00ff, 0x9086, ++ 0x0006, 0x1138, 0x83ff, 0x0118, 0xb89c, 0xd0a4, 0x0110, 0x8211, ++ 0x0158, 0x8108, 0x83ff, 0x0120, 0x9182, 0x0800, 0x0e28, 0x0068, ++ 0x9182, 0x007e, 0x0e08, 0x0048, 0x00be, 0x007e, 0x004e, 0x003e, ++ 0x001e, 0x9085, 0x0001, 0x000e, 0x0005, 0x00be, 0x007e, 0x004e, ++ 0x003e, 0x001e, 0x9006, 0x000e, 0x0005, 0x0046, 0x0056, 0x0076, ++ 0x00b6, 0x2100, 0x9084, 0x7fff, 0x9080, 0x1000, 0x2004, 0x905d, ++ 0x0130, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0550, 0x9184, ++ 0x8000, 0x0580, 0x2001, 0x1817, 0x203c, 0x9780, 0x318b, 0x203d, ++ 0x97bc, 0xff00, 0x873f, 0x9006, 0x2020, 0x2400, 0x9706, 0x01a0, ++ 0x94a8, 0x1000, 0x2504, 0x905d, 0x0178, 0xb804, 0x9084, 0x00ff, ++ 0x9086, 0x0006, 0x1148, 0xb89c, 0xd0a4, 0x0130, 0xb814, 0x9206, ++ 0x1118, 0xb810, 0x9306, 0x0128, 0x8420, 0x9482, 0x0800, 0x0e28, ++ 0x0048, 0x918c, 0x7fff, 0x00be, 0x007e, 0x005e, 0x004e, 0x9085, ++ 0x0001, 0x0005, 0x918c, 0x7fff, 0x00be, 0x007e, 0x005e, 0x004e, ++ 0x9006, 0x0005, 0x2071, 0x1906, 0x7003, 0x0001, 0x7007, 0x0000, ++ 0x9006, 0x7012, 0x7016, 0x701a, 0x701e, 0x700a, 0x7046, 0x2001, ++ 0x1919, 0x2003, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, 0x191a, ++ 0x900e, 0x710a, 0x080c, 0x538d, 0xd0fc, 0x1140, 0x080c, 0x538d, ++ 0x900e, 0xd09c, 0x0108, 0x8108, 0x7102, 0x0400, 0x2001, 0x1873, ++ 0x200c, 0x9184, 0x0007, 0x9006, 0x0002, 0x673e, 0x673e, 0x673e, ++ 0x673e, 0x673e, 0x6755, 0x6763, 0x673e, 0x7003, 0x0003, 0x2009, ++ 0x1874, 0x210c, 0x9184, 0xff00, 0x8007, 0x9005, 0x1110, 0x2001, ++ 0x0002, 0x7006, 0x0018, 0x7003, 0x0005, 0x0c88, 0x00ee, 0x001e, ++ 0x0005, 0x00e6, 0x2071, 0x0050, 0x684c, 0x9005, 0x1150, 0x00e6, ++ 0x2071, 0x1906, 0x7028, 0xc085, 0x702a, 0x00ee, 0x9085, 0x0001, ++ 0x0488, 0x6844, 0x9005, 0x0158, 0x080c, 0x7429, 0x6a60, 0x9200, ++ 0x7002, 0x6864, 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6860, ++ 0x7002, 0x6864, 0x7006, 0x6868, 0x700a, 0x686c, 0x700e, 0x6844, ++ 0x9005, 0x1110, 0x7012, 0x7016, 0x684c, 0x701a, 0x701c, 0x9085, ++ 0x0040, 0x701e, 0x7037, 0x0019, 0x702b, 0x0001, 0x00e6, 0x2071, ++ 0x1906, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700b, 0x0000, ++ 0x00ee, 0x9006, 0x00ee, 0x0005, 0xa868, 0xd0fc, 0x11d8, 0x00e6, ++ 0x0026, 0x2001, 0x191a, 0x2004, 0x9005, 0x0904, 0x699b, 0xa87c, ++ 0xd0bc, 0x1904, 0x699b, 0xa978, 0xa874, 0x9105, 0x1904, 0x699b, ++ 0x2001, 0x191a, 0x2004, 0x0002, 0x699b, 0x67ef, 0x682b, 0x682b, ++ 0x699b, 0x682b, 0x0005, 0xa868, 0xd0fc, 0x1500, 0x00e6, 0x0026, ++ 0x2009, 0x191a, 0x210c, 0x81ff, 0x0904, 0x699b, 0xa87c, 0xd0cc, ++ 0x0904, 0x699b, 0xa880, 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, ++ 0x699b, 0x9186, 0x0003, 0x0904, 0x682b, 0x9186, 0x0005, 0x0904, ++ 0x682b, 0xa84f, 0x8021, 0xa853, 0x0017, 0x0028, 0x0005, 0xa84f, ++ 0x8020, 0xa853, 0x0016, 0x2071, 0x1906, 0x701c, 0x9005, 0x1904, ++ 0x6b3e, 0x0e04, 0x6b89, 0x2071, 0x0000, 0xa84c, 0x7082, 0xa850, ++ 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x2071, 0x1800, ++ 0x2011, 0x0001, 0xa804, 0x900d, 0x702c, 0x1158, 0xa802, 0x2900, ++ 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, 0x002e, 0x00ee, ++ 0x0005, 0x0096, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x009e, 0x0c58, 0xa84f, 0x0000, 0x00f6, 0x2079, 0x0050, ++ 0x2071, 0x1906, 0xa803, 0x0000, 0x7010, 0x9005, 0x1904, 0x6920, ++ 0x782c, 0x908c, 0x0780, 0x190c, 0x6cb0, 0x8004, 0x8004, 0x8004, ++ 0x9084, 0x0003, 0x0002, 0x6849, 0x6920, 0x686e, 0x68bb, 0x080c, ++ 0x0d65, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1170, ++ 0x2071, 0x19d4, 0x703c, 0x9005, 0x1328, 0x2001, 0x191b, 0x2004, ++ 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, 0x0c10, 0x2071, 0x1800, ++ 0x2900, 0x7822, 0xa804, 0x900d, 0x15a8, 0x7824, 0x00e6, 0x2071, ++ 0x0040, 0x712c, 0xd19c, 0x1170, 0x2009, 0x182f, 0x210c, 0x918a, ++ 0x0040, 0x0240, 0x7022, 0x2001, 0x1dc0, 0x200c, 0x8108, 0x2102, ++ 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, ++ 0x70bc, 0x8000, 0x70be, 0x080c, 0x8074, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6cb0, 0xd0a4, 0x19c8, 0x2071, 0x19d4, 0x703c, 0x9005, ++ 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, ++ 0x8074, 0x0804, 0x6875, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, ++ 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, ++ 0x080c, 0x8074, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd0a4, ++ 0x1d60, 0x00ee, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd09c, ++ 0x11a0, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x1560, 0x2071, ++ 0x19d4, 0x703c, 0x9005, 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, ++ 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x009e, 0x2908, 0x7010, ++ 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, ++ 0x711e, 0x2148, 0xa804, 0x900d, 0x1170, 0x2071, 0x19d4, 0x703c, ++ 0x9005, 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, 0x703e, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, ++ 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, ++ 0x9200, 0x70be, 0x080c, 0x8074, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, ++ 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x6975, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd09c, 0x1198, 0x701c, ++ 0x904d, 0x0180, 0x7010, 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, ++ 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, ++ 0xd09c, 0x0d68, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd0a4, ++ 0x01b0, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, ++ 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, 0x8074, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd0a4, 0x1d60, 0x00ee, 0x2071, ++ 0x19d4, 0x703c, 0x9005, 0x1328, 0x2001, 0x191b, 0x2004, 0x8005, ++ 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, 0x00ee, ++ 0x0804, 0x6930, 0xa868, 0xd0fc, 0x1560, 0x0096, 0xa804, 0xa807, ++ 0x0000, 0x904d, 0x190c, 0x0fd4, 0x009e, 0x0018, 0xa868, 0xd0fc, ++ 0x1500, 0x00e6, 0x0026, 0xa84f, 0x0000, 0x00f6, 0x2079, 0x0050, ++ 0x2071, 0x1906, 0xa803, 0x0000, 0x7010, 0x9005, 0x1904, 0x6ab8, ++ 0x782c, 0x908c, 0x0780, 0x190c, 0x6cb0, 0x8004, 0x8004, 0x8004, ++ 0x9084, 0x0003, 0x0002, 0x69ba, 0x6ab8, 0x69d5, 0x6a47, 0x080c, ++ 0x0d65, 0x0005, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, ++ 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, ++ 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, ++ 0x9200, 0x70be, 0x080c, 0x8074, 0x0c60, 0x2071, 0x1800, 0x2900, ++ 0x7822, 0xa804, 0x900d, 0x1904, 0x6a36, 0x7830, 0xd0dc, 0x1120, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824, 0x00e6, 0x2071, 0x0040, ++ 0x712c, 0xd19c, 0x1170, 0x2009, 0x182f, 0x210c, 0x918a, 0x0040, ++ 0x0240, 0x7022, 0x2001, 0x1dc0, 0x200c, 0x8108, 0x2102, 0x00ee, ++ 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, ++ 0x8000, 0x70be, 0x080c, 0x8074, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x6cb0, 0xd0a4, 0x19c8, 0x0e04, 0x6a2d, 0x7838, 0x7938, 0x910e, ++ 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, ++ 0x2001, 0x1917, 0x200c, 0xc184, 0x2102, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x2009, 0x1919, 0x200b, ++ 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2001, 0x1917, 0x200c, ++ 0xc185, 0x2102, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, 0x0804, 0x69e4, 0x0096, ++ 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, ++ 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, 0x8074, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x6cb0, 0xd0a4, 0x1d60, 0x00ee, 0x0e04, 0x6a8b, ++ 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, ++ 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x2009, 0x1919, ++ 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd09c, ++ 0x1170, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x11e0, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x0c58, 0x009e, ++ 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, ++ 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1120, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, ++ 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, ++ 0x9200, 0x70be, 0x080c, 0x8074, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, ++ 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x6b29, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd09c, 0x11b0, 0x701c, ++ 0x904d, 0x0198, 0xa84c, 0x9005, 0x1180, 0x7010, 0x8001, 0x7012, ++ 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x6cb0, 0xd09c, 0x0d50, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x6cb0, 0xd0a4, 0x05c8, 0x00e6, 0x7824, 0x2048, 0x2071, ++ 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, ++ 0x080c, 0x8074, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd0a4, ++ 0x1d60, 0x00ee, 0x0e04, 0x6b22, 0x7838, 0x7938, 0x910e, 0x1de0, ++ 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, ++ 0xc084, 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x11be, 0x2009, 0x1919, 0x200b, 0x0000, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x00fe, 0x002e, 0x00ee, ++ 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, ++ 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, ++ 0x70be, 0x080c, 0x8074, 0x00ee, 0x0804, 0x6ac8, 0x2071, 0x1906, ++ 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1128, 0x1e04, 0x6b69, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, 0x0e04, ++ 0x6b53, 0x2071, 0x1906, 0x701c, 0x2048, 0xa84c, 0x900d, 0x0d18, ++ 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, ++ 0xa870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x11be, 0x2071, 0x1906, 0x080c, 0x6c9c, 0x002e, 0x00ee, ++ 0x0005, 0x2071, 0x1906, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, ++ 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, ++ 0x2148, 0xa804, 0x900d, 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071, ++ 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, ++ 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x080c, 0x8074, ++ 0x002e, 0x00ee, 0x0005, 0x0006, 0xa87c, 0x0006, 0xa867, 0x0103, ++ 0x20a9, 0x001c, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x001d, 0x20a0, ++ 0x9006, 0x4004, 0x000e, 0x9084, 0x00ff, 0xa87e, 0x000e, 0xa87a, ++ 0xa982, 0x0005, 0x2071, 0x1906, 0x7004, 0x0002, 0x6bd4, 0x6bd5, ++ 0x6c9b, 0x6bd5, 0x0d65, 0x6c9b, 0x0005, 0x2001, 0x191a, 0x2004, ++ 0x0002, 0x6bdf, 0x6bdf, 0x6c34, 0x6c35, 0x6bdf, 0x6c35, 0x0126, ++ 0x2091, 0x8000, 0x1e0c, 0x6cbb, 0x701c, 0x904d, 0x01e0, 0xa84c, ++ 0x9005, 0x01d8, 0x0e04, 0x6c03, 0xa94c, 0x2071, 0x0000, 0x7182, ++ 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x2071, ++ 0x1906, 0x080c, 0x6c9c, 0x012e, 0x0470, 0x2001, 0x005b, 0x2004, ++ 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd09c, 0x2071, 0x1906, 0x1510, ++ 0x2071, 0x1906, 0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, 0x9086, ++ 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, ++ 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, 0x2071, 0x1906, ++ 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, ++ 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x00d6, 0x2008, 0x2069, ++ 0x19d4, 0x683c, 0x9005, 0x0760, 0x0158, 0x9186, 0x0003, 0x0540, ++ 0x2001, 0x1814, 0x2004, 0x2009, 0x1b1e, 0x210c, 0x9102, 0x1500, ++ 0x0126, 0x2091, 0x8000, 0x2069, 0x0050, 0x693c, 0x6838, 0x9106, ++ 0x0190, 0x0e04, 0x6c67, 0x2069, 0x0000, 0x6837, 0x8040, 0x6833, ++ 0x0012, 0x6883, 0x8040, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x190c, 0x11be, 0x2069, 0x19d4, 0x683f, 0xffff, 0x012e, ++ 0x00de, 0x0126, 0x2091, 0x8000, 0x1e0c, 0x6d31, 0x701c, 0x904d, ++ 0x0540, 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, 0x15c9, 0xd09c, ++ 0x1500, 0x2071, 0x1906, 0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, ++ 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, ++ 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, 0x701c, ++ 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, ++ 0x701a, 0x012e, 0x0005, 0x0005, 0x0126, 0x2091, 0x8000, 0x701c, ++ 0x904d, 0x0160, 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, ++ 0x1108, 0x701a, 0x012e, 0x080c, 0x1054, 0x0005, 0x012e, 0x0005, ++ 0x2091, 0x8000, 0x0e04, 0x6cb2, 0x0006, 0x0016, 0x2001, 0x8004, ++ 0x0006, 0x0804, 0x0d6e, 0x0096, 0x00f6, 0x2079, 0x0050, 0x7044, ++ 0xd084, 0x01e0, 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, ++ 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11be, 0x2009, ++ 0x1919, 0x200b, 0x0000, 0x00fe, 0x009e, 0x0005, 0x782c, 0x9094, ++ 0x0780, 0x1971, 0xd0a4, 0x0db8, 0x2009, 0x1919, 0x2104, 0x8000, ++ 0x200a, 0x9082, 0x000f, 0x0e78, 0x00e6, 0x2071, 0x1800, 0x7824, ++ 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1170, 0x2009, 0x182f, ++ 0x210c, 0x918a, 0x0040, 0x0240, 0x7022, 0x2001, 0x1dc0, 0x200c, ++ 0x8108, 0x2102, 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, ++ 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x080c, 0x8074, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x6cb0, 0xd0a4, 0x19c8, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x11be, 0x2009, 0x1919, 0x200b, 0x0000, 0x00ee, 0x00fe, 0x009e, ++ 0x0005, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084, 0x01b8, 0xc084, ++ 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, ++ 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x11be, 0x00fe, 0x0005, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x6cb0, 0xd0a4, 0x0db8, 0x00e6, 0x2071, 0x1800, ++ 0x7824, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, ++ 0x70be, 0x080c, 0x8074, 0x782c, 0x9094, 0x0780, 0x190c, 0x6cb0, ++ 0xd0a4, 0x1d70, 0x00d6, 0x2069, 0x0050, 0x693c, 0x2069, 0x191a, ++ 0x6808, 0x690a, 0x2069, 0x19d4, 0x9102, 0x1118, 0x683c, 0x9005, ++ 0x1328, 0x2001, 0x191b, 0x200c, 0x810d, 0x693e, 0x00de, 0x00ee, ++ 0x00fe, 0x0005, 0x7094, 0x908a, 0x0029, 0x1a0c, 0x0d65, 0x9082, ++ 0x001d, 0x003b, 0x0026, 0x2011, 0x1e00, 0x080c, 0x286d, 0x002e, ++ 0x0005, 0x6e5d, 0x6de3, 0x6dff, 0x6e29, 0x6e4c, 0x6e8c, 0x6e9e, ++ 0x6dff, 0x6e74, 0x6d9e, 0x6dcc, 0x6d9d, 0x0005, 0x00d6, 0x2069, ++ 0x0200, 0x6804, 0x9005, 0x1180, 0x6808, 0x9005, 0x1518, 0x7097, ++ 0x0028, 0x2069, 0x1960, 0x2d04, 0x7002, 0x080c, 0x71f8, 0x6028, ++ 0x9085, 0x0600, 0x602a, 0x00b0, 0x7097, 0x0028, 0x2069, 0x1960, ++ 0x2d04, 0x7002, 0x6028, 0x9085, 0x0600, 0x602a, 0x00e6, 0x0036, ++ 0x0046, 0x0056, 0x2071, 0x1a3c, 0x080c, 0x195f, 0x005e, 0x004e, ++ 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, ++ 0x9005, 0x1178, 0x6808, 0x9005, 0x1160, 0x7097, 0x0028, 0x2069, ++ 0x1960, 0x2d04, 0x7002, 0x080c, 0x729a, 0x6028, 0x9085, 0x0600, ++ 0x602a, 0x00de, 0x0005, 0x0006, 0x2001, 0x0090, 0x080c, 0x2833, ++ 0x000e, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x6f0f, 0xd1d4, 0x1160, ++ 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x7097, 0x0020, 0x080c, 0x6f0f, ++ 0x0028, 0x7097, 0x001d, 0x0010, 0x7097, 0x001f, 0x0005, 0x2001, ++ 0x0088, 0x080c, 0x2833, 0x6124, 0xd1cc, 0x11e8, 0xd1dc, 0x11c0, ++ 0xd1e4, 0x1198, 0x9184, 0x1e00, 0x11d8, 0x080c, 0x1989, 0x60e3, ++ 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x70e3, 0x2001, 0x0080, ++ 0x080c, 0x2833, 0x7097, 0x0028, 0x0058, 0x7097, 0x001e, 0x0040, ++ 0x7097, 0x001d, 0x0028, 0x7097, 0x0020, 0x0010, 0x7097, 0x001f, ++ 0x0005, 0x080c, 0x1989, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, ++ 0x080c, 0x70e3, 0x2001, 0x0080, 0x080c, 0x2833, 0x6124, 0xd1d4, ++ 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, 0x1e00, 0x1158, ++ 0x7097, 0x0028, 0x0040, 0x7097, 0x001e, 0x0028, 0x7097, 0x001d, ++ 0x0010, 0x7097, 0x001f, 0x0005, 0x2001, 0x00a0, 0x080c, 0x2833, ++ 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1989, 0x7097, ++ 0x001e, 0x0010, 0x7097, 0x001d, 0x0005, 0x080c, 0x6f98, 0x6124, ++ 0xd1dc, 0x1188, 0x080c, 0x6f0f, 0x0016, 0x080c, 0x1989, 0x001e, ++ 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x7097, 0x001e, 0x0020, 0x7097, ++ 0x001f, 0x080c, 0x6f0f, 0x0005, 0x0006, 0x2001, 0x00a0, 0x080c, ++ 0x2833, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, ++ 0x1128, 0xd1e4, 0x0140, 0x7097, 0x001e, 0x0028, 0x7097, 0x001d, ++ 0x0010, 0x7097, 0x0021, 0x0005, 0x080c, 0x6f98, 0x6124, 0xd1d4, ++ 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x7097, 0x001e, 0x0028, ++ 0x7097, 0x001d, 0x0010, 0x7097, 0x001f, 0x0005, 0x0006, 0x2001, ++ 0x0090, 0x080c, 0x2833, 0x000e, 0x6124, 0xd1d4, 0x1178, 0xd1cc, ++ 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x7097, 0x001e, 0x0040, ++ 0x7097, 0x001d, 0x0028, 0x7097, 0x0020, 0x0010, 0x7097, 0x001f, ++ 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100, ++ 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x080c, 0x70b7, ++ 0x11f8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01d0, 0xc1b4, 0x2102, ++ 0x0026, 0x2011, 0x0200, 0x080c, 0x286d, 0x002e, 0x080c, 0x2819, ++ 0x6024, 0xd0cc, 0x0148, 0x2001, 0x00a0, 0x080c, 0x2833, 0x080c, ++ 0x73b7, 0x080c, 0x5cdc, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, ++ 0x080c, 0x70d1, 0x0150, 0x080c, 0x70c8, 0x1138, 0x2001, 0x0001, ++ 0x080c, 0x23c9, 0x080c, 0x708b, 0x00a0, 0x080c, 0x6f95, 0x0178, ++ 0x2001, 0x0001, 0x080c, 0x23c9, 0x7094, 0x9086, 0x001e, 0x0120, ++ 0x7094, 0x9086, 0x0022, 0x1118, 0x7097, 0x0025, 0x0010, 0x7097, ++ 0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, ++ 0x2011, 0x6f20, 0x080c, 0x825f, 0x002e, 0x0016, 0x0026, 0x2009, ++ 0x0064, 0x2011, 0x6f20, 0x080c, 0x8256, 0x002e, 0x001e, 0x0005, ++ 0x00e6, 0x00f6, 0x0016, 0x080c, 0x8fb7, 0x2071, 0x1800, 0x080c, ++ 0x6eb9, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, ++ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, 0x8fb7, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x6028, ++ 0xc09c, 0x602a, 0x080c, 0x98c8, 0x2011, 0x0003, 0x080c, 0x9339, ++ 0x2011, 0x0002, 0x080c, 0x9343, 0x080c, 0x9206, 0x080c, 0x820b, ++ 0x0036, 0x901e, 0x080c, 0x9286, 0x003e, 0x080c, 0x98e4, 0x60e3, ++ 0x0000, 0x080c, 0xd5fb, 0x080c, 0xd616, 0x2009, 0x0004, 0x080c, ++ 0x281f, 0x080c, 0x273f, 0x2001, 0x1800, 0x2003, 0x0004, 0x2011, ++ 0x0008, 0x080c, 0x286d, 0x2011, 0x6f20, 0x080c, 0x825f, 0x080c, ++ 0x70d1, 0x0118, 0x9006, 0x080c, 0x2833, 0x080c, 0x0bab, 0x2001, ++ 0x0001, 0x080c, 0x23c9, 0x012e, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x0026, 0x00e6, 0x2011, 0x6f2d, ++ 0x2071, 0x19d4, 0x701c, 0x9206, 0x1118, 0x7018, 0x9005, 0x0110, ++ 0x9085, 0x0001, 0x00ee, 0x002e, 0x0005, 0x6020, 0xd09c, 0x0005, ++ 0x6800, 0x9084, 0xfffe, 0x9086, 0x00c0, 0x01b8, 0x2001, 0x00c0, ++ 0x080c, 0x2833, 0x0156, 0x20a9, 0x002d, 0x1d04, 0x6fa5, 0x2091, ++ 0x6000, 0x1f04, 0x6fa5, 0x015e, 0x00d6, 0x2069, 0x1800, 0x6898, ++ 0x8001, 0x0220, 0x0118, 0x689a, 0x00de, 0x0005, 0x689b, 0x0014, ++ 0x68e8, 0xd0dc, 0x0dc8, 0x6800, 0x9086, 0x0001, 0x1da8, 0x080c, ++ 0x826b, 0x0c90, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0x1800, 0x080c, 0x73c6, 0x2001, 0x193e, 0x2003, ++ 0x0000, 0x9006, 0x7096, 0x60e2, 0x6886, 0x080c, 0x2498, 0x9006, ++ 0x080c, 0x2833, 0x080c, 0x5b97, 0x0026, 0x2011, 0xffff, 0x080c, ++ 0x286d, 0x002e, 0x602b, 0x182c, 0x00ee, 0x00de, 0x00ce, 0x0005, ++ 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, ++ 0x1800, 0x2001, 0x194e, 0x200c, 0x9186, 0x0000, 0x0158, 0x9186, ++ 0x0001, 0x0158, 0x9186, 0x0002, 0x0158, 0x9186, 0x0003, 0x0158, ++ 0x0804, 0x707b, 0x7097, 0x0022, 0x0040, 0x7097, 0x0021, 0x0028, ++ 0x7097, 0x0023, 0x0010, 0x7097, 0x0024, 0x60e3, 0x0000, 0x6887, ++ 0x0001, 0x2001, 0x0001, 0x080c, 0x2498, 0x080c, 0x98c8, 0x0026, ++ 0x080c, 0x9b6d, 0x002e, 0x080c, 0x98e4, 0x7000, 0x908e, 0x0004, ++ 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, ++ 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0150, 0x012e, ++ 0x015e, 0x080c, 0xbf61, 0x0118, 0x9006, 0x080c, 0x285d, 0x0804, ++ 0x7087, 0x6800, 0x9084, 0x00a1, 0xc0bd, 0x6802, 0x080c, 0x2819, ++ 0x6904, 0xd1d4, 0x1140, 0x2001, 0x0100, 0x080c, 0x2833, 0x1f04, ++ 0x702c, 0x080c, 0x710e, 0x012e, 0x015e, 0x080c, 0x70c8, 0x0170, ++ 0x6044, 0x9005, 0x0130, 0x080c, 0x710e, 0x9006, 0x8001, 0x1df0, ++ 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x710e, 0x080c, 0xbf61, ++ 0x0118, 0x9006, 0x080c, 0x285d, 0x0016, 0x0026, 0x7000, 0x908e, ++ 0x0004, 0x0130, 0x2009, 0x00c8, 0x2011, 0x6f2d, 0x080c, 0x821d, ++ 0x002e, 0x001e, 0x080c, 0x806b, 0x7034, 0xc085, 0x7036, 0x2001, ++ 0x194e, 0x2003, 0x0004, 0x080c, 0x6d82, 0x080c, 0x70c8, 0x0138, ++ 0x6804, 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, 0x73bc, 0x00ee, ++ 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, ++ 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x8082, 0x080c, 0x8074, ++ 0x080c, 0x73c6, 0x2001, 0x193e, 0x2003, 0x0000, 0x9006, 0x7096, ++ 0x60e2, 0x6886, 0x080c, 0x2498, 0x9006, 0x080c, 0x2833, 0x6043, ++ 0x0090, 0x6043, 0x0010, 0x0026, 0x2011, 0xffff, 0x080c, 0x286d, ++ 0x002e, 0x602b, 0x182c, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006, ++ 0x2001, 0x194d, 0x2004, 0x9086, 0xaaaa, 0x000e, 0x0005, 0x0006, ++ 0x080c, 0x5391, 0x9084, 0x0030, 0x9086, 0x0000, 0x000e, 0x0005, ++ 0x0006, 0x080c, 0x5391, 0x9084, 0x0030, 0x9086, 0x0030, 0x000e, ++ 0x0005, 0x0006, 0x080c, 0x5391, 0x9084, 0x0030, 0x9086, 0x0010, ++ 0x000e, 0x0005, 0x0006, 0x080c, 0x5391, 0x9084, 0x0030, 0x9086, ++ 0x0020, 0x000e, 0x0005, 0x0036, 0x0016, 0x2001, 0x180c, 0x2004, ++ 0x908c, 0x0013, 0x0180, 0x0020, 0x080c, 0x24b8, 0x900e, 0x0028, ++ 0x080c, 0x665f, 0x1dc8, 0x2009, 0x0002, 0x2019, 0x0028, 0x080c, ++ 0x2fc5, 0x9006, 0x0019, 0x001e, 0x003e, 0x0005, 0x00e6, 0x2071, ++ 0x180c, 0x2e04, 0x0130, 0x080c, 0xbf5a, 0x1128, 0x9085, 0x0010, ++ 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, ++ 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, ++ 0x602f, 0x0100, 0x602f, 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, ++ 0x20a9, 0x0002, 0x080c, 0x27fa, 0x0026, 0x2011, 0x0040, 0x080c, ++ 0x286d, 0x002e, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e, 0x600e, ++ 0x000e, 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, ++ 0x080c, 0x2498, 0x2001, 0x00a0, 0x0006, 0x080c, 0xbf61, 0x000e, ++ 0x0130, 0x080c, 0x2851, 0x9006, 0x080c, 0x285d, 0x0010, 0x080c, ++ 0x2833, 0x000e, 0x6052, 0x6050, 0x0006, 0xc0e5, 0x6052, 0x00f6, ++ 0x2079, 0x0100, 0x080c, 0x27aa, 0x00fe, 0x000e, 0x6052, 0x0005, ++ 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x9926, 0x0158, ++ 0x2001, 0x0386, 0x2004, 0xd0b4, 0x1130, 0x2001, 0x0016, 0x080c, ++ 0x98b9, 0x0804, 0x71ea, 0x2001, 0x180c, 0x200c, 0xc1c4, 0x2102, ++ 0x6028, 0x9084, 0xe1ff, 0x602a, 0x2011, 0x0200, 0x080c, 0x286d, ++ 0x2001, 0x0090, 0x080c, 0x2833, 0x20a9, 0x0366, 0x6024, 0xd0cc, ++ 0x1558, 0x1d04, 0x7186, 0x2091, 0x6000, 0x1f04, 0x7186, 0x080c, ++ 0x98c8, 0x2011, 0x0003, 0x080c, 0x9339, 0x2011, 0x0002, 0x080c, ++ 0x9343, 0x080c, 0x9206, 0x901e, 0x080c, 0x9286, 0x2001, 0x0386, ++ 0x2003, 0x7000, 0x080c, 0x98e4, 0x2001, 0x00a0, 0x080c, 0x2833, ++ 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x080c, 0xbf61, 0x0110, 0x080c, ++ 0x0cd1, 0x9085, 0x0001, 0x04e0, 0x2001, 0x0386, 0x2004, 0xd0ac, ++ 0x0110, 0x080c, 0x1989, 0x60e3, 0x0000, 0x2001, 0x0002, 0x080c, ++ 0x2498, 0x60e2, 0x2001, 0x0080, 0x080c, 0x2833, 0x20a9, 0x0366, ++ 0x2011, 0x1e00, 0x080c, 0x286d, 0x2009, 0x1e00, 0x080c, 0x2819, ++ 0x6024, 0x910c, 0x0140, 0x1d04, 0x71c8, 0x2091, 0x6000, 0x1f04, ++ 0x71c8, 0x0804, 0x718f, 0x2001, 0x0386, 0x2003, 0x7000, 0x6028, ++ 0x9085, 0x1e00, 0x602a, 0x70b0, 0x9005, 0x1118, 0x6887, 0x0001, ++ 0x0008, 0x6886, 0x080c, 0xbf61, 0x0110, 0x080c, 0x0cd1, 0x9006, ++ 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, ++ 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2071, 0x1800, 0x7000, 0x9086, 0x0003, 0x1168, 0x2001, ++ 0x020b, 0x2004, 0x9084, 0x5540, 0x9086, 0x5540, 0x1128, 0x2069, ++ 0x1a47, 0x2d04, 0x8000, 0x206a, 0x2069, 0x0140, 0x6020, 0x9084, ++ 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, 0x7261, 0x2001, 0x0088, ++ 0x080c, 0x2833, 0x9006, 0x60e2, 0x6886, 0x080c, 0x2498, 0x2069, ++ 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x01d0, 0x6028, ++ 0x9084, 0xfbff, 0x602a, 0x2011, 0x0400, 0x080c, 0x286d, 0x2069, ++ 0x1960, 0x7000, 0x206a, 0x7097, 0x0026, 0x7003, 0x0001, 0x20a9, ++ 0x0002, 0x1d04, 0x7241, 0x2091, 0x6000, 0x1f04, 0x7241, 0x0804, ++ 0x7292, 0x2069, 0x0140, 0x20a9, 0x0384, 0x2011, 0x1e00, 0x080c, ++ 0x286d, 0x2009, 0x1e00, 0x080c, 0x2819, 0x6024, 0x910c, 0x0528, ++ 0x9084, 0x1a00, 0x1510, 0x1d04, 0x724d, 0x2091, 0x6000, 0x1f04, ++ 0x724d, 0x080c, 0x98c8, 0x2011, 0x0003, 0x080c, 0x9339, 0x2011, ++ 0x0002, 0x080c, 0x9343, 0x080c, 0x9206, 0x901e, 0x080c, 0x9286, ++ 0x080c, 0x98e4, 0x2001, 0x00a0, 0x080c, 0x2833, 0x080c, 0x73b7, ++ 0x080c, 0x5cdc, 0x9085, 0x0001, 0x00a8, 0x2001, 0x0080, 0x080c, ++ 0x2833, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70b0, 0x9005, 0x1118, ++ 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x0002, 0x080c, 0x2498, ++ 0x60e2, 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x6020, 0x9084, 0x00c0, ++ 0x01e8, 0x080c, 0x98c8, 0x2011, 0x0003, 0x080c, 0x9339, 0x2011, ++ 0x0002, 0x080c, 0x9343, 0x080c, 0x9206, 0x901e, 0x080c, 0x9286, ++ 0x080c, 0x98e4, 0x2069, 0x0140, 0x2001, 0x00a0, 0x080c, 0x2833, ++ 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x0804, 0x7334, 0x2001, 0x180c, ++ 0x200c, 0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x6f15, 0x2069, ++ 0x0140, 0x2001, 0x0080, 0x080c, 0x2833, 0x60e3, 0x0000, 0x2069, ++ 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x0190, 0x6028, ++ 0x9084, 0xfdff, 0x602a, 0x2011, 0x0200, 0x080c, 0x286d, 0x2069, ++ 0x1960, 0x7000, 0x206a, 0x7097, 0x0027, 0x7003, 0x0001, 0x0804, ++ 0x7334, 0x2011, 0x1e00, 0x080c, 0x286d, 0x2009, 0x1e00, 0x080c, ++ 0x2819, 0x6024, 0x910c, 0x01c8, 0x9084, 0x1c00, 0x11b0, 0x1d04, ++ 0x72f1, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x80b3, ++ 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, 0x19d4, ++ 0x7018, 0x00ee, 0x9005, 0x19e8, 0x01f8, 0x0026, 0x2011, 0x6f2d, ++ 0x080c, 0x8159, 0x2011, 0x6f20, 0x080c, 0x825f, 0x002e, 0x2069, ++ 0x0140, 0x60e3, 0x0000, 0x70b0, 0x9005, 0x1118, 0x6887, 0x0001, ++ 0x0008, 0x6886, 0x2001, 0x0002, 0x080c, 0x2498, 0x60e2, 0x2001, ++ 0x180c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, ++ 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, ++ 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x080c, ++ 0xbf5a, 0x1904, 0x73a1, 0x7130, 0xd184, 0x1170, 0x080c, 0x3186, ++ 0x0138, 0xc18d, 0x7132, 0x2011, 0x1854, 0x2214, 0xd2ac, 0x1120, ++ 0x7030, 0xd08c, 0x0904, 0x73a1, 0x2011, 0x1854, 0x220c, 0x0438, ++ 0x0016, 0x2019, 0x000e, 0x080c, 0xd1eb, 0x0156, 0x00b6, 0x20a9, ++ 0x007f, 0x900e, 0x9186, 0x007e, 0x01a0, 0x9186, 0x0080, 0x0188, ++ 0x080c, 0x6270, 0x1170, 0x2120, 0x9006, 0x0016, 0x2009, 0x000e, ++ 0x080c, 0xd273, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x83eb, ++ 0x001e, 0x8108, 0x1f04, 0x736a, 0x00be, 0x015e, 0x001e, 0xd1ac, ++ 0x1148, 0x0016, 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x2fc5, ++ 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, 0x080c, ++ 0x6270, 0x1110, 0x080c, 0x5cf6, 0x8108, 0x1f04, 0x7397, 0x00be, ++ 0x015e, 0x080c, 0x1989, 0x080c, 0x98c8, 0x080c, 0x9b6d, 0x080c, ++ 0x98e4, 0x60e3, 0x0000, 0x080c, 0x5cdc, 0x080c, 0x6fe8, 0x00ee, ++ 0x00ce, 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, ++ 0x194e, 0x2003, 0x0001, 0x0005, 0x2001, 0x194e, 0x2003, 0x0000, ++ 0x0005, 0x2001, 0x194d, 0x2003, 0xaaaa, 0x0005, 0x2001, 0x194d, ++ 0x2003, 0x0000, 0x0005, 0x2071, 0x18f0, 0x7003, 0x0000, 0x7007, ++ 0x0000, 0x080c, 0x103b, 0x090c, 0x0d65, 0xa8ab, 0xdcb0, 0x2900, ++ 0x704e, 0x080c, 0x103b, 0x090c, 0x0d65, 0xa8ab, 0xdcb0, 0x2900, ++ 0x7052, 0xa867, 0x0000, 0xa86b, 0x0001, 0xa89f, 0x0000, 0x0005, ++ 0x00e6, 0x2071, 0x0040, 0x6848, 0x9005, 0x1118, 0x9085, 0x0001, ++ 0x04b0, 0x6840, 0x9005, 0x0150, 0x04a1, 0x6a50, 0x9200, 0x7002, ++ 0x6854, 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6850, 0x7002, ++ 0x6854, 0x7006, 0x6858, 0x700a, 0x685c, 0x700e, 0x6840, 0x9005, ++ 0x1110, 0x7012, 0x7016, 0x6848, 0x701a, 0x701c, 0x9085, 0x0040, ++ 0x701e, 0x2001, 0x0019, 0x7036, 0x702b, 0x0001, 0x2001, 0x0004, ++ 0x200c, 0x918c, 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6, 0x2069, ++ 0x18f0, 0x6807, 0x0001, 0x00de, 0x080c, 0x79c3, 0x9006, 0x00ee, ++ 0x0005, 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x818d, 0x1f04, ++ 0x742d, 0x015e, 0x0005, 0x2079, 0x0040, 0x2071, 0x18f0, 0x7004, ++ 0x0002, 0x7443, 0x7444, 0x748f, 0x74ea, 0x762b, 0x7441, 0x7441, ++ 0x7655, 0x080c, 0x0d65, 0x0005, 0x2079, 0x0040, 0x2001, 0x1dc0, ++ 0x2003, 0x0000, 0x782c, 0x908c, 0x0780, 0x190c, 0x7a4f, 0xd0a4, ++ 0x0570, 0x2001, 0x1dc0, 0x2004, 0x9082, 0x0080, 0x1640, 0x1d04, ++ 0x7461, 0x2001, 0x19d7, 0x200c, 0x8109, 0x0508, 0x2091, 0x6000, ++ 0x2102, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, ++ 0x00ff, 0x908a, 0x0040, 0x0608, 0x00b8, 0x2001, 0x1800, 0x200c, ++ 0x9186, 0x0003, 0x1160, 0x7104, 0x9186, 0x0004, 0x0140, 0x9186, ++ 0x0007, 0x0128, 0x9186, 0x0003, 0x1968, 0x080c, 0x74ea, 0x782c, ++ 0xd09c, 0x090c, 0x79c3, 0x0005, 0x9082, 0x005a, 0x1218, 0x2100, ++ 0x003b, 0x0c18, 0x080c, 0x7520, 0x0c90, 0x00e3, 0x08f0, 0x0005, ++ 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7542, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x7520, 0x7520, 0x752c, 0x7520, 0x772a, 0x7520, ++ 0x7520, 0x7520, 0x7542, 0x7520, 0x752c, 0x776b, 0x77ac, 0x77f3, ++ 0x7807, 0x7520, 0x7520, 0x7542, 0x752c, 0x7520, 0x7520, 0x75ff, ++ 0x78b2, 0x78cd, 0x7520, 0x7542, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x75f5, 0x78cd, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x7520, 0x7556, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x7520, 0x7520, 0x7520, 0x79f3, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x7520, 0x756a, 0x7520, 0x7520, 0x7520, 0x7520, ++ 0x7520, 0x7520, 0x2079, 0x0040, 0x7004, 0x9086, 0x0003, 0x1198, ++ 0x782c, 0x080c, 0x79ec, 0xd0a4, 0x0170, 0x7824, 0x2048, 0x9006, ++ 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a, 0x001a, 0x1210, ++ 0x002b, 0x0c50, 0x00e9, 0x080c, 0x79c3, 0x0005, 0x7520, 0x752c, ++ 0x7716, 0x7520, 0x752c, 0x7520, 0x752c, 0x752c, 0x7520, 0x752c, ++ 0x7716, 0x752c, 0x752c, 0x752c, 0x752c, 0x752c, 0x7520, 0x752c, ++ 0x7716, 0x7520, 0x7520, 0x752c, 0x7520, 0x7520, 0x7520, 0x752c, ++ 0x00e6, 0x2071, 0x18f0, 0x2009, 0x0400, 0x0071, 0x00ee, 0x0005, ++ 0x2009, 0x1000, 0x0049, 0x0005, 0x2009, 0x2000, 0x0029, 0x0005, ++ 0x2009, 0x0800, 0x0009, 0x0005, 0x7007, 0x0001, 0xa868, 0x9084, ++ 0x00ff, 0x9105, 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x6996, ++ 0x012e, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0d08, 0x8001, ++ 0x1120, 0x7007, 0x0001, 0x0804, 0x76d4, 0x7007, 0x0003, 0x7012, ++ 0x2900, 0x7016, 0x701a, 0x704b, 0x76d4, 0x0005, 0xa864, 0x8007, ++ 0x9084, 0x00ff, 0x0968, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, ++ 0x76ef, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, ++ 0x76ef, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x9086, 0x0001, ++ 0x1904, 0x7528, 0x7007, 0x0001, 0x2009, 0x1833, 0x210c, 0x81ff, ++ 0x1904, 0x75cc, 0xa994, 0x9186, 0x006f, 0x0188, 0x9186, 0x0074, ++ 0x15b0, 0x0026, 0x2011, 0x0010, 0x080c, 0x668b, 0x002e, 0x0578, ++ 0x0016, 0xa998, 0x080c, 0x66d5, 0x001e, 0x1548, 0x0400, 0x080c, ++ 0x70b7, 0x0140, 0xa897, 0x4005, 0xa89b, 0x0016, 0x2001, 0x0030, ++ 0x900e, 0x0438, 0x0026, 0x2011, 0x8008, 0x080c, 0x668b, 0x002e, ++ 0x01b0, 0x0016, 0x0026, 0x0036, 0xa998, 0xaaa0, 0xab9c, 0x918d, ++ 0x8000, 0x080c, 0x66d5, 0x003e, 0x002e, 0x001e, 0x1140, 0xa897, ++ 0x4005, 0xa89b, 0x4009, 0x2001, 0x0030, 0x900e, 0x0050, 0xa868, ++ 0x9084, 0x00ff, 0xa86a, 0xa883, 0x0000, 0x080c, 0x5f07, 0x1108, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0xa867, 0x0139, 0xa87a, 0xa982, ++ 0x080c, 0x6996, 0x012e, 0x0ca0, 0xa994, 0x9186, 0x0071, 0x0904, ++ 0x757a, 0x9186, 0x0064, 0x0904, 0x757a, 0x9186, 0x007c, 0x0904, ++ 0x757a, 0x9186, 0x0028, 0x0904, 0x757a, 0x9186, 0x0038, 0x0904, ++ 0x757a, 0x9186, 0x0078, 0x0904, 0x757a, 0x9186, 0x005f, 0x0904, ++ 0x757a, 0x9186, 0x0056, 0x0904, 0x757a, 0xa897, 0x4005, 0xa89b, ++ 0x0001, 0x2001, 0x0030, 0x900e, 0x0860, 0xa87c, 0x9084, 0x00c0, ++ 0x9086, 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x78e4, 0x2900, ++ 0x7016, 0x701a, 0x20a9, 0x0004, 0xa860, 0x20e0, 0xa85c, 0x9080, ++ 0x0030, 0x2098, 0x7050, 0x2040, 0xa060, 0x20e8, 0xa05c, 0x9080, ++ 0x0023, 0x20a0, 0x4003, 0xa888, 0x7012, 0x9082, 0x0401, 0x1a04, ++ 0x7530, 0xaab4, 0x928a, 0x0002, 0x1a04, 0x7530, 0x82ff, 0x1138, ++ 0xa8b8, 0xa9bc, 0x9105, 0x0118, 0x2001, 0x7692, 0x0018, 0x9280, ++ 0x7688, 0x2005, 0x7056, 0x7010, 0x9015, 0x0904, 0x7673, 0x080c, ++ 0x103b, 0x1118, 0x7007, 0x0004, 0x0005, 0x2900, 0x7022, 0x7054, ++ 0x2060, 0xe000, 0xa866, 0x7050, 0x2040, 0xa95c, 0xe004, 0x9100, ++ 0xa076, 0xa860, 0xa072, 0xe008, 0x920a, 0x1210, 0x900e, 0x2200, ++ 0x7112, 0xe20c, 0x8003, 0x800b, 0x9296, 0x0004, 0x0108, 0x9108, ++ 0xa17a, 0x810b, 0xa17e, 0x080c, 0x110c, 0xa06c, 0x908e, 0x0100, ++ 0x0170, 0x9086, 0x0200, 0x0118, 0x7007, 0x0007, 0x0005, 0x7020, ++ 0x2048, 0x080c, 0x1054, 0x7014, 0x2048, 0x0804, 0x7530, 0x7020, ++ 0x2048, 0x7018, 0xa802, 0xa807, 0x0000, 0x2908, 0x2048, 0xa906, ++ 0x711a, 0x0804, 0x762b, 0x7014, 0x2048, 0x7007, 0x0001, 0xa8b4, ++ 0x9005, 0x1128, 0xa8b8, 0xa9bc, 0x9105, 0x0108, 0x00b9, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x001e, 0x0904, 0x78e4, 0x0804, 0x76d4, ++ 0x768a, 0x768e, 0x0002, 0x001d, 0x0007, 0x0004, 0x000a, 0x001b, ++ 0x0005, 0x0006, 0x000a, 0x001d, 0x0005, 0x0004, 0x0076, 0x0066, ++ 0xafb8, 0xaebc, 0xa804, 0x2050, 0xb0c0, 0xb0e2, 0xb0bc, 0xb0de, ++ 0xb0b8, 0xb0d2, 0xb0b4, 0xb0ce, 0xb6da, 0xb7d6, 0xb0b0, 0xb0ca, ++ 0xb0ac, 0xb0c6, 0xb0a8, 0xb0ba, 0xb0a4, 0xb0b6, 0xb6c2, 0xb7be, ++ 0xb0a0, 0xb0b2, 0xb09c, 0xb0ae, 0xb098, 0xb0a2, 0xb094, 0xb09e, ++ 0xb6aa, 0xb7a6, 0xb090, 0xb09a, 0xb08c, 0xb096, 0xb088, 0xb08a, ++ 0xb084, 0xb086, 0xb692, 0xb78e, 0xb080, 0xb082, 0xb07c, 0xb07e, ++ 0xb078, 0xb072, 0xb074, 0xb06e, 0xb67a, 0xb776, 0xb004, 0x9055, ++ 0x1958, 0x006e, 0x007e, 0x0005, 0x2009, 0x1833, 0x210c, 0x81ff, ++ 0x1178, 0x080c, 0x5d56, 0x1108, 0x0005, 0x080c, 0x6bb3, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0xbb45, 0x080c, 0x6996, 0x012e, 0x0ca0, ++ 0x080c, 0xbf5a, 0x1d70, 0x2001, 0x0028, 0x900e, 0x0c70, 0x2009, ++ 0x1833, 0x210c, 0x81ff, 0x11d8, 0xa888, 0x9005, 0x01e0, 0xa883, ++ 0x0000, 0xa87c, 0xd0f4, 0x0120, 0x080c, 0x5e69, 0x1138, 0x0005, ++ 0x9006, 0xa87a, 0x080c, 0x5de4, 0x1108, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0xa87a, 0xa982, 0x080c, 0x6996, 0x012e, 0x0cb0, 0x2001, ++ 0x0028, 0x900e, 0x0c98, 0x2001, 0x0000, 0x0c80, 0x7018, 0xa802, ++ 0x2908, 0x2048, 0xa906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0118, ++ 0x7007, 0x0003, 0x0030, 0x7014, 0x2048, 0x7007, 0x0001, 0x7048, ++ 0x080f, 0x0005, 0x00b6, 0x7007, 0x0001, 0xa974, 0xa878, 0x9084, ++ 0x00ff, 0x9096, 0x0004, 0x0540, 0x20a9, 0x0001, 0x9096, 0x0001, ++ 0x0190, 0x900e, 0x20a9, 0x0800, 0x9096, 0x0002, 0x0160, 0x9005, ++ 0x11d8, 0xa974, 0x080c, 0x6270, 0x11b8, 0x0066, 0xae80, 0x080c, ++ 0x6380, 0x006e, 0x0088, 0x0046, 0x2011, 0x180c, 0x2224, 0xc484, ++ 0x2412, 0x004e, 0x00c6, 0x080c, 0x6270, 0x1110, 0x080c, 0x654f, ++ 0x8108, 0x1f04, 0x7753, 0x00ce, 0xa87c, 0xd084, 0x1120, 0x080c, ++ 0x1054, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x6996, ++ 0x012e, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, ++ 0x080c, 0x6663, 0x0580, 0x2061, 0x1a3f, 0x6100, 0xd184, 0x0178, ++ 0xa888, 0x9084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, ++ 0x9005, 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, ++ 0x0001, 0xa890, 0x9005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, ++ 0xa888, 0x9084, 0x00ff, 0x0178, 0x6006, 0xa888, 0x8007, 0x9084, ++ 0x00ff, 0x0148, 0x600a, 0xa888, 0x8000, 0x1108, 0xc28d, 0x6202, ++ 0x012e, 0x0804, 0x79ad, 0x012e, 0x0804, 0x79a7, 0x012e, 0x0804, ++ 0x79a1, 0x012e, 0x0804, 0x79a4, 0x0126, 0x2091, 0x8000, 0x7007, ++ 0x0001, 0x080c, 0x6663, 0x05e0, 0x2061, 0x1a3f, 0x6000, 0xd084, ++ 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0xac78, 0x9484, 0x0003, ++ 0x0170, 0xa988, 0x918c, 0x00ff, 0x8001, 0x1120, 0x2100, 0x9210, ++ 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0x9212, 0x02f0, 0x9484, ++ 0x000c, 0x0188, 0xa988, 0x810f, 0x918c, 0x00ff, 0x9082, 0x0004, ++ 0x1120, 0x2100, 0x9318, 0x0288, 0x0030, 0x9082, 0x0004, 0x1168, ++ 0x2100, 0x931a, 0x0250, 0xa890, 0x9005, 0x0110, 0x8000, 0x6016, ++ 0x6206, 0x630a, 0x012e, 0x0804, 0x79ad, 0x012e, 0x0804, 0x79aa, ++ 0x012e, 0x0804, 0x79a7, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, ++ 0x2061, 0x1a3f, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, 0x0220, ++ 0x630a, 0x012e, 0x0804, 0x79bb, 0x012e, 0x0804, 0x79aa, 0x00b6, ++ 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0xa87c, 0xd0ac, ++ 0x0148, 0x00c6, 0x2061, 0x1a3f, 0x6000, 0x9084, 0xfcff, 0x6002, ++ 0x00ce, 0x0440, 0xa888, 0x9005, 0x05d8, 0xa88c, 0x9065, 0x0598, ++ 0x2001, 0x1833, 0x2004, 0x9005, 0x0118, 0x080c, 0x9c21, 0x0068, ++ 0x6017, 0xf400, 0x6063, 0x0000, 0xa97c, 0xd1a4, 0x0110, 0xa980, ++ 0x6162, 0x2009, 0x0041, 0x080c, 0x9c85, 0xa988, 0x918c, 0xff00, ++ 0x9186, 0x2000, 0x1138, 0x0026, 0x900e, 0x2011, 0xfdff, 0x080c, ++ 0x83eb, 0x002e, 0xa87c, 0xd0c4, 0x0148, 0x2061, 0x1a3f, 0x6000, ++ 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, 0x012e, ++ 0x00be, 0x0804, 0x79ad, 0x00ce, 0x012e, 0x00be, 0x0804, 0x79a7, ++ 0xa984, 0x9186, 0x002e, 0x0d30, 0x9186, 0x002d, 0x0d18, 0x9186, ++ 0x0045, 0x0510, 0x9186, 0x002a, 0x1130, 0x2001, 0x180c, 0x200c, ++ 0xc194, 0x2102, 0x08b8, 0x9186, 0x0020, 0x0158, 0x9186, 0x0029, ++ 0x1d10, 0xa974, 0x080c, 0x6270, 0x1968, 0xb800, 0xc0e4, 0xb802, ++ 0x0848, 0xa88c, 0x9065, 0x09b8, 0x6007, 0x0024, 0x2001, 0x1957, ++ 0x2004, 0x601a, 0x0804, 0x7842, 0xa88c, 0x9065, 0x0960, 0x00e6, ++ 0xa890, 0x9075, 0x2001, 0x1833, 0x2004, 0x9005, 0x0150, 0x080c, ++ 0x9c21, 0x8eff, 0x0118, 0x2e60, 0x080c, 0x9c21, 0x00ee, 0x0804, ++ 0x7842, 0x6024, 0xc0dc, 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, ++ 0xa8a0, 0x9005, 0x0130, 0x6007, 0x003b, 0xa8a4, 0x602e, 0xa8a8, ++ 0x6016, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00ee, ++ 0x0804, 0x7842, 0x2061, 0x1a3f, 0x6000, 0xd084, 0x0190, 0xd08c, ++ 0x1904, 0x79bb, 0x0126, 0x2091, 0x8000, 0x6204, 0x8210, 0x0220, ++ 0x6206, 0x012e, 0x0804, 0x79bb, 0x012e, 0xa883, 0x0016, 0x0804, ++ 0x79b4, 0xa883, 0x0007, 0x0804, 0x79b4, 0xa864, 0x8007, 0x9084, ++ 0x00ff, 0x0130, 0x8001, 0x1138, 0x7007, 0x0001, 0x0069, 0x0005, ++ 0x080c, 0x7528, 0x0040, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, ++ 0x701a, 0x704b, 0x78e4, 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, ++ 0x8000, 0x903e, 0x2061, 0x1800, 0x61cc, 0x81ff, 0x1904, 0x7966, ++ 0x6130, 0xd194, 0x1904, 0x7990, 0xa878, 0x2070, 0x9e82, 0x1ddc, ++ 0x0a04, 0x795a, 0x6064, 0x9e02, 0x1a04, 0x795a, 0x7120, 0x9186, ++ 0x0006, 0x1904, 0x794c, 0x7010, 0x905d, 0x0904, 0x7966, 0xb800, ++ 0xd0e4, 0x1904, 0x798a, 0x2061, 0x1a3f, 0x6100, 0x9184, 0x0301, ++ 0x9086, 0x0001, 0x15a0, 0x7024, 0xd0dc, 0x1904, 0x7993, 0xa883, ++ 0x0000, 0xa803, 0x0000, 0x2908, 0x7014, 0x9005, 0x1198, 0x7116, ++ 0xa87c, 0xd0f4, 0x1904, 0x7996, 0x080c, 0x538d, 0xd09c, 0x1118, ++ 0xa87c, 0xc0cc, 0xa87e, 0x2e60, 0x080c, 0x82de, 0x012e, 0x00ee, ++ 0x00be, 0x0005, 0x2048, 0xa800, 0x9005, 0x1de0, 0xa902, 0x2148, ++ 0xa87c, 0xd0f4, 0x1904, 0x7996, 0x012e, 0x00ee, 0x00be, 0x0005, ++ 0x012e, 0x00ee, 0xa883, 0x0006, 0x00be, 0x0804, 0x79b4, 0xd184, ++ 0x0db8, 0xd1c4, 0x1190, 0x00a0, 0xa974, 0x080c, 0x6270, 0x15d0, ++ 0xb800, 0xd0e4, 0x15b8, 0x7120, 0x9186, 0x0007, 0x1118, 0xa883, ++ 0x0002, 0x0490, 0xa883, 0x0008, 0x0478, 0xa883, 0x000e, 0x0460, ++ 0xa883, 0x0017, 0x0448, 0xa883, 0x0035, 0x0430, 0x080c, 0x5391, ++ 0xd0fc, 0x01e8, 0xa878, 0x2070, 0x9e82, 0x1ddc, 0x02c0, 0x6064, ++ 0x9e02, 0x12a8, 0x7120, 0x9186, 0x0006, 0x1188, 0x7010, 0x905d, ++ 0x0170, 0xb800, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0x9086, ++ 0x0007, 0x1904, 0x78f0, 0x7003, 0x0002, 0x0804, 0x78f0, 0xa883, ++ 0x0028, 0x0010, 0xa883, 0x0029, 0x012e, 0x00ee, 0x00be, 0x0420, ++ 0xa883, 0x002a, 0x0cc8, 0xa883, 0x0045, 0x0cb0, 0x2e60, 0x2019, ++ 0x0002, 0x601b, 0x0014, 0x080c, 0xcdf9, 0x012e, 0x00ee, 0x00be, ++ 0x0005, 0x2009, 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, ++ 0x0006, 0x0028, 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0xa884, ++ 0x9084, 0xff00, 0x9105, 0xa886, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6996, 0x012e, 0x0005, 0x080c, 0x1054, 0x0005, 0x00d6, 0x080c, ++ 0x82d5, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x0040, 0x702c, 0xd084, 0x01d8, 0x908c, 0x0780, 0x190c, ++ 0x7a4f, 0xd09c, 0x11a8, 0x2071, 0x1800, 0x70bc, 0x90ea, 0x0040, ++ 0x0278, 0x8001, 0x70be, 0x702c, 0x2048, 0xa800, 0x702e, 0x9006, ++ 0xa802, 0xa806, 0x2071, 0x0040, 0x2900, 0x7022, 0x702c, 0x0c28, ++ 0x012e, 0x00ee, 0x00de, 0x0005, 0x0006, 0x9084, 0x0780, 0x190c, ++ 0x7a4f, 0x000e, 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, ++ 0x00b6, 0x7007, 0x0001, 0xaa74, 0x9282, 0x0004, 0x1a04, 0x7a40, ++ 0xa97c, 0x9188, 0x1000, 0x2104, 0x905d, 0xb804, 0xd284, 0x0140, ++ 0x05e8, 0x8007, 0x9084, 0x00ff, 0x9084, 0x0006, 0x1108, 0x04b0, ++ 0x2b10, 0x080c, 0x9b91, 0x1118, 0x080c, 0x9c58, 0x05a8, 0x6212, ++ 0xa874, 0x0002, 0x7a1e, 0x7a23, 0x7a26, 0x7a2c, 0x2019, 0x0002, ++ 0x080c, 0xd1eb, 0x0060, 0x080c, 0xd17b, 0x0048, 0x2019, 0x0002, ++ 0xa980, 0x080c, 0xd19a, 0x0018, 0xa980, 0x080c, 0xd17b, 0x080c, ++ 0x9be7, 0xa887, 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x6996, ++ 0x012e, 0x00be, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, ++ 0xa887, 0x0006, 0x0c80, 0xa887, 0x0002, 0x0c68, 0xa887, 0x0005, ++ 0x0c50, 0xa887, 0x0004, 0x0c38, 0xa887, 0x0007, 0x0c20, 0x2091, ++ 0x8000, 0x0e04, 0x7a51, 0x0006, 0x0016, 0x2001, 0x8003, 0x0006, ++ 0x0804, 0x0d6e, 0x2001, 0x1833, 0x2004, 0x9005, 0x0005, 0x0005, ++ 0x00f6, 0x2079, 0x0300, 0x2001, 0x0200, 0x200c, 0xc1e5, 0xc1dc, ++ 0x2102, 0x2009, 0x0218, 0x210c, 0xd1ec, 0x1120, 0x080c, 0x152d, ++ 0x00fe, 0x0005, 0x2001, 0x020d, 0x2003, 0x0020, 0x781f, 0x0300, ++ 0x00fe, 0x0005, 0x781c, 0xd08c, 0x0904, 0x7ad2, 0x68bc, 0x90aa, ++ 0x0005, 0x0a04, 0x806b, 0x7d44, 0x7c40, 0xd59c, 0x190c, 0x0d65, ++ 0x9584, 0x00f6, 0x1508, 0x9484, 0x7000, 0x0138, 0x908a, 0x2000, ++ 0x1258, 0x9584, 0x0700, 0x8007, 0x04f0, 0x7000, 0x9084, 0xff00, ++ 0x9086, 0x8100, 0x0db0, 0x00b0, 0x9484, 0x0fff, 0x1130, 0x7000, ++ 0x9084, 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, 0xd5d3, 0x080c, ++ 0x7fb2, 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, 0x1118, 0x080c, ++ 0x800e, 0x19c8, 0xd5a4, 0x0148, 0x0046, 0x0056, 0x080c, 0x7b22, ++ 0x080c, 0x1fb7, 0x005e, 0x004e, 0x0020, 0x080c, 0xd5d3, 0x7817, ++ 0x0140, 0x080c, 0x70b7, 0x0168, 0x2001, 0x0111, 0x2004, 0xd08c, ++ 0x0140, 0x688f, 0x0000, 0x2001, 0x0110, 0x2003, 0x0008, 0x2003, ++ 0x0000, 0x0489, 0x0005, 0x0002, 0x7adf, 0x7dd4, 0x7adc, 0x7adc, ++ 0x7adc, 0x7adc, 0x7adc, 0x7adc, 0x7817, 0x0140, 0x0005, 0x7000, ++ 0x908c, 0xff00, 0x9194, 0xf000, 0x810f, 0x9484, 0x0fff, 0x688e, ++ 0x9286, 0x2000, 0x1150, 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, ++ 0x53ee, 0x0070, 0x080c, 0x7b42, 0x0058, 0x9286, 0x3000, 0x1118, ++ 0x080c, 0x7d11, 0x0028, 0x9286, 0x8000, 0x1110, 0x080c, 0x7ee8, ++ 0x7817, 0x0140, 0x0005, 0x2001, 0x1810, 0x2004, 0xd08c, 0x0178, ++ 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1148, 0x0026, 0x0036, ++ 0x2011, 0x8048, 0x2518, 0x080c, 0x48d8, 0x003e, 0x002e, 0x0005, ++ 0x0036, 0x0046, 0x0056, 0x00f6, 0x2079, 0x0200, 0x2019, 0xfffe, ++ 0x7c30, 0x0050, 0x0036, 0x0046, 0x0056, 0x00f6, 0x2079, 0x0200, ++ 0x7d44, 0x7c40, 0x2019, 0xffff, 0x2001, 0x1810, 0x2004, 0xd08c, ++ 0x0160, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1130, 0x0026, ++ 0x2011, 0x8048, 0x080c, 0x48d8, 0x002e, 0x00fe, 0x005e, 0x004e, ++ 0x003e, 0x0005, 0x00b6, 0x00c6, 0x7010, 0x9084, 0xff00, 0x8007, ++ 0x9096, 0x0001, 0x0120, 0x9096, 0x0023, 0x1904, 0x7ce2, 0x9186, ++ 0x0023, 0x15c0, 0x080c, 0x7f7d, 0x0904, 0x7ce2, 0x6120, 0x9186, ++ 0x0001, 0x0150, 0x9186, 0x0004, 0x0138, 0x9186, 0x0008, 0x0120, ++ 0x9186, 0x000a, 0x1904, 0x7ce2, 0x7124, 0x610a, 0x7030, 0x908e, ++ 0x0200, 0x1130, 0x2009, 0x0015, 0x080c, 0x9c85, 0x0804, 0x7ce2, ++ 0x908e, 0x0214, 0x0118, 0x908e, 0x0210, 0x1130, 0x2009, 0x0015, ++ 0x080c, 0x9c85, 0x0804, 0x7ce2, 0x908e, 0x0100, 0x1904, 0x7ce2, ++ 0x7034, 0x9005, 0x1904, 0x7ce2, 0x2009, 0x0016, 0x080c, 0x9c85, ++ 0x0804, 0x7ce2, 0x9186, 0x0022, 0x1904, 0x7ce2, 0x7030, 0x908e, ++ 0x0300, 0x1580, 0x68d8, 0xd0a4, 0x0528, 0xc0b5, 0x68da, 0x7100, ++ 0x918c, 0x00ff, 0x697a, 0x7004, 0x687e, 0x00f6, 0x2079, 0x0100, ++ 0x79e6, 0x78ea, 0x0006, 0x9084, 0x00ff, 0x0016, 0x2008, 0x080c, ++ 0x246d, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, 0x080c, 0x2424, ++ 0x695a, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, 0x2071, 0x1800, ++ 0x70b2, 0x00ee, 0x7034, 0x9005, 0x1904, 0x7ce2, 0x2009, 0x0017, ++ 0x0804, 0x7c92, 0x908e, 0x0400, 0x1190, 0x7034, 0x9005, 0x1904, ++ 0x7ce2, 0x080c, 0x70b7, 0x0120, 0x2009, 0x001d, 0x0804, 0x7c92, ++ 0x68d8, 0xc0a5, 0x68da, 0x2009, 0x0030, 0x0804, 0x7c92, 0x908e, ++ 0x0500, 0x1140, 0x7034, 0x9005, 0x1904, 0x7ce2, 0x2009, 0x0018, ++ 0x0804, 0x7c92, 0x908e, 0x2010, 0x1120, 0x2009, 0x0019, 0x0804, ++ 0x7c92, 0x908e, 0x2110, 0x1120, 0x2009, 0x001a, 0x0804, 0x7c92, ++ 0x908e, 0x5200, 0x1140, 0x7034, 0x9005, 0x1904, 0x7ce2, 0x2009, ++ 0x001b, 0x0804, 0x7c92, 0x908e, 0x5000, 0x1140, 0x7034, 0x9005, ++ 0x1904, 0x7ce2, 0x2009, 0x001c, 0x0804, 0x7c92, 0x908e, 0x1300, ++ 0x1120, 0x2009, 0x0034, 0x0804, 0x7c92, 0x908e, 0x1200, 0x1140, ++ 0x7034, 0x9005, 0x1904, 0x7ce2, 0x2009, 0x0024, 0x0804, 0x7c92, ++ 0x908c, 0xff00, 0x918e, 0x2400, 0x1170, 0x2009, 0x002d, 0x2001, ++ 0x1810, 0x2004, 0xd09c, 0x0904, 0x7c92, 0x080c, 0xc62f, 0x1904, ++ 0x7ce2, 0x0804, 0x7c90, 0x908c, 0xff00, 0x918e, 0x5300, 0x1120, ++ 0x2009, 0x002a, 0x0804, 0x7c92, 0x908e, 0x0f00, 0x1120, 0x2009, ++ 0x0020, 0x0804, 0x7c92, 0x908e, 0x6104, 0x1528, 0x2029, 0x0205, ++ 0x2011, 0x026d, 0x8208, 0x2204, 0x9082, 0x0004, 0x8004, 0x8004, ++ 0x20a8, 0x2011, 0x8015, 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, ++ 0x48d8, 0x004e, 0x8108, 0x0f04, 0x7c5e, 0x9186, 0x0280, 0x1d88, ++ 0x2504, 0x8000, 0x202a, 0x2009, 0x0260, 0x0c58, 0x202b, 0x0000, ++ 0x2009, 0x0023, 0x0478, 0x908e, 0x6000, 0x1118, 0x2009, 0x003f, ++ 0x0448, 0x908e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0418, 0x908e, ++ 0x1000, 0x1118, 0x2009, 0x004e, 0x00e8, 0x908e, 0x6300, 0x1118, ++ 0x2009, 0x004a, 0x00b8, 0x908c, 0xff00, 0x918e, 0x5600, 0x1118, ++ 0x2009, 0x004f, 0x0078, 0x908c, 0xff00, 0x918e, 0x5700, 0x1118, ++ 0x2009, 0x0050, 0x0038, 0x2009, 0x001d, 0x6838, 0xd0d4, 0x0110, ++ 0x2009, 0x004c, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x2424, 0x1904, 0x7ce5, 0x080c, 0x6210, 0x1904, 0x7ce5, ++ 0xbe12, 0xbd16, 0x001e, 0x0016, 0x080c, 0x70b7, 0x01c0, 0x68d8, ++ 0xd08c, 0x1148, 0x7000, 0x9084, 0x00ff, 0x1188, 0x7004, 0x9084, ++ 0xff00, 0x1168, 0x0040, 0x6878, 0x9606, 0x1148, 0x687c, 0x9506, ++ 0x9084, 0xff00, 0x1120, 0x9584, 0x00ff, 0xb886, 0x0080, 0xb884, ++ 0x9005, 0x1168, 0x9186, 0x0046, 0x1150, 0x6878, 0x9606, 0x1138, ++ 0x687c, 0x9506, 0x9084, 0xff00, 0x1110, 0x001e, 0x0098, 0x080c, ++ 0x9b91, 0x01a8, 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, ++ 0x001e, 0x9186, 0x004c, 0x1110, 0x6023, 0x000a, 0x0016, 0x001e, ++ 0x080c, 0x9c85, 0x00ce, 0x00be, 0x0005, 0x001e, 0x0cd8, 0x2001, ++ 0x180e, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x48d8, ++ 0x080c, 0x9c58, 0x0d90, 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, ++ 0x610a, 0x001e, 0x0016, 0x9186, 0x0017, 0x0118, 0x9186, 0x0030, ++ 0x1128, 0x6007, 0x0009, 0x6017, 0x2900, 0x0020, 0x6007, 0x0051, ++ 0x6017, 0x0000, 0x602f, 0x0009, 0x6003, 0x0001, 0x080c, 0x84d8, ++ 0x08a0, 0x080c, 0x3150, 0x1140, 0x7010, 0x9084, 0xff00, 0x8007, ++ 0x908e, 0x0008, 0x1108, 0x0009, 0x0005, 0x00b6, 0x00c6, 0x0046, ++ 0x7000, 0x908c, 0xff00, 0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, ++ 0x7f7d, 0x0904, 0x7d6c, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, ++ 0x1140, 0x7034, 0x9005, 0x15c0, 0x2009, 0x0015, 0x080c, 0x9c85, ++ 0x0498, 0x908e, 0x0100, 0x1580, 0x7034, 0x9005, 0x1568, 0x2009, ++ 0x0016, 0x080c, 0x9c85, 0x0440, 0x9186, 0x0032, 0x1528, 0x7030, ++ 0x908e, 0x1400, 0x1508, 0x2009, 0x0038, 0x0016, 0x2011, 0x0263, ++ 0x2204, 0x8211, 0x220c, 0x080c, 0x2424, 0x11a8, 0x080c, 0x6210, ++ 0x1190, 0xbe12, 0xbd16, 0x080c, 0x9b91, 0x0168, 0x2b08, 0x6112, ++ 0x080c, 0xbcdb, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, ++ 0x9c85, 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, ++ 0x00b6, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, ++ 0x11b8, 0x9592, 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, ++ 0x007f, 0x0804, 0x7dce, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, ++ 0x0804, 0x7dce, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, ++ 0x2011, 0x0000, 0x2019, 0x1836, 0x231c, 0xd3ac, 0x0130, 0x9026, ++ 0x20a9, 0x0800, 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, ++ 0x077f, 0x2071, 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, ++ 0x11d0, 0x9496, 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, ++ 0x2600, 0x9706, 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, ++ 0x9745, 0x1148, 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, ++ 0x94c6, 0x0080, 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x7da3, 0x82ff, ++ 0x1118, 0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, ++ 0x00ee, 0x004e, 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, ++ 0x9184, 0x000f, 0x0002, 0x7deb, 0x7deb, 0x7deb, 0x7f8f, 0x7deb, ++ 0x7dee, 0x7e13, 0x7e9c, 0x7deb, 0x7deb, 0x7deb, 0x7deb, 0x7deb, ++ 0x7deb, 0x7deb, 0x7deb, 0x7817, 0x0140, 0x0005, 0x00b6, 0x7110, ++ 0xd1bc, 0x01e8, 0x7120, 0x2160, 0x9c8c, 0x0003, 0x11c0, 0x9c8a, ++ 0x1ddc, 0x02a8, 0x6864, 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, ++ 0x6110, 0x2158, 0xb910, 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, ++ 0x1130, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, 0x9c85, 0x7817, ++ 0x0140, 0x00be, 0x0005, 0x00b6, 0x00c6, 0x9484, 0x0fff, 0x0904, ++ 0x7e78, 0x7110, 0xd1bc, 0x1904, 0x7e78, 0x7108, 0x700c, 0x2028, ++ 0x918c, 0x00ff, 0x2130, 0x9094, 0xff00, 0x15c8, 0x81ff, 0x15b8, ++ 0x9080, 0x318b, 0x200d, 0x918c, 0xff00, 0x810f, 0x2001, 0x0080, ++ 0x9106, 0x0904, 0x7e78, 0x9182, 0x0801, 0x1a04, 0x7e78, 0x9190, ++ 0x1000, 0x2204, 0x905d, 0x05e0, 0xbe12, 0xbd16, 0xb800, 0xd0ec, ++ 0x15b8, 0xba04, 0x9294, 0xff00, 0x9286, 0x0600, 0x1190, 0x080c, ++ 0x9b91, 0x0598, 0x2b08, 0x7028, 0x6052, 0x702c, 0x604e, 0x6112, ++ 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, 0x615e, 0x080c, 0xc893, ++ 0x00f8, 0x080c, 0x6667, 0x1138, 0xb807, 0x0606, 0x0c40, 0x190c, ++ 0x7d70, 0x11b0, 0x0880, 0x080c, 0x9b91, 0x2b08, 0x0188, 0x6112, ++ 0x6023, 0x0004, 0x7120, 0x610a, 0x9286, 0x0400, 0x1118, 0x6007, ++ 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x84d8, ++ 0x7817, 0x0140, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180e, 0x2004, ++ 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x48d8, 0x080c, 0x9c58, ++ 0x0d78, 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, ++ 0x615e, 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, ++ 0xa022, 0x080c, 0x84d1, 0x08e0, 0x00b6, 0x7110, 0xd1bc, 0x05d0, ++ 0x7020, 0x2060, 0x9c84, 0x0003, 0x15a8, 0x9c82, 0x1ddc, 0x0690, ++ 0x6864, 0x9c02, 0x1678, 0x9484, 0x0fff, 0x9082, 0x000c, 0x0650, ++ 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1510, ++ 0x700c, 0xb914, 0x9106, 0x11f0, 0x7124, 0x610a, 0x601c, 0xd0fc, ++ 0x11c8, 0x2001, 0x0271, 0x2004, 0x9005, 0x1180, 0x9484, 0x0fff, ++ 0x9082, 0x000c, 0x0158, 0x0066, 0x2031, 0x0100, 0xa001, 0xa001, ++ 0x8631, 0x1de0, 0x006e, 0x601c, 0xd0fc, 0x1120, 0x2009, 0x0045, ++ 0x080c, 0x9c85, 0x7817, 0x0140, 0x00be, 0x0005, 0x6120, 0x9186, ++ 0x0002, 0x0128, 0x9186, 0x0005, 0x0110, 0x9085, 0x0001, 0x0005, ++ 0x080c, 0x3150, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086, ++ 0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b, ++ 0x0005, 0x7eff, 0x7f00, 0x7eff, 0x7eff, 0x7f5f, 0x7f6e, 0x0005, ++ 0x00b6, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x7f5d, ++ 0x700c, 0x7108, 0x080c, 0x2424, 0x1904, 0x7f5d, 0x080c, 0x6210, ++ 0x1904, 0x7f5d, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, 0x080c, ++ 0x6667, 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, 0x7f7d, ++ 0x00ce, 0x05d8, 0x080c, 0x9b91, 0x2b08, 0x05b8, 0x6112, 0x080c, ++ 0xbcdb, 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, ++ 0x9c85, 0x0458, 0x080c, 0x6667, 0x0148, 0x9086, 0x0004, 0x0130, ++ 0x080c, 0x666f, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, 0x9b91, ++ 0x2b08, 0x01d8, 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0005, 0x7120, ++ 0x610a, 0x2009, 0x0088, 0x080c, 0x9c85, 0x0078, 0x080c, 0x9b91, ++ 0x2b08, 0x0158, 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0004, 0x7120, ++ 0x610a, 0x2009, 0x0001, 0x080c, 0x9c85, 0x00be, 0x0005, 0x7110, ++ 0xd1bc, 0x0158, 0x00d1, 0x0148, 0x080c, 0x7ede, 0x1130, 0x7124, ++ 0x610a, 0x2009, 0x0089, 0x080c, 0x9c85, 0x0005, 0x7110, 0xd1bc, ++ 0x0158, 0x0059, 0x0148, 0x080c, 0x7ede, 0x1130, 0x7124, 0x610a, ++ 0x2009, 0x008a, 0x080c, 0x9c85, 0x0005, 0x7020, 0x2060, 0x9c84, ++ 0x0003, 0x1158, 0x9c82, 0x1ddc, 0x0240, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x1218, 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x00b6, ++ 0x7110, 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84, 0x0003, 0x11b0, ++ 0x9c82, 0x1ddc, 0x0298, 0x6864, 0x9c02, 0x1280, 0x7008, 0x9084, ++ 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1140, 0x700c, 0xb914, ++ 0x9106, 0x1120, 0x2009, 0x0051, 0x080c, 0x9c85, 0x7817, 0x0140, ++ 0x00be, 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, ++ 0x0049, 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, ++ 0x0009, 0x0005, 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000, ++ 0x9086, 0xc000, 0x05c0, 0x080c, 0x9b91, 0x05a8, 0x0066, 0x00c6, ++ 0x0046, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2424, ++ 0x1590, 0x080c, 0x6210, 0x1578, 0xbe12, 0xbd16, 0x2b00, 0x004e, ++ 0x00ce, 0x6012, 0x080c, 0xbcdb, 0x080c, 0x1022, 0x0500, 0x2900, ++ 0x6062, 0x9006, 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b, ++ 0x20a9, 0x000e, 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98, ++ 0x4003, 0x006e, 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x84d8, 0x00fe, 0x009e, 0x00ce, 0x0005, 0x080c, ++ 0x9be7, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x00c6, 0x7000, ++ 0x908c, 0xff00, 0x9184, 0xf000, 0x810f, 0x9086, 0x2000, 0x1904, ++ 0x8065, 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111, 0x2004, 0x9005, ++ 0x1904, 0x8067, 0x7030, 0x908e, 0x0400, 0x0904, 0x8067, 0x908e, ++ 0x6000, 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e, 0x0300, 0x11d8, ++ 0x2009, 0x1836, 0x210c, 0xd18c, 0x1590, 0xd1a4, 0x1580, 0x080c, ++ 0x6625, 0x0558, 0x68ac, 0x9084, 0x00ff, 0x7100, 0x918c, 0x00ff, ++ 0x9106, 0x1518, 0x687c, 0x69ac, 0x918c, 0xff00, 0x9105, 0x7104, ++ 0x9106, 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c, 0xd1b4, 0x11a8, ++ 0x908e, 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0, 0x908e, 0x5000, ++ 0x09b8, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c, 0x7f7d, 0x0128, ++ 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006, 0x0010, 0x9085, ++ 0x0001, 0x00ce, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7800, 0xc0e5, ++ 0xc0cc, 0x7802, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x1800, 0x7834, ++ 0xd084, 0x1130, 0x2079, 0x0200, 0x7800, 0x9085, 0x1200, 0x7802, ++ 0x00fe, 0x0005, 0x00e6, 0x2071, 0x1800, 0x7034, 0xc084, 0x7036, ++ 0x00ee, 0x0005, 0x2071, 0x19d4, 0x7003, 0x0003, 0x700f, 0x0361, ++ 0x9006, 0x701a, 0x7072, 0x7012, 0x7017, 0x1ddc, 0x7007, 0x0000, ++ 0x7026, 0x702b, 0x8fd9, 0x7032, 0x7037, 0x9056, 0x703f, 0xffff, ++ 0x7042, 0x7047, 0x5224, 0x704a, 0x705b, 0x8226, 0x080c, 0x103b, ++ 0x090c, 0x0d65, 0x2900, 0x703a, 0xa867, 0x0003, 0xa86f, 0x0100, ++ 0xa8ab, 0xdcb0, 0x0005, 0x2071, 0x19d4, 0x1d04, 0x8148, 0x2091, ++ 0x6000, 0x700c, 0x8001, 0x700e, 0x1560, 0x2001, 0x1875, 0x2004, ++ 0xd0c4, 0x0158, 0x3a00, 0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, ++ 0x0001, 0x20d1, 0x0000, 0x080c, 0x0d65, 0x700f, 0x0361, 0x7007, ++ 0x0001, 0x0126, 0x2091, 0x8000, 0x2069, 0x1800, 0x69e8, 0xd1e4, ++ 0x1138, 0xd1dc, 0x1118, 0x080c, 0x8294, 0x0010, 0x080c, 0x826b, ++ 0x7040, 0x900d, 0x0148, 0x8109, 0x7142, 0x1130, 0x7044, 0x080f, ++ 0x0018, 0x0126, 0x2091, 0x8000, 0x7024, 0x900d, 0x0188, 0x7020, ++ 0x8001, 0x7022, 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0x9186, ++ 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, ++ 0x7030, 0x900d, 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, ++ 0x0009, 0x8109, 0x7132, 0x0128, 0x9184, 0x007f, 0x090c, 0x90de, ++ 0x0010, 0x7034, 0x080f, 0x703c, 0x9005, 0x0118, 0x0310, 0x8001, ++ 0x703e, 0x704c, 0x900d, 0x0168, 0x7048, 0x8001, 0x704a, 0x1148, ++ 0x704b, 0x0009, 0x8109, 0x714e, 0x1120, 0x7150, 0x714e, 0x7058, ++ 0x080f, 0x7018, 0x900d, 0x01d8, 0x0016, 0x7070, 0x900d, 0x0158, ++ 0x706c, 0x8001, 0x706e, 0x1138, 0x706f, 0x0009, 0x8109, 0x7172, ++ 0x1110, 0x7074, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a, 0x1138, ++ 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f, 0x012e, ++ 0x7004, 0x0002, 0x8170, 0x8171, 0x819b, 0x00e6, 0x2071, 0x19d4, ++ 0x7018, 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, ++ 0x0005, 0x00e6, 0x0006, 0x2071, 0x19d4, 0x701c, 0x9206, 0x1120, ++ 0x701a, 0x701e, 0x7072, 0x7076, 0x000e, 0x00ee, 0x0005, 0x00e6, ++ 0x2071, 0x19d4, 0xb888, 0x9102, 0x0208, 0xb98a, 0x00ee, 0x0005, ++ 0x0005, 0x00b6, 0x2031, 0x0010, 0x7110, 0x080c, 0x6270, 0x11a8, ++ 0xb888, 0x8001, 0x0290, 0xb88a, 0x1180, 0x0126, 0x2091, 0x8000, ++ 0x0066, 0xb8c0, 0x9005, 0x0138, 0x0026, 0xba3c, 0x0016, 0x080c, ++ 0x639b, 0x001e, 0x002e, 0x006e, 0x012e, 0x8108, 0x9182, 0x0800, ++ 0x1220, 0x8631, 0x0128, 0x7112, 0x0c00, 0x900e, 0x7007, 0x0002, ++ 0x7112, 0x00be, 0x0005, 0x2031, 0x0010, 0x7014, 0x2060, 0x0126, ++ 0x2091, 0x8000, 0x6048, 0x9005, 0x0128, 0x8001, 0x604a, 0x1110, ++ 0x080c, 0xbb5c, 0x6018, 0x9005, 0x0904, 0x81ed, 0x00f6, 0x2079, ++ 0x0300, 0x7918, 0xd1b4, 0x1904, 0x8200, 0x781b, 0x2020, 0xa001, ++ 0x7918, 0xd1b4, 0x0120, 0x781b, 0x2000, 0x0804, 0x8200, 0x8001, ++ 0x601a, 0x0106, 0x781b, 0x2000, 0xa001, 0x7918, 0xd1ac, 0x1dd0, ++ 0x010e, 0x00fe, 0x1510, 0x6120, 0x9186, 0x0003, 0x0118, 0x9186, ++ 0x0006, 0x11c8, 0x080c, 0xb847, 0x01b0, 0x6014, 0x2048, 0xa884, ++ 0x908a, 0x199a, 0x0280, 0x9082, 0x1999, 0xa886, 0x908a, 0x199a, ++ 0x0210, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, ++ 0x080c, 0xbf8d, 0x0110, 0x080c, 0xb545, 0x012e, 0x9c88, 0x001c, ++ 0x7116, 0x2001, 0x1819, 0x2004, 0x9102, 0x1228, 0x8631, 0x0138, ++ 0x2160, 0x0804, 0x819f, 0x7017, 0x1ddc, 0x7007, 0x0000, 0x0005, ++ 0x00fe, 0x0c58, 0x00e6, 0x2071, 0x19d4, 0x7027, 0x07d0, 0x7023, ++ 0x0009, 0x00ee, 0x0005, 0x2001, 0x19dd, 0x2003, 0x0000, 0x0005, ++ 0x00e6, 0x2071, 0x19d4, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, ++ 0x2011, 0x19e0, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0x19d4, ++ 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x0086, 0x0026, ++ 0x7054, 0x8000, 0x7056, 0x2001, 0x19e2, 0x2044, 0xa06c, 0x9086, ++ 0x0000, 0x0150, 0x7068, 0xa09a, 0x7064, 0xa096, 0x7060, 0xa092, ++ 0x705c, 0xa08e, 0x080c, 0x110c, 0x002e, 0x008e, 0x0005, 0x0006, ++ 0x0016, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, ++ 0x0156, 0x080c, 0x80b3, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x00be, 0x00ae, 0x009e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, ++ 0x19d4, 0x7172, 0x7276, 0x706f, 0x0009, 0x00ee, 0x0005, 0x00e6, ++ 0x0006, 0x2071, 0x19d4, 0x7074, 0x9206, 0x1110, 0x7072, 0x7076, ++ 0x000e, 0x00ee, 0x0005, 0x2069, 0x1800, 0x69e8, 0xd1e4, 0x1518, ++ 0x0026, 0xd1ec, 0x0140, 0x6a50, 0x6870, 0x9202, 0x0288, 0x8117, ++ 0x9294, 0x00c1, 0x0088, 0x9184, 0x0007, 0x01a0, 0x8109, 0x9184, ++ 0x0007, 0x0110, 0x69ea, 0x0070, 0x8107, 0x9084, 0x0007, 0x910d, ++ 0x8107, 0x9106, 0x9094, 0x00c1, 0x9184, 0xff3e, 0x9205, 0x68ea, ++ 0x080c, 0x0eed, 0x002e, 0x0005, 0x69e4, 0x9184, 0x003f, 0x05b8, ++ 0x8109, 0x9184, 0x003f, 0x01a8, 0x6a50, 0x6870, 0x9202, 0x0220, ++ 0xd1bc, 0x0168, 0xc1bc, 0x0018, 0xd1bc, 0x1148, 0xc1bd, 0x2110, ++ 0x00e6, 0x2071, 0x1800, 0x080c, 0x0f0f, 0x00ee, 0x0400, 0x69e6, ++ 0x00f0, 0x0026, 0x8107, 0x9094, 0x0007, 0x0128, 0x8001, 0x8007, ++ 0x9085, 0x0007, 0x0050, 0x2010, 0x8004, 0x8004, 0x8004, 0x9084, ++ 0x0007, 0x9205, 0x8007, 0x9085, 0x0028, 0x9086, 0x0040, 0x2010, ++ 0x00e6, 0x2071, 0x1800, 0x080c, 0x0f0f, 0x00ee, 0x002e, 0x0005, ++ 0x00c6, 0x2061, 0x1a3f, 0x00ce, 0x0005, 0x9184, 0x000f, 0x8003, ++ 0x8003, 0x8003, 0x9080, 0x1a3f, 0x2060, 0x0005, 0xa884, 0x908a, ++ 0x199a, 0x1638, 0x9005, 0x1150, 0x00c6, 0x2061, 0x1a3f, 0x6014, ++ 0x00ce, 0x9005, 0x1130, 0x2001, 0x001e, 0x0018, 0x908e, 0xffff, ++ 0x01b0, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, 0x908c, ++ 0x00c0, 0x918e, 0x00c0, 0x0904, 0x8395, 0xd0b4, 0x1168, 0xd0bc, ++ 0x1904, 0x836e, 0x2009, 0x0006, 0x080c, 0x83c2, 0x0005, 0x900e, ++ 0x0c60, 0x2001, 0x1999, 0x08b0, 0xd0fc, 0x05c8, 0x908c, 0x2023, ++ 0x1550, 0x87ff, 0x1540, 0x6124, 0x918c, 0x0500, 0x1520, 0x6100, ++ 0x918e, 0x0007, 0x1500, 0x2009, 0x1875, 0x210c, 0xd184, 0x11d8, ++ 0x6003, 0x0003, 0x6007, 0x0043, 0x6047, 0xb035, 0x080c, 0x1aa5, ++ 0xa87c, 0xc0dd, 0xa87e, 0x600f, 0x0000, 0x00f6, 0x2079, 0x0380, ++ 0x7818, 0xd0bc, 0x1de8, 0x7833, 0x0013, 0x2c00, 0x7836, 0x781b, ++ 0x8080, 0x00fe, 0x0005, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, ++ 0x1904, 0x83bc, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, 0x6024, ++ 0xd0d4, 0x11e8, 0x2009, 0x1875, 0x2104, 0xd084, 0x1138, 0x87ff, ++ 0x1120, 0x2009, 0x0043, 0x0804, 0x9c85, 0x0005, 0x87ff, 0x1de8, ++ 0x2009, 0x0042, 0x0804, 0x9c85, 0x6110, 0x00b6, 0x2158, 0xb900, ++ 0x00be, 0xd1ac, 0x0d20, 0x6024, 0xc0cd, 0x6026, 0x0c00, 0xc0d4, ++ 0x6026, 0xa890, 0x602e, 0xa88c, 0x6032, 0x08e0, 0xd0fc, 0x0160, ++ 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x83bc, 0x908c, ++ 0x2020, 0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, 0x2c78, 0x080c, ++ 0x164f, 0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, ++ 0x9c85, 0x0005, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, ++ 0x0d58, 0x6124, 0xc1cd, 0x6126, 0x0c38, 0xd0fc, 0x0188, 0x908c, ++ 0x2020, 0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, 0x908e, 0x0002, ++ 0x0148, 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x9c85, 0x0005, ++ 0x00b9, 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x9c85, ++ 0x0cb0, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d20, ++ 0x6124, 0xc1cd, 0x6126, 0x0c00, 0x2009, 0x0004, 0x0019, 0x0005, ++ 0x2009, 0x0001, 0x0096, 0x080c, 0xb847, 0x0518, 0x6014, 0x2048, ++ 0xa982, 0xa800, 0x6016, 0x9186, 0x0001, 0x1188, 0xa97c, 0x918c, ++ 0x8100, 0x918e, 0x8100, 0x1158, 0x00c6, 0x2061, 0x1a3f, 0x6200, ++ 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, 0x080c, ++ 0x67cb, 0x6014, 0x904d, 0x0076, 0x2039, 0x0000, 0x190c, 0x82de, ++ 0x007e, 0x009e, 0x0005, 0x0156, 0x00c6, 0x2061, 0x1a3f, 0x6000, ++ 0x81ff, 0x0110, 0x9205, 0x0008, 0x9204, 0x6002, 0x00ce, 0x015e, ++ 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808, 0x9005, 0x0120, 0x8001, ++ 0x680a, 0x9085, 0x0001, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, ++ 0x0046, 0x20a9, 0x0010, 0x9006, 0x8004, 0x8086, 0x818e, 0x1208, ++ 0x9200, 0x1f04, 0x840d, 0x8086, 0x818e, 0x004e, 0x003e, 0x012e, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x0076, 0x0156, 0x20a9, 0x0010, ++ 0x9005, 0x01c8, 0x911a, 0x12b8, 0x8213, 0x818d, 0x0228, 0x911a, ++ 0x1220, 0x1f04, 0x8424, 0x0028, 0x911a, 0x2308, 0x8210, 0x1f04, ++ 0x8424, 0x0006, 0x3200, 0x9084, 0xefff, 0x2080, 0x000e, 0x015e, ++ 0x007e, 0x012e, 0x0005, 0x0006, 0x3200, 0x9085, 0x1000, 0x0ca8, ++ 0x0126, 0x2091, 0x2800, 0x2079, 0x19b8, 0x012e, 0x00d6, 0x2069, ++ 0x19b8, 0x6803, 0x0005, 0x0156, 0x0146, 0x01d6, 0x20e9, 0x0000, ++ 0x2069, 0x0200, 0x080c, 0x97fa, 0x04a9, 0x080c, 0x97e5, 0x0491, ++ 0x080c, 0x97e8, 0x0479, 0x080c, 0x97eb, 0x0461, 0x080c, 0x97ee, ++ 0x0449, 0x080c, 0x97f1, 0x0431, 0x080c, 0x97f4, 0x0419, 0x080c, ++ 0x97f7, 0x0401, 0x01de, 0x014e, 0x015e, 0x6857, 0x0000, 0x00f6, ++ 0x2079, 0x0380, 0x00f9, 0x7807, 0x0003, 0x7803, 0x0000, 0x7803, ++ 0x0001, 0x2069, 0x0004, 0x2d04, 0x9084, 0xfffe, 0x9085, 0x8000, ++ 0x206a, 0x2069, 0x0100, 0x6828, 0x9084, 0xfffc, 0x682a, 0x00fe, ++ 0x00de, 0x0005, 0x20a9, 0x0020, 0x20a1, 0x0240, 0x2001, 0x0000, ++ 0x4004, 0x0005, 0x00c6, 0x7803, 0x0000, 0x9006, 0x7827, 0x0030, ++ 0x782b, 0x0400, 0x7827, 0x0031, 0x782b, 0x1abf, 0x781f, 0xff00, ++ 0x781b, 0xff00, 0x2061, 0x1ab4, 0x602f, 0x19b8, 0x6033, 0x1800, ++ 0x6037, 0x19d4, 0x603b, 0x1cf7, 0x603f, 0x1d07, 0x6042, 0x6047, ++ 0x1a8a, 0x00ce, 0x0005, 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, ++ 0x9086, 0x0001, 0x01b0, 0x00c6, 0x6146, 0x600f, 0x0000, 0x2c08, ++ 0x2061, 0x19b8, 0x602c, 0x8000, 0x602e, 0x601c, 0x9005, 0x0130, ++ 0x9080, 0x0003, 0x2102, 0x611e, 0x00ce, 0x0005, 0x6122, 0x611e, ++ 0x0cd8, 0x6146, 0x2c08, 0x2001, 0x0012, 0x080c, 0x98b9, 0x0005, ++ 0x0016, 0x2009, 0x8020, 0x6146, 0x2c08, 0x2001, 0x0382, 0x2004, ++ 0x9084, 0x0007, 0x9086, 0x0001, 0x1128, 0x2001, 0x0019, 0x080c, ++ 0x98b9, 0x0088, 0x00c6, 0x2061, 0x19b8, 0x602c, 0x8000, 0x602e, ++ 0x600c, 0x9005, 0x0128, 0x9080, 0x0003, 0x2102, 0x610e, 0x0010, ++ 0x6112, 0x610e, 0x00ce, 0x001e, 0x0005, 0x2001, 0x0382, 0x2004, ++ 0x9084, 0x0007, 0x9086, 0x0001, 0x0198, 0x00c6, 0x6146, 0x600f, ++ 0x0000, 0x2c08, 0x2061, 0x19b8, 0x6044, 0x9005, 0x0130, 0x9080, ++ 0x0003, 0x2102, 0x6146, 0x00ce, 0x0005, 0x614a, 0x6146, 0x0cd8, ++ 0x6146, 0x600f, 0x0000, 0x2c08, 0x2001, 0x0013, 0x080c, 0x98b9, ++ 0x0005, 0x6044, 0xd0dc, 0x0128, 0x9006, 0x7007, 0x0000, 0x700a, ++ 0x7032, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x00b6, 0x0096, ++ 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, ++ 0x902e, 0x2071, 0x19b8, 0x7648, 0x2660, 0x2678, 0x2091, 0x8000, ++ 0x8cff, 0x0904, 0x85a3, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, ++ 0x859e, 0x87ff, 0x0120, 0x605c, 0x9106, 0x1904, 0x859e, 0x704c, ++ 0x9c06, 0x1178, 0x0036, 0x2019, 0x0001, 0x080c, 0x9286, 0x703f, ++ 0x0000, 0x9006, 0x704e, 0x706a, 0x7052, 0x706e, 0x003e, 0x2029, ++ 0x0001, 0x080c, 0x8521, 0x7048, 0x9c36, 0x1110, 0x660c, 0x764a, ++ 0x7044, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7046, ++ 0x0010, 0x7047, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, ++ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xb847, 0x01c8, ++ 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1560, 0xa867, 0x0103, ++ 0xab7a, 0xa877, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c, 0xbb45, ++ 0x080c, 0xd51a, 0x080c, 0x6996, 0x007e, 0x003e, 0x001e, 0x080c, ++ 0xba36, 0x080c, 0x9c21, 0x00ce, 0x0804, 0x8540, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0x8540, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, ++ 0x005e, 0x006e, 0x007e, 0x009e, 0x00be, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, ++ 0x0076, 0x080c, 0xd51a, 0x080c, 0xd21e, 0x007e, 0x003e, 0x001e, ++ 0x08c0, 0x6020, 0x9086, 0x000a, 0x0918, 0x0800, 0x0006, 0x0066, ++ 0x0096, 0x00c6, 0x00d6, 0x00f6, 0x9036, 0x0126, 0x2091, 0x8000, ++ 0x2079, 0x19b8, 0x7848, 0x9065, 0x0904, 0x8625, 0x600c, 0x0006, ++ 0x600f, 0x0000, 0x784c, 0x9c06, 0x11a0, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0x9286, 0x783f, 0x0000, 0x901e, 0x7b4e, 0x7b6a, 0x7b52, ++ 0x7b6e, 0x003e, 0x000e, 0x9005, 0x1118, 0x600c, 0x600f, 0x0000, ++ 0x0006, 0x00e6, 0x2f70, 0x080c, 0x8521, 0x00ee, 0x080c, 0xb847, ++ 0x0520, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1580, 0x3e08, ++ 0x918e, 0x0002, 0x1188, 0x6010, 0x9005, 0x0170, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6048, 0x9005, 0x1198, 0x2001, ++ 0x1959, 0x2004, 0x604a, 0x0070, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x698a, 0x080c, 0xba36, 0x6044, 0xc0fc, 0x6046, ++ 0x080c, 0x9c21, 0x000e, 0x0804, 0x85d3, 0x7e4a, 0x7e46, 0x012e, ++ 0x00fe, 0x00de, 0x00ce, 0x009e, 0x006e, 0x000e, 0x0005, 0x6020, ++ 0x9086, 0x0006, 0x1118, 0x080c, 0xd21e, 0x0c38, 0x6020, 0x9086, ++ 0x000a, 0x09e0, 0x08c8, 0x0016, 0x0026, 0x0086, 0x9046, 0x00a9, ++ 0x080c, 0x872c, 0x008e, 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, ++ 0x2079, 0x19b8, 0x2091, 0x8000, 0x080c, 0x8775, 0x080c, 0x8809, ++ 0x080c, 0x63fd, 0x012e, 0x00fe, 0x0005, 0x00b6, 0x0096, 0x00f6, ++ 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x19b8, 0x7620, 0x2660, 0x2678, 0x8cff, 0x0904, ++ 0x86f1, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x86ec, 0x88ff, ++ 0x0120, 0x605c, 0x9106, 0x1904, 0x86ec, 0x7030, 0x9c06, 0x1570, ++ 0x2069, 0x0100, 0x6820, 0xd0a4, 0x1508, 0x080c, 0x820b, 0x080c, ++ 0x8fb7, 0x68c3, 0x0000, 0x080c, 0x94a2, 0x7033, 0x0000, 0x0036, ++ 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0040, 0x7008, 0xc0ad, ++ 0x700a, 0x6003, 0x0009, 0x630a, 0x0804, 0x86ec, 0x7020, 0x9c36, ++ 0x1110, 0x660c, 0x7622, 0x701c, 0x9c36, 0x1140, 0x2c00, 0x9f36, ++ 0x0118, 0x2f00, 0x701e, 0x0010, 0x701f, 0x0000, 0x660c, 0x0066, ++ 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, ++ 0x6044, 0xc0fc, 0x6046, 0x6014, 0x2048, 0x080c, 0xb847, 0x01e8, ++ 0x6020, 0x9086, 0x0003, 0x1580, 0x080c, 0xba5c, 0x1118, 0x080c, ++ 0xa58f, 0x0098, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, ++ 0x0036, 0x0086, 0x080c, 0xbb45, 0x080c, 0xd51a, 0x080c, 0x6996, ++ 0x008e, 0x003e, 0x001e, 0x080c, 0xba36, 0x080c, 0x9c21, 0x080c, ++ 0x9378, 0x00ce, 0x0804, 0x8666, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x8666, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x009e, 0x00be, 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, ++ 0x0016, 0x0036, 0x0086, 0x080c, 0xd51a, 0x080c, 0xd21e, 0x008e, ++ 0x003e, 0x001e, 0x08d0, 0x080c, 0xa58f, 0x6020, 0x9086, 0x0002, ++ 0x1160, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x0904, 0x86d2, ++ 0x9086, 0x008b, 0x0904, 0x86d2, 0x0840, 0x6020, 0x9086, 0x0005, ++ 0x1920, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x09c8, 0x9086, ++ 0x008b, 0x09b0, 0x0804, 0x86e5, 0x0006, 0x00f6, 0x00e6, 0x0096, ++ 0x00b6, 0x00c6, 0x0066, 0x0016, 0x0126, 0x2091, 0x8000, 0x9280, ++ 0x1000, 0x2004, 0x905d, 0x2079, 0x19b8, 0x9036, 0x7828, 0x2060, ++ 0x8cff, 0x0538, 0x6010, 0x9b06, 0x1500, 0x6043, 0xffff, 0x080c, ++ 0x9a84, 0x01d8, 0x610c, 0x0016, 0x080c, 0x9110, 0x6014, 0x2048, ++ 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, 0x0036, 0x0086, ++ 0x080c, 0xbb45, 0x080c, 0xd51a, 0x080c, 0x6996, 0x008e, 0x003e, ++ 0x001e, 0x080c, 0x9c21, 0x00ce, 0x08d8, 0x2c30, 0x600c, 0x2060, ++ 0x08b8, 0x080c, 0x641a, 0x012e, 0x001e, 0x006e, 0x00ce, 0x00be, ++ 0x009e, 0x00ee, 0x00fe, 0x000e, 0x0005, 0x0096, 0x0006, 0x0066, ++ 0x00c6, 0x00d6, 0x9036, 0x7820, 0x9065, 0x0904, 0x87dc, 0x600c, ++ 0x0006, 0x6044, 0xc0fc, 0x6046, 0x600f, 0x0000, 0x7830, 0x9c06, ++ 0x1588, 0x2069, 0x0100, 0x6820, 0xd0a4, 0x1508, 0x080c, 0x820b, ++ 0x080c, 0x8fb7, 0x68c3, 0x0000, 0x080c, 0x94a2, 0x7833, 0x0000, ++ 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, ++ 0x0100, 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x2069, 0x0100, ++ 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0058, 0x080c, ++ 0x661d, 0x1538, 0x6003, 0x0009, 0x630a, 0x7808, 0xc0ad, 0x780a, ++ 0x2c30, 0x00f8, 0x6014, 0x2048, 0x080c, 0xb845, 0x01b0, 0x6020, ++ 0x9086, 0x0003, 0x1508, 0x080c, 0xba5c, 0x1118, 0x080c, 0xa58f, ++ 0x0060, 0x080c, 0x661d, 0x1168, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x6996, 0x080c, 0xba36, 0x080c, 0x9c21, 0x080c, ++ 0x9378, 0x000e, 0x0804, 0x877c, 0x7e22, 0x7e1e, 0x00de, 0x00ce, ++ 0x006e, 0x000e, 0x009e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, ++ 0x080c, 0xd21e, 0x0c50, 0x080c, 0xa58f, 0x6020, 0x9086, 0x0002, ++ 0x1150, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x0990, 0x9086, ++ 0x008b, 0x0978, 0x08d0, 0x6020, 0x9086, 0x0005, 0x19b0, 0x6004, ++ 0x0006, 0x9086, 0x0085, 0x000e, 0x0d18, 0x9086, 0x008b, 0x0d00, ++ 0x0860, 0x0006, 0x0096, 0x00b6, 0x00c6, 0x0066, 0x9036, 0x7828, ++ 0x9065, 0x0510, 0x6010, 0x2058, 0x600c, 0x0006, 0x3e08, 0x918e, ++ 0x0002, 0x1118, 0xb800, 0xd0bc, 0x11a8, 0x6043, 0xffff, 0x080c, ++ 0x9a84, 0x0180, 0x610c, 0x080c, 0x9110, 0x6014, 0x2048, 0xa867, ++ 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x6996, 0x080c, 0x9c21, ++ 0x000e, 0x08f0, 0x2c30, 0x0ce0, 0x006e, 0x00ce, 0x00be, 0x009e, ++ 0x000e, 0x0005, 0x00e6, 0x00d6, 0x0096, 0x0066, 0x080c, 0x5dd6, ++ 0x11b0, 0x2071, 0x19b8, 0x7030, 0x9080, 0x0005, 0x2004, 0x904d, ++ 0x0170, 0xa878, 0x9606, 0x1158, 0x2071, 0x19b8, 0x7030, 0x9035, ++ 0x0130, 0x9080, 0x0005, 0x2004, 0x9906, 0x1108, 0x0029, 0x006e, ++ 0x009e, 0x00de, 0x00ee, 0x0005, 0x00c6, 0x2660, 0x6043, 0xffff, ++ 0x080c, 0x9a84, 0x0178, 0x080c, 0x9110, 0x6014, 0x2048, 0xa867, ++ 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xbb45, 0x080c, 0x6996, ++ 0x080c, 0x9c21, 0x00ce, 0x0005, 0x00b6, 0x00e6, 0x00c6, 0x080c, ++ 0x9926, 0x0106, 0x190c, 0x98c8, 0x2071, 0x0101, 0x2e04, 0xc0c4, ++ 0x2072, 0x6044, 0xd0fc, 0x1138, 0x010e, 0x190c, 0x98e4, 0x00ce, ++ 0x00ee, 0x00be, 0x0005, 0x2071, 0x19b8, 0x7030, 0x9005, 0x0da0, ++ 0x9c06, 0x190c, 0x0d65, 0x7036, 0x080c, 0x820b, 0x7004, 0x9084, ++ 0x0007, 0x0002, 0x88a4, 0x88a6, 0x88ad, 0x88b7, 0x88c5, 0x88a4, ++ 0x88ad, 0x88a2, 0x080c, 0x0d65, 0x0428, 0x0005, 0x080c, 0x9a6f, ++ 0x7007, 0x0000, 0x7033, 0x0000, 0x00e8, 0x0066, 0x9036, 0x080c, ++ 0x9110, 0x006e, 0x7007, 0x0000, 0x7033, 0x0000, 0x0098, 0x080c, ++ 0x9a5a, 0x0140, 0x080c, 0x9a6f, 0x0128, 0x0066, 0x9036, 0x080c, ++ 0x9110, 0x006e, 0x7033, 0x0000, 0x0028, 0x080c, 0x9a5a, 0x080c, ++ 0x94a2, 0x0000, 0x010e, 0x190c, 0x98e4, 0x00ce, 0x00ee, 0x00be, ++ 0x0005, 0x00d6, 0x00c6, 0x080c, 0x9926, 0x0106, 0x190c, 0x98c8, ++ 0x6044, 0xd0fc, 0x1130, 0x010e, 0x190c, 0x98e4, 0x00ce, 0x00de, ++ 0x0005, 0x2069, 0x19b8, 0x684c, 0x9005, 0x0da8, 0x9c06, 0x190c, ++ 0x0d65, 0x6852, 0x00e6, 0x2d70, 0x080c, 0x8521, 0x00ee, 0x080c, ++ 0x8218, 0x0016, 0x2009, 0x0040, 0x080c, 0x2052, 0x001e, 0x683c, ++ 0x9084, 0x0003, 0x0002, 0x8901, 0x8902, 0x8920, 0x88ff, 0x080c, ++ 0x0d65, 0x0460, 0x6868, 0x9086, 0x0001, 0x0190, 0x600c, 0x9015, ++ 0x0160, 0x6a4a, 0x600f, 0x0000, 0x6044, 0xc0fc, 0x6046, 0x9006, ++ 0x7042, 0x684e, 0x683f, 0x0000, 0x00c8, 0x684a, 0x6846, 0x0ca0, ++ 0x686b, 0x0000, 0x6848, 0x9065, 0x0d78, 0x6003, 0x0002, 0x0c60, ++ 0x9006, 0x686a, 0x6852, 0x686e, 0x600c, 0x9015, 0x0120, 0x6a4a, ++ 0x600f, 0x0000, 0x0018, 0x684e, 0x684a, 0x6846, 0x684f, 0x0000, ++ 0x010e, 0x190c, 0x98e4, 0x00ce, 0x00de, 0x0005, 0x0005, 0x6020, ++ 0x9084, 0x000f, 0x000b, 0x0005, 0x894c, 0x894f, 0x8da8, 0x8e37, ++ 0x894f, 0x8da8, 0x8e37, 0x894c, 0x894f, 0x894c, 0x894c, 0x894c, ++ 0x894c, 0x894c, 0x894c, 0x894c, 0x080c, 0x8874, 0x0005, 0x00b6, ++ 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, ++ 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0053, ++ 0x1a0c, 0x0d65, 0x6110, 0x2158, 0xb984, 0x2c78, 0x2061, 0x0100, ++ 0x619a, 0x908a, 0x0040, 0x1a04, 0x89bb, 0x005b, 0x00fe, 0x00ee, ++ 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, ++ 0x0005, 0x8b32, 0x8b6d, 0x8b96, 0x8c39, 0x8c5a, 0x8c60, 0x8c6d, ++ 0x8c75, 0x8c81, 0x8c87, 0x8c98, 0x8c87, 0x8cef, 0x8c75, 0x8cfb, ++ 0x8d01, 0x8c81, 0x8d01, 0x8d0d, 0x89b9, 0x89b9, 0x89b9, 0x89b9, ++ 0x89b9, 0x89b9, 0x89b9, 0x89b9, 0x89b9, 0x89b9, 0x89b9, 0x9131, ++ 0x9154, 0x9165, 0x9185, 0x91b7, 0x8c6d, 0x89b9, 0x8c6d, 0x8c87, ++ 0x89b9, 0x8b96, 0x8c39, 0x89b9, 0x9595, 0x8c87, 0x89b9, 0x95b1, ++ 0x8c87, 0x89b9, 0x8c81, 0x8b2c, 0x89dc, 0x89b9, 0x95cd, 0x963a, ++ 0x971a, 0x89b9, 0x9727, 0x8c6a, 0x9752, 0x89b9, 0x91c1, 0x975e, ++ 0x89b9, 0x080c, 0x0d65, 0x2100, 0x005b, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, 0x0005, ++ 0x89da, 0x89da, 0x89da, 0x8a03, 0x8aaf, 0x8aba, 0x89da, 0x89da, ++ 0x89da, 0x8b01, 0x8b0d, 0x8a1e, 0x89da, 0x8a39, 0x8a6d, 0x9ada, ++ 0x9b1f, 0x8c87, 0x080c, 0x0d65, 0x00d6, 0x0096, 0x080c, 0x8d20, ++ 0x7003, 0x2414, 0x7007, 0x0018, 0x700b, 0x0800, 0x7814, 0x2048, ++ 0xa83c, 0x700e, 0xa850, 0x7022, 0xa854, 0x7026, 0x60c3, 0x0018, ++ 0x080c, 0x8f87, 0x009e, 0x00de, 0x0005, 0x7810, 0x00b6, 0x2058, ++ 0xb8a0, 0x00be, 0x080c, 0x9b66, 0x1118, 0x9084, 0xff80, 0x0110, ++ 0x9085, 0x0001, 0x0005, 0x00d6, 0x0096, 0x080c, 0x8d20, 0x7003, ++ 0x0500, 0x7814, 0x2048, 0xa874, 0x700a, 0xa878, 0x700e, 0xa87c, ++ 0x7012, 0xa880, 0x7016, 0xa884, 0x701a, 0xa888, 0x701e, 0x60c3, ++ 0x0010, 0x080c, 0x8f87, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, ++ 0x080c, 0x8d20, 0x7003, 0x0500, 0x7814, 0x2048, 0xa8cc, 0x700a, ++ 0xa8d0, 0x700e, 0xa8d4, 0x7012, 0xa8d8, 0x7016, 0xa8dc, 0x701a, ++ 0xa8e0, 0x701e, 0x60c3, 0x0010, 0x080c, 0x8f87, 0x009e, 0x00de, ++ 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x8d20, ++ 0x20e9, 0x0000, 0x2001, 0x1974, 0x2003, 0x0000, 0x7814, 0x2048, ++ 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x001b, 0x2098, 0x2001, 0x1974, 0x0016, 0x200c, 0x2001, ++ 0x0001, 0x080c, 0x2037, 0x080c, 0xc591, 0x9006, 0x080c, 0x2037, ++ 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c28, 0x04d9, 0x080c, ++ 0x8f87, 0x012e, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x8d6b, 0x20e9, 0x0000, 0x2001, 0x1974, ++ 0x2003, 0x0000, 0x7814, 0x2048, 0xa86f, 0x0200, 0xa873, 0x0000, ++ 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x001b, 0x2098, 0x2001, 0x1974, 0x0016, 0x200c, 0x080c, ++ 0xc591, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c60, 0x0051, ++ 0x7814, 0x2048, 0x080c, 0x0fd4, 0x080c, 0x8f87, 0x012e, 0x009e, ++ 0x00de, 0x0005, 0x60c0, 0x8004, 0x9084, 0x0003, 0x9005, 0x0130, ++ 0x9082, 0x0004, 0x20a3, 0x0000, 0x8000, 0x1de0, 0x0005, 0x080c, ++ 0x8d20, 0x7003, 0x7800, 0x7808, 0x8007, 0x700a, 0x60c3, 0x0008, ++ 0x0804, 0x8f87, 0x00d6, 0x00e6, 0x080c, 0x8d6b, 0x7814, 0x9084, ++ 0xff00, 0x2073, 0x0200, 0x8e70, 0x8e70, 0x9095, 0x0010, 0x2272, ++ 0x8e70, 0x2073, 0x0034, 0x8e70, 0x2069, 0x1805, 0x20a9, 0x0004, ++ 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x8ad0, 0x2069, 0x1801, 0x20a9, ++ 0x0004, 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x8ad9, 0x2069, 0x1984, ++ 0x9086, 0xdf00, 0x0110, 0x2069, 0x199e, 0x20a9, 0x001a, 0x9e86, ++ 0x0260, 0x1148, 0x00c6, 0x2061, 0x0200, 0x6010, 0x8000, 0x6012, ++ 0x00ce, 0x2071, 0x0240, 0x2d04, 0x8007, 0x2072, 0x8d68, 0x8e70, ++ 0x1f04, 0x8ae7, 0x60c3, 0x004c, 0x080c, 0x8f87, 0x00ee, 0x00de, ++ 0x0005, 0x080c, 0x8d20, 0x7003, 0x6300, 0x7007, 0x0028, 0x7808, ++ 0x700e, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x00d6, 0x0026, 0x0016, ++ 0x080c, 0x8d6b, 0x7003, 0x0200, 0x7814, 0x700e, 0x00e6, 0x9ef0, ++ 0x0004, 0x2009, 0x0001, 0x2011, 0x000c, 0x2073, 0x0800, 0x8e70, ++ 0x2073, 0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x8f87, ++ 0x001e, 0x002e, 0x00de, 0x0005, 0x2001, 0x1817, 0x2004, 0x609a, ++ 0x0804, 0x8f87, 0x080c, 0x8d20, 0x7003, 0x5200, 0x2069, 0x1853, ++ 0x6804, 0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x2457, 0x710e, ++ 0x001e, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, ++ 0x0000, 0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, ++ 0x20a1, 0x0254, 0x4003, 0x080c, 0x9b66, 0x1120, 0xb8a0, 0x9082, ++ 0x007f, 0x0248, 0x2001, 0x181e, 0x2004, 0x7032, 0x2001, 0x181f, ++ 0x2004, 0x7036, 0x0030, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, ++ 0x7036, 0x60c3, 0x001c, 0x0804, 0x8f87, 0x080c, 0x8d20, 0x7003, ++ 0x0500, 0x080c, 0x9b66, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, ++ 0x2001, 0x181e, 0x2004, 0x700a, 0x2001, 0x181f, 0x2004, 0x700e, ++ 0x0030, 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, 0x700e, 0x20a9, ++ 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, ++ 0x0250, 0x4003, 0x60c3, 0x0010, 0x0804, 0x8f87, 0x080c, 0x8d20, ++ 0x9006, 0x080c, 0x6631, 0xb8a0, 0x9086, 0x007e, 0x1130, 0x7003, ++ 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, 0x904d, ++ 0x0120, 0x9006, 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, 0x0300, ++ 0xb8a0, 0x9086, 0x007e, 0x1904, 0x8c01, 0x00d6, 0x2069, 0x193d, ++ 0x2001, 0x1836, 0x2004, 0xd0a4, 0x0178, 0x6800, 0x700a, 0x6808, ++ 0x9084, 0x2000, 0x7012, 0x680c, 0x7016, 0x701f, 0x2710, 0x6818, ++ 0x7022, 0x681c, 0x7026, 0x0080, 0x6800, 0x700a, 0x6804, 0x700e, ++ 0x6808, 0x080c, 0x70b7, 0x1118, 0x9084, 0x37ff, 0x0010, 0x9084, ++ 0x3fff, 0x7012, 0x680c, 0x7016, 0x00de, 0x20a9, 0x0004, 0x20e1, ++ 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, ++ 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1, 0x025a, 0x4003, 0x00d6, ++ 0x080c, 0x97e5, 0x2069, 0x1945, 0x2071, 0x024e, 0x6800, 0xc0dd, ++ 0x7002, 0x080c, 0x5391, 0xd0e4, 0x0110, 0x680c, 0x700e, 0x00de, ++ 0x04a0, 0x2001, 0x1836, 0x2004, 0xd0a4, 0x0168, 0x0016, 0x2009, ++ 0x0002, 0x60e0, 0x9106, 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c, ++ 0x2498, 0x61e2, 0x001e, 0x20e1, 0x0001, 0x2099, 0x193d, 0x20e9, ++ 0x0000, 0x20a1, 0x024e, 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004, ++ 0x2099, 0x1805, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, ++ 0x1801, 0x20a1, 0x025a, 0x4003, 0x080c, 0x97e5, 0x20a1, 0x024e, ++ 0x20a9, 0x0008, 0x2099, 0x1945, 0x4003, 0x60c3, 0x0074, 0x0804, ++ 0x8f87, 0x080c, 0x8d20, 0x7003, 0x2010, 0x7007, 0x0014, 0x700b, ++ 0x0800, 0x700f, 0x2000, 0x9006, 0x00f6, 0x2079, 0x1853, 0x7904, ++ 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0x0010, 0x9085, 0x0010, ++ 0x9085, 0x0002, 0x00d6, 0x0804, 0x8cd0, 0x7026, 0x60c3, 0x0014, ++ 0x0804, 0x8f87, 0x080c, 0x8d20, 0x7003, 0x5000, 0x0804, 0x8bb0, ++ 0x080c, 0x8d20, 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3, 0x0014, ++ 0x0804, 0x8f87, 0x080c, 0x8d62, 0x0010, 0x080c, 0x8d6b, 0x7003, ++ 0x0200, 0x60c3, 0x0004, 0x0804, 0x8f87, 0x080c, 0x8d6b, 0x7003, ++ 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, ++ 0x8f87, 0x080c, 0x8d6b, 0x7003, 0x0200, 0x0804, 0x8bb0, 0x080c, ++ 0x8d6b, 0x7003, 0x0100, 0x782c, 0x9005, 0x0110, 0x700a, 0x0010, ++ 0x700b, 0x0003, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8f87, ++ 0x00d6, 0x080c, 0x8d6b, 0x7003, 0x0210, 0x7007, 0x0014, 0x700b, ++ 0x0800, 0xb894, 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184, 0x0030, ++ 0x0190, 0xb998, 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118, 0x700f, ++ 0x2100, 0x0058, 0x700f, 0x0100, 0x0040, 0x700f, 0x0400, 0x0028, ++ 0x700f, 0x0700, 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079, 0x1853, ++ 0x7904, 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0x0010, 0x9085, ++ 0x0010, 0x2009, 0x1875, 0x210c, 0xd184, 0x1110, 0x9085, 0x0002, ++ 0x0026, 0x2009, 0x1873, 0x210c, 0xd1e4, 0x0150, 0xc0c5, 0xbac4, ++ 0xd28c, 0x1108, 0xc0cd, 0x9094, 0x0030, 0x9296, 0x0010, 0x0140, ++ 0xd1ec, 0x0130, 0x9094, 0x0030, 0x9296, 0x0010, 0x0108, 0xc0bd, ++ 0x002e, 0x7026, 0x60c3, 0x0014, 0x00de, 0x0804, 0x8f87, 0x080c, ++ 0x8d6b, 0x7003, 0x0210, 0x7007, 0x0014, 0x700f, 0x0100, 0x60c3, ++ 0x0014, 0x0804, 0x8f87, 0x080c, 0x8d6b, 0x7003, 0x0200, 0x0804, ++ 0x8b36, 0x080c, 0x8d6b, 0x7003, 0x0100, 0x700b, 0x0003, 0x700f, ++ 0x2a00, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x080c, 0x8d6b, 0x7003, ++ 0x0100, 0x700b, 0x000b, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x0026, ++ 0x00d6, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0040, ++ 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, ++ 0x080c, 0x97fa, 0xb810, 0x9305, 0x7002, 0xb814, 0x7006, 0x2069, ++ 0x1800, 0x6878, 0x700a, 0x687c, 0x700e, 0x9485, 0x0029, 0x7012, ++ 0x004e, 0x003e, 0x00de, 0x080c, 0x8f7b, 0x721a, 0x9f95, 0x0000, ++ 0x7222, 0x7027, 0xffff, 0x2071, 0x024c, 0x002e, 0x0005, 0x0026, ++ 0x080c, 0x97fa, 0x7003, 0x02ff, 0x7007, 0xfffc, 0x00d6, 0x2069, ++ 0x1800, 0x6878, 0x700a, 0x687c, 0x700e, 0x00de, 0x7013, 0x2029, ++ 0x0c10, 0x7003, 0x0100, 0x7007, 0x0000, 0x700b, 0xfc02, 0x700f, ++ 0x0000, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3300, ++ 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, ++ 0x2300, 0x2021, 0x0100, 0x080c, 0x97fa, 0xb810, 0x9305, 0x7002, ++ 0xb814, 0x7006, 0x2069, 0x1800, 0xb810, 0x9005, 0x1140, 0xb814, ++ 0x9005, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0020, 0x6878, ++ 0x700a, 0x687c, 0x700e, 0x0000, 0x9485, 0x0098, 0x7012, 0x004e, ++ 0x003e, 0x00de, 0x080c, 0x8f7b, 0x721a, 0x7a08, 0x7222, 0x2f10, ++ 0x7226, 0x2071, 0x024c, 0x002e, 0x0005, 0x080c, 0x8f7b, 0x721a, ++ 0x7a08, 0x7222, 0x7814, 0x7026, 0x2071, 0x024c, 0x002e, 0x0005, ++ 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, ++ 0x0240, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d65, 0x908a, 0x0092, ++ 0x1a0c, 0x0d65, 0x6110, 0x2158, 0xb984, 0x2c78, 0x2061, 0x0100, ++ 0x619a, 0x9082, 0x0085, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x00be, 0x0005, 0x8dd9, 0x8de8, 0x8df3, 0x8dd7, 0x8dd7, 0x8dd7, ++ 0x8dd9, 0x8dd7, 0x8dd7, 0x8dd7, 0x8dd7, 0x8dd7, 0x8dd7, 0x080c, ++ 0x0d65, 0x0411, 0x60c3, 0x0000, 0x0026, 0x080c, 0x27a2, 0x0228, ++ 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, 0x002e, 0x0804, 0x8f87, ++ 0x0431, 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3, ++ 0x000c, 0x0804, 0x8f87, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300, ++ 0x60c3, 0x0004, 0x0804, 0x8f87, 0x0026, 0x080c, 0x97fa, 0xb810, ++ 0x9085, 0x8100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, ++ 0x700a, 0x687c, 0x700e, 0x7013, 0x0009, 0x0804, 0x8d3b, 0x0026, ++ 0x080c, 0x97fa, 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006, ++ 0x2069, 0x1800, 0x6878, 0x700a, 0x687c, 0x700e, 0x2001, 0x0099, ++ 0x7012, 0x0804, 0x8d9d, 0x0026, 0x080c, 0x97fa, 0xb810, 0x9085, ++ 0x8500, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6878, 0x700a, ++ 0x687c, 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, 0x8d9d, 0x00b6, ++ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071, ++ 0x0240, 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0d65, 0x908a, 0x0057, ++ 0x1a0c, 0x0d65, 0x7910, 0x2158, 0xb984, 0x2061, 0x0100, 0x619a, ++ 0x9082, 0x0040, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x0005, 0x8e6c, 0x8e6c, 0x8e6c, 0x8e92, 0x8e6c, 0x8e6c, 0x8e6c, ++ 0x8e6c, 0x8e6c, 0x8e6c, 0x8e6c, 0x9355, 0x935d, 0x9365, 0x936d, ++ 0x8e6c, 0x8e6c, 0x8e6c, 0x934d, 0x080c, 0x0d65, 0x6813, 0x0008, ++ 0xba8c, 0x8210, 0xb8c4, 0xd084, 0x0128, 0x7a4e, 0x7b14, 0x7b52, ++ 0x722e, 0x732a, 0x9294, 0x00ff, 0xba8e, 0x8217, 0x721a, 0xba10, ++ 0x9295, 0x0600, 0x7202, 0xba14, 0x7206, 0x2069, 0x1800, 0x6a78, ++ 0x720a, 0x6a7c, 0x720e, 0x7013, 0x0829, 0x2f10, 0x7222, 0x7027, ++ 0xffff, 0x0005, 0x0016, 0x7814, 0x9084, 0x0700, 0x8007, 0x0013, ++ 0x001e, 0x0005, 0x8ea2, 0x8ea2, 0x8ea4, 0x8ea2, 0x8ea2, 0x8ea2, ++ 0x8ebe, 0x8ea2, 0x080c, 0x0d65, 0x7914, 0x918c, 0x08ff, 0x918d, ++ 0xf600, 0x7916, 0x2009, 0x0003, 0x00b9, 0x2069, 0x1853, 0x6804, ++ 0xd0bc, 0x0130, 0x682c, 0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, ++ 0x7033, 0x3f00, 0x60c3, 0x0001, 0x0804, 0x8f87, 0x2009, 0x0003, ++ 0x0019, 0x7033, 0x7f00, 0x0cb0, 0x0016, 0x080c, 0x97fa, 0x001e, ++ 0xb810, 0x9085, 0x0100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, ++ 0x6a78, 0x720a, 0x6a7c, 0x720e, 0x7013, 0x0888, 0x918d, 0x0008, ++ 0x7116, 0x080c, 0x8f7b, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, ++ 0x0005, 0x00b6, 0x0096, 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, ++ 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, 0x7810, 0x2058, 0xb8a0, ++ 0x2028, 0xb910, 0xba14, 0x7378, 0x747c, 0x7820, 0x0002, 0x8f06, ++ 0x8f06, 0x8f06, 0x8f06, 0x8f06, 0x8f06, 0x8f06, 0x8f06, 0x8f06, ++ 0x8f06, 0x8f08, 0x8f06, 0x8f06, 0x8f06, 0x8f06, 0x080c, 0x0d65, ++ 0xb884, 0x609e, 0x7814, 0x2048, 0xa87c, 0xd0fc, 0x0558, 0xaf90, ++ 0x9784, 0xff00, 0x9105, 0x6062, 0x873f, 0x9784, 0xff00, 0x0006, ++ 0x7814, 0x2048, 0xa878, 0xc0fc, 0x9005, 0x000e, 0x1160, 0xaf94, ++ 0x87ff, 0x0198, 0x2039, 0x0098, 0x9705, 0x6072, 0x7808, 0x6082, ++ 0x2f00, 0x6086, 0x0038, 0x9185, 0x2200, 0x6062, 0x6073, 0x0129, ++ 0x6077, 0x0000, 0xb884, 0x609e, 0x0050, 0x2039, 0x0029, 0x9705, ++ 0x6072, 0x0cc0, 0x9185, 0x0200, 0x6062, 0x6073, 0x2029, 0xa87c, ++ 0xd0fc, 0x0118, 0xaf94, 0x87ff, 0x1120, 0x2f00, 0x6082, 0x7808, ++ 0x6086, 0x6266, 0x636a, 0x646e, 0x6077, 0x0000, 0xb88c, 0x8000, ++ 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f, 0x0000, 0xa848, ++ 0x608a, 0xa844, 0x608e, 0xa838, 0x60c6, 0xa834, 0x60ca, 0xb86c, ++ 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x080c, 0x97da, 0x2009, ++ 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, ++ 0x080c, 0x8210, 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, ++ 0x009e, 0x00be, 0x0005, 0x7a40, 0x9294, 0x00ff, 0x8217, 0x0005, ++ 0x00d6, 0x2069, 0x19b8, 0x686b, 0x0001, 0x00de, 0x0005, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x00f1, 0x080c, 0x8202, 0x0005, 0x0016, ++ 0x2001, 0x180c, 0x200c, 0x9184, 0x0600, 0x9086, 0x0600, 0x0128, ++ 0x0089, 0x080c, 0x8202, 0x001e, 0x0005, 0xc1e5, 0x2001, 0x180c, ++ 0x2102, 0x2001, 0x19b9, 0x2003, 0x0000, 0x2001, 0x19c4, 0x2003, ++ 0x0000, 0x0c88, 0x0006, 0x0016, 0x0026, 0x2009, 0x1804, 0x2011, ++ 0x0009, 0x080c, 0x287c, 0x002e, 0x001e, 0x000e, 0x0005, 0x0016, ++ 0x00c6, 0x0006, 0x080c, 0x9926, 0x0106, 0x190c, 0x98c8, 0x2061, ++ 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x0016, 0x0026, 0x2009, 0x1804, ++ 0x2011, 0x0008, 0x080c, 0x287c, 0x002e, 0x001e, 0x010e, 0x190c, ++ 0x98e4, 0x000e, 0xa001, 0xa001, 0xa001, 0x61a6, 0x00ce, 0x001e, ++ 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x70b7, 0x1510, 0x2001, 0x19dd, 0x2004, 0x9005, ++ 0x1904, 0x9038, 0x080c, 0x7158, 0x11a8, 0x2069, 0x0380, 0x6843, ++ 0x0101, 0x6844, 0xd084, 0x1de8, 0x2061, 0x0100, 0x6020, 0xd0b4, ++ 0x1120, 0x6024, 0xd084, 0x090c, 0x0d65, 0x6843, 0x0100, 0x080c, ++ 0x8202, 0x04b0, 0x00c6, 0x2061, 0x19b8, 0x00f0, 0x6904, 0x9194, ++ 0x4000, 0x0598, 0x080c, 0x8fb7, 0x080c, 0x2843, 0x00c6, 0x2061, ++ 0x19b8, 0x6134, 0x9192, 0x0008, 0x1278, 0x8108, 0x6136, 0x080c, ++ 0x98c8, 0x6130, 0x080c, 0x98e4, 0x00ce, 0x81ff, 0x01c8, 0x080c, ++ 0x8202, 0x080c, 0x8faa, 0x00a0, 0x080c, 0x98c8, 0x6130, 0x91e5, ++ 0x0000, 0x0150, 0x080c, 0xd610, 0x080c, 0x820b, 0x6003, 0x0001, ++ 0x2009, 0x0014, 0x080c, 0x9c85, 0x080c, 0x98e4, 0x00ce, 0x0000, ++ 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0x19dd, 0x2004, ++ 0x9005, 0x1db0, 0x00c6, 0x2061, 0x19b8, 0x6134, 0x9192, 0x0003, ++ 0x1ad8, 0x8108, 0x6136, 0x00ce, 0x080c, 0x8202, 0x080c, 0x5b97, ++ 0x2009, 0x1852, 0x2114, 0x8210, 0x220a, 0x0c10, 0x0096, 0x00c6, ++ 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, 0x8218, 0x080c, 0x98c8, ++ 0x2001, 0x0387, 0x2003, 0x0202, 0x2071, 0x19b8, 0x714c, 0x81ff, ++ 0x0904, 0x90cc, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x70b7, ++ 0x11c0, 0x0036, 0x2019, 0x0002, 0x080c, 0x9286, 0x003e, 0x714c, ++ 0x2160, 0x080c, 0xd610, 0x2009, 0x004a, 0x6003, 0x0003, 0x080c, ++ 0x9c85, 0x2001, 0x0386, 0x2003, 0x5040, 0x080c, 0x7158, 0x0804, ++ 0x90cc, 0x6904, 0xd1f4, 0x0904, 0x90d9, 0x080c, 0x2843, 0x00c6, ++ 0x704c, 0x9065, 0x090c, 0x0d65, 0x6020, 0x00ce, 0x9086, 0x0006, ++ 0x1518, 0x61c8, 0x60c4, 0x9105, 0x11f8, 0x2009, 0x180c, 0x2104, ++ 0xd0d4, 0x01d0, 0x6214, 0x9294, 0x1800, 0x1128, 0x6224, 0x9294, ++ 0x0002, 0x1510, 0x0010, 0xc0d4, 0x200a, 0x6014, 0x9084, 0xe7fd, ++ 0x9085, 0x0010, 0x6016, 0x704c, 0x2060, 0x080c, 0x88d1, 0x2009, ++ 0x0049, 0x080c, 0x9c85, 0x0080, 0x0036, 0x2019, 0x0001, 0x080c, ++ 0x9286, 0x003e, 0x714c, 0x2160, 0x080c, 0xd610, 0x2009, 0x004a, ++ 0x6003, 0x0003, 0x080c, 0x9c85, 0x2001, 0x0387, 0x2003, 0x0200, ++ 0x080c, 0x98e4, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x009e, ++ 0x0005, 0xd1ec, 0x1904, 0x908d, 0x0804, 0x908f, 0x0026, 0x00e6, ++ 0x2071, 0x19b8, 0x706c, 0xd084, 0x01d0, 0xc084, 0x706e, 0x714c, ++ 0x81ff, 0x01a8, 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e, ++ 0x0006, 0x1138, 0x2009, 0x1984, 0x2011, 0x0012, 0x080c, 0x287c, ++ 0x0030, 0x2009, 0x1984, 0x2011, 0x0016, 0x080c, 0x287c, 0x00ee, ++ 0x002e, 0x0005, 0x9036, 0x2001, 0x19c2, 0x2004, 0x9005, 0x0128, ++ 0x9c06, 0x0128, 0x2c30, 0x600c, 0x0cc8, 0x9085, 0x0001, 0x0005, ++ 0x00f6, 0x2079, 0x19b8, 0x610c, 0x9006, 0x600e, 0x6044, 0xc0fc, ++ 0x6046, 0x86ff, 0x1140, 0x7824, 0x9c06, 0x1118, 0x7826, 0x782a, ++ 0x0050, 0x792a, 0x0040, 0x00c6, 0x2660, 0x610e, 0x00ce, 0x7824, ++ 0x9c06, 0x1108, 0x7e26, 0x080c, 0x9378, 0x080c, 0xba36, 0x00fe, ++ 0x0005, 0x080c, 0x8d20, 0x7003, 0x1200, 0x7838, 0x7012, 0x783c, ++ 0x7016, 0x00c6, 0x7820, 0x9086, 0x0004, 0x1148, 0x7810, 0x9005, ++ 0x0130, 0x00b6, 0x2058, 0xb810, 0xb914, 0x00be, 0x0020, 0x2061, ++ 0x1800, 0x6078, 0x617c, 0x9084, 0x00ff, 0x700a, 0x710e, 0x00ce, ++ 0x60c3, 0x002c, 0x0804, 0x8f87, 0x080c, 0x8d20, 0x7003, 0x0f00, ++ 0x7808, 0xd09c, 0x0128, 0xb810, 0x9084, 0x00ff, 0x700a, 0xb814, ++ 0x700e, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x0156, 0x080c, 0x8d6b, ++ 0x7003, 0x0200, 0x2011, 0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, ++ 0x2011, 0x1840, 0x2019, 0x1841, 0x9ef0, 0x0002, 0x2376, 0x8e70, ++ 0x2276, 0x8e70, 0x9398, 0x0002, 0x9290, 0x0002, 0x1f04, 0x9176, ++ 0x60c3, 0x001c, 0x015e, 0x0804, 0x8f87, 0x0016, 0x0026, 0x080c, ++ 0x8d47, 0x080c, 0x8d59, 0x9e80, 0x0004, 0x20e9, 0x0000, 0x20a0, ++ 0x7814, 0x0096, 0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, ++ 0x9080, 0x0021, 0x2098, 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, ++ 0x9192, 0x0010, 0x1250, 0x4003, 0x9080, 0x0004, 0x8003, 0x60c2, ++ 0x080c, 0x8f87, 0x002e, 0x001e, 0x0005, 0x20a9, 0x0010, 0x4003, ++ 0x080c, 0x97e5, 0x20a1, 0x0240, 0x22a8, 0x4003, 0x0c68, 0x080c, ++ 0x8d20, 0x7003, 0x6200, 0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, ++ 0x8f87, 0x0016, 0x0026, 0x080c, 0x8d20, 0x20e9, 0x0000, 0x20a1, ++ 0x024c, 0x7814, 0x0096, 0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, ++ 0xa85c, 0x9080, 0x0023, 0x2098, 0x009e, 0x7808, 0x9088, 0x0002, ++ 0x21a8, 0x4003, 0x8003, 0x60c2, 0x080c, 0x8f87, 0x002e, 0x001e, ++ 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x19b8, 0x7010, 0x2060, 0x8cff, 0x0188, 0x080c, 0xba5c, 0x1110, ++ 0x080c, 0xa58f, 0x600c, 0x0006, 0x080c, 0xbcd3, 0x600f, 0x0000, ++ 0x080c, 0x9be7, 0x080c, 0x9378, 0x00ce, 0x0c68, 0x2c00, 0x7012, ++ 0x700e, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0156, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0016, 0x0006, ++ 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, 0xe7ff, 0x2102, ++ 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19b8, 0x7030, 0x2060, ++ 0x8cff, 0x0548, 0x080c, 0x8fb7, 0x6ac0, 0x68c3, 0x0000, 0x080c, ++ 0x820b, 0x00c6, 0x2061, 0x0100, 0x080c, 0x97fe, 0x00ce, 0x20a9, ++ 0x01f4, 0x04b1, 0x080c, 0x8874, 0x6044, 0xd0ac, 0x1128, 0x2001, ++ 0x1959, 0x2004, 0x604a, 0x0020, 0x2009, 0x0013, 0x080c, 0x9c85, ++ 0x000e, 0x001e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, ++ 0x015e, 0x012e, 0x0005, 0x2001, 0x1800, 0x2004, 0x9096, 0x0001, ++ 0x0d78, 0x9096, 0x0004, 0x0d60, 0x080c, 0x820b, 0x6814, 0x9084, ++ 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, ++ 0x2011, 0x5b41, 0x080c, 0x8159, 0x20a9, 0x01f4, 0x0009, 0x08c0, ++ 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000, ++ 0x190c, 0x2843, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, ++ 0x1f04, 0x9268, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x0005, 0x0126, 0x0156, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0016, 0x0006, ++ 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, 0xdbff, 0x2102, ++ 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x0380, 0x701c, 0x0006, ++ 0x701f, 0x0202, 0x2071, 0x19b8, 0x704c, 0x2060, 0x8cff, 0x0904, ++ 0x9327, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, 0x0002, 0x0904, ++ 0x9327, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, ++ 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x8218, 0x080c, 0x1c7a, ++ 0x0046, 0x2009, 0x00a5, 0x080c, 0x0e3d, 0x2021, 0x0169, 0x2404, ++ 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, 0x95f5, 0x68c6, ++ 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, 0x2071, 0x19b8, ++ 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, 0x782b, 0x0008, ++ 0x7057, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, 0x1128, 0x7884, ++ 0x9005, 0x1110, 0x7887, 0x0001, 0x0016, 0x2009, 0x0040, 0x080c, ++ 0x2052, 0x001e, 0x2009, 0x0000, 0x080c, 0x0e3d, 0x004e, 0x20a9, ++ 0x03e8, 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, 0x9084, ++ 0x4000, 0x190c, 0x2843, 0x0090, 0xd08c, 0x0118, 0x6827, 0x0002, ++ 0x0010, 0x1f04, 0x92f9, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, ++ 0x0100, 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x6827, 0x4000, ++ 0x6824, 0x83ff, 0x1160, 0x2009, 0x0049, 0x080c, 0x88d1, 0x6044, ++ 0xd0ac, 0x1118, 0x6003, 0x0002, 0x0010, 0x080c, 0x9c85, 0x000e, ++ 0x2071, 0x0380, 0xd08c, 0x1110, 0x701f, 0x0200, 0x000e, 0x001e, ++ 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, ++ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x19b8, 0x6a06, ++ 0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, ++ 0x19b8, 0x6a3e, 0x012e, 0x00de, 0x0005, 0x080c, 0x8e6e, 0x785c, ++ 0x7032, 0x7042, 0x7047, 0x1000, 0x00f8, 0x080c, 0x8e6e, 0x785c, ++ 0x7032, 0x7042, 0x7047, 0x4000, 0x00b8, 0x080c, 0x8e6e, 0x785c, ++ 0x7032, 0x7042, 0x7047, 0x2000, 0x0078, 0x080c, 0x8e6e, 0x785c, ++ 0x7032, 0x7042, 0x7047, 0x0400, 0x0038, 0x080c, 0x8e6e, 0x785c, ++ 0x7032, 0x7042, 0x7047, 0x0200, 0x60c3, 0x0020, 0x0804, 0x8f87, ++ 0x00e6, 0x2071, 0x19b8, 0x702c, 0x9005, 0x0110, 0x8001, 0x702e, ++ 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b8, 0x7620, 0x2660, ++ 0x2678, 0x2039, 0x0001, 0x87ff, 0x0904, 0x941d, 0x8cff, 0x0904, ++ 0x941d, 0x6020, 0x9086, 0x0006, 0x1904, 0x9418, 0x88ff, 0x0138, ++ 0x2800, 0x9c06, 0x1904, 0x9418, 0x2039, 0x0000, 0x0050, 0x6010, ++ 0x9b06, 0x1904, 0x9418, 0x85ff, 0x0120, 0x605c, 0x9106, 0x1904, ++ 0x9418, 0x7030, 0x9c06, 0x15b0, 0x2069, 0x0100, 0x68c0, 0x9005, ++ 0x1160, 0x6824, 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x820b, ++ 0x080c, 0x94a2, 0x7033, 0x0000, 0x0428, 0x080c, 0x820b, 0x6820, ++ 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, ++ 0x080c, 0x94a2, 0x7033, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, ++ 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2833, 0x9006, ++ 0x080c, 0x2833, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, ++ 0x0001, 0x003e, 0x7020, 0x9c36, 0x1110, 0x660c, 0x7622, 0x701c, ++ 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x701e, 0x0010, ++ 0x701f, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, ++ 0x0008, 0x2678, 0x89ff, 0x1168, 0x600f, 0x0000, 0x6014, 0x0096, ++ 0x2048, 0x080c, 0xb845, 0x0110, 0x080c, 0xd21e, 0x009e, 0x080c, ++ 0x9c21, 0x080c, 0x9378, 0x88ff, 0x1190, 0x00ce, 0x0804, 0x9393, ++ 0x2c78, 0x600c, 0x2060, 0x0804, 0x9393, 0x9006, 0x012e, 0x000e, ++ 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, ++ 0x0000, 0x00ce, 0x98c5, 0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, ++ 0x0096, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x19b8, 0x7648, 0x2660, 0x2678, 0x8cff, 0x0904, 0x9491, ++ 0x6020, 0x9086, 0x0006, 0x1904, 0x948c, 0x87ff, 0x0128, 0x2700, ++ 0x9c06, 0x1904, 0x948c, 0x0040, 0x6010, 0x9b06, 0x15e8, 0x85ff, ++ 0x0118, 0x605c, 0x9106, 0x15c0, 0x704c, 0x9c06, 0x1168, 0x0036, ++ 0x2019, 0x0001, 0x080c, 0x9286, 0x703f, 0x0000, 0x9006, 0x704e, ++ 0x706a, 0x7052, 0x706e, 0x003e, 0x7048, 0x9c36, 0x1110, 0x660c, ++ 0x764a, 0x7044, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, ++ 0x7046, 0x0010, 0x7047, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, ++ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, ++ 0x080c, 0xb845, 0x0110, 0x080c, 0xd21e, 0x080c, 0x9c21, 0x87ff, ++ 0x1198, 0x00ce, 0x0804, 0x943d, 0x2c78, 0x600c, 0x2060, 0x0804, ++ 0x943d, 0x9006, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x009e, ++ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x97bd, ++ 0x0001, 0x0c80, 0x00e6, 0x2071, 0x19b8, 0x7033, 0x0000, 0x7004, ++ 0x9086, 0x0003, 0x0158, 0x2001, 0x1800, 0x2004, 0x9086, 0x0002, ++ 0x1118, 0x7007, 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, ++ 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x19b8, 0x2c10, 0x7648, 0x2660, 0x2678, 0x8cff, ++ 0x0518, 0x2200, 0x9c06, 0x11e0, 0x7048, 0x9c36, 0x1110, 0x660c, ++ 0x764a, 0x7044, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, ++ 0x7046, 0x0010, 0x7047, 0x0000, 0x660c, 0x2c00, 0x9f06, 0x0110, ++ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x9085, 0x0001, 0x0020, ++ 0x2c78, 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, ++ 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0096, 0x00f6, 0x00e6, 0x00d6, ++ 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x19b8, 0x7610, 0x2660, 0x2678, 0x8cff, 0x0904, 0x9584, 0x6010, ++ 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x9206, 0x1904, 0x957f, 0x7030, ++ 0x9c06, 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x955b, ++ 0x080c, 0x8fb7, 0x68c3, 0x0000, 0x080c, 0x94a2, 0x7033, 0x0000, ++ 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, ++ 0x0100, 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x2069, 0x0100, ++ 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7010, 0x9c36, ++ 0x1110, 0x660c, 0x7612, 0x700c, 0x9c36, 0x1140, 0x2c00, 0x9f36, ++ 0x0118, 0x2f00, 0x700e, 0x0010, 0x700f, 0x0000, 0x660c, 0x0066, ++ 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, ++ 0x080c, 0xba4b, 0x1158, 0x080c, 0x303b, 0x080c, 0xba5c, 0x11f0, ++ 0x080c, 0xa58f, 0x00d8, 0x080c, 0x94a2, 0x08c0, 0x080c, 0xba5c, ++ 0x1118, 0x080c, 0xa58f, 0x0090, 0x6014, 0x2048, 0x080c, 0xb845, ++ 0x0168, 0x6020, 0x9086, 0x0003, 0x1508, 0xa867, 0x0103, 0xab7a, ++ 0xa877, 0x0000, 0x080c, 0x698a, 0x080c, 0xba36, 0x080c, 0xbcd3, ++ 0x080c, 0x9c21, 0x080c, 0x9378, 0x00ce, 0x0804, 0x9504, 0x2c78, ++ 0x600c, 0x2060, 0x0804, 0x9504, 0x012e, 0x000e, 0x002e, 0x006e, ++ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x009e, 0x0005, 0x6020, 0x9086, ++ 0x0006, 0x1d20, 0x080c, 0xd21e, 0x0c08, 0x00d6, 0x080c, 0x8d6b, ++ 0x7003, 0x0200, 0x7007, 0x0014, 0x60c3, 0x0014, 0x20e1, 0x0001, ++ 0x2099, 0x195a, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x20a9, 0x0004, ++ 0x4003, 0x7023, 0x0004, 0x7027, 0x7878, 0x080c, 0x8f87, 0x00de, ++ 0x0005, 0x080c, 0x8d6b, 0x700b, 0x0800, 0x7814, 0x9084, 0xff00, ++ 0x700e, 0x7814, 0x9084, 0x00ff, 0x7022, 0x782c, 0x7026, 0x7860, ++ 0x9084, 0x00ff, 0x9085, 0x0200, 0x7002, 0x7860, 0x9084, 0xff00, ++ 0x8007, 0x7006, 0x60c2, 0x0804, 0x8f87, 0x00b6, 0x00d6, 0x0016, ++ 0x00d6, 0x2f68, 0x2009, 0x0035, 0x080c, 0xbed9, 0x00de, 0x1904, ++ 0x9632, 0x080c, 0x8d20, 0x7003, 0x1300, 0x782c, 0x080c, 0x973d, ++ 0x2068, 0x6820, 0x9086, 0x0003, 0x0560, 0x7810, 0x2058, 0xbaa0, ++ 0x080c, 0x9b66, 0x11d8, 0x9286, 0x007e, 0x1128, 0x700b, 0x00ff, ++ 0x700f, 0xfffe, 0x0498, 0x9286, 0x007f, 0x1128, 0x700b, 0x00ff, ++ 0x700f, 0xfffd, 0x0458, 0x9284, 0xff80, 0x0180, 0x9286, 0x0080, ++ 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffc, 0x0400, 0x92d8, 0x1000, ++ 0x2b5c, 0xb810, 0x700a, 0xb814, 0x700e, 0x00c0, 0xb884, 0x700e, ++ 0x00a8, 0x080c, 0x9b66, 0x1130, 0x7810, 0x2058, 0xb8a0, 0x9082, ++ 0x007e, 0x0250, 0x00d6, 0x2069, 0x181e, 0x2d04, 0x700a, 0x8d68, ++ 0x2d04, 0x700e, 0x00de, 0x0010, 0x6034, 0x700e, 0x7838, 0x7012, ++ 0x783c, 0x7016, 0x60c3, 0x000c, 0x001e, 0x00de, 0x080c, 0x8f87, ++ 0x00be, 0x0005, 0x781b, 0x0001, 0x7803, 0x0006, 0x001e, 0x00de, ++ 0x00be, 0x0005, 0x792c, 0x9180, 0x0008, 0x200c, 0x9186, 0x0006, ++ 0x01c0, 0x9186, 0x0003, 0x0904, 0x96b0, 0x9186, 0x0005, 0x0904, ++ 0x9698, 0x9186, 0x0004, 0x05f0, 0x9186, 0x0008, 0x0904, 0x96a1, ++ 0x7807, 0x0037, 0x782f, 0x0003, 0x7817, 0x1700, 0x080c, 0x971a, ++ 0x0005, 0x080c, 0x96db, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, ++ 0x4000, 0x6800, 0x6a44, 0xd2fc, 0x11f8, 0x0002, 0x9679, 0x9684, ++ 0x967b, 0x9684, 0x9680, 0x9679, 0x9679, 0x9684, 0x9684, 0x9684, ++ 0x9684, 0x9679, 0x9679, 0x9679, 0x9679, 0x9679, 0x9684, 0x9679, ++ 0x9684, 0x080c, 0x0d65, 0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, ++ 0x900e, 0x0010, 0x2009, 0x2000, 0x682c, 0x7022, 0x6830, 0x7026, ++ 0x0804, 0x96d4, 0x080c, 0x96db, 0x00d6, 0x0026, 0x792c, 0x2168, ++ 0x2009, 0x4000, 0x6a00, 0x9286, 0x0002, 0x1108, 0x900e, 0x04e0, ++ 0x080c, 0x96db, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, ++ 0x0498, 0x04c9, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, ++ 0x9286, 0x0005, 0x0118, 0x9286, 0x0002, 0x1108, 0x900e, 0x0420, ++ 0x0451, 0x00d6, 0x0026, 0x792c, 0x2168, 0x6814, 0x0096, 0x2048, ++ 0xa9ac, 0xa834, 0x9112, 0xa9b0, 0xa838, 0x009e, 0x9103, 0x7022, ++ 0x7226, 0x792c, 0x9180, 0x0011, 0x2004, 0xd0fc, 0x1148, 0x9180, ++ 0x0000, 0x2004, 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, 0x0118, ++ 0x2009, 0x4000, 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, 0x002e, ++ 0x00de, 0x0804, 0x8f87, 0x00b6, 0x0036, 0x0046, 0x0056, 0x0066, ++ 0x080c, 0x8d6b, 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, 0x793c, ++ 0x710e, 0x7810, 0x2058, 0xb8a0, 0x080c, 0x9b66, 0x1118, 0x9092, ++ 0x007e, 0x0268, 0x00d6, 0x2069, 0x181e, 0x2d2c, 0x8d68, 0x2d34, ++ 0x90d8, 0x1000, 0x2b5c, 0xbb10, 0xbc14, 0x00de, 0x0028, 0x901e, ++ 0xbc84, 0x2029, 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, 0x2004, ++ 0x9086, 0x0003, 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, 0x0020, ++ 0x7312, 0x7416, 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, 0x003e, ++ 0x00be, 0x0005, 0x080c, 0x8d6b, 0x7003, 0x0100, 0x782c, 0x700a, ++ 0x7814, 0x700e, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x080c, ++ 0x8d17, 0x7003, 0x1400, 0x7838, 0x700a, 0x0079, 0x783c, 0x700e, ++ 0x782c, 0x7012, 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, 0x8007, ++ 0x701a, 0x60c3, 0x0010, 0x0804, 0x8f87, 0x00e6, 0x2071, 0x0240, ++ 0x0006, 0x00f6, 0x2078, 0x7810, 0x00b6, 0x2058, 0xb8c4, 0xd084, ++ 0x0120, 0x7850, 0x702a, 0x784c, 0x702e, 0x00be, 0x00fe, 0x000e, ++ 0x00ee, 0x0005, 0x080c, 0x8d62, 0x7003, 0x0100, 0x782c, 0x700a, ++ 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8f87, 0x00a9, 0x7914, ++ 0x712a, 0x60c3, 0x0000, 0x60a7, 0x9575, 0x0026, 0x080c, 0x27a2, ++ 0x0228, 0x2011, 0x0101, 0x2204, 0xc0c5, 0x2012, 0x002e, 0x080c, ++ 0x8faa, 0x080c, 0x8202, 0x0005, 0x0036, 0x0096, 0x00d6, 0x00e6, ++ 0x7860, 0x2048, 0xaa7c, 0x9296, 0x00c0, 0x9294, 0xfffd, 0xaa7e, ++ 0xaa80, 0x9294, 0x0300, 0xaa82, 0xa96c, 0x9194, 0x00ff, 0xab74, ++ 0x9384, 0x00ff, 0x908d, 0xc200, 0xa96e, 0x9384, 0xff00, 0x9215, ++ 0xaa76, 0xa870, 0xaa78, 0xa87a, 0xaa72, 0x00d6, 0x2069, 0x0200, ++ 0x080c, 0x97fa, 0x00de, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, ++ 0x000a, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x4003, ++ 0x60a3, 0x0035, 0xaa68, 0x9294, 0x7000, 0x9286, 0x3000, 0x0110, ++ 0x60a3, 0x0037, 0x00ee, 0x00de, 0x009e, 0x003e, 0x0005, 0x900e, ++ 0x7814, 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x01c0, 0x9084, 0x0003, ++ 0x11a8, 0x2001, 0x180c, 0x2004, 0xd0bc, 0x0180, 0x7824, 0xd0cc, ++ 0x1168, 0xd0c4, 0x1158, 0xa8a8, 0x9005, 0x1140, 0x2001, 0x180c, ++ 0x200c, 0xc1d5, 0x2102, 0x2009, 0x1983, 0x210c, 0x009e, 0x918d, ++ 0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, 0x0026, 0x2110, ++ 0x900e, 0x080c, 0x287c, 0x002e, 0x0005, 0x2009, 0x0009, 0x00a0, ++ 0x2009, 0x000a, 0x0088, 0x2009, 0x000b, 0x0070, 0x2009, 0x000c, ++ 0x0058, 0x2009, 0x000d, 0x0040, 0x2009, 0x000e, 0x0028, 0x2009, ++ 0x000f, 0x0010, 0x2009, 0x0008, 0x6912, 0x0005, 0x00d6, 0x9290, ++ 0x0018, 0x8214, 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813, 0x0000, ++ 0x22a8, 0x9284, 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292, 0x0020, ++ 0x0008, 0x9016, 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff, 0x0120, ++ 0x6810, 0x8000, 0x6812, 0x0c60, 0x00de, 0x0005, 0x00f6, 0x00e6, ++ 0x00d6, 0x00c6, 0x00a6, 0x0096, 0x0066, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x19b8, 0x7610, 0x2660, 0x2678, 0x8cff, 0x0904, 0x98a5, ++ 0x7030, 0x9c06, 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, ++ 0x987c, 0x080c, 0x8fb7, 0x68c3, 0x0000, 0x080c, 0x94a2, 0x7033, ++ 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2833, 0x9006, 0x080c, 0x2833, 0x2069, ++ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7010, ++ 0x9c36, 0x1110, 0x660c, 0x7612, 0x700c, 0x9c36, 0x1140, 0x2c00, ++ 0x9f36, 0x0118, 0x2f00, 0x700e, 0x0010, 0x700f, 0x0000, 0x660c, ++ 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, ++ 0x0000, 0x080c, 0xba4b, 0x1158, 0x080c, 0x303b, 0x080c, 0xba5c, ++ 0x11f0, 0x080c, 0xa58f, 0x00d8, 0x080c, 0x94a2, 0x08c0, 0x080c, ++ 0xba5c, 0x1118, 0x080c, 0xa58f, 0x0090, 0x6014, 0x2048, 0x080c, ++ 0xb845, 0x0168, 0x6020, 0x9086, 0x0003, 0x1520, 0xa867, 0x0103, ++ 0xab7a, 0xa877, 0x0000, 0x080c, 0x6996, 0x080c, 0xba36, 0x080c, ++ 0xbcd3, 0x080c, 0x9c21, 0x080c, 0x9378, 0x00ce, 0x0804, 0x982d, ++ 0x2c78, 0x600c, 0x2060, 0x0804, 0x982d, 0x7013, 0x0000, 0x700f, ++ 0x0000, 0x012e, 0x006e, 0x009e, 0x00ae, 0x00ce, 0x00de, 0x00ee, ++ 0x00fe, 0x0005, 0x6020, 0x9086, 0x0006, 0x1d08, 0x080c, 0xd21e, ++ 0x08f0, 0x00f6, 0x0036, 0x2079, 0x0380, 0x7b18, 0xd3bc, 0x1de8, ++ 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, 0x003e, 0x00fe, 0x0005, ++ 0x0016, 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, 0x0001, ++ 0x1188, 0x2001, 0x0015, 0x0c29, 0x2009, 0x1000, 0x2001, 0x0382, ++ 0x2004, 0x9084, 0x0007, 0x9086, 0x0003, 0x0120, 0x8109, 0x1db0, ++ 0x080c, 0x0d65, 0x001e, 0x0005, 0x2001, 0x0382, 0x2004, 0x9084, ++ 0x0007, 0x9086, 0x0003, 0x1120, 0x2001, 0x0380, 0x2003, 0x0001, ++ 0x0005, 0x0156, 0x0016, 0x0026, 0x00e6, 0x900e, 0x2071, 0x19b8, ++ 0x0469, 0x0106, 0x0190, 0x7004, 0x9086, 0x0003, 0x0148, 0x20a9, ++ 0x1000, 0x6044, 0xd0fc, 0x01d8, 0x1f04, 0x9901, 0x080c, 0x0d65, ++ 0x080c, 0x98c8, 0x6044, 0xd0fc, 0x0190, 0x7030, 0x9c06, 0x1148, ++ 0x080c, 0x8874, 0x6044, 0xd0dc, 0x0150, 0xc0dc, 0x6046, 0x700a, ++ 0x7042, 0x704c, 0x9c06, 0x190c, 0x0d65, 0x080c, 0x88d1, 0x010e, ++ 0x1919, 0x00ee, 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, 0x0382, ++ 0x2004, 0x9084, 0x0007, 0x9086, 0x0003, 0x0005, 0x0126, 0x2091, ++ 0x2400, 0x7808, 0xd0a4, 0x190c, 0x0d5e, 0xd09c, 0x0128, 0x7820, ++ 0x908c, 0xf000, 0x11b8, 0x0012, 0x012e, 0x0005, 0x994e, 0x998c, ++ 0x99b3, 0x99e3, 0x99f3, 0x9a04, 0x9a13, 0x9a21, 0x9a32, 0x9a36, ++ 0x994e, 0x994e, 0x994e, 0x994e, 0x994e, 0x994e, 0x080c, 0x0d65, ++ 0x012e, 0x0005, 0x2060, 0x6044, 0xd0bc, 0x0140, 0xc0bc, 0x6046, ++ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d65, 0x0012, 0x012e, 0x0005, ++ 0x9973, 0x9975, 0x9973, 0x997b, 0x9973, 0x9973, 0x9973, 0x9973, ++ 0x9973, 0x9975, 0x9973, 0x9975, 0x9973, 0x9975, 0x9973, 0x9973, ++ 0x9973, 0x9975, 0x9973, 0x080c, 0x0d65, 0x2009, 0x0013, 0x080c, ++ 0x9c85, 0x012e, 0x0005, 0x6014, 0x2048, 0xa87c, 0xd0dc, 0x0130, ++ 0x080c, 0x83c0, 0x080c, 0x9be7, 0x012e, 0x0005, 0x2009, 0x0049, ++ 0x080c, 0x9c85, 0x012e, 0x0005, 0x080c, 0x98c8, 0x2001, 0x19dd, ++ 0x2003, 0x0000, 0x7030, 0x9065, 0x090c, 0x0d65, 0x7034, 0x9092, ++ 0x00c8, 0x1258, 0x8000, 0x7036, 0x7004, 0x9086, 0x0003, 0x0110, ++ 0x7007, 0x0000, 0x781f, 0x0808, 0x0040, 0x080c, 0xd610, 0x6003, ++ 0x0001, 0x2009, 0x0014, 0x080c, 0x9c85, 0x781f, 0x0100, 0x080c, ++ 0x98e4, 0x012e, 0x0005, 0x080c, 0x98c8, 0x714c, 0x81ff, 0x1128, ++ 0x2011, 0x19e0, 0x2013, 0x0000, 0x0400, 0x2061, 0x0100, 0x7150, ++ 0x9192, 0x7530, 0x12b8, 0x8108, 0x7152, 0x714c, 0x9188, 0x0008, ++ 0x210c, 0x918e, 0x0006, 0x1138, 0x6014, 0x9084, 0x1984, 0x9085, ++ 0x0012, 0x6016, 0x0050, 0x6014, 0x9084, 0x1984, 0x9085, 0x0016, ++ 0x6016, 0x0018, 0x706c, 0xc085, 0x706e, 0x781f, 0x0200, 0x080c, ++ 0x98e4, 0x012e, 0x0005, 0x080c, 0x98c8, 0x714c, 0x2160, 0x6003, ++ 0x0003, 0x2009, 0x004a, 0x080c, 0x9c85, 0x781f, 0x0200, 0x080c, ++ 0x98e4, 0x012e, 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x2060, ++ 0x6003, 0x0003, 0x080c, 0x98c8, 0x080c, 0x1c02, 0x781f, 0x0400, ++ 0x080c, 0x98e4, 0x012e, 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, ++ 0x2060, 0x080c, 0x98c8, 0x080c, 0x1c4a, 0x781f, 0x0400, 0x080c, ++ 0x98e4, 0x012e, 0x0005, 0x7030, 0x9065, 0x0148, 0x6044, 0xc0bc, ++ 0x6046, 0x7104, 0x9186, 0x0003, 0x0110, 0x080c, 0x8937, 0x012e, ++ 0x0005, 0x00f6, 0x703c, 0x9086, 0x0002, 0x0148, 0x704c, 0x907d, ++ 0x0130, 0x7844, 0xc0bc, 0x7846, 0x080c, 0x8ee1, 0x0000, 0x00fe, ++ 0x012e, 0x0005, 0x080c, 0x7158, 0x012e, 0x0005, 0x080c, 0x0d65, ++ 0x0005, 0x00e6, 0x2071, 0x19b8, 0x6044, 0xc0bc, 0x6046, 0xd0fc, ++ 0x01b8, 0x704c, 0x9c06, 0x1190, 0x2019, 0x0001, 0x080c, 0x9286, ++ 0x704f, 0x0000, 0x2001, 0x0109, 0x2004, 0xd08c, 0x1138, 0x2001, ++ 0x0108, 0x2004, 0xd0bc, 0x1110, 0x703f, 0x0000, 0x080c, 0x94b8, ++ 0x00ee, 0x0005, 0x0026, 0x7010, 0x9c06, 0x1178, 0x080c, 0x9378, ++ 0x6044, 0xc0fc, 0x6046, 0x600c, 0x9015, 0x0120, 0x7212, 0x600f, ++ 0x0000, 0x0010, 0x7212, 0x720e, 0x9006, 0x002e, 0x0005, 0x0026, ++ 0x7020, 0x9c06, 0x1178, 0x080c, 0x9378, 0x6044, 0xc0fc, 0x6046, ++ 0x600c, 0x9015, 0x0120, 0x7222, 0x600f, 0x0000, 0x0010, 0x7222, ++ 0x721e, 0x9006, 0x002e, 0x0005, 0x00d6, 0x0036, 0x7830, 0x9c06, ++ 0x1558, 0x2069, 0x0100, 0x68c0, 0x9005, 0x01f8, 0x080c, 0x820b, ++ 0x080c, 0x8fb7, 0x68c3, 0x0000, 0x080c, 0x94a2, 0x2069, 0x0140, ++ 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2833, ++ 0x9006, 0x080c, 0x2833, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, ++ 0x6827, 0x0001, 0x9085, 0x0001, 0x0038, 0x7808, 0xc0ad, 0x780a, ++ 0x6003, 0x0009, 0x630a, 0x9006, 0x003e, 0x00de, 0x0005, 0x0016, ++ 0x0026, 0x0036, 0x6100, 0x2019, 0x0100, 0x2001, 0x0382, 0x2004, ++ 0xd09c, 0x0190, 0x00c6, 0x0126, 0x2091, 0x2800, 0x0016, 0x0036, ++ 0x080c, 0x992e, 0x003e, 0x001e, 0x012e, 0x00ce, 0x6200, 0x2200, ++ 0x9106, 0x0d58, 0x2200, 0x0010, 0x8319, 0x1d38, 0x003e, 0x002e, ++ 0x001e, 0x0005, 0x00d6, 0x0156, 0x080c, 0x8d6b, 0x7a14, 0x82ff, ++ 0x0138, 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, 0x0490, ++ 0x7003, 0x0200, 0x7007, 0x0000, 0x2069, 0x1800, 0x901e, 0x6800, ++ 0x9086, 0x0004, 0x1110, 0xc38d, 0x0060, 0x080c, 0x70b7, 0x1110, ++ 0xc3ad, 0x0008, 0xc3a5, 0x6ad8, 0xd29c, 0x1110, 0xd2ac, 0x0108, ++ 0xc39d, 0x730e, 0x2011, 0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, ++ 0x2011, 0x1840, 0x2019, 0x1841, 0x2071, 0x0250, 0x2376, 0x8e70, ++ 0x2276, 0x8e70, 0x9398, 0x0002, 0x9290, 0x0002, 0x1f04, 0x9b0e, ++ 0x60c3, 0x0020, 0x080c, 0x8f87, 0x015e, 0x00de, 0x0005, 0x0156, ++ 0x080c, 0x8d6b, 0x7a14, 0x82ff, 0x0168, 0x9286, 0xffff, 0x0118, ++ 0x9282, 0x000e, 0x1238, 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, ++ 0x0008, 0x0488, 0x7003, 0x0200, 0x7007, 0x001c, 0x700f, 0x0001, ++ 0x2011, 0x198e, 0x2204, 0x8007, 0x701a, 0x8210, 0x2204, 0x8007, ++ 0x701e, 0x0421, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001, ++ 0x181e, 0x2004, 0x7022, 0x2001, 0x181f, 0x2004, 0x7026, 0x0030, ++ 0x2001, 0x1817, 0x2004, 0x9084, 0x00ff, 0x7026, 0x20a9, 0x0004, ++ 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, ++ 0x4003, 0x60c3, 0x001c, 0x015e, 0x0804, 0x8f87, 0x0006, 0x2001, ++ 0x1836, 0x2004, 0xd0ac, 0x000e, 0x0005, 0x2011, 0x0003, 0x080c, ++ 0x9339, 0x2011, 0x0002, 0x080c, 0x9343, 0x080c, 0x9206, 0x0036, ++ 0x901e, 0x080c, 0x9286, 0x003e, 0x0005, 0x2071, 0x1883, 0x7000, ++ 0x9005, 0x0140, 0x2001, 0x0812, 0x2071, 0x1800, 0x7072, 0x7076, ++ 0x7067, 0xffd4, 0x2071, 0x1800, 0x7070, 0x7052, 0x7057, 0x1ddc, ++ 0x0005, 0x00e6, 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7550, ++ 0x9582, 0x0010, 0x0608, 0x7054, 0x2060, 0x6000, 0x9086, 0x0000, ++ 0x0148, 0x9ce0, 0x001c, 0x7064, 0x9c02, 0x1208, 0x0cb0, 0x2061, ++ 0x1ddc, 0x0c98, 0x6003, 0x0008, 0x8529, 0x7552, 0x9ca8, 0x001c, ++ 0x7064, 0x9502, 0x1230, 0x7556, 0x9085, 0x0001, 0x012e, 0x00ee, ++ 0x0005, 0x7057, 0x1ddc, 0x0cc0, 0x9006, 0x0cc0, 0x00e6, 0x2071, ++ 0x1800, 0x7550, 0x9582, 0x0010, 0x0600, 0x7054, 0x2060, 0x6000, ++ 0x9086, 0x0000, 0x0148, 0x9ce0, 0x001c, 0x7064, 0x9c02, 0x1208, ++ 0x0cb0, 0x2061, 0x1ddc, 0x0c98, 0x6003, 0x0008, 0x8529, 0x7552, ++ 0x9ca8, 0x001c, 0x7064, 0x9502, 0x1228, 0x7556, 0x9085, 0x0001, ++ 0x00ee, 0x0005, 0x7057, 0x1ddc, 0x0cc8, 0x9006, 0x0cc8, 0x9c82, ++ 0x1ddc, 0x0a0c, 0x0d65, 0x2001, 0x1819, 0x2004, 0x9c02, 0x1a0c, ++ 0x0d65, 0x9006, 0x6006, 0x600a, 0x600e, 0x6016, 0x601a, 0x6012, ++ 0x6023, 0x0000, 0x6003, 0x0000, 0x601e, 0x605e, 0x6062, 0x6026, ++ 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, 0x603e, 0x604a, 0x6046, ++ 0x6042, 0x2061, 0x1800, 0x6050, 0x8000, 0x6052, 0x0005, 0x9006, ++ 0x600e, 0x6016, 0x601a, 0x6012, 0x6022, 0x6002, 0x601e, 0x605e, ++ 0x6062, 0x604a, 0x6046, 0x2061, 0x1800, 0x6050, 0x8000, 0x6052, ++ 0x0005, 0x0006, 0x6000, 0x9086, 0x0000, 0x01d0, 0x601c, 0xd084, ++ 0x190c, 0x1914, 0x6023, 0x0007, 0x2001, 0x1957, 0x2004, 0x0006, ++ 0x9082, 0x0051, 0x000e, 0x0208, 0x8004, 0x601a, 0x080c, 0xd4ce, ++ 0x604b, 0x0000, 0x6044, 0xd0fc, 0x1129, 0x9006, 0x6046, 0x6016, ++ 0x000e, 0x0005, 0x080c, 0x9926, 0x0106, 0x190c, 0x98c8, 0x2001, ++ 0x19cb, 0x2004, 0x9c06, 0x1130, 0x0036, 0x2019, 0x0001, 0x080c, ++ 0x9286, 0x003e, 0x080c, 0x94b8, 0x010e, 0x190c, 0x98e4, 0x0005, ++ 0x00e6, 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7550, 0x9582, ++ 0x0001, 0x0608, 0x7054, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, ++ 0x9ce0, 0x001c, 0x7064, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1ddc, ++ 0x0c98, 0x6003, 0x0008, 0x8529, 0x7552, 0x9ca8, 0x001c, 0x7064, ++ 0x9502, 0x1230, 0x7556, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, ++ 0x7057, 0x1ddc, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084, 0x000f, ++ 0x0002, 0x9c99, 0x9ca3, 0x9cbe, 0x9cd9, 0xbfab, 0xbfc8, 0xbfe3, ++ 0x9c99, 0x9ca3, 0x9c99, 0x9cf5, 0x9c99, 0x9c99, 0x9c99, 0x9c99, ++ 0x9c99, 0x9186, 0x0013, 0x1130, 0x6044, 0xd0fc, 0x0110, 0x080c, ++ 0x8874, 0x0005, 0x0005, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, ++ 0x0d65, 0x0013, 0x006e, 0x0005, 0x9cbc, 0xa404, 0xa5d6, 0x9cbc, ++ 0xa664, 0x9fbe, 0x9cbc, 0x9cbc, 0xa386, 0xac09, 0x9cbc, 0x9cbc, ++ 0x9cbc, 0x9cbc, 0x9cbc, 0x9cbc, 0x080c, 0x0d65, 0x0066, 0x6000, ++ 0x90b2, 0x0016, 0x1a0c, 0x0d65, 0x0013, 0x006e, 0x0005, 0x9cd7, ++ 0xb214, 0x9cd7, 0x9cd7, 0x9cd7, 0x9cd7, 0x9cd7, 0x9cd7, 0xb1b9, ++ 0xb397, 0x9cd7, 0xb251, 0xb2d5, 0xb251, 0xb2d5, 0x9cd7, 0x080c, ++ 0x0d65, 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d65, 0x6000, 0x0002, ++ 0x9cf3, 0xac53, 0xacea, 0xae6a, 0xaed9, 0x9cf3, 0x9cf3, 0x9cf3, ++ 0xac22, 0xb13a, 0xb13d, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 0xb16d, ++ 0x9cf3, 0x9cf3, 0x9cf3, 0x080c, 0x0d65, 0x0066, 0x6000, 0x90b2, ++ 0x0016, 0x1a0c, 0x0d65, 0x0013, 0x006e, 0x0005, 0x9d0e, 0x9d0e, ++ 0x9d4c, 0x9deb, 0x9e6b, 0x9d0e, 0x9d0e, 0x9d0e, 0x9d10, 0x9d0e, ++ 0x9d0e, 0x9d0e, 0x9d0e, 0x9d0e, 0x9d0e, 0x9d0e, 0x080c, 0x0d65, ++ 0x9186, 0x004c, 0x0560, 0x9186, 0x0003, 0x190c, 0x0d65, 0x0096, ++ 0x601c, 0xc0ed, 0x601e, 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, ++ 0xa87c, 0x9084, 0xa000, 0xc0b5, 0xa87e, 0xa8ac, 0xa836, 0xa8b0, ++ 0xa83a, 0x9006, 0xa846, 0xa84a, 0xa884, 0x9092, 0x199a, 0x0210, ++ 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, ++ 0x080c, 0x1a64, 0x2009, 0x8030, 0x080c, 0x8518, 0x0005, 0x6010, ++ 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x080c, 0x9e8d, 0x080c, ++ 0xbf79, 0x6003, 0x0007, 0x0005, 0x00d6, 0x0096, 0x00f6, 0x2079, ++ 0x1800, 0x7a8c, 0x6014, 0x2048, 0xa87c, 0xd0ec, 0x1110, 0x9290, ++ 0x0018, 0xac78, 0xc4fc, 0x0046, 0xa8e0, 0x9005, 0x1140, 0xa8dc, ++ 0x921a, 0x0140, 0x0220, 0xa87b, 0x0007, 0x2010, 0x0028, 0xa87b, ++ 0x0015, 0x0010, 0xa87b, 0x0000, 0x8214, 0xa883, 0x0000, 0xaa02, ++ 0x0006, 0x0016, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2400, ++ 0x9005, 0x1108, 0x009a, 0x2100, 0x9086, 0x0015, 0x1118, 0x2001, ++ 0x0001, 0x0038, 0x2100, 0x9086, 0x0016, 0x0118, 0x2001, 0x0001, ++ 0x002a, 0x94a4, 0x0007, 0x8423, 0x9405, 0x0002, 0x9db3, 0x9db3, ++ 0x9dae, 0x9db1, 0x9db3, 0x9dab, 0x9d9e, 0x9d9e, 0x9d9e, 0x9d9e, ++ 0x9d9e, 0x9d9e, 0x9d9e, 0x9d9e, 0x9d9e, 0x9d9e, 0x00fe, 0x00ee, ++ 0x00de, 0x00ce, 0x002e, 0x001e, 0x000e, 0x004e, 0x00fe, 0x009e, ++ 0x00de, 0x080c, 0x0d65, 0x080c, 0xa845, 0x0028, 0x080c, 0xa968, ++ 0x0010, 0x080c, 0xaa57, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, ++ 0x001e, 0x2c00, 0xa896, 0x000e, 0x080c, 0x9f4b, 0x0530, 0xa804, ++ 0xa80e, 0x00a6, 0x2050, 0xb100, 0x00ae, 0x8006, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xaacc, 0xabd0, ++ 0xacd4, 0xadd8, 0x2031, 0x0000, 0x2041, 0x1280, 0x080c, 0xa0f5, ++ 0x0160, 0x000e, 0x9005, 0x0120, 0x00fe, 0x009e, 0x00de, 0x0005, ++ 0x00fe, 0x009e, 0x00de, 0x0804, 0x9be7, 0x2001, 0x002c, 0x900e, ++ 0x080c, 0x9fb1, 0x0c70, 0x91b6, 0x0015, 0x0170, 0x91b6, 0x0016, ++ 0x0158, 0x91b2, 0x0047, 0x0a0c, 0x0d65, 0x91b2, 0x0050, 0x1a0c, ++ 0x0d65, 0x9182, 0x0047, 0x0042, 0x080c, 0x9ab7, 0x0120, 0x9086, ++ 0x0002, 0x0904, 0x9d4c, 0x0005, 0x9e0d, 0x9e0d, 0x9e0f, 0x9e41, ++ 0x9e0d, 0x9e0d, 0x9e0d, 0x9e0d, 0x9e54, 0x080c, 0x0d65, 0x00d6, ++ 0x0016, 0x0096, 0x6003, 0x0004, 0x6114, 0x2148, 0xa87c, 0xd0fc, ++ 0x01c0, 0xa878, 0xc0fc, 0x9005, 0x1158, 0xa894, 0x9005, 0x0140, ++ 0x2001, 0x0000, 0x900e, 0x080c, 0x9fb1, 0x080c, 0x9be7, 0x00a8, ++ 0x6003, 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae, 0xa8b2, ++ 0x0c78, 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae, 0xa8a8, ++ 0xa8b2, 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e, 0x00de, ++ 0x0005, 0x080c, 0x88d1, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, ++ 0xb847, 0x0120, 0xa87b, 0x0006, 0x080c, 0x6996, 0x009e, 0x00de, ++ 0x080c, 0x9be7, 0x0804, 0x8936, 0x080c, 0x88d1, 0x080c, 0x3006, ++ 0x080c, 0xbf76, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xb847, ++ 0x0120, 0xa87b, 0x0029, 0x080c, 0x6996, 0x009e, 0x00de, 0x080c, ++ 0x9be7, 0x0804, 0x8936, 0x9182, 0x0047, 0x0002, 0x9e7b, 0x9e7d, ++ 0x9e7b, 0x9e7b, 0x9e7b, 0x9e7b, 0x9e7b, 0x9e7b, 0x9e7b, 0x9e7b, ++ 0x9e7b, 0x9e7b, 0x9e7d, 0x080c, 0x0d65, 0x00d6, 0x0096, 0x080c, ++ 0x1595, 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000, 0x080c, ++ 0x6996, 0x009e, 0x00de, 0x0804, 0x9be7, 0x0026, 0x0036, 0x0056, ++ 0x0066, 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x1022, 0x000e, ++ 0x090c, 0x0d65, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, 0x21a0, ++ 0x900e, 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800, 0x798c, ++ 0x9188, 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950, 0x00a6, ++ 0x2001, 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001, 0x9182, ++ 0x0034, 0x1228, 0x2011, 0x001f, 0x080c, 0xb41a, 0x04c0, 0x2130, ++ 0x2009, 0x0034, 0x2011, 0x001f, 0x080c, 0xb41a, 0x96b2, 0x0034, ++ 0xb004, 0x904d, 0x0110, 0x080c, 0x0fd4, 0x080c, 0x1022, 0x01d0, ++ 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, ++ 0x003d, 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xb41a, 0x00b8, ++ 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x080c, ++ 0xb41a, 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, ++ 0x95ad, 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050, 0xb566, ++ 0x2a48, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x6996, 0x000e, ++ 0x2048, 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e, 0x005e, ++ 0x003e, 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006, 0x080c, ++ 0x1022, 0x000e, 0x090c, 0x0d65, 0xa960, 0x21e8, 0xa95c, 0x9188, ++ 0x0019, 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66, 0xa87a, ++ 0x2079, 0x1800, 0x798c, 0x810c, 0x9188, 0x000c, 0x9182, 0x001a, ++ 0x0210, 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76, 0x2e98, ++ 0xa85c, 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c, 0x918d, ++ 0x0080, 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x6996, 0x009e, ++ 0x00fe, 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096, 0x0016, ++ 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e, 0x2079, ++ 0x0200, 0x2e98, 0xa87c, 0xd0ec, 0x0118, 0x9e80, 0x000c, 0x2098, ++ 0x2021, 0x003e, 0x901e, 0x9282, 0x0020, 0x0218, 0x2011, 0x0020, ++ 0x2018, 0x9486, 0x003e, 0x1170, 0x0096, 0x080c, 0x1022, 0x2900, ++ 0x009e, 0x05c0, 0xa806, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0002, 0x20a0, 0x3300, 0x908e, 0x0260, 0x0140, 0x2009, 0x0280, ++ 0x9102, 0x920a, 0x0218, 0x2010, 0x2100, 0x9318, 0x2200, 0x9402, ++ 0x1228, 0x2400, 0x9202, 0x2410, 0x9318, 0x9006, 0x2020, 0x22a8, ++ 0xa800, 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003, 0x83ff, 0x0180, ++ 0x3300, 0x9086, 0x0280, 0x1130, 0x7814, 0x8000, 0x9085, 0x0080, ++ 0x7816, 0x2e98, 0x2310, 0x84ff, 0x0904, 0x9f60, 0x0804, 0x9f62, ++ 0x9085, 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe, 0x00de, 0x001e, ++ 0x0005, 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, ++ 0x080c, 0x698a, 0x009e, 0x003e, 0x00de, 0x0005, 0x91b6, 0x0015, ++ 0x1118, 0x080c, 0x9be7, 0x0030, 0x91b6, 0x0016, 0x190c, 0x0d65, ++ 0x080c, 0x9be7, 0x0005, 0x20a9, 0x000e, 0x20e1, 0x0000, 0x2e98, ++ 0x6014, 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x20a0, 0x009e, ++ 0x4003, 0x0136, 0x9080, 0x001b, 0x2011, 0x0006, 0x20a9, 0x0001, ++ 0x3418, 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318, 0x2398, 0x8211, ++ 0x1db8, 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318, 0x8318, 0x2398, ++ 0x4003, 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8, 0x0096, 0x080c, ++ 0xb847, 0x0130, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, ++ 0x009e, 0x0804, 0x9be7, 0x0096, 0x00d6, 0x0036, 0x7330, 0x9386, ++ 0x0200, 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8c7, 0x0000, 0x00be, ++ 0x6014, 0x9005, 0x0130, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, ++ 0xab32, 0x080c, 0x9be7, 0x003e, 0x00de, 0x009e, 0x0005, 0x0011, ++ 0x1d48, 0x0cc8, 0x0006, 0x0016, 0x080c, 0xbf61, 0x0188, 0x6014, ++ 0x9005, 0x1170, 0x600b, 0x0003, 0x601b, 0x0000, 0x604b, 0x0000, ++ 0x2009, 0x0022, 0x080c, 0xa3dc, 0x9006, 0x001e, 0x000e, 0x0005, ++ 0x9085, 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9, 0x0014, 0x9e80, ++ 0x000c, 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048, 0xa860, 0x20e8, ++ 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, ++ 0x0001, 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003, 0x20a9, 0x000a, ++ 0xa804, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, ++ 0x4003, 0x2001, 0x0205, 0x2003, 0x0002, 0x2099, 0x0260, 0x20a9, ++ 0x0020, 0x4003, 0x2003, 0x0000, 0x6014, 0x2048, 0xa800, 0x2048, ++ 0xa867, 0x0103, 0x080c, 0x9be7, 0x001e, 0x009e, 0x0005, 0x0096, ++ 0x0016, 0x900e, 0x7030, 0x9086, 0x0100, 0x0140, 0x7038, 0x9084, ++ 0x00ff, 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004, 0x9080, 0x0004, ++ 0x9108, 0x810b, 0x2011, 0x0002, 0x2019, 0x000c, 0x6014, 0x2048, ++ 0x080c, 0xb41a, 0x080c, 0xb847, 0x0140, 0x6014, 0x2048, 0xa807, ++ 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0x9be7, 0x001e, ++ 0x009e, 0x0005, 0x0016, 0x0096, 0x7030, 0x9086, 0x0100, 0x1118, ++ 0x2009, 0x0004, 0x0010, 0x7034, 0x800c, 0x810b, 0x2011, 0x000c, ++ 0x2019, 0x000c, 0x6014, 0x2048, 0xa804, 0x0096, 0x9005, 0x0108, ++ 0x2048, 0x080c, 0xb41a, 0x009e, 0x080c, 0xb847, 0x0148, 0xa804, ++ 0x9005, 0x1158, 0xa807, 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, ++ 0x080c, 0x9be7, 0x009e, 0x001e, 0x0005, 0x0086, 0x2040, 0xa030, ++ 0x8007, 0x9086, 0x0100, 0x1118, 0x080c, 0xa58f, 0x00e0, 0xa034, ++ 0x8007, 0x800c, 0x8806, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x000c, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, ++ 0x4000, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, ++ 0x1266, 0x0019, 0x0d08, 0x008e, 0x0898, 0x0096, 0x0006, 0x080c, ++ 0x1022, 0x000e, 0x01b0, 0xa8ab, 0x0dcb, 0xa876, 0x000e, 0xa8a2, ++ 0x0006, 0xae6a, 0x2800, 0xa89e, 0xa97a, 0xaf72, 0xaa8e, 0xab92, ++ 0xac96, 0xad9a, 0x0086, 0x2940, 0x080c, 0x110c, 0x008e, 0x9085, ++ 0x0001, 0x009e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, ++ 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, 0x00be, 0x9206, 0x1520, ++ 0x700c, 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be, 0x9206, 0x11e0, ++ 0x604b, 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035, 0x080c, 0xbed9, ++ 0x001e, 0x1158, 0x622c, 0x2268, 0x2071, 0x026c, 0x6b20, 0x9386, ++ 0x0003, 0x0130, 0x9386, 0x0006, 0x0128, 0x080c, 0x9be7, 0x0020, ++ 0x0039, 0x0010, 0x080c, 0xa211, 0x002e, 0x00de, 0x00ee, 0x0005, ++ 0x0096, 0x6814, 0x2048, 0x9186, 0x0015, 0x0904, 0xa1f0, 0x918e, ++ 0x0016, 0x1904, 0xa20f, 0x700c, 0x908c, 0xff00, 0x9186, 0x1700, ++ 0x0120, 0x9186, 0x0300, 0x1904, 0xa1ca, 0x89ff, 0x1138, 0x6800, ++ 0x9086, 0x000f, 0x0904, 0xa1ac, 0x0804, 0xa20d, 0x6808, 0x9086, ++ 0xffff, 0x1904, 0xa1f2, 0xa87c, 0x9084, 0x0060, 0x9086, 0x0020, ++ 0x1128, 0xa83c, 0xa940, 0x9105, 0x1904, 0xa1f2, 0x6824, 0xd0b4, ++ 0x1904, 0xa1f2, 0x080c, 0xba36, 0x6864, 0xa882, 0xa87c, 0xc0dc, ++ 0xc0f4, 0xc0d4, 0xa87e, 0x0026, 0x900e, 0x6a18, 0x2001, 0x000a, ++ 0x080c, 0x8419, 0xa884, 0x920a, 0x0208, 0x8011, 0xaa86, 0x82ff, ++ 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, 0xb56d, 0x00ce, 0x0804, ++ 0xa20d, 0x00c6, 0xa868, 0xd0fc, 0x1118, 0x080c, 0x5d56, 0x0010, ++ 0x080c, 0x60fb, 0x00ce, 0x1904, 0xa1f2, 0x00c6, 0x2d60, 0x080c, ++ 0x9be7, 0x00ce, 0x0804, 0xa20d, 0x00c6, 0x080c, 0x9c58, 0x0198, ++ 0x6017, 0x0000, 0x6810, 0x6012, 0x080c, 0xbcdb, 0x6023, 0x0003, ++ 0x6904, 0x00c6, 0x2d60, 0x080c, 0x9be7, 0x00ce, 0x080c, 0x9c85, ++ 0x00ce, 0x0804, 0xa20d, 0x2001, 0x1959, 0x2004, 0x684a, 0x00ce, ++ 0x0804, 0xa20d, 0x7008, 0x9086, 0x000b, 0x11c8, 0x6010, 0x00b6, ++ 0x2058, 0xb900, 0xc1bc, 0xb902, 0x00be, 0x00c6, 0x2d60, 0xa87b, ++ 0x0003, 0x080c, 0xbf1b, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, ++ 0x0002, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00ce, 0x0430, 0x700c, ++ 0x9086, 0x2a00, 0x1138, 0x2001, 0x1959, 0x2004, 0x684a, 0x00e8, ++ 0x04c1, 0x00e8, 0x89ff, 0x090c, 0x0d65, 0x00c6, 0x00d6, 0x2d60, ++ 0xa867, 0x0103, 0xa87b, 0x0003, 0x080c, 0x67ac, 0x080c, 0xba36, ++ 0x080c, 0x9c21, 0x0026, 0x6010, 0x00b6, 0x2058, 0xba3c, 0x080c, ++ 0x639b, 0x00be, 0x002e, 0x00de, 0x00ce, 0x080c, 0x9be7, 0x009e, ++ 0x0005, 0x9186, 0x0015, 0x1128, 0x2001, 0x1959, 0x2004, 0x684a, ++ 0x0068, 0x918e, 0x0016, 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, ++ 0xd4ce, 0x080c, 0x83c0, 0x080c, 0x9be7, 0x00ce, 0x080c, 0x9be7, ++ 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0xacb0, 0xabac, 0xd2f4, ++ 0x0130, 0x2001, 0x1959, 0x2004, 0x684a, 0x0804, 0xa28b, 0x00c6, ++ 0x2d60, 0x080c, 0xb445, 0x00ce, 0x6804, 0x9086, 0x0050, 0x1168, ++ 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007, 0x0050, 0x2009, ++ 0x8023, 0x080c, 0x84d1, 0x00ce, 0x04f0, 0x6800, 0x9086, 0x000f, ++ 0x01a8, 0x89ff, 0x090c, 0x0d65, 0x6800, 0x9086, 0x0004, 0x1190, ++ 0xa87c, 0xd0ac, 0x0178, 0xa843, 0x0fff, 0xa83f, 0x0fff, 0xa880, ++ 0xc0fc, 0xa882, 0x2001, 0x0001, 0x6832, 0x0400, 0x2001, 0x0007, ++ 0x6832, 0x00e0, 0xa87c, 0xd0b4, 0x1150, 0xd0ac, 0x0db8, 0x6824, ++ 0xd0f4, 0x1d48, 0xa838, 0xa934, 0x9105, 0x0d80, 0x0c20, 0xd2ec, ++ 0x1d68, 0x7024, 0x9306, 0x1118, 0x7020, 0x9406, 0x0d38, 0x7020, ++ 0x683e, 0x7024, 0x683a, 0x2001, 0x0005, 0x6832, 0x080c, 0xbbc5, ++ 0x080c, 0x8936, 0x0010, 0x080c, 0x9be7, 0x004e, 0x003e, 0x002e, ++ 0x0005, 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, ++ 0x00b6, 0x2258, 0xba10, 0x00be, 0x9206, 0x1904, 0xa2f6, 0x700c, ++ 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be, 0x9206, 0x1904, 0xa2f6, ++ 0x6038, 0x2068, 0x6824, 0xc0dc, 0x6826, 0x6a20, 0x9286, 0x0007, ++ 0x0904, 0xa2f6, 0x9286, 0x0002, 0x0904, 0xa2f6, 0x9286, 0x0000, ++ 0x05e8, 0x6808, 0x633c, 0x9306, 0x15c8, 0x2071, 0x026c, 0x9186, ++ 0x0015, 0x0570, 0x918e, 0x0016, 0x1100, 0x00c6, 0x6038, 0x2060, ++ 0x6104, 0x9186, 0x004b, 0x01c0, 0x9186, 0x004c, 0x01a8, 0x9186, ++ 0x004d, 0x0190, 0x9186, 0x004e, 0x0178, 0x9186, 0x0052, 0x0160, ++ 0x6014, 0x0096, 0x2048, 0x080c, 0xb847, 0x090c, 0x0d65, 0xa87b, ++ 0x0003, 0x009e, 0x080c, 0xbf1b, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0002, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00ce, 0x0030, ++ 0x6038, 0x2070, 0x2001, 0x1959, 0x2004, 0x704a, 0x080c, 0x9be7, ++ 0x002e, 0x00de, 0x00ee, 0x0005, 0x00b6, 0x0096, 0x00f6, 0x6014, ++ 0x2048, 0x6010, 0x2058, 0x91b6, 0x0015, 0x0130, 0xba08, 0xbb0c, ++ 0xbc00, 0xc48c, 0xbc02, 0x0460, 0x0096, 0x0156, 0x0036, 0x0026, ++ 0x2b48, 0x9e90, 0x0010, 0x2019, 0x000a, 0x20a9, 0x0004, 0x080c, ++ 0xabdf, 0x002e, 0x003e, 0x015e, 0x009e, 0x1904, 0xa365, 0x0096, ++ 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0014, 0x2019, 0x0006, ++ 0x20a9, 0x0004, 0x080c, 0xabdf, 0x002e, 0x003e, 0x015e, 0x009e, ++ 0x15a0, 0x7238, 0xba0a, 0x733c, 0xbb0e, 0xbc00, 0xc48d, 0xbc02, ++ 0xa804, 0x9005, 0x1128, 0x00fe, 0x009e, 0x00be, 0x0804, 0x9ff6, ++ 0x0096, 0x2048, 0xaa12, 0xab16, 0xac0a, 0x009e, 0x8006, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, ++ 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, ++ 0x1266, 0x080c, 0xa0f5, 0x0130, 0x00fe, 0x009e, 0x080c, 0x9be7, ++ 0x00be, 0x0005, 0x080c, 0xa58f, 0x0cb8, 0x2b78, 0x00f6, 0x080c, ++ 0x3006, 0x080c, 0xbf76, 0x00fe, 0x00c6, 0x080c, 0x9b91, 0x2f00, ++ 0x6012, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, ++ 0x0001, 0x2001, 0x0007, 0x080c, 0x61c1, 0x080c, 0x61ed, 0x080c, ++ 0x84d8, 0x080c, 0x8936, 0x00ce, 0x0804, 0xa338, 0x2100, 0x91b2, ++ 0x0053, 0x1a0c, 0x0d65, 0x91b2, 0x0040, 0x1a04, 0xa3ee, 0x0002, ++ 0xa3dc, 0xa3dc, 0xa3d2, 0xa3dc, 0xa3dc, 0xa3dc, 0xa3d0, 0xa3d0, ++ 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, ++ 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, ++ 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3dc, ++ 0xa3d0, 0xa3dc, 0xa3dc, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, ++ 0xa3d2, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, ++ 0xa3d0, 0xa3d0, 0xa3dc, 0xa3dc, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, ++ 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3d0, 0xa3dc, 0xa3d0, 0xa3d0, ++ 0x080c, 0x0d65, 0x0066, 0x00b6, 0x6610, 0x2658, 0xb8c4, 0xc08c, ++ 0xb8c6, 0x00be, 0x006e, 0x0000, 0x6003, 0x0001, 0x6106, 0x9186, ++ 0x0032, 0x0118, 0x080c, 0x84d8, 0x0010, 0x080c, 0x84d1, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x8936, 0x012e, 0x0005, 0x2600, 0x0002, ++ 0xa402, 0xa402, 0xa402, 0xa3dc, 0xa3dc, 0xa402, 0xa402, 0xa402, ++ 0xa402, 0xa3dc, 0xa402, 0xa3dc, 0xa402, 0xa3dc, 0xa402, 0xa402, ++ 0xa402, 0xa402, 0x080c, 0x0d65, 0x6004, 0x90b2, 0x0053, 0x1a0c, ++ 0x0d65, 0x91b6, 0x0013, 0x0904, 0xa4d9, 0x91b6, 0x0027, 0x1904, ++ 0xa485, 0x080c, 0x8874, 0x6004, 0x080c, 0xba4b, 0x01b0, 0x080c, ++ 0xba5c, 0x01a8, 0x908e, 0x0021, 0x0904, 0xa482, 0x908e, 0x0022, ++ 0x1130, 0x080c, 0xa022, 0x0904, 0xa47e, 0x0804, 0xa47f, 0x908e, ++ 0x003d, 0x0904, 0xa482, 0x0804, 0xa478, 0x080c, 0x303b, 0x2001, ++ 0x0007, 0x080c, 0x61c1, 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, ++ 0x080c, 0xa58f, 0x9186, 0x007e, 0x1148, 0x2001, 0x1836, 0x2014, ++ 0xc285, 0x080c, 0x70b7, 0x1108, 0xc2ad, 0x2202, 0x080c, 0x98c8, ++ 0x0036, 0x0026, 0x2019, 0x0028, 0x2110, 0x080c, 0xd529, 0x002e, ++ 0x003e, 0x0016, 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, ++ 0x863b, 0x0076, 0x903e, 0x080c, 0x852a, 0x6010, 0x00b6, 0x905d, ++ 0x0100, 0x00be, 0x2c08, 0x080c, 0xcfc8, 0x007e, 0x003e, 0x002e, ++ 0x001e, 0x080c, 0x98e4, 0x080c, 0xbf76, 0x0016, 0x080c, 0xbcd3, ++ 0x080c, 0x9be7, 0x001e, 0x080c, 0x311a, 0x080c, 0x8936, 0x0030, ++ 0x080c, 0xbcd3, 0x080c, 0x9be7, 0x080c, 0x8936, 0x0005, 0x080c, ++ 0xa58f, 0x0cb0, 0x080c, 0xa5cb, 0x0c98, 0x9186, 0x0015, 0x0118, ++ 0x9186, 0x0016, 0x1140, 0x080c, 0x9ab7, 0x0d80, 0x9086, 0x0002, ++ 0x0904, 0xa5d6, 0x0c58, 0x9186, 0x0014, 0x1d40, 0x080c, 0x8874, ++ 0x6004, 0x908e, 0x0022, 0x1118, 0x080c, 0xa022, 0x09f8, 0x080c, ++ 0x3006, 0x080c, 0xbf76, 0x080c, 0xba4b, 0x1190, 0x080c, 0x303b, ++ 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, 0x080c, 0xa58f, 0x9186, ++ 0x007e, 0x1128, 0x2001, 0x1836, 0x200c, 0xc185, 0x2102, 0x0800, ++ 0x080c, 0xba5c, 0x1120, 0x080c, 0xa58f, 0x0804, 0xa478, 0x6004, ++ 0x908e, 0x0032, 0x1160, 0x00e6, 0x00f6, 0x2071, 0x1894, 0x2079, ++ 0x0000, 0x080c, 0x33bc, 0x00fe, 0x00ee, 0x0804, 0xa478, 0x6004, ++ 0x908e, 0x0021, 0x0d40, 0x908e, 0x0022, 0x090c, 0xa58f, 0x0804, ++ 0xa478, 0x90b2, 0x0040, 0x1a04, 0xa578, 0x2008, 0x0002, 0xa521, ++ 0xa522, 0xa525, 0xa528, 0xa52b, 0xa52e, 0xa51f, 0xa51f, 0xa51f, ++ 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, ++ 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, ++ 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa531, 0xa53a, 0xa51f, ++ 0xa53b, 0xa53a, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa53a, ++ 0xa53a, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, 0xa51f, ++ 0xa51f, 0xa563, 0xa53a, 0xa51f, 0xa536, 0xa51f, 0xa51f, 0xa51f, ++ 0xa537, 0xa51f, 0xa51f, 0xa51f, 0xa53a, 0xa55e, 0xa51f, 0x080c, ++ 0x0d65, 0x00c0, 0x2001, 0x000b, 0x00e8, 0x2001, 0x0003, 0x00d0, ++ 0x2001, 0x0005, 0x00b8, 0x2001, 0x0001, 0x00a0, 0x2001, 0x0009, ++ 0x0088, 0x6003, 0x0005, 0x080c, 0x8936, 0x0058, 0x0018, 0x0010, ++ 0x080c, 0x61c1, 0x04b8, 0x080c, 0xbf79, 0x6003, 0x0004, 0x080c, ++ 0x8936, 0x0005, 0x080c, 0x61c1, 0x6003, 0x0002, 0x0036, 0x2019, ++ 0x185e, 0x2304, 0x9084, 0xff00, 0x1120, 0x2001, 0x1957, 0x201c, ++ 0x0040, 0x8007, 0x909a, 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, ++ 0x9318, 0x631a, 0x003e, 0x080c, 0x8936, 0x0c18, 0x080c, 0xbcd3, ++ 0x080c, 0x9be7, 0x08f0, 0x00e6, 0x00f6, 0x2071, 0x1894, 0x2079, ++ 0x0000, 0x080c, 0x33bc, 0x00fe, 0x00ee, 0x080c, 0x8874, 0x080c, ++ 0x9be7, 0x0878, 0x6003, 0x0002, 0x080c, 0xbf79, 0x0804, 0x8936, ++ 0x2600, 0x2008, 0x0002, 0xa58d, 0xa58d, 0xa58d, 0xa572, 0xa572, ++ 0xa58d, 0xa58d, 0xa58d, 0xa58d, 0xa572, 0xa58d, 0xa572, 0xa58d, ++ 0xa572, 0xa58d, 0xa58d, 0xa58d, 0xa58d, 0x080c, 0x0d65, 0x00e6, ++ 0x0096, 0x0026, 0x0016, 0x080c, 0xb847, 0x0568, 0x6014, 0x2048, ++ 0xa864, 0x9086, 0x0139, 0x11a8, 0xa894, 0x9086, 0x0056, 0x1148, ++ 0x080c, 0x512e, 0x0130, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, ++ 0x0028, 0x2001, 0x0030, 0x900e, 0x2011, 0x4005, 0x080c, 0xbe40, ++ 0x0090, 0xa868, 0xd0fc, 0x0178, 0xa807, 0x0000, 0x0016, 0x6004, ++ 0x908e, 0x0021, 0x0168, 0x908e, 0x003d, 0x0150, 0x001e, 0xa867, ++ 0x0103, 0xa833, 0x0100, 0x001e, 0x002e, 0x009e, 0x00ee, 0x0005, ++ 0x001e, 0x0009, 0x0cc0, 0x0096, 0x6014, 0x2048, 0xa800, 0x2048, ++ 0xa867, 0x0103, 0xa823, 0x8001, 0x009e, 0x0005, 0x00b6, 0x6610, ++ 0x2658, 0xb804, 0x9084, 0x00ff, 0x90b2, 0x000c, 0x1a0c, 0x0d65, ++ 0x6604, 0x96b6, 0x004d, 0x1120, 0x080c, 0xbd5f, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x0043, 0x1120, 0x080c, 0xbda8, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x004b, 0x1120, 0x080c, 0xbdd4, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x0033, 0x1120, 0x080c, 0xbcf5, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x0028, 0x1120, 0x080c, 0xba95, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x0029, 0x1120, 0x080c, 0xbad6, 0x0804, 0xa653, ++ 0x6604, 0x96b6, 0x001f, 0x1118, 0x080c, 0x9fcb, 0x04e0, 0x6604, ++ 0x96b6, 0x0000, 0x1118, 0x080c, 0xa2fc, 0x04a8, 0x6604, 0x96b6, ++ 0x0022, 0x1118, 0x080c, 0xa003, 0x0470, 0x6604, 0x96b6, 0x0035, ++ 0x1118, 0x080c, 0xa113, 0x0438, 0x6604, 0x96b6, 0x0039, 0x1118, ++ 0x080c, 0xa291, 0x0400, 0x6604, 0x96b6, 0x003d, 0x1118, 0x080c, ++ 0xa03b, 0x00c8, 0x6604, 0x96b6, 0x0044, 0x1118, 0x080c, 0xa077, ++ 0x0090, 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c, 0xa0a2, 0x0058, ++ 0x91b6, 0x0015, 0x1110, 0x0063, 0x0030, 0x91b6, 0x0016, 0x1128, ++ 0x00be, 0x0804, 0xa911, 0x00be, 0x0005, 0x080c, 0x9ca2, 0x0cd8, ++ 0xa670, 0xa673, 0xa670, 0xa6b7, 0xa670, 0xa845, 0xa91e, 0xa670, ++ 0xa670, 0xa8eb, 0xa670, 0xa8ff, 0x0096, 0x080c, 0x1595, 0x6014, ++ 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, 0x009e, 0x0804, 0x9be7, ++ 0xa001, 0xa001, 0x0005, 0x00e6, 0x2071, 0x1800, 0x708c, 0x9086, ++ 0x0074, 0x1540, 0x080c, 0xcf99, 0x11b0, 0x6010, 0x00b6, 0x2058, ++ 0x7030, 0xd08c, 0x0128, 0xb800, 0xd0bc, 0x0110, 0xc0c5, 0xb802, ++ 0x00e9, 0x00be, 0x2001, 0x0006, 0x080c, 0x61c1, 0x080c, 0x303b, ++ 0x080c, 0x9be7, 0x0088, 0x2001, 0x000a, 0x080c, 0x61c1, 0x080c, ++ 0x303b, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x84d8, 0x080c, ++ 0x8936, 0x0010, 0x080c, 0xa830, 0x00ee, 0x0005, 0x00d6, 0xb800, ++ 0xd084, 0x0158, 0x9006, 0x080c, 0x61ad, 0x2069, 0x1853, 0x6804, ++ 0x0020, 0x2001, 0x0006, 0x080c, 0x61ed, 0x00de, 0x0005, 0x00b6, ++ 0x0096, 0x00d6, 0x2011, 0x1823, 0x2204, 0x9086, 0x0074, 0x1904, ++ 0xa809, 0x6010, 0x2058, 0xbaa0, 0x9286, 0x007e, 0x1120, 0x080c, ++ 0xaa62, 0x0804, 0xa76e, 0x00d6, 0x080c, 0x70b7, 0x0198, 0x0026, ++ 0x2011, 0x0010, 0x080c, 0x668b, 0x002e, 0x05c8, 0x080c, 0x53a1, ++ 0x1540, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, ++ 0xdead, 0x00f8, 0x0026, 0x2011, 0x8008, 0x080c, 0x668b, 0x002e, ++ 0x0530, 0x6014, 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, ++ 0x1140, 0x2001, 0x0030, 0x900e, 0x2011, 0x4009, 0x080c, 0xbe40, ++ 0x0040, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, ++ 0xdead, 0x6010, 0x2058, 0xb9a0, 0x0016, 0x080c, 0x303b, 0x080c, ++ 0x9be7, 0x001e, 0x080c, 0x311a, 0x00de, 0x0804, 0xa80a, 0x00de, ++ 0x080c, 0xaa57, 0x6010, 0x2058, 0xbaa0, 0x9286, 0x0080, 0x1510, ++ 0x6014, 0x9005, 0x01a8, 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, ++ 0xbe40, 0x0030, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, ++ 0x2001, 0x0006, 0x080c, 0x61c1, 0x080c, 0x303b, 0x080c, 0x9be7, ++ 0x0804, 0xa80a, 0x080c, 0xa818, 0x6014, 0x9005, 0x0190, 0x2048, ++ 0xa868, 0xd0f4, 0x01e8, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, ++ 0x1d08, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xbe40, ++ 0x08f8, 0x080c, 0xa80e, 0x0160, 0x9006, 0x080c, 0x61ad, 0x2001, ++ 0x0004, 0x080c, 0x61ed, 0x2001, 0x0007, 0x080c, 0x61c1, 0x08a0, ++ 0x2001, 0x0004, 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0003, ++ 0x080c, 0x84d8, 0x080c, 0x8936, 0x0804, 0xa80a, 0xb85c, 0xd0e4, ++ 0x01d0, 0x080c, 0xbc6d, 0x080c, 0x70b7, 0x0118, 0xd0dc, 0x1904, ++ 0xa730, 0x2011, 0x1836, 0x2204, 0xc0ad, 0x2012, 0x2001, 0x0002, ++ 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x2498, 0x78e2, ++ 0x00fe, 0x0804, 0xa730, 0x080c, 0xbcae, 0x2011, 0x1836, 0x2204, ++ 0xc0a5, 0x2012, 0x0006, 0x080c, 0xd0fe, 0x000e, 0x1904, 0xa730, ++ 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, 0x61c1, 0x9006, 0x080c, ++ 0x61ad, 0x00c6, 0x2001, 0x180f, 0x2004, 0xd09c, 0x0520, 0x00f6, ++ 0x2079, 0x0100, 0x00e6, 0x2071, 0x1800, 0x700c, 0x9084, 0x00ff, ++ 0x78e6, 0x707a, 0x7010, 0x78ea, 0x707e, 0x908c, 0x00ff, 0x00ee, ++ 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x246d, 0x00f6, 0x2100, ++ 0x900e, 0x080c, 0x2424, 0x795a, 0x00fe, 0x9186, 0x0081, 0x01d8, ++ 0x2009, 0x0081, 0x00c8, 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, ++ 0x79ea, 0x7932, 0x7936, 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, ++ 0x246d, 0x00f6, 0x2079, 0x1800, 0x797e, 0x2100, 0x900e, 0x080c, ++ 0x2424, 0x795a, 0x00fe, 0x8108, 0x080c, 0x6210, 0x2b00, 0x00ce, ++ 0x1904, 0xa730, 0x6012, 0x2009, 0x180f, 0x210c, 0xd19c, 0x0150, ++ 0x2009, 0x027c, 0x210c, 0x918c, 0x00ff, 0xb912, 0x2009, 0x027d, ++ 0x210c, 0xb916, 0x2001, 0x0002, 0x080c, 0x61c1, 0x6023, 0x0001, ++ 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, 0x080c, 0x8936, ++ 0x0008, 0x0431, 0x00de, 0x009e, 0x00be, 0x0005, 0x2001, 0x1810, ++ 0x2004, 0xd0a4, 0x0120, 0x2001, 0x1854, 0x2004, 0xd0ac, 0x0005, ++ 0x00e6, 0x080c, 0xd582, 0x0190, 0x2071, 0x0260, 0x7108, 0x720c, ++ 0x918c, 0x00ff, 0x1118, 0x9284, 0xff00, 0x0140, 0x6010, 0x2058, ++ 0xb8a0, 0x9084, 0xff80, 0x1110, 0xb912, 0xba16, 0x00ee, 0x0005, ++ 0x2030, 0x2001, 0x0007, 0x080c, 0x61c1, 0x080c, 0x53a1, 0x1120, ++ 0x2001, 0x0007, 0x080c, 0x61ed, 0x080c, 0x303b, 0x6020, 0x9086, ++ 0x000a, 0x1108, 0x0005, 0x0804, 0x9be7, 0x00b6, 0x00e6, 0x0026, ++ 0x0016, 0x2071, 0x1800, 0x708c, 0x9086, 0x0014, 0x1904, 0xa8e2, ++ 0x00d6, 0x080c, 0x70b7, 0x0198, 0x0026, 0x2011, 0x0010, 0x080c, ++ 0x668b, 0x002e, 0x05c8, 0x080c, 0x53a1, 0x1540, 0x6014, 0x2048, ++ 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0xdead, 0x00f8, 0x0026, ++ 0x2011, 0x8008, 0x080c, 0x668b, 0x002e, 0x0530, 0x6014, 0x2048, ++ 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0030, ++ 0x900e, 0x2011, 0x4009, 0x080c, 0xbe40, 0x0040, 0x6014, 0x2048, ++ 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0xdead, 0x6010, 0x2058, ++ 0xb9a0, 0x0016, 0x080c, 0x303b, 0x080c, 0x9be7, 0x001e, 0x080c, ++ 0x311a, 0x00de, 0x0804, 0xa8e6, 0x00de, 0x080c, 0x53a1, 0x1170, ++ 0x6014, 0x9005, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058, 0xbba0, ++ 0x2021, 0x0006, 0x080c, 0x4a75, 0x004e, 0x003e, 0x00d6, 0x6010, ++ 0x2058, 0x080c, 0x630b, 0x080c, 0xa6a6, 0x00de, 0x080c, 0xab28, ++ 0x1588, 0x6010, 0x2058, 0xb890, 0x9005, 0x0560, 0x2001, 0x0006, ++ 0x080c, 0x61c1, 0x0096, 0x6014, 0x904d, 0x01d0, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, ++ 0x4000, 0x080c, 0xbe40, 0x0060, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x0029, 0x0130, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, ++ 0x009e, 0x080c, 0x303b, 0x6020, 0x9086, 0x000a, 0x0138, 0x080c, ++ 0x9be7, 0x0020, 0x080c, 0xa58f, 0x080c, 0xa830, 0x001e, 0x002e, ++ 0x00ee, 0x00be, 0x0005, 0x2011, 0x1823, 0x2204, 0x9086, 0x0014, ++ 0x1160, 0x2001, 0x0002, 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x84d8, 0x0804, 0x8936, 0x0804, 0xa830, 0x2030, ++ 0x2011, 0x1823, 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, 0x000b, ++ 0x1120, 0x2001, 0x0007, 0x080c, 0x61c1, 0x0804, 0x9be7, 0x0804, ++ 0xa830, 0x0002, 0xa670, 0xa929, 0xa670, 0xa968, 0xa670, 0xaa13, ++ 0xa91e, 0xa670, 0xa670, 0xaa26, 0xa670, 0xaa36, 0x6604, 0x9686, ++ 0x0003, 0x0904, 0xa845, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9be7, ++ 0x0005, 0x00b6, 0x00d6, 0x00c6, 0x080c, 0xaa46, 0x11a0, 0x9006, ++ 0x080c, 0x61ad, 0x080c, 0x3006, 0x080c, 0xbf76, 0x2001, 0x0002, ++ 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, ++ 0x080c, 0x8936, 0x0408, 0x2009, 0x026e, 0x2104, 0x9086, 0x0009, ++ 0x1160, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0170, ++ 0x8001, 0xb842, 0x601b, 0x000a, 0x0078, 0x2009, 0x026f, 0x2104, ++ 0x9084, 0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, 0x080c, 0x3006, ++ 0x080c, 0xbf76, 0x080c, 0xa830, 0x00ce, 0x00de, 0x00be, 0x0005, ++ 0x0096, 0x00b6, 0x0026, 0x9016, 0x080c, 0xaa54, 0x00d6, 0x2069, ++ 0x194d, 0x2d04, 0x9005, 0x0168, 0x6010, 0x2058, 0xb8a0, 0x9086, ++ 0x007e, 0x1138, 0x2069, 0x181f, 0x2d04, 0x8000, 0x206a, 0x00de, ++ 0x0010, 0x00de, 0x0088, 0x9006, 0x080c, 0x61ad, 0x2001, 0x0002, ++ 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, ++ 0x080c, 0x8936, 0x0804, 0xa9e3, 0x080c, 0xb847, 0x01b0, 0x6014, ++ 0x2048, 0xa864, 0x2010, 0x9086, 0x0139, 0x1138, 0x6007, 0x0016, ++ 0x2001, 0x0002, 0x080c, 0xbe9a, 0x00b0, 0x6014, 0x2048, 0xa864, ++ 0xd0fc, 0x0118, 0x2001, 0x0001, 0x0ca8, 0x2001, 0x180e, 0x2004, ++ 0xd0dc, 0x0148, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, ++ 0x1110, 0x9006, 0x0c38, 0x080c, 0xa58f, 0x2009, 0x026e, 0x2134, ++ 0x96b4, 0x00ff, 0x9686, 0x0005, 0x0510, 0x9686, 0x000b, 0x01c8, ++ 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, 0x1118, 0x9686, 0x0009, ++ 0x01b0, 0x9086, 0x1900, 0x1168, 0x9686, 0x0009, 0x0180, 0x2001, ++ 0x0004, 0x080c, 0x61c1, 0x2001, 0x0028, 0x601a, 0x6007, 0x0052, ++ 0x0010, 0x080c, 0xa830, 0x002e, 0x00be, 0x009e, 0x0005, 0x9286, ++ 0x0139, 0x0160, 0x6014, 0x2048, 0x080c, 0xb847, 0x0140, 0xa864, ++ 0x9086, 0x0139, 0x0118, 0xa868, 0xd0fc, 0x0108, 0x0c50, 0x6010, ++ 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0138, 0x8001, 0xb842, ++ 0x601b, 0x000a, 0x6007, 0x0016, 0x08f0, 0xb8a0, 0x9086, 0x007e, ++ 0x1138, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5c6f, 0x00ee, 0x0010, ++ 0x080c, 0x3006, 0x0870, 0x080c, 0xaa54, 0x1160, 0x2001, 0x0004, ++ 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x84d8, ++ 0x0804, 0x8936, 0x080c, 0xa58f, 0x0804, 0xa830, 0x0469, 0x1160, ++ 0x2001, 0x0008, 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0005, ++ 0x080c, 0x84d8, 0x0804, 0x8936, 0x0804, 0xa830, 0x00e9, 0x1160, ++ 0x2001, 0x000a, 0x080c, 0x61c1, 0x6003, 0x0001, 0x6007, 0x0001, ++ 0x080c, 0x84d8, 0x0804, 0x8936, 0x0804, 0xa830, 0x2009, 0x026e, ++ 0x2104, 0x9086, 0x0003, 0x1138, 0x2009, 0x026f, 0x2104, 0x9084, ++ 0xff00, 0x9086, 0x2a00, 0x0005, 0x9085, 0x0001, 0x0005, 0x00b6, ++ 0x00c6, 0x0016, 0x6110, 0x2158, 0x080c, 0x627f, 0x001e, 0x00ce, ++ 0x00be, 0x0005, 0x00b6, 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016, ++ 0x6010, 0x2058, 0x2009, 0x1836, 0x2104, 0x9085, 0x0003, 0x200a, ++ 0x080c, 0xaafa, 0x0560, 0x2009, 0x1836, 0x2104, 0xc0cd, 0x200a, ++ 0x080c, 0x6663, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, 0x080c, ++ 0xd273, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, ++ 0x2009, 0x0001, 0x080c, 0x2fc5, 0x00e6, 0x2071, 0x1800, 0x080c, ++ 0x2ddb, 0x00ee, 0x00c6, 0x0156, 0x20a9, 0x0781, 0x2009, 0x007f, ++ 0x080c, 0x311a, 0x8108, 0x1f04, 0xaa98, 0x015e, 0x00ce, 0x080c, ++ 0xaa57, 0x2071, 0x0260, 0x2079, 0x0200, 0x7817, 0x0001, 0x2001, ++ 0x1836, 0x200c, 0xc1c5, 0x7018, 0xd0fc, 0x0110, 0xd0dc, 0x0118, ++ 0x7038, 0xd0dc, 0x1108, 0xc1c4, 0x7817, 0x0000, 0x2001, 0x1836, ++ 0x2102, 0x2079, 0x0100, 0x2e04, 0x9084, 0x00ff, 0x2069, 0x181e, ++ 0x206a, 0x78e6, 0x0006, 0x8e70, 0x2e04, 0x2069, 0x181f, 0x206a, ++ 0x78ea, 0x7832, 0x7836, 0x2010, 0x9084, 0xff00, 0x001e, 0x9105, ++ 0x2009, 0x182b, 0x200a, 0x2200, 0x9084, 0x00ff, 0x2008, 0x080c, ++ 0x246d, 0x080c, 0x70b7, 0x0170, 0x2071, 0x0260, 0x2069, 0x1953, ++ 0x7048, 0x206a, 0x704c, 0x6806, 0x7050, 0x680a, 0x7054, 0x680e, ++ 0x080c, 0xbc6d, 0x0040, 0x2001, 0x0006, 0x080c, 0x61c1, 0x080c, ++ 0x303b, 0x080c, 0x9be7, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, ++ 0x00be, 0x0005, 0x0096, 0x0026, 0x0036, 0x00e6, 0x0156, 0x2019, ++ 0x182b, 0x231c, 0x83ff, 0x01f0, 0x2071, 0x0260, 0x7200, 0x9294, ++ 0x00ff, 0x7004, 0x9084, 0xff00, 0x9205, 0x9306, 0x1198, 0x2011, ++ 0x0276, 0x20a9, 0x0004, 0x2b48, 0x2019, 0x000a, 0x080c, 0xabdf, ++ 0x1148, 0x2011, 0x027a, 0x20a9, 0x0004, 0x2019, 0x0006, 0x080c, ++ 0xabdf, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, 0x009e, 0x0005, ++ 0x00e6, 0x2071, 0x0260, 0x7034, 0x9086, 0x0014, 0x11a8, 0x7038, ++ 0x9086, 0x0800, 0x1188, 0x703c, 0xd0ec, 0x0160, 0x9084, 0x0f00, ++ 0x9086, 0x0100, 0x1138, 0x7054, 0xd0a4, 0x1110, 0xd0ac, 0x0110, ++ 0x9006, 0x0010, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, 0x0096, ++ 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2029, 0x19c4, 0x252c, 0x2021, 0x19cb, 0x2424, 0x2061, ++ 0x1ddc, 0x2071, 0x1800, 0x7250, 0x7070, 0x9202, 0x1a04, 0xabb7, ++ 0x080c, 0xd2a4, 0x0904, 0xabb0, 0x6720, 0x9786, 0x0007, 0x0904, ++ 0xabb0, 0x2500, 0x9c06, 0x0904, 0xabb0, 0x2400, 0x9c06, 0x0904, ++ 0xabb0, 0x3e08, 0x9186, 0x0002, 0x1148, 0x6010, 0x9005, 0x0130, ++ 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1590, 0x00c6, 0x6043, ++ 0xffff, 0x6000, 0x9086, 0x0004, 0x1110, 0x080c, 0x1914, 0x9786, ++ 0x000a, 0x0148, 0x080c, 0xba5c, 0x1130, 0x00ce, 0x080c, 0xa58f, ++ 0x080c, 0x9c21, 0x00e8, 0x6014, 0x2048, 0x080c, 0xb847, 0x01a8, ++ 0x9786, 0x0003, 0x1530, 0xa867, 0x0103, 0xa87c, 0xd0cc, 0x0130, ++ 0x0096, 0xa878, 0x2048, 0x080c, 0x0fd4, 0x009e, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x698a, 0x080c, 0xba36, 0x080c, 0x9c21, 0x00ce, ++ 0x9ce0, 0x001c, 0x7064, 0x9c02, 0x1210, 0x0804, 0xab5b, 0x012e, ++ 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x009e, 0x00ee, ++ 0x0005, 0x9786, 0x0006, 0x1118, 0x080c, 0xd21e, 0x0c30, 0x9786, ++ 0x000a, 0x0998, 0x0880, 0x220c, 0x2304, 0x9106, 0x1130, 0x8210, ++ 0x8318, 0x1f04, 0xabcb, 0x9006, 0x0005, 0x2304, 0x9102, 0x0218, ++ 0x2001, 0x0001, 0x0008, 0x9006, 0x918d, 0x0001, 0x0005, 0x0136, ++ 0x01c6, 0x0016, 0x8906, 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, ++ 0x9084, 0xffc0, 0x9300, 0x2098, 0x3518, 0x20a9, 0x0001, 0x220c, ++ 0x4002, 0x910e, 0x1140, 0x8210, 0x8319, 0x1dc8, 0x9006, 0x001e, ++ 0x01ce, 0x013e, 0x0005, 0x220c, 0x9102, 0x0218, 0x2001, 0x0001, ++ 0x0010, 0x2001, 0x0000, 0x918d, 0x0001, 0x001e, 0x01ce, 0x013e, ++ 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d65, 0x080c, 0xba4b, ++ 0x0120, 0x080c, 0xba5c, 0x0158, 0x0028, 0x080c, 0x303b, 0x080c, ++ 0xba5c, 0x0128, 0x080c, 0x8874, 0x080c, 0x9be7, 0x0005, 0x080c, ++ 0xa58f, 0x0cc0, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, 0x0208, ++ 0x000a, 0x0005, 0xac41, 0xac41, 0xac41, 0xac41, 0xac41, 0xac41, ++ 0xac41, 0xac41, 0xac41, 0xac41, 0xac41, 0xac43, 0xac43, 0xac43, ++ 0xac43, 0xac41, 0xac41, 0xac41, 0xac43, 0xac41, 0xac41, 0xac41, ++ 0xac41, 0x080c, 0x0d65, 0x600b, 0xffff, 0x6003, 0x000f, 0x6106, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xbf79, 0x2009, 0x8000, 0x080c, ++ 0x84d1, 0x012e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, ++ 0x0040, 0x0804, 0xacc8, 0x9186, 0x0027, 0x1520, 0x080c, 0x8874, ++ 0x080c, 0x3006, 0x080c, 0xbf76, 0x0096, 0x6114, 0x2148, 0x080c, ++ 0xb847, 0x0198, 0x080c, 0xba5c, 0x1118, 0x080c, 0xa58f, 0x0068, ++ 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000, 0xa97c, 0xc1c5, ++ 0xa97e, 0x080c, 0x6996, 0x080c, 0xba36, 0x009e, 0x080c, 0x9be7, ++ 0x0804, 0x8936, 0x9186, 0x0014, 0x1120, 0x6004, 0x9082, 0x0040, ++ 0x0018, 0x080c, 0x0d65, 0x0005, 0x0002, 0xaca6, 0xaca4, 0xaca4, ++ 0xaca4, 0xaca4, 0xaca4, 0xaca4, 0xaca4, 0xaca4, 0xaca4, 0xaca4, ++ 0xacbf, 0xacbf, 0xacbf, 0xacbf, 0xaca4, 0xacbf, 0xaca4, 0xacbf, ++ 0xaca4, 0xaca4, 0xaca4, 0xaca4, 0x080c, 0x0d65, 0x080c, 0x8874, ++ 0x0096, 0x6114, 0x2148, 0x080c, 0xb847, 0x0168, 0xa867, 0x0103, ++ 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, 0x080c, ++ 0x6996, 0x080c, 0xba36, 0x009e, 0x080c, 0x9be7, 0x0005, 0x080c, ++ 0x8874, 0x080c, 0xba5c, 0x090c, 0xa58f, 0x080c, 0x9be7, 0x0005, ++ 0x0002, 0xace2, 0xace0, 0xace0, 0xace0, 0xace0, 0xace0, 0xace0, ++ 0xace0, 0xace0, 0xace0, 0xace0, 0xace4, 0xace4, 0xace4, 0xace4, ++ 0xace0, 0xace6, 0xace0, 0xace4, 0xace0, 0xace0, 0xace0, 0xace0, ++ 0x080c, 0x0d65, 0x080c, 0x0d65, 0x080c, 0x0d65, 0x080c, 0x9be7, ++ 0x0804, 0x8936, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, 0x0208, ++ 0x000a, 0x0005, 0xad09, 0xad09, 0xad09, 0xad09, 0xad09, 0xad42, ++ 0xae31, 0xad09, 0xae3d, 0xad09, 0xad09, 0xad09, 0xad09, 0xad09, ++ 0xad09, 0xad09, 0xad09, 0xad09, 0xad09, 0xae3d, 0xad0b, 0xad09, ++ 0xae3b, 0x080c, 0x0d65, 0x00b6, 0x0096, 0x6114, 0x2148, 0x6010, ++ 0x2058, 0xb800, 0xd0bc, 0x1508, 0xa87b, 0x0000, 0xa867, 0x0103, ++ 0xa877, 0x0000, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115, ++ 0x190c, 0xaec2, 0x080c, 0x67ac, 0x6210, 0x2258, 0xba3c, 0x82ff, ++ 0x0110, 0x8211, 0xba3e, 0xb8c0, 0x9005, 0x0110, 0x080c, 0x639b, ++ 0x080c, 0x9be7, 0x009e, 0x00be, 0x0005, 0xa87c, 0xd0ac, 0x09e0, ++ 0xa838, 0xa934, 0x9105, 0x09c0, 0xa880, 0xd0bc, 0x19a8, 0x080c, ++ 0xbb8c, 0x0c80, 0x00b6, 0x0096, 0x6114, 0x2148, 0x601c, 0xd0fc, ++ 0x1110, 0x7644, 0x0008, 0x9036, 0x96b4, 0x0fff, 0x86ff, 0x1590, ++ 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xae20, 0xa87b, 0x0000, ++ 0xa867, 0x0103, 0xae76, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xaec2, 0x080c, 0x67ac, 0x6210, 0x2258, 0xba3c, ++ 0x82ff, 0x0110, 0x8211, 0xba3e, 0xb8c0, 0x9005, 0x0110, 0x080c, ++ 0x639b, 0x601c, 0xd0fc, 0x1148, 0x7044, 0xd0e4, 0x1904, 0xae04, ++ 0x080c, 0x9be7, 0x009e, 0x00be, 0x0005, 0x2009, 0x0211, 0x210c, ++ 0x080c, 0x0d65, 0x968c, 0x0c00, 0x0150, 0x6010, 0x2058, 0xb800, ++ 0xd0bc, 0x1904, 0xae08, 0x7348, 0xab92, 0x734c, 0xab8e, 0x968c, ++ 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, 0x0028, 0x1118, 0xa87b, ++ 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0xa87b, 0x0015, 0xa87c, 0xd0ac, ++ 0x0170, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0148, 0x7048, 0x9106, ++ 0x1118, 0x704c, 0x9206, 0x0118, 0xa992, 0xaa8e, 0xc6dc, 0x0038, ++ 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0xa867, ++ 0x0103, 0xae76, 0x901e, 0xd6c4, 0x01d8, 0x9686, 0x0100, 0x1130, ++ 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, 0xad4e, 0x735c, 0xab86, ++ 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, ++ 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xb41a, 0x003e, ++ 0xd6cc, 0x0904, 0xad63, 0x7154, 0xa98a, 0x81ff, 0x0904, 0xad63, ++ 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, ++ 0x080c, 0xb41a, 0x2011, 0x0205, 0x2013, 0x0000, 0x080c, 0xbf06, ++ 0x0804, 0xad63, 0xa868, 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, ++ 0x0c50, 0x00a6, 0x2950, 0x080c, 0xb3b9, 0x00ae, 0x080c, 0xbf06, ++ 0x080c, 0xb40a, 0x0804, 0xad65, 0x080c, 0xbb4f, 0x0804, 0xad7a, ++ 0xa87c, 0xd0ac, 0x0904, 0xad8b, 0xa880, 0xd0bc, 0x1904, 0xad8b, ++ 0x7348, 0xa838, 0x9306, 0x11c8, 0x734c, 0xa834, 0x931e, 0x0904, ++ 0xad8b, 0xd6d4, 0x0190, 0xab38, 0x9305, 0x0904, 0xad8b, 0x0068, ++ 0xa87c, 0xd0ac, 0x0904, 0xad56, 0xa838, 0xa934, 0x9105, 0x0904, ++ 0xad56, 0xa880, 0xd0bc, 0x1904, 0xad56, 0x080c, 0xbb8c, 0x0804, ++ 0xad7a, 0x00f6, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, ++ 0x00fe, 0x0021, 0x0005, 0x0011, 0x0005, 0x0005, 0x0096, 0x6003, ++ 0x0002, 0x6007, 0x0043, 0x6014, 0x2048, 0xa87c, 0xd0ac, 0x0128, ++ 0x009e, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0xa9ac, 0x910a, ++ 0x2300, 0xaab0, 0x9213, 0x2600, 0x9102, 0x2500, 0x9203, 0x0e90, ++ 0xac46, 0xab4a, 0xae36, 0xad3a, 0x6044, 0xd0fc, 0x190c, 0x98f1, ++ 0x604b, 0x0000, 0x080c, 0x1ad2, 0x1118, 0x6144, 0x080c, 0x84fd, ++ 0x009e, 0x0005, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, 0x0208, ++ 0x000a, 0x0005, 0xae89, 0xae89, 0xae89, 0xae89, 0xae89, 0xae89, ++ 0xae89, 0xae89, 0xae89, 0xae89, 0xae8b, 0xae89, 0xae89, 0xae89, ++ 0xae89, 0xae9c, 0xae89, 0xae89, 0xae89, 0xae89, 0xaec0, 0xae89, ++ 0xae89, 0x080c, 0x0d65, 0x6004, 0x9086, 0x0040, 0x1110, 0x080c, ++ 0x8874, 0x2019, 0x0001, 0x080c, 0x9286, 0x6003, 0x0002, 0x080c, ++ 0xbf7e, 0x080c, 0x88d1, 0x0005, 0x6004, 0x9086, 0x0040, 0x1110, ++ 0x080c, 0x8874, 0x2019, 0x0001, 0x080c, 0x9286, 0x080c, 0x88d1, ++ 0x080c, 0x3006, 0x080c, 0xbf76, 0x0096, 0x6114, 0x2148, 0x080c, ++ 0xb847, 0x0150, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000, ++ 0x080c, 0x6996, 0x080c, 0xba36, 0x009e, 0x080c, 0x9be7, 0x0005, ++ 0x080c, 0x0d65, 0xa87b, 0x0015, 0xd1fc, 0x0180, 0xa87b, 0x0007, ++ 0x8002, 0x8000, 0x810a, 0x9189, 0x0000, 0x0006, 0x0016, 0x2009, ++ 0x1a48, 0x2104, 0x8000, 0x200a, 0x001e, 0x000e, 0xa992, 0xa88e, ++ 0x0005, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, ++ 0x0005, 0xaef8, 0xaef8, 0xaef8, 0xaef8, 0xaef8, 0xaefa, 0xaef8, ++ 0xaef8, 0xafb7, 0xaef8, 0xaef8, 0xaef8, 0xaef8, 0xaef8, 0xaef8, ++ 0xaef8, 0xaef8, 0xaef8, 0xaef8, 0xb0fb, 0xaef8, 0xb105, 0xaef8, ++ 0x080c, 0x0d65, 0x601c, 0xd0bc, 0x0178, 0xd084, 0x0168, 0xd0f4, ++ 0x0120, 0xc084, 0x601e, 0x0804, 0xacea, 0x6114, 0x0096, 0x2148, ++ 0xa87c, 0xc0e5, 0xa87e, 0x009e, 0x0076, 0x00a6, 0x00e6, 0x0096, ++ 0x2071, 0x0260, 0x6114, 0x2150, 0x601c, 0xd0fc, 0x1110, 0x7644, ++ 0x0008, 0x9036, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e, ++ 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, ++ 0x00be, 0x86ff, 0x0904, 0xafb0, 0x9694, 0xff00, 0x9284, 0x0c00, ++ 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904, ++ 0xafb0, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, ++ 0xb676, 0x0c38, 0x080c, 0x1022, 0x090c, 0x0d65, 0x2900, 0xb07a, ++ 0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a, ++ 0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, 0x9084, 0xf000, 0x9635, ++ 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, 0xab8e, ++ 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118, ++ 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, 0x0038, ++ 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0xaf7e, ++ 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, 0x735c, ++ 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, ++ 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xb41a, ++ 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8, 0x9192, ++ 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, 0x080c, ++ 0xb41a, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068, 0xd0fc, ++ 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c, 0xb3b9, ++ 0x080c, 0x18f2, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, 0x2001, ++ 0x1959, 0x2004, 0x604a, 0x0096, 0x6114, 0x2148, 0xa83c, 0xa940, ++ 0x9105, 0x1118, 0xa87c, 0xc0dc, 0xa87e, 0x6003, 0x0002, 0x080c, ++ 0xbf87, 0x0904, 0xb0f6, 0x604b, 0x0000, 0x6010, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x1500, 0xd1cc, 0x0904, 0xb0b5, 0xa978, ++ 0xa868, 0xd0fc, 0x0904, 0xb076, 0x0016, 0xa87c, 0x0006, 0xa880, ++ 0x0006, 0x00a6, 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, ++ 0x0904, 0xb044, 0x9086, 0x0028, 0x1904, 0xb030, 0xa87b, 0x001c, ++ 0xb07b, 0x001c, 0x0804, 0xb04c, 0x6024, 0xd0f4, 0x11d0, 0xa838, ++ 0xaa34, 0x9205, 0x09c8, 0xa838, 0xaa90, 0x9206, 0x1120, 0xa88c, ++ 0xaa34, 0x9206, 0x0988, 0x6024, 0xd0d4, 0x1148, 0xa9ac, 0xa834, ++ 0x9102, 0x603a, 0xa9b0, 0xa838, 0x9103, 0x603e, 0x6024, 0xc0f5, ++ 0x6026, 0x6010, 0x00b6, 0x2058, 0xb83c, 0x8000, 0xb83e, 0x00be, ++ 0x601c, 0xc0fc, 0x601e, 0x9006, 0xa876, 0xa892, 0xa88e, 0xa87c, ++ 0xc0e4, 0xa87e, 0xd0cc, 0x0140, 0xc0cc, 0xa87e, 0x0096, 0xa878, ++ 0x2048, 0x080c, 0x0fd4, 0x009e, 0x080c, 0xbb8c, 0x0804, 0xb0f6, ++ 0xd1dc, 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xbe29, ++ 0x0118, 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, ++ 0x0007, 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, ++ 0xa938, 0x9115, 0x190c, 0xaec2, 0xa87c, 0xb07e, 0xa890, 0xb092, ++ 0xa88c, 0xb08e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, ++ 0x20a9, 0x0020, 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e0, ++ 0x9084, 0xffc0, 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, 0x000e, ++ 0xa882, 0x000e, 0xa87e, 0x080c, 0xbf06, 0x001e, 0xa874, 0x0006, ++ 0x2148, 0x080c, 0x0fd4, 0x001e, 0x0804, 0xb0e2, 0x0016, 0x00a6, ++ 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, 0x9086, ++ 0x0028, 0x1128, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, 0xd1dc, ++ 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xbe29, 0x0118, ++ 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, ++ 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xaec2, 0xa890, 0xb092, 0xa88c, 0xb08e, 0xa87c, ++ 0xb07e, 0x00ae, 0x080c, 0x0fd4, 0x009e, 0x080c, 0xbf06, 0xa974, ++ 0x0016, 0x080c, 0xb40a, 0x001e, 0x0468, 0xa867, 0x0103, 0xa974, ++ 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, 0x1118, ++ 0xa87b, 0x001c, 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, 0x080c, ++ 0xbe29, 0x0118, 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, 0x0118, ++ 0xa87b, 0x0007, 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, 0x0128, ++ 0xa834, 0xa938, 0x9115, 0x190c, 0xaec2, 0xa974, 0x0016, 0x080c, ++ 0x67ac, 0x001e, 0x6010, 0x00b6, 0x2058, 0xba3c, 0x82ff, 0x0110, ++ 0x8211, 0xba3e, 0xb8c0, 0x9005, 0x0120, 0x0016, 0x080c, 0x639b, ++ 0x001e, 0x00be, 0xd1e4, 0x1120, 0x080c, 0x9be7, 0x009e, 0x0005, ++ 0x080c, 0xbb4f, 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, 0x080c, ++ 0xbf87, 0x190c, 0x1900, 0x009e, 0x0005, 0x0096, 0x6114, 0x2148, ++ 0xa83c, 0xa940, 0x9105, 0x01e8, 0xa877, 0x0000, 0xa87b, 0x0000, ++ 0xa867, 0x0103, 0x00b6, 0x6010, 0x2058, 0xa834, 0xa938, 0x9115, ++ 0x11a0, 0x080c, 0x67ac, 0xba3c, 0x8211, 0x0208, 0xba3e, 0xb8c0, ++ 0x9005, 0x0110, 0x080c, 0x639b, 0x080c, 0x9be7, 0x00be, 0x009e, ++ 0x0005, 0xa87c, 0xc0dc, 0xa87e, 0x08f8, 0xb800, 0xd0bc, 0x1120, ++ 0xa834, 0x080c, 0xaec2, 0x0c28, 0xa880, 0xd0bc, 0x1dc8, 0x080c, ++ 0xbb8c, 0x0c60, 0x080c, 0x8874, 0x0010, 0x080c, 0x88d1, 0x601c, ++ 0xd084, 0x0110, 0x080c, 0x1914, 0x080c, 0xb847, 0x01f0, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0xba5c, 0x1118, 0x080c, 0xa58f, 0x00a0, ++ 0xa867, 0x0103, 0x2009, 0x180c, 0x210c, 0xd18c, 0x1198, 0xd184, ++ 0x1170, 0x6108, 0xa97a, 0x918e, 0x0029, 0x1110, 0x080c, 0xd51a, ++ 0xa877, 0x0000, 0x080c, 0x6996, 0x009e, 0x0804, 0x9c21, 0xa87b, ++ 0x0004, 0x0cb0, 0xa87b, 0x0004, 0x0c98, 0x9182, 0x0057, 0x1220, ++ 0x9182, 0x0040, 0x0208, 0x000a, 0x0005, 0xb18c, 0xb18c, 0xb18c, ++ 0xb18c, 0xb18c, 0xb18e, 0xb18c, 0xb18c, 0xb18c, 0xb18c, 0xb18c, ++ 0xb18c, 0xb18c, 0xb18c, 0xb18c, 0xb18c, 0xb18c, 0xb18c, 0xb18c, ++ 0xb18c, 0xb1b2, 0xb18c, 0xb18c, 0x080c, 0x0d65, 0x080c, 0x5395, ++ 0x01f8, 0x6014, 0x7144, 0x918c, 0x0fff, 0x9016, 0xd1c4, 0x0118, ++ 0x7264, 0x9294, 0x00ff, 0x0096, 0x904d, 0x0188, 0xa87b, 0x0000, ++ 0xa864, 0x9086, 0x0139, 0x0128, 0xa867, 0x0103, 0xa976, 0xaa96, ++ 0x0030, 0xa897, 0x4000, 0xa99a, 0xaa9e, 0x080c, 0x6996, 0x009e, ++ 0x0804, 0x9be7, 0x080c, 0x5395, 0x0dd8, 0x6014, 0x900e, 0x9016, ++ 0x0c10, 0x9182, 0x0085, 0x0002, 0xb1cb, 0xb1c9, 0xb1c9, 0xb1d7, ++ 0xb1c9, 0xb1c9, 0xb1c9, 0xb1c9, 0xb1c9, 0xb1c9, 0xb1c9, 0xb1c9, ++ 0xb1c9, 0x080c, 0x0d65, 0x6003, 0x0001, 0x6106, 0x0126, 0x2091, ++ 0x8000, 0x2009, 0x8020, 0x080c, 0x84d1, 0x012e, 0x0005, 0x0026, ++ 0x0056, 0x00d6, 0x00e6, 0x2071, 0x0260, 0x7224, 0x6216, 0x7220, ++ 0x080c, 0xb835, 0x01a0, 0x2268, 0x6800, 0x9086, 0x0000, 0x0178, ++ 0x6010, 0x6d10, 0x952e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0xb445, ++ 0x00ce, 0x0128, 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, ++ 0x0087, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x9280, ++ 0x0004, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6824, ++ 0xd0ec, 0x0128, 0x00c6, 0x2260, 0x080c, 0xbb8c, 0x00ce, 0x00ee, ++ 0x00de, 0x005e, 0x002e, 0x0005, 0x9186, 0x0013, 0x1160, 0x6004, ++ 0x908a, 0x0085, 0x0a0c, 0x0d65, 0x908a, 0x0092, 0x1a0c, 0x0d65, ++ 0x9082, 0x0085, 0x00e2, 0x9186, 0x0027, 0x0120, 0x9186, 0x0014, ++ 0x190c, 0x0d65, 0x080c, 0x8874, 0x0096, 0x6014, 0x2048, 0x080c, ++ 0xb847, 0x0140, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, ++ 0x080c, 0x6996, 0x009e, 0x080c, 0x9c21, 0x0804, 0x8936, 0xb24c, ++ 0xb24e, 0xb24e, 0xb24c, 0xb24c, 0xb24c, 0xb24c, 0xb24c, 0xb24c, ++ 0xb24c, 0xb24c, 0xb24c, 0xb24c, 0x080c, 0x0d65, 0x080c, 0x9c21, ++ 0x0005, 0x9186, 0x0013, 0x1130, 0x6004, 0x9082, 0x0085, 0x2008, ++ 0x0804, 0xb29d, 0x9186, 0x0027, 0x1558, 0x080c, 0x8874, 0x080c, ++ 0x3006, 0x080c, 0xbf76, 0x0096, 0x6014, 0x2048, 0x080c, 0xb847, ++ 0x0150, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, ++ 0x6996, 0x080c, 0xba36, 0x009e, 0x080c, 0x9be7, 0x0005, 0x9186, ++ 0x0089, 0x0118, 0x9186, 0x008a, 0x1140, 0x080c, 0x9ab7, 0x0128, ++ 0x9086, 0x000c, 0x0904, 0xb2d5, 0x0000, 0x080c, 0x9ca2, 0x0c70, ++ 0x9186, 0x0014, 0x1d60, 0x080c, 0x8874, 0x0096, 0x6014, 0x2048, ++ 0x080c, 0xb847, 0x0d00, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, ++ 0x0006, 0xa880, 0xc0ec, 0xa882, 0x0890, 0x0002, 0xb2ad, 0xb2ab, ++ 0xb2ab, 0xb2ab, 0xb2ab, 0xb2ab, 0xb2c1, 0xb2ab, 0xb2ab, 0xb2ab, ++ 0xb2ab, 0xb2ab, 0xb2ab, 0x080c, 0x0d65, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, ++ 0x1957, 0x0010, 0x2001, 0x1958, 0x2004, 0x601a, 0x6003, 0x000c, ++ 0x0005, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, ++ 0x9186, 0x0035, 0x1118, 0x2001, 0x1957, 0x0010, 0x2001, 0x1958, ++ 0x2004, 0x601a, 0x6003, 0x000e, 0x0005, 0x9182, 0x0092, 0x1220, ++ 0x9182, 0x0085, 0x0208, 0x0012, 0x0804, 0x9ca2, 0xb2eb, 0xb2eb, ++ 0xb2eb, 0xb2eb, 0xb2ed, 0xb33a, 0xb2eb, 0xb2eb, 0xb2eb, 0xb2eb, ++ 0xb2eb, 0xb2eb, 0xb2eb, 0x080c, 0x0d65, 0x0096, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0168, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x009e, ++ 0x0804, 0xb34e, 0x080c, 0xb847, 0x1118, 0x080c, 0xba36, 0x0068, ++ 0x6014, 0x2048, 0x080c, 0xbf8d, 0x1110, 0x080c, 0xba36, 0xa867, ++ 0x0103, 0x080c, 0xbf41, 0x080c, 0x6996, 0x00d6, 0x2c68, 0x080c, ++ 0x9b91, 0x01d0, 0x6003, 0x0001, 0x6007, 0x001e, 0x600b, 0xffff, ++ 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, 0x613e, ++ 0x6910, 0x6112, 0x080c, 0xbcdb, 0x695c, 0x615e, 0x6023, 0x0001, ++ 0x2009, 0x8020, 0x080c, 0x84d1, 0x2d60, 0x00de, 0x080c, 0x9be7, ++ 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x05a0, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0035, 0x0130, ++ 0x9186, 0x001e, 0x0118, 0x9186, 0x0039, 0x1538, 0x00d6, 0x2c68, ++ 0x080c, 0xbed9, 0x11f0, 0x080c, 0x9b91, 0x01d8, 0x6106, 0x6003, ++ 0x0001, 0x6023, 0x0001, 0x6910, 0x6112, 0x692c, 0x612e, 0x6930, ++ 0x6132, 0x6934, 0x918c, 0x00ff, 0x6136, 0x6938, 0x613a, 0x693c, ++ 0x613e, 0x695c, 0x615e, 0x080c, 0xbcdb, 0x2009, 0x8020, 0x080c, ++ 0x84d1, 0x2d60, 0x00de, 0x0804, 0x9be7, 0x0096, 0x6014, 0x2048, ++ 0x080c, 0xb847, 0x01c8, 0xa867, 0x0103, 0xa880, 0xd0b4, 0x0128, ++ 0xc0ec, 0xa882, 0xa87b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0xa87b, ++ 0x0002, 0x0020, 0xa87b, 0x0005, 0x080c, 0xbb4b, 0xa877, 0x0000, ++ 0x080c, 0x6996, 0x080c, 0xba36, 0x009e, 0x0804, 0x9be7, 0x0016, ++ 0x0096, 0x6014, 0x2048, 0x080c, 0xb847, 0x0140, 0xa867, 0x0103, ++ 0xa87b, 0x0028, 0xa877, 0x0000, 0x080c, 0x6996, 0x009e, 0x001e, ++ 0x9186, 0x0013, 0x0158, 0x9186, 0x0014, 0x0130, 0x9186, 0x0027, ++ 0x0118, 0x080c, 0x9ca2, 0x0020, 0x080c, 0x8874, 0x080c, 0x9c21, ++ 0x0005, 0x0056, 0x0066, 0x0096, 0x00a6, 0x2029, 0x0001, 0x9182, ++ 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x8304, 0x9098, ++ 0x0018, 0x2009, 0x0020, 0x2011, 0x0029, 0x080c, 0xb41a, 0x96b2, ++ 0x0020, 0xb004, 0x904d, 0x0110, 0x080c, 0x0fd4, 0x080c, 0x1022, ++ 0x0520, 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, ++ 0x968a, 0x003d, 0x1228, 0x2608, 0x2011, 0x001b, 0x0499, 0x00a8, ++ 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x0451, ++ 0x0c28, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, ++ 0x0003, 0xb566, 0x95ac, 0x0000, 0x0048, 0x2001, 0x0205, 0x2003, ++ 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, 0x009e, 0x006e, ++ 0x005e, 0x0005, 0x00a6, 0x89ff, 0x0158, 0xa804, 0x9055, 0x0130, ++ 0xa807, 0x0000, 0x080c, 0x6996, 0x2a48, 0x0cb8, 0x080c, 0x6996, ++ 0x00ae, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7814, 0x9085, 0x0080, ++ 0x7816, 0xd184, 0x0108, 0x8108, 0x810c, 0x20a9, 0x0001, 0xa860, ++ 0x20e8, 0xa85c, 0x9200, 0x20a0, 0x20e1, 0x0000, 0x2300, 0x9e00, ++ 0x2098, 0x4003, 0x8318, 0x9386, 0x0020, 0x1148, 0x2018, 0x2300, ++ 0x9e00, 0x2098, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, 0x8109, ++ 0x1d80, 0x7817, 0x0000, 0x00fe, 0x0005, 0x0066, 0x0126, 0x2091, ++ 0x8000, 0x2031, 0x0001, 0x6020, 0x9084, 0x000f, 0x0083, 0x012e, ++ 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, ++ 0x6020, 0x9084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xb497, ++ 0xb497, 0xb492, 0xb4bb, 0xb46f, 0xb492, 0xb471, 0xb492, 0xb46f, ++ 0xb46f, 0xb492, 0xb492, 0xb492, 0xb46f, 0xb46f, 0xb46f, 0x080c, ++ 0x0d65, 0x6010, 0x9080, 0x0000, 0x2004, 0xd0bc, 0x190c, 0xb4bb, ++ 0x0036, 0x6014, 0x0096, 0x2048, 0xa880, 0x009e, 0xd0cc, 0x0118, ++ 0x2019, 0x000c, 0x0038, 0xd094, 0x0118, 0x2019, 0x000d, 0x0010, ++ 0x2019, 0x0010, 0x080c, 0xcdf9, 0x6023, 0x0006, 0x6003, 0x0007, ++ 0x003e, 0x0005, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x0096, ++ 0x86ff, 0x11e8, 0x6014, 0x2048, 0x080c, 0xb847, 0x01d0, 0x6043, ++ 0xffff, 0xa864, 0x9086, 0x0139, 0x1128, 0xa87b, 0x0005, 0xa883, ++ 0x0000, 0x0028, 0x900e, 0x2001, 0x0005, 0x080c, 0x6bb3, 0x080c, ++ 0xbb4b, 0x080c, 0x698a, 0x080c, 0x9c21, 0x9085, 0x0001, 0x009e, ++ 0x0005, 0x9006, 0x0ce0, 0x080c, 0x98c8, 0x080c, 0xbf9b, 0x6000, ++ 0x908a, 0x0016, 0x1a0c, 0x0d65, 0x002b, 0x0106, 0x080c, 0x98e4, ++ 0x010e, 0x0005, 0xb4da, 0xb508, 0xb4dc, 0xb52f, 0xb503, 0xb4da, ++ 0xb492, 0xb497, 0xb497, 0xb492, 0xb492, 0xb492, 0xb492, 0xb492, ++ 0xb492, 0xb492, 0x080c, 0x0d65, 0x86ff, 0x1510, 0x6020, 0x9086, ++ 0x0006, 0x01f0, 0x0096, 0x6014, 0x2048, 0x080c, 0xb847, 0x0158, ++ 0xa87c, 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0fd4, ++ 0x009e, 0x080c, 0xbb4b, 0x009e, 0x080c, 0xbf1b, 0x6007, 0x0085, ++ 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, 0x8020, 0x080c, 0x84b3, ++ 0x9085, 0x0001, 0x0005, 0x0066, 0x080c, 0x1914, 0x006e, 0x08a0, ++ 0x00e6, 0x2071, 0x19b8, 0x7030, 0x9c06, 0x1120, 0x080c, 0x9206, ++ 0x00ee, 0x0850, 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, 0x1150, ++ 0x0086, 0x0096, 0x2049, 0x0001, 0x2c40, 0x080c, 0x9382, 0x009e, ++ 0x008e, 0x0040, 0x0066, 0x080c, 0x9102, 0x190c, 0x0d65, 0x080c, ++ 0x9110, 0x006e, 0x00ee, 0x1904, 0xb4dc, 0x0804, 0xb492, 0x0036, ++ 0x00e6, 0x2071, 0x19b8, 0x704c, 0x9c06, 0x1138, 0x901e, 0x080c, ++ 0x9286, 0x00ee, 0x003e, 0x0804, 0xb4dc, 0x080c, 0x94b8, 0x00ee, ++ 0x003e, 0x1904, 0xb4dc, 0x0804, 0xb492, 0x00c6, 0x0066, 0x6020, ++ 0x9084, 0x000f, 0x001b, 0x006e, 0x00ce, 0x0005, 0xb565, 0xb627, ++ 0xb78e, 0xb56d, 0x9c21, 0xb565, 0xcdeb, 0xbf83, 0xb627, 0xb55e, ++ 0xb80d, 0xb55e, 0xb55e, 0xb55e, 0xb55e, 0xb55e, 0x080c, 0x0d65, ++ 0x080c, 0xba5c, 0x1110, 0x080c, 0xa58f, 0x0005, 0x080c, 0x8874, ++ 0x0804, 0x9be7, 0x601b, 0x0001, 0x0005, 0x080c, 0xb847, 0x0130, ++ 0x6014, 0x0096, 0x2048, 0x2c00, 0xa896, 0x009e, 0x080c, 0x98c8, ++ 0x080c, 0xbf9b, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d65, 0x0013, ++ 0x0804, 0x98e4, 0xb592, 0xb594, 0xb5be, 0xb5d2, 0xb5fd, 0xb592, ++ 0xb565, 0xb565, 0xb565, 0xb5d9, 0xb5d9, 0xb592, 0xb592, 0xb592, ++ 0xb592, 0xb5e3, 0x080c, 0x0d65, 0x00e6, 0x6014, 0x0096, 0x2048, ++ 0xa880, 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19b8, 0x7030, 0x9c06, ++ 0x01d0, 0x0066, 0x080c, 0x9102, 0x190c, 0x0d65, 0x080c, 0x9110, ++ 0x006e, 0x080c, 0xbf1b, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, ++ 0x0002, 0x2001, 0x1958, 0x2004, 0x601a, 0x2009, 0x8020, 0x080c, ++ 0x84b3, 0x00ee, 0x0005, 0x601b, 0x0001, 0x0cd8, 0x0096, 0x6014, ++ 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x080c, 0xbf1b, 0x6007, ++ 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, 0x8020, 0x080c, ++ 0x84b3, 0x0005, 0x080c, 0x98c8, 0x080c, 0x9a39, 0x080c, 0x98e4, ++ 0x0c28, 0x0096, 0x601b, 0x0001, 0x6014, 0x2048, 0xa880, 0xc0b5, ++ 0xa882, 0x009e, 0x0005, 0x080c, 0x5395, 0x01a8, 0x6014, 0x0096, ++ 0x904d, 0x0180, 0xa864, 0xa867, 0x0103, 0xa87b, 0x0006, 0x9086, ++ 0x0139, 0x1140, 0xa867, 0x0139, 0xa897, 0x4005, 0xa89b, 0x0004, ++ 0x080c, 0x6996, 0x009e, 0x0804, 0x9be7, 0x6014, 0x0096, 0x904d, ++ 0x0508, 0x080c, 0xbf87, 0x01f0, 0x080c, 0x98e4, 0x2001, 0x180f, ++ 0x2004, 0xd0c4, 0x0110, 0x009e, 0x0005, 0xa884, 0x009e, 0x8003, ++ 0x800b, 0x810b, 0x9108, 0x611a, 0x2001, 0x0037, 0x2c08, 0x080c, ++ 0x159e, 0x6000, 0x9086, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, ++ 0x9c85, 0x0005, 0x009e, 0x080c, 0x1914, 0x0804, 0xb5be, 0x6000, ++ 0x908a, 0x0016, 0x1a0c, 0x0d65, 0x000b, 0x0005, 0xb63e, 0xb56a, ++ 0xb640, 0xb63e, 0xb640, 0xb640, 0xb566, 0xb63e, 0xb560, 0xb560, ++ 0xb63e, 0xb63e, 0xb63e, 0xb63e, 0xb63e, 0xb63e, 0x080c, 0x0d65, ++ 0x6010, 0x00b6, 0x2058, 0xb804, 0x9084, 0x00ff, 0x00be, 0x908a, ++ 0x000c, 0x1a0c, 0x0d65, 0x00b6, 0x0013, 0x00be, 0x0005, 0xb65b, ++ 0xb728, 0xb65d, 0xb69d, 0xb65d, 0xb69d, 0xb65d, 0xb66b, 0xb65b, ++ 0xb69d, 0xb65b, 0xb68c, 0x080c, 0x0d65, 0x6004, 0x908e, 0x0016, ++ 0x05c0, 0x908e, 0x0004, 0x05a8, 0x908e, 0x0002, 0x0590, 0x908e, ++ 0x0052, 0x0904, 0xb724, 0x6004, 0x080c, 0xba5c, 0x0904, 0xb741, ++ 0x908e, 0x0004, 0x1110, 0x080c, 0x303b, 0x908e, 0x0021, 0x0904, ++ 0xb745, 0x908e, 0x0022, 0x0904, 0xb789, 0x908e, 0x003d, 0x0904, ++ 0xb745, 0x908e, 0x0039, 0x0904, 0xb749, 0x908e, 0x0035, 0x0904, ++ 0xb749, 0x908e, 0x001e, 0x0178, 0x908e, 0x0001, 0x1140, 0x6010, ++ 0x2058, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0110, 0x080c, ++ 0x3006, 0x080c, 0xa58f, 0x0804, 0x9c21, 0x00c6, 0x00d6, 0x6104, ++ 0x9186, 0x0016, 0x0904, 0xb715, 0x9186, 0x0002, 0x1904, 0xb6ea, ++ 0x2001, 0x1836, 0x2004, 0xd08c, 0x11c8, 0x080c, 0x70b7, 0x11b0, ++ 0x080c, 0xbf61, 0x0138, 0x080c, 0x70da, 0x1120, 0x080c, 0x6fc2, ++ 0x0804, 0xb772, 0x2001, 0x194e, 0x2003, 0x0001, 0x2001, 0x1800, ++ 0x2003, 0x0001, 0x080c, 0x6fe8, 0x0804, 0xb772, 0x6010, 0x2058, ++ 0x2001, 0x1836, 0x2004, 0xd0ac, 0x1904, 0xb772, 0xb8a0, 0x9084, ++ 0xff80, 0x1904, 0xb772, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0190, ++ 0x8001, 0xb842, 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, ++ 0x604b, 0x0000, 0x080c, 0x9b91, 0x0128, 0x2b00, 0x6012, 0x6023, ++ 0x0001, 0x0458, 0x00de, 0x00ce, 0x6004, 0x908e, 0x0002, 0x11a0, ++ 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1170, 0x2009, 0x1836, ++ 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5c6f, ++ 0x00ee, 0x080c, 0xa58f, 0x0030, 0x080c, 0xa58f, 0x080c, 0x3006, ++ 0x080c, 0xbf76, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x303b, ++ 0x012e, 0x00ee, 0x080c, 0x9c21, 0x0005, 0x2001, 0x0002, 0x080c, ++ 0x61c1, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, 0x080c, ++ 0x8936, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x303b, 0x0804, 0xb699, ++ 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38, 0x6010, 0x2058, ++ 0xb840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xb6ea, 0x8001, 0xb842, ++ 0x6003, 0x0001, 0x080c, 0x84d8, 0x080c, 0x8936, 0x00de, 0x00ce, ++ 0x0898, 0x080c, 0xa58f, 0x0804, 0xb69b, 0x080c, 0xa5cb, 0x0804, ++ 0xb69b, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xbed9, 0x00de, 0x0118, ++ 0x080c, 0x9be7, 0x00f0, 0x6004, 0x8007, 0x6134, 0x918c, 0x00ff, ++ 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, ++ 0x603c, 0x600a, 0x2001, 0x1958, 0x2004, 0x601a, 0x602c, 0x2c08, ++ 0x2060, 0x6024, 0xc0b5, 0x6026, 0x2160, 0x2009, 0x8020, 0x080c, ++ 0x84d1, 0x0005, 0x00de, 0x00ce, 0x080c, 0xa58f, 0x080c, 0x3006, ++ 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x303b, 0x6017, 0x0000, ++ 0x6023, 0x0007, 0x601b, 0x0398, 0x604b, 0x0000, 0x012e, 0x00ee, ++ 0x0005, 0x080c, 0xa022, 0x1904, 0xb741, 0x0005, 0x6000, 0x908a, ++ 0x0016, 0x1a0c, 0x0d65, 0x0096, 0x00d6, 0x001b, 0x00de, 0x009e, ++ 0x0005, 0xb7a9, 0xb7a9, 0xb7a9, 0xb7a9, 0xb7a9, 0xb7a9, 0xb7a9, ++ 0xb7a9, 0xb7a9, 0xb565, 0xb7a9, 0xb56a, 0xb7ab, 0xb56a, 0xb7b8, ++ 0xb7a9, 0x080c, 0x0d65, 0x6004, 0x9086, 0x008b, 0x0148, 0x6007, ++ 0x008b, 0x6003, 0x000d, 0x2009, 0x8020, 0x080c, 0x84d1, 0x0005, ++ 0x080c, 0xbf55, 0x0118, 0x080c, 0xbf68, 0x0010, 0x080c, 0xbf76, ++ 0x080c, 0xba36, 0x080c, 0xb847, 0x0570, 0x080c, 0x3006, 0x080c, ++ 0xb847, 0x0168, 0x6014, 0x2048, 0xa867, 0x0103, 0xa87b, 0x0006, ++ 0xa877, 0x0000, 0xa880, 0xc0ed, 0xa882, 0x080c, 0x6996, 0x2c68, ++ 0x080c, 0x9b91, 0x0150, 0x6810, 0x6012, 0x080c, 0xbcdb, 0x00c6, ++ 0x2d60, 0x080c, 0x9c21, 0x00ce, 0x0008, 0x2d60, 0x6017, 0x0000, ++ 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x84d8, ++ 0x080c, 0x8936, 0x00c8, 0x080c, 0xbf55, 0x0138, 0x6034, 0x9086, ++ 0x4000, 0x1118, 0x080c, 0x3006, 0x08d0, 0x6034, 0x908c, 0xff00, ++ 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, 0x080c, ++ 0x3006, 0x0868, 0x080c, 0x9c21, 0x0005, 0x6000, 0x908a, 0x0016, ++ 0x1a0c, 0x0d65, 0x0002, 0xb823, 0xb823, 0xb825, 0xb825, 0xb825, ++ 0xb823, 0xb823, 0x9c21, 0xb823, 0xb823, 0xb823, 0xb823, 0xb823, ++ 0xb823, 0xb823, 0xb823, 0x080c, 0x0d65, 0x080c, 0x98c8, 0x080c, ++ 0x9a39, 0x080c, 0x98e4, 0x6114, 0x0096, 0x2148, 0xa87b, 0x0006, ++ 0x080c, 0x6996, 0x009e, 0x0804, 0x9be7, 0x9284, 0x0003, 0x1158, ++ 0x9282, 0x1ddc, 0x0240, 0x2001, 0x1819, 0x2004, 0x9202, 0x1218, ++ 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x0096, 0x0028, 0x0096, ++ 0x0006, 0x6014, 0x2048, 0x000e, 0x0006, 0x9984, 0xf000, 0x9086, ++ 0xf000, 0x0110, 0x080c, 0x10cd, 0x000e, 0x009e, 0x0005, 0x00e6, ++ 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, 0x1ddc, ++ 0x2071, 0x1800, 0x7350, 0x7070, 0x9302, 0x1640, 0x6020, 0x9206, ++ 0x11f8, 0x080c, 0xbf61, 0x0180, 0x9286, 0x0001, 0x1168, 0x6004, ++ 0x9086, 0x0004, 0x1148, 0x080c, 0x3006, 0x080c, 0xbf76, 0x00c6, ++ 0x080c, 0x9c21, 0x00ce, 0x0060, 0x080c, 0xbc4d, 0x0148, 0x080c, ++ 0xba5c, 0x1110, 0x080c, 0xa58f, 0x00c6, 0x080c, 0x9be7, 0x00ce, ++ 0x9ce0, 0x001c, 0x7064, 0x9c02, 0x1208, 0x08a0, 0x012e, 0x000e, ++ 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, ++ 0x1000, 0x210c, 0x81ff, 0x0128, 0x2061, 0x1b02, 0x6112, 0x080c, ++ 0x3006, 0x9006, 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, ++ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9b91, 0x01b0, ++ 0x665e, 0x2b00, 0x6012, 0x080c, 0x5395, 0x0118, 0x080c, 0xb978, ++ 0x0168, 0x080c, 0xbcdb, 0x6023, 0x0003, 0x2009, 0x004b, 0x080c, ++ 0x9c85, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0xbaa0, 0x080c, 0x9c58, 0x0580, ++ 0x605f, 0x0000, 0x2b00, 0x6012, 0x080c, 0xbcdb, 0x6023, 0x0003, ++ 0x0016, 0x080c, 0x98c8, 0x080c, 0x863b, 0x0076, 0x903e, 0x080c, ++ 0x852a, 0x2c08, 0x080c, 0xcfc8, 0x007e, 0x080c, 0x98e4, 0x001e, ++ 0xd184, 0x0128, 0x080c, 0x9be7, 0x9085, 0x0001, 0x0070, 0x080c, ++ 0x5395, 0x0128, 0xd18c, 0x1170, 0x080c, 0xb978, 0x0148, 0x2009, ++ 0x004c, 0x080c, 0x9c85, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, ++ 0x9006, 0x0cd8, 0x2900, 0x6016, 0x0c90, 0x2009, 0x004d, 0x0010, ++ 0x2009, 0x004e, 0x00f6, 0x00c6, 0x0046, 0x0016, 0x080c, 0x9b91, ++ 0x2c78, 0x0590, 0x7e5e, 0x2b00, 0x7812, 0x7823, 0x0003, 0x2021, ++ 0x0005, 0x080c, 0xb98a, 0x9186, 0x004d, 0x0118, 0x9186, 0x004e, ++ 0x0148, 0x2001, 0x1951, 0x200c, 0xd1fc, 0x0168, 0x2f60, 0x080c, ++ 0x9be7, 0x00d0, 0x2001, 0x1950, 0x200c, 0xd1fc, 0x0120, 0x2f60, ++ 0x080c, 0x9be7, 0x0088, 0x2f60, 0x080c, 0x5395, 0x0138, 0xd18c, ++ 0x1118, 0x04f1, 0x0148, 0x0010, 0x2900, 0x7816, 0x001e, 0x0016, ++ 0x080c, 0x9c85, 0x9085, 0x0001, 0x001e, 0x004e, 0x00ce, 0x00fe, ++ 0x0005, 0x00f6, 0x00c6, 0x0046, 0x080c, 0x9b91, 0x2c78, 0x0508, ++ 0x7e5e, 0x2b00, 0x7812, 0x7823, 0x0003, 0x0096, 0x2021, 0x0004, ++ 0x0489, 0x009e, 0x2001, 0x194f, 0x200c, 0xd1fc, 0x0120, 0x2f60, ++ 0x080c, 0x9be7, 0x0060, 0x2f60, 0x080c, 0x5395, 0x0120, 0xd18c, ++ 0x1160, 0x0071, 0x0130, 0x2009, 0x0052, 0x080c, 0x9c85, 0x9085, ++ 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x2900, 0x7816, 0x0c98, ++ 0x00c6, 0x080c, 0x4878, 0x00ce, 0x1120, 0x080c, 0x9be7, 0x9006, ++ 0x0005, 0xa867, 0x0000, 0xa86b, 0x8000, 0x2900, 0x6016, 0x9085, ++ 0x0001, 0x0005, 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x98c8, 0x080c, 0x644f, 0x0158, 0x2001, 0xb991, 0x0006, 0x900e, ++ 0x2400, 0x080c, 0x6bb3, 0x080c, 0x6996, 0x000e, 0x0807, 0x2418, ++ 0x080c, 0x883a, 0xbaa0, 0x0086, 0x2041, 0x0001, 0x2039, 0x0001, ++ 0x2608, 0x080c, 0x8655, 0x008e, 0x080c, 0x852a, 0x2f08, 0x2648, ++ 0x080c, 0xcfc8, 0xb93c, 0x81ff, 0x090c, 0x872c, 0x080c, 0x98e4, ++ 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x9b91, 0x0190, 0x660a, 0x2b08, 0x6112, 0x080c, 0xbcdb, ++ 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f, 0x080c, 0x9c85, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x9c58, 0x01b8, 0x660a, 0x2b08, ++ 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0008, 0x2900, 0x6016, 0x00f6, ++ 0x2c78, 0x080c, 0x164f, 0x00fe, 0x2009, 0x0021, 0x080c, 0x9c85, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x2009, ++ 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000, 0x080c, 0x9b91, ++ 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0001, ++ 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0x9c85, 0x9085, 0x0001, ++ 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x9c58, 0x0188, 0x2b08, 0x6112, 0x080c, ++ 0xbcdb, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x0000, 0x080c, ++ 0x9c85, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818, 0x0026, 0x00b6, ++ 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0118, 0x8211, 0xba3e, 0x1140, ++ 0xb8c0, 0x9005, 0x0128, 0xb888, 0x9005, 0x1110, 0xb88b, 0x0001, ++ 0x00be, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, 0x0002, ++ 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110, 0x9085, ++ 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6020, 0x9086, ++ 0x0004, 0x0190, 0x6014, 0x904d, 0x080c, 0xb847, 0x0168, 0xa864, ++ 0x9086, 0x0139, 0x0158, 0x6020, 0x9086, 0x0003, 0x0128, 0xa868, ++ 0xd0fc, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, 0x000e, ++ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9c58, 0x0198, ++ 0x2b08, 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0001, 0x2900, 0x6016, ++ 0x080c, 0x3006, 0x2009, 0x0028, 0x080c, 0x9c85, 0x9085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, 0x11a8, ++ 0x2011, 0x1823, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, 0x080c, ++ 0xa818, 0x00be, 0x080c, 0xaa57, 0x6003, 0x0001, 0x6007, 0x0029, ++ 0x080c, 0x84d8, 0x080c, 0x8936, 0x0078, 0x6014, 0x0096, 0x2048, ++ 0xa868, 0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, 0xbe9a, ++ 0x080c, 0xa58f, 0x080c, 0x9be7, 0x0005, 0x0096, 0x6014, 0x904d, ++ 0x090c, 0x0d65, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, ++ 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6996, 0x012e, 0x009e, 0x080c, 0x9be7, 0x0c30, 0x0096, 0x9186, ++ 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x61c1, 0x00e8, 0x9186, ++ 0x0015, 0x1510, 0x2011, 0x1823, 0x2204, 0x9086, 0x0014, 0x11e0, ++ 0x6010, 0x00b6, 0x2058, 0x080c, 0x630b, 0x00be, 0x080c, 0xab28, ++ 0x1198, 0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, 0x0160, ++ 0x2001, 0x0006, 0x080c, 0x61c1, 0x6014, 0x2048, 0xa868, 0xd0fc, ++ 0x0170, 0x080c, 0x9ff6, 0x0048, 0x6014, 0x2048, 0xa868, 0xd0fc, ++ 0x0528, 0x080c, 0xa58f, 0x080c, 0x9be7, 0x009e, 0x0005, 0x6014, ++ 0x6310, 0x2358, 0x904d, 0x090c, 0x0d65, 0xa87b, 0x0000, 0xa883, ++ 0x0000, 0xa897, 0x4000, 0x900e, 0x080c, 0x655f, 0x1108, 0xc185, ++ 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6996, 0x012e, 0x080c, 0x9be7, 0x08f8, 0x6014, 0x904d, ++ 0x090c, 0x0d65, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, ++ 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6996, 0x012e, 0x080c, 0x9be7, 0x0840, 0xa878, 0x9086, 0x0005, ++ 0x1108, 0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, 0x604b, ++ 0x0000, 0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x2009, ++ 0x8023, 0x080c, 0x84d1, 0x0005, 0x00c6, 0x6010, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x0130, 0x0066, 0x6020, 0x9084, 0x000f, ++ 0x001b, 0x006e, 0x00ce, 0x0005, 0xb565, 0xbb7e, 0xbb7e, 0xbb81, ++ 0xd2c2, 0xd2dd, 0xd2e0, 0xb565, 0xb565, 0xb565, 0xb565, 0xb565, ++ 0xb565, 0xb565, 0xb565, 0xb565, 0x080c, 0x0d65, 0xa001, 0xa001, ++ 0x0005, 0x0096, 0x6014, 0x904d, 0x0118, 0xa87c, 0xd0e4, 0x1110, ++ 0x009e, 0x0010, 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x0550, 0x2001, 0x1833, 0x2004, 0x9005, 0x1540, ++ 0x00f6, 0x2c78, 0x080c, 0x9b91, 0x0508, 0x7810, 0x6012, 0x080c, ++ 0xbcdb, 0x7820, 0x9086, 0x0003, 0x0128, 0x7808, 0x603a, 0x2f00, ++ 0x603e, 0x0020, 0x7808, 0x603e, 0x2f00, 0x603a, 0x602e, 0x6023, ++ 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x795c, 0x615e, 0x2009, ++ 0x8020, 0x080c, 0x84d1, 0x2f60, 0x00fe, 0x0005, 0x2f60, 0x00fe, ++ 0x2001, 0x1959, 0x2004, 0x604a, 0x0005, 0x0016, 0x0096, 0x6814, ++ 0x2048, 0x681c, 0xd0fc, 0xc0fc, 0x681e, 0xa87c, 0x1108, 0xd0e4, ++ 0x0180, 0xc0e4, 0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, 0xa88f, ++ 0x0000, 0xd0cc, 0x0130, 0xc0cc, 0xa87e, 0xa878, 0x2048, 0x080c, ++ 0x0fd4, 0x6830, 0x6036, 0x908e, 0x0001, 0x0148, 0x6803, 0x0002, ++ 0x9086, 0x0005, 0x0170, 0x9006, 0x602e, 0x6032, 0x00d0, 0x681c, ++ 0xc085, 0x681e, 0x6803, 0x0004, 0x6824, 0xc0f4, 0x9085, 0x0c00, ++ 0x6826, 0x6814, 0x2048, 0xa8ac, 0x6938, 0x9102, 0xa8b0, 0x693c, ++ 0x9103, 0x1e48, 0x683c, 0x602e, 0x6838, 0x9084, 0xfffc, 0x683a, ++ 0x6032, 0x2d00, 0x603a, 0x6808, 0x603e, 0x6910, 0x6112, 0x695c, ++ 0x615e, 0x6023, 0x0001, 0x6007, 0x0039, 0x6003, 0x0001, 0x2009, ++ 0x8020, 0x080c, 0x84d1, 0x009e, 0x001e, 0x0005, 0x6024, 0xd0d4, ++ 0x0510, 0xd0f4, 0x11f8, 0x6038, 0x940a, 0x603c, 0x9303, 0x0230, ++ 0x9105, 0x0120, 0x6024, 0xc0d4, 0xc0f5, 0x0098, 0x643a, 0x633e, ++ 0xac3e, 0xab42, 0x0046, 0x0036, 0x2400, 0xacac, 0x9402, 0xa836, ++ 0x2300, 0xabb0, 0x9303, 0xa83a, 0x003e, 0x004e, 0x6024, 0xc0d4, ++ 0x0000, 0x6026, 0x0005, 0xd0f4, 0x1138, 0xa83c, 0x603a, 0xa840, ++ 0x603e, 0x6024, 0xc0f5, 0x6026, 0x0005, 0x0006, 0x0016, 0x6004, ++ 0x908e, 0x0034, 0x01b8, 0x908e, 0x0035, 0x01a0, 0x908e, 0x0036, ++ 0x0188, 0x908e, 0x0037, 0x0170, 0x908e, 0x0038, 0x0158, 0x908e, ++ 0x0039, 0x0140, 0x908e, 0x003a, 0x0128, 0x908e, 0x003b, 0x0110, ++ 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x00e6, 0x2001, 0x1953, 0x200c, 0x8000, 0x2014, 0x2001, ++ 0x0032, 0x080c, 0x8419, 0x2001, 0x1957, 0x82ff, 0x1110, 0x2011, ++ 0x0014, 0x2202, 0x2001, 0x1955, 0x200c, 0x8000, 0x2014, 0x2071, ++ 0x193d, 0x711a, 0x721e, 0x2001, 0x0064, 0x080c, 0x8419, 0x2001, ++ 0x1958, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0x1959, ++ 0x9288, 0x000a, 0x2102, 0x2001, 0x0017, 0x080c, 0x98b9, 0x2001, ++ 0x1a59, 0x2102, 0x2001, 0x0032, 0x080c, 0x159e, 0x080c, 0x6648, ++ 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, ++ 0x00e6, 0x2001, 0x1957, 0x2003, 0x0028, 0x2001, 0x1958, 0x2003, ++ 0x0014, 0x2071, 0x193d, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, ++ 0x1959, 0x2009, 0x001e, 0x2102, 0x2001, 0x0017, 0x080c, 0x98b9, ++ 0x2001, 0x1a59, 0x2102, 0x2001, 0x0032, 0x080c, 0x159e, 0x00ee, ++ 0x001e, 0x000e, 0x0005, 0x0096, 0x6060, 0x904d, 0x0110, 0x080c, ++ 0x1054, 0x009e, 0x0005, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x9b91, 0x0180, 0x2b08, 0x6112, 0x0ca9, 0x6023, 0x0001, ++ 0x2900, 0x6016, 0x2009, 0x0033, 0x080c, 0x9c85, 0x9085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x00e6, 0x00f6, ++ 0x2071, 0x1800, 0x9186, 0x0015, 0x1500, 0x708c, 0x9086, 0x0018, ++ 0x11e0, 0x6014, 0x2048, 0xaa3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, ++ 0x89f5, 0x01d8, 0x7078, 0xaa50, 0x9206, 0x1160, 0x707c, 0xaa54, ++ 0x9206, 0x1140, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, 0x900e, ++ 0x080c, 0x305b, 0x080c, 0x9ff6, 0x0020, 0x080c, 0xa58f, 0x080c, ++ 0x9be7, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x705c, 0xaa54, 0x9206, ++ 0x0d48, 0x0c80, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x9b91, ++ 0x0188, 0x2b08, 0x6112, 0x080c, 0xbcdb, 0x6023, 0x0001, 0x2900, ++ 0x6016, 0x2009, 0x004d, 0x080c, 0x9c85, 0x9085, 0x0001, 0x012e, ++ 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, ++ 0x0016, 0x080c, 0x9b91, 0x0180, 0x2b08, 0x6112, 0x080c, 0xbcdb, ++ 0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x080c, 0x9c85, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x001e, 0x9006, 0x0cd0, 0x0016, ++ 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0096, 0x00e6, 0x00f6, ++ 0x2071, 0x1800, 0x9186, 0x0015, 0x1568, 0x718c, 0x6014, 0x2048, ++ 0xa814, 0x8003, 0x9106, 0x1530, 0x20e1, 0x0000, 0x2001, 0x1971, ++ 0x2003, 0x0000, 0x6014, 0x2048, 0xa830, 0x20a8, 0x8906, 0x8006, ++ 0x8007, 0x9094, 0x003f, 0x22e8, 0x9084, 0xffc0, 0x9080, 0x001b, ++ 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x080c, 0xc545, 0x001e, ++ 0xa804, 0x9005, 0x0110, 0x2048, 0x0c38, 0x6014, 0x2048, 0xa867, ++ 0x0103, 0x0010, 0x080c, 0xa58f, 0x080c, 0x9be7, 0x00fe, 0x00ee, ++ 0x009e, 0x006e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0005, ++ 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x11b8, ++ 0x708c, 0x9086, 0x0004, 0x1198, 0x6014, 0x2048, 0x2c78, 0x080c, ++ 0x89f5, 0x01a8, 0x7078, 0xaa74, 0x9206, 0x1130, 0x707c, 0xaa78, ++ 0x9206, 0x1110, 0x080c, 0x3006, 0x080c, 0x9ff6, 0x0020, 0x080c, ++ 0xa58f, 0x080c, 0x9be7, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x705c, ++ 0xaa78, 0x9206, 0x0d78, 0x0c80, 0x0096, 0x00e6, 0x00f6, 0x2071, ++ 0x1800, 0x9186, 0x0015, 0x1550, 0x708c, 0x9086, 0x0004, 0x1530, ++ 0x6014, 0x2048, 0x2c78, 0x080c, 0x89f5, 0x05f0, 0x7078, 0xaacc, ++ 0x9206, 0x1180, 0x707c, 0xaad0, 0x9206, 0x1160, 0x080c, 0x3006, ++ 0x0016, 0xa998, 0xaab0, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x5345, ++ 0x001e, 0x0010, 0x080c, 0x512e, 0x080c, 0xb847, 0x0508, 0xa87b, ++ 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0080, 0x080c, 0xb847, ++ 0x01b8, 0x6014, 0x2048, 0x080c, 0x512e, 0x1d70, 0xa87b, 0x0030, ++ 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b, 0x0004, 0x0126, 0x2091, ++ 0x8000, 0xa867, 0x0139, 0x080c, 0x6996, 0x012e, 0x080c, 0x9be7, ++ 0x00fe, 0x00ee, 0x009e, 0x0005, 0x705c, 0xaad0, 0x9206, 0x0930, ++ 0x0888, 0x0016, 0x0026, 0xa87c, 0xd0ac, 0x0178, 0xa938, 0xaa34, ++ 0x2100, 0x9205, 0x0150, 0xa890, 0x9106, 0x1118, 0xa88c, 0x9206, ++ 0x0120, 0xa992, 0xaa8e, 0x9085, 0x0001, 0x002e, 0x001e, 0x0005, ++ 0x00b6, 0x00d6, 0x0036, 0x080c, 0xb847, 0x0904, 0xbe96, 0x0096, ++ 0x6314, 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, 0x6310, ++ 0x00c6, 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, 0x080c, ++ 0x655f, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xaa96, ++ 0xa99a, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, ++ 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c, ++ 0x0f9f, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8b8, ++ 0x9080, 0x000a, 0x2098, 0x080c, 0x0f9f, 0x00ce, 0x0090, 0xaa96, ++ 0x3918, 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, 0x0110, ++ 0xa89b, 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, 0x00ff, ++ 0xa89e, 0x080c, 0x698a, 0x6017, 0x0000, 0x009e, 0x003e, 0x00de, ++ 0x00be, 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, 0x00f6, ++ 0x6214, 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, 0x0000, ++ 0x11a0, 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x2424, 0x2118, ++ 0x831f, 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, 0x7c3c, ++ 0x2011, 0x8018, 0x080c, 0x48d8, 0x00a8, 0x9096, 0x0001, 0x1148, ++ 0x89ff, 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, 0xa8aa, ++ 0x0048, 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, 0xa8a6, ++ 0x783c, 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, 0x002e, ++ 0x0005, 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, 0x6a38, ++ 0x0008, 0x6a2c, 0x080c, 0xb835, 0x01f0, 0x2260, 0x6120, 0x9186, ++ 0x0003, 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, 0x0140, ++ 0x683c, 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, 0x0020, ++ 0x6008, 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, 0x001e, ++ 0x002e, 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, 0xd1cc, ++ 0x0188, 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, 0x918c, ++ 0x0f00, 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, 0x9115, ++ 0x190c, 0xaec2, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, 0x0036, ++ 0x901e, 0x0499, 0x01e0, 0x080c, 0xb847, 0x01c8, 0x080c, 0xba36, ++ 0x6037, 0x4000, 0x6014, 0x6017, 0x0000, 0x0096, 0x2048, 0xa87c, ++ 0x080c, 0xba5c, 0x1118, 0x080c, 0xa58f, 0x0040, 0xa867, 0x0103, ++ 0xa877, 0x0000, 0x83ff, 0x1129, 0x080c, 0x6996, 0x009e, 0x003e, ++ 0x0005, 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, 0xa882, ++ 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, ++ 0x080c, 0xbb4b, 0xa877, 0x0000, 0x0005, 0x2001, 0x1810, 0x2004, ++ 0xd0ec, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0f4, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0e4, 0x000e, 0x0005, ++ 0x0036, 0x0046, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, ++ 0x0007, 0x080c, 0x4a75, 0x004e, 0x003e, 0x0005, 0x0c51, 0x1d81, ++ 0x0005, 0x2001, 0x1957, 0x2004, 0x601a, 0x0005, 0x2001, 0x1959, ++ 0x2004, 0x604a, 0x0005, 0x080c, 0x9be7, 0x0804, 0x8936, 0x611c, ++ 0xd1fc, 0xa97c, 0x1108, 0xd1e4, 0x0005, 0x601c, 0xd0fc, 0xa87c, ++ 0x1108, 0xd0e4, 0x0005, 0x601c, 0xd0fc, 0xc0fc, 0x601e, 0xa87c, ++ 0x1108, 0xd0e4, 0x0005, 0x6044, 0xd0fc, 0x0160, 0xd0dc, 0x1128, ++ 0x908c, 0x000f, 0x9186, 0x0005, 0x1118, 0x6003, 0x0003, 0x0010, ++ 0x6003, 0x0001, 0x0005, 0x00b6, 0x0066, 0x6000, 0x90b2, 0x0016, ++ 0x1a0c, 0x0d65, 0x001b, 0x006e, 0x00be, 0x0005, 0xbfc6, 0xc6a0, ++ 0xc7ef, 0xbfc6, 0xbfc6, 0xbfc6, 0xbfc6, 0xbfc6, 0xbffd, 0xc871, ++ 0xbfc6, 0xbfc6, 0xbfc6, 0xbfc6, 0xbfc6, 0xbfc6, 0x080c, 0x0d65, ++ 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d65, 0x0013, 0x006e, ++ 0x0005, 0xbfe1, 0xcd88, 0xbfe1, 0xbfe1, 0xbfe1, 0xbfe1, 0xbfe1, ++ 0xbfe1, 0xcd37, 0xcdda, 0xbfe1, 0xd3fd, 0xd431, 0xd3fd, 0xd431, ++ 0xbfe1, 0x080c, 0x0d65, 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d65, ++ 0x6000, 0x000a, 0x0005, 0xbffb, 0xca4d, 0xcb16, 0xcb38, 0xcbb3, ++ 0xbffb, 0xccad, 0xcc3b, 0xc87b, 0xcd0f, 0xcd24, 0xbffb, 0xbffb, ++ 0xbffb, 0xbffb, 0xbffb, 0x080c, 0x0d65, 0x91b2, 0x0053, 0x1a0c, ++ 0x0d65, 0x2100, 0x91b2, 0x0040, 0x1a04, 0xc443, 0x0002, 0xc047, ++ 0xc234, 0xc047, 0xc047, 0xc047, 0xc23d, 0xc047, 0xc047, 0xc047, ++ 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, ++ 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc049, 0xc0b0, ++ 0xc0bf, 0xc123, 0xc14e, 0xc1c6, 0xc21f, 0xc047, 0xc047, 0xc240, ++ 0xc047, 0xc047, 0xc255, 0xc262, 0xc047, 0xc047, 0xc047, 0xc047, ++ 0xc047, 0xc2e5, 0xc047, 0xc047, 0xc2f9, 0xc047, 0xc047, 0xc2b4, ++ 0xc047, 0xc047, 0xc047, 0xc311, 0xc047, 0xc047, 0xc047, 0xc38e, ++ 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc047, 0xc40b, 0x080c, ++ 0x0d65, 0x080c, 0x6625, 0x1150, 0x2001, 0x1836, 0x2004, 0xd0cc, ++ 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, 0x1140, 0x6007, 0x0009, ++ 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, 0xc22d, 0x080c, 0x660e, ++ 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6210, 0x2258, 0xbaa0, ++ 0x0026, 0x2019, 0x0029, 0x080c, 0x98c8, 0x080c, 0x863b, 0x0076, ++ 0x903e, 0x080c, 0x852a, 0x2c08, 0x080c, 0xcfc8, 0x007e, 0x001e, ++ 0x080c, 0x98e4, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6610, ++ 0x2658, 0x080c, 0x627f, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, ++ 0x1268, 0x0016, 0x0026, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, ++ 0x2c08, 0x080c, 0xd5a9, 0x002e, 0x001e, 0x1178, 0x080c, 0xcef7, ++ 0x1904, 0xc11b, 0x080c, 0xce93, 0x1120, 0x6007, 0x0008, 0x0804, ++ 0xc22d, 0x6007, 0x0009, 0x0804, 0xc22d, 0x080c, 0xd0fe, 0x0128, ++ 0x080c, 0xcef7, 0x0d78, 0x0804, 0xc11b, 0x6017, 0x1900, 0x0c88, ++ 0x080c, 0x3150, 0x1904, 0xc440, 0x6106, 0x080c, 0xce44, 0x6007, ++ 0x0006, 0x0804, 0xc22d, 0x6007, 0x0007, 0x0804, 0xc22d, 0x080c, ++ 0xd46d, 0x1904, 0xc440, 0x080c, 0x3150, 0x1904, 0xc440, 0x00d6, ++ 0x6610, 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x1220, ++ 0x2001, 0x0001, 0x080c, 0x61ad, 0x96b4, 0xff00, 0x8637, 0x9686, ++ 0x0006, 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4, 0x00ff, ++ 0x9686, 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686, 0x0005, ++ 0x0110, 0x00de, 0x0480, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9084, ++ 0x0003, 0x1140, 0x7034, 0x9082, 0x0014, 0x0220, 0x7030, 0x9084, ++ 0x0003, 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, 0x00b0, ++ 0x00ee, 0x080c, 0xcf5e, 0x1190, 0x9686, 0x0006, 0x1140, 0x0026, ++ 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x305b, 0x002e, 0x080c, ++ 0x630b, 0x6007, 0x000a, 0x00de, 0x0804, 0xc22d, 0x6007, 0x000b, ++ 0x00de, 0x0804, 0xc22d, 0x080c, 0x3006, 0x080c, 0xbf76, 0x6007, ++ 0x0001, 0x0804, 0xc22d, 0x080c, 0xd46d, 0x1904, 0xc440, 0x080c, ++ 0x3150, 0x1904, 0xc440, 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, ++ 0x1948, 0x90b2, 0x0014, 0x0a30, 0x7030, 0x9084, 0x0003, 0x1910, ++ 0x6610, 0x2658, 0xbe04, 0x9686, 0x0707, 0x09e8, 0x0026, 0x6210, ++ 0x2258, 0xbaa0, 0x900e, 0x080c, 0x305b, 0x002e, 0x6007, 0x000c, ++ 0x2001, 0x0001, 0x080c, 0xd589, 0x0804, 0xc22d, 0x080c, 0x6625, ++ 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086, 0x0008, ++ 0x1110, 0x0804, 0xc056, 0x080c, 0x660e, 0x6610, 0x2658, 0xbe04, ++ 0x9684, 0x00ff, 0x9082, 0x0006, 0x06c0, 0x1138, 0x0026, 0x2001, ++ 0x0006, 0x080c, 0x61ed, 0x002e, 0x0050, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xc11b, 0x080c, ++ 0xcf6b, 0x1120, 0x6007, 0x000e, 0x0804, 0xc22d, 0x0046, 0x6410, ++ 0x2458, 0xbca0, 0x0046, 0x080c, 0x3006, 0x080c, 0xbf76, 0x004e, ++ 0x0016, 0x9006, 0x2009, 0x1854, 0x210c, 0x0048, 0x2009, 0x0029, ++ 0x080c, 0xd273, 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802, 0x001e, ++ 0x004e, 0x6007, 0x0001, 0x0804, 0xc22d, 0x2001, 0x0001, 0x080c, ++ 0x61ad, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0270, 0x080c, 0xabcb, 0x003e, 0x002e, 0x001e, ++ 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, 0x9682, 0x0004, ++ 0x0a04, 0xc11b, 0x9682, 0x0007, 0x0a04, 0xc177, 0x0804, 0xc11b, ++ 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xc22d, 0x080c, 0x6625, ++ 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086, 0x0008, ++ 0x1110, 0x0804, 0xc056, 0x080c, 0x660e, 0x6610, 0x2658, 0xbe04, ++ 0x9684, 0x00ff, 0x9082, 0x0006, 0x0690, 0x0150, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xc11b, ++ 0x080c, 0xcf99, 0x1130, 0x080c, 0xce93, 0x1118, 0x6007, 0x0010, ++ 0x04e0, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x3006, ++ 0x080c, 0xbf76, 0x004e, 0x0016, 0x9006, 0x2009, 0x1854, 0x210c, ++ 0x0048, 0x2009, 0x0029, 0x080c, 0xd273, 0x6010, 0x2058, 0xb800, ++ 0xc0e5, 0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, ++ 0xd0fe, 0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0980, ++ 0x0804, 0xc11b, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, ++ 0x3150, 0x1904, 0xc440, 0x080c, 0xd46d, 0x1904, 0xc440, 0x080c, ++ 0xc5e0, 0x1904, 0xc11b, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, ++ 0x84d8, 0x080c, 0x8936, 0x0005, 0x6007, 0x0001, 0x6003, 0x0001, ++ 0x080c, 0x84d8, 0x080c, 0x8936, 0x0cb0, 0x6007, 0x0005, 0x0c68, ++ 0x080c, 0xd46d, 0x1904, 0xc440, 0x080c, 0x3150, 0x1904, 0xc440, ++ 0x080c, 0xc5e0, 0x1904, 0xc11b, 0x6007, 0x0020, 0x6003, 0x0001, ++ 0x080c, 0x84d8, 0x080c, 0x8936, 0x0005, 0x080c, 0x3150, 0x1904, ++ 0xc440, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x84d8, 0x080c, ++ 0x8936, 0x0005, 0x080c, 0xd46d, 0x1904, 0xc440, 0x080c, 0x3150, ++ 0x1904, 0xc440, 0x080c, 0xc5e0, 0x1904, 0xc11b, 0x0016, 0x0026, ++ 0x00e6, 0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, 0x2c08, ++ 0x080c, 0xb835, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, 0x1188, ++ 0x6010, 0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, 0x7240, ++ 0x2c08, 0x9006, 0x080c, 0xd245, 0x1180, 0x7244, 0x9286, 0xffff, ++ 0x01b0, 0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, 0x9296, ++ 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, 0x0007, ++ 0x1d80, 0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0x9be7, 0x2160, ++ 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x84d8, 0x080c, 0x8936, ++ 0x00ee, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x61ad, ++ 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1805, ++ 0x2011, 0x0276, 0x080c, 0xabcb, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0x0120, 0x6007, 0x0031, 0x0804, 0xc22d, 0x080c, 0xa830, 0x080c, ++ 0x70b7, 0x1190, 0x0006, 0x0026, 0x0036, 0x080c, 0x70d1, 0x1138, ++ 0x080c, 0x73b7, 0x080c, 0x5cdc, 0x080c, 0x6fe8, 0x0010, 0x080c, ++ 0x708b, 0x003e, 0x002e, 0x000e, 0x0005, 0x080c, 0x3150, 0x1904, ++ 0xc440, 0x080c, 0xc5e0, 0x1904, 0xc11b, 0x6106, 0x080c, 0xc5fc, ++ 0x1120, 0x6007, 0x002b, 0x0804, 0xc22d, 0x6007, 0x002c, 0x0804, ++ 0xc22d, 0x080c, 0xd46d, 0x1904, 0xc440, 0x080c, 0x3150, 0x1904, ++ 0xc440, 0x080c, 0xc5e0, 0x1904, 0xc11b, 0x6106, 0x080c, 0xc601, ++ 0x1120, 0x6007, 0x002e, 0x0804, 0xc22d, 0x6007, 0x002f, 0x0804, ++ 0xc22d, 0x080c, 0x3150, 0x1904, 0xc440, 0x00e6, 0x00d6, 0x00c6, ++ 0x6010, 0x2058, 0xb904, 0x9184, 0x00ff, 0x9086, 0x0006, 0x0158, ++ 0x9184, 0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, 0x00de, ++ 0x00ee, 0x0804, 0xc234, 0x080c, 0x5391, 0xd0e4, 0x0904, 0xc38b, ++ 0x2071, 0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, 0x720c, ++ 0x080c, 0x6663, 0x0140, 0x6010, 0x2058, 0xb810, 0x9106, 0x1118, ++ 0xb814, 0x9206, 0x0510, 0x080c, 0x665f, 0x15b8, 0x2069, 0x1800, ++ 0x687c, 0x9206, 0x1590, 0x6878, 0x9106, 0x1578, 0x7210, 0x080c, ++ 0xb835, 0x0590, 0x080c, 0xc4cb, 0x0578, 0x080c, 0xd2ef, 0x0560, ++ 0x622e, 0x6007, 0x0036, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, ++ 0x84d1, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, 0xffff, ++ 0x0150, 0x080c, 0xb835, 0x01c0, 0x9280, 0x0002, 0x2004, 0x7110, ++ 0x9106, 0x1190, 0x08e0, 0x7210, 0x2c08, 0x9085, 0x0001, 0x080c, ++ 0xd245, 0x2c10, 0x2160, 0x0140, 0x0890, 0x6007, 0x0037, 0x602f, ++ 0x0009, 0x6017, 0x1500, 0x08b8, 0x6007, 0x0037, 0x602f, 0x0003, ++ 0x6017, 0x1700, 0x0880, 0x6007, 0x0012, 0x0868, 0x080c, 0x3150, ++ 0x1904, 0xc440, 0x6010, 0x2058, 0xb804, 0x9084, 0xff00, 0x8007, ++ 0x9086, 0x0006, 0x1904, 0xc234, 0x00e6, 0x00d6, 0x00c6, 0x080c, ++ 0x5391, 0xd0e4, 0x0904, 0xc403, 0x2069, 0x1800, 0x2071, 0x026c, ++ 0x7008, 0x603a, 0x720c, 0x623e, 0x9286, 0xffff, 0x1150, 0x7208, ++ 0x00c6, 0x2c08, 0x9085, 0x0001, 0x080c, 0xd245, 0x2c10, 0x00ce, ++ 0x05e8, 0x080c, 0xb835, 0x05d0, 0x7108, 0x9280, 0x0002, 0x2004, ++ 0x9106, 0x15a0, 0x00c6, 0x0026, 0x2260, 0x080c, 0xb445, 0x002e, ++ 0x00ce, 0x7118, 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, 0x0178, ++ 0x9186, 0x0005, 0x0118, 0x9186, 0x0007, 0x1198, 0x9280, 0x0005, ++ 0x2004, 0x9005, 0x0170, 0x080c, 0xc4cb, 0x0904, 0xc384, 0x0056, ++ 0x7510, 0x7614, 0x080c, 0xd308, 0x005e, 0x00ce, 0x00de, 0x00ee, ++ 0x0005, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x0c78, 0x6007, 0x003b, ++ 0x602f, 0x0003, 0x6017, 0x0300, 0x6003, 0x0001, 0x2009, 0x8020, ++ 0x080c, 0x84d1, 0x0c10, 0x6007, 0x003b, 0x602f, 0x000b, 0x6017, ++ 0x0000, 0x0804, 0xc35b, 0x00e6, 0x0026, 0x080c, 0x6625, 0x0550, ++ 0x080c, 0x660e, 0x080c, 0xd4df, 0x1518, 0x2071, 0x1800, 0x70d8, ++ 0x9085, 0x0003, 0x70da, 0x00f6, 0x2079, 0x0100, 0x72ac, 0x9284, ++ 0x00ff, 0x707a, 0x78e6, 0x9284, 0xff00, 0x727c, 0x9205, 0x707e, ++ 0x78ea, 0x00fe, 0x70e3, 0x0000, 0x080c, 0x6663, 0x0120, 0x2011, ++ 0x19da, 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2ddb, 0x0010, ++ 0x080c, 0xd511, 0x002e, 0x00ee, 0x080c, 0x9be7, 0x0804, 0xc233, ++ 0x080c, 0x9be7, 0x0005, 0x2600, 0x0002, 0xc457, 0xc457, 0xc457, ++ 0xc457, 0xc457, 0xc459, 0xc457, 0xc457, 0xc457, 0xc457, 0xc476, ++ 0xc457, 0xc457, 0xc457, 0xc488, 0xc495, 0xc4c6, 0xc457, 0x080c, ++ 0x0d65, 0x080c, 0xd46d, 0x1d20, 0x080c, 0x3150, 0x1d08, 0x080c, ++ 0xc5e0, 0x1148, 0x7038, 0x6016, 0x6007, 0x0045, 0x6003, 0x0001, ++ 0x080c, 0x84d8, 0x0005, 0x080c, 0x3006, 0x080c, 0xbf76, 0x6007, ++ 0x0001, 0x6003, 0x0001, 0x080c, 0x84d8, 0x0005, 0x080c, 0xd46d, ++ 0x1938, 0x080c, 0x3150, 0x1920, 0x080c, 0xc5e0, 0x1d60, 0x703c, ++ 0x6016, 0x6007, 0x004a, 0x6003, 0x0001, 0x080c, 0x84d8, 0x0005, ++ 0x080c, 0xc4e8, 0x0904, 0xc440, 0x6007, 0x004e, 0x6003, 0x0001, ++ 0x080c, 0x84d8, 0x080c, 0x8936, 0x0005, 0x6007, 0x004f, 0x6017, ++ 0x0000, 0x7134, 0x918c, 0x00ff, 0x81ff, 0x0508, 0x9186, 0x0001, ++ 0x1160, 0x7140, 0x2001, 0x198e, 0x2004, 0x9106, 0x11b0, 0x7144, ++ 0x2001, 0x198f, 0x2004, 0x9106, 0x0190, 0x9186, 0x0002, 0x1168, ++ 0x2011, 0x0276, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, ++ 0x000a, 0x080c, 0xabdf, 0x009e, 0x0110, 0x6017, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x84d8, 0x080c, 0x8936, 0x0005, 0x6007, 0x0050, ++ 0x703c, 0x6016, 0x0ca0, 0x0016, 0x00e6, 0x2071, 0x0260, 0x00b6, ++ 0x00c6, 0x2260, 0x6010, 0x2058, 0xb8c4, 0xd084, 0x0150, 0x7128, ++ 0x6050, 0x9106, 0x1120, 0x712c, 0x604c, 0x9106, 0x0110, 0x9006, ++ 0x0010, 0x9085, 0x0001, 0x00ce, 0x00be, 0x00ee, 0x001e, 0x0005, ++ 0x0016, 0x0096, 0x0086, 0x00e6, 0x01c6, 0x01d6, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1800, 0x708c, 0x908a, 0x00f9, 0x16e8, 0x20e1, ++ 0x0000, 0x2001, 0x1971, 0x2003, 0x0000, 0x080c, 0x103b, 0x05a0, ++ 0x2900, 0x6016, 0x708c, 0x8004, 0xa816, 0x908a, 0x001e, 0x02d0, ++ 0xa833, 0x001e, 0x20a9, 0x001e, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x0471, 0x001e, ++ 0x2940, 0x080c, 0x103b, 0x01c0, 0x2900, 0xa006, 0x2100, 0x81ff, ++ 0x0180, 0x0c18, 0xa832, 0x20a8, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x1971, 0x0016, 0x200c, 0x00b1, 0x001e, ++ 0x0000, 0x9085, 0x0001, 0x0048, 0x2071, 0x1800, 0x708f, 0x0000, ++ 0x6014, 0x2048, 0x080c, 0x0fd4, 0x9006, 0x012e, 0x01de, 0x01ce, ++ 0x00ee, 0x008e, 0x009e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8, 0x080c, 0x202b, 0x2099, ++ 0x026c, 0x2001, 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, ++ 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x202b, 0x2099, ++ 0x0260, 0x0ca8, 0x080c, 0x202b, 0x2061, 0x1971, 0x6004, 0x2098, ++ 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0048, 0x20a8, ++ 0x4003, 0x22a8, 0x8108, 0x080c, 0x202b, 0x2099, 0x0260, 0x0ca8, ++ 0x2061, 0x1971, 0x2019, 0x0280, 0x3300, 0x931e, 0x0110, 0x6006, ++ 0x0020, 0x2001, 0x0260, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, ++ 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x81ff, 0x11b8, ++ 0x080c, 0x2043, 0x20a1, 0x024c, 0x2001, 0x0014, 0x3518, 0x9312, ++ 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8, 0x4003, 0x82ff, 0x01f8, ++ 0x22a8, 0x8108, 0x080c, 0x2043, 0x20a1, 0x0240, 0x0c98, 0x080c, ++ 0x2043, 0x2061, 0x1974, 0x6004, 0x20a0, 0x6008, 0x3518, 0x9312, ++ 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8, 0x4003, 0x82ff, 0x0138, ++ 0x22a8, 0x8108, 0x080c, 0x2043, 0x20a1, 0x0240, 0x0c98, 0x2061, ++ 0x1974, 0x2019, 0x0260, 0x3400, 0x931e, 0x0110, 0x6006, 0x0020, ++ 0x2001, 0x0240, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, 0x9296, ++ 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, ++ 0x00b6, 0x0066, 0x6610, 0x2658, 0xbe04, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0006, 0x0170, 0x9686, 0x0004, 0x0158, 0xbe04, 0x96b4, ++ 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686, 0x0004, 0x0110, 0x9085, ++ 0x0001, 0x006e, 0x00be, 0x0005, 0x00d6, 0x080c, 0xc676, 0x00de, ++ 0x0005, 0x00d6, 0x080c, 0xc683, 0x1520, 0x680c, 0x908c, 0xff00, ++ 0x6820, 0x9084, 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e, 0xd1e4, ++ 0x0130, 0x9006, 0x080c, 0xd589, 0x2009, 0x0001, 0x0078, 0xd1ec, ++ 0x0180, 0x6920, 0x918c, 0x00ff, 0x6824, 0x080c, 0x2424, 0x1148, ++ 0x2001, 0x0001, 0x080c, 0xd589, 0x2110, 0x900e, 0x080c, 0x305b, ++ 0x0018, 0x9085, 0x0001, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, ++ 0x00c6, 0x080c, 0x9c58, 0x0598, 0x0016, 0x0026, 0x00c6, 0x2011, ++ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2424, 0x1568, 0x080c, ++ 0x6210, 0x1550, 0xbe12, 0xbd16, 0x00ce, 0x002e, 0x001e, 0x2b00, ++ 0x6012, 0x080c, 0xd46d, 0x11c8, 0x080c, 0x3150, 0x11b0, 0x080c, ++ 0xc5e0, 0x0500, 0x2001, 0x0007, 0x080c, 0x61c1, 0x2001, 0x0007, ++ 0x080c, 0x61ed, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, ++ 0x6003, 0x0001, 0x080c, 0x84d8, 0x0010, 0x080c, 0x9be7, 0x9085, ++ 0x0001, 0x00ce, 0x00be, 0x0005, 0x080c, 0x9be7, 0x00ce, 0x002e, ++ 0x001e, 0x0ca8, 0x080c, 0x9be7, 0x9006, 0x0c98, 0x2069, 0x026d, ++ 0x6800, 0x9082, 0x0010, 0x1228, 0x6017, 0x0000, 0x9085, 0x0001, ++ 0x0008, 0x9006, 0x0005, 0x6017, 0x0000, 0x2069, 0x026c, 0x6808, ++ 0x9084, 0xff00, 0x9086, 0x0800, 0x1190, 0x6904, 0x9186, 0x0018, ++ 0x0118, 0x9186, 0x0014, 0x1158, 0x810f, 0x6800, 0x9084, 0x00ff, ++ 0x910d, 0x6162, 0x908e, 0x0014, 0x0110, 0x908e, 0x0010, 0x0005, ++ 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0d65, 0x91b6, 0x0013, 0x1130, ++ 0x2008, 0x91b2, 0x0040, 0x1a04, 0xc7c3, 0x0092, 0x91b6, 0x0027, ++ 0x0120, 0x91b6, 0x0014, 0x190c, 0x0d65, 0x2001, 0x0007, 0x080c, ++ 0x61ed, 0x080c, 0x8874, 0x080c, 0x9c21, 0x080c, 0x8936, 0x0005, ++ 0xc700, 0xc702, 0xc700, 0xc700, 0xc700, 0xc702, 0xc70f, 0xc7c0, ++ 0xc75f, 0xc7c0, 0xc771, 0xc7c0, 0xc70f, 0xc7c0, 0xc7b8, 0xc7c0, ++ 0xc7b8, 0xc7c0, 0xc7c0, 0xc700, 0xc700, 0xc700, 0xc700, 0xc700, ++ 0xc700, 0xc700, 0xc700, 0xc700, 0xc700, 0xc700, 0xc702, 0xc700, ++ 0xc7c0, 0xc700, 0xc700, 0xc7c0, 0xc700, 0xc7bd, 0xc7c0, 0xc700, ++ 0xc700, 0xc700, 0xc700, 0xc7c0, 0xc7c0, 0xc700, 0xc7c0, 0xc7c0, ++ 0xc700, 0xc70a, 0xc700, 0xc700, 0xc700, 0xc700, 0xc7bc, 0xc7c0, ++ 0xc700, 0xc700, 0xc7c0, 0xc7c0, 0xc700, 0xc700, 0xc700, 0xc700, ++ 0x080c, 0x0d65, 0x080c, 0xbf79, 0x6003, 0x0002, 0x080c, 0x8936, ++ 0x0804, 0xc7c2, 0x9006, 0x080c, 0x61ad, 0x0804, 0xc7c0, 0x080c, ++ 0x665f, 0x1904, 0xc7c0, 0x9006, 0x080c, 0x61ad, 0x6010, 0x2058, ++ 0xb810, 0x9086, 0x00ff, 0x1140, 0x00f6, 0x2079, 0x1800, 0x78a4, ++ 0x8000, 0x78a6, 0x00fe, 0x0428, 0x6010, 0x2058, 0xb884, 0x9005, ++ 0x1178, 0x080c, 0xbf61, 0x1904, 0xc7c0, 0x0036, 0x0046, 0xbba0, ++ 0x2021, 0x0007, 0x080c, 0x4a75, 0x004e, 0x003e, 0x0804, 0xc7c0, ++ 0x080c, 0x3181, 0x1904, 0xc7c0, 0x2001, 0x1800, 0x2004, 0x9086, ++ 0x0002, 0x1138, 0x00f6, 0x2079, 0x1800, 0x78a4, 0x8000, 0x78a6, ++ 0x00fe, 0x2001, 0x0002, 0x080c, 0x61c1, 0x6023, 0x0001, 0x6003, ++ 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, 0x080c, 0x8936, 0x6110, ++ 0x2158, 0x2009, 0x0001, 0x080c, 0x8167, 0x0804, 0xc7c2, 0x6610, ++ 0x2658, 0xbe04, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0904, ++ 0xc7c0, 0x9686, 0x0004, 0x0904, 0xc7c0, 0x2001, 0x0004, 0x0804, ++ 0xc7be, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, ++ 0x0046, 0x6010, 0x2058, 0xbba0, 0x2021, 0x0006, 0x080c, 0x4a75, ++ 0x004e, 0x003e, 0x2001, 0x0006, 0x080c, 0xc7dc, 0x6610, 0x2658, ++ 0xbe04, 0x0066, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x006e, ++ 0x0168, 0x2001, 0x0006, 0x080c, 0x61ed, 0x9284, 0x00ff, 0x908e, ++ 0x0007, 0x1120, 0x2001, 0x0006, 0x080c, 0x61c1, 0x080c, 0x665f, ++ 0x11f8, 0x2001, 0x1836, 0x2004, 0xd0a4, 0x01d0, 0xbe04, 0x96b4, ++ 0x00ff, 0x9686, 0x0006, 0x01a0, 0x00f6, 0x2079, 0x1800, 0x78a4, ++ 0x8000, 0x78a6, 0x00fe, 0x0804, 0xc749, 0x2001, 0x0004, 0x0030, ++ 0x2001, 0x0006, 0x0409, 0x0020, 0x0018, 0x0010, 0x080c, 0x61ed, ++ 0x080c, 0x9be7, 0x0005, 0x2600, 0x0002, 0xc7d7, 0xc7d7, 0xc7d7, ++ 0xc7d7, 0xc7d7, 0xc7d9, 0xc7d7, 0xc7d7, 0xc7d7, 0xc7d7, 0xc7d9, ++ 0xc7d7, 0xc7d7, 0xc7d7, 0xc7d9, 0xc7d9, 0xc7d9, 0xc7d9, 0x080c, ++ 0x0d65, 0x080c, 0x9be7, 0x0005, 0x0016, 0x00b6, 0x00d6, 0x6110, ++ 0x2158, 0xb900, 0xd184, 0x0138, 0x080c, 0x61c1, 0x9006, 0x080c, ++ 0x61ad, 0x080c, 0x303b, 0x00de, 0x00be, 0x001e, 0x0005, 0x6610, ++ 0x2658, 0xb804, 0x9084, 0xff00, 0x8007, 0x90b2, 0x000c, 0x1a0c, ++ 0x0d65, 0x91b6, 0x0015, 0x1110, 0x003b, 0x0028, 0x91b6, 0x0016, ++ 0x190c, 0x0d65, 0x006b, 0x0005, 0xa670, 0xa670, 0xa670, 0xa670, ++ 0xa670, 0xa670, 0xc85b, 0xc81c, 0xa670, 0xa670, 0xa670, 0xa670, ++ 0xa670, 0xa670, 0xa670, 0xa670, 0xa670, 0xa670, 0xc85b, 0xc862, ++ 0xa670, 0xa670, 0xa670, 0xa670, 0x00f6, 0x080c, 0x665f, 0x11d8, ++ 0x080c, 0xbf61, 0x11c0, 0x6010, 0x905d, 0x01a8, 0xb884, 0x9005, ++ 0x0190, 0x9006, 0x080c, 0x61ad, 0x2001, 0x0002, 0x080c, 0x61c1, ++ 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x84d8, ++ 0x080c, 0x8936, 0x00f0, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, ++ 0x080c, 0x2424, 0x11b0, 0x080c, 0x6270, 0x0118, 0x080c, 0x9be7, ++ 0x0080, 0xb810, 0x0006, 0xb814, 0x0006, 0xb884, 0x0006, 0x080c, ++ 0x5cf6, 0x000e, 0xb886, 0x000e, 0xb816, 0x000e, 0xb812, 0x080c, ++ 0x9be7, 0x00fe, 0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, ++ 0x9be7, 0x0005, 0x080c, 0xaa54, 0x1148, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x84d8, 0x080c, 0x8936, 0x0010, 0x080c, 0x9be7, ++ 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d65, 0x080c, 0x8874, ++ 0x080c, 0x9c21, 0x0005, 0x9182, 0x0040, 0x0002, 0xc891, 0xc891, ++ 0xc891, 0xc891, 0xc893, 0xc891, 0xc891, 0xc891, 0xc891, 0xc891, ++ 0xc891, 0xc891, 0xc891, 0xc891, 0xc891, 0xc891, 0xc891, 0xc891, ++ 0xc891, 0x080c, 0x0d65, 0x0096, 0x00b6, 0x00d6, 0x00e6, 0x00f6, ++ 0x0046, 0x0026, 0x6210, 0x2258, 0xb8ac, 0x9005, 0x11b0, 0x6007, ++ 0x0044, 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xc8fa, ++ 0x080c, 0xd57d, 0x1170, 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, ++ 0x2011, 0x0200, 0x080c, 0x83eb, 0x0020, 0x9026, 0x080c, 0xd4b2, ++ 0x0c30, 0x080c, 0x1022, 0x090c, 0x0d65, 0x6003, 0x0007, 0xa867, ++ 0x010d, 0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, 0xa88e, 0x6008, ++ 0xa8e2, 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, 0x0016, 0xa876, ++ 0xa87f, 0x0000, 0xa883, 0x0000, 0xa887, 0x0036, 0x080c, 0x6996, ++ 0x001e, 0x080c, 0xd57d, 0x1904, 0xc95a, 0x9486, 0x2000, 0x1130, ++ 0x2019, 0x0017, 0x080c, 0xd1eb, 0x0804, 0xc95a, 0x9486, 0x0200, ++ 0x1120, 0x080c, 0xd17b, 0x0804, 0xc95a, 0x9486, 0x0400, 0x0120, ++ 0x9486, 0x1000, 0x1904, 0xc95a, 0x2019, 0x0002, 0x080c, 0xd19a, ++ 0x0804, 0xc95a, 0x2069, 0x1a3f, 0x6a00, 0xd284, 0x0904, 0xc9c4, ++ 0x9284, 0x0300, 0x1904, 0xc9bd, 0x6804, 0x9005, 0x0904, 0xc9a5, ++ 0x2d78, 0x6003, 0x0007, 0x080c, 0x103b, 0x0904, 0xc966, 0x7800, ++ 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x2001, ++ 0x180f, 0x2004, 0xd084, 0x1904, 0xc9c8, 0x9006, 0xa802, 0xa867, ++ 0x0116, 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, 0x6010, 0x2058, ++ 0xb8a0, 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, 0xb92c, 0xa9be, ++ 0xb930, 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, 0x7044, 0x9084, ++ 0x0003, 0x9080, 0xc962, 0x2005, 0xa87e, 0x20a9, 0x000a, 0x2001, ++ 0x0270, 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080, ++ 0x20e1, 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, 0x4003, 0x200b, ++ 0x0000, 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, 0x200c, 0xa9ae, ++ 0x080c, 0x6999, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x00be, ++ 0x009e, 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x1810, ++ 0x2004, 0xd084, 0x0120, 0x080c, 0x1022, 0x1904, 0xc90f, 0x6017, ++ 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, 0xa022, 0x080c, ++ 0x84d1, 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086, ++ 0x1200, 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c, ++ 0xf700, 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, ++ 0x2009, 0xa025, 0x080c, 0x84d1, 0x0828, 0x6868, 0x602e, 0x686c, ++ 0x6032, 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, ++ 0xa022, 0x080c, 0x84d1, 0x0804, 0xc95a, 0x2001, 0x180e, 0x2004, ++ 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x48d8, 0x6017, 0xf300, ++ 0x0010, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, ++ 0xa022, 0x080c, 0x84d1, 0x0804, 0xc95a, 0x6017, 0xf500, 0x0c98, ++ 0x6017, 0xf600, 0x0804, 0xc97a, 0x6017, 0xf200, 0x0804, 0xc97a, ++ 0xa867, 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, 0x2c00, 0xa87a, ++ 0x7044, 0x9084, 0x0003, 0x9080, 0xc962, 0x2005, 0xa87e, 0x2928, ++ 0x6010, 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, 0xb82c, 0xa88e, ++ 0xb830, 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, 0x2009, 0x0205, ++ 0x2104, 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, 0x2011, 0x0210, ++ 0x2214, 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, 0x1a0c, 0x0d65, ++ 0x8210, 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0029, 0x20a0, 0x2011, 0xca44, 0x2041, 0x0001, 0x223d, ++ 0x9784, 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, 0x4003, 0x931a, ++ 0x0530, 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, 0x2001, 0x0260, ++ 0x2098, 0x0c68, 0x2950, 0x080c, 0x103b, 0x0170, 0x2900, 0xb002, ++ 0xa867, 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, 0x902d, 0x0118, ++ 0x080c, 0x1054, 0x0cc8, 0x080c, 0x1054, 0x0804, 0xc966, 0x2548, ++ 0x8847, 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, 0x200b, 0x0000, ++ 0x080c, 0xd21e, 0x0804, 0xc95a, 0x8010, 0x0004, 0x801a, 0x0006, ++ 0x8018, 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, 0x0013, 0x1160, ++ 0x6004, 0x908a, 0x0057, 0x1a0c, 0x0d65, 0x9082, 0x0040, 0x0a0c, ++ 0x0d65, 0x2008, 0x0804, 0xcacf, 0x9186, 0x0051, 0x0108, 0x0040, ++ 0x080c, 0x9ab7, 0x01e8, 0x9086, 0x0002, 0x0904, 0xcb16, 0x00c0, ++ 0x9186, 0x0027, 0x0180, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014, ++ 0x0150, 0x190c, 0x0d65, 0x080c, 0x9ab7, 0x0150, 0x9086, 0x0004, ++ 0x0904, 0xcbb3, 0x0028, 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, ++ 0x080c, 0x9ca2, 0x0005, 0xca96, 0xca98, 0xca98, 0xcabf, 0xca96, ++ 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, ++ 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, 0xca96, 0x080c, 0x0d65, ++ 0x080c, 0x8874, 0x080c, 0x8936, 0x0036, 0x0096, 0x6014, 0x904d, ++ 0x01d8, 0x080c, 0xb847, 0x01c0, 0x6003, 0x0002, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, ++ 0xd21e, 0x6017, 0x0000, 0x6018, 0x9005, 0x1120, 0x2001, 0x1958, ++ 0x2004, 0x601a, 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x0096, ++ 0x080c, 0x8874, 0x080c, 0x8936, 0x080c, 0xb847, 0x0120, 0x6014, ++ 0x2048, 0x080c, 0x1054, 0x080c, 0x9c21, 0x009e, 0x0005, 0x0002, ++ 0xcae3, 0xcaf8, 0xcae5, 0xcb0d, 0xcae3, 0xcae3, 0xcae3, 0xcae3, ++ 0xcae3, 0xcae3, 0xcae3, 0xcae3, 0xcae3, 0xcae3, 0xcae3, 0xcae3, ++ 0xcae3, 0xcae3, 0xcae3, 0x080c, 0x0d65, 0x0096, 0x6014, 0x2048, ++ 0xa87c, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c, ++ 0x9c85, 0x0010, 0x6003, 0x0004, 0x080c, 0x8936, 0x009e, 0x0005, ++ 0x080c, 0xb847, 0x0138, 0x6114, 0x0096, 0x2148, 0xa97c, 0x009e, ++ 0xd1ec, 0x1138, 0x080c, 0x83c0, 0x080c, 0x9be7, 0x080c, 0x8936, ++ 0x0005, 0x080c, 0xd476, 0x0db0, 0x0cc8, 0x6003, 0x0001, 0x6007, ++ 0x0041, 0x2009, 0xa022, 0x080c, 0x84d1, 0x0005, 0x9182, 0x0040, ++ 0x0002, 0xcb2c, 0xcb2e, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, ++ 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, 0xcb2c, ++ 0xcb2c, 0xcb2c, 0xcb2f, 0xcb2c, 0x080c, 0x0d65, 0x0005, 0x00d6, ++ 0x080c, 0x83c0, 0x00de, 0x080c, 0xd4ce, 0x080c, 0x9be7, 0x0005, ++ 0x9182, 0x0040, 0x0002, 0xcb4e, 0xcb4e, 0xcb4e, 0xcb4e, 0xcb4e, ++ 0xcb4e, 0xcb4e, 0xcb4e, 0xcb4e, 0xcb50, 0xcb7b, 0xcb4e, 0xcb4e, ++ 0xcb4e, 0xcb4e, 0xcb7b, 0xcb4e, 0xcb4e, 0xcb4e, 0x080c, 0x0d65, ++ 0x6014, 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0168, 0x908c, 0x0003, ++ 0x918e, 0x0002, 0x0180, 0x6144, 0xd1e4, 0x1168, 0x2009, 0x0041, ++ 0x009e, 0x0804, 0xcc3b, 0x6003, 0x0007, 0x601b, 0x0000, 0x080c, ++ 0x83c0, 0x009e, 0x0005, 0x6014, 0x2048, 0xa97c, 0xd1ec, 0x1130, ++ 0x080c, 0x83c0, 0x080c, 0x9be7, 0x009e, 0x0005, 0x080c, 0xd476, ++ 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c, 0x200c, 0xc1d4, 0x2102, ++ 0x0036, 0x080c, 0x88d1, 0x080c, 0x8936, 0x6014, 0x0096, 0x2048, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0188, 0xa87c, ++ 0x9084, 0x0003, 0x9086, 0x0002, 0x0140, 0xa8ac, 0x6330, 0x931a, ++ 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e, 0x6003, 0x0002, 0x0080, ++ 0x2019, 0x0004, 0x080c, 0xd21e, 0x6018, 0x9005, 0x1128, 0x2001, ++ 0x1958, 0x2004, 0x8003, 0x601a, 0x6017, 0x0000, 0x6003, 0x0007, ++ 0x009e, 0x003e, 0x0005, 0x9182, 0x0040, 0x0002, 0xcbca, 0xcbca, ++ 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbcc, 0xcbca, ++ 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, 0xcbca, ++ 0xcbca, 0xcc17, 0x080c, 0x0d65, 0x6014, 0x0096, 0x2048, 0xa834, ++ 0xaa38, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1190, ++ 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128, 0x2009, 0x0041, 0x009e, ++ 0x0804, 0xcc3b, 0x6003, 0x0007, 0x601b, 0x0000, 0x080c, 0x83c0, ++ 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58, 0x0006, 0x0046, 0xacac, ++ 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030, 0x9420, 0x6432, 0x602c, ++ 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8, 0x6110, 0x00b6, 0x2158, ++ 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009, 0x180e, 0x210c, 0xd19c, ++ 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, 0x00e9, 0x080c, ++ 0x83c2, 0x009e, 0x0005, 0x6003, 0x0002, 0x009e, 0x0005, 0x6024, ++ 0xd0f4, 0x0128, 0x080c, 0x1595, 0x1904, 0xcbcc, 0x0005, 0x6014, ++ 0x0096, 0x2048, 0xa834, 0xa938, 0x009e, 0x9105, 0x1120, 0x080c, ++ 0x1595, 0x1904, 0xcbcc, 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000, ++ 0x8212, 0x9291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, 0x0015, ++ 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040, 0x0208, 0x0062, 0x9186, ++ 0x0013, 0x0120, 0x9186, 0x0014, 0x190c, 0x0d65, 0x6024, 0xd0dc, ++ 0x090c, 0x0d65, 0x0005, 0xcc5e, 0xcc6a, 0xcc76, 0xcc82, 0xcc5e, ++ 0xcc5e, 0xcc5e, 0xcc5e, 0xcc65, 0xcc60, 0xcc60, 0xcc5e, 0xcc5e, ++ 0xcc5e, 0xcc5e, 0xcc60, 0xcc5e, 0xcc60, 0xcc5e, 0x080c, 0x0d65, ++ 0x6024, 0xd0dc, 0x090c, 0x0d65, 0x0005, 0x6014, 0x9005, 0x190c, ++ 0x0d65, 0x0005, 0x6003, 0x0001, 0x6106, 0x0126, 0x2091, 0x8000, ++ 0x2009, 0xa022, 0x080c, 0x84b3, 0x012e, 0x0005, 0x6003, 0x0004, ++ 0x6106, 0x0126, 0x2091, 0x8000, 0x2009, 0xa001, 0x080c, 0x84d1, ++ 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, 0x080c, 0x1aa5, 0x0126, ++ 0x2091, 0x8000, 0x6014, 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0188, ++ 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x6024, 0xd0cc, 0x1148, ++ 0xd0c4, 0x1138, 0xa8a8, 0x9005, 0x1120, 0x6144, 0x918d, 0xb035, ++ 0x0018, 0x6144, 0x918d, 0xa035, 0x009e, 0x080c, 0x8518, 0x012e, ++ 0x0005, 0x6144, 0x918d, 0xa032, 0x0cb8, 0x0126, 0x2091, 0x8000, ++ 0x0036, 0x0096, 0x9182, 0x0040, 0x0023, 0x009e, 0x003e, 0x012e, ++ 0x0005, 0xccc9, 0xcccb, 0xcce0, 0xccfa, 0xccc9, 0xccc9, 0xccc9, ++ 0xccc9, 0xccc9, 0xccc9, 0xccc9, 0xccc9, 0xccc9, 0xccc9, 0xccc9, ++ 0xccc9, 0x080c, 0x0d65, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0510, ++ 0x909c, 0x0003, 0x939e, 0x0003, 0x01e8, 0x6003, 0x0001, 0x6106, ++ 0x0126, 0x2091, 0x8000, 0x2009, 0xa022, 0x080c, 0x84d1, 0x0470, ++ 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0168, 0x909c, 0x0003, 0x939e, ++ 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x2009, 0xa001, 0x080c, ++ 0x84d1, 0x00e0, 0x901e, 0x6316, 0x631a, 0x2019, 0x0004, 0x080c, ++ 0xd21e, 0x00a0, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0d98, 0x909c, ++ 0x0003, 0x939e, 0x0003, 0x0d70, 0x6003, 0x0003, 0x6106, 0x080c, ++ 0x1aa5, 0x6144, 0x918d, 0xa035, 0x080c, 0x8518, 0x0005, 0x080c, ++ 0x8874, 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, 0xd51a, ++ 0x0036, 0x2019, 0x0029, 0x080c, 0xd21e, 0x003e, 0x009e, 0x080c, ++ 0x9c21, 0x080c, 0x8936, 0x0005, 0x080c, 0x88d1, 0x6114, 0x81ff, ++ 0x0158, 0x0096, 0x2148, 0x080c, 0xd51a, 0x0036, 0x2019, 0x0029, ++ 0x080c, 0xd21e, 0x003e, 0x009e, 0x080c, 0x9c21, 0x0005, 0x9182, ++ 0x0085, 0x0002, 0xcd49, 0xcd47, 0xcd47, 0xcd55, 0xcd47, 0xcd47, ++ 0xcd47, 0xcd47, 0xcd47, 0xcd47, 0xcd47, 0xcd47, 0xcd47, 0x080c, ++ 0x0d65, 0x6003, 0x000b, 0x6106, 0x0126, 0x2091, 0x8000, 0x2009, ++ 0x8020, 0x080c, 0x84d1, 0x012e, 0x0005, 0x0026, 0x00e6, 0x080c, ++ 0xd46d, 0x0118, 0x080c, 0x9be7, 0x0440, 0x2071, 0x0260, 0x7224, ++ 0x6216, 0x2001, 0x180e, 0x2004, 0xd0e4, 0x0150, 0x6010, 0x00b6, ++ 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2011, 0x014e, 0x080c, 0x9f13, ++ 0x7220, 0x080c, 0xd0b4, 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, ++ 0x0087, 0x7224, 0x9296, 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00ee, 0x002e, 0x0005, ++ 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d65, ++ 0x908a, 0x0092, 0x1a0c, 0x0d65, 0x9082, 0x0085, 0x00a2, 0x9186, ++ 0x0027, 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, 0x9ca2, 0x0050, ++ 0x2001, 0x0007, 0x080c, 0x61ed, 0x080c, 0x8874, 0x080c, 0x9c21, ++ 0x080c, 0x8936, 0x0005, 0xcdb8, 0xcdba, 0xcdba, 0xcdb8, 0xcdb8, ++ 0xcdb8, 0xcdb8, 0xcdb8, 0xcdb8, 0xcdb8, 0xcdb8, 0xcdb8, 0xcdb8, ++ 0x080c, 0x0d65, 0x080c, 0x9c21, 0x080c, 0x8936, 0x0005, 0x9182, ++ 0x0085, 0x0a0c, 0x0d65, 0x9182, 0x0092, 0x1a0c, 0x0d65, 0x9182, ++ 0x0085, 0x0002, 0xcdd7, 0xcdd7, 0xcdd7, 0xcdd9, 0xcdd7, 0xcdd7, ++ 0xcdd7, 0xcdd7, 0xcdd7, 0xcdd7, 0xcdd7, 0xcdd7, 0xcdd7, 0x080c, ++ 0x0d65, 0x0005, 0x9186, 0x0013, 0x0148, 0x9186, 0x0014, 0x0130, ++ 0x9186, 0x0027, 0x0118, 0x080c, 0x9ca2, 0x0020, 0x080c, 0x8874, ++ 0x080c, 0x9c21, 0x0005, 0x0036, 0x080c, 0xd4ce, 0x604b, 0x0000, ++ 0x2019, 0x000b, 0x0031, 0x6023, 0x0006, 0x6003, 0x0007, 0x003e, ++ 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, 0x2001, 0x0382, 0x2004, ++ 0x9084, 0x0007, 0x0006, 0x9086, 0x0003, 0x0110, 0x080c, 0x98c8, ++ 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0x9382, 0x009e, 0x008e, ++ 0x1550, 0x0076, 0x2c38, 0x080c, 0x942d, 0x007e, 0x1520, 0x6000, ++ 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007, 0x01e0, 0x0096, ++ 0x601c, 0xd084, 0x0140, 0x080c, 0xd4ce, 0x080c, 0xbf79, 0x080c, ++ 0x1914, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, 0xb847, 0x0110, ++ 0x080c, 0xd21e, 0x009e, 0x6017, 0x0000, 0x080c, 0xd4ce, 0x6023, ++ 0x0007, 0x080c, 0xbf79, 0x000e, 0x9086, 0x0003, 0x0110, 0x080c, ++ 0x98e4, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, 0x00b6, 0x0036, ++ 0x0156, 0x2079, 0x0260, 0x7938, 0x783c, 0x080c, 0x2424, 0x15e8, ++ 0x0016, 0x00c6, 0x080c, 0x6270, 0x15b0, 0x001e, 0x00c6, 0x2160, ++ 0x080c, 0xbf76, 0x00ce, 0x002e, 0x0026, 0x0016, 0x080c, 0x98c8, ++ 0x2019, 0x0029, 0x080c, 0x94f4, 0x080c, 0x863b, 0x0076, 0x903e, ++ 0x080c, 0x852a, 0x007e, 0x001e, 0x0076, 0x903e, 0x080c, 0xcfc8, ++ 0x007e, 0x080c, 0x98e4, 0x0026, 0xba04, 0x9294, 0xff00, 0x8217, ++ 0x9286, 0x0006, 0x0118, 0x9286, 0x0004, 0x1118, 0xbaa0, 0x080c, ++ 0x30dc, 0x002e, 0xbc84, 0x001e, 0x080c, 0x5cf6, 0xbe12, 0xbd16, ++ 0xbc86, 0x9006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00be, ++ 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00b6, 0x0016, 0x2009, ++ 0x1823, 0x2104, 0x9086, 0x0074, 0x1904, 0xceec, 0x2069, 0x0260, ++ 0x6944, 0x9182, 0x0100, 0x06e0, 0x6940, 0x9184, 0x8000, 0x0904, ++ 0xcee9, 0x2001, 0x194d, 0x2004, 0x9005, 0x1140, 0x6010, 0x2058, ++ 0xb884, 0x9005, 0x0118, 0x9184, 0x0800, 0x0598, 0x6948, 0x918a, ++ 0x0001, 0x0648, 0x080c, 0xd582, 0x0118, 0x6978, 0xd1fc, 0x11b8, ++ 0x2009, 0x0205, 0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, ++ 0x9182, 0x0100, 0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, ++ 0x0001, 0x0288, 0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, ++ 0x0100, 0x00a0, 0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, ++ 0x6017, 0x0700, 0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, ++ 0x0028, 0x6017, 0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, ++ 0x0008, 0x9006, 0x001e, 0x00be, 0x00de, 0x00ce, 0x0005, 0x00c6, ++ 0x00b6, 0x0026, 0x0036, 0x0156, 0x6210, 0x2258, 0xbb04, 0x9394, ++ 0x00ff, 0x9286, 0x0006, 0x0180, 0x9286, 0x0004, 0x0168, 0x9394, ++ 0xff00, 0x8217, 0x9286, 0x0006, 0x0138, 0x9286, 0x0004, 0x0120, ++ 0x080c, 0x627f, 0x0804, 0xcf57, 0x2011, 0x0276, 0x20a9, 0x0004, ++ 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xabdf, 0x009e, 0x15c0, ++ 0x2011, 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, ++ 0x080c, 0xabdf, 0x009e, 0x1560, 0x0046, 0x0016, 0xbaa0, 0x2220, ++ 0x9006, 0x2009, 0x1854, 0x210c, 0x0038, 0x2009, 0x0029, 0x080c, ++ 0xd273, 0xb800, 0xc0e5, 0xb802, 0x080c, 0x98c8, 0x2019, 0x0029, ++ 0x080c, 0x863b, 0x0076, 0x2039, 0x0000, 0x080c, 0x852a, 0x2c08, ++ 0x080c, 0xcfc8, 0x007e, 0x080c, 0x98e4, 0x2001, 0x0007, 0x080c, ++ 0x61ed, 0x2001, 0x0007, 0x080c, 0x61c1, 0x001e, 0x004e, 0x9006, ++ 0x015e, 0x003e, 0x002e, 0x00be, 0x00ce, 0x0005, 0x00d6, 0x2069, ++ 0x026e, 0x6800, 0x9086, 0x0800, 0x0118, 0x6017, 0x0000, 0x0008, ++ 0x9006, 0x00de, 0x0005, 0x00b6, 0x00f6, 0x0016, 0x0026, 0x0036, ++ 0x0156, 0x2079, 0x026c, 0x7930, 0x7834, 0x080c, 0x2424, 0x11d0, ++ 0x080c, 0x6270, 0x11b8, 0x2011, 0x0270, 0x20a9, 0x0004, 0x0096, ++ 0x2b48, 0x2019, 0x000a, 0x080c, 0xabdf, 0x009e, 0x1158, 0x2011, ++ 0x0274, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, ++ 0xabdf, 0x009e, 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00be, ++ 0x0005, 0x00b6, 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, ++ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x2424, 0x11d0, 0x080c, ++ 0x6270, 0x11b8, 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x000a, 0x080c, 0xabdf, 0x009e, 0x1158, 0x2011, 0x027a, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xabdf, ++ 0x009e, 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, 0x00be, 0x0005, ++ 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x9926, 0x0106, 0x190c, 0x98c8, ++ 0x2740, 0x2029, 0x19c4, 0x252c, 0x2021, 0x19cb, 0x2424, 0x2061, ++ 0x1ddc, 0x2071, 0x1800, 0x7650, 0x7070, 0x81ff, 0x0150, 0x0006, ++ 0x9186, 0x1b02, 0x000e, 0x0128, 0x8001, 0x9602, 0x1a04, 0xd069, ++ 0x0018, 0x9606, 0x0904, 0xd069, 0x2100, 0x9c06, 0x0904, 0xd060, ++ 0x080c, 0xd2b4, 0x1904, 0xd060, 0x080c, 0xd59f, 0x0904, 0xd060, ++ 0x080c, 0xd2a4, 0x0904, 0xd060, 0x6720, 0x9786, 0x0001, 0x1148, ++ 0x080c, 0x3181, 0x0904, 0xd088, 0x6004, 0x9086, 0x0000, 0x1904, ++ 0xd088, 0x9786, 0x0004, 0x0904, 0xd088, 0x9786, 0x0007, 0x0904, ++ 0xd060, 0x2500, 0x9c06, 0x0904, 0xd060, 0x2400, 0x9c06, 0x0904, ++ 0xd060, 0x88ff, 0x0118, 0x605c, 0x9906, 0x15d0, 0x0096, 0x6043, ++ 0xffff, 0x6000, 0x9086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1914, ++ 0x001e, 0x9786, 0x000a, 0x0148, 0x080c, 0xba5c, 0x1130, 0x080c, ++ 0xa58f, 0x009e, 0x080c, 0x9c21, 0x0418, 0x6014, 0x2048, 0x080c, ++ 0xb847, 0x01d8, 0x9786, 0x0003, 0x1588, 0xa867, 0x0103, 0xa87c, ++ 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0fd4, 0x009e, ++ 0xab7a, 0xa877, 0x0000, 0x080c, 0xd51a, 0x0016, 0x080c, 0xbb45, ++ 0x080c, 0x698a, 0x001e, 0x080c, 0xba36, 0x009e, 0x080c, 0x9c21, ++ 0x9ce0, 0x001c, 0x2001, 0x1819, 0x2004, 0x9c02, 0x1210, 0x0804, ++ 0xcfe1, 0x010e, 0x190c, 0x98e4, 0x012e, 0x002e, 0x004e, 0x005e, ++ 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0x9786, 0x0006, ++ 0x1150, 0x9386, 0x0005, 0x0128, 0x080c, 0xd51a, 0x080c, 0xd21e, ++ 0x08e0, 0x009e, 0x08e8, 0x9786, 0x000a, 0x0908, 0x0804, 0xd045, ++ 0x81ff, 0x09b0, 0x9180, 0x0001, 0x2004, 0x9086, 0x0018, 0x0130, ++ 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, 0x1950, 0x6000, 0x9086, ++ 0x0002, 0x1930, 0x080c, 0xba4b, 0x0130, 0x080c, 0xba5c, 0x1900, ++ 0x080c, 0xa58f, 0x0038, 0x080c, 0x303b, 0x080c, 0xba5c, 0x1110, ++ 0x080c, 0xa58f, 0x080c, 0x9c21, 0x0804, 0xd060, 0xa864, 0x9084, ++ 0x00ff, 0x9086, 0x0039, 0x0005, 0x00c6, 0x00e6, 0x0016, 0x2c08, ++ 0x2170, 0x9006, 0x080c, 0xd245, 0x001e, 0x0120, 0x6020, 0x9084, ++ 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, 0xd0d3, 0xd0d3, 0xd0d3, ++ 0xd0d3, 0xd0d3, 0xd0d3, 0xd0d5, 0xd0d3, 0xd0d3, 0xd0d3, 0xd0d3, ++ 0x9c21, 0x9c21, 0xd0d3, 0x9006, 0x0005, 0x0036, 0x0046, 0x0016, ++ 0x7010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2009, 0x0020, ++ 0x080c, 0xd273, 0x001e, 0x004e, 0x2019, 0x0002, 0x080c, 0xcdf9, ++ 0x003e, 0x9085, 0x0001, 0x0005, 0x0096, 0x080c, 0xb847, 0x0140, ++ 0x6014, 0x904d, 0x080c, 0xb452, 0x687b, 0x0005, 0x080c, 0x6996, ++ 0x009e, 0x080c, 0x9c21, 0x9085, 0x0001, 0x0005, 0x2001, 0x0001, ++ 0x080c, 0x61ad, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, ++ 0x2019, 0x1805, 0x2011, 0x0276, 0x080c, 0xabcb, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x9005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, ++ 0x0076, 0x0066, 0x00b6, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, ++ 0x1ddc, 0x2079, 0x0001, 0x8fff, 0x0904, 0xd16e, 0x2071, 0x1800, ++ 0x7650, 0x7070, 0x8001, 0x9602, 0x1a04, 0xd16e, 0x88ff, 0x0120, ++ 0x2800, 0x9c06, 0x1590, 0x2078, 0x080c, 0xd2a4, 0x0570, 0x2400, ++ 0x9c06, 0x0558, 0x6720, 0x9786, 0x0006, 0x1538, 0x9786, 0x0007, ++ 0x0520, 0x88ff, 0x1140, 0x6010, 0x9b06, 0x11f8, 0x85ff, 0x0118, ++ 0x605c, 0x9106, 0x11d0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, ++ 0xd4ce, 0x080c, 0xbf79, 0x080c, 0x1914, 0x6023, 0x0007, 0x6014, ++ 0x2048, 0x080c, 0xb847, 0x0120, 0x0046, 0x080c, 0xd21e, 0x004e, ++ 0x009e, 0x080c, 0x9c21, 0x88ff, 0x1198, 0x9ce0, 0x001c, 0x2001, ++ 0x1819, 0x2004, 0x9c02, 0x1210, 0x0804, 0xd123, 0x9006, 0x012e, ++ 0x00be, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, ++ 0x98c5, 0x0001, 0x0ca0, 0x080c, 0x98c8, 0x00b6, 0x0076, 0x0056, ++ 0x0086, 0x9046, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6210, ++ 0x2258, 0x0096, 0x904e, 0x080c, 0x9382, 0x009e, 0x008e, 0x903e, ++ 0x080c, 0x942d, 0x080c, 0xd114, 0x005e, 0x007e, 0x00be, 0x080c, ++ 0x98e4, 0x0005, 0x080c, 0x98c8, 0x00b6, 0x0046, 0x0056, 0x0076, ++ 0x00c6, 0x0156, 0x2c20, 0x2128, 0x20a9, 0x007f, 0x900e, 0x0016, ++ 0x0036, 0x080c, 0x6270, 0x1190, 0x0056, 0x0086, 0x9046, 0x2508, ++ 0x2029, 0x0001, 0x0096, 0x904e, 0x080c, 0x9382, 0x009e, 0x008e, ++ 0x903e, 0x080c, 0x942d, 0x080c, 0xd114, 0x005e, 0x003e, 0x001e, ++ 0x8108, 0x1f04, 0xd1a7, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, ++ 0x00be, 0x080c, 0x98e4, 0x0005, 0x080c, 0x98c8, 0x00b6, 0x0076, ++ 0x0056, 0x6210, 0x2258, 0x0086, 0x9046, 0x2029, 0x0001, 0x2019, ++ 0x0048, 0x0096, 0x904e, 0x080c, 0x9382, 0x009e, 0x008e, 0x903e, ++ 0x080c, 0x942d, 0x2c20, 0x080c, 0xd114, 0x005e, 0x007e, 0x00be, ++ 0x080c, 0x98e4, 0x0005, 0x080c, 0x98c8, 0x00b6, 0x0046, 0x0056, ++ 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x0800, 0x900e, 0x0016, ++ 0x0036, 0x080c, 0x6270, 0x11a0, 0x0086, 0x9046, 0x2828, 0x0046, ++ 0x2021, 0x0001, 0x080c, 0xd4b2, 0x004e, 0x0096, 0x904e, 0x080c, ++ 0x9382, 0x009e, 0x008e, 0x903e, 0x080c, 0x942d, 0x080c, 0xd114, ++ 0x003e, 0x001e, 0x8108, 0x1f04, 0xd1f7, 0x015e, 0x00ce, 0x007e, ++ 0x005e, 0x004e, 0x00be, 0x080c, 0x98e4, 0x0005, 0x0016, 0x00f6, ++ 0x080c, 0xb845, 0x0198, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0046, ++ 0x0180, 0xa800, 0x907d, 0x0138, 0xa803, 0x0000, 0xab82, 0x080c, ++ 0x6996, 0x2f48, 0x0cb0, 0xab82, 0x080c, 0x6996, 0x00fe, 0x001e, ++ 0x0005, 0xa800, 0x907d, 0x0130, 0xa803, 0x0000, 0x080c, 0x6996, ++ 0x2f48, 0x0cb8, 0x080c, 0x6996, 0x0c88, 0x00e6, 0x0046, 0x0036, ++ 0x2061, 0x1ddc, 0x9005, 0x1138, 0x2071, 0x1800, 0x7450, 0x7070, ++ 0x8001, 0x9402, 0x12d8, 0x2100, 0x9c06, 0x0168, 0x6000, 0x9086, ++ 0x0000, 0x0148, 0x6008, 0x9206, 0x1130, 0x6010, 0x91a0, 0x0004, ++ 0x2424, 0x9406, 0x0140, 0x9ce0, 0x001c, 0x2001, 0x1819, 0x2004, ++ 0x9c02, 0x1220, 0x0c40, 0x9085, 0x0001, 0x0008, 0x9006, 0x003e, ++ 0x004e, 0x00ee, 0x0005, 0x0096, 0x0006, 0x080c, 0x1022, 0x000e, ++ 0x090c, 0x0d65, 0xaae2, 0xa867, 0x010d, 0xa88e, 0x0026, 0x2010, ++ 0x080c, 0xb835, 0x2001, 0x0000, 0x0120, 0x2200, 0x9080, 0x0017, ++ 0x2004, 0x002e, 0xa87a, 0x9186, 0x0020, 0x0110, 0xa8e3, 0xffff, ++ 0xa986, 0xac76, 0xa87f, 0x0000, 0x2001, 0x195f, 0x2004, 0xa882, ++ 0x9006, 0xa802, 0xa86a, 0xa88a, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6996, 0x012e, 0x009e, 0x0005, 0x6700, 0x9786, 0x0000, 0x0158, ++ 0x9786, 0x0001, 0x0140, 0x9786, 0x000a, 0x0128, 0x9786, 0x0009, ++ 0x0110, 0x9085, 0x0001, 0x0005, 0x00e6, 0x6010, 0x9075, 0x0138, ++ 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x9206, 0x00ee, 0x0005, 0x9085, ++ 0x0001, 0x0cd8, 0x0016, 0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, ++ 0x6134, 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, ++ 0x000b, 0x6023, 0x0005, 0x2001, 0x1958, 0x2004, 0x601a, 0x2009, ++ 0x8020, 0x080c, 0x84d1, 0x001e, 0x0005, 0xa001, 0xa001, 0x0005, ++ 0x6024, 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0xbb8c, 0x0030, ++ 0x080c, 0xd4ce, 0x080c, 0x83c0, 0x080c, 0x9be7, 0x0005, 0x9280, ++ 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, 0xd303, 0xd303, 0xd303, ++ 0xd305, 0xd303, 0xd305, 0xd305, 0xd303, 0xd305, 0xd303, 0xd303, ++ 0xd303, 0xd303, 0xd303, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, ++ 0x9280, 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, 0xd31c, 0xd31c, ++ 0xd31c, 0xd31c, 0xd31c, 0xd31c, 0xd329, 0xd31c, 0xd31c, 0xd31c, ++ 0xd31c, 0xd31c, 0xd31c, 0xd31c, 0x6007, 0x003b, 0x602f, 0x0009, ++ 0x6017, 0x2a00, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, ++ 0x0005, 0x0096, 0x00c6, 0x2260, 0x080c, 0xd4ce, 0x604b, 0x0000, ++ 0x6024, 0xc0f4, 0xc0e4, 0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, ++ 0x2268, 0x9186, 0x0007, 0x1904, 0xd382, 0x6814, 0x9005, 0x0138, ++ 0x2048, 0xa87c, 0xd0fc, 0x1118, 0x00de, 0x009e, 0x08a8, 0x6007, ++ 0x003a, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00c6, ++ 0x2d60, 0x6100, 0x9186, 0x0002, 0x1904, 0xd3f9, 0x6014, 0x9005, ++ 0x1138, 0x6000, 0x9086, 0x0007, 0x190c, 0x0d65, 0x0804, 0xd3f9, ++ 0x2048, 0x080c, 0xb847, 0x1130, 0x0028, 0x2048, 0xa800, 0x9005, ++ 0x1de0, 0x2900, 0x2048, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, ++ 0x1168, 0xa87c, 0xc0dc, 0xc0f4, 0xa87e, 0xa880, 0xc0fc, 0xa882, ++ 0x2009, 0x0043, 0x080c, 0xcc3b, 0x0804, 0xd3f9, 0x2009, 0x0041, ++ 0x0804, 0xd3f3, 0x9186, 0x0005, 0x15a0, 0x6814, 0x2048, 0xa87c, ++ 0xd0bc, 0x1120, 0x00de, 0x009e, 0x0804, 0xd31c, 0xd0b4, 0x0128, ++ 0xd0fc, 0x090c, 0x0d65, 0x0804, 0xd33d, 0x6007, 0x003a, 0x6003, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x84d1, 0x00c6, 0x2d60, 0x6100, ++ 0x9186, 0x0002, 0x0120, 0x9186, 0x0004, 0x1904, 0xd3f9, 0x6814, ++ 0x2048, 0xa97c, 0xc1f4, 0xc1dc, 0xa97e, 0xa980, 0xc1fc, 0xc1bc, ++ 0xa982, 0x00f6, 0x2c78, 0x080c, 0x164f, 0x00fe, 0x2009, 0x0042, ++ 0x04d0, 0x0036, 0x080c, 0x1022, 0x090c, 0x0d65, 0xa867, 0x010d, ++ 0x9006, 0xa802, 0xa86a, 0xa88a, 0x2d18, 0xab8e, 0xa887, 0x0045, ++ 0x2c00, 0xa892, 0x6038, 0xa8a2, 0x2360, 0x6024, 0xc0dd, 0x6026, ++ 0x6010, 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x2004, 0x635c, 0xab7a, ++ 0xa876, 0x9006, 0xa87e, 0xa882, 0xad9a, 0xae96, 0xa89f, 0x0001, ++ 0x080c, 0x6996, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xcdf9, ++ 0x2d00, 0x600a, 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, ++ 0x634a, 0x003e, 0x0038, 0x604b, 0x0000, 0x6003, 0x0007, 0x080c, ++ 0xcc3b, 0x00ce, 0x00de, 0x009e, 0x0005, 0x9186, 0x0013, 0x1128, ++ 0x6004, 0x9082, 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, ++ 0x080c, 0x8874, 0x0036, 0x0096, 0x6014, 0x2048, 0x2019, 0x0004, ++ 0x080c, 0xd21e, 0x009e, 0x003e, 0x080c, 0x8936, 0x0005, 0x9186, ++ 0x0014, 0x0d70, 0x080c, 0x9ca2, 0x0005, 0xd42c, 0xd42a, 0xd42a, ++ 0xd42a, 0xd42a, 0xd42a, 0xd42c, 0xd42a, 0xd42a, 0xd42a, 0xd42a, ++ 0xd42a, 0xd42a, 0x080c, 0x0d65, 0x6003, 0x000c, 0x080c, 0x8936, ++ 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x001a, ++ 0x080c, 0x9ca2, 0x0005, 0xd448, 0xd448, 0xd448, 0xd448, 0xd44a, ++ 0xd46a, 0xd448, 0xd448, 0xd448, 0xd448, 0xd448, 0xd448, 0xd448, ++ 0x080c, 0x0d65, 0x00d6, 0x2c68, 0x080c, 0x9b91, 0x01b0, 0x6003, ++ 0x0001, 0x6007, 0x001e, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, ++ 0x026f, 0x210c, 0x613e, 0x600b, 0xffff, 0x6910, 0x6112, 0x6023, ++ 0x0004, 0x2009, 0x8020, 0x080c, 0x84d1, 0x2d60, 0x080c, 0x9be7, ++ 0x00de, 0x0005, 0x080c, 0x9be7, 0x0005, 0x00e6, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0ec, 0x00ee, 0x0005, 0x2009, 0x1873, ++ 0x210c, 0xd1ec, 0x05b0, 0x6003, 0x0002, 0x6024, 0xc0e5, 0x6026, ++ 0xd0cc, 0x0150, 0x2001, 0x1959, 0x2004, 0x604a, 0x2009, 0x1873, ++ 0x210c, 0xd1f4, 0x1520, 0x00a0, 0x2009, 0x1873, 0x210c, 0xd1f4, ++ 0x0128, 0x6024, 0xc0e4, 0x6026, 0x9006, 0x00d8, 0x2001, 0x1959, ++ 0x200c, 0x2001, 0x1957, 0x2004, 0x9100, 0x9080, 0x000a, 0x604a, ++ 0x6010, 0x00b6, 0x2058, 0xb8ac, 0x00be, 0x0008, 0x2104, 0x9005, ++ 0x0118, 0x9088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0x9085, ++ 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x615c, 0xb8ac, 0x2060, ++ 0x8cff, 0x0180, 0x84ff, 0x1118, 0x605c, 0x9106, 0x1138, 0x600c, ++ 0x2072, 0x080c, 0x83c0, 0x080c, 0x9be7, 0x0010, 0x9cf0, 0x0003, ++ 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, 0x00b6, ++ 0x6010, 0x2058, 0xb8ac, 0x2068, 0x9005, 0x0130, 0x9c06, 0x0110, ++ 0x680c, 0x0cd0, 0x600c, 0x680e, 0x00be, 0x00de, 0x0005, 0x0026, ++ 0x0036, 0x0156, 0x2011, 0x182b, 0x2204, 0x9084, 0x00ff, 0x2019, ++ 0x026e, 0x2334, 0x9636, 0x1508, 0x8318, 0x2334, 0x2204, 0x9084, ++ 0xff00, 0x9636, 0x11d0, 0x2011, 0x0270, 0x20a9, 0x0004, 0x6010, ++ 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xabdf, 0x009e, 0x1168, ++ 0x2011, 0x0274, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, ++ 0x0006, 0x080c, 0xabdf, 0x009e, 0x1100, 0x015e, 0x003e, 0x002e, ++ 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5c6f, 0x080c, 0x2ddb, ++ 0x00ee, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5, 0xa882, ++ 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, ++ 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0x19c4, 0x252c, ++ 0x2021, 0x19cb, 0x2424, 0x2061, 0x1ddc, 0x2071, 0x1800, 0x7650, ++ 0x7070, 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, 0x9786, ++ 0x0008, 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, 0x01d0, ++ 0x080c, 0xd2a4, 0x01b8, 0x080c, 0xd2b4, 0x11a0, 0x6000, 0x9086, ++ 0x0004, 0x1120, 0x0016, 0x080c, 0x1914, 0x001e, 0x080c, 0xba4b, ++ 0x1110, 0x080c, 0x303b, 0x080c, 0xba5c, 0x1110, 0x080c, 0xa58f, ++ 0x080c, 0x9c21, 0x9ce0, 0x001c, 0x2001, 0x1819, 0x2004, 0x9c02, ++ 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, ++ 0x007e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x2001, 0x1810, 0x2004, ++ 0xd0dc, 0x0005, 0x0006, 0x2001, 0x1836, 0x2004, 0xd09c, 0x000e, ++ 0x0005, 0x0006, 0x0036, 0x0046, 0x080c, 0xbf61, 0x0168, 0x2019, ++ 0xffff, 0x9005, 0x0128, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, ++ 0x2021, 0x0004, 0x080c, 0x4a75, 0x004e, 0x003e, 0x000e, 0x6004, ++ 0x9086, 0x0001, 0x1128, 0x080c, 0x94f4, 0x080c, 0x9c21, 0x9006, ++ 0x0005, 0x00e6, 0x00c6, 0x00b6, 0x0046, 0x2061, 0x1ddc, 0x2071, ++ 0x1800, 0x7450, 0x7070, 0x8001, 0x9402, 0x12b8, 0x2100, 0x9c06, ++ 0x0148, 0x6000, 0x9086, 0x0000, 0x0128, 0x6010, 0x2058, 0xb8a0, ++ 0x9206, 0x0140, 0x9ce0, 0x001c, 0x2001, 0x1819, 0x2004, 0x9c02, ++ 0x1220, 0x0c60, 0x9085, 0x0001, 0x0008, 0x9006, 0x004e, 0x00be, ++ 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, ++ 0x8000, 0x2071, 0x1840, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, ++ 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, ++ 0x9084, 0x0007, 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, 0x0130, ++ 0x908e, 0x0005, 0x0118, 0x2071, 0x184a, 0x0089, 0x001e, 0x00ee, ++ 0x000e, 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, ++ 0x2071, 0x1842, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, ++ 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, ++ 0x00e6, 0x2071, 0x1840, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, ++ 0x1844, 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, ++ 0x8000, 0x2071, 0x1840, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, ++ 0x012e, 0x0005, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, ++ 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, ++ 0x4000, 0x8000, 0xfddb ++}; ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322flx_length01 = 0xce3b; ++#else ++unsigned short risc_code_length01 = 0xce3b; ++#endif ++ ++/* ++ * ++ */ ++ ++unsigned long rseqflx_code_addr01 = 0x0001c000 ; ++unsigned short rseqflx_code01[] = { ++0x000b, 0x0003, 0x0000, 0x071c, 0x0001, 0xc000, 0x0008, 0x8064, ++ 0x0000, 0x0010, 0x0000, 0x8066, 0x0008, 0x0101, 0x0003, 0xc007, ++ 0x0008, 0x80e0, 0x0008, 0xff00, 0x0000, 0x80e2, 0x0008, 0xff00, ++ 0x0008, 0x0162, 0x0000, 0x8066, 0x0008, 0xa101, 0x000b, 0xc00f, ++ 0x0008, 0x0d02, 0x0000, 0x8060, 0x0000, 0x0400, 0x000b, 0x60af, ++ 0x0003, 0x5817, 0x0003, 0x7ac6, 0x0003, 0x5209, 0x000b, 0xc813, ++ 0x0009, 0xbac0, 0x0000, 0x008a, 0x0003, 0x8813, 0x0000, 0x15fc, ++ 0x000b, 0xb013, 0x0009, 0xc4c0, 0x0000, 0x7000, 0x0001, 0xffa0, ++ 0x0000, 0x2000, 0x000b, 0x9366, 0x0008, 0x808c, 0x0000, 0x0001, ++ 0x0007, 0x0000, 0x0007, 0x0000, 0x000a, 0x4047, 0x0008, 0x808c, ++ 0x0000, 0x0002, 0x0007, 0x0000, 0x0003, 0x082d, 0x0000, 0x4022, ++ 0x000b, 0x002e, 0x0008, 0x4122, 0x0002, 0x4447, 0x0003, 0x8b8a, ++ 0x0008, 0x0bfe, 0x0001, 0x11a0, 0x0003, 0x136c, 0x0001, 0x0ca0, ++ 0x0003, 0x136c, 0x0001, 0x9180, 0x0000, 0x0004, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x000b, 0xc03c, 0x0008, 0x808c, 0x0008, 0x0000, 0x0008, 0x0060, ++ 0x0008, 0x8062, 0x0000, 0x0004, 0x0000, 0x8066, 0x0000, 0x0411, ++ 0x000b, 0xc044, 0x0000, 0x03fe, 0x0001, 0x43e0, 0x000b, 0x8b69, ++ 0x0009, 0xc2c0, 0x0008, 0x00ff, 0x0001, 0x02e0, 0x000b, 0x8b69, ++ 0x0001, 0x9180, 0x0008, 0x0005, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0000, 0x0019, 0x000b, 0xc053, ++ 0x0002, 0x0240, 0x0003, 0x0b66, 0x0008, 0x00fc, 0x000b, 0x3369, ++ 0x000a, 0x0244, 0x0003, 0x0865, 0x000c, 0x01e2, 0x0001, 0x9180, ++ 0x0000, 0x0007, 0x0008, 0x7f62, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0002, 0x0234, 0x0008, 0x7f04, 0x0000, 0x8066, 0x0000, 0x040a, ++ 0x0003, 0xc064, 0x0000, 0x112a, 0x0008, 0x002e, 0x0008, 0x022c, ++ 0x0002, 0x3a44, 0x0003, 0x8813, 0x0008, 0x808c, 0x0000, 0x0002, ++ 0x0008, 0x1760, 0x0008, 0x8062, 0x0008, 0x000f, 0x0000, 0x8066, ++ 0x0008, 0x0011, 0x000b, 0xc071, 0x0008, 0x01fe, 0x0009, 0x42e0, ++ 0x0003, 0x8b5b, 0x0000, 0x00fe, 0x0001, 0x43e0, 0x0003, 0x8b5b, ++ 0x0000, 0x1734, 0x0000, 0x1530, 0x0008, 0x1632, 0x0008, 0x0d2a, ++ 0x0001, 0x9880, 0x0008, 0x0012, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x1e0a, 0x0003, 0xc083, ++ 0x0008, 0x808a, 0x0008, 0x0003, 0x0000, 0x1a60, 0x0008, 0x8062, ++ 0x0000, 0x0002, 0x000b, 0x5889, 0x0000, 0x8066, 0x0000, 0x3679, ++ 0x0003, 0xc08c, 0x0003, 0x588d, 0x0008, 0x8054, 0x0008, 0x0011, ++ 0x0000, 0x8074, 0x0008, 0x1010, 0x0008, 0x1efc, 0x0003, 0x3013, ++ 0x0004, 0x0096, 0x0003, 0x0013, 0x0000, 0x1c60, 0x0000, 0x1b62, ++ 0x0000, 0x8066, 0x0008, 0x0231, 0x000b, 0xc09a, 0x000b, 0x589b, ++ 0x0008, 0x0140, 0x0000, 0x0242, 0x0002, 0x1f43, 0x000b, 0x88a5, ++ 0x0000, 0x0d44, 0x0008, 0x0d46, 0x0008, 0x0348, 0x0008, 0x044a, ++ 0x000b, 0x00a9, 0x0008, 0x0344, 0x0008, 0x0446, 0x0008, 0x0548, ++ 0x0000, 0x064a, 0x0003, 0x58a9, 0x0008, 0x8054, 0x0000, 0x0001, ++ 0x0000, 0x8074, 0x0008, 0x2020, 0x000f, 0x4000, 0x0000, 0x4820, ++ 0x0008, 0x0bfe, 0x0009, 0x10a0, 0x0003, 0x1110, 0x0001, 0x0ca0, ++ 0x0003, 0x1110, 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, ++ 0x0000, 0x0008, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x0003, 0xc0bc, 0x0001, 0x80e0, 0x0008, 0x0003, 0x000b, 0x8910, ++ 0x0000, 0x49b4, 0x0002, 0x4b4e, 0x000b, 0x8919, 0x0008, 0x808a, ++ 0x0000, 0x0004, 0x0000, 0x18fe, 0x0001, 0x10e0, 0x000b, 0x88ca, ++ 0x0002, 0x192f, 0x0008, 0x7f32, 0x0008, 0x15fe, 0x0001, 0x10e0, ++ 0x000b, 0x88cf, 0x0002, 0x162f, 0x0008, 0x7f2c, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0009, 0x9080, 0x0000, 0x0007, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x0009, 0x0003, 0xc0d6, 0x000a, 0x004f, ++ 0x000b, 0x8907, 0x000a, 0x0040, 0x000b, 0x08f1, 0x0002, 0x004e, ++ 0x000b, 0x08f1, 0x0002, 0x0030, 0x0002, 0x7f2f, 0x0000, 0x7f00, ++ 0x0000, 0x8066, 0x0008, 0x000a, 0x000b, 0xc0e2, 0x0008, 0x1010, ++ 0x000c, 0x01c9, 0x000b, 0xb0ea, 0x000c, 0x032f, 0x0004, 0x01b3, ++ 0x000b, 0x7814, 0x0003, 0x0013, 0x0000, 0x0806, 0x0008, 0x8010, ++ 0x0000, 0x001f, 0x000c, 0x032f, 0x0000, 0x0310, 0x000c, 0x032f, ++ 0x000b, 0x00e8, 0x000a, 0x002f, 0x0000, 0x7f00, 0x0000, 0x8066, ++ 0x0008, 0x000a, 0x000b, 0xc0f5, 0x0004, 0x018c, 0x000a, 0x0040, ++ 0x000b, 0x090a, 0x000c, 0x01f9, 0x0000, 0x8000, 0x0000, 0x0002, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0006, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x000a, 0x0003, 0xc103, ++ 0x0000, 0x8072, 0x0000, 0x4000, 0x000b, 0x00e8, 0x0008, 0x8010, ++ 0x0008, 0x001e, 0x0003, 0x010c, 0x0008, 0x8010, 0x0008, 0x001d, ++ 0x000c, 0x032f, 0x0008, 0x1010, 0x000c, 0x032f, 0x000b, 0x0014, ++ 0x0002, 0x4b4e, 0x0003, 0x0916, 0x0008, 0x808a, 0x0000, 0x0004, ++ 0x000b, 0x6116, 0x000f, 0x8000, 0x0008, 0x808a, 0x0000, 0x0004, ++ 0x000b, 0x0014, 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, ++ 0x0008, 0x0011, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x000b, 0xc120, 0x000a, 0x004f, 0x0003, 0x897d, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0005, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc12a, 0x0008, 0x0060, ++ 0x0008, 0x8062, 0x0000, 0x001f, 0x0000, 0x8066, 0x0000, 0x0209, ++ 0x0003, 0xc130, 0x000a, 0x014b, 0x000b, 0x097d, 0x0008, 0x8062, ++ 0x0008, 0x000f, 0x0000, 0x8066, 0x0000, 0x0211, 0x000b, 0xc137, ++ 0x0008, 0x01fe, 0x0001, 0x02d0, 0x0003, 0x897d, 0x000c, 0x0195, ++ 0x000b, 0x097d, 0x0008, 0x03a0, 0x0008, 0x8004, 0x0000, 0x0002, ++ 0x0000, 0x8006, 0x0000, 0x0043, 0x0008, 0x4908, 0x0008, 0x808a, ++ 0x0000, 0x0004, 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, ++ 0x0008, 0x0000, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x041a, ++ 0x000b, 0xc14c, 0x000b, 0xe14d, 0x0008, 0x4908, 0x0008, 0x480a, ++ 0x0008, 0x808a, 0x0000, 0x0004, 0x0008, 0x0060, 0x0008, 0x8062, ++ 0x0008, 0x002b, 0x0000, 0x8066, 0x0000, 0x0411, 0x000b, 0xc157, ++ 0x0008, 0x04fe, 0x0009, 0x02a0, 0x000b, 0x915e, 0x0002, 0x0500, ++ 0x0003, 0x097a, 0x0003, 0x015f, 0x0000, 0x05fe, 0x0001, 0x03a0, ++ 0x0003, 0x117a, 0x0000, 0x0d0c, 0x0008, 0x0d0e, 0x0008, 0x0d10, ++ 0x0000, 0x0d12, 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x000d, ++ 0x0000, 0x8066, 0x0008, 0x0832, 0x0003, 0xc16a, 0x0000, 0x800a, ++ 0x0000, 0x8005, 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, ++ 0x0008, 0x0011, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0a12, ++ 0x0003, 0xc174, 0x0008, 0x5006, 0x0008, 0x100e, 0x000c, 0x01a0, ++ 0x000b, 0x7814, 0x0003, 0x0013, 0x0008, 0x0208, 0x0008, 0x030a, ++ 0x000b, 0x0161, 0x0004, 0x018c, 0x0008, 0x808a, 0x0000, 0x0004, ++ 0x0008, 0x8010, 0x0008, 0x0021, 0x000c, 0x032f, 0x0008, 0x1010, ++ 0x000c, 0x032f, 0x0000, 0x4810, 0x000c, 0x032f, 0x0008, 0x4910, ++ 0x000c, 0x032f, 0x0008, 0x808a, 0x0000, 0x0004, 0x000b, 0x0014, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0000, 0x0002, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0xb40a, 0x0003, 0xc193, ++ 0x000f, 0x4000, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x0a62, ++ 0x0000, 0x8066, 0x0000, 0x0411, 0x0003, 0xc19a, 0x0002, 0x0210, ++ 0x0001, 0xffc0, 0x0000, 0x0007, 0x0009, 0x03e0, 0x000f, 0x4000, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0001, 0x8380, 0x0000, 0x0002, ++ 0x0009, 0x0a80, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0000, 0x0e0a, ++ 0x000b, 0xc1a8, 0x0002, 0x0300, 0x0001, 0xffc0, 0x0000, 0x0007, ++ 0x0000, 0x7f06, 0x0002, 0x0a00, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x060a, 0x0003, 0xc1b1, 0x000f, 0x4000, 0x0000, 0x0da0, ++ 0x0008, 0x0da2, 0x0008, 0x0da4, 0x0009, 0x8880, 0x0000, 0x0001, ++ 0x0008, 0x7f62, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x8066, ++ 0x0008, 0xa012, 0x0000, 0x0da6, 0x0008, 0x0da8, 0x0000, 0x0daa, ++ 0x0000, 0x0dac, 0x000b, 0xc1c1, 0x0009, 0x8880, 0x0008, 0x0009, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0xa03a, 0x000b, 0xc1c7, ++ 0x000f, 0x4000, 0x0009, 0x8880, 0x0008, 0x0005, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x000b, 0xc1d0, 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x000d, ++ 0x0000, 0x8066, 0x0008, 0x0021, 0x000b, 0xc1d6, 0x0000, 0x00fe, ++ 0x0001, 0x01d0, 0x000b, 0x89df, 0x0008, 0x02fe, 0x0009, 0x03d0, ++ 0x0003, 0x09df, 0x0000, 0x0d06, 0x000f, 0x4000, 0x0000, 0x8006, ++ 0x0000, 0x0001, 0x000f, 0x4000, 0x0008, 0x0060, 0x0008, 0x8062, ++ 0x0008, 0x002b, 0x0000, 0x8066, 0x0008, 0xa041, 0x0003, 0xc1e7, ++ 0x0002, 0x0243, 0x0003, 0x89ee, 0x0000, 0x54ac, 0x0000, 0x55ae, ++ 0x0008, 0x0da8, 0x0000, 0x0daa, 0x0000, 0x50b0, 0x0000, 0x51b2, ++ 0x0000, 0x0db4, 0x0008, 0x0db6, 0x0008, 0x0060, 0x0008, 0x8062, ++ 0x0000, 0x0007, 0x0000, 0x8066, 0x0008, 0xa452, 0x000b, 0xc1f7, ++ 0x000f, 0x4000, 0x000a, 0x3945, 0x0003, 0x8a03, 0x0000, 0x8072, ++ 0x0008, 0x4040, 0x0007, 0x0000, 0x000a, 0x3945, 0x000b, 0x8a01, ++ 0x000f, 0x4000, 0x0000, 0x8072, 0x0000, 0x4000, 0x0007, 0x0000, ++ 0x0007, 0x0000, 0x0007, 0x0000, 0x000a, 0x3945, 0x0003, 0x09fb, ++ 0x0003, 0x0203, 0x000a, 0x3a40, 0x000b, 0x8817, 0x0008, 0x2b24, ++ 0x0008, 0x2b24, 0x0003, 0x5a0d, 0x0008, 0x8054, 0x0000, 0x0002, ++ 0x0002, 0x1242, 0x0003, 0x0a51, 0x000a, 0x3a45, 0x000b, 0x0a42, ++ 0x000a, 0x1e10, 0x0000, 0x7f3c, 0x000b, 0x0a3f, 0x0002, 0x1d00, ++ 0x0000, 0x7f3a, 0x0000, 0x0d60, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x0003, 0xc21d, 0x0008, 0x00fc, 0x000b, 0xb23c, ++ 0x0000, 0x1c60, 0x0008, 0x8062, 0x0000, 0x0001, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x000b, 0xc225, 0x0008, 0x00fc, 0x000b, 0x3344, ++ 0x0000, 0x0038, 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x0019, ++ 0x0000, 0x8066, 0x0008, 0x0009, 0x0003, 0xc22e, 0x0009, 0x80c0, ++ 0x0008, 0x00ff, 0x0008, 0x7f3e, 0x0000, 0x0d60, 0x0008, 0x0efe, ++ 0x0001, 0x1f80, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x000b, 0xc238, 0x0008, 0x003a, 0x0000, 0x1dfe, 0x000b, 0x0219, ++ 0x0008, 0x0036, 0x0004, 0x0096, 0x000b, 0x0251, 0x0000, 0x8074, ++ 0x0000, 0x2000, 0x000b, 0x0251, 0x0002, 0x3a44, 0x0003, 0x0b6f, ++ 0x0000, 0x8074, 0x0000, 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, ++ 0x0003, 0xb341, 0x0008, 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, ++ 0x0008, 0x2700, 0x0009, 0x00d0, 0x000b, 0x8a61, 0x0000, 0x8074, ++ 0x0008, 0x4040, 0x0003, 0x5a51, 0x0003, 0x5209, 0x000a, 0x3a46, ++ 0x000b, 0x8a61, 0x0002, 0x3a47, 0x000b, 0x0a5c, 0x0008, 0x8054, ++ 0x0000, 0x0004, 0x0000, 0x8074, 0x0000, 0x8000, 0x000b, 0x02ba, ++ 0x0009, 0x92c0, 0x0000, 0x0fc8, 0x000b, 0x0813, 0x000a, 0x1246, ++ 0x0003, 0x8b3b, 0x0000, 0x1a60, 0x0008, 0x8062, 0x0000, 0x0002, ++ 0x0000, 0x8066, 0x0000, 0x367a, 0x0003, 0xc266, 0x0009, 0x92c0, ++ 0x0008, 0x0780, 0x000b, 0x8b55, 0x0002, 0x124b, 0x000b, 0x0a6f, ++ 0x0002, 0x2e4d, 0x0002, 0x2e4d, 0x0003, 0x0b41, 0x000a, 0x3a46, ++ 0x000b, 0x8a7c, 0x000b, 0x5a71, 0x0008, 0x8054, 0x0000, 0x0004, ++ 0x000a, 0x1243, 0x000b, 0x0ab8, 0x0008, 0x8010, 0x0000, 0x000d, ++ 0x000c, 0x032f, 0x0000, 0x1810, 0x000c, 0x032f, 0x0003, 0x02b8, ++ 0x000a, 0x194d, 0x0003, 0x0a80, 0x000a, 0x1243, 0x0003, 0x0b4b, ++ 0x0003, 0x5a80, 0x0008, 0x8054, 0x0000, 0x0004, 0x000a, 0x192e, ++ 0x0008, 0x7f32, 0x000a, 0x1947, 0x000b, 0x0ab2, 0x0002, 0x194f, ++ 0x000b, 0x0a90, 0x0004, 0x0324, 0x0000, 0x1810, 0x000c, 0x01c9, ++ 0x0003, 0xb2ab, 0x000c, 0x032f, 0x0004, 0x01b3, 0x0003, 0x02b8, ++ 0x0000, 0x1a60, 0x0008, 0x8062, 0x0000, 0x001f, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x0003, 0xc295, 0x000a, 0x004c, 0x0003, 0x8ab2, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0001, 0x9880, 0x0000, 0x0007, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0000, 0x320a, 0x0003, 0xc29f, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0001, 0x9880, 0x0008, 0x0012, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x1e0a, 0x000b, 0xc2a7, ++ 0x0000, 0x1826, 0x0000, 0x1928, 0x0003, 0x02b8, 0x0000, 0x0806, ++ 0x0008, 0x8010, 0x0000, 0x001f, 0x000c, 0x032f, 0x0000, 0x0310, ++ 0x000c, 0x032f, 0x0003, 0x02b8, 0x0004, 0x0324, 0x0008, 0x8010, ++ 0x0000, 0x0001, 0x000c, 0x032f, 0x0000, 0x1810, 0x000c, 0x032f, ++ 0x0000, 0x8074, 0x0008, 0xf000, 0x0000, 0x0d30, 0x0002, 0x3a42, ++ 0x0003, 0x8ac0, 0x0000, 0x15fc, 0x0003, 0xb06a, 0x0003, 0x0013, ++ 0x0000, 0x8074, 0x0000, 0x0501, 0x0008, 0x8010, 0x0008, 0x000c, ++ 0x000c, 0x032f, 0x0003, 0x0013, 0x0009, 0xbbe0, 0x0008, 0x0030, ++ 0x000b, 0x8adc, 0x0000, 0x18fe, 0x0009, 0x3ce0, 0x0003, 0x0ad9, ++ 0x0008, 0x15fe, 0x0009, 0x3ce0, 0x0003, 0x0ad9, 0x0008, 0x13fe, ++ 0x0009, 0x3ce0, 0x000b, 0x8ad5, 0x0004, 0x031d, 0x0008, 0x0d26, ++ 0x000b, 0x02d6, 0x000c, 0x031f, 0x0008, 0x8076, 0x0000, 0x0040, ++ 0x0003, 0x031a, 0x0008, 0x8076, 0x0008, 0x0041, 0x0003, 0x031a, ++ 0x0009, 0xbbe0, 0x0000, 0x0032, 0x0003, 0x8ae1, 0x0008, 0x3c1e, ++ 0x0003, 0x031a, 0x0009, 0xbbe0, 0x0000, 0x0037, 0x0003, 0x8aff, ++ 0x0000, 0x18fe, 0x0009, 0x3ce0, 0x000b, 0x8ad9, 0x0008, 0x8076, ++ 0x0000, 0x0040, 0x0000, 0x1a60, 0x0008, 0x8062, 0x0000, 0x000d, ++ 0x0008, 0x2604, 0x0008, 0x2604, 0x0008, 0x2706, 0x0008, 0x2706, ++ 0x0000, 0x2808, 0x0000, 0x2808, 0x0000, 0x290a, 0x0000, 0x290a, ++ 0x0000, 0x8066, 0x0000, 0x0422, 0x0003, 0xc2f6, 0x0004, 0x0324, ++ 0x0008, 0x8054, 0x0000, 0x0004, 0x0000, 0x8074, 0x0008, 0xf000, ++ 0x0000, 0x8072, 0x0000, 0x8000, 0x000b, 0x02ba, 0x0009, 0xbbe0, ++ 0x0000, 0x0038, 0x000b, 0x8b11, 0x0000, 0x18fe, 0x0009, 0x3ce0, ++ 0x000b, 0x0b0e, 0x0008, 0x15fe, 0x0009, 0x3ce0, 0x0003, 0x8acf, ++ 0x000c, 0x031f, 0x0008, 0x8076, 0x0000, 0x0040, 0x0000, 0x8072, ++ 0x0000, 0x8000, 0x000b, 0x0366, 0x0008, 0x8076, 0x0008, 0x0042, ++ 0x0003, 0x031a, 0x0009, 0xbbe0, 0x0000, 0x0016, 0x0003, 0x8b1a, ++ 0x0002, 0x3a44, 0x0003, 0x8816, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x000f, 0x8000, 0x0003, 0x0013, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x0003, 0x0013, 0x0002, 0x1430, 0x0003, 0x0320, 0x000a, 0x3d30, ++ 0x0000, 0x7f00, 0x0001, 0xbc80, 0x0000, 0x0007, 0x000b, 0x0328, ++ 0x000a, 0x1930, 0x0000, 0x7f00, 0x0001, 0x9880, 0x0000, 0x0007, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x000a, 0x000b, 0xc32d, 0x000f, 0x4000, 0x000b, 0x232f, ++ 0x0008, 0x0870, 0x000f, 0x4000, 0x0009, 0xbac0, 0x0008, 0x0090, ++ 0x000b, 0x0b38, 0x0000, 0x8074, 0x0000, 0x0706, 0x000b, 0x033a, ++ 0x0000, 0x8074, 0x0000, 0x0703, 0x000f, 0x4000, 0x0008, 0x8010, ++ 0x0000, 0x0023, 0x000b, 0x0374, 0x0008, 0x8010, 0x0000, 0x0008, ++ 0x000b, 0x0374, 0x0008, 0x8010, 0x0008, 0x0022, 0x000b, 0x0374, ++ 0x0004, 0x0324, 0x0008, 0x8010, 0x0000, 0x0007, 0x000c, 0x032f, ++ 0x0000, 0x1810, 0x000c, 0x032f, 0x000b, 0x037e, 0x0004, 0x0324, ++ 0x0008, 0x8010, 0x0008, 0x001b, 0x000c, 0x032f, 0x0000, 0x1810, ++ 0x000c, 0x032f, 0x0000, 0x8074, 0x0000, 0xf080, 0x0000, 0x0d30, ++ 0x0003, 0x0013, 0x0008, 0x8010, 0x0008, 0x0009, 0x000b, 0x0374, ++ 0x0008, 0x8010, 0x0008, 0x0005, 0x000b, 0x0374, 0x0008, 0x808c, ++ 0x0000, 0x0001, 0x0007, 0x0000, 0x0008, 0x8010, 0x0000, 0x0004, ++ 0x000a, 0x4143, 0x0003, 0x0878, 0x0002, 0x3a44, 0x0003, 0x8813, ++ 0x0008, 0x0d2a, 0x000b, 0x0374, 0x0008, 0x8010, 0x0008, 0x0003, ++ 0x0003, 0x0376, 0x0008, 0x8010, 0x0000, 0x000b, 0x0003, 0x0376, ++ 0x0008, 0x8010, 0x0000, 0x0002, 0x0003, 0x0376, 0x0002, 0x3a47, ++ 0x000b, 0x8a51, 0x0008, 0x8010, 0x0008, 0x0006, 0x0003, 0x0376, ++ 0x0000, 0x8074, 0x0008, 0xf000, 0x000c, 0x032f, 0x000c, 0x0332, ++ 0x000a, 0x3a40, 0x000b, 0x0813, 0x0008, 0x8010, 0x0008, 0x000c, ++ 0x000c, 0x032f, 0x0003, 0x0013, 0x0000, 0x8074, 0x0000, 0xf080, ++ 0x0000, 0x0d30, 0x0002, 0x2e4d, 0x0002, 0x2e4d, 0x0003, 0x0b87, ++ 0x0008, 0x8054, 0x0000, 0x0019, 0x0003, 0x0013, 0x0008, 0x8054, ++ 0x0008, 0x0009, 0x0003, 0x0013, 0x0002, 0x3a44, 0x0003, 0x8813, ++ 0x000b, 0x0369, 0xec89, 0x9da0 ++}; ++unsigned short rseqflx_code_length01 = 0x071c; ++/* ++ * ++ */ ++ ++unsigned long xseqflx_code_addr01 = 0x0001e000 ; ++unsigned short xseqflx_code01[] = { ++0x0013, 0x0003, 0x0000, 0x0fe2, 0x0001, 0xe000, 0x0005, 0x0032, ++ 0x0000, 0x0010, 0x0015, 0x0033, 0x0010, 0xbb39, 0x000b, 0x8007, ++ 0x0004, 0x0107, 0x0004, 0x0119, 0x0010, 0xc000, 0x0000, 0xc001, ++ 0x0000, 0xc0b0, 0x0010, 0xc0b1, 0x0010, 0xc0b2, 0x0000, 0xc0b3, ++ 0x0010, 0xc0b4, 0x0000, 0xc0b5, 0x0000, 0xc0b6, 0x0010, 0xc0b7, ++ 0x0010, 0xc0b8, 0x0000, 0xc0b9, 0x0000, 0xc0ba, 0x0000, 0xc0c2, ++ 0x0010, 0xc0c3, 0x0000, 0xc0c4, 0x0010, 0xc0c5, 0x0010, 0xc0c6, ++ 0x0000, 0xc0c7, 0x0000, 0xc0c8, 0x0010, 0xc0c9, 0x0010, 0xc0ca, ++ 0x0000, 0xc0cb, 0x0010, 0xc0cc, 0x0000, 0xc0cd, 0x0000, 0xc0ce, ++ 0x0010, 0xc0cf, 0x0015, 0x0039, 0x0010, 0xff00, 0x0015, 0x003a, ++ 0x0010, 0xff00, 0x0005, 0x00d0, 0x0010, 0xff00, 0x0015, 0x00d1, ++ 0x0010, 0xff00, 0x0012, 0x3a40, 0x000b, 0x1031, 0x0002, 0x7940, ++ 0x000b, 0x112b, 0x0002, 0x3a42, 0x001b, 0x1035, 0x0003, 0xb035, ++ 0x0013, 0xa1cd, 0x0002, 0x3a41, 0x001b, 0x1039, 0x0012, 0x7941, ++ 0x000b, 0x12eb, 0x0013, 0xe051, 0x0012, 0xd042, 0x0003, 0x103f, ++ 0x0000, 0x75ff, 0x0002, 0xff41, 0x000b, 0x1051, 0x0000, 0x0cfe, ++ 0x0013, 0x6047, 0x0011, 0x02e8, 0x0010, 0x0000, 0x0003, 0x1371, ++ 0x0011, 0x02e8, 0x0010, 0x0005, 0x0013, 0x13fe, 0x0012, 0xd042, ++ 0x0013, 0x104c, 0x0000, 0x75ff, 0x0012, 0xff40, 0x000b, 0x1051, ++ 0x0000, 0x12fe, 0x0003, 0x6051, 0x0001, 0x0fe8, 0x0010, 0x0000, ++ 0x0003, 0x15e8, 0x0015, 0x0030, 0x0000, 0x0400, 0x0010, 0xc131, ++ 0x0015, 0x0033, 0x0010, 0xb211, 0x001b, 0x8056, 0x0010, 0xb2ff, ++ 0x0001, 0xb3e0, 0x000c, 0x10c9, 0x000b, 0xf02d, 0x0011, 0x3be8, ++ 0x0000, 0x0010, 0x000b, 0x106e, 0x0000, 0x0afe, 0x001b, 0x6062, ++ 0x0000, 0x3c0b, 0x0013, 0x006a, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0x0a88, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x3c0a, 0x001b, 0x8069, 0x0010, 0x3c0a, 0x0002, 0x0c00, ++ 0x0010, 0xff0c, 0x0013, 0x00c6, 0x0011, 0x3be8, 0x0010, 0x0012, ++ 0x001b, 0x1081, 0x0010, 0x08fe, 0x001b, 0x6075, 0x0010, 0x3c09, ++ 0x0013, 0x007d, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0888, ++ 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x3c0a, ++ 0x000b, 0x807c, 0x0000, 0x3c08, 0x0002, 0x0c00, 0x0010, 0xff0c, ++ 0x0013, 0x00c6, 0x0011, 0x3be8, 0x0000, 0x0013, 0x001b, 0x1087, ++ 0x0000, 0x3cb0, 0x0014, 0x00d9, 0x0013, 0x00c6, 0x0011, 0x3be8, ++ 0x0000, 0x0019, 0x001b, 0x109a, 0x0010, 0x04fe, 0x000b, 0x608e, ++ 0x0010, 0x3c05, 0x0013, 0x0096, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0488, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x3c0a, 0x001b, 0x8095, 0x0000, 0x3c04, 0x0002, 0x0c00, ++ 0x0010, 0xff0c, 0x0013, 0x00c6, 0x0011, 0x3be8, 0x0000, 0x0015, ++ 0x001b, 0x10a6, 0x0004, 0x0110, 0x0014, 0x0122, 0x0015, 0x0039, ++ 0x0000, 0x8000, 0x0017, 0x8000, 0x0004, 0x0107, 0x0004, 0x0119, ++ 0x0014, 0x00f2, 0x0013, 0x002d, 0x0011, 0x3be8, 0x0000, 0x0016, ++ 0x001b, 0x10b8, 0x0001, 0x0fe8, 0x0010, 0x0000, 0x0003, 0x10b2, ++ 0x0001, 0x0fe8, 0x0000, 0x0002, 0x0003, 0x10b2, 0x0015, 0x0039, ++ 0x0010, 0x1010, 0x0013, 0x00c6, 0x0015, 0x0039, 0x0000, 0x5040, ++ 0x0015, 0x00b8, 0x0000, 0x0008, 0x0014, 0x07ed, 0x0013, 0x00c6, ++ 0x0011, 0x3be8, 0x0010, 0x0017, 0x001b, 0x10bd, 0x0010, 0x3cc3, ++ 0x0013, 0x00c6, 0x0011, 0x3be8, 0x0010, 0x0018, 0x000b, 0x10c2, ++ 0x0000, 0x3cc2, 0x0013, 0x00c6, 0x0005, 0x00ce, 0x0000, 0x0001, ++ 0x0000, 0x3bcf, 0x0014, 0x07b1, 0x0015, 0x0039, 0x0000, 0x8000, ++ 0x0013, 0x002d, 0x0001, 0xb288, 0x0000, 0x0002, 0x0001, 0xc180, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x80cf, ++ 0x0002, 0xb200, 0x0011, 0xffc8, 0x0000, 0x0007, 0x0010, 0xffb2, ++ 0x0010, 0xc131, 0x0015, 0x0033, 0x0010, 0xb20a, 0x0001, 0xb0d0, ++ 0x001b, 0x80d8, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0xb088, ++ 0x0000, 0x0010, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb109, ++ 0x000b, 0x80e0, 0x0001, 0xb1e8, 0x0010, 0xffff, 0x0013, 0x10f1, ++ 0x0000, 0x11fe, 0x000b, 0x60e8, 0x0000, 0xb012, 0x0013, 0x00f0, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0x1188, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb00a, 0x000b, 0x80ef, ++ 0x0000, 0xb011, 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0xbc88, 0x0010, 0x001e, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xc411, 0x001b, 0x80f9, 0x0011, 0xbc88, 0x0010, 0x0017, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xc609, 0x001b, 0x80ff, ++ 0x0011, 0xbc88, 0x0010, 0x0036, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xc709, 0x000b, 0x8105, 0x0017, 0x4000, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0xbb88, 0x0000, 0x0001, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0x0269, 0x001b, 0x810e, 0x0017, 0x4000, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbb88, 0x0000, 0x0001, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x026a, 0x000b, 0x8117, ++ 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbb88, ++ 0x0010, 0x000f, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x0f59, ++ 0x001b, 0x8120, 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xbb88, 0x0010, 0x000f, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x0f5a, 0x001b, 0x8129, 0x0017, 0x4000, 0x0000, 0xd0ff, ++ 0x0012, 0xff40, 0x000b, 0x1031, 0x0015, 0x00d1, 0x0010, 0x0101, ++ 0x0003, 0x9130, 0x0005, 0x0079, 0x0000, 0x0001, 0x0003, 0x9133, ++ 0x0015, 0x00d1, 0x0000, 0x0100, 0x0011, 0x02e8, 0x0000, 0x0002, ++ 0x0003, 0x1152, 0x0011, 0x02e8, 0x0000, 0x0001, 0x0013, 0x116a, ++ 0x0011, 0x02e8, 0x0000, 0x0004, 0x0013, 0x1188, 0x0011, 0x02e8, ++ 0x0010, 0x0003, 0x0003, 0x11b9, 0x0005, 0x0002, 0x0010, 0x0000, ++ 0x0000, 0xc00e, 0x0000, 0xc00d, 0x0010, 0xc003, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0xbd88, 0x0010, 0x0009, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x814e, 0x0012, 0xd042, ++ 0x0013, 0x1031, 0x0003, 0x004c, 0x0012, 0x7849, 0x0003, 0x11c7, ++ 0x0010, 0x0dfe, 0x0003, 0x6144, 0x0012, 0x0c10, 0x0010, 0xff0c, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb309, 0x000b, 0x815f, ++ 0x0010, 0xb3fe, 0x0013, 0x6167, 0x0010, 0xb30b, 0x0015, 0x0033, ++ 0x0010, 0xc00a, 0x000b, 0x8165, 0x0013, 0x01bc, 0x0000, 0xc00b, ++ 0x0010, 0xc00a, 0x0013, 0x01bc, 0x0000, 0x78b0, 0x0012, 0xb044, ++ 0x0003, 0x11c7, 0x0002, 0xb049, 0x0003, 0x11c7, 0x0010, 0x71ff, ++ 0x0012, 0xff38, 0x0010, 0xff71, 0x0010, 0x0dfe, 0x0003, 0x6142, ++ 0x0012, 0x0c10, 0x0010, 0xff0c, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb309, 0x000b, 0x817d, 0x0010, 0xb3fe, 0x0013, 0x6185, ++ 0x0000, 0xb309, 0x0015, 0x0033, 0x0010, 0xc00a, 0x001b, 0x8183, ++ 0x0013, 0x01bc, 0x0010, 0xc009, 0x0000, 0xc008, 0x0013, 0x01bc, ++ 0x0000, 0x78b0, 0x0012, 0xb044, 0x0003, 0x11c7, 0x0002, 0xb049, ++ 0x0003, 0x11c7, 0x0010, 0x71ff, 0x0012, 0xff38, 0x0010, 0xff71, ++ 0x0010, 0x0dfe, 0x0003, 0x6142, 0x0012, 0x0c10, 0x0010, 0xff0c, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb309, 0x001b, 0x819b, ++ 0x0010, 0xb3fe, 0x0003, 0x61a3, 0x0000, 0xb305, 0x0015, 0x0033, ++ 0x0010, 0xc00a, 0x001b, 0x81a1, 0x0003, 0x01a5, 0x0010, 0xc005, ++ 0x0000, 0xc004, 0x0002, 0x033f, 0x0002, 0xff27, 0x0000, 0x0db8, ++ 0x0004, 0x0366, 0x0000, 0x0db8, 0x0014, 0x07ed, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0xbc88, 0x0010, 0x0000, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb309, 0x000b, 0x81b2, 0x0011, 0xb3e8, ++ 0x0000, 0x0002, 0x000b, 0x1142, 0x0005, 0x0002, 0x0010, 0x0005, ++ 0x0003, 0x0144, 0x0012, 0x7849, 0x0003, 0x11c7, 0x0003, 0x0144, ++ 0x0000, 0x0db8, 0x0012, 0x0345, 0x001b, 0x11c2, 0x0002, 0x033f, ++ 0x0004, 0x0366, 0x0003, 0x0142, 0x0002, 0x033f, 0x0002, 0xff27, ++ 0x0004, 0x0366, 0x0014, 0x07ed, 0x0003, 0x0142, 0x0015, 0x00b8, ++ 0x0000, 0x0001, 0x0015, 0x003a, 0x0010, 0x0101, 0x0014, 0x07ed, ++ 0x0013, 0x014f, 0x0000, 0x2bba, 0x0003, 0xb1ce, 0x0005, 0x002a, ++ 0x0000, 0x0002, 0x0001, 0xbac8, 0x0000, 0x0700, 0x000b, 0x12a6, ++ 0x0011, 0x15e8, 0x0000, 0x0002, 0x0013, 0x1221, 0x0011, 0x15e8, ++ 0x0000, 0x0001, 0x0013, 0x11dd, 0x0005, 0x0015, 0x0010, 0x0000, ++ 0x0013, 0x0204, 0x0005, 0x0015, 0x0010, 0x0000, 0x0002, 0xba43, ++ 0x0013, 0x1205, 0x0013, 0xb1e1, 0x0005, 0x002a, 0x0000, 0x0004, ++ 0x0012, 0xba42, 0x0003, 0x120b, 0x0012, 0x104b, 0x001b, 0x1204, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0000, 0x0002, 0x0015, 0x0033, ++ 0x0000, 0x1b2a, 0x000b, 0x81ed, 0x0010, 0x20b0, 0x0010, 0x21b1, ++ 0x0010, 0x22b2, 0x0010, 0x23b3, 0x0010, 0x24b4, 0x0010, 0x25b5, ++ 0x0010, 0x28b8, 0x0010, 0x29b9, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0007, 0x0015, 0x0033, 0x0010, 0xb032, 0x001b, 0x81fb, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0010, 0x000f, 0x0015, 0x0033, ++ 0x0010, 0xb812, 0x001b, 0x8201, 0x0005, 0x0015, 0x0010, 0x0000, ++ 0x0013, 0x0035, 0x0000, 0x1efe, 0x0013, 0x6219, 0x0014, 0x024b, ++ 0x0000, 0x1efe, 0x000c, 0x624b, 0x0013, 0x0204, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0000, 0x0020, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x001b, 0x8210, 0x0002, 0xb02f, 0x0000, 0xffb0, 0x0005, 0x0031, ++ 0x0000, 0x0020, 0x0015, 0x0033, 0x0000, 0xb00a, 0x000b, 0x8217, ++ 0x0003, 0x01e8, 0x0015, 0x00b8, 0x0010, 0x0005, 0x0014, 0x07ed, ++ 0x0000, 0x13b8, 0x0015, 0x003a, 0x0010, 0x0404, 0x0014, 0x07ed, ++ 0x0013, 0x0204, 0x0005, 0x0015, 0x0000, 0x0001, 0x0012, 0xba42, ++ 0x0013, 0x122e, 0x0003, 0xb225, 0x0010, 0x2bff, 0x0012, 0xff4f, ++ 0x001b, 0x11cd, 0x0002, 0xba43, 0x001b, 0x120b, 0x0000, 0x1efe, ++ 0x000c, 0x624b, 0x0013, 0x0204, 0x0010, 0x28b8, 0x0010, 0x29b9, ++ 0x0004, 0x02bc, 0x0002, 0x3a42, 0x001b, 0x1204, 0x0000, 0x1c30, ++ 0x0015, 0x00ff, 0x0000, 0x0002, 0x0002, 0x1f43, 0x001b, 0x123b, ++ 0x0001, 0xff88, 0x0000, 0x0002, 0x0013, 0x023d, 0x0001, 0xff88, ++ 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb011, ++ 0x001b, 0x8240, 0x0000, 0xb0ff, 0x0011, 0x16a0, 0x0000, 0xff16, ++ 0x000b, 0x24e2, 0x0002, 0xb100, 0x0003, 0x0248, 0x0010, 0xb1ff, ++ 0x0001, 0x17a0, 0x0010, 0xff17, 0x0013, 0x020b, 0x0000, 0x16ff, ++ 0x0001, 0x18a0, 0x0010, 0xff00, 0x001b, 0x2252, 0x0002, 0x1700, ++ 0x0013, 0x12a5, 0x0003, 0x0253, 0x0010, 0x17ff, 0x0011, 0x19a0, ++ 0x0013, 0x22a5, 0x0011, 0x00d0, 0x0013, 0x12a5, 0x0000, 0x1c30, ++ 0x0000, 0x1b31, 0x0015, 0x0033, 0x0000, 0xb131, 0x001b, 0x825b, ++ 0x0013, 0xb25c, 0x0000, 0xb120, 0x0010, 0xb221, 0x0002, 0x1f43, ++ 0x001b, 0x1268, 0x0010, 0xc022, 0x0000, 0xc023, 0x0000, 0xb324, ++ 0x0000, 0xb425, 0x0010, 0xb3b5, 0x0000, 0xb4b6, 0x0003, 0x026c, ++ 0x0000, 0xb322, 0x0000, 0xb423, 0x0000, 0xb524, 0x0010, 0xb625, ++ 0x0013, 0xb26c, 0x0005, 0x002a, 0x0000, 0x0001, 0x0012, 0x1500, ++ 0x0000, 0xff15, 0x0000, 0x16ff, 0x0001, 0xb580, 0x0000, 0xff16, ++ 0x000b, 0x2277, 0x0002, 0x1700, 0x0003, 0x0278, 0x0010, 0x17ff, ++ 0x0001, 0xb680, 0x0010, 0xff17, 0x0012, 0x1e10, 0x0010, 0xff1e, ++ 0x0003, 0x62a5, 0x0002, 0x1d00, 0x0010, 0xff1d, 0x0010, 0xc030, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x8283, ++ 0x0010, 0xb0fe, 0x000b, 0x62a4, 0x0000, 0x1c30, 0x0005, 0x0031, ++ 0x0000, 0x0001, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x828b, ++ 0x0010, 0xb0fe, 0x000b, 0x6291, 0x0005, 0x00ce, 0x0010, 0x0005, ++ 0x0003, 0x07b1, 0x0010, 0xb01c, 0x0000, 0x1c30, 0x0005, 0x0031, ++ 0x0000, 0x0019, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x8297, ++ 0x0001, 0xb0c8, 0x0010, 0x00ff, 0x0000, 0xff1f, 0x0010, 0xc030, ++ 0x0011, 0xbe80, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x82a0, 0x0000, 0xb01d, 0x0010, 0x1dff, 0x0013, 0x027f, ++ 0x0000, 0xb01b, 0x0017, 0x4000, 0x0002, 0x3a41, 0x0003, 0x12ae, ++ 0x0003, 0xb2a8, 0x0005, 0x002a, 0x0000, 0x0004, 0x0005, 0x0015, ++ 0x0010, 0x0000, 0x0013, 0x0204, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b2a, 0x001b, 0x82b3, ++ 0x0015, 0x00b8, 0x0000, 0x0004, 0x0014, 0x07ed, 0x0000, 0x13b8, ++ 0x0015, 0x003a, 0x0010, 0x0404, 0x0014, 0x07ed, 0x0013, 0x0039, ++ 0x0002, 0x1e00, 0x0010, 0xff1e, 0x0012, 0x1d10, 0x0010, 0xff1d, ++ 0x0010, 0xc030, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x001b, 0x82c4, 0x0010, 0xb0fe, 0x000b, 0x62e9, 0x0000, 0x1cff, ++ 0x0001, 0x1ae0, 0x0003, 0x12d3, 0x0000, 0x1c30, 0x0005, 0x0031, ++ 0x0010, 0x0000, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x82cf, ++ 0x0010, 0xb0fe, 0x000b, 0x62d3, 0x0000, 0x1aff, 0x0000, 0xff1c, ++ 0x0000, 0x1c30, 0x0005, 0x0031, 0x0000, 0x0019, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x001b, 0x82d9, 0x0001, 0xb0c8, 0x0010, 0x000f, ++ 0x0000, 0xff1f, 0x0001, 0xbf80, 0x0010, 0xff1d, 0x0010, 0xc030, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x82e3, ++ 0x0010, 0xb0fe, 0x000b, 0x62e9, 0x0005, 0x00ce, 0x0010, 0x0006, ++ 0x0003, 0x07b1, 0x0000, 0xb01b, 0x0017, 0x4000, 0x0010, 0x79b0, ++ 0x0000, 0xd0ff, 0x0012, 0xff40, 0x001b, 0x1039, 0x0015, 0x00d1, ++ 0x0010, 0x0101, 0x0013, 0x92f1, 0x0005, 0x0079, 0x0000, 0x0002, ++ 0x0013, 0x92f4, 0x0015, 0x00d1, 0x0000, 0x0100, 0x0010, 0x13fe, ++ 0x0003, 0x6329, 0x0012, 0xb04e, 0x000b, 0x133e, 0x0012, 0x784a, ++ 0x0003, 0x1344, 0x0000, 0x75ff, 0x0011, 0xffc8, 0x0010, 0x1800, ++ 0x001b, 0x1344, 0x0001, 0x0fe8, 0x0000, 0x0001, 0x000b, 0x130d, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x000e, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x8f0a, 0x000b, 0x830b, ++ 0x0003, 0x034a, 0x0001, 0x0fe8, 0x0000, 0x0002, 0x001b, 0x1318, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0005, 0x0031, 0x0000, 0x001a, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x8316, 0x0003, 0x034a, ++ 0x0001, 0x0fe8, 0x0010, 0x0000, 0x0013, 0x131f, 0x0005, 0x00ce, ++ 0x0000, 0x0007, 0x0010, 0x0fcf, 0x0013, 0x07ab, 0x0000, 0x13b8, ++ 0x0002, 0x1045, 0x0003, 0x1327, 0x0012, 0x103f, 0x0002, 0xff27, ++ 0x0004, 0x0366, 0x0014, 0x07ed, 0x0003, 0x0329, 0x0012, 0x103f, ++ 0x0004, 0x0366, 0x0015, 0x000f, 0x0010, 0x0000, 0x0002, 0x3944, ++ 0x0013, 0x1332, 0x0015, 0x0039, 0x0000, 0x5040, 0x0015, 0x00b8, ++ 0x0000, 0x0008, 0x0014, 0x07ed, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xbd88, 0x0010, 0x000c, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xc00a, 0x001b, 0x8339, 0x0010, 0xc014, 0x0000, 0xc013, ++ 0x0000, 0xc010, 0x0013, 0x0039, 0x0015, 0x00b8, 0x0010, 0x0003, ++ 0x0015, 0x003a, 0x0010, 0x0202, 0x0014, 0x07ed, 0x0003, 0x033d, ++ 0x0015, 0x00b8, 0x0000, 0x0002, 0x0015, 0x003a, 0x0010, 0x0202, ++ 0x0014, 0x07ed, 0x0003, 0x033d, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x1388, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x8351, 0x0011, 0x1388, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x8357, ++ 0x0010, 0xb0fe, 0x0013, 0x635c, 0x0000, 0xb012, 0x0003, 0x035e, ++ 0x0010, 0xc012, 0x0010, 0xc011, 0x0012, 0x104b, 0x0013, 0x131f, ++ 0x0002, 0x103b, 0x0010, 0xff03, 0x0005, 0x0002, 0x0010, 0x0000, ++ 0x0000, 0xc00d, 0x0003, 0x031f, 0x0000, 0xffb0, 0x0010, 0xc3b1, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xb888, 0x0010, 0x0011, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb012, 0x001b, 0x836f, ++ 0x0017, 0x4000, 0x0012, 0x3a43, 0x0013, 0x1380, 0x0015, 0x003a, ++ 0x0000, 0x0800, 0x0010, 0x0db0, 0x0003, 0x6380, 0x0000, 0x0bff, ++ 0x0001, 0xb0e0, 0x0003, 0x13a6, 0x0010, 0x09ff, 0x0001, 0xb0e0, ++ 0x0013, 0x138a, 0x0010, 0x05ff, 0x0001, 0xb0e0, 0x0003, 0x1384, ++ 0x0000, 0xc00e, 0x0000, 0x05fe, 0x0013, 0x6387, 0x0000, 0x050d, ++ 0x0005, 0x0002, 0x0000, 0x0004, 0x0003, 0x03a1, 0x0000, 0x09fe, ++ 0x0013, 0x63a3, 0x0000, 0x090d, 0x0005, 0x0002, 0x0000, 0x0001, ++ 0x0014, 0x0405, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xba09, ++ 0x000b, 0x8394, 0x0011, 0x03c8, 0x0010, 0x000f, 0x0000, 0xffb6, ++ 0x0011, 0xb6e8, 0x0000, 0x0001, 0x0013, 0x1499, 0x0011, 0xb6e8, ++ 0x0000, 0x0002, 0x0013, 0x14bb, 0x0011, 0xb6e8, 0x0010, 0x0003, ++ 0x0003, 0x15a6, 0x0004, 0x07b6, 0x0013, 0x0404, 0x0010, 0x0bfe, ++ 0x0013, 0x6404, 0x0010, 0x0b0d, 0x0005, 0x0002, 0x0000, 0x0002, ++ 0x0014, 0x0405, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xba09, ++ 0x000b, 0x83b0, 0x0000, 0xb930, 0x0005, 0x0031, 0x0010, 0x0021, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x83b6, 0x0001, 0xb0a8, ++ 0x0000, 0x199a, 0x0013, 0x23bc, 0x0005, 0x00b0, 0x0000, 0x1999, ++ 0x0012, 0xb050, 0x0000, 0xffb0, 0x0002, 0xff50, 0x0002, 0xff50, ++ 0x0001, 0xb080, 0x0000, 0xffb0, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0006, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb00a, 0x001b, 0x83c9, 0x0000, 0xb930, 0x0005, 0x0031, ++ 0x0000, 0x0019, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x83cf, ++ 0x0001, 0xb0c8, 0x0010, 0x00ff, 0x0001, 0xffe8, 0x0010, 0x0048, ++ 0x000b, 0x1414, 0x0005, 0x0002, 0x0010, 0x0006, 0x0012, 0x0c10, ++ 0x0010, 0xff0c, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb109, ++ 0x000b, 0x83e0, 0x0000, 0xb10b, 0x000b, 0x63e4, 0x0010, 0xb10a, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x83e6, 0x0002, 0x032b, ++ 0x0010, 0xff03, 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0x030a, 0x001b, 0x83ee, 0x0000, 0x11fe, ++ 0x000b, 0x63f3, 0x0000, 0x0d12, 0x0013, 0x03fc, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0x1188, 0x0010, 0x0003, 0x0000, 0xff31, ++ 0x0010, 0x0db0, 0x0015, 0x0033, 0x0000, 0xb00a, 0x000b, 0x83fb, ++ 0x0000, 0x0d11, 0x0013, 0x0404, 0x0000, 0x05fe, 0x0013, 0x6404, ++ 0x0005, 0x0002, 0x0000, 0x0004, 0x0000, 0x050d, 0x0004, 0x07b6, ++ 0x0013, 0x0047, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x0309, ++ 0x000b, 0x840c, 0x0011, 0x0d88, 0x0010, 0x0005, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb909, 0x000b, 0x8412, 0x0017, 0x4000, ++ 0x0005, 0x00b6, 0x0010, 0x0600, 0x0014, 0x05d6, 0x0004, 0x0483, ++ 0x0000, 0xb05a, 0x0000, 0xb15b, 0x0005, 0x0054, 0x0010, 0x0829, ++ 0x0010, 0x0d58, 0x0015, 0x0059, 0x0010, 0xffff, 0x0000, 0xb930, ++ 0x0005, 0x0031, 0x0010, 0x001e, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x8424, 0x0000, 0xb05c, 0x0005, 0x0031, 0x0000, 0x001f, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x842a, 0x0001, 0xb0c8, ++ 0x0010, 0x000f, 0x001b, 0x1431, 0x0015, 0x00ff, 0x0010, 0x0005, ++ 0x0003, 0x0439, 0x0002, 0xb040, 0x0013, 0x1436, 0x0015, 0x00ff, ++ 0x0000, 0x0004, 0x0003, 0x0439, 0x0001, 0xb0c8, 0x0010, 0x0006, ++ 0x0002, 0xff60, 0x0010, 0xffb2, 0x0011, 0x0d88, 0x0000, 0x0019, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb109, 0x000b, 0x843f, ++ 0x0012, 0xb170, 0x0011, 0xffc8, 0x0010, 0xff00, 0x0011, 0xb2d0, ++ 0x0010, 0xff60, 0x0002, 0xb045, 0x0003, 0x144a, 0x0015, 0x00b2, ++ 0x0000, 0x0002, 0x0013, 0x0454, 0x0002, 0xb046, 0x0003, 0x144f, ++ 0x0015, 0x00b2, 0x0000, 0x0001, 0x0013, 0x0454, 0x0015, 0x00b2, ++ 0x0010, 0x0000, 0x0000, 0xc0b0, 0x0010, 0xc0b1, 0x0003, 0x045a, ++ 0x0000, 0xb930, 0x0005, 0x0031, 0x0010, 0x002b, 0x0015, 0x0033, ++ 0x0000, 0xb011, 0x000b, 0x8459, 0x0010, 0xb16a, 0x0010, 0xb06b, ++ 0x0000, 0xb261, 0x0015, 0x0044, 0x0010, 0x0018, 0x0005, 0x0031, ++ 0x0000, 0x0023, 0x0015, 0x0033, 0x0000, 0x6241, 0x000b, 0x8463, ++ 0x0013, 0x9464, 0x0015, 0x00a0, 0x0000, 0x0020, 0x0012, 0xd041, ++ 0x001b, 0x1467, 0x0015, 0x00d1, 0x0010, 0x0202, 0x0013, 0x946b, ++ 0x0000, 0x75ff, 0x0011, 0xffc8, 0x0000, 0x1804, 0x0001, 0xffd8, ++ 0x0010, 0x0009, 0x0003, 0x9471, 0x0000, 0xff75, 0x0013, 0x9473, ++ 0x0015, 0x00d1, 0x0000, 0x0200, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xbd88, 0x0000, 0x0008, 0x0000, 0xff31, 0x0015, 0x00b1, ++ 0x0010, 0x07d0, 0x0005, 0x00b0, 0x0010, 0x0009, 0x0015, 0x0033, ++ 0x0000, 0xb012, 0x000b, 0x8481, 0x0013, 0x0404, 0x0000, 0xba30, ++ 0x0005, 0x0031, 0x0000, 0x0031, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x8488, 0x0002, 0xb040, 0x0013, 0x1496, 0x0000, 0xb7b0, ++ 0x0000, 0xb9b1, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0000, 0x0013, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb012, ++ 0x001b, 0x8494, 0x0013, 0x0498, 0x0010, 0xc0b1, 0x0000, 0xc0b0, ++ 0x0017, 0x4000, 0x0005, 0x00b6, 0x0010, 0x0500, 0x0014, 0x05d6, ++ 0x0005, 0x0054, 0x0010, 0x0889, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0000, 0x0002, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x84a5, 0x0010, 0xb058, 0x0000, 0x0d59, ++ 0x0000, 0xb930, 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, ++ 0x0000, 0xb011, 0x001b, 0x84ad, 0x0010, 0xb15c, 0x0010, 0xb05d, ++ 0x0005, 0x0031, 0x0010, 0x002b, 0x0015, 0x0033, 0x0000, 0xb011, ++ 0x000b, 0x84b4, 0x0000, 0xb15e, 0x0000, 0xb05f, 0x0003, 0x94b7, ++ 0x0015, 0x00a0, 0x0010, 0x000c, 0x0013, 0x05bb, 0x0005, 0x00b6, ++ 0x0000, 0x0700, 0x0014, 0x05d6, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0009, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb709, 0x000b, 0x84c5, 0x0012, 0xb749, 0x0003, 0x14cb, ++ 0x0005, 0x0054, 0x0010, 0x0889, 0x0013, 0x04cd, 0x0005, 0x0054, ++ 0x0010, 0x0898, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0000, 0x0002, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x84d4, 0x0010, 0xb058, 0x0000, 0x0d59, 0x0001, 0xb9a8, ++ 0x0010, 0x00f0, 0x000b, 0x24f9, 0x0011, 0x0d88, 0x0010, 0x0005, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x84df, ++ 0x0001, 0xb0c8, 0x0000, 0xf700, 0x0000, 0xffb0, 0x0011, 0xb0e8, ++ 0x0000, 0xf100, 0x0013, 0x1540, 0x0011, 0xb0e8, 0x0000, 0xf200, ++ 0x0013, 0x1545, 0x0011, 0xb0e8, 0x0010, 0xf300, 0x0013, 0x1568, ++ 0x0011, 0xb0e8, 0x0000, 0xf400, 0x0013, 0x156d, 0x0011, 0xb0e8, ++ 0x0010, 0xf500, 0x0013, 0x1540, 0x0011, 0xb0e8, 0x0010, 0xf600, ++ 0x0003, 0x157e, 0x0005, 0x00ce, 0x0010, 0x0009, 0x0000, 0xb0cf, ++ 0x0013, 0x07ab, 0x0000, 0xb930, 0x0005, 0x0031, 0x0000, 0x0025, ++ 0x0015, 0x0033, 0x0000, 0xb039, 0x001b, 0x84fe, 0x0012, 0xb749, ++ 0x0003, 0x1503, 0x0002, 0xb52c, 0x0000, 0xffb5, 0x0000, 0xb162, ++ 0x0000, 0xb063, 0x0005, 0x0031, 0x0000, 0x001f, 0x0015, 0x0033, ++ 0x0000, 0xb309, 0x001b, 0x8509, 0x0001, 0xb3c8, 0x0010, 0x0003, ++ 0x0003, 0x1511, 0x0010, 0xffb2, 0x0001, 0xffe8, 0x0010, 0x0003, ++ 0x000b, 0x1513, 0x0000, 0xc2b7, 0x0013, 0x059a, 0x0001, 0xb2e8, ++ 0x0000, 0x0001, 0x0013, 0x151a, 0x0005, 0x00ce, 0x0010, 0x000a, ++ 0x0010, 0xb2cf, 0x0013, 0x07ab, 0x0010, 0xb465, 0x0010, 0xb667, ++ 0x0015, 0x00b7, 0x0010, 0x0018, 0x0001, 0xb5c8, 0x0010, 0x0300, ++ 0x0003, 0x153f, 0x0012, 0xb548, 0x0013, 0x1526, 0x0000, 0xb6ff, ++ 0x0011, 0xb780, 0x0010, 0xffb7, 0x0002, 0xb549, 0x0003, 0x152b, ++ 0x0010, 0xb4ff, 0x0011, 0xb780, 0x0010, 0xffb7, 0x0015, 0x0044, ++ 0x0010, 0x0018, 0x0005, 0x0031, 0x0000, 0x002c, 0x0015, 0x0033, ++ 0x0000, 0x6841, 0x000b, 0x8531, 0x0015, 0x0044, 0x0000, 0x0019, ++ 0x0005, 0x0031, 0x0000, 0x0034, 0x0015, 0x0033, 0x0000, 0x5029, ++ 0x000b, 0x8538, 0x0015, 0x0044, 0x0000, 0x0008, 0x0011, 0xb7c8, ++ 0x0010, 0x0003, 0x0003, 0x153f, 0x0010, 0xff55, 0x0013, 0x059a, ++ 0x0005, 0x00b5, 0x0000, 0x0008, 0x0015, 0x00b7, 0x0010, 0x0018, ++ 0x0013, 0x059a, 0x0011, 0x0d88, 0x0000, 0x000b, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb011, 0x000b, 0x854a, 0x0010, 0xb1ff, ++ 0x0001, 0xb0d0, 0x0003, 0x1553, 0x0005, 0x00b5, 0x0010, 0x0b02, ++ 0x0010, 0xb062, 0x0010, 0xb163, 0x0013, 0x0555, 0x0005, 0x00b5, ++ 0x0000, 0x0302, 0x0015, 0x0065, 0x0010, 0x0012, 0x0005, 0x0067, ++ 0x0000, 0x0008, 0x0015, 0x006c, 0x0000, 0x7000, 0x0005, 0x006d, ++ 0x0010, 0x0500, 0x0015, 0x006f, 0x0010, 0x000a, 0x0015, 0x0044, ++ 0x0000, 0x0001, 0x0005, 0x0052, 0x0000, 0x2500, 0x0015, 0x0044, ++ 0x0000, 0x0008, 0x0015, 0x00b7, 0x0000, 0x0032, 0x0013, 0x059a, ++ 0x0005, 0x00b5, 0x0010, 0x0028, 0x0015, 0x00b7, 0x0010, 0x0018, ++ 0x0013, 0x059a, 0x0005, 0x00b5, 0x0000, 0x0100, 0x0005, 0x0067, ++ 0x0000, 0x0008, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0010, 0x0018, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x001b, 0x8578, 0x0001, 0xb0c8, 0x0010, 0x00ff, 0x0015, 0x00b7, ++ 0x0000, 0x0020, 0x0013, 0x059a, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0005, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb609, 0x000b, 0x8585, 0x0001, 0xb6c8, 0x0010, 0xff00, ++ 0x0000, 0xffb0, 0x0015, 0x0033, 0x0000, 0xb00a, 0x001b, 0x858b, ++ 0x0001, 0xb6c8, 0x0010, 0x00ff, 0x0012, 0xff10, 0x000b, 0x1594, ++ 0x0000, 0xffb5, 0x0015, 0x00b7, 0x0010, 0x0018, 0x0013, 0x059a, ++ 0x0010, 0xff63, 0x0005, 0x00b5, 0x0000, 0x0800, 0x0015, 0x00b7, ++ 0x0010, 0x0018, 0x0013, 0x059a, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0009, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x85a1, 0x0010, 0xb561, 0x0013, 0x95a3, ++ 0x0010, 0xb7a0, 0x0013, 0x05bb, 0x0005, 0x00b6, 0x0010, 0x0300, ++ 0x0014, 0x05d6, 0x0005, 0x0054, 0x0010, 0x0819, 0x0010, 0x0d58, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0002, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x85b3, ++ 0x0000, 0xb059, 0x0003, 0x95b5, 0x0010, 0xc0a0, 0x0010, 0x71ff, ++ 0x0002, 0xff28, 0x0010, 0xff71, 0x0013, 0x05bb, 0x0012, 0xd041, ++ 0x001b, 0x15bb, 0x0015, 0x00d1, 0x0010, 0x0202, 0x0000, 0x75ff, ++ 0x0011, 0xffc8, 0x0000, 0x1804, 0x0001, 0xffd8, 0x0010, 0x0009, ++ 0x0003, 0x95c4, 0x0000, 0xff75, 0x0013, 0x95c6, 0x0015, 0x00d1, ++ 0x0000, 0x0200, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbd88, ++ 0x0000, 0x0008, 0x0000, 0xff31, 0x0005, 0x00b0, 0x0010, 0x0009, ++ 0x0015, 0x00b1, 0x0010, 0x07d0, 0x0015, 0x0033, 0x0000, 0xb012, ++ 0x001b, 0x85d4, 0x0013, 0x0404, 0x0015, 0x0044, 0x0000, 0x0008, ++ 0x0005, 0x0098, 0x0010, 0x0056, 0x0015, 0x0099, 0x0000, 0x9575, ++ 0x0014, 0x0772, 0x0000, 0xb096, 0x0012, 0xb270, 0x0010, 0xff56, ++ 0x0004, 0x0794, 0x0010, 0xb052, 0x0010, 0xb153, 0x0000, 0xb6ff, ++ 0x0011, 0xb2d0, 0x0010, 0xff50, 0x0010, 0xb351, 0x0017, 0x4000, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0x1288, 0x0010, 0x0011, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x1009, 0x000b, 0x85ef, ++ 0x0015, 0x000f, 0x0000, 0x0001, 0x0010, 0xc014, 0x0000, 0x1213, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x0004, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xba09, 0x000b, 0x85fb, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0010, 0x0005, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x1a09, 0x001b, 0x8603, ++ 0x0012, 0x104b, 0x001b, 0x160c, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x000b, 0x0015, 0x0033, 0x0000, 0x1621, 0x000b, 0x860b, ++ 0x0010, 0x15fe, 0x001b, 0x6615, 0x0004, 0x0633, 0x0002, 0x3a42, ++ 0x000b, 0x1632, 0x0001, 0x10c8, 0x0010, 0x000f, 0x001b, 0x1695, ++ 0x0003, 0x0631, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, ++ 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x861c, 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x861f, ++ 0x0010, 0xb0fe, 0x0013, 0x6624, 0x0000, 0xb012, 0x0003, 0x0626, ++ 0x0010, 0xc012, 0x0010, 0xc011, 0x0015, 0x000f, 0x0010, 0x0000, ++ 0x0002, 0x3944, 0x0013, 0x162f, 0x0015, 0x0039, 0x0000, 0x5040, ++ 0x0015, 0x00b8, 0x0000, 0x0008, 0x0014, 0x07ed, 0x0000, 0xc013, ++ 0x0003, 0x0632, 0x0004, 0x07d9, 0x0003, 0x0051, 0x0003, 0xb633, ++ 0x0005, 0x002a, 0x0000, 0x0004, 0x0000, 0xba30, 0x0005, 0x0031, ++ 0x0010, 0x001b, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x863b, ++ 0x0000, 0xc02c, 0x0000, 0xb02d, 0x0012, 0x104b, 0x0003, 0x1656, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, ++ 0x0000, 0xb129, 0x000b, 0x8645, 0x0000, 0xb120, 0x0010, 0xb221, ++ 0x0000, 0xb322, 0x0000, 0xb423, 0x0000, 0xb524, 0x0000, 0xc025, ++ 0x0010, 0xb526, 0x0010, 0xc027, 0x0010, 0xb516, 0x0010, 0xc017, ++ 0x0000, 0xb518, 0x0000, 0xc019, 0x0010, 0xc028, 0x0000, 0xc029, ++ 0x0010, 0xc01e, 0x0003, 0x068c, 0x0012, 0x1044, 0x0013, 0x1686, ++ 0x0002, 0x1034, 0x0000, 0xff10, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b29, 0x001b, 0x865f, ++ 0x0000, 0x1c30, 0x0000, 0x1b31, 0x0015, 0x0033, 0x0000, 0xb131, ++ 0x000b, 0x8664, 0x0002, 0x1f43, 0x000b, 0x166b, 0x0010, 0xb3b5, ++ 0x0000, 0xb4b6, 0x0000, 0xc0b3, 0x0010, 0xc0b4, 0x0000, 0xb120, ++ 0x0010, 0xb221, 0x0000, 0xb322, 0x0000, 0xb423, 0x0000, 0xb524, ++ 0x0010, 0xb625, 0x0010, 0xb516, 0x0000, 0xb617, 0x0000, 0x1826, ++ 0x0000, 0x1927, 0x0000, 0x1a30, 0x0005, 0x0031, 0x0010, 0x000f, ++ 0x0015, 0x0033, 0x0000, 0xb011, 0x000b, 0x867a, 0x0000, 0xb028, ++ 0x0000, 0xb129, 0x0012, 0x1e10, 0x0010, 0xff1e, 0x0003, 0x668c, ++ 0x0002, 0x1d00, 0x0010, 0xff1d, 0x0004, 0x027f, 0x0002, 0x3a42, ++ 0x0013, 0x168c, 0x0003, 0x0694, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b79, 0x001b, 0x868b, ++ 0x0013, 0xb68c, 0x0005, 0x002a, 0x0000, 0x0001, 0x0005, 0x0015, ++ 0x0000, 0x0001, 0x0000, 0x1efe, 0x0003, 0x6694, 0x0003, 0x024b, ++ 0x0017, 0x4000, 0x0000, 0xba30, 0x0005, 0x0031, 0x0010, 0x001b, ++ 0x0015, 0x0033, 0x0010, 0xb051, 0x001b, 0x869a, 0x0000, 0xb0a3, ++ 0x0010, 0xb697, 0x0010, 0xb946, 0x0015, 0x00a5, 0x0000, 0x0010, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x0002, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb509, 0x000b, 0x86a7, ++ 0x0004, 0x0794, 0x0004, 0x0783, 0x0012, 0xb470, 0x0010, 0xffb4, ++ 0x0010, 0xb48e, 0x0010, 0xb08a, 0x0010, 0xb18b, 0x0012, 0x104d, ++ 0x0003, 0x16b2, 0x0003, 0x06df, 0x0012, 0x104b, 0x0003, 0x16c5, ++ 0x0005, 0x008c, 0x0010, 0x0829, 0x0010, 0xc08d, 0x0001, 0xb2d8, ++ 0x0010, 0x0600, 0x0010, 0xff88, 0x0010, 0xb389, 0x0000, 0x1390, ++ 0x0010, 0xb591, 0x0000, 0xc08f, 0x0010, 0x1ab9, 0x0004, 0x0483, ++ 0x0013, 0x96c0, 0x0010, 0xb092, 0x0010, 0xb193, 0x0013, 0x96c3, ++ 0x0003, 0x06da, 0x0005, 0x008c, 0x0000, 0x0809, 0x0015, 0x008d, ++ 0x0000, 0x0008, 0x0001, 0xb2d8, 0x0000, 0x0100, 0x0010, 0xff88, ++ 0x0010, 0xb389, 0x0000, 0x1390, 0x0010, 0xb591, 0x0000, 0xc08f, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0010, 0x000f, 0x0015, 0x0033, ++ 0x0000, 0xb011, 0x000b, 0x86d5, 0x0003, 0x96d6, 0x0000, 0xb192, ++ 0x0000, 0xb093, 0x0003, 0x96d9, 0x0010, 0x19a1, 0x0000, 0x18a2, ++ 0x0015, 0x00b1, 0x0010, 0x0096, 0x0003, 0x074e, 0x0000, 0xb590, ++ 0x0010, 0x1391, 0x0001, 0x10c8, 0x0010, 0x000f, 0x0001, 0xffe8, ++ 0x0010, 0x0005, 0x0013, 0x1706, 0x0001, 0xb2d8, 0x0000, 0x0700, ++ 0x0010, 0xff88, 0x0010, 0xb389, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x1388, 0x0010, 0x0009, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x86f1, 0x0002, 0xb049, 0x0003, 0x16f9, ++ 0x0005, 0x008c, 0x0010, 0x0889, 0x0015, 0x00b1, 0x0010, 0x0096, ++ 0x0003, 0x06fd, 0x0005, 0x008c, 0x0010, 0x0898, 0x0015, 0x00b1, ++ 0x0000, 0x0092, 0x0010, 0xc08d, 0x0000, 0xc08f, 0x0013, 0x96ff, ++ 0x0000, 0xc092, 0x0010, 0xc093, 0x0013, 0x9702, 0x0010, 0x19a1, ++ 0x0000, 0x18a2, 0x0003, 0x074e, 0x0001, 0xb2d8, 0x0000, 0x0100, ++ 0x0010, 0xff88, 0x0010, 0xb389, 0x0005, 0x008c, 0x0010, 0x0880, ++ 0x0015, 0x008d, 0x0000, 0x0008, 0x0011, 0x1388, 0x0000, 0x000e, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x8713, ++ 0x0010, 0xb08f, 0x0000, 0xb590, 0x0010, 0x1391, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0000, 0x000d, 0x0015, 0x0033, 0x0000, 0xb021, ++ 0x001b, 0x871c, 0x0003, 0x971d, 0x0010, 0xb392, 0x0010, 0xb293, ++ 0x0013, 0x9720, 0x0000, 0xb1a1, 0x0010, 0xb0a2, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x000b, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb211, 0x001b, 0x872a, 0x0000, 0xb3ff, ++ 0x0001, 0xb080, 0x0000, 0xffb3, 0x001b, 0x2731, 0x0002, 0xb200, ++ 0x0013, 0x0732, 0x0010, 0xb2ff, 0x0011, 0xb180, 0x0010, 0xffb2, ++ 0x0011, 0x1388, 0x0000, 0x000b, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb212, 0x000b, 0x8739, 0x0015, 0x00b1, 0x0000, 0x0092, ++ 0x0002, 0x104c, 0x0003, 0x174c, 0x0011, 0xc2e8, 0x0010, 0x000c, ++ 0x000b, 0x1744, 0x0015, 0x00ff, 0x0000, 0x0800, 0x0013, 0x074c, ++ 0x0011, 0xc2e8, 0x0000, 0x0020, 0x001b, 0x174a, 0x0015, 0x00ff, ++ 0x0010, 0x1800, 0x0013, 0x074c, 0x0015, 0x00ff, 0x0000, 0x1000, ++ 0x0011, 0xb1d0, 0x0010, 0xffb1, 0x0015, 0x009a, 0x0010, 0x0036, ++ 0x0005, 0x009b, 0x0000, 0x95d5, 0x0012, 0xd041, 0x001b, 0x1752, ++ 0x0015, 0x00d1, 0x0010, 0x0202, 0x0003, 0x9756, 0x0012, 0x104e, ++ 0x0003, 0x175b, 0x0012, 0xb12f, 0x0010, 0xffb1, 0x0000, 0xb175, ++ 0x0003, 0x975c, 0x0015, 0x00d1, 0x0000, 0x0200, 0x0001, 0x19c8, ++ 0x0010, 0xfff0, 0x000b, 0x1765, 0x0015, 0x00b1, 0x0010, 0x07d0, ++ 0x0013, 0x0767, 0x0015, 0x00b1, 0x0000, 0x1b58, 0x0005, 0x00b0, ++ 0x0010, 0x0009, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbd88, ++ 0x0000, 0x000b, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb012, ++ 0x001b, 0x8770, 0x0003, 0x0632, 0x0000, 0xba30, 0x0005, 0x0031, ++ 0x0010, 0x0021, 0x0015, 0x0033, 0x0010, 0xb019, 0x000b, 0x8777, ++ 0x0002, 0xb200, 0x0011, 0xffc8, 0x0010, 0x00ff, 0x0010, 0xffb2, ++ 0x0010, 0xb2b7, 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, ++ 0x0010, 0xb20a, 0x000b, 0x8781, 0x0017, 0x4000, 0x0000, 0xba30, ++ 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, 0x0010, 0xb409, ++ 0x000b, 0x8788, 0x0002, 0xb400, 0x0011, 0xffc8, 0x0010, 0x00ff, ++ 0x0010, 0xffb4, 0x0010, 0xb4b7, 0x0005, 0x0031, 0x0000, 0x0023, ++ 0x0015, 0x0033, 0x0010, 0xb40a, 0x001b, 0x8792, 0x0017, 0x4000, ++ 0x0000, 0xba30, 0x0001, 0xc7c8, 0x0000, 0x0020, 0x000b, 0x17a0, ++ 0x0005, 0x0031, 0x0010, 0x0028, 0x0015, 0x0033, 0x0010, 0xb209, ++ 0x000b, 0x879c, 0x0011, 0xb2c8, 0x0000, 0xff80, 0x0013, 0x17a3, ++ 0x0010, 0xc4b0, 0x0010, 0xc5b1, 0x0003, 0x07a5, 0x0010, 0xc6b1, ++ 0x0000, 0xc0b0, 0x0005, 0x0031, 0x0000, 0x0004, 0x0015, 0x0033, ++ 0x0010, 0xb211, 0x000b, 0x87a9, 0x0017, 0x4000, 0x0015, 0x00b8, ++ 0x0010, 0x0009, 0x0015, 0x003a, 0x0010, 0x0707, 0x0014, 0x07ed, ++ 0x0013, 0x002d, 0x0015, 0x00b8, 0x0010, 0x0009, 0x0015, 0x003a, ++ 0x0010, 0x0707, 0x0003, 0x07ed, 0x0004, 0x0110, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0004, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xba09, 0x000b, 0x87be, 0x0014, 0x0772, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0010, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb20a, 0x001b, 0x87c7, ++ 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x0309, 0x001b, 0x87cd, 0x0002, 0x0327, 0x0010, 0xffb2, ++ 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb20a, 0x001b, 0x87d5, 0x0015, 0x00b8, 0x0010, 0x0006, ++ 0x0003, 0x07ed, 0x0014, 0x0122, 0x0014, 0x0772, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x0010, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb20a, 0x000b, 0x87e2, 0x0012, 0x1027, ++ 0x0010, 0xffb2, 0x0011, 0x1388, 0x0010, 0x0011, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb20a, 0x001b, 0x87ea, 0x0015, 0x00b8, ++ 0x0000, 0x0007, 0x0013, 0x47ed, 0x0000, 0xb838, 0x0017, 0x4000, ++ 0xa85a, 0x97da ++}; ++unsigned short xseqflx_code_length01 = 0x0fe2; +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2322ipx_fw.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2322ipx_fw.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/ql2322ipx_fw.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/ql2322ipx_fw.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,8072 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, 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. ++ * ++ ******************************************************************************/ ++ ++/************************************************************************ ++ * * * ++ * --- ISP2322 Initiator/Target Firmware --- * ++ * with support for Internet Protocol * ++ * and 2K port logins. * ++ * * * ++ ************************************************************************ ++ */ ++/* ++ * Firmware Version 3.02.28 (14:05 Apr 03, 2004) ++ */ ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322ipx_version = 3*1024+2; ++#else ++unsigned short risc_code_version = 3*1024+2; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned char fw2322ipx_version_str[] = {3, 2,28}; ++#else ++unsigned char firmware_version[] = {3, 2,28}; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++#define fw2322ipx_VERSION_STRING "3.02.28" ++#else ++#define FW_VERSION_STRING "3.02.28" ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322ipx_addr01 = 0x0800 ; ++#else ++unsigned short risc_code_addr01 = 0x0800 ; ++#endif ++ ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322ipx_code01[] = { ++#else ++unsigned short risc_code01[] = { ++#endif ++ 0x0470, 0x0000, 0x0000, 0xdf42, 0x0000, 0x0003, 0x0002, 0x001c, ++ 0x0137, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, ++ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, ++ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972, ++ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, ++ 0x332e, 0x3032, 0x2e32, 0x3820, 0x2020, 0x2020, 0x2400, 0x20a9, ++ 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f, ++ 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001, ++ 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000, ++ 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, ++ 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, ++ 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00, ++ 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001, ++ 0x0000, 0x20c1, 0x0004, 0x20c9, 0x1cff, 0x2059, 0x0000, 0x2b78, ++ 0x7883, 0x0004, 0x2089, 0x2ab5, 0x2051, 0x1800, 0x2a70, 0x20e1, ++ 0x0001, 0x20e9, 0x0001, 0x2009, 0x0000, 0x080c, 0x0e55, 0x00f6, ++ 0x7888, 0x9005, 0x11f8, 0x2061, 0xc000, 0x080c, 0x205a, 0x1170, ++ 0x2079, 0x0300, 0x080c, 0x2070, 0x2061, 0xe000, 0x080c, 0x205a, ++ 0x1128, 0x2079, 0x0380, 0x080c, 0x2070, 0x0060, 0x00fe, 0x7883, ++ 0x4010, 0x7837, 0x4010, 0x7833, 0x0010, 0x2091, 0x5000, 0x2091, ++ 0x4080, 0x0cf8, 0x00fe, 0x2029, 0x5600, 0x2031, 0xffff, 0x2039, ++ 0x55dc, 0x2021, 0x0200, 0x20e9, 0x0001, 0x20a1, 0x0000, 0x20a9, ++ 0x0800, 0x900e, 0x4104, 0x20e9, 0x0001, 0x20a1, 0x1000, 0x900e, ++ 0x2001, 0x0dc1, 0x9084, 0x0fff, 0x20a8, 0x4104, 0x2001, 0x0000, ++ 0x9086, 0x0000, 0x0120, 0x21a8, 0x4104, 0x8001, 0x1de0, 0x756e, ++ 0x7672, 0x776a, 0x7476, 0x747a, 0x00e6, 0x2071, 0x1b4e, 0x2472, ++ 0x00ee, 0x20a1, 0x1ddc, 0x7170, 0x810d, 0x810d, 0x810d, 0x810d, ++ 0x918c, 0x000f, 0x2001, 0x0001, 0x9112, 0x900e, 0x21a8, 0x4104, ++ 0x8211, 0x1de0, 0x7170, 0x3400, 0x8001, 0x9102, 0x0120, 0x0218, ++ 0x20a8, 0x900e, 0x4104, 0x2009, 0x1800, 0x810d, 0x810d, 0x810d, ++ 0x810d, 0x810d, 0x918c, 0x001f, 0x2001, 0x0001, 0x9112, 0x20e9, ++ 0x0001, 0x20a1, 0x0800, 0x900e, 0x20a9, 0x0800, 0x4104, 0x8211, ++ 0x1dd8, 0x080c, 0x0f52, 0x080c, 0x6037, 0x080c, 0xab83, 0x080c, ++ 0x1109, 0x080c, 0x1328, 0x080c, 0x1bb0, 0x080c, 0x918d, 0x080c, ++ 0x0d0f, 0x080c, 0x108e, 0x080c, 0x3474, 0x080c, 0x7801, 0x080c, ++ 0x6a8f, 0x080c, 0x8905, 0x080c, 0x8569, 0x080c, 0x223f, 0x080c, ++ 0x7ed6, 0x080c, 0x2089, 0x080c, 0x21c3, 0x080c, 0x2234, 0x2091, ++ 0x3009, 0x7883, 0x0000, 0x1004, 0x0943, 0x7880, 0x9086, 0x0002, ++ 0x1190, 0x7883, 0x4000, 0x7837, 0x4000, 0x7833, 0x0010, 0x0e04, ++ 0x0937, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x190c, 0x11d6, 0x2071, 0x1800, 0x7003, 0x0000, 0x780c, ++ 0x9084, 0x0030, 0x9086, 0x0000, 0x190c, 0x0d7d, 0x2071, 0x1800, ++ 0x7000, 0x908e, 0x0003, 0x1168, 0x080c, 0x4bcc, 0x080c, 0x349b, ++ 0x080c, 0x7869, 0x080c, 0x6fd7, 0x080c, 0x89e3, 0x080c, 0x8592, ++ 0x0c68, 0x000b, 0x0c88, 0x096d, 0x096e, 0x0b09, 0x096b, 0x0bc3, ++ 0x0d0e, 0x0d0e, 0x0d0e, 0x080c, 0x0d7d, 0x0005, 0x0126, 0x00f6, ++ 0x2091, 0x8000, 0x7000, 0x9086, 0x0001, 0x1904, 0x0adc, 0x080c, ++ 0x0ea5, 0x080c, 0x74e9, 0x0150, 0x080c, 0x750c, 0x15b0, 0x2079, ++ 0x0100, 0x7828, 0x9085, 0x1800, 0x782a, 0x0478, 0x080c, 0x741a, ++ 0x7000, 0x9086, 0x0001, 0x1904, 0x0adc, 0x7098, 0x9086, 0x0028, ++ 0x1904, 0x0adc, 0x080c, 0x8561, 0x080c, 0x8553, 0x2001, 0x0161, ++ 0x2003, 0x0001, 0x2079, 0x0100, 0x2011, 0xffff, 0x080c, 0x2a44, ++ 0x7a28, 0x9295, 0x5e2c, 0x7a2a, 0x2011, 0x735f, 0x080c, 0x863e, ++ 0x2011, 0x7352, 0x080c, 0x874a, 0x2011, 0x5e8e, 0x080c, 0x863e, ++ 0x2011, 0x8030, 0x901e, 0x7396, 0x04d0, 0x080c, 0x573b, 0x2079, ++ 0x0100, 0x7844, 0x9005, 0x1904, 0x0adc, 0x2011, 0x5e8e, 0x080c, ++ 0x863e, 0x2011, 0x735f, 0x080c, 0x863e, 0x2011, 0x7352, 0x080c, ++ 0x874a, 0x2001, 0x0265, 0x2001, 0x0205, 0x2003, 0x0000, 0x7840, ++ 0x9084, 0xfffb, 0x7842, 0x2001, 0x19a6, 0x2004, 0x9005, 0x1140, ++ 0x00c6, 0x2061, 0x0100, 0x080c, 0x5fdf, 0x00ce, 0x0804, 0x0adc, ++ 0x780f, 0x006b, 0x7a28, 0x080c, 0x74f1, 0x0118, 0x9295, 0x5e2c, ++ 0x0010, 0x9295, 0x402c, 0x7a2a, 0x2011, 0x8010, 0x73d8, 0x2001, ++ 0x19a7, 0x2003, 0x0001, 0x080c, 0x2916, 0x080c, 0x4b07, 0x7248, ++ 0xc284, 0x724a, 0x2001, 0x180c, 0x200c, 0xc1ac, 0xc1cc, 0x2102, ++ 0x2001, 0x0390, 0x2003, 0x0400, 0x080c, 0xa896, 0x080c, 0xa073, ++ 0x2011, 0x0004, 0x080c, 0xc848, 0x080c, 0xa8b2, 0x080c, 0x6917, ++ 0x080c, 0x74e9, 0x1120, 0x080c, 0x2971, 0x0600, 0x0420, 0x080c, ++ 0x5fe6, 0x0140, 0x7097, 0x0001, 0x70d3, 0x0000, 0x080c, 0x5908, ++ 0x0804, 0x0adc, 0x080c, 0x56da, 0xd094, 0x01a8, 0x2001, 0x0390, ++ 0x2003, 0x0404, 0x2011, 0x180c, 0x2204, 0xc0cd, 0x2012, 0x080c, ++ 0x56de, 0xd0d4, 0x1118, 0x080c, 0x2971, 0x1270, 0x2011, 0x180c, ++ 0x2204, 0xc0bc, 0x00a8, 0x080c, 0x56de, 0xd0d4, 0x1db8, 0x2011, ++ 0x180c, 0x2204, 0xc0bd, 0x0060, 0x2011, 0x180c, 0x2204, 0xc0bd, ++ 0x2012, 0x080c, 0x6a63, 0x1128, 0xd0a4, 0x0118, 0x2204, 0xc0fd, ++ 0x2012, 0x080c, 0x6a29, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x00a8, ++ 0x707f, 0x0000, 0x080c, 0x74e9, 0x1130, 0x70b0, 0x9005, 0x1168, ++ 0x080c, 0xcc9f, 0x0050, 0x080c, 0xcc9f, 0x70dc, 0xd09c, 0x1128, ++ 0x70b0, 0x9005, 0x0110, 0x080c, 0x5fbc, 0x70e7, 0x0000, 0x70e3, ++ 0x0000, 0x70a7, 0x0000, 0x080c, 0x2979, 0x0228, 0x2011, 0x0101, ++ 0x2204, 0xc0c4, 0x2012, 0x72dc, 0x080c, 0x74e9, 0x1178, 0x9016, ++ 0x0016, 0x080c, 0x2713, 0x2019, 0x196d, 0x211a, 0x001e, 0x705f, ++ 0xffff, 0x7063, 0x00ef, 0x7083, 0x0000, 0x0020, 0x2019, 0x196d, ++ 0x201b, 0x0000, 0x2079, 0x1847, 0x7804, 0xd0ac, 0x0108, 0xc295, ++ 0x72de, 0x080c, 0x74e9, 0x0118, 0x9296, 0x0004, 0x0518, 0x2011, ++ 0x0001, 0x080c, 0xc848, 0x70ab, 0x0000, 0x70af, 0xffff, 0x7003, ++ 0x0002, 0x00fe, 0x080c, 0x2fb2, 0x080c, 0xa896, 0x2011, 0x0005, ++ 0x080c, 0xa1cf, 0x080c, 0xa8b2, 0x080c, 0x74e9, 0x0148, 0x00c6, ++ 0x2061, 0x0100, 0x0016, 0x080c, 0x2713, 0x61e2, 0x001e, 0x00ce, ++ 0x012e, 0x00e0, 0x70ab, 0x0000, 0x70af, 0xffff, 0x7003, 0x0002, ++ 0x080c, 0xa896, 0x2011, 0x0005, 0x080c, 0xa1cf, 0x080c, 0xa8b2, ++ 0x080c, 0x74e9, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, ++ 0x2713, 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, ++ 0x00b6, 0x080c, 0x74e9, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, ++ 0x0782, 0x080c, 0x74e9, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, ++ 0x86ff, 0x0138, 0x9180, 0x1000, 0x2004, 0x905d, 0x0110, 0xb800, ++ 0xd0bc, 0x090c, 0x32fc, 0x8108, 0x1f04, 0x0af0, 0x707f, 0x0000, ++ 0x7080, 0x9084, 0x00ff, 0x7082, 0x70b3, 0x0000, 0x00be, 0x00ce, ++ 0x0005, 0x00b6, 0x0126, 0x2091, 0x8000, 0x7000, 0x9086, 0x0002, ++ 0x1904, 0x0bc0, 0x70ac, 0x9086, 0xffff, 0x0120, 0x080c, 0x2fb2, ++ 0x0804, 0x0bc0, 0x70dc, 0xd0ac, 0x1110, 0xd09c, 0x0538, 0xd084, ++ 0x0528, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, 0xd08c, ++ 0x01e8, 0x080c, 0x336d, 0x11b0, 0x70e0, 0x9086, 0xffff, 0x0190, ++ 0x080c, 0x3147, 0x70dc, 0xd094, 0x1904, 0x0bc0, 0x2011, 0x0001, ++ 0x080c, 0xcf52, 0x0110, 0x2011, 0x0003, 0x901e, 0x080c, 0x3181, ++ 0x0804, 0x0bc0, 0x70e4, 0x9005, 0x1904, 0x0bc0, 0x70a8, 0x9005, ++ 0x1904, 0x0bc0, 0x70dc, 0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x0bc0, ++ 0x080c, 0x6a29, 0x1904, 0x0bc0, 0x080c, 0x6a7c, 0x1904, 0x0bc0, ++ 0x080c, 0x6a63, 0x01c0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, ++ 0x0016, 0x080c, 0x6625, 0x1118, 0xb800, 0xd0ec, 0x1138, 0x001e, ++ 0x8108, 0x1f04, 0x0b60, 0x00ce, 0x015e, 0x0028, 0x001e, 0x00ce, ++ 0x015e, 0x0804, 0x0bc0, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, ++ 0x000e, 0x2011, 0x19b3, 0x080c, 0x0fc2, 0x2011, 0x19cd, 0x080c, ++ 0x0fc2, 0x7030, 0xc08c, 0x7032, 0x7003, 0x0003, 0x70af, 0xffff, ++ 0x080c, 0x0e79, 0x9006, 0x080c, 0x25a0, 0x080c, 0x336d, 0x0118, ++ 0x080c, 0x4ca4, 0x0050, 0x0036, 0x0046, 0x2019, 0xffff, 0x2021, ++ 0x0006, 0x080c, 0x4cbe, 0x004e, 0x003e, 0x00f6, 0x2079, 0x0100, ++ 0x080c, 0x750c, 0x0150, 0x080c, 0x74e9, 0x7828, 0x0118, 0x9084, ++ 0xe1ff, 0x0010, 0x9084, 0xffdf, 0x782a, 0x00fe, 0x080c, 0xa896, ++ 0x2001, 0x19e8, 0x2004, 0x9086, 0x0005, 0x1120, 0x2011, 0x0000, ++ 0x080c, 0xa1cf, 0x2011, 0x0000, 0x080c, 0xa1d9, 0x080c, 0xa8b2, ++ 0x012e, 0x00be, 0x0005, 0x0016, 0x0026, 0x0046, 0x00f6, 0x0126, ++ 0x2091, 0x8000, 0x2079, 0x0100, 0x7904, 0x918c, 0xfffd, 0x7906, ++ 0x2009, 0x00f7, 0x080c, 0x5fa5, 0x7940, 0x918c, 0x0010, 0x7942, ++ 0x7924, 0xd1b4, 0x0120, 0x2011, 0x0040, 0x080c, 0x2a44, 0xd19c, ++ 0x0120, 0x2011, 0x0008, 0x080c, 0x2a44, 0x0006, 0x0036, 0x0156, ++ 0x0000, 0x2001, 0x19a7, 0x2004, 0x9005, 0x1518, 0x080c, 0x29d8, ++ 0x1148, 0x2001, 0x0001, 0x080c, 0x2945, 0x2001, 0x0001, 0x080c, ++ 0x2928, 0x00b8, 0x080c, 0x29e0, 0x1138, 0x9006, 0x080c, 0x2945, ++ 0x9006, 0x080c, 0x2928, 0x0068, 0x080c, 0x29e8, 0x1d50, 0x2001, ++ 0x1998, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, 0x273f, 0x0804, ++ 0x0cc1, 0x080c, 0x2a67, 0x080c, 0x2aab, 0x20a9, 0x003a, 0x1d04, ++ 0x0c17, 0x080c, 0x872a, 0x1f04, 0x0c17, 0x080c, 0x74fa, 0x0148, ++ 0x080c, 0x750c, 0x1118, 0x080c, 0x77fc, 0x0050, 0x080c, 0x74f1, ++ 0x0dd0, 0x080c, 0x77f7, 0x080c, 0x77ed, 0x080c, 0x741a, 0x0020, ++ 0x2009, 0x00f8, 0x080c, 0x5fa5, 0x7850, 0xc0e5, 0x7852, 0x080c, ++ 0x74e9, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, ++ 0x2019, 0xea60, 0x0d0c, 0x872a, 0x7820, 0xd09c, 0x15a0, 0x080c, ++ 0x74e9, 0x0904, 0x0ca3, 0x7824, 0xd0ac, 0x1904, 0x0cc6, 0x080c, ++ 0x750c, 0x1548, 0x0046, 0x2021, 0x0320, 0x8421, 0x1df0, 0x004e, ++ 0x2011, 0x1800, 0x080c, 0x2a44, 0x080c, 0x29f0, 0x7824, 0x9084, ++ 0x1800, 0x1168, 0x9484, 0x0fff, 0x1140, 0x2001, 0x1810, 0x2004, ++ 0x9084, 0x9000, 0x0110, 0x080c, 0x0ce9, 0x8421, 0x1160, 0x1d04, ++ 0x0c73, 0x080c, 0x872a, 0x080c, 0x77f7, 0x080c, 0x77ed, 0x7003, ++ 0x0001, 0x0804, 0x0cc6, 0x8319, 0x1928, 0x2001, 0x1810, 0x2004, ++ 0x9084, 0x9000, 0x0110, 0x080c, 0x0ce9, 0x1d04, 0x0c89, 0x080c, ++ 0x872a, 0x2009, 0x199b, 0x2104, 0x9005, 0x0118, 0x8001, 0x200a, ++ 0x1188, 0x200b, 0x000a, 0x2011, 0x0048, 0x080c, 0x2a44, 0x20a9, ++ 0x0002, 0x080c, 0x29d1, 0x7924, 0x080c, 0x29f0, 0xd19c, 0x0110, ++ 0x080c, 0x2916, 0x00f0, 0x080c, 0x74fa, 0x1140, 0x94a2, 0x03e8, ++ 0x1128, 0x080c, 0x74bd, 0x7003, 0x0001, 0x00c0, 0x2011, 0x1800, ++ 0x080c, 0x2a44, 0x080c, 0x29f0, 0x7824, 0x080c, 0x7503, 0x0110, ++ 0xd0ac, 0x1160, 0x9084, 0x1800, 0x0904, 0x0c7b, 0x7003, 0x0001, ++ 0x0028, 0x2001, 0x0001, 0x080c, 0x25a0, 0x00a0, 0x7850, 0xc0e4, ++ 0x7852, 0x2009, 0x180c, 0x210c, 0xd19c, 0x1120, 0x7904, 0x918d, ++ 0x0002, 0x7906, 0x2011, 0x0048, 0x080c, 0x2a44, 0x7828, 0x9085, ++ 0x0028, 0x782a, 0x2001, 0x19a7, 0x2003, 0x0000, 0x9006, 0x78f2, ++ 0x015e, 0x003e, 0x000e, 0x012e, 0x00fe, 0x004e, 0x002e, 0x001e, ++ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0071, 0x0d0c, 0x872a, 0x015e, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x004e, 0x003e, 0x002e, ++ 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, 0x189e, 0x7004, 0x9086, ++ 0x0001, 0x1110, 0x080c, 0x349b, 0x00ee, 0x0005, 0x0005, 0x2a70, ++ 0x2061, 0x19ab, 0x2063, 0x0003, 0x6007, 0x0002, 0x600b, 0x001c, ++ 0x600f, 0x0137, 0x2001, 0x197c, 0x900e, 0x2102, 0x7196, 0x2001, ++ 0x0100, 0x2004, 0x9082, 0x0002, 0x0218, 0x705f, 0xffff, 0x0008, ++ 0x715e, 0x7067, 0xffff, 0x717e, 0x7182, 0x080c, 0xcc9f, 0x70ef, ++ 0x00c0, 0x2061, 0x196c, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, ++ 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x001f, 0x611a, 0x601f, ++ 0x07d0, 0x2061, 0x1974, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, ++ 0x0200, 0x6013, 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, ++ 0x1989, 0x6003, 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, ++ 0x2020, 0x2001, 0x182c, 0x2102, 0x0005, 0x9016, 0x080c, 0x6625, ++ 0x1178, 0xb804, 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, ++ 0xff00, 0x98c6, 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, ++ 0x8108, 0x9186, 0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, ++ 0x2079, 0x0000, 0x000e, 0x00f6, 0x0010, 0x2091, 0x8000, 0x0e04, ++ 0x0d7f, 0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, ++ 0x000e, 0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, ++ 0x7886, 0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, ++ 0x00d6, 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1b24, 0x7a08, ++ 0x226a, 0x2069, 0x1b25, 0x7a18, 0x226a, 0x8d68, 0x7a1c, 0x226a, ++ 0x782c, 0x2019, 0x1b32, 0x201a, 0x2019, 0x1b35, 0x9016, 0x7808, ++ 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210, 0x8318, 0x9386, 0x1b4e, ++ 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110, 0x2011, 0xdead, 0x2019, ++ 0x1b33, 0x782c, 0x201a, 0x8318, 0x221a, 0x7803, 0x0000, 0x2069, ++ 0x1a7a, 0x901e, 0x20a9, 0x0020, 0x7b26, 0x7a28, 0x226a, 0x8d68, ++ 0x8318, 0x1f04, 0x0dcc, 0x0491, 0x002e, 0x003e, 0x00de, 0x015e, ++ 0x2079, 0x1800, 0x7803, 0x0005, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x0180, 0x2001, 0x1a22, 0x2004, 0x9005, 0x0128, ++ 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, ++ 0x0002, 0x2003, 0x1001, 0x080c, 0x56e9, 0x1170, 0x080c, 0x0f13, ++ 0x0110, 0x080c, 0x0e66, 0x080c, 0x56e9, 0x1130, 0x2071, 0x1800, ++ 0x2011, 0x8000, 0x080c, 0x0f27, 0x0c70, 0x0005, 0x2001, 0x0382, ++ 0x2004, 0x9084, 0x0007, 0x9086, 0x0001, 0x1120, 0x2001, 0x0015, ++ 0x080c, 0xa887, 0x2079, 0x0380, 0x2069, 0x1b04, 0x7818, 0x6802, ++ 0x781c, 0x6806, 0x7840, 0x680a, 0x7844, 0x680e, 0x782c, 0x6812, ++ 0x2019, 0x1b0f, 0x9016, 0x7808, 0xd09c, 0x0150, 0x7820, 0x201a, ++ 0x8210, 0x8318, 0x8210, 0x9282, 0x0011, 0x0ea8, 0x2011, 0xdead, ++ 0x6a2a, 0x7830, 0x681a, 0x7834, 0x681e, 0x7838, 0x6822, 0x783c, ++ 0x6826, 0x7803, 0x0000, 0x2069, 0x1ac4, 0x901e, 0x20a9, 0x0020, ++ 0x7b26, 0x7828, 0x206a, 0x8d68, 0x8318, 0x1f04, 0x0e40, 0x2069, ++ 0x1ae4, 0x2019, 0x00b0, 0x20a9, 0x0020, 0x7b26, 0x7828, 0x206a, ++ 0x8d68, 0x8318, 0x1f04, 0x0e4d, 0x0005, 0x918c, 0x03ff, 0x2001, ++ 0x0003, 0x2004, 0x9084, 0x0600, 0x1118, 0x918d, 0x6c00, 0x0010, ++ 0x918d, 0x6400, 0x2001, 0x017f, 0x2102, 0x0005, 0x0026, 0x0126, ++ 0x2011, 0x0080, 0x080c, 0x0f05, 0x20a9, 0x0900, 0x080c, 0x0f3b, ++ 0x2011, 0x0040, 0x080c, 0x0f05, 0x20a9, 0x0900, 0x080c, 0x0f3b, ++ 0x0c78, 0x0026, 0x080c, 0x0f13, 0x1188, 0x2011, 0x010e, 0x2214, ++ 0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0x0947, 0x0010, ++ 0x2011, 0x1b47, 0x080c, 0x0f27, 0x002e, 0x0005, 0x2011, 0x010e, ++ 0x2214, 0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0xa880, ++ 0x0010, 0x2011, 0x6840, 0xd0e4, 0x70f3, 0x0000, 0x1128, 0x70f3, ++ 0x0fa0, 0x080c, 0x0f18, 0x002e, 0x0005, 0x0026, 0x080c, 0x0f13, ++ 0x0148, 0xd0a4, 0x1138, 0x2011, 0xcdd5, 0x0010, 0x2011, 0x0080, ++ 0x080c, 0x0f18, 0x002e, 0x0005, 0x0026, 0x70f3, 0x0000, 0x080c, ++ 0x0f13, 0x1130, 0x2011, 0x8040, 0x080c, 0x0f27, 0x002e, 0x0005, ++ 0x080c, 0x29e8, 0x1118, 0x2011, 0xcdc5, 0x0010, 0x2011, 0xcac2, ++ 0x080c, 0x0f18, 0x002e, 0x0005, 0x00e6, 0x0016, 0x0006, 0x2071, ++ 0x1800, 0xd0b4, 0x70ec, 0x71e8, 0x1118, 0xc0e4, 0xc1f4, 0x0050, ++ 0x0006, 0x3b00, 0x9084, 0xff3e, 0x20d8, 0x000e, 0x70f3, 0x0000, ++ 0xc0e5, 0xc1f5, 0x0099, 0x000e, 0x001e, 0x00ee, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0xd0e4, 0x70ec, 0x1110, 0xc0dc, 0x0008, 0xc0dd, ++ 0x0016, 0x71e8, 0x0019, 0x001e, 0x00ee, 0x0005, 0x70ee, 0x71ea, ++ 0x7000, 0x9084, 0x0007, 0x000b, 0x0005, 0x0ecb, 0x0ea5, 0x0ea5, ++ 0x0e79, 0x0eb4, 0x0ea5, 0x0ea5, 0x0eb4, 0xc284, 0x0016, 0x3b08, ++ 0x3a00, 0x9104, 0x918d, 0x00c1, 0x21d8, 0x9084, 0xff3e, 0x9205, ++ 0x20d0, 0x001e, 0x0005, 0x2001, 0x183b, 0x2004, 0xd0dc, 0x0005, ++ 0x9e86, 0x1800, 0x190c, 0x0d7d, 0x70ec, 0xd0e4, 0x0108, 0xc2e5, ++ 0x72ee, 0xd0e4, 0x1118, 0x9294, 0x00c1, 0x08f9, 0x0005, 0x9e86, ++ 0x1800, 0x190c, 0x0d7d, 0x70e8, 0xd0f4, 0x0108, 0xc2f5, 0x72ea, ++ 0xd0f4, 0x1140, 0x9284, 0x8000, 0x8005, 0xc284, 0x9215, 0x9294, ++ 0x00c1, 0x0861, 0x0005, 0x1d04, 0x0f3b, 0x2091, 0x6000, 0x1f04, ++ 0x0f3b, 0x0005, 0x890e, 0x810e, 0x810f, 0x9194, 0x003f, 0x918c, ++ 0xffc0, 0x0005, 0x0006, 0x2200, 0x914d, 0x894f, 0x894d, 0x894d, ++ 0x000e, 0x0005, 0x01d6, 0x0146, 0x0036, 0x0096, 0x2061, 0x188d, ++ 0x600b, 0x0000, 0x600f, 0x0000, 0x6003, 0x0000, 0x6007, 0x0000, ++ 0x2009, 0xffc0, 0x2105, 0x0006, 0x2001, 0xaaaa, 0x200f, 0x2019, ++ 0x5555, 0x9016, 0x2049, 0x0bff, 0xab02, 0xa001, 0xa001, 0xa800, ++ 0x9306, 0x1138, 0x2105, 0x9306, 0x0120, 0x8210, 0x99c8, 0x0400, ++ 0x0c98, 0x000e, 0x200f, 0x2001, 0x189d, 0x928a, 0x000e, 0x1638, ++ 0x928a, 0x0006, 0x2011, 0x0006, 0x1210, 0x2011, 0x0000, 0x2202, ++ 0x9006, 0x2008, 0x82ff, 0x01b0, 0x8200, 0x600a, 0x600f, 0xffff, ++ 0x6003, 0x0002, 0x6007, 0x0000, 0x0026, 0x2019, 0x0010, 0x9280, ++ 0x0001, 0x20e8, 0x21a0, 0x21a8, 0x4104, 0x8319, 0x1de0, 0x8211, ++ 0x1da0, 0x002e, 0x009e, 0x003e, 0x014e, 0x01de, 0x0005, 0x2011, ++ 0x000e, 0x08e8, 0x0016, 0x0026, 0x0096, 0x3348, 0x080c, 0x0f42, ++ 0x2100, 0x9300, 0x2098, 0x22e0, 0x009e, 0x002e, 0x001e, 0x0036, ++ 0x3518, 0x20a9, 0x0001, 0x4002, 0x8007, 0x4004, 0x8319, 0x1dd8, ++ 0x003e, 0x0005, 0x20e9, 0x0001, 0x71b8, 0x81ff, 0x11c0, 0x9006, ++ 0x2009, 0x0200, 0x20a9, 0x0002, 0x9298, 0x0018, 0x23a0, 0x4001, ++ 0x2009, 0x0700, 0x20a9, 0x0002, 0x9298, 0x0008, 0x23a0, 0x4001, ++ 0x707c, 0x8007, 0x7180, 0x810f, 0x20a9, 0x0002, 0x4001, 0x9298, ++ 0x000c, 0x23a0, 0x900e, 0x080c, 0x0d5d, 0x2001, 0x0000, 0x810f, ++ 0x20a9, 0x0002, 0x4001, 0x0005, 0x89ff, 0x0140, 0xa804, 0xa807, ++ 0x0000, 0x0006, 0x080c, 0x106c, 0x009e, 0x0cb0, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x10e5, 0x090c, 0x0d7d, 0x00ee, 0x0005, ++ 0x0086, 0x00e6, 0x0006, 0x0026, 0x0036, 0x0126, 0x2091, 0x8000, ++ 0x00c9, 0x2071, 0x1800, 0x73c0, 0x702c, 0x9016, 0x9045, 0x0158, ++ 0x8210, 0x9906, 0x090c, 0x0d7d, 0x2300, 0x9202, 0x0120, 0x1a0c, ++ 0x0d7d, 0xa000, 0x0c98, 0x012e, 0x003e, 0x002e, 0x000e, 0x00ee, ++ 0x008e, 0x0005, 0x0086, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x1910, 0x7010, 0x9005, 0x0140, 0x7018, 0x9045, 0x0128, ++ 0x9906, 0x090c, 0x0d7d, 0xa000, 0x0cc8, 0x012e, 0x000e, 0x00ee, ++ 0x008e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x0126, 0x2091, 0x8000, ++ 0x70c0, 0x8001, 0x0270, 0x70c2, 0x702c, 0x2048, 0x9085, 0x0001, ++ 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, ++ 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x1800, 0x70c0, 0x90ca, 0x0020, 0x0268, 0x8001, 0x70c2, 0x702c, ++ 0x2048, 0xa800, 0x702e, 0xa803, 0x0000, 0xa807, 0x0000, 0x012e, ++ 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x0016, 0x890e, 0x810e, 0x810f, 0x9184, 0x003f, 0xa862, 0x9184, ++ 0xffc0, 0xa85e, 0x001e, 0x0020, 0x00e6, 0x0126, 0x2091, 0x8000, ++ 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, ++ 0x70c2, 0x080c, 0x8553, 0x012e, 0x00ee, 0x0005, 0x2071, 0x1800, ++ 0x9026, 0x2009, 0x0000, 0x2049, 0x0400, 0x2900, 0x702e, 0x8940, ++ 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, 0x0440, ++ 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, 0x188d, 0x7000, ++ 0x9005, 0x11a0, 0x2001, 0x0558, 0xa802, 0x2048, 0x2009, 0x5600, ++ 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420, 0x9886, ++ 0x0800, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071, 0x188d, ++ 0x7104, 0x7200, 0x82ff, 0x01d0, 0x7308, 0x8318, 0x831f, 0x831b, ++ 0x831b, 0x7312, 0x8319, 0x2001, 0x0800, 0xa802, 0x2048, 0x8900, ++ 0xa802, 0x2040, 0xa95e, 0xaa62, 0x8420, 0x2300, 0x9906, 0x0130, ++ 0x2848, 0x9188, 0x0040, 0x9291, 0x0000, 0x0c88, 0xa803, 0x0000, ++ 0x2071, 0x1800, 0x74be, 0x74c2, 0x0005, 0x00e6, 0x0016, 0x9984, ++ 0xfc00, 0x01e8, 0x908c, 0xf800, 0x1168, 0x9982, 0x0400, 0x02b8, ++ 0x9982, 0x0440, 0x0278, 0x9982, 0x0558, 0x0288, 0x9982, 0x0800, ++ 0x1270, 0x0040, 0x9982, 0x0800, 0x0250, 0x2071, 0x188d, 0x7010, ++ 0x9902, 0x1228, 0x9085, 0x0001, 0x001e, 0x00ee, 0x0005, 0x9006, ++ 0x0cd8, 0x00e6, 0x2071, 0x1a21, 0x7007, 0x0000, 0x9006, 0x701e, ++ 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085, 0x8044, 0x7012, ++ 0x2071, 0x0080, 0x9006, 0x20a9, 0x0040, 0x7022, 0x1f04, 0x111d, ++ 0x702b, 0x0020, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, ++ 0xa06f, 0x0000, 0x2071, 0x1a21, 0x701c, 0x9088, 0x1a2b, 0x280a, ++ 0x8000, 0x9084, 0x003f, 0x701e, 0x7120, 0x9106, 0x090c, 0x0d7d, ++ 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x00a9, 0x00fe, ++ 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0x2071, ++ 0x1a21, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x0021, ++ 0x00fe, 0x00ee, 0x012e, 0x0005, 0x7004, 0x9086, 0x0000, 0x1110, ++ 0x7007, 0x0006, 0x7000, 0x0002, 0x1166, 0x12e9, 0x1164, 0x1164, ++ 0x12dd, 0x12dd, 0x12dd, 0x12dd, 0x080c, 0x0d7d, 0x701c, 0x7120, ++ 0x9106, 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110, ++ 0x7007, 0x0000, 0x0005, 0x0096, 0x9180, 0x1a2b, 0x2004, 0x700a, ++ 0x2048, 0x8108, 0x918c, 0x003f, 0x7122, 0x782b, 0x0026, 0xa88c, ++ 0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, 0xa878, ++ 0x700e, 0xa870, 0x7016, 0xa874, 0x701a, 0xa868, 0x009e, 0xd084, ++ 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1, ++ 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040, ++ 0x1210, 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, 0x782b, ++ 0x0020, 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, ++ 0x0136, 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9, ++ 0x0000, 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, 0x0040, ++ 0x9182, 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006, ++ 0x8203, 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, 0x0001, ++ 0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, 0x1a21, ++ 0x2104, 0xc095, 0x200a, 0x080c, 0x1143, 0x0005, 0x0016, 0x00e6, ++ 0x2071, 0x1a21, 0x00f6, 0x2079, 0x0080, 0x792c, 0xd1bc, 0x190c, ++ 0x0d76, 0x782b, 0x0002, 0xd1fc, 0x0120, 0x918c, 0x0700, 0x7004, ++ 0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x1154, 0x11fc, 0x1230, ++ 0x1308, 0x0d7d, 0x1323, 0x0d7d, 0x918c, 0x0700, 0x1550, 0x0136, ++ 0x0146, 0x0156, 0x7014, 0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, ++ 0x2099, 0x0088, 0x782b, 0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, ++ 0x701a, 0x015e, 0x014e, 0x013e, 0x700c, 0x9005, 0x0578, 0x7800, ++ 0x7802, 0x7804, 0x7806, 0x080c, 0x1199, 0x0005, 0x7008, 0x0096, ++ 0x2048, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x080c, 0x1154, ++ 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e, 0x0ca0, ++ 0x918c, 0x0700, 0x1150, 0x700c, 0x9005, 0x0180, 0x7800, 0x7802, ++ 0x7804, 0x7806, 0x080c, 0x11ae, 0x0005, 0x7008, 0x0096, 0x2048, ++ 0xa86f, 0x0200, 0x009e, 0x7007, 0x0000, 0x0080, 0x0096, 0x7008, ++ 0x2048, 0x7800, 0xa88e, 0x7804, 0xa892, 0x7808, 0xa896, 0x780c, ++ 0xa89a, 0xa86f, 0x0100, 0x009e, 0x7007, 0x0000, 0x0096, 0x00d6, ++ 0x7008, 0x2048, 0x2001, 0x18b9, 0x2004, 0x9906, 0x1128, 0xa89c, ++ 0x080f, 0x00de, 0x009e, 0x00a0, 0x00de, 0x009e, 0x0096, 0x00d6, ++ 0x7008, 0x2048, 0x0081, 0x0150, 0xa89c, 0x0086, 0x2940, 0x080f, ++ 0x008e, 0x00de, 0x009e, 0x080c, 0x1143, 0x0005, 0x00de, 0x009e, ++ 0x080c, 0x1143, 0x0005, 0xa8a8, 0xd08c, 0x0005, 0x0096, 0xa0a0, ++ 0x904d, 0x090c, 0x0d7d, 0xa06c, 0x908e, 0x0100, 0x0130, 0xa87b, ++ 0x0030, 0xa883, 0x0000, 0xa897, 0x4002, 0x080c, 0x6d74, 0xa09f, ++ 0x0000, 0xa0a3, 0x0000, 0x2848, 0x080c, 0x106c, 0x009e, 0x0005, ++ 0x00a6, 0xa0a0, 0x904d, 0x090c, 0x0d7d, 0xa06c, 0x908e, 0x0100, ++ 0x0128, 0xa87b, 0x0001, 0xa883, 0x0000, 0x00c0, 0xa80c, 0x2050, ++ 0xb004, 0x9005, 0x0198, 0xa80e, 0x2050, 0x8006, 0x8006, 0x8007, ++ 0x908c, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xa076, 0xa172, ++ 0xb000, 0xa07a, 0x2810, 0x080c, 0x1124, 0x00e8, 0xa97c, 0xa894, ++ 0x0016, 0x0006, 0x080c, 0x6d74, 0x000e, 0x001e, 0xd1fc, 0x1138, ++ 0xd1f4, 0x0128, 0x00c6, 0x2060, 0x080c, 0xabed, 0x00ce, 0x7008, ++ 0x2048, 0xa89f, 0x0000, 0xa8a3, 0x0000, 0x080c, 0x106c, 0x7007, ++ 0x0000, 0x080c, 0x1143, 0x00ae, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x782b, 0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x012e, ++ 0x0005, 0x0096, 0x2001, 0x192e, 0x204c, 0xa87c, 0x7812, 0xa88c, ++ 0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, 0x782b, ++ 0x0020, 0x0126, 0x2091, 0x8000, 0x782b, 0x0041, 0x7007, 0x0003, ++ 0x7000, 0xc084, 0x7002, 0x2900, 0x700a, 0x012e, 0x009e, 0x0005, ++ 0x20e1, 0x0000, 0x2099, 0x0088, 0x782b, 0x0040, 0x0096, 0x2001, ++ 0x192e, 0x204c, 0xaa7c, 0x009e, 0x080c, 0x8c1b, 0x2009, 0x188c, ++ 0x2104, 0x9084, 0xfffc, 0x200a, 0x080c, 0x8a8e, 0x7007, 0x0000, ++ 0x080c, 0x1154, 0x0005, 0x7007, 0x0000, 0x080c, 0x1154, 0x0005, ++ 0x0126, 0x2091, 0x2200, 0x2079, 0x0300, 0x2071, 0x1a6b, 0x7003, ++ 0x0000, 0x78bf, 0x00f6, 0x0041, 0x7807, 0x0007, 0x7803, 0x0000, ++ 0x7803, 0x0001, 0x012e, 0x0005, 0x00c6, 0x7803, 0x0000, 0x2001, ++ 0x0165, 0x2003, 0x4198, 0x7808, 0xd09c, 0x0118, 0x7820, 0x04e9, ++ 0x0cd0, 0x2001, 0x1a6c, 0x2003, 0x0000, 0x78ab, 0x0004, 0x78ac, ++ 0xd0ac, 0x1de8, 0x78ab, 0x0002, 0x7807, 0x0007, 0x7827, 0x0030, ++ 0x782b, 0x0400, 0x7827, 0x0031, 0x782b, 0x1a7a, 0x781f, 0xff00, ++ 0x781b, 0xff00, 0x2001, 0x0200, 0x2004, 0xd0dc, 0x0110, 0x781f, ++ 0x0303, 0x2061, 0x1a7a, 0x602f, 0x1ddc, 0x2001, 0x181a, 0x2004, ++ 0x9082, 0x1ddc, 0x6032, 0x603b, 0x1e55, 0x602b, 0x1aba, 0x6007, ++ 0x1a9a, 0x2061, 0x1a9a, 0x60af, 0x193c, 0x2001, 0x1927, 0x2004, ++ 0x60ba, 0x783f, 0x3374, 0x00ce, 0x0005, 0x9086, 0x000d, 0x11d0, ++ 0x7808, 0xd09c, 0x01b8, 0x7820, 0x0026, 0x2010, 0x080c, 0xc826, ++ 0x0180, 0x2260, 0x6000, 0x9086, 0x0004, 0x1158, 0x0016, 0x6120, ++ 0x9186, 0x0009, 0x0108, 0x0020, 0x2009, 0x004c, 0x080c, 0xac8c, ++ 0x001e, 0x002e, 0x0005, 0x0126, 0x2091, 0x2200, 0x7908, 0x9184, ++ 0x0070, 0x190c, 0x0d76, 0xd19c, 0x05a0, 0x7820, 0x908c, 0xf000, ++ 0x0540, 0x2060, 0x6020, 0x9086, 0x0003, 0x1550, 0x6000, 0x9086, ++ 0x0004, 0x1530, 0x6114, 0x2148, 0xa876, 0xa87a, 0xa867, 0x0103, ++ 0x080c, 0x6b96, 0x00b6, 0x6010, 0x2058, 0xba3c, 0x8211, 0x0208, ++ 0xba3e, 0xb8d0, 0x9005, 0x190c, 0x6750, 0x00be, 0x6044, 0xd0fc, ++ 0x190c, 0xa8bf, 0x080c, 0xac16, 0x7808, 0xd09c, 0x19b0, 0x012e, ++ 0x0005, 0x908a, 0x0024, 0x1a0c, 0x0d7d, 0x002b, 0x012e, 0x0005, ++ 0x04b0, 0x012e, 0x0005, 0x1407, 0x142d, 0x145d, 0x1462, 0x1466, ++ 0x146b, 0x1493, 0x1497, 0x14a5, 0x14a9, 0x1407, 0x1574, 0x1578, ++ 0x15dd, 0x15e4, 0x1407, 0x15e5, 0x15e6, 0x15f1, 0x15f8, 0x1407, ++ 0x1407, 0x1407, 0x1407, 0x1407, 0x1407, 0x1407, 0x146d, 0x1407, ++ 0x1435, 0x145a, 0x1421, 0x1407, 0x1441, 0x140b, 0x1409, 0x080c, ++ 0x0d7d, 0x080c, 0x0d76, 0x080c, 0x1603, 0x2009, 0x1a79, 0x2104, ++ 0x8000, 0x200a, 0x080c, 0x7f99, 0x080c, 0x1ab5, 0x0005, 0x6044, ++ 0xd0fc, 0x190c, 0xa8bf, 0x2009, 0x0055, 0x080c, 0xac8c, 0x012e, ++ 0x0005, 0x080c, 0x1603, 0x2060, 0x6044, 0xd0fc, 0x190c, 0xa8bf, ++ 0x2009, 0x0055, 0x080c, 0xac8c, 0x0005, 0x2009, 0x0048, 0x080c, ++ 0x1603, 0x2060, 0x080c, 0xac8c, 0x0005, 0x2009, 0x0054, 0x080c, ++ 0x1603, 0x2060, 0x6044, 0xd0fc, 0x190c, 0xa8bf, 0x080c, 0xac8c, ++ 0x0005, 0x080c, 0x1603, 0x2060, 0x0056, 0x0066, 0x080c, 0x1603, ++ 0x2028, 0x080c, 0x1603, 0x2030, 0x0036, 0x0046, 0x2021, 0x0000, ++ 0x2418, 0x2009, 0x0056, 0x080c, 0xac8c, 0x004e, 0x003e, 0x006e, ++ 0x005e, 0x0005, 0x080c, 0x1603, 0x0005, 0x7004, 0xc085, 0xc0b5, ++ 0x7006, 0x0005, 0x7004, 0xc085, 0x7006, 0x0005, 0x080c, 0x1603, ++ 0x080c, 0x16c7, 0x0005, 0x080c, 0x0d7d, 0x080c, 0x1603, 0x2060, ++ 0x6014, 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, ++ 0x080c, 0xac8c, 0x2001, 0x015d, 0x2003, 0x0000, 0x2009, 0x03e8, ++ 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, ++ 0x0218, 0x2004, 0xd0ec, 0x1110, 0x080c, 0x1608, 0x2001, 0x0307, ++ 0x2003, 0x8000, 0x0005, 0x7004, 0xc095, 0x7006, 0x0005, 0x080c, ++ 0x1603, 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b, 0xffff, 0x009e, ++ 0x2009, 0x0048, 0x080c, 0xac8c, 0x0005, 0x080c, 0x1603, 0x080c, ++ 0x0d7d, 0x080c, 0x1603, 0x080c, 0x155f, 0x7827, 0x0018, 0x79ac, ++ 0xd1dc, 0x0904, 0x1512, 0x7827, 0x0015, 0x7828, 0x782b, 0x0000, ++ 0x9065, 0x0140, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, ++ 0x0804, 0x1518, 0x7004, 0x9005, 0x01c8, 0x1188, 0x78ab, 0x0004, ++ 0x7827, 0x0018, 0x782b, 0x0000, 0xd1bc, 0x090c, 0x0d7d, 0x2001, ++ 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0804, 0x1544, 0x78ab, ++ 0x0004, 0x7803, 0x0001, 0x080c, 0x1578, 0x0005, 0x7827, 0x0018, ++ 0xa001, 0x7828, 0x7827, 0x0011, 0xa001, 0x7928, 0x9106, 0x0110, ++ 0x79ac, 0x08e0, 0x00e6, 0x2071, 0x0200, 0x702c, 0xd0c4, 0x0140, ++ 0x00ee, 0x080c, 0x1ab5, 0x080c, 0x133c, 0x7803, 0x0001, 0x0005, ++ 0x7037, 0x0001, 0xa001, 0x7150, 0x00ee, 0x918c, 0xff00, 0x9186, ++ 0x0500, 0x0110, 0x79ac, 0x0810, 0x7004, 0xc09d, 0x7006, 0x78ab, ++ 0x0004, 0x7803, 0x0001, 0x080c, 0x1578, 0x2001, 0x020d, 0x2003, ++ 0x0020, 0x0005, 0x7828, 0x782b, 0x0000, 0x9065, 0x090c, 0x0d7d, ++ 0x6014, 0x2048, 0x78ab, 0x0004, 0x918c, 0x0700, 0x0198, 0x080c, ++ 0x7f99, 0x080c, 0x1ab5, 0x080c, 0xc838, 0x0158, 0xa9ac, 0xa936, ++ 0xa9b0, 0xa93a, 0xa83f, 0xffff, 0xa843, 0xffff, 0xa880, 0xc0bd, ++ 0xa882, 0x0005, 0x6020, 0x9086, 0x0009, 0x1128, 0x2009, 0x004c, ++ 0x080c, 0xac8c, 0x0048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x6024, 0x190c, 0xcc34, 0x2029, 0x00c8, 0x8529, 0x0128, ++ 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x7dbc, 0x080c, 0xe6da, ++ 0xd5a4, 0x1118, 0x080c, 0x1608, 0x0005, 0x080c, 0x7f99, 0x080c, ++ 0x1ab5, 0x0005, 0x781f, 0x0300, 0x7803, 0x0001, 0x0005, 0x0016, ++ 0x0066, 0x0076, 0x00f6, 0x2079, 0x0300, 0x7908, 0x918c, 0x0007, ++ 0x9186, 0x0003, 0x0120, 0x2001, 0x0016, 0x080c, 0x1679, 0x00fe, ++ 0x007e, 0x006e, 0x001e, 0x0005, 0x7004, 0xc09d, 0x7006, 0x0005, ++ 0x7104, 0x9184, 0x0004, 0x190c, 0x0d7d, 0xd184, 0x1189, 0xd19c, ++ 0x0158, 0xc19c, 0x7106, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, ++ 0x0020, 0x080c, 0x1608, 0x0005, 0x81ff, 0x190c, 0x0d7d, 0x0005, ++ 0xc184, 0xd1b4, 0xc1b4, 0x7106, 0x0016, 0x00e6, 0x15f0, 0x2071, ++ 0x0200, 0x080c, 0x16b4, 0x05c8, 0x6014, 0x9005, 0x05b0, 0x0096, ++ 0x2048, 0xa864, 0x009e, 0x9084, 0x00ff, 0x908e, 0x0029, 0x0160, ++ 0x908e, 0x0048, 0x1550, 0x601c, 0xd084, 0x11e0, 0x00f6, 0x2c78, ++ 0x080c, 0x1731, 0x00fe, 0x00b0, 0x00f6, 0x2c78, 0x080c, 0x18b8, ++ 0x00fe, 0x2009, 0x01f4, 0x8109, 0x0168, 0x2001, 0x0201, 0x2004, ++ 0x9005, 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1118, 0x080c, ++ 0x1608, 0x0040, 0x2001, 0x020d, 0x2003, 0x0020, 0x080c, 0x133c, ++ 0x7803, 0x0001, 0x00ee, 0x001e, 0x0005, 0x2001, 0x020d, 0x2003, ++ 0x0050, 0x2003, 0x0020, 0x0461, 0x0ca8, 0x0429, 0x2060, 0x2009, ++ 0x0053, 0x080c, 0xac8c, 0x0005, 0x0005, 0x0005, 0x00e1, 0x2008, ++ 0x00d1, 0x0006, 0x7004, 0xc09d, 0x7006, 0x000e, 0x080c, 0x8f78, ++ 0x0005, 0x0089, 0x9005, 0x0118, 0x080c, 0x8b7b, 0x0cd0, 0x0005, ++ 0x2001, 0x0036, 0x2009, 0x1820, 0x210c, 0x2011, 0x181f, 0x2214, ++ 0x080c, 0x1679, 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, ++ 0x080c, 0x155f, 0x00d6, 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, ++ 0x0510, 0x6804, 0x9005, 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, ++ 0x79bc, 0xd1a4, 0x1528, 0x79b8, 0x918c, 0x0fff, 0x0180, 0x9182, ++ 0x0841, 0x1268, 0x9188, 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, ++ 0x810c, 0x080c, 0x166b, 0x6827, 0x0001, 0x8109, 0x1dd0, 0x04d9, ++ 0x6827, 0x0002, 0x04c1, 0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, ++ 0x1500, 0x6804, 0x9005, 0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c0, ++ 0x080c, 0x7f99, 0x080c, 0x1ab5, 0x0090, 0x7827, 0x0015, 0x782b, ++ 0x0000, 0x7827, 0x0018, 0x782b, 0x0000, 0x2001, 0x020d, 0x2003, ++ 0x0020, 0x2001, 0x0307, 0x2003, 0x0300, 0x7803, 0x0001, 0x00de, ++ 0x0005, 0x682c, 0x9084, 0x5400, 0x9086, 0x5400, 0x0d30, 0x7827, ++ 0x0015, 0x782b, 0x0000, 0x7803, 0x0001, 0x6800, 0x9085, 0x1800, ++ 0x6802, 0x00de, 0x0005, 0x6824, 0x9084, 0x0003, 0x1de0, 0x0005, ++ 0x2001, 0x0030, 0x2c08, 0x621c, 0x0021, 0x7830, 0x9086, 0x0041, ++ 0x0005, 0x00f6, 0x2079, 0x0300, 0x0006, 0x7808, 0xd09c, 0x0140, ++ 0x0016, 0x0026, 0x00c6, 0x080c, 0x13a3, 0x00ce, 0x002e, 0x001e, ++ 0x000e, 0x0006, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080, 0x0059, ++ 0x1118, 0x000e, 0x00fe, 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, ++ 0x2004, 0x080c, 0x0d7d, 0x2009, 0xff00, 0x8109, 0x0120, 0x7818, ++ 0xd0bc, 0x1dd8, 0x0005, 0x9085, 0x0001, 0x0005, 0x7832, 0x7936, ++ 0x7a3a, 0x781b, 0x8080, 0x0c79, 0x1108, 0x0005, 0x792c, 0x3900, ++ 0x8000, 0x2004, 0x080c, 0x0d7d, 0x7037, 0x0001, 0x7150, 0x7037, ++ 0x0002, 0x7050, 0x2060, 0xd1bc, 0x1110, 0x7054, 0x2060, 0x918c, ++ 0xff00, 0x9186, 0x0500, 0x0110, 0x9085, 0x0001, 0x0005, 0x00e6, ++ 0x0016, 0x2071, 0x0200, 0x0c41, 0x6124, 0xd1dc, 0x01f8, 0x701c, ++ 0xd08c, 0x0904, 0x1726, 0x7017, 0x0000, 0x2001, 0x0264, 0x2004, ++ 0xd0bc, 0x0904, 0x1726, 0x2001, 0x0268, 0x00c6, 0x2064, 0x6104, ++ 0x6038, 0x00ce, 0x918e, 0x0039, 0x1904, 0x1726, 0x9c06, 0x15f0, ++ 0x0126, 0x2091, 0x2600, 0x080c, 0x7ef1, 0x012e, 0x7358, 0x745c, ++ 0x6014, 0x905d, 0x0598, 0x2b48, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0bc, 0x190c, 0xcc0f, 0xab42, 0xac3e, 0x2001, 0x1869, ++ 0x2004, 0xd0b4, 0x1170, 0x601c, 0xd0e4, 0x1158, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1120, 0xa83b, 0x7fff, 0xa837, ++ 0xffff, 0x080c, 0x1e75, 0x1190, 0x080c, 0x1913, 0x2a00, 0xa816, ++ 0x0130, 0x2800, 0xa80e, 0x2c05, 0xa80a, 0x2c00, 0xa812, 0x7037, ++ 0x0020, 0x781f, 0x0300, 0x001e, 0x00ee, 0x0005, 0x7037, 0x0050, ++ 0x7037, 0x0020, 0x001e, 0x00ee, 0x080c, 0x1608, 0x0005, 0x080c, ++ 0x0d7d, 0x2cf0, 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, ++ 0x2048, 0x2940, 0x903e, 0x2730, 0xa864, 0x2068, 0xa81a, 0x9d84, ++ 0x000f, 0x9088, 0x1e55, 0x2165, 0x0002, 0x175c, 0x17ca, 0x175c, ++ 0x175c, 0x1760, 0x17ab, 0x175c, 0x1780, 0x1755, 0x17c1, 0x175c, ++ 0x175c, 0x1765, 0x18b6, 0x1794, 0x178a, 0xa964, 0x918c, 0x00ff, ++ 0x918e, 0x0048, 0x0904, 0x17c1, 0x9085, 0x0001, 0x0804, 0x18ad, ++ 0xa87c, 0xd0ac, 0x0dc8, 0x0804, 0x17d1, 0xa87c, 0xd0ac, 0x0da0, ++ 0x0804, 0x183c, 0xa898, 0x901d, 0x1108, 0xab9c, 0x9016, 0xaab2, ++ 0xaa3e, 0xaa42, 0x3e00, 0x9080, 0x0008, 0x2004, 0x9080, 0x9141, ++ 0x2005, 0x9005, 0x090c, 0x0d7d, 0x2004, 0xa8ae, 0x0804, 0x1895, ++ 0xa87c, 0xd0bc, 0x09c8, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, ++ 0x0804, 0x17d1, 0xa87c, 0xd0bc, 0x0978, 0xa890, 0xa842, 0xa88c, ++ 0xa83e, 0xa888, 0x0804, 0x183c, 0xa87c, 0xd0bc, 0x0928, 0xa890, ++ 0xa842, 0xa88c, 0xa83e, 0xa804, 0x9045, 0x090c, 0x0d7d, 0xa164, ++ 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1e55, 0x2065, 0xa888, 0xd19c, ++ 0x1904, 0x183c, 0x0430, 0xa87c, 0xd0ac, 0x0904, 0x175c, 0xa804, ++ 0x9045, 0x090c, 0x0d7d, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, ++ 0x1e55, 0x2065, 0x9006, 0xa842, 0xa83e, 0xd19c, 0x1904, 0x183c, ++ 0x0080, 0xa87c, 0xd0ac, 0x0904, 0x175c, 0x9006, 0xa842, 0xa83e, ++ 0x0804, 0x183c, 0xa87c, 0xd0ac, 0x0904, 0x175c, 0x9006, 0xa842, ++ 0xa83e, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d7d, 0x9082, 0x001b, ++ 0x0002, 0x17f4, 0x17f4, 0x17f6, 0x17f4, 0x17f4, 0x17f4, 0x1800, ++ 0x17f4, 0x17f4, 0x17f4, 0x180a, 0x17f4, 0x17f4, 0x17f4, 0x1814, ++ 0x17f4, 0x17f4, 0x17f4, 0x181e, 0x17f4, 0x17f4, 0x17f4, 0x1828, ++ 0x17f4, 0x17f4, 0x17f4, 0x1832, 0x080c, 0x0d7d, 0xa574, 0xa478, ++ 0x9d86, 0x0024, 0x0904, 0x176a, 0xa37c, 0xa280, 0x0804, 0x1895, ++ 0xa584, 0xa488, 0x9d86, 0x0024, 0x0904, 0x176a, 0xa38c, 0xa290, ++ 0x0804, 0x1895, 0xa594, 0xa498, 0x9d86, 0x0024, 0x0904, 0x176a, ++ 0xa39c, 0xa2a0, 0x0804, 0x1895, 0xa5a4, 0xa4a8, 0x9d86, 0x0024, ++ 0x0904, 0x176a, 0xa3ac, 0xa2b0, 0x0804, 0x1895, 0xa5b4, 0xa4b8, ++ 0x9d86, 0x0024, 0x0904, 0x176a, 0xa3bc, 0xa2c0, 0x0804, 0x1895, ++ 0xa5c4, 0xa4c8, 0x9d86, 0x0024, 0x0904, 0x176a, 0xa3cc, 0xa2d0, ++ 0x0804, 0x1895, 0xa5d4, 0xa4d8, 0x9d86, 0x0024, 0x0904, 0x176a, ++ 0xa3dc, 0xa2e0, 0x0804, 0x1895, 0x2c05, 0x908a, 0x0034, 0x1a0c, ++ 0x0d7d, 0x9082, 0x001b, 0x0002, 0x185f, 0x185d, 0x185d, 0x185d, ++ 0x185d, 0x185d, 0x186a, 0x185d, 0x185d, 0x185d, 0x185d, 0x185d, ++ 0x1875, 0x185d, 0x185d, 0x185d, 0x185d, 0x185d, 0x1880, 0x185d, ++ 0x185d, 0x185d, 0x185d, 0x185d, 0x188b, 0x080c, 0x0d7d, 0xa56c, ++ 0xa470, 0xa774, 0xa678, 0x9d86, 0x002c, 0x0904, 0x176a, 0xa37c, ++ 0xa280, 0x0458, 0xa584, 0xa488, 0xa78c, 0xa690, 0x9d86, 0x002c, ++ 0x0904, 0x176a, 0xa394, 0xa298, 0x0400, 0xa59c, 0xa4a0, 0xa7a4, ++ 0xa6a8, 0x9d86, 0x002c, 0x0904, 0x176a, 0xa3ac, 0xa2b0, 0x00a8, ++ 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0x9d86, 0x002c, 0x0904, 0x176a, ++ 0xa3c4, 0xa2c8, 0x0050, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0x9d86, ++ 0x002c, 0x0904, 0x176a, 0xa3dc, 0xa2e0, 0xab2e, 0xaa32, 0xad1e, ++ 0xac22, 0xaf26, 0xae2a, 0xa988, 0x8c60, 0x2c1d, 0xa8ac, 0xaab0, ++ 0xa836, 0xaa3a, 0x8109, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, ++ 0x601e, 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, ++ 0x2800, 0xa80e, 0xab0a, 0x2c00, 0xa812, 0x0c78, 0x0804, 0x175c, ++ 0x2ff0, 0x0126, 0x2091, 0x2200, 0x00c6, 0x3e60, 0x6014, 0x2048, ++ 0x2940, 0xa80e, 0x2061, 0x1e50, 0xa813, 0x1e50, 0x2c05, 0xa80a, ++ 0xa964, 0xa91a, 0xa87c, 0xd0ac, 0x090c, 0x0d7d, 0x9006, 0xa842, ++ 0xa83e, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d7d, 0xadcc, 0xacd0, ++ 0xafd4, 0xaed8, 0xabdc, 0xaae0, 0xab2e, 0xaa32, 0xad1e, 0xac22, ++ 0xaf26, 0xae2a, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0xa988, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x0008, 0x1120, 0x8109, 0xa916, 0x0128, ++ 0x0078, 0x918a, 0x0002, 0xa916, 0x1158, 0x3e60, 0x601c, 0xc085, ++ 0x601e, 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x00ce, 0x012e, 0x0005, ++ 0xa804, 0x9045, 0x090c, 0x0d7d, 0xa80e, 0xa064, 0xa81a, 0x9084, ++ 0x000f, 0x9080, 0x1e55, 0x2015, 0x82ff, 0x090c, 0x0d7d, 0xaa12, ++ 0x2205, 0xa80a, 0x0c10, 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, ++ 0x2d00, 0x0002, 0x1a3d, 0x196a, 0x196a, 0x1a3d, 0x196a, 0x1a37, ++ 0x1a3d, 0x196a, 0x19da, 0x19da, 0x19da, 0x1a3d, 0x19da, 0x1a3d, ++ 0x1a34, 0x19da, 0xc0fc, 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, ++ 0xdd9c, 0x0904, 0x1a3f, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d7d, ++ 0x9082, 0x001b, 0x0002, 0x1956, 0x1954, 0x1954, 0x1954, 0x1954, ++ 0x1954, 0x195a, 0x1954, 0x1954, 0x1954, 0x1954, 0x1954, 0x195e, ++ 0x1954, 0x1954, 0x1954, 0x1954, 0x1954, 0x1962, 0x1954, 0x1954, ++ 0x1954, 0x1954, 0x1954, 0x1966, 0x080c, 0x0d7d, 0xa774, 0xa678, ++ 0x0804, 0x1a3f, 0xa78c, 0xa690, 0x0804, 0x1a3f, 0xa7a4, 0xa6a8, ++ 0x0804, 0x1a3f, 0xa7bc, 0xa6c0, 0x0804, 0x1a3f, 0xa7d4, 0xa6d8, ++ 0x0804, 0x1a3f, 0xa898, 0x901d, 0x1108, 0xab9c, 0x9016, 0x2c05, ++ 0x908a, 0x0036, 0x1a0c, 0x0d7d, 0x9082, 0x001b, 0x0002, 0x1992, ++ 0x1992, 0x1994, 0x1992, 0x1992, 0x1992, 0x199e, 0x1992, 0x1992, ++ 0x1992, 0x19a8, 0x1992, 0x1992, 0x1992, 0x19b2, 0x1992, 0x1992, ++ 0x1992, 0x19bc, 0x1992, 0x1992, 0x1992, 0x19c6, 0x1992, 0x1992, ++ 0x1992, 0x19d0, 0x080c, 0x0d7d, 0xa574, 0xa478, 0x9d86, 0x0004, ++ 0x0904, 0x1a3f, 0xa37c, 0xa280, 0x0804, 0x1a3f, 0xa584, 0xa488, ++ 0x9d86, 0x0004, 0x0904, 0x1a3f, 0xa38c, 0xa290, 0x0804, 0x1a3f, ++ 0xa594, 0xa498, 0x9d86, 0x0004, 0x0904, 0x1a3f, 0xa39c, 0xa2a0, ++ 0x0804, 0x1a3f, 0xa5a4, 0xa4a8, 0x9d86, 0x0004, 0x0904, 0x1a3f, ++ 0xa3ac, 0xa2b0, 0x0804, 0x1a3f, 0xa5b4, 0xa4b8, 0x9d86, 0x0004, ++ 0x0904, 0x1a3f, 0xa3bc, 0xa2c0, 0x0804, 0x1a3f, 0xa5c4, 0xa4c8, ++ 0x9d86, 0x0004, 0x0904, 0x1a3f, 0xa3cc, 0xa2d0, 0x0804, 0x1a3f, ++ 0xa5d4, 0xa4d8, 0x9d86, 0x0004, 0x0904, 0x1a3f, 0xa3dc, 0xa2e0, ++ 0x0804, 0x1a3f, 0xa898, 0x901d, 0x1108, 0xab9c, 0x9016, 0x2c05, ++ 0x908a, 0x0034, 0x1a0c, 0x0d7d, 0x9082, 0x001b, 0x0002, 0x1a02, ++ 0x1a00, 0x1a00, 0x1a00, 0x1a00, 0x1a00, 0x1a0c, 0x1a00, 0x1a00, ++ 0x1a00, 0x1a00, 0x1a00, 0x1a16, 0x1a00, 0x1a00, 0x1a00, 0x1a00, ++ 0x1a00, 0x1a20, 0x1a00, 0x1a00, 0x1a00, 0x1a00, 0x1a00, 0x1a2a, ++ 0x080c, 0x0d7d, 0xa56c, 0xa470, 0xa774, 0xa678, 0x9d86, 0x000c, ++ 0x05b0, 0xa37c, 0xa280, 0x0498, 0xa584, 0xa488, 0xa78c, 0xa690, ++ 0x9d86, 0x000c, 0x0560, 0xa394, 0xa298, 0x0448, 0xa59c, 0xa4a0, ++ 0xa7a4, 0xa6a8, 0x9d86, 0x000c, 0x0510, 0xa3ac, 0xa2b0, 0x00f8, ++ 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0x9d86, 0x000c, 0x01c0, 0xa3c4, ++ 0xa2c8, 0x00a8, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0x9d86, 0x000c, ++ 0x0170, 0xa3dc, 0xa2e0, 0x0058, 0x9d86, 0x000e, 0x1130, 0x080c, ++ 0x1e2b, 0x1904, 0x1913, 0x900e, 0x0050, 0x080c, 0x0d7d, 0xab2e, ++ 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0x080c, 0x1e2b, 0x0005, ++ 0x6014, 0x2048, 0x6118, 0x810c, 0x810c, 0x810c, 0x81ff, 0x1118, ++ 0xa887, 0x0001, 0x0008, 0xa986, 0x601b, 0x0002, 0xa974, 0xd1dc, ++ 0x1108, 0x0005, 0xa934, 0xa88c, 0x9106, 0x1158, 0xa938, 0xa890, ++ 0x9106, 0x1138, 0x601c, 0xc084, 0x601e, 0x2009, 0x0048, 0x0804, ++ 0xac8c, 0x0005, 0x0126, 0x00c6, 0x2091, 0x2200, 0x00ce, 0x7908, ++ 0x918c, 0x0007, 0x9186, 0x0000, 0x05b0, 0x9186, 0x0003, 0x0598, ++ 0x6020, 0x6023, 0x0000, 0x0006, 0x2031, 0x0008, 0x00c6, 0x781f, ++ 0x0808, 0x7808, 0xd09c, 0x0120, 0x080c, 0x13a3, 0x8631, 0x1db8, ++ 0x00ce, 0x781f, 0x0800, 0x2031, 0x0168, 0x00c6, 0x7808, 0xd09c, ++ 0x190c, 0x13a3, 0x00ce, 0x2001, 0x0038, 0x080c, 0x1b42, 0x7930, ++ 0x9186, 0x0040, 0x0160, 0x9186, 0x0042, 0x190c, 0x0d7d, 0x2001, ++ 0x001e, 0x8001, 0x1df0, 0x8631, 0x1d40, 0x080c, 0x1b51, 0x000e, ++ 0x6022, 0x012e, 0x0005, 0x080c, 0x1b3e, 0x7827, 0x0015, 0x7828, ++ 0x9c06, 0x1db8, 0x782b, 0x0000, 0x0ca0, 0x00f6, 0x2079, 0x0300, ++ 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, 0x080c, 0x74e9, 0x11b0, ++ 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, 0x0160, 0x2003, 0x0000, ++ 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, 0x1de0, 0x0081, 0x2001, ++ 0x0386, 0x2003, 0x2020, 0x080c, 0x758a, 0x0005, 0x0479, 0x0039, ++ 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0005, 0x00e6, ++ 0x2071, 0x0200, 0x080c, 0x29fc, 0x2009, 0x003c, 0x080c, 0x21b0, ++ 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, 0x9084, 0x003c, 0x1de0, ++ 0x080c, 0x8553, 0x70a0, 0x70a2, 0x7098, 0x709a, 0x709c, 0x709e, ++ 0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, 0x2079, 0x0300, 0x080c, ++ 0x133c, 0x7803, 0x0001, 0x00fe, 0x00ee, 0x0005, 0x2001, 0x0138, ++ 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, ++ 0x080c, 0x74e9, 0x1108, 0x0005, 0x2021, 0x0260, 0x2001, 0x0141, ++ 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0x939c, 0x0048, ++ 0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, ++ 0x2001, 0x015d, 0x2003, 0x0000, 0x0005, 0x0046, 0x2021, 0x0019, ++ 0x2003, 0x0048, 0xa001, 0xa001, 0x201c, 0x939c, 0x0048, 0x0120, ++ 0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, 0x0c40, 0x601c, 0xc084, ++ 0x601e, 0x0005, 0x2c08, 0x621c, 0x080c, 0x1679, 0x7930, 0x0005, ++ 0x2c08, 0x621c, 0x080c, 0x16a6, 0x7930, 0x0005, 0x8001, 0x1df0, ++ 0x0005, 0x2031, 0x0005, 0x781c, 0x9084, 0x0007, 0x0170, 0x2001, ++ 0x0038, 0x0c41, 0x9186, 0x0040, 0x0904, 0x1baf, 0x2001, 0x001e, ++ 0x0c69, 0x8631, 0x1d80, 0x080c, 0x0d7d, 0x781f, 0x0202, 0x2001, ++ 0x015d, 0x2003, 0x0000, 0x2001, 0x0b10, 0x0c01, 0x781c, 0xd084, ++ 0x0110, 0x0861, 0x04e0, 0x2001, 0x0030, 0x0891, 0x9186, 0x0040, ++ 0x0568, 0x781c, 0xd084, 0x1da8, 0x781f, 0x0101, 0x2001, 0x0014, ++ 0x0869, 0x2001, 0x0037, 0x0821, 0x9186, 0x0040, 0x0140, 0x2001, ++ 0x0030, 0x080c, 0x1b48, 0x9186, 0x0040, 0x190c, 0x0d7d, 0x00d6, ++ 0x2069, 0x0200, 0x692c, 0xd1f4, 0x1170, 0xd1c4, 0x0160, 0xd19c, ++ 0x0130, 0x6800, 0x9085, 0x1800, 0x6802, 0x00de, 0x0080, 0x6908, ++ 0x9184, 0x0007, 0x1db0, 0x00de, 0x781f, 0x0100, 0x791c, 0x9184, ++ 0x0007, 0x090c, 0x0d7d, 0xa001, 0xa001, 0x781f, 0x0200, 0x0005, ++ 0x0126, 0x2091, 0x2400, 0x2079, 0x0380, 0x2001, 0x19e7, 0x2070, ++ 0x012e, 0x0005, 0x2cf0, 0x0126, 0x2091, 0x2400, 0x3e60, 0x6014, ++ 0x2048, 0xa964, 0xa91a, 0x918c, 0x00ff, 0x9184, 0x000f, 0x0002, ++ 0x1be4, 0x1be4, 0x1be4, 0x1be6, 0x1be4, 0x1be4, 0x1be4, 0x1be4, ++ 0x1bd8, 0x1bee, 0x1be4, 0x1bea, 0x1be4, 0x1be4, 0x1be4, 0x1be4, ++ 0x9086, 0x0008, 0x1148, 0xa87c, 0xd0b4, 0x0904, 0x1d5e, 0x2011, ++ 0x1e50, 0x2205, 0xab88, 0x00a8, 0x080c, 0x0d7d, 0x9186, 0x0013, ++ 0x0128, 0x0cd0, 0x9186, 0x001b, 0x0108, 0x0cb0, 0xa87c, 0xd0b4, ++ 0x0904, 0x1d5e, 0x9184, 0x000f, 0x9080, 0x1e55, 0x2015, 0x2205, ++ 0xab88, 0x2908, 0xa80a, 0xa90e, 0xaa12, 0xab16, 0x9006, 0xa842, ++ 0xa83e, 0x012e, 0x0005, 0x2cf0, 0x0126, 0x2091, 0x2400, 0x3e60, ++ 0x6014, 0x2048, 0xa88c, 0xa990, 0xaaac, 0xabb0, 0xaa36, 0xab3a, ++ 0xa83e, 0xa942, 0xa846, 0xa94a, 0xa964, 0x918c, 0x00ff, 0x9186, ++ 0x001e, 0x0198, 0x2940, 0xa064, 0xa81a, 0x90ec, 0x000f, 0x9d80, ++ 0x1e55, 0x2065, 0x2c05, 0x2808, 0x2c10, 0xab88, 0xa80a, 0xa90e, ++ 0xaa12, 0xab16, 0x012e, 0x3e60, 0x0005, 0xa804, 0x2040, 0x0c58, ++ 0x2cf0, 0x0126, 0x2091, 0x2400, 0x3e60, 0x6014, 0x2048, 0xa97c, ++ 0x2950, 0xd1dc, 0x1904, 0x1d28, 0xc1dd, 0xa97e, 0x9006, 0xa842, ++ 0xa83e, 0xa988, 0x8109, 0xa916, 0xa964, 0xa91a, 0x9184, 0x000f, ++ 0x9088, 0x1e55, 0x2145, 0x0002, 0x1c5c, 0x1c6a, 0x1c5c, 0x1c5c, ++ 0x1c5c, 0x1c5e, 0x1c5c, 0x1c5c, 0x1cbf, 0x1cbf, 0x1c5c, 0x1c5c, ++ 0x1c5c, 0x1cbd, 0x1c5c, 0x1c5c, 0x080c, 0x0d7d, 0xa804, 0x2050, ++ 0xb164, 0xa91a, 0x9184, 0x000f, 0x9080, 0x1e55, 0x2045, 0xd19c, ++ 0x1904, 0x1cbf, 0x9036, 0x2638, 0x2805, 0x908a, 0x0036, 0x1a0c, ++ 0x0d7d, 0x9082, 0x001b, 0x0002, 0x1c8f, 0x1c8f, 0x1c91, 0x1c8f, ++ 0x1c8f, 0x1c8f, 0x1c97, 0x1c8f, 0x1c8f, 0x1c8f, 0x1c9d, 0x1c8f, ++ 0x1c8f, 0x1c8f, 0x1ca3, 0x1c8f, 0x1c8f, 0x1c8f, 0x1ca9, 0x1c8f, ++ 0x1c8f, 0x1c8f, 0x1caf, 0x1c8f, 0x1c8f, 0x1c8f, 0x1cb5, 0x080c, ++ 0x0d7d, 0xb574, 0xb478, 0xb37c, 0xb280, 0x0804, 0x1d04, 0xb584, ++ 0xb488, 0xb38c, 0xb290, 0x0804, 0x1d04, 0xb594, 0xb498, 0xb39c, ++ 0xb2a0, 0x0804, 0x1d04, 0xb5a4, 0xb4a8, 0xb3ac, 0xb2b0, 0x0804, ++ 0x1d04, 0xb5b4, 0xb4b8, 0xb3bc, 0xb2c0, 0x0804, 0x1d04, 0xb5c4, ++ 0xb4c8, 0xb3cc, 0xb2d0, 0x0804, 0x1d04, 0xb5d4, 0xb4d8, 0xb3dc, ++ 0xb2e0, 0x0804, 0x1d04, 0x0804, 0x1d04, 0x080c, 0x0d7d, 0x2805, ++ 0x908a, 0x0034, 0x1a0c, 0x0d7d, 0x9082, 0x001b, 0x0002, 0x1ce2, ++ 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce9, 0x1ce0, 0x1ce0, ++ 0x1ce0, 0x1ce0, 0x1ce0, 0x1cf0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, ++ 0x1ce0, 0x1cf7, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1cfe, ++ 0x080c, 0x0d7d, 0xb56c, 0xb470, 0xb774, 0xb678, 0xb37c, 0xb280, ++ 0x00d8, 0xb584, 0xb488, 0xb78c, 0xb690, 0xb394, 0xb298, 0x00a0, ++ 0xb59c, 0xb4a0, 0xb7a4, 0xb6a8, 0xb3ac, 0xb2b0, 0x0068, 0xb5b4, ++ 0xb4b8, 0xb7bc, 0xb6c0, 0xb3c4, 0xb2c8, 0x0030, 0xb5cc, 0xb4d0, ++ 0xb7d4, 0xb6d8, 0xb3dc, 0xb2e0, 0xab2e, 0xaa32, 0xad1e, 0xac22, ++ 0xaf26, 0xae2a, 0xa988, 0x8109, 0xa916, 0x1118, 0x9006, 0x012e, ++ 0x0005, 0x8840, 0x2805, 0x9005, 0x1168, 0xb004, 0x9005, 0x090c, ++ 0x0d7d, 0x2050, 0xb164, 0xa91a, 0x9184, 0x000f, 0x9080, 0x1e55, ++ 0x2045, 0x2805, 0x2810, 0x2a08, 0xa80a, 0xa90e, 0xaa12, 0x0c30, ++ 0x3e60, 0x6344, 0xd3fc, 0x190c, 0x0d7d, 0xa93c, 0xaa40, 0xa844, ++ 0x9106, 0x1118, 0xa848, 0x9206, 0x0508, 0x2958, 0xab48, 0xac44, ++ 0x2940, 0x080c, 0x1e75, 0x1998, 0x2850, 0x2c40, 0xab14, 0xa880, ++ 0xd0fc, 0x1140, 0xa810, 0x2005, 0xa80a, 0x2a00, 0xa80e, 0x2009, ++ 0x8015, 0x0070, 0x00c6, 0x3e60, 0x6044, 0xc0a4, 0x9085, 0x8005, ++ 0x6046, 0x00ce, 0x8319, 0xab16, 0x1904, 0x1d11, 0x2009, 0x8005, ++ 0x3e60, 0x6044, 0x9105, 0x6046, 0x0804, 0x1d0e, 0x080c, 0x0d7d, ++ 0x00f6, 0x00e6, 0x0096, 0x00c6, 0x0026, 0x704c, 0x9c06, 0x190c, ++ 0x0d7d, 0x2079, 0x0090, 0x2001, 0x0105, 0x2003, 0x0010, 0x782b, ++ 0x0004, 0x7057, 0x0000, 0x6014, 0x2048, 0x080c, 0xc838, 0x0118, ++ 0xa880, 0xc0bd, 0xa882, 0x6020, 0x9086, 0x0006, 0x1170, 0x2061, ++ 0x0100, 0x62c8, 0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0x9206, ++ 0x1dc0, 0x60c4, 0xa89a, 0x60c8, 0xa896, 0x704c, 0x2060, 0x00c6, ++ 0x080c, 0xc443, 0x080c, 0xa896, 0x00ce, 0x704c, 0x9c06, 0x1150, ++ 0x2009, 0x0040, 0x080c, 0x21b0, 0x080c, 0xa34e, 0x2011, 0x0000, ++ 0x080c, 0xa1d9, 0x002e, 0x00ce, 0x009e, 0x00ee, 0x00fe, 0x0005, ++ 0x00f6, 0x2079, 0x0090, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079, ++ 0x0100, 0x7a14, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816, 0x2019, ++ 0x1000, 0x8319, 0x090c, 0x0d7d, 0x7820, 0xd0bc, 0x1dd0, 0x79c8, ++ 0x000e, 0x9102, 0x001e, 0x0006, 0x0016, 0x79c4, 0x000e, 0x9103, ++ 0x78c6, 0x000e, 0x78ca, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816, ++ 0x2079, 0x0090, 0x782b, 0x0008, 0x7057, 0x0000, 0x00fe, 0x0005, ++ 0x00f6, 0x00e6, 0x2071, 0x19e7, 0x7054, 0x9086, 0x0000, 0x0904, ++ 0x1e26, 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, 0xd194, 0x01b8, ++ 0x2009, 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, 0x080c, 0xe723, ++ 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d7d, 0x0016, 0x2009, ++ 0x0040, 0x080c, 0x21b0, 0x001e, 0x2001, 0x020c, 0x2102, 0x2009, ++ 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, ++ 0x0040, 0x080c, 0x21b0, 0x782c, 0xd0fc, 0x09a8, 0x080c, 0xa8b2, ++ 0x782c, 0xd0fc, 0x1de8, 0x080c, 0xa896, 0x7054, 0x9086, 0x0000, ++ 0x1950, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, ++ 0x080c, 0x21b0, 0x782b, 0x0002, 0x7057, 0x0000, 0x00ee, 0x00fe, ++ 0x0005, 0x080c, 0x0d7d, 0x8c60, 0x2c05, 0x9005, 0x0110, 0x8a51, ++ 0x0005, 0xa004, 0x9005, 0x0168, 0xa85a, 0x2040, 0xa064, 0x9084, ++ 0x000f, 0x9080, 0x1e55, 0x2065, 0x8cff, 0x090c, 0x0d7d, 0x8a51, ++ 0x0005, 0x2050, 0x0005, 0x0000, 0x001d, 0x0021, 0x0025, 0x0029, ++ 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, 0x0021, 0x0027, 0x002d, ++ 0x0033, 0x0000, 0x0000, 0x0023, 0x0000, 0x0000, 0x1e48, 0x1e44, ++ 0x1e48, 0x1e48, 0x1e52, 0x0000, 0x1e48, 0x1e4f, 0x1e4f, 0x1e4c, ++ 0x1e4f, 0x1e4f, 0x0000, 0x1e52, 0x1e4f, 0x0000, 0x1e4a, 0x1e4a, ++ 0x0000, 0x1e4a, 0x1e52, 0x0000, 0x1e4a, 0x1e50, 0x1e50, 0x1e50, ++ 0x0000, 0x1e50, 0x0000, 0x1e52, 0x1e50, 0x00c6, 0x00d6, 0x0086, ++ 0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, 0x2054, 0x2940, 0xa064, ++ 0x90ec, 0x000f, 0x9084, 0x00ff, 0x9086, 0x0008, 0x1118, 0x2061, ++ 0x1e50, 0x00d0, 0x9de0, 0x1e55, 0x9d86, 0x0007, 0x0130, 0x9d86, ++ 0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, 0xa08c, 0x9422, 0xa090, ++ 0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, 0x0804, 0x2054, 0xa004, ++ 0x9045, 0x0904, 0x2054, 0x08d8, 0x2c05, 0x9005, 0x0904, 0x1f3c, ++ 0xdd9c, 0x1904, 0x1ef8, 0x908a, 0x0036, 0x1a0c, 0x0d7d, 0x9082, ++ 0x001b, 0x0002, 0x1ecd, 0x1ecd, 0x1ecf, 0x1ecd, 0x1ecd, 0x1ecd, ++ 0x1ed5, 0x1ecd, 0x1ecd, 0x1ecd, 0x1edb, 0x1ecd, 0x1ecd, 0x1ecd, ++ 0x1ee1, 0x1ecd, 0x1ecd, 0x1ecd, 0x1ee7, 0x1ecd, 0x1ecd, 0x1ecd, ++ 0x1eed, 0x1ecd, 0x1ecd, 0x1ecd, 0x1ef3, 0x080c, 0x0d7d, 0xa07c, ++ 0x9422, 0xa080, 0x931b, 0x0804, 0x1f32, 0xa08c, 0x9422, 0xa090, ++ 0x931b, 0x0804, 0x1f32, 0xa09c, 0x9422, 0xa0a0, 0x931b, 0x0804, ++ 0x1f32, 0xa0ac, 0x9422, 0xa0b0, 0x931b, 0x0804, 0x1f32, 0xa0bc, ++ 0x9422, 0xa0c0, 0x931b, 0x0804, 0x1f32, 0xa0cc, 0x9422, 0xa0d0, ++ 0x931b, 0x0804, 0x1f32, 0xa0dc, 0x9422, 0xa0e0, 0x931b, 0x04d0, ++ 0x908a, 0x0034, 0x1a0c, 0x0d7d, 0x9082, 0x001b, 0x0002, 0x1f1a, ++ 0x1f18, 0x1f18, 0x1f18, 0x1f18, 0x1f18, 0x1f1f, 0x1f18, 0x1f18, ++ 0x1f18, 0x1f18, 0x1f18, 0x1f24, 0x1f18, 0x1f18, 0x1f18, 0x1f18, ++ 0x1f18, 0x1f29, 0x1f18, 0x1f18, 0x1f18, 0x1f18, 0x1f18, 0x1f2e, ++ 0x080c, 0x0d7d, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0098, 0xa094, ++ 0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, 0x9422, 0xa0b0, 0x931b, ++ 0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, 0x0020, 0xa0dc, 0x9422, ++ 0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, 0x0160, 0x8a51, 0x0904, ++ 0x2054, 0x8c60, 0x0804, 0x1ea4, 0xa004, 0x9045, 0x0904, 0x2054, ++ 0x0804, 0x1e7f, 0x8a51, 0x0904, 0x2054, 0x8c60, 0x2c05, 0x9005, ++ 0x1158, 0xa004, 0x9045, 0x0904, 0x2054, 0xa064, 0x90ec, 0x000f, ++ 0x9de0, 0x1e55, 0x2c05, 0x2060, 0xa880, 0xc0fc, 0xa882, 0x0804, ++ 0x2049, 0x2c05, 0x8422, 0x8420, 0x831a, 0x9399, 0x0000, 0xac2e, ++ 0xab32, 0xdd9c, 0x1904, 0x1fe6, 0x9082, 0x001b, 0x0002, 0x1f82, ++ 0x1f82, 0x1f84, 0x1f82, 0x1f82, 0x1f82, 0x1f92, 0x1f82, 0x1f82, ++ 0x1f82, 0x1fa0, 0x1f82, 0x1f82, 0x1f82, 0x1fae, 0x1f82, 0x1f82, ++ 0x1f82, 0x1fbc, 0x1f82, 0x1f82, 0x1f82, 0x1fca, 0x1f82, 0x1f82, ++ 0x1f82, 0x1fd8, 0x080c, 0x0d7d, 0xa17c, 0x2400, 0x9122, 0xa180, ++ 0x2300, 0x911b, 0x0a0c, 0x0d7d, 0xa074, 0x9420, 0xa078, 0x9319, ++ 0x0804, 0x2044, 0xa18c, 0x2400, 0x9122, 0xa190, 0x2300, 0x911b, ++ 0x0a0c, 0x0d7d, 0xa084, 0x9420, 0xa088, 0x9319, 0x0804, 0x2044, ++ 0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, 0x911b, 0x0a0c, 0x0d7d, ++ 0xa094, 0x9420, 0xa098, 0x9319, 0x0804, 0x2044, 0xa1ac, 0x2400, ++ 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d7d, 0xa0a4, 0x9420, ++ 0xa0a8, 0x9319, 0x0804, 0x2044, 0xa1bc, 0x2400, 0x9122, 0xa1c0, ++ 0x2300, 0x911b, 0x0a0c, 0x0d7d, 0xa0b4, 0x9420, 0xa0b8, 0x9319, ++ 0x0804, 0x2044, 0xa1cc, 0x2400, 0x9122, 0xa1d0, 0x2300, 0x911b, ++ 0x0a0c, 0x0d7d, 0xa0c4, 0x9420, 0xa0c8, 0x9319, 0x0804, 0x2044, ++ 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d7d, ++ 0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, 0x2044, 0x9082, 0x001b, ++ 0x0002, 0x2004, 0x2002, 0x2002, 0x2002, 0x2002, 0x2002, 0x2011, ++ 0x2002, 0x2002, 0x2002, 0x2002, 0x2002, 0x201e, 0x2002, 0x2002, ++ 0x2002, 0x2002, 0x2002, 0x202b, 0x2002, 0x2002, 0x2002, 0x2002, ++ 0x2002, 0x2038, 0x080c, 0x0d7d, 0xa17c, 0x2400, 0x9122, 0xa180, ++ 0x2300, 0x911b, 0x0a0c, 0x0d7d, 0xa06c, 0x9420, 0xa070, 0x9319, ++ 0x0498, 0xa194, 0x2400, 0x9122, 0xa198, 0x2300, 0x911b, 0x0a0c, ++ 0x0d7d, 0xa084, 0x9420, 0xa088, 0x9319, 0x0430, 0xa1ac, 0x2400, ++ 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d7d, 0xa09c, 0x9420, ++ 0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, 0x9122, 0xa1c8, 0x2300, ++ 0x911b, 0x0a0c, 0x0d7d, 0xa0b4, 0x9420, 0xa0b8, 0x9319, 0x0060, ++ 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d7d, ++ 0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, 0xab22, 0xa880, 0xc0fd, ++ 0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x2a00, 0xa816, 0x000e, ++ 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, 0x00de, 0x00ce, 0x9085, ++ 0x0001, 0x0005, 0x00c6, 0x610c, 0x0016, 0x9026, 0x2410, 0x6004, ++ 0x9420, 0x9291, 0x0000, 0x2c04, 0x9210, 0x9ce0, 0x0002, 0x918a, ++ 0x0002, 0x1da8, 0x9284, 0x000f, 0x9405, 0x001e, 0x00ce, 0x0005, ++ 0x7803, 0x0003, 0x780f, 0x0000, 0x6004, 0x7812, 0x2c04, 0x7816, ++ 0x9ce0, 0x0002, 0x918a, 0x0002, 0x1db8, 0x0005, 0x2001, 0x0005, ++ 0x2004, 0xd0bc, 0x190c, 0x0d76, 0xd094, 0x0110, 0x080c, 0x11de, ++ 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200, 0x2071, 0x0260, ++ 0x2069, 0x1800, 0x7817, 0x0000, 0x789b, 0x0814, 0x78a3, 0x0406, ++ 0x789f, 0x0410, 0x2009, 0x013b, 0x200b, 0x0400, 0x781b, 0x0002, ++ 0x783b, 0x001f, 0x7837, 0x0020, 0x7803, 0x1600, 0x012e, 0x0005, ++ 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, 0x21ad, 0x7900, 0xd1dc, ++ 0x1118, 0x9084, 0x0006, 0x001a, 0x9084, 0x000e, 0x0002, 0x20cf, ++ 0x20c7, 0x7ef1, 0x20c7, 0x20c9, 0x20c9, 0x20c9, 0x20c9, 0x7ed7, ++ 0x20c7, 0x20cb, 0x20c7, 0x20c9, 0x20c7, 0x20c9, 0x20c7, 0x080c, ++ 0x0d7d, 0x0031, 0x0020, 0x080c, 0x7ed7, 0x080c, 0x7ef1, 0x0005, ++ 0x0006, 0x0016, 0x0026, 0x080c, 0xe723, 0x7930, 0x9184, 0x0003, ++ 0x01f0, 0x080c, 0xa896, 0x2001, 0x19fa, 0x2004, 0x9005, 0x0180, ++ 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d7d, 0x00c6, 0x2001, ++ 0x19fa, 0x2064, 0x080c, 0xa8b2, 0x080c, 0xc443, 0x00ce, 0x0408, ++ 0x2009, 0x0040, 0x080c, 0x21b0, 0x080c, 0xa8b2, 0x00d0, 0x9184, ++ 0x0014, 0x01a0, 0x6a00, 0x9286, 0x0003, 0x0160, 0x080c, 0x74e9, ++ 0x1138, 0x080c, 0x77ed, 0x080c, 0x6029, 0x080c, 0x741a, 0x0010, ++ 0x080c, 0x5ee4, 0x080c, 0x7f8f, 0x0041, 0x0018, 0x9184, 0x9540, ++ 0x1dc8, 0x002e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x0036, 0x0046, ++ 0x0056, 0x2071, 0x1a6b, 0x080c, 0x1ab5, 0x005e, 0x004e, 0x003e, ++ 0x00ee, 0x0005, 0x0126, 0x2091, 0x2e00, 0x2071, 0x1800, 0x7128, ++ 0x2001, 0x196f, 0x2102, 0x2001, 0x1977, 0x2102, 0x2001, 0x013b, ++ 0x2102, 0x2079, 0x0200, 0x2001, 0x0201, 0x789e, 0x78a3, 0x0200, ++ 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, 0x0005, 0x2320, ++ 0x9182, 0x0204, 0x1230, 0x2011, 0x0008, 0x8423, 0x8423, 0x8423, ++ 0x0488, 0x9182, 0x024c, 0x1240, 0x2011, 0x0007, 0x8403, 0x8003, ++ 0x9400, 0x9400, 0x9420, 0x0430, 0x9182, 0x02bc, 0x1238, 0x2011, ++ 0x0006, 0x8403, 0x8003, 0x9400, 0x9420, 0x00e0, 0x9182, 0x034c, ++ 0x1230, 0x2011, 0x0005, 0x8403, 0x8003, 0x9420, 0x0098, 0x9182, ++ 0x042c, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, 0x0058, 0x9182, ++ 0x059c, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, 0x0018, 0x2011, ++ 0x0002, 0x8423, 0x9482, 0x0228, 0x8002, 0x8020, 0x8301, 0x9402, ++ 0x0110, 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, 0x789a, 0x012e, ++ 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6814, 0x9084, 0xffc0, ++ 0x910d, 0x6916, 0x00de, 0x000e, 0x0005, 0x00d6, 0x2069, 0x0200, ++ 0x9005, 0x6810, 0x0110, 0xc0a5, 0x0008, 0xc0a4, 0x6812, 0x00de, ++ 0x0005, 0x0006, 0x00d6, 0x2069, 0x0200, 0x6810, 0x9084, 0xfff8, ++ 0x910d, 0x6912, 0x00de, 0x000e, 0x0005, 0x7938, 0x080c, 0x0d76, ++ 0x00f6, 0x2079, 0x0200, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0xa001, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, ++ 0xa001, 0x00fe, 0x0005, 0x0126, 0x2091, 0x2800, 0x2061, 0x0100, ++ 0x2071, 0x1800, 0x2009, 0x0000, 0x080c, 0x29f6, 0x080c, 0x2916, ++ 0x080c, 0x2a67, 0x9006, 0x080c, 0x2945, 0x9006, 0x080c, 0x2928, ++ 0x20a9, 0x0012, 0x1d04, 0x21da, 0x2091, 0x6000, 0x1f04, 0x21da, ++ 0x602f, 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, 0x0400, 0x9084, ++ 0xdfff, 0x6052, 0x6224, 0x080c, 0x2a44, 0x080c, 0x2634, 0x2009, ++ 0x00ef, 0x6132, 0x6136, 0x080c, 0x2644, 0x60e7, 0x0000, 0x61ea, ++ 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, 0x0080, ++ 0x602f, 0x0000, 0x6007, 0x349f, 0x00c6, 0x2061, 0x0140, 0x608b, ++ 0x000b, 0x608f, 0x10b8, 0x6093, 0x0000, 0x6097, 0x0198, 0x00ce, ++ 0x6004, 0x9085, 0x8000, 0x6006, 0x60bb, 0x0000, 0x20a9, 0x0018, ++ 0x60bf, 0x0000, 0x1f04, 0x2218, 0x60bb, 0x0000, 0x60bf, 0x0108, ++ 0x60bf, 0x0012, 0x60bf, 0x0405, 0x60bf, 0x0014, 0x60bf, 0x0320, ++ 0x60bf, 0x0018, 0x601b, 0x00f0, 0x601f, 0x001e, 0x600f, 0x006b, ++ 0x602b, 0x402c, 0x012e, 0x0005, 0x00f6, 0x2079, 0x0140, 0x78c3, ++ 0x0080, 0x78c3, 0x0083, 0x78c3, 0x0000, 0x00fe, 0x0005, 0x2001, ++ 0x1835, 0x2003, 0x0000, 0x2001, 0x1834, 0x2003, 0x0001, 0x0005, ++ 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, 0x6028, ++ 0x910c, 0x0066, 0x2031, 0x1837, 0x2634, 0x96b4, 0x0028, 0x006e, ++ 0x1138, 0x6020, 0xd1bc, 0x0120, 0xd0bc, 0x1168, 0xd0b4, 0x1198, ++ 0x9184, 0x5e2c, 0x1118, 0x9184, 0x0007, 0x00aa, 0x9195, 0x0004, ++ 0x9284, 0x0007, 0x0082, 0x0016, 0x2001, 0x0387, 0x200c, 0xd1a4, ++ 0x001e, 0x0d70, 0x0c98, 0x0016, 0x2001, 0x0387, 0x200c, 0xd1b4, ++ 0x001e, 0x0d30, 0x0c58, 0x2286, 0x2283, 0x2283, 0x2283, 0x2285, ++ 0x2283, 0x2283, 0x2283, 0x080c, 0x0d7d, 0x0029, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0x0005, 0x00a6, 0x6124, 0x6028, 0xd09c, 0x0118, ++ 0xd19c, 0x1904, 0x2500, 0xd1f4, 0x190c, 0x0d76, 0x080c, 0x74e9, ++ 0x0904, 0x22e3, 0x080c, 0xcf52, 0x1120, 0x7000, 0x9086, 0x0003, ++ 0x0580, 0x6024, 0x9084, 0x1800, 0x0560, 0x080c, 0x750c, 0x0118, ++ 0x080c, 0x74fa, 0x1530, 0x2011, 0x0020, 0x080c, 0x2a44, 0x6043, ++ 0x0000, 0x080c, 0xcf52, 0x0168, 0x080c, 0x750c, 0x1150, 0x2001, ++ 0x19a7, 0x2003, 0x0001, 0x6027, 0x1800, 0x080c, 0x735f, 0x0804, ++ 0x2503, 0x70a4, 0x9005, 0x1150, 0x70a7, 0x0001, 0x00d6, 0x2069, ++ 0x0140, 0x080c, 0x7540, 0x00de, 0x1904, 0x2503, 0x080c, 0x77f7, ++ 0x0428, 0x080c, 0x750c, 0x1590, 0x6024, 0x9084, 0x1800, 0x1108, ++ 0x0468, 0x080c, 0x77f7, 0x080c, 0x77ed, 0x080c, 0x6029, 0x080c, ++ 0x741a, 0x0804, 0x2500, 0xd1ac, 0x1508, 0x6024, 0xd0dc, 0x1170, ++ 0xd0e4, 0x1178, 0xd0d4, 0x1190, 0xd0cc, 0x0130, 0x7098, 0x9086, ++ 0x0028, 0x1110, 0x080c, 0x76ce, 0x0804, 0x2500, 0x080c, 0x77f2, ++ 0x0048, 0x2001, 0x197d, 0x2003, 0x0002, 0x0020, 0x080c, 0x762b, ++ 0x0804, 0x2500, 0x080c, 0x7771, 0x0804, 0x2500, 0x6220, 0xd1bc, ++ 0x0138, 0xd2bc, 0x1904, 0x2565, 0xd2b4, 0x1904, 0x2577, 0x0000, ++ 0xd1ac, 0x0904, 0x240d, 0x0036, 0x6328, 0xc3bc, 0x632a, 0x003e, ++ 0x080c, 0x74e9, 0x11d0, 0x2011, 0x0020, 0x080c, 0x2a44, 0x0006, ++ 0x0026, 0x0036, 0x080c, 0x7503, 0x1158, 0x080c, 0x77ed, 0x080c, ++ 0x6029, 0x080c, 0x741a, 0x003e, 0x002e, 0x000e, 0x00ae, 0x0005, ++ 0x003e, 0x002e, 0x000e, 0x080c, 0x74bd, 0x0016, 0x0046, 0x00c6, ++ 0x644c, 0x9486, 0xf0f0, 0x1138, 0x2061, 0x0100, 0x644a, 0x6043, ++ 0x0090, 0x6043, 0x0010, 0x74da, 0x948c, 0xff00, 0x7038, 0xd084, ++ 0x0178, 0x9186, 0xf800, 0x1160, 0x7048, 0xd084, 0x1148, 0xc085, ++ 0x704a, 0x0036, 0x2418, 0x2011, 0x8016, 0x080c, 0x4b07, 0x003e, ++ 0x080c, 0xcf4b, 0x1904, 0x23e4, 0x9196, 0xff00, 0x05a8, 0x7060, ++ 0x9084, 0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, ++ 0xd184, 0x1550, 0x080c, 0x3368, 0x0128, 0xc18d, 0x7132, 0x080c, ++ 0x6a63, 0x1510, 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, ++ 0xff00, 0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x23e4, ++ 0x7038, 0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, ++ 0x23e4, 0xc1ad, 0x2102, 0x0036, 0x73d8, 0x2011, 0x8013, 0x080c, ++ 0x4b07, 0x003e, 0x0804, 0x23e4, 0x7038, 0xd08c, 0x1140, 0x2001, ++ 0x180c, 0x200c, 0xd1ac, 0x1904, 0x23e4, 0xc1ad, 0x2102, 0x0036, ++ 0x73d8, 0x2011, 0x8013, 0x080c, 0x4b07, 0x003e, 0x7130, 0xc185, ++ 0x7132, 0x2011, 0x1848, 0x220c, 0xd1a4, 0x01f0, 0x0016, 0x2009, ++ 0x0001, 0x2011, 0x0100, 0x080c, 0x88ec, 0x2019, 0x000e, 0x00c6, ++ 0x2061, 0x0000, 0x080c, 0xe239, 0x00ce, 0x9484, 0x00ff, 0x9080, ++ 0x3374, 0x200d, 0x918c, 0xff00, 0x810f, 0x2120, 0x9006, 0x2009, ++ 0x000e, 0x080c, 0xe2c9, 0x001e, 0x0016, 0x2009, 0x0002, 0x2019, ++ 0x0004, 0x080c, 0x31a6, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9, ++ 0x007f, 0x900e, 0x080c, 0x6625, 0x1110, 0x080c, 0x6043, 0x8108, ++ 0x1f04, 0x23da, 0x00be, 0x015e, 0x00ce, 0x004e, 0x080c, 0xa896, ++ 0x080c, 0xab5e, 0x080c, 0xa8b2, 0x60e3, 0x0000, 0x001e, 0x2001, ++ 0x1800, 0x2014, 0x9296, 0x0004, 0x1170, 0xd19c, 0x11b0, 0x2011, ++ 0x180c, 0x2214, 0xd29c, 0x1120, 0x6204, 0x9295, 0x0002, 0x6206, ++ 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x1826, 0x2003, ++ 0x0000, 0x2011, 0x0020, 0x080c, 0x2a44, 0xd194, 0x0904, 0x2500, ++ 0x0016, 0x080c, 0xa896, 0x6220, 0xd2b4, 0x0904, 0x249b, 0x080c, ++ 0x86f6, 0x080c, 0x9e32, 0x2011, 0x0004, 0x080c, 0x2a44, 0x00f6, ++ 0x2019, 0x19f3, 0x2304, 0x907d, 0x0904, 0x2468, 0x7804, 0x9086, ++ 0x0032, 0x15f0, 0x00d6, 0x00c6, 0x00e6, 0x0096, 0x2069, 0x0140, ++ 0x782c, 0x685e, 0x7808, 0x685a, 0x6043, 0x0002, 0x2001, 0x0003, ++ 0x8001, 0x1df0, 0x6043, 0x0000, 0x2001, 0x003c, 0x8001, 0x1df0, ++ 0x080c, 0x2a1a, 0x2001, 0x001e, 0x8001, 0x0240, 0x20a9, 0x0009, ++ 0x080c, 0x29d1, 0x6904, 0xd1dc, 0x1140, 0x0cb0, 0x2001, 0x0100, ++ 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x080c, 0x95de, 0x080c, ++ 0xa8b2, 0x7814, 0x2048, 0xa867, 0x0103, 0x2f60, 0x080c, 0xabed, ++ 0x009e, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x00ae, 0x0005, ++ 0x00fe, 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, 0x0110, ++ 0x080c, 0x2a1a, 0x00de, 0x00c6, 0x2061, 0x19e7, 0x6034, 0x080c, ++ 0xcf52, 0x0120, 0x909a, 0x0003, 0x1258, 0x0018, 0x909a, 0x00c8, ++ 0x1238, 0x8000, 0x6036, 0x00ce, 0x080c, 0x9e0a, 0x0804, 0x24fd, ++ 0x2061, 0x0100, 0x62c0, 0x080c, 0xa7cc, 0x2019, 0x19f3, 0x2304, ++ 0x9065, 0x0130, 0x6003, 0x0001, 0x2009, 0x0027, 0x080c, 0xac8c, ++ 0x00ce, 0x0804, 0x24fd, 0xd2bc, 0x0904, 0x24e0, 0x080c, 0x8703, ++ 0x2011, 0x0004, 0x080c, 0x2a44, 0x00d6, 0x2069, 0x0140, 0x6804, ++ 0x9084, 0x4000, 0x0110, 0x080c, 0x2a1a, 0x00de, 0x00c6, 0x2061, ++ 0x19e7, 0x6050, 0x080c, 0xcf52, 0x0120, 0x909a, 0x0003, 0x1668, ++ 0x0018, 0x909a, 0x00c8, 0x1648, 0x8000, 0x6052, 0x604c, 0x00ce, ++ 0x9005, 0x05d8, 0x2009, 0x07d0, 0x080c, 0x86fb, 0x9080, 0x0008, ++ 0x2004, 0x9086, 0x0006, 0x1138, 0x2009, 0x1984, 0x2011, 0x0012, ++ 0x080c, 0x2a53, 0x0450, 0x9080, 0x0008, 0x2004, 0x9086, 0x0009, ++ 0x0d98, 0x2009, 0x1984, 0x2011, 0x0016, 0x080c, 0x2a53, 0x00e8, ++ 0x2011, 0x0004, 0x080c, 0x2a44, 0x00c0, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0xa118, 0x003e, 0x2019, 0x19fa, 0x2304, 0x9065, 0x0160, ++ 0x2009, 0x004f, 0x6020, 0x9086, 0x0009, 0x1110, 0x2009, 0x004f, ++ 0x6003, 0x0003, 0x080c, 0xac8c, 0x00ce, 0x080c, 0xa8b2, 0x001e, ++ 0xd19c, 0x0904, 0x255e, 0x7038, 0xd0ac, 0x1538, 0x0016, 0x0156, ++ 0x2011, 0x0008, 0x080c, 0x2a44, 0x6050, 0xc0e5, 0x6052, 0x20a9, ++ 0x0367, 0x1f04, 0x252b, 0x1d04, 0x2513, 0x080c, 0x872a, 0x6020, ++ 0xd09c, 0x1db8, 0x00f6, 0x2079, 0x0100, 0x080c, 0x2981, 0x00fe, ++ 0x1d80, 0x6050, 0xc0e4, 0x6052, 0x2011, 0x0008, 0x080c, 0x2a44, ++ 0x015e, 0x001e, 0x0498, 0x015e, 0x001e, 0x0016, 0x6028, 0xc09c, ++ 0x602a, 0x080c, 0xa896, 0x080c, 0xab5e, 0x080c, 0xa8b2, 0x60e3, ++ 0x0000, 0x080c, 0xe702, 0x080c, 0xe71d, 0x080c, 0x56de, 0xd0fc, ++ 0x1138, 0x080c, 0xcf4b, 0x1120, 0x9085, 0x0001, 0x080c, 0x7530, ++ 0x9006, 0x080c, 0x2a0a, 0x2009, 0x0002, 0x080c, 0x29f6, 0x00e6, ++ 0x2071, 0x1800, 0x7003, 0x0004, 0x080c, 0x0eb4, 0x00ee, 0x2011, ++ 0x0008, 0x080c, 0x2a44, 0x080c, 0x0bc3, 0x001e, 0x918c, 0xffd0, ++ 0x2110, 0x080c, 0x2a44, 0x00ae, 0x0005, 0x0016, 0x2001, 0x0387, ++ 0x200c, 0xd1a4, 0x001e, 0x0904, 0x2310, 0x0016, 0x2009, 0x2571, ++ 0x00c0, 0x2001, 0x0387, 0x2003, 0x1000, 0x001e, 0x0c38, 0x0016, ++ 0x2001, 0x0387, 0x200c, 0xd1b4, 0x001e, 0x0904, 0x2310, 0x0016, ++ 0x2009, 0x2583, 0x0030, 0x2001, 0x0387, 0x2003, 0x4000, 0x001e, ++ 0x08a8, 0x6028, 0xc0bc, 0x602a, 0x2001, 0x0156, 0x2003, 0xbc91, ++ 0x8000, 0x2003, 0xffff, 0x6043, 0x0001, 0x080c, 0x29f0, 0x2011, ++ 0x0080, 0x080c, 0x2a44, 0x6017, 0x0000, 0x6043, 0x0000, 0x0817, ++ 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x00f6, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1800, 0x71d0, 0x70d2, 0x9116, 0x0904, 0x25f3, ++ 0x81ff, 0x01a0, 0x2009, 0x0000, 0x080c, 0x29f6, 0x2011, 0x8011, ++ 0x2019, 0x010e, 0x231c, 0x939e, 0x0007, 0x1118, 0x2019, 0x0001, ++ 0x0010, 0x2019, 0x0000, 0x080c, 0x4b07, 0x0468, 0x2001, 0x19a8, ++ 0x200c, 0x81ff, 0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, 0x0118, ++ 0x2019, 0x0003, 0x0008, 0x2118, 0x2011, 0x8012, 0x080c, 0x4b07, ++ 0x080c, 0x0eb4, 0x080c, 0x56de, 0xd0fc, 0x11a8, 0x080c, 0xcf4b, ++ 0x1190, 0x00c6, 0x080c, 0x268f, 0x080c, 0xa896, 0x080c, 0xa073, ++ 0x080c, 0xa8b2, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0002, ++ 0x080c, 0x31a6, 0x00ce, 0x012e, 0x00fe, 0x00ee, 0x003e, 0x002e, ++ 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, ++ 0xff00, 0x11f0, 0x2011, 0x1837, 0x2214, 0xd2ac, 0x11c8, 0x81ff, ++ 0x01e8, 0x2011, 0x181f, 0x2204, 0x9106, 0x1190, 0x2011, 0x1820, ++ 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, 0x9206, 0x1148, 0x2011, ++ 0x1820, 0x2214, 0x9294, 0x00ff, 0x9584, 0x00ff, 0x9206, 0x1120, ++ 0x2500, 0x080c, 0x81ff, 0x0048, 0x9584, 0x00ff, 0x9080, 0x3374, ++ 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005, 0x9080, 0x3374, ++ 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069, 0x0140, 0x2001, ++ 0x1818, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006, 0x6852, 0x6856, ++ 0x1f04, 0x263f, 0x00de, 0x0005, 0x0006, 0x00d6, 0x0026, 0x2069, ++ 0x0140, 0x2001, 0x1818, 0x2102, 0x8114, 0x8214, 0x8214, 0x8214, ++ 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff, 0x1128, 0x9184, ++ 0x000f, 0x9080, 0xe731, 0x2005, 0x6856, 0x8211, 0x1f04, 0x2654, ++ 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061, 0x1800, 0x6030, ++ 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce, 0x0005, 0x0156, ++ 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140, 0x6980, 0x9116, ++ 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8, 0x2001, 0x0402, ++ 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04, 0x2684, 0x680f, ++ 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e, 0x0005, 0x080c, ++ 0x56da, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006, 0x0046, 0x2020, ++ 0x2009, 0x002e, 0x080c, 0xe2c9, 0x004e, 0x0005, 0x00f6, 0x0016, ++ 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904, 0x26fb, 0x080c, ++ 0x2971, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600, 0x1120, 0x2011, ++ 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120, 0x2011, 0x8000, ++ 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016, 0x2009, 0x0001, ++ 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009, 0x0002, 0x00b0, ++ 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004, 0x0078, 0x908e, ++ 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040, 0x9084, 0x0700, ++ 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058, 0x2300, 0x9080, ++ 0x0020, 0x2018, 0x080c, 0x9166, 0x928c, 0xff00, 0x0110, 0x2011, ++ 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2, 0x2009, 0x0138, ++ 0x220a, 0x080c, 0x74e9, 0x1118, 0x2009, 0x196d, 0x220a, 0x002e, ++ 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, 0x0126, 0x2091, ++ 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, 0x200c, 0x8000, ++ 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0d76, 0x002e, 0x001e, ++ 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004, 0xd0dc, 0x0168, ++ 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e, 0x004c, 0x1128, ++ 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e, 0x2001, 0x0227, ++ 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x2001, 0x0226, ++ 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, 0x0005, 0x0018, ++ 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000, 0x1800, 0x0156, ++ 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x1990, 0x2004, 0x908a, ++ 0x0007, 0x1a0c, 0x0d7d, 0x0033, 0x00ee, 0x002e, 0x001e, 0x000e, ++ 0x015e, 0x0005, 0x2759, 0x2777, 0x279b, 0x279d, 0x27c6, 0x27c8, ++ 0x27ca, 0x2001, 0x0001, 0x080c, 0x25a0, 0x080c, 0x29bb, 0x2001, ++ 0x1992, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7, 0x782a, 0x9006, ++ 0x20a9, 0x0009, 0x080c, 0x298d, 0x2001, 0x1990, 0x2003, 0x0006, ++ 0x2009, 0x001e, 0x2011, 0x27cb, 0x080c, 0x8708, 0x0005, 0x2009, ++ 0x1995, 0x200b, 0x0000, 0x2001, 0x199a, 0x2003, 0x0036, 0x2001, ++ 0x1999, 0x2003, 0x002a, 0x2001, 0x1992, 0x2003, 0x0001, 0x9006, ++ 0x080c, 0x2928, 0x2001, 0xffff, 0x20a9, 0x0009, 0x080c, 0x298d, ++ 0x2001, 0x1990, 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x27cb, ++ 0x080c, 0x8708, 0x0005, 0x080c, 0x0d7d, 0x2001, 0x199a, 0x2003, ++ 0x0036, 0x2001, 0x1992, 0x2003, 0x0003, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x2928, 0x2001, 0x1996, 0x2003, 0x0000, 0x2001, 0xffff, 0x20a9, ++ 0x0009, 0x080c, 0x298d, 0x2001, 0x1990, 0x2003, 0x0006, 0x2009, ++ 0x001e, 0x2011, 0x27cb, 0x080c, 0x8708, 0x0005, 0x080c, 0x0d7d, ++ 0x080c, 0x0d7d, 0x0005, 0x0006, 0x0016, 0x0026, 0x00e6, 0x00f6, ++ 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, 0x2001, 0x1992, ++ 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d7d, 0x0043, 0x012e, 0x015e, ++ 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, 0x27ed, 0x280d, ++ 0x284d, 0x287d, 0x28a1, 0x28b1, 0x28b3, 0x080c, 0x2981, 0x11b0, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1998, 0x2104, 0x7a38, ++ 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d, 0x0008, 0xc085, ++ 0x200a, 0x2001, 0x1990, 0x2003, 0x0001, 0x0030, 0x080c, 0x28d7, ++ 0x2001, 0xffff, 0x080c, 0x2768, 0x0005, 0x080c, 0x28b5, 0x05e0, ++ 0x2009, 0x1999, 0x2104, 0x8001, 0x200a, 0x080c, 0x2981, 0x1178, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294, 0x0005, 0x9296, ++ 0x0005, 0x0518, 0x2009, 0x1998, 0x2104, 0xc085, 0x200a, 0x2009, ++ 0x1995, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0118, 0x080c, ++ 0x28bd, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, ++ 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x2945, ++ 0x2001, 0x1992, 0x2003, 0x0002, 0x0028, 0x2001, 0x1990, 0x2003, ++ 0x0003, 0x0010, 0x080c, 0x278a, 0x0005, 0x080c, 0x28b5, 0x0560, ++ 0x2009, 0x1999, 0x2104, 0x8001, 0x200a, 0x080c, 0x2981, 0x1168, ++ 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x1990, 0x2003, 0x0003, ++ 0x2001, 0x1991, 0x2003, 0x0000, 0x00b8, 0x2009, 0x1999, 0x2104, ++ 0x9005, 0x1118, 0x080c, 0x28fa, 0x0010, 0x080c, 0x28ca, 0x080c, ++ 0x28bd, 0x2009, 0x1995, 0x200b, 0x0000, 0x2001, 0x1992, 0x2003, ++ 0x0001, 0x080c, 0x278a, 0x0000, 0x0005, 0x04b9, 0x0508, 0x080c, ++ 0x2981, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1996, ++ 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108, 0x0078, 0x2001, ++ 0x199b, 0x2003, 0x000a, 0x2009, 0x1998, 0x2104, 0xc0fd, 0x200a, ++ 0x0038, 0x0419, 0x2001, 0x1992, 0x2003, 0x0004, 0x080c, 0x27b5, ++ 0x0005, 0x0099, 0x0168, 0x080c, 0x2981, 0x1138, 0x7850, 0x9084, ++ 0xefff, 0x7852, 0x080c, 0x27a1, 0x0018, 0x0079, 0x080c, 0x27b5, ++ 0x0005, 0x080c, 0x0d7d, 0x080c, 0x0d7d, 0x2009, 0x199a, 0x2104, ++ 0x8001, 0x200a, 0x090c, 0x2916, 0x0005, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x2945, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, 0x0110, ++ 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x2928, 0x0005, 0x2009, ++ 0x1995, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, 0x0108, 0x0068, ++ 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, 0x0006, 0x0110, ++ 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, 0x7a38, 0x9294, 0x0005, ++ 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, ++ 0x2945, 0x0005, 0x0086, 0x2001, 0x1998, 0x2004, 0x9084, 0x7fff, ++ 0x090c, 0x0d7d, 0x2009, 0x1997, 0x2144, 0x8846, 0x280a, 0x9844, ++ 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, 0x080c, 0x0d7d, 0x9006, ++ 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, 0x0005, 0x0006, 0x0156, ++ 0x2001, 0x1990, 0x20a9, 0x0009, 0x2003, 0x0000, 0x8000, 0x1f04, ++ 0x291c, 0x2001, 0x1997, 0x2003, 0x8000, 0x015e, 0x000e, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0158, 0x7838, 0x9084, ++ 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, 0x199d, 0x210c, 0x795a, ++ 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0006, 0x783a, 0x2009, ++ 0x199e, 0x210c, 0x795a, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0100, ++ 0x9085, 0x0000, 0x0158, 0x7838, 0x9084, 0xfffa, 0x9085, 0x0004, ++ 0x783a, 0x7850, 0x9084, 0xfff0, 0x7852, 0x00c8, 0x7838, 0x9084, ++ 0xfffb, 0x9085, 0x0005, 0x783a, 0x7850, 0x9084, 0xfff0, 0x0016, ++ 0x2009, 0x0003, 0x210c, 0x918c, 0x0600, 0x918e, 0x0400, 0x0118, ++ 0x9085, 0x000a, 0x0010, 0x9085, 0x0000, 0x001e, 0x7852, 0x00fe, ++ 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0007, 0x000e, ++ 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0x9082, 0x0009, 0x000e, ++ 0x0005, 0x0156, 0x20a9, 0x0064, 0x7820, 0x080c, 0x29f0, 0xd09c, ++ 0x1110, 0x1f04, 0x2984, 0x015e, 0x0005, 0x0126, 0x0016, 0x0006, ++ 0x2091, 0x8000, 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, 0x783b, ++ 0x0007, 0x0090, 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, 0x0060, ++ 0x9186, 0x0002, 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, 0x0003, ++ 0x1118, 0x783b, 0x0004, 0x0000, 0x0006, 0x1d04, 0x29ad, 0x080c, ++ 0x872a, 0x1f04, 0x29ad, 0x7850, 0x9085, 0x1000, 0x7852, 0x000e, ++ 0x001e, 0x012e, 0x0005, 0x080c, 0x2aab, 0x0005, 0x0006, 0x0156, ++ 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac, 0x1100, ++ 0x7854, 0xd08c, 0x1110, 0x1f04, 0x29c8, 0x00fe, 0x015e, 0x000e, ++ 0x0005, 0x1d04, 0x29d1, 0x080c, 0x872a, 0x1f04, 0x29d1, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, ++ 0x0006, 0x2001, 0x199c, 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, ++ 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, 0x2001, ++ 0x19a8, 0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, ++ 0x0140, 0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, ++ 0x200a, 0x0005, 0x0016, 0x0026, 0x080c, 0x7503, 0x0108, 0xc0bc, ++ 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, 0x220a, 0x002e, ++ 0x001e, 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, ++ 0x0001, 0x9285, 0x1000, 0x200a, 0x220a, 0x002e, 0x001e, 0x0005, ++ 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, ++ 0x220a, 0x002e, 0x001e, 0x0005, 0x0006, 0x0016, 0x2009, 0x0140, ++ 0x2104, 0x1128, 0x080c, 0x7503, 0x0110, 0xc0bc, 0x0008, 0xc0bd, ++ 0x200a, 0x001e, 0x000e, 0x0005, 0x00f6, 0x2079, 0x0380, 0x7843, ++ 0x0101, 0x7844, 0xd084, 0x1de8, 0x2001, 0x0109, 0x2202, 0x7843, ++ 0x0100, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0380, 0x7843, 0x0202, ++ 0x7844, 0xd08c, 0x1de8, 0x2079, 0x0100, 0x7814, 0x9104, 0x9205, ++ 0x7a16, 0x2079, 0x0380, 0x7843, 0x0200, 0x00fe, 0x0005, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x2061, 0x0100, 0x6050, 0x9084, 0xfbff, ++ 0x9085, 0x0040, 0x6052, 0x20a9, 0x0002, 0x080c, 0x29d1, 0x6050, ++ 0x9085, 0x0400, 0x9084, 0xff9f, 0x6052, 0x20a9, 0x0005, 0x080c, ++ 0x29d1, 0x6054, 0xd0bc, 0x090c, 0x0d7d, 0x20a9, 0x0005, 0x080c, ++ 0x29d1, 0x6054, 0xd0ac, 0x090c, 0x0d7d, 0x2009, 0x19af, 0x9084, ++ 0x7e00, 0x8007, 0x8004, 0x8004, 0x200a, 0x9085, 0x0000, 0x605a, ++ 0x2009, 0x199d, 0x2011, 0x199e, 0x6358, 0x939c, 0x38df, 0x2320, ++ 0x939d, 0x0000, 0x94a5, 0x0000, 0x230a, 0x2412, 0x00ce, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x0006, 0x00c6, 0x2061, 0x0100, 0x6050, ++ 0xc0cd, 0x6052, 0x00ce, 0x000e, 0x0005, 0x2fb1, 0x2fb1, 0x2bb5, ++ 0x2bb5, 0x2bc1, 0x2bc1, 0x2bcd, 0x2bcd, 0x2bdb, 0x2bdb, 0x2be7, ++ 0x2be7, 0x2bf5, 0x2bf5, 0x2c03, 0x2c03, 0x2c15, 0x2c15, 0x2c21, ++ 0x2c21, 0x2c2f, 0x2c2f, 0x2c4d, 0x2c4d, 0x2c6d, 0x2c6d, 0x2c3d, ++ 0x2c3d, 0x2c5d, 0x2c5d, 0x2c7b, 0x2c7b, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c8d, 0x2c8d, 0x2c99, ++ 0x2c99, 0x2ca7, 0x2ca7, 0x2cb5, 0x2cb5, 0x2cc5, 0x2cc5, 0x2cd3, ++ 0x2cd3, 0x2ce3, 0x2ce3, 0x2cf3, 0x2cf3, 0x2d05, 0x2d05, 0x2d13, ++ 0x2d13, 0x2d23, 0x2d23, 0x2d45, 0x2d45, 0x2d69, 0x2d69, 0x2d33, ++ 0x2d33, 0x2d57, 0x2d57, 0x2d79, 0x2d79, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2d8d, 0x2d8d, 0x2d99, ++ 0x2d99, 0x2da7, 0x2da7, 0x2db5, 0x2db5, 0x2dc5, 0x2dc5, 0x2dd3, ++ 0x2dd3, 0x2de3, 0x2de3, 0x2df3, 0x2df3, 0x2e05, 0x2e05, 0x2e13, ++ 0x2e13, 0x2e23, 0x2e23, 0x2e33, 0x2e33, 0x2e45, 0x2e45, 0x2e55, ++ 0x2e55, 0x2e67, 0x2e67, 0x2e79, 0x2e79, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2e8d, 0x2e8d, 0x2e9b, ++ 0x2e9b, 0x2eab, 0x2eab, 0x2ebb, 0x2ebb, 0x2ecd, 0x2ecd, 0x2edd, ++ 0x2edd, 0x2eef, 0x2eef, 0x2f01, 0x2f01, 0x2f15, 0x2f15, 0x2f25, ++ 0x2f25, 0x2f37, 0x2f37, 0x2f49, 0x2f49, 0x2f5d, 0x2f5d, 0x2f6e, ++ 0x2f6e, 0x2f81, 0x2f81, 0x2f94, 0x2f94, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, ++ 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x2c13, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2248, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x207e, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, ++ 0x2248, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x2248, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0x2248, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0xa001, 0x0cf0, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x13a3, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x207e, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, ++ 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x13a3, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x2248, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x26fe, 0x080c, 0x207e, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0x207e, 0x080c, 0x2248, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x2248, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, ++ 0x2248, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0x207e, 0x080c, 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x26fe, 0x080c, 0x207e, 0x080c, 0x13a3, 0x080c, 0x20a8, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x13a3, 0x080c, 0x20a8, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0xa8fc, 0x080c, 0x2248, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x207e, 0x080c, 0xa8fc, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, ++ 0xa8fc, 0x080c, 0x2248, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, 0x2248, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x080c, 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x207e, 0x080c, 0xa8fc, 0x080c, 0x13a3, 0x080c, 0x20a8, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, 0x2248, 0x080c, ++ 0x13a3, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, ++ 0xa8fc, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, ++ 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, ++ 0xa8fc, 0x080c, 0x2248, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x080c, 0x2248, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x26fe, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, 0x20a8, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x080c, 0x20a8, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x080c, 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, ++ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, ++ 0x26fe, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, 0x13a3, 0x0804, ++ 0x2fa9, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, 0xa8fc, 0x080c, ++ 0x2248, 0x080c, 0x13a3, 0x0804, 0x2fa9, 0x0106, 0x0006, 0x0126, ++ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, ++ 0xa8fc, 0x080c, 0x13a3, 0x080c, 0x20a8, 0x04d8, 0x0106, 0x0006, ++ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, ++ 0x080c, 0xa8fc, 0x080c, 0x2248, 0x080c, 0x13a3, 0x080c, 0x20a8, ++ 0x0440, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, 0x080c, 0x13a3, 0x080c, ++ 0xa8fc, 0x080c, 0x20a8, 0x00a8, 0x0106, 0x0006, 0x0126, 0x01c6, ++ 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x26fe, 0x080c, 0x207e, ++ 0x080c, 0xa8fc, 0x080c, 0x2248, 0x080c, 0x13a3, 0x080c, 0x20a8, ++ 0x0000, 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, 0x000e, ++ 0x010e, 0x000d, 0x00b6, 0x00c6, 0x0026, 0x0046, 0x9026, 0x080c, ++ 0x6a29, 0x1904, 0x30c2, 0x72dc, 0x2001, 0x197c, 0x2004, 0x9005, ++ 0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x30c2, ++ 0x080c, 0x30c7, 0x0804, 0x30c2, 0xd2cc, 0x1904, 0x30c2, 0x080c, ++ 0x74e9, 0x1120, 0x70af, 0xffff, 0x0804, 0x30c2, 0xd294, 0x0120, ++ 0x70af, 0xffff, 0x0804, 0x30c2, 0x080c, 0x3363, 0x0160, 0x080c, ++ 0xcf52, 0x0128, 0x2001, 0x1818, 0x203c, 0x0804, 0x304f, 0x70af, ++ 0xffff, 0x0804, 0x30c2, 0x2001, 0x1818, 0x203c, 0x7294, 0xd284, ++ 0x0904, 0x304f, 0xd28c, 0x1904, 0x304f, 0x0036, 0x73ac, 0x938e, ++ 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1d80, 0x2c04, ++ 0x938c, 0x0001, 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084, ++ 0x00ff, 0x970e, 0x05d0, 0x908e, 0x0000, 0x05b8, 0x908e, 0x00ff, ++ 0x1150, 0x7230, 0xd284, 0x15b0, 0x7294, 0xc28d, 0x7296, 0x70af, ++ 0xffff, 0x003e, 0x04a0, 0x900e, 0x080c, 0x25fb, 0x080c, 0x65c4, ++ 0x1538, 0x9006, 0xb8bb, 0x0520, 0xb8ac, 0x9005, 0x0148, 0x00c6, ++ 0x2060, 0x080c, 0x8b90, 0x00ce, 0x090c, 0x8f34, 0xb8af, 0x0000, ++ 0x080c, 0x6a6b, 0x1168, 0x7030, 0xd08c, 0x0130, 0xb800, 0xd0bc, ++ 0x0138, 0x080c, 0x6914, 0x0120, 0x080c, 0x30e0, 0x0148, 0x0028, ++ 0x080c, 0x3238, 0x080c, 0x310c, 0x0118, 0x8318, 0x0804, 0x2ffc, ++ 0x73ae, 0x0010, 0x70af, 0xffff, 0x003e, 0x0804, 0x30c2, 0x9780, ++ 0x3374, 0x203d, 0x97bc, 0xff00, 0x873f, 0x2041, 0x007e, 0x70ac, ++ 0x9096, 0xffff, 0x1118, 0x900e, 0x28a8, 0x0050, 0x9812, 0x0220, ++ 0x2008, 0x9802, 0x20a8, 0x0020, 0x70af, 0xffff, 0x0804, 0x30c2, ++ 0x2700, 0x0156, 0x0016, 0x9106, 0x0904, 0x30b7, 0xc484, 0x080c, ++ 0x6625, 0x0148, 0x080c, 0xcf52, 0x1904, 0x30b7, 0x080c, 0x65c4, ++ 0x1904, 0x30bf, 0x0008, 0xc485, 0xb8bb, 0x0520, 0xb8ac, 0x9005, ++ 0x0148, 0x00c6, 0x2060, 0x080c, 0x8b90, 0x00ce, 0x090c, 0x8f34, ++ 0xb8af, 0x0000, 0x080c, 0x6a6b, 0x1130, 0x7030, 0xd08c, 0x01f8, ++ 0xb800, 0xd0bc, 0x11e0, 0x7294, 0xd28c, 0x0180, 0x080c, 0x6a6b, ++ 0x9082, 0x0006, 0x02e0, 0xd484, 0x1118, 0x080c, 0x65e9, 0x0028, ++ 0x080c, 0x32d1, 0x01a0, 0x080c, 0x32fc, 0x0088, 0x080c, 0x3238, ++ 0x080c, 0xcf52, 0x1160, 0x080c, 0x310c, 0x0188, 0x0040, 0x080c, ++ 0xcf52, 0x1118, 0x080c, 0x32d1, 0x0110, 0x0451, 0x0140, 0x001e, ++ 0x8108, 0x015e, 0x1f04, 0x3068, 0x70af, 0xffff, 0x0018, 0x001e, ++ 0x015e, 0x71ae, 0x004e, 0x002e, 0x00ce, 0x00be, 0x0005, 0x00c6, ++ 0x0016, 0x70af, 0x0001, 0x2009, 0x007e, 0x080c, 0x65c4, 0x1168, ++ 0xb813, 0x00ff, 0xb817, 0xfffe, 0x080c, 0x3238, 0x04a9, 0x0128, ++ 0x70dc, 0xc0bd, 0x70de, 0x080c, 0xcc9f, 0x001e, 0x00ce, 0x0005, ++ 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001, 0x184c, 0x2004, 0x9084, ++ 0x00ff, 0xb842, 0x080c, 0xac5f, 0x01d0, 0x2b00, 0x6012, 0x080c, ++ 0xcccc, 0x6023, 0x0001, 0x9006, 0x080c, 0x6561, 0x2001, 0x0000, ++ 0x080c, 0x6575, 0x0126, 0x2091, 0x8000, 0x70a8, 0x8000, 0x70aa, ++ 0x012e, 0x2009, 0x0004, 0x080c, 0xac8c, 0x9085, 0x0001, 0x00ce, ++ 0x00de, 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, ++ 0x2001, 0x184c, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0xac5f, ++ 0x0548, 0x2b00, 0x6012, 0xb800, 0xc0c4, 0xb802, 0xb8a0, 0x9086, ++ 0x007e, 0x0140, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1110, ++ 0x080c, 0x31e7, 0x080c, 0xcccc, 0x6023, 0x0001, 0x9006, 0x080c, ++ 0x6561, 0x2001, 0x0002, 0x080c, 0x6575, 0x0126, 0x2091, 0x8000, ++ 0x70a8, 0x8000, 0x70aa, 0x012e, 0x2009, 0x0002, 0x080c, 0xac8c, ++ 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00b6, ++ 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x65c4, 0x1140, 0xb813, ++ 0x00ff, 0xb817, 0xfffc, 0x0039, 0x0110, 0x70e3, 0xffff, 0x002e, ++ 0x00ce, 0x00be, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x080c, ++ 0xab97, 0x01d0, 0x2b00, 0x6012, 0x080c, 0xcccc, 0x6023, 0x0001, ++ 0x9006, 0x080c, 0x6561, 0x2001, 0x0002, 0x080c, 0x6575, 0x0126, ++ 0x2091, 0x8000, 0x70e4, 0x8000, 0x70e6, 0x012e, 0x2009, 0x0002, ++ 0x080c, 0xac8c, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, ++ 0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, ++ 0x080c, 0x65c4, 0x11b8, 0xb813, 0x00ff, 0xb817, 0xfffd, 0xb8d7, ++ 0x0004, 0x080c, 0xab97, 0x0170, 0x2b00, 0x6012, 0x6316, 0x6023, ++ 0x0001, 0x620a, 0x080c, 0xcccc, 0x2009, 0x0022, 0x080c, 0xac8c, ++ 0x9085, 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, ++ 0x0066, 0x0036, 0x0026, 0x00b6, 0x21f0, 0x9036, 0x080c, 0xa896, ++ 0x1110, 0x2031, 0x0001, 0x0066, 0x080c, 0x93b0, 0x080c, 0x9326, ++ 0x080c, 0xa7ec, 0x080c, 0xbb19, 0x006e, 0x86ff, 0x0110, 0x080c, ++ 0xa8b2, 0x3e08, 0x2130, 0x81ff, 0x0120, 0x20a9, 0x007e, 0x900e, ++ 0x0018, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x6625, 0x1140, ++ 0x9686, 0x0002, 0x1118, 0xb800, 0xd0bc, 0x1110, 0x080c, 0x6043, ++ 0x001e, 0x8108, 0x1f04, 0x31cc, 0x9686, 0x0001, 0x190c, 0x3337, ++ 0x00be, 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, ++ 0x00c6, 0x0046, 0x0036, 0x0026, 0x0016, 0x00b6, 0x9016, 0x080c, ++ 0xa896, 0x1110, 0x2011, 0x0001, 0x0026, 0x6210, 0x2258, 0xbaa0, ++ 0x0026, 0x2019, 0x0029, 0x080c, 0x93a5, 0x0076, 0x2039, 0x0000, ++ 0x080c, 0x9277, 0x2c08, 0x080c, 0xdfeb, 0x007e, 0x001e, 0x002e, ++ 0x82ff, 0x0110, 0x080c, 0xa8b2, 0xba10, 0xbb14, 0xbc84, 0x080c, ++ 0x6043, 0xba12, 0xbb16, 0xbc86, 0x00be, 0x001e, 0x002e, 0x003e, ++ 0x004e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x00b6, 0x6010, ++ 0x2058, 0xb8a0, 0x00be, 0x9086, 0x0080, 0x0150, 0x2071, 0x1800, ++ 0x70a8, 0x9005, 0x0110, 0x8001, 0x70aa, 0x000e, 0x00ee, 0x0005, ++ 0x2071, 0x1800, 0x70e4, 0x9005, 0x0dc0, 0x8001, 0x70e6, 0x0ca8, ++ 0xb800, 0xc08c, 0xb802, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x00b6, ++ 0x0046, 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x9016, 0x080c, ++ 0xa896, 0x1110, 0x2011, 0x0001, 0x0026, 0x81ff, 0x1118, 0x20a9, ++ 0x0001, 0x0078, 0x080c, 0x56da, 0xd0c4, 0x0140, 0xd0a4, 0x0130, ++ 0x9006, 0x2020, 0x2009, 0x002d, 0x080c, 0xe2c9, 0x20a9, 0x0800, ++ 0x9016, 0x0026, 0x928e, 0x007e, 0x0904, 0x32ab, 0x928e, 0x007f, ++ 0x0904, 0x32ab, 0x928e, 0x0080, 0x05f0, 0x9288, 0x1000, 0x210c, ++ 0x81ff, 0x05c8, 0x8fff, 0x1150, 0x2001, 0x198e, 0x0006, 0x2003, ++ 0x0001, 0x080c, 0x32be, 0x000e, 0x2003, 0x0000, 0x00b6, 0x00c6, ++ 0x2158, 0x2001, 0x0001, 0x080c, 0x6a35, 0x00ce, 0x00be, 0x2019, ++ 0x0029, 0x080c, 0x93a5, 0x0076, 0x2039, 0x0000, 0x080c, 0x9277, ++ 0x00b6, 0x00c6, 0x0026, 0x2158, 0xba04, 0x9294, 0x00ff, 0x9286, ++ 0x0006, 0x1118, 0xb807, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, ++ 0x9215, 0xba06, 0x002e, 0x00ce, 0x00be, 0x0016, 0x2c08, 0x080c, ++ 0xdfeb, 0x001e, 0x007e, 0x002e, 0x8210, 0x1f04, 0x3261, 0x002e, ++ 0x82ff, 0x0110, 0x080c, 0xa8b2, 0x015e, 0x001e, 0x002e, 0x003e, ++ 0x004e, 0x00be, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, ++ 0x0016, 0x080c, 0x56da, 0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, ++ 0x2220, 0x2009, 0x0029, 0x080c, 0xe2c9, 0x001e, 0x002e, 0x004e, ++ 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x7294, 0x82ff, 0x01e8, ++ 0x080c, 0x6a63, 0x11d0, 0x2100, 0x080c, 0x262e, 0x81ff, 0x01b8, ++ 0x2019, 0x0001, 0x8314, 0x92e0, 0x1d80, 0x2c04, 0xd384, 0x0120, ++ 0x9084, 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x9116, 0x0138, ++ 0x9096, 0x00ff, 0x0110, 0x8318, 0x0c68, 0x9085, 0x0001, 0x00ce, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x0066, 0x9036, 0x080c, 0xa896, 0x1110, 0x2031, 0x0001, ++ 0x0066, 0x0036, 0x2019, 0x0029, 0x00d9, 0x003e, 0x006e, 0x86ff, ++ 0x0110, 0x080c, 0xa8b2, 0x006e, 0x9180, 0x1000, 0x2004, 0x9065, ++ 0x0158, 0x0016, 0x00c6, 0x2061, 0x1b32, 0x001e, 0x6112, 0x080c, ++ 0x31e7, 0x001e, 0x080c, 0x65e9, 0x012e, 0x00ce, 0x001e, 0x0005, ++ 0x0016, 0x0026, 0x2110, 0x080c, 0xa38a, 0x080c, 0xe630, 0x002e, ++ 0x001e, 0x0005, 0x2001, 0x1837, 0x2004, 0xd0cc, 0x0005, 0x00c6, ++ 0x00b6, 0x080c, 0x74e9, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, ++ 0x0782, 0x080c, 0x74e9, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, ++ 0x9180, 0x1000, 0x2004, 0x905d, 0x0130, 0x86ff, 0x0110, 0xb800, ++ 0xd0bc, 0x090c, 0x65e9, 0x8108, 0x1f04, 0x3348, 0x2061, 0x1800, ++ 0x607f, 0x0000, 0x6080, 0x9084, 0x00ff, 0x6082, 0x60b3, 0x0000, ++ 0x00be, 0x00ce, 0x0005, 0x2001, 0x1869, 0x2004, 0xd0bc, 0x0005, ++ 0x2011, 0x1848, 0x2214, 0xd2ec, 0x0005, 0x0026, 0x2011, 0x1867, ++ 0x2214, 0xd2dc, 0x002e, 0x0005, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, ++ 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, ++ 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, ++ 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, ++ 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, ++ 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, ++ 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, ++ 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, ++ 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, ++ 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, ++ 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, ++ 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, ++ 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, ++ 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, ++ 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, ++ 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, ++ 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, ++ 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, ++ 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, ++ 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, ++ 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, ++ 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, ++ 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, ++ 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, ++ 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, ++ 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, ++ 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, ++ 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, ++ 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0x189e, 0x7003, 0x0002, ++ 0x9006, 0x7016, 0x701a, 0x704a, 0x704e, 0x700e, 0x7042, 0x7046, ++ 0x703b, 0x18ba, 0x703f, 0x18ba, 0x7007, 0x0001, 0x080c, 0x1053, ++ 0x090c, 0x0d7d, 0x2900, 0x706a, 0xa867, 0x0002, 0xa8ab, 0xdcb0, ++ 0x080c, 0x1053, 0x090c, 0x0d7d, 0x2900, 0x706e, 0xa867, 0x0002, ++ 0xa8ab, 0xdcb0, 0x0005, 0x2071, 0x189e, 0x7004, 0x0002, 0x34a3, ++ 0x34a4, 0x34b7, 0x34cb, 0x0005, 0x1004, 0x34b4, 0x0e04, 0x34b4, ++ 0x2079, 0x0000, 0x0126, 0x2091, 0x8000, 0x700c, 0x9005, 0x1128, ++ 0x700f, 0x0001, 0x012e, 0x0468, 0x0005, 0x012e, 0x0ce8, 0x2079, ++ 0x0000, 0x2061, 0x18b8, 0x2c4c, 0xa86c, 0x908e, 0x0100, 0x0128, ++ 0x9086, 0x0200, 0x0904, 0x359f, 0x0005, 0x7018, 0x2048, 0x2061, ++ 0x1800, 0x701c, 0x0807, 0x7014, 0x2048, 0xa864, 0x9094, 0x00ff, ++ 0x9296, 0x0029, 0x1120, 0xaa78, 0xd2fc, 0x0128, 0x0005, 0x9086, ++ 0x0103, 0x0108, 0x0005, 0x2079, 0x0000, 0x2061, 0x1800, 0x701c, ++ 0x0807, 0x2061, 0x1800, 0x7880, 0x908a, 0x0040, 0x1210, 0x61d0, ++ 0x0042, 0x2100, 0x908a, 0x003f, 0x1a04, 0x359c, 0x61d0, 0x0804, ++ 0x3531, 0x3573, 0x35ab, 0x35b5, 0x35b9, 0x35c3, 0x35c9, 0x35cd, ++ 0x35dd, 0x35e0, 0x35ea, 0x35ef, 0x35f4, 0x35ff, 0x360a, 0x3619, ++ 0x3628, 0x3636, 0x364d, 0x3668, 0x359c, 0x3711, 0x374f, 0x37f4, ++ 0x3805, 0x3828, 0x359c, 0x359c, 0x359c, 0x3860, 0x3880, 0x3889, ++ 0x38b5, 0x38bb, 0x359c, 0x3901, 0x359c, 0x359c, 0x359c, 0x359c, ++ 0x359c, 0x390c, 0x3915, 0x391d, 0x391f, 0x359c, 0x359c, 0x359c, ++ 0x359c, 0x359c, 0x359c, 0x394f, 0x359c, 0x359c, 0x359c, 0x359c, ++ 0x359c, 0x396c, 0x39d0, 0x359c, 0x359c, 0x359c, 0x359c, 0x359c, ++ 0x359c, 0x0002, 0x39fa, 0x39fd, 0x3a5c, 0x3a75, 0x3aa5, 0x3d47, ++ 0x359c, 0x52ab, 0x359c, 0x359c, 0x359c, 0x359c, 0x359c, 0x359c, ++ 0x359c, 0x359c, 0x35ea, 0x35ef, 0x4246, 0x56fe, 0x4264, 0x533a, ++ 0x538b, 0x548e, 0x359c, 0x54f0, 0x552c, 0x555d, 0x5669, 0x558a, ++ 0x55e9, 0x359c, 0x4268, 0x441d, 0x4433, 0x4458, 0x44bd, 0x4531, ++ 0x4551, 0x45c8, 0x4624, 0x4680, 0x4683, 0x46a8, 0x4718, 0x4782, ++ 0x478a, 0x48bc, 0x4a31, 0x4a65, 0x4cc9, 0x359c, 0x4ce7, 0x4d93, ++ 0x4e75, 0x4ecf, 0x359c, 0x4f84, 0x359c, 0x4fea, 0x5005, 0x478a, ++ 0x524b, 0x714c, 0x0000, 0x2021, 0x4000, 0x080c, 0x4ae3, 0x0126, ++ 0x2091, 0x8000, 0x0e04, 0x357d, 0x0010, 0x012e, 0x0cc0, 0x7c36, ++ 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833, 0x0010, ++ 0x7c82, 0x7986, 0x7a8a, 0x7b8e, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x11d6, 0x7007, 0x0001, 0x2091, 0x5000, ++ 0x700f, 0x0000, 0x012e, 0x0005, 0x2021, 0x4001, 0x08b0, 0x2021, ++ 0x4002, 0x0898, 0x2021, 0x4003, 0x0880, 0x2021, 0x4005, 0x0868, ++ 0x2021, 0x4006, 0x0850, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88, ++ 0x7a8c, 0x7884, 0x7990, 0x0804, 0x4af0, 0x7883, 0x0004, 0x7884, ++ 0x0807, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88, 0x7a8c, 0x7884, ++ 0x7990, 0x0804, 0x4af3, 0x7984, 0x7888, 0x2114, 0x200a, 0x0804, ++ 0x3573, 0x7984, 0x2114, 0x0804, 0x3573, 0x20e1, 0x0000, 0x2099, ++ 0x0021, 0x20e9, 0x0000, 0x20a1, 0x0021, 0x20a9, 0x001f, 0x4003, ++ 0x7984, 0x7a88, 0x7b8c, 0x0804, 0x3573, 0x7884, 0x2060, 0x04d8, ++ 0x2009, 0x0003, 0x2011, 0x0002, 0x2019, 0x001c, 0x789b, 0x0137, ++ 0x0804, 0x3573, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0800, 0x2039, ++ 0x0001, 0x7d98, 0x7c9c, 0x0848, 0x79a0, 0x9182, 0x0040, 0x0210, ++ 0x0804, 0x35a8, 0x2138, 0x7d98, 0x7c9c, 0x0804, 0x35af, 0x79a0, ++ 0x9182, 0x0040, 0x0210, 0x0804, 0x35a8, 0x2138, 0x7d98, 0x7c9c, ++ 0x0804, 0x35bd, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x35a8, ++ 0x21e8, 0x7984, 0x7888, 0x20a9, 0x0001, 0x21a0, 0x4004, 0x0804, ++ 0x3573, 0x2061, 0x0800, 0xe10c, 0x9006, 0x2c15, 0x9200, 0x8c60, ++ 0x8109, 0x1dd8, 0x2010, 0x9005, 0x0904, 0x3573, 0x0804, 0x35a2, ++ 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x35a8, 0x21e0, 0x20a9, ++ 0x0001, 0x7984, 0x2198, 0x4012, 0x0804, 0x3573, 0x2069, 0x1847, ++ 0x7884, 0x7990, 0x911a, 0x1a04, 0x35a8, 0x8019, 0x0904, 0x35a8, ++ 0x684a, 0x6942, 0x788c, 0x6852, 0x7888, 0x6856, 0x9006, 0x685a, ++ 0x685e, 0x080c, 0x781e, 0x0804, 0x3573, 0x2069, 0x1847, 0x7884, ++ 0x7994, 0x911a, 0x1a04, 0x35a8, 0x8019, 0x0904, 0x35a8, 0x684e, ++ 0x6946, 0x788c, 0x6862, 0x7888, 0x6866, 0x9006, 0x686a, 0x686e, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x6ad5, 0x012e, 0x0804, 0x3573, ++ 0x902e, 0x2520, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, ++ 0x7984, 0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, 0x20a1, ++ 0x18a6, 0x4101, 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x35a5, 0x2009, 0x0020, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, ++ 0x4af0, 0x701f, 0x368c, 0x0005, 0xa864, 0x2008, 0x9084, 0x00ff, ++ 0x9096, 0x0011, 0x0168, 0x9096, 0x0019, 0x0150, 0x9096, 0x0015, ++ 0x0138, 0x9096, 0x0048, 0x0120, 0x9096, 0x0029, 0x1904, 0x35a5, ++ 0x810f, 0x918c, 0x00ff, 0x0904, 0x35a5, 0x7112, 0x7010, 0x8001, ++ 0x0560, 0x7012, 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, ++ 0x35a5, 0x2009, 0x0020, 0x7068, 0x2040, 0xa28c, 0xa390, 0xa494, ++ 0xa598, 0x9290, 0x0040, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, ++ 0x0000, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4af0, 0x701f, ++ 0x36ca, 0x0005, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0002, 0x0120, ++ 0x9096, 0x000a, 0x1904, 0x35a5, 0x0888, 0x7014, 0x2048, 0xa868, ++ 0xc0fd, 0xa86a, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0029, 0x1160, ++ 0xc2fd, 0xaa7a, 0x080c, 0x6196, 0x0150, 0x0126, 0x2091, 0x8000, ++ 0xa87a, 0xa982, 0x012e, 0x0050, 0x080c, 0x64bf, 0x1128, 0x7007, ++ 0x0003, 0x701f, 0x36f6, 0x0005, 0x080c, 0x6fc0, 0x0126, 0x2091, ++ 0x8000, 0x20a9, 0x0005, 0x20e1, 0x0001, 0x2099, 0x18a6, 0x400a, ++ 0x2100, 0x9210, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, 0x0000, ++ 0xa85c, 0x9080, 0x0019, 0x2009, 0x0020, 0x012e, 0xaf60, 0x0804, ++ 0x4af3, 0x2091, 0x8000, 0x7837, 0x4000, 0x7833, 0x0010, 0x7883, ++ 0x4000, 0x7887, 0x4953, 0x788b, 0x5020, 0x788f, 0x2020, 0x2009, ++ 0x017f, 0x2104, 0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, 0x6200, ++ 0x2061, 0x0200, 0x603c, 0x8007, 0x9205, 0x789a, 0x2009, 0x04fd, ++ 0x2104, 0x789e, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x0180, 0x2001, 0x1a22, 0x2004, 0x9005, 0x0128, ++ 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, ++ 0x0002, 0x2003, 0x1001, 0x2071, 0x0080, 0x0804, 0x0427, 0x81ff, ++ 0x1904, 0x35a5, 0x7984, 0x080c, 0x6625, 0x1904, 0x35a8, 0x7e98, ++ 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x35a8, 0x7c88, 0x7d8c, ++ 0x080c, 0x6857, 0x080c, 0x67e8, 0x1518, 0x2061, 0x1ddc, 0x0126, ++ 0x2091, 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, ++ 0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0150, 0x012e, ++ 0x9ce0, 0x001c, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1a04, 0x35a5, ++ 0x0c30, 0x080c, 0xc443, 0x012e, 0x0904, 0x35a5, 0x0804, 0x3573, ++ 0x900e, 0x2001, 0x0005, 0x080c, 0x6fc0, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0xcb3c, 0x080c, 0x6d80, 0x012e, 0x0804, 0x3573, 0x00a6, ++ 0x2950, 0xb198, 0x080c, 0x6625, 0x1904, 0x37e1, 0xb6a4, 0x9684, ++ 0x3fff, 0x9082, 0x4000, 0x16e8, 0xb49c, 0xb5a0, 0x080c, 0x6857, ++ 0x080c, 0x6802, 0x1520, 0x2061, 0x1ddc, 0x0126, 0x2091, 0x8000, ++ 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130, 0xa86c, ++ 0x9406, 0x1118, 0xa870, 0x9506, 0x0158, 0x012e, 0x9ce0, 0x001c, ++ 0x2001, 0x181a, 0x2004, 0x9c02, 0x2009, 0x000d, 0x12b0, 0x0c28, ++ 0x080c, 0xc443, 0x012e, 0x2009, 0x0003, 0x0178, 0x00e0, 0x900e, ++ 0x2001, 0x0005, 0x080c, 0x6fc0, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xcb3c, 0x080c, 0x6d74, 0x012e, 0x0070, 0xb097, 0x4005, 0xb19a, ++ 0x0010, 0xb097, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, ++ 0x2a48, 0x00ae, 0x0005, 0xb097, 0x4000, 0x9006, 0x918d, 0x0001, ++ 0x2008, 0x2a48, 0x00ae, 0x0005, 0x81ff, 0x1904, 0x35a5, 0x080c, ++ 0x4abe, 0x0904, 0x35a8, 0x080c, 0x66ec, 0x0904, 0x35a5, 0x080c, ++ 0x685d, 0x0904, 0x35a5, 0x0804, 0x4548, 0x81ff, 0x1904, 0x35a5, ++ 0x080c, 0x4ada, 0x0904, 0x35a8, 0x080c, 0x68eb, 0x0904, 0x35a5, ++ 0x2019, 0x0005, 0x79a8, 0x080c, 0x6878, 0x0904, 0x35a5, 0x7888, ++ 0x908a, 0x1000, 0x1a04, 0x35a8, 0x8003, 0x800b, 0x810b, 0x9108, ++ 0x080c, 0x864c, 0x7984, 0xd184, 0x1904, 0x3573, 0x0804, 0x4548, ++ 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, 0x0001, 0x0450, ++ 0x2029, 0x07ff, 0x645c, 0x2400, 0x9506, 0x01f8, 0x2508, 0x080c, ++ 0x6625, 0x11d8, 0x080c, 0x68eb, 0x1128, 0x2009, 0x0002, 0x62c0, ++ 0x2518, 0x00c0, 0x2019, 0x0004, 0x900e, 0x080c, 0x6878, 0x1118, ++ 0x2009, 0x0006, 0x0078, 0x7884, 0x908a, 0x1000, 0x1270, 0x8003, ++ 0x800b, 0x810b, 0x9108, 0x080c, 0x864c, 0x8529, 0x1ae0, 0x012e, ++ 0x0804, 0x3573, 0x012e, 0x0804, 0x35a5, 0x012e, 0x0804, 0x35a8, ++ 0x080c, 0x4abe, 0x0904, 0x35a8, 0x080c, 0x66ec, 0x0904, 0x35a5, ++ 0x080c, 0xa896, 0xbaa0, 0x2019, 0x0005, 0x00c6, 0x9066, 0x080c, ++ 0x93a5, 0x0076, 0x903e, 0x080c, 0x9277, 0x900e, 0x080c, 0xdfeb, ++ 0x007e, 0x00ce, 0x080c, 0xa8b2, 0x080c, 0x6857, 0x0804, 0x3573, ++ 0x080c, 0x4abe, 0x0904, 0x35a8, 0x080c, 0x6857, 0x2208, 0x0804, ++ 0x3573, 0x0156, 0x00d6, 0x00e6, 0x00c6, 0x2069, 0x1910, 0x6810, ++ 0x6914, 0x910a, 0x1208, 0x900e, 0x6816, 0x9016, 0x901e, 0x2071, ++ 0x19e7, 0x7028, 0x9065, 0x0118, 0x8210, 0x600c, 0x0cd8, 0x2300, ++ 0x9218, 0x00ce, 0x00ee, 0x00de, 0x015e, 0x0804, 0x3573, 0x00f6, ++ 0x0016, 0x907d, 0x0138, 0x9006, 0x8000, 0x2f0c, 0x81ff, 0x0110, ++ 0x2178, 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0x1910, 0x6910, ++ 0x62bc, 0x0804, 0x3573, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, ++ 0x35a5, 0x0126, 0x2091, 0x8000, 0x080c, 0x56ee, 0x0128, 0x2009, ++ 0x0007, 0x012e, 0x0804, 0x35a5, 0x012e, 0x615c, 0x9190, 0x3374, ++ 0x2215, 0x9294, 0x00ff, 0x637c, 0x83ff, 0x0108, 0x6280, 0x67dc, ++ 0x97c4, 0x000a, 0x98c6, 0x000a, 0x1118, 0x2031, 0x0001, 0x00e8, ++ 0x97c4, 0x0022, 0x98c6, 0x0022, 0x1118, 0x2031, 0x0003, 0x00a8, ++ 0x97c4, 0x0012, 0x98c6, 0x0012, 0x1118, 0x2031, 0x0002, 0x0068, ++ 0x080c, 0x74e9, 0x1118, 0x2031, 0x0004, 0x0038, 0xd79c, 0x0120, ++ 0x2009, 0x0005, 0x0804, 0x35a5, 0x9036, 0x7e9a, 0x7f9e, 0x0804, ++ 0x3573, 0x614c, 0x6250, 0x2019, 0x1986, 0x231c, 0x2001, 0x1987, ++ 0x2004, 0x789a, 0x0804, 0x3573, 0x0126, 0x2091, 0x8000, 0x6138, ++ 0x623c, 0x6340, 0x012e, 0x0804, 0x3573, 0x080c, 0x4ada, 0x0904, ++ 0x35a8, 0xba44, 0xbb38, 0x0804, 0x3573, 0x080c, 0x0d7d, 0x080c, ++ 0x4ada, 0x2110, 0x0904, 0x35a8, 0xb804, 0x908c, 0x00ff, 0x918e, ++ 0x0006, 0x0140, 0x9084, 0xff00, 0x9086, 0x0600, 0x2009, 0x0009, ++ 0x1904, 0x35a5, 0x0126, 0x2091, 0x8000, 0x2019, 0x0005, 0x00c6, ++ 0x9066, 0x080c, 0xa896, 0x080c, 0xa38a, 0x080c, 0x93a5, 0x0076, ++ 0x903e, 0x080c, 0x9277, 0x900e, 0x080c, 0xdfeb, 0x007e, 0x00ce, ++ 0x080c, 0xa8b2, 0xb807, 0x0407, 0x012e, 0x0804, 0x3573, 0x614c, ++ 0x6250, 0x7884, 0x604e, 0x7b88, 0x6352, 0x2069, 0x1847, 0x831f, ++ 0x9305, 0x6816, 0x788c, 0x2069, 0x1986, 0x2d1c, 0x206a, 0x7e98, ++ 0x9682, 0x0014, 0x1210, 0x2031, 0x07d0, 0x2069, 0x1987, 0x2d04, ++ 0x266a, 0x789a, 0x0804, 0x3573, 0x0126, 0x2091, 0x8000, 0x6138, ++ 0x7884, 0x603a, 0x910e, 0xd1b4, 0x190c, 0x0ecc, 0xd0c4, 0x01a8, ++ 0x00d6, 0x78a8, 0x2009, 0x199d, 0x200a, 0x78ac, 0x2011, 0x199e, ++ 0x2012, 0x2069, 0x0100, 0x6838, 0x9086, 0x0007, 0x1118, 0x2214, ++ 0x6a5a, 0x0010, 0x210c, 0x695a, 0x00de, 0x7888, 0x603e, 0x2011, ++ 0x0116, 0x220c, 0x7888, 0xd08c, 0x0118, 0x918d, 0x0040, 0x0010, ++ 0x918c, 0xff7f, 0x2112, 0x6140, 0x788c, 0x6042, 0x910e, 0xd1e4, ++ 0x190c, 0x0ee7, 0x9084, 0x0020, 0x0130, 0x78b4, 0x6046, 0x9084, ++ 0x0001, 0x090c, 0x4246, 0x6040, 0xd0cc, 0x0120, 0x78b0, 0x2011, ++ 0x0114, 0x2012, 0x012e, 0x0804, 0x3573, 0x00f6, 0x2079, 0x1800, ++ 0x7a38, 0xa898, 0x9084, 0xfebf, 0x9215, 0xa89c, 0x9084, 0xfebf, ++ 0x8002, 0x9214, 0x7838, 0x9084, 0x0140, 0x9215, 0x7a3a, 0xa897, ++ 0x4000, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x00fe, 0x0005, ++ 0x7898, 0x9005, 0x01a8, 0x7888, 0x9025, 0x0904, 0x35a8, 0x788c, ++ 0x902d, 0x0904, 0x35a8, 0x900e, 0x080c, 0x6625, 0x1120, 0xba44, ++ 0xbb38, 0xbc46, 0xbd3a, 0x9186, 0x07ff, 0x0190, 0x8108, 0x0ca0, ++ 0x080c, 0x4ada, 0x0904, 0x35a8, 0x7888, 0x900d, 0x0904, 0x35a8, ++ 0x788c, 0x9005, 0x0904, 0x35a8, 0xba44, 0xb946, 0xbb38, 0xb83a, ++ 0x0804, 0x3573, 0x2011, 0xbc09, 0x0010, 0x2011, 0xbc05, 0x080c, ++ 0x56ee, 0x1904, 0x35a5, 0x00c6, 0x2061, 0x0100, 0x7984, 0x9186, ++ 0x00ff, 0x1130, 0x2001, 0x1818, 0x2004, 0x9085, 0xff00, 0x0088, ++ 0x9182, 0x007f, 0x16e0, 0x9188, 0x3374, 0x210d, 0x918c, 0x00ff, ++ 0x2001, 0x1818, 0x2004, 0x0026, 0x9116, 0x002e, 0x0580, 0x810f, ++ 0x9105, 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0xab97, 0x000e, ++ 0x0510, 0x602e, 0x620a, 0x7984, 0x00b6, 0x080c, 0x65ca, 0x2b08, ++ 0x00be, 0x1500, 0x6112, 0x6023, 0x0001, 0x080c, 0x4aa7, 0x01d0, ++ 0x9006, 0xa866, 0x7007, 0x0003, 0xa832, 0xa868, 0xc0fd, 0xa86a, ++ 0x701f, 0x3a55, 0x2900, 0x6016, 0x2009, 0x0032, 0x080c, 0xac8c, ++ 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x35a5, 0x00ce, ++ 0x0804, 0x35a8, 0x080c, 0xabed, 0x0cb0, 0xa830, 0x9086, 0x0100, ++ 0x0904, 0x35a5, 0x0804, 0x3573, 0x2061, 0x1a6f, 0x0126, 0x2091, ++ 0x8000, 0x6000, 0xd084, 0x0170, 0x6104, 0x6208, 0x2061, 0x1800, ++ 0x6354, 0x6074, 0x789a, 0x60c0, 0x789e, 0x60bc, 0x78aa, 0x012e, ++ 0x0804, 0x3573, 0x900e, 0x2110, 0x0c88, 0x81ff, 0x1904, 0x35a5, ++ 0x080c, 0x74e9, 0x0904, 0x35a5, 0x0126, 0x2091, 0x8000, 0x6254, ++ 0x6074, 0x9202, 0x0248, 0x9085, 0x0001, 0x080c, 0x2664, 0x080c, ++ 0x5908, 0x012e, 0x0804, 0x3573, 0x012e, 0x0804, 0x35a8, 0x0006, ++ 0x0016, 0x00c6, 0x00e6, 0x2001, 0x19a9, 0x2070, 0x2061, 0x1847, ++ 0x6008, 0x2072, 0x900e, 0x2011, 0x1400, 0x080c, 0x9166, 0x7206, ++ 0x00ee, 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, ++ 0x81ff, 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, 0x3575, 0x7884, ++ 0xd0fc, 0x0148, 0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x0288, ++ 0x012e, 0x0804, 0x35a8, 0x2001, 0x002a, 0x2004, 0x2069, 0x1847, ++ 0x6908, 0x9102, 0x1230, 0x012e, 0x0804, 0x35a8, 0x012e, 0x0804, ++ 0x35a5, 0x080c, 0xab57, 0x0dd0, 0x7884, 0xd0fc, 0x0904, 0x3b20, ++ 0x00c6, 0x080c, 0x4aa7, 0x00ce, 0x0d88, 0xa867, 0x0000, 0x7884, ++ 0xa80a, 0x7898, 0xa80e, 0x789c, 0xa812, 0x2001, 0x002e, 0x2004, ++ 0xa81a, 0x2001, 0x002f, 0x2004, 0xa81e, 0x2001, 0x0030, 0x2004, ++ 0xa822, 0x2001, 0x0031, 0x2004, 0xa826, 0x2001, 0x0034, 0x2004, ++ 0xa82a, 0x2001, 0x0035, 0x2004, 0xa82e, 0x2001, 0x002a, 0x2004, ++ 0x9080, 0x0003, 0x9084, 0x00fc, 0x8004, 0xa816, 0x080c, 0x3caa, ++ 0x0928, 0x7014, 0x2048, 0xad2c, 0xac28, 0xab1c, 0xaa18, 0xa930, ++ 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, ++ 0x080c, 0x4af0, 0x701f, 0x3be7, 0x7023, 0x0001, 0x012e, 0x0005, ++ 0x080c, 0xa896, 0x0046, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3a8f, 0x2001, 0x199f, 0x2003, ++ 0x0000, 0x2021, 0x000a, 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb, ++ 0x0000, 0x60bf, 0x32e1, 0x60bf, 0x0012, 0x080c, 0x3d19, 0x080c, ++ 0x3cd8, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x19e7, 0x2079, ++ 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001, ++ 0x0035, 0x2004, 0x780e, 0x2001, 0x0034, 0x2004, 0x780a, 0x00de, ++ 0x2011, 0x0001, 0x080c, 0x408a, 0x008e, 0x00ee, 0x00fe, 0x080c, ++ 0x3fb7, 0x080c, 0x3ee4, 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084, ++ 0x0140, 0x1db8, 0x080c, 0x40fe, 0x00f6, 0x2079, 0x0300, 0x78bc, ++ 0x00fe, 0x908c, 0x0070, 0x1560, 0x2071, 0x0200, 0x7037, 0x0000, ++ 0x7050, 0x9084, 0xff00, 0x9086, 0x3200, 0x1510, 0x7037, 0x0001, ++ 0x7050, 0x9084, 0xff00, 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000, ++ 0x7054, 0x7037, 0x0000, 0x715c, 0x9106, 0x1190, 0x2001, 0x1820, ++ 0x2004, 0x9106, 0x1168, 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084, ++ 0x1e00, 0x00ce, 0x0138, 0x080c, 0x3eee, 0x080c, 0x3cd3, 0x0058, ++ 0x080c, 0x3cd3, 0x080c, 0x4022, 0x080c, 0x3fad, 0x2001, 0x020b, ++ 0x2004, 0xd0e4, 0x0dd8, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, ++ 0x0100, 0x6027, 0x0002, 0x001e, 0x6106, 0x2011, 0x020d, 0x2013, ++ 0x0020, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001, ++ 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1328, 0x2009, ++ 0x0028, 0x080c, 0x21b0, 0x2001, 0x0227, 0x200c, 0x2102, 0x080c, ++ 0xa8b2, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, ++ 0x008e, 0x004e, 0x2001, 0x199f, 0x2004, 0x9005, 0x1118, 0x012e, ++ 0x0804, 0x3573, 0x012e, 0x2021, 0x400c, 0x0804, 0x3575, 0x0016, ++ 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, ++ 0x0156, 0x7014, 0x2048, 0x7020, 0x20a8, 0x8000, 0x7022, 0xa804, ++ 0x9005, 0x0904, 0x3c43, 0x2048, 0x1f04, 0x3bf7, 0x7068, 0x2040, ++ 0xa28c, 0xa390, 0xa494, 0xa598, 0xa930, 0xa808, 0xd0b4, 0x1120, ++ 0x2029, 0x0000, 0x2021, 0x0000, 0x0096, 0x7014, 0x2048, 0xa864, ++ 0x009e, 0x9086, 0x0103, 0x0170, 0x8906, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x080c, 0x4af0, 0x701f, ++ 0x3be7, 0x00b0, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, ++ 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, ++ 0x0006, 0x080c, 0x0fb7, 0x000e, 0x080c, 0x4af3, 0x701f, 0x3be7, ++ 0x015e, 0x00de, 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x7014, 0x2048, 0xa864, 0x9086, 0x0103, ++ 0x1118, 0x701f, 0x3ca8, 0x0450, 0x7014, 0x2048, 0xa868, 0xc0fd, ++ 0xa86a, 0x2009, 0x007f, 0x080c, 0x65c4, 0x0110, 0x9006, 0x0030, ++ 0xb813, 0x00ff, 0xb817, 0xfffd, 0x080c, 0xcd1b, 0x015e, 0x00de, ++ 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0904, 0x35a5, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, ++ 0x0086, 0x0096, 0x00d6, 0x0156, 0x701f, 0x3c7a, 0x7007, 0x0003, ++ 0x0804, 0x3c38, 0xa830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, ++ 0x3575, 0x0076, 0xad10, 0xac0c, 0xab24, 0xaa20, 0xa930, 0xa808, ++ 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, ++ 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, ++ 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c, 0x0fb7, 0x000e, ++ 0x080c, 0x4af3, 0x007e, 0x701f, 0x3be7, 0x7023, 0x0001, 0x0005, ++ 0x0804, 0x3573, 0x0156, 0x00c6, 0xa814, 0x908a, 0x001e, 0x0218, ++ 0xa833, 0x001e, 0x0010, 0xa832, 0x0078, 0x81ff, 0x0168, 0x0016, ++ 0x080c, 0x4aa7, 0x001e, 0x0130, 0xa800, 0x2040, 0xa008, 0xa80a, ++ 0x2100, 0x0c58, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, ++ 0x0005, 0x0006, 0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, ++ 0x00fe, 0x000e, 0x0005, 0x2001, 0x199f, 0x2003, 0x0001, 0x0005, ++ 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, 0x2001, 0x19aa, 0x2004, ++ 0x601a, 0x2061, 0x0100, 0x2001, 0x19a9, 0x2004, 0x60ce, 0x6104, ++ 0xc1ac, 0x6106, 0x080c, 0x4aa7, 0xa813, 0x0019, 0xa817, 0x0001, ++ 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, ++ 0x2004, 0xa86a, 0x2061, 0x0090, 0x2079, 0x0100, 0x2001, 0x19a9, ++ 0x2004, 0x6036, 0x2009, 0x0040, 0x080c, 0x21b0, 0x2001, 0x002a, ++ 0x2004, 0x9084, 0xfff8, 0xa86e, 0x601a, 0xa873, 0x0000, 0x601f, ++ 0x0000, 0x78ca, 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0x00e6, 0x080c, 0x4aa7, 0x2940, 0xa013, 0x0019, 0xa017, ++ 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030, 0x2004, 0xa866, 0x2001, ++ 0x0031, 0x2004, 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0xa86e, 0xa873, 0x0000, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, ++ 0x0300, 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, ++ 0x0004, 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0x81ff, 0x0148, 0x080c, 0x29e8, 0x1130, 0x9006, ++ 0x080c, 0x2945, 0x9006, 0x080c, 0x2928, 0x7884, 0x9084, 0x0007, ++ 0x0002, 0x3d64, 0x3d6d, 0x3d76, 0x3d61, 0x3d61, 0x3d61, 0x3d61, ++ 0x3d61, 0x012e, 0x0804, 0x35a8, 0x2009, 0x0114, 0x2104, 0x9085, ++ 0x0800, 0x200a, 0x080c, 0x3f38, 0x00c0, 0x2009, 0x0114, 0x2104, ++ 0x9085, 0x4000, 0x200a, 0x080c, 0x3f38, 0x0078, 0x080c, 0x74e9, ++ 0x1128, 0x012e, 0x2009, 0x0016, 0x0804, 0x35a5, 0x81ff, 0x0128, ++ 0x012e, 0x2021, 0x400b, 0x0804, 0x3575, 0x080c, 0xa896, 0x0086, ++ 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, ++ 0x3a8f, 0x2009, 0x0101, 0x210c, 0x0016, 0x7ec8, 0x7dcc, 0x9006, ++ 0x2068, 0x2060, 0x2058, 0x080c, 0x41d9, 0x080c, 0x4129, 0x903e, ++ 0x2720, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x19e7, 0x2079, ++ 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0120, 0x68d4, ++ 0x780e, 0x68d0, 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, 0x408a, ++ 0x080c, 0x29f0, 0x080c, 0x29f0, 0x080c, 0x29f0, 0x080c, 0x29f0, ++ 0x080c, 0x408a, 0x008e, 0x00ee, 0x00fe, 0x080c, 0x3fb7, 0x2009, ++ 0x9c40, 0x8109, 0x11b0, 0x080c, 0x3eee, 0x2001, 0x0004, 0x200c, ++ 0x918c, 0xfffd, 0x2102, 0x001e, 0x00fe, 0x00ee, 0x00de, 0x00ce, ++ 0x00be, 0x00ae, 0x009e, 0x008e, 0x2009, 0x0017, 0x080c, 0x35a5, ++ 0x0cf8, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140, 0x1d10, 0x00f6, ++ 0x2079, 0x0000, 0x7884, 0x00fe, 0xd0bc, 0x0178, 0x2001, 0x0201, ++ 0x200c, 0x81ff, 0x0150, 0x080c, 0x3f95, 0x2d00, 0x9c05, 0x9b05, ++ 0x0120, 0x080c, 0x3eee, 0x0804, 0x3e97, 0x080c, 0x40fe, 0x080c, ++ 0x4022, 0x080c, 0x3f78, 0x080c, 0x3fad, 0x00f6, 0x2079, 0x0100, ++ 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x3eee, 0x00fe, 0x0804, ++ 0x3e97, 0x00fe, 0x080c, 0x3ee4, 0x1150, 0x8d68, 0x2001, 0x0032, ++ 0x2602, 0x2001, 0x0033, 0x2502, 0x080c, 0x3eee, 0x0080, 0x87ff, ++ 0x0138, 0x2001, 0x0201, 0x2004, 0x9005, 0x1908, 0x8739, 0x0038, ++ 0x2001, 0x1a6b, 0x2004, 0x9086, 0x0000, 0x1904, 0x3de7, 0x2001, ++ 0x032f, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, 0x9605, ++ 0x0904, 0x3e97, 0x7884, 0xd0bc, 0x0128, 0x2d00, 0x9c05, 0x9b05, ++ 0x1904, 0x3e97, 0xa013, 0x0019, 0x2001, 0x032a, 0x2003, 0x0004, ++ 0x7884, 0xd0ac, 0x1148, 0x2001, 0x1a6b, 0x2003, 0x0003, 0x2001, ++ 0x032a, 0x2003, 0x0009, 0x0030, 0xa017, 0x0001, 0x78b4, 0x9005, ++ 0x0108, 0xa016, 0x2800, 0xa05a, 0x2009, 0x0040, 0x080c, 0x21b0, ++ 0x2900, 0xa85a, 0xa813, 0x0019, 0x7884, 0xd0a4, 0x1180, 0xa817, ++ 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0090, 0x602b, 0x0008, ++ 0x2001, 0x0203, 0x2004, 0x1f04, 0x3e6e, 0x00ce, 0x0030, 0xa817, ++ 0x0001, 0x78b0, 0x9005, 0x0108, 0xa816, 0x00f6, 0x00c6, 0x2079, ++ 0x0100, 0x2061, 0x0090, 0x7827, 0x0002, 0x2001, 0x002a, 0x2004, ++ 0x9084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0x601e, ++ 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804, 0x3da1, 0x001e, ++ 0x00c6, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061, 0x0100, 0x6027, ++ 0x0002, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020, 0x2001, 0x0004, ++ 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1328, 0x7884, 0x9084, ++ 0x0003, 0x9086, 0x0002, 0x01b0, 0x2009, 0x0028, 0x080c, 0x21b0, ++ 0x2001, 0x0227, 0x200c, 0x2102, 0x6050, 0x9084, 0xb7ff, 0x080c, ++ 0x2aab, 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, 0x0090, ++ 0x6043, 0x0010, 0x080c, 0xa8b2, 0x00ce, 0x2d08, 0x2c10, 0x2b18, ++ 0x2b00, 0x9c05, 0x9d05, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x00ae, 0x009e, 0x008e, 0x1118, 0x012e, 0x0804, 0x3573, 0x012e, ++ 0x2021, 0x400c, 0x0804, 0x3575, 0x9085, 0x0001, 0x1d04, 0x3eed, ++ 0x2091, 0x6000, 0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, ++ 0x2003, 0x0010, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x1a6b, ++ 0x2003, 0x0000, 0x0071, 0x2009, 0x0048, 0x080c, 0x21b0, 0x2001, ++ 0x0227, 0x2024, 0x2402, 0x2001, 0x0109, 0x2003, 0x4000, 0x9026, ++ 0x0005, 0x00f6, 0x00e6, 0x2071, 0x19e7, 0x7054, 0x9086, 0x0000, ++ 0x0520, 0x2079, 0x0090, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, ++ 0x210c, 0x9106, 0x1120, 0x2009, 0x0040, 0x080c, 0x21b0, 0x782c, ++ 0xd0fc, 0x0d88, 0x080c, 0x40fe, 0x7054, 0x9086, 0x0000, 0x1d58, ++ 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, ++ 0x21b0, 0x782b, 0x0002, 0x7057, 0x0000, 0x00ee, 0x00fe, 0x0005, ++ 0x00f6, 0x2079, 0x0100, 0x2001, 0x1818, 0x200c, 0x7932, 0x7936, ++ 0x080c, 0x2644, 0x080c, 0x2a67, 0x080c, 0x2aab, 0x784b, 0xf7f7, ++ 0x7843, 0x0090, 0x7843, 0x0010, 0x7850, 0xc0e5, 0x7852, 0x2019, ++ 0x61a8, 0x7820, 0xd09c, 0x0110, 0x8319, 0x1dd8, 0x7850, 0xc0e4, ++ 0x7852, 0x2011, 0x0048, 0x080c, 0x2a44, 0x7843, 0x0040, 0x2019, ++ 0x01f4, 0xa001, 0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, 0x080c, ++ 0x2a0a, 0x2011, 0x0020, 0x080c, 0x2a44, 0x7843, 0x0000, 0x9006, ++ 0x080c, 0x2a0a, 0x2011, 0x0048, 0x080c, 0x2a44, 0x00fe, 0x0005, ++ 0x7884, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, 0x2071, 0x1a6b, 0x2079, ++ 0x0320, 0x2001, 0x0201, 0x2004, 0x9005, 0x0160, 0x7000, 0x9086, ++ 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, ++ 0x782b, 0x0019, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0300, ++ 0x78bc, 0x00fe, 0x908c, 0x0070, 0x0178, 0x2009, 0x0032, 0x260a, ++ 0x2009, 0x0033, 0x250a, 0xd0b4, 0x0108, 0x8c60, 0xd0ac, 0x0108, ++ 0x8d68, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6, 0x2079, 0x0200, ++ 0x781c, 0xd084, 0x0110, 0x7837, 0x0050, 0x00fe, 0x0005, 0x00e6, ++ 0x2071, 0x0100, 0x2001, 0x19aa, 0x2004, 0x70e2, 0x080c, 0x3cc9, ++ 0x1188, 0x2001, 0x1820, 0x2004, 0x2009, 0x181f, 0x210c, 0x918c, ++ 0x00ff, 0x706e, 0x716a, 0x7066, 0x918d, 0x3200, 0x7162, 0x7073, ++ 0xe109, 0x0080, 0x702c, 0x9085, 0x0002, 0x702e, 0x2009, 0x1818, ++ 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e, 0x706b, 0x0000, ++ 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0x9080, 0x0100, 0x707a, ++ 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0x9006, 0x708a, 0x708e, ++ 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5, 0x7014, 0x9084, ++ 0x1984, 0x9085, 0x0092, 0x7016, 0x080c, 0x40fe, 0x00f6, 0x2071, ++ 0x1a6b, 0x2079, 0x0320, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, ++ 0x0120, 0x689c, 0x780e, 0x6898, 0x780a, 0x00de, 0x2009, 0x03e8, ++ 0x8109, 0x1df0, 0x792c, 0xd1fc, 0x0110, 0x782b, 0x0004, 0x2011, ++ 0x0011, 0x080c, 0x408a, 0x2011, 0x0001, 0x080c, 0x408a, 0x00fe, ++ 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a6b, 0x2079, 0x0320, ++ 0x792c, 0xd1fc, 0x0904, 0x4087, 0x782b, 0x0002, 0x9026, 0xd19c, ++ 0x1904, 0x4083, 0x7000, 0x0002, 0x4087, 0x4038, 0x4068, 0x4083, ++ 0xd1bc, 0x1170, 0xd1dc, 0x1190, 0x8001, 0x7002, 0x2011, 0x0001, ++ 0x080c, 0x408a, 0x0904, 0x4087, 0x080c, 0x408a, 0x0804, 0x4087, ++ 0x00f6, 0x2079, 0x0300, 0x78bf, 0x0000, 0x00fe, 0x7810, 0x7914, ++ 0x782b, 0x0004, 0x7812, 0x7916, 0x2001, 0x0201, 0x200c, 0x81ff, ++ 0x0de8, 0x080c, 0x3f95, 0x2009, 0x0001, 0x00f6, 0x2079, 0x0300, ++ 0x78b8, 0x00fe, 0xd0ec, 0x0110, 0x2009, 0x0011, 0x792a, 0x00f8, ++ 0x8001, 0x7002, 0x9184, 0x0880, 0x1140, 0x782c, 0xd0fc, 0x1904, ++ 0x402c, 0x2011, 0x0001, 0x00b1, 0x0090, 0xa010, 0x9092, 0x0004, ++ 0x9086, 0x0015, 0x1120, 0xa000, 0xa05a, 0x2011, 0x0031, 0xa212, ++ 0xd1dc, 0x1960, 0x0828, 0x782b, 0x0004, 0x7003, 0x0000, 0x00ee, ++ 0x00fe, 0x0005, 0xa014, 0x9005, 0x0550, 0x8001, 0x0036, 0x0096, ++ 0xa016, 0xa058, 0x2048, 0xa010, 0x2009, 0x0031, 0x911a, 0x831c, ++ 0x831c, 0x938a, 0x0007, 0x1a0c, 0x0d7d, 0x9398, 0x40b8, 0x231d, ++ 0x083f, 0x9080, 0x0004, 0x7a2a, 0x7100, 0x8108, 0x7102, 0x009e, ++ 0x003e, 0x908a, 0x0035, 0x1140, 0x0096, 0xa058, 0x2048, 0xa804, ++ 0xa05a, 0x2001, 0x0019, 0x009e, 0xa012, 0x9085, 0x0001, 0x0005, ++ 0x40f5, 0x40ec, 0x40e3, 0x40da, 0x40d1, 0x40c8, 0x40bf, 0xa964, ++ 0x7902, 0xa968, 0x7906, 0xa96c, 0x7912, 0xa970, 0x7916, 0x0005, ++ 0xa974, 0x7902, 0xa978, 0x7906, 0xa97c, 0x7912, 0xa980, 0x7916, ++ 0x0005, 0xa984, 0x7902, 0xa988, 0x7906, 0xa98c, 0x7912, 0xa990, ++ 0x7916, 0x0005, 0xa994, 0x7902, 0xa998, 0x7906, 0xa99c, 0x7912, ++ 0xa9a0, 0x7916, 0x0005, 0xa9a4, 0x7902, 0xa9a8, 0x7906, 0xa9ac, ++ 0x7912, 0xa9b0, 0x7916, 0x0005, 0xa9b4, 0x7902, 0xa9b8, 0x7906, ++ 0xa9bc, 0x7912, 0xa9c0, 0x7916, 0x0005, 0xa9c4, 0x7902, 0xa9c8, ++ 0x7906, 0xa9cc, 0x7912, 0xa9d0, 0x7916, 0x0005, 0x00f6, 0x00e6, ++ 0x0086, 0x2071, 0x19e7, 0x2079, 0x0090, 0x792c, 0xd1fc, 0x01e8, ++ 0x782b, 0x0002, 0x2940, 0x9026, 0x7054, 0x0002, 0x4125, 0x4111, ++ 0x411c, 0x8001, 0x7056, 0xd19c, 0x1180, 0x2011, 0x0001, 0x080c, ++ 0x408a, 0x190c, 0x408a, 0x0048, 0x8001, 0x7056, 0x782c, 0xd0fc, ++ 0x1d38, 0x2011, 0x0001, 0x080c, 0x408a, 0x008e, 0x00ee, 0x00fe, ++ 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x2061, 0x0200, 0x2001, ++ 0x19aa, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001, 0x19a9, 0x2004, ++ 0x60ce, 0x6104, 0xc1ac, 0x6106, 0x2001, 0x002c, 0x2004, 0x9005, ++ 0x0520, 0x2038, 0x2001, 0x002e, 0x2024, 0x2001, 0x002f, 0x201c, ++ 0x080c, 0x4aa7, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, ++ 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, ++ 0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, ++ 0x41a1, 0x1d68, 0x2900, 0xa85a, 0x00d0, 0x080c, 0x4aa7, 0xa813, ++ 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e, 0x2004, ++ 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, 0x2001, 0x002a, 0x2004, ++ 0x9084, 0xfff8, 0xa86e, 0x2001, 0x002b, 0x2004, 0xa872, 0x2061, ++ 0x0090, 0x2079, 0x0100, 0x2001, 0x19a9, 0x2004, 0x6036, 0x2009, ++ 0x0040, 0x080c, 0x21b0, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, ++ 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, ++ 0x78ca, 0x9006, 0x600a, 0x600e, 0x008e, 0x00ce, 0x00ee, 0x00fe, ++ 0x0005, 0x00e6, 0x2071, 0x0080, 0xaa60, 0x22e8, 0x20a0, 0x20e1, ++ 0x0000, 0x2099, 0x0088, 0x702b, 0x0026, 0x7402, 0x7306, 0x9006, ++ 0x700a, 0x700e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112, 0x702b, ++ 0x0041, 0x702c, 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b, 0x0040, ++ 0x4005, 0x7400, 0x7304, 0x87ff, 0x0190, 0x0086, 0x0096, 0x2940, ++ 0x0086, 0x080c, 0x4aa7, 0x008e, 0xa058, 0x00a6, 0x2050, 0x2900, ++ 0xb006, 0xa05a, 0x00ae, 0x009e, 0x008e, 0x9085, 0x0001, 0x00ee, ++ 0x0005, 0x00e6, 0x2001, 0x002d, 0x2004, 0x9005, 0x0528, 0x2038, ++ 0x2001, 0x0030, 0x2024, 0x2001, 0x0031, 0x201c, 0x080c, 0x4aa7, ++ 0x2940, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a, 0x0007, ++ 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x0096, ++ 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c, 0x41a1, ++ 0x1d68, 0x2900, 0xa85a, 0x00d8, 0x080c, 0x4aa7, 0x2940, 0xa013, ++ 0x0019, 0xa017, 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030, 0x2004, ++ 0xa066, 0x2001, 0x0031, 0x2004, 0xa06a, 0x2001, 0x002a, 0x2004, ++ 0x9084, 0xfff8, 0xa06e, 0x2001, 0x002b, 0x2004, 0xa072, 0x2001, ++ 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1180, 0x2001, 0x0101, ++ 0x200c, 0x918d, 0x0200, 0x2102, 0xa017, 0x0000, 0x2001, 0x1a6b, ++ 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x2001, 0x0300, ++ 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, ++ 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x20a9, 0x0007, 0x20a1, 0x1840, 0x20e9, 0x0001, 0x9006, ++ 0x4004, 0x20a9, 0x000c, 0x20a1, 0xfff4, 0x20e9, 0x0000, 0x9006, ++ 0x4004, 0x2009, 0x013c, 0x200a, 0x012e, 0x7880, 0x9086, 0x0052, ++ 0x0108, 0x0005, 0x0804, 0x3573, 0x7d98, 0x7c9c, 0x0804, 0x366a, ++ 0x080c, 0x74e9, 0x190c, 0x5fee, 0x6040, 0x9084, 0x0020, 0x09b1, ++ 0x2069, 0x1847, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0x2039, 0x0001, 0x080c, 0x4af0, 0x701f, 0x4280, 0x0005, ++ 0x080c, 0x56e9, 0x1130, 0x3b00, 0x3a08, 0xc194, 0xc095, 0x20d8, ++ 0x21d0, 0x2069, 0x1847, 0x6800, 0x9005, 0x0904, 0x35a8, 0x6804, ++ 0xd0ac, 0x0118, 0xd0a4, 0x0904, 0x35a8, 0xd094, 0x00c6, 0x2061, ++ 0x0100, 0x6104, 0x0138, 0x6200, 0x9292, 0x0005, 0x0218, 0x918c, ++ 0xffdf, 0x0010, 0x918d, 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, ++ 0x2061, 0x0100, 0x6104, 0x0118, 0x918d, 0x0010, 0x0010, 0x918c, ++ 0xffef, 0x6106, 0x00ce, 0xd084, 0x0158, 0x6a28, 0x928a, 0x007f, ++ 0x1a04, 0x35a8, 0x9288, 0x3374, 0x210d, 0x918c, 0x00ff, 0x6166, ++ 0xd0dc, 0x0130, 0x6828, 0x908a, 0x007f, 0x1a04, 0x35a8, 0x605e, ++ 0x6888, 0x9084, 0x0030, 0x8004, 0x8004, 0x8004, 0x8004, 0x0006, ++ 0x2009, 0x19b1, 0x9080, 0x2737, 0x2005, 0x200a, 0x2008, 0x2001, ++ 0x0018, 0x080c, 0xa887, 0x2009, 0x0390, 0x200b, 0x0400, 0x000e, ++ 0x2009, 0x19b2, 0x9080, 0x273b, 0x2005, 0x200a, 0x6808, 0x908a, ++ 0x0100, 0x0a04, 0x35a8, 0x908a, 0x0841, 0x1a04, 0x35a8, 0x9084, ++ 0x0007, 0x1904, 0x35a8, 0x680c, 0x9005, 0x0904, 0x35a8, 0x6810, ++ 0x9005, 0x0904, 0x35a8, 0x6848, 0x6940, 0x910a, 0x1a04, 0x35a8, ++ 0x8001, 0x0904, 0x35a8, 0x684c, 0x6944, 0x910a, 0x1a04, 0x35a8, ++ 0x8001, 0x0904, 0x35a8, 0x6814, 0x908c, 0x00ff, 0x614e, 0x8007, ++ 0x9084, 0x00ff, 0x6052, 0x080c, 0x781e, 0x080c, 0x6aa1, 0x080c, ++ 0x6ad5, 0x6808, 0x602a, 0x080c, 0x2122, 0x2009, 0x0170, 0x200b, ++ 0x0080, 0xa001, 0xa001, 0x200b, 0x0000, 0x0036, 0x6b08, 0x080c, ++ 0x269e, 0x003e, 0x6000, 0x9086, 0x0000, 0x1904, 0x440b, 0x6818, ++ 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, ++ 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, ++ 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0x9084, ++ 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, ++ 0x831f, 0x20a9, 0x0004, 0x20a1, 0x19b3, 0x20e9, 0x0001, 0x4001, ++ 0x20a9, 0x0004, 0x20a1, 0x19cd, 0x20e9, 0x0001, 0x4001, 0x080c, ++ 0x87d1, 0x00c6, 0x900e, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x01c8, ++ 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c, 0x7ddf, 0x6878, ++ 0x6016, 0x6874, 0x2008, 0x9084, 0xff00, 0x8007, 0x600a, 0x9184, ++ 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003, 0x0010, 0x6003, ++ 0x0001, 0x1f04, 0x4369, 0x00ce, 0x00c6, 0x2061, 0x199c, 0x6a88, ++ 0x9284, 0xc000, 0x2010, 0x9286, 0x0000, 0x1158, 0x2063, 0x0000, ++ 0x2001, 0x0001, 0x080c, 0x2945, 0x2001, 0x0001, 0x080c, 0x2928, ++ 0x0088, 0x9286, 0x4000, 0x1148, 0x2063, 0x0001, 0x9006, 0x080c, ++ 0x2945, 0x9006, 0x080c, 0x2928, 0x0028, 0x9286, 0x8000, 0x1d30, ++ 0x2063, 0x0002, 0x00ce, 0x00e6, 0x2c70, 0x080c, 0x0eb4, 0x00ee, ++ 0x6888, 0xd0ec, 0x0130, 0x2011, 0x0114, 0x2204, 0x9085, 0x0180, ++ 0x2012, 0x6a80, 0x9284, 0x0030, 0x9086, 0x0030, 0x1128, 0x9294, ++ 0xffcf, 0x9295, 0x0020, 0x6a82, 0x2001, 0x197c, 0x6a80, 0x9294, ++ 0x0030, 0x928e, 0x0000, 0x0170, 0x928e, 0x0010, 0x0118, 0x928e, ++ 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c, 0x2713, 0x2001, 0x196d, ++ 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061, 0x0100, 0x602f, 0x0040, ++ 0x602f, 0x0000, 0x00ce, 0x080c, 0x74e9, 0x0128, 0x080c, 0x4fde, ++ 0x0110, 0x080c, 0x2664, 0x60d4, 0x9005, 0x01c0, 0x6003, 0x0001, ++ 0x2009, 0x43f3, 0x00e0, 0x080c, 0x74e9, 0x1168, 0x2011, 0x735f, ++ 0x080c, 0x863e, 0x2011, 0x7352, 0x080c, 0x874a, 0x080c, 0x77f2, ++ 0x080c, 0x741a, 0x0040, 0x080c, 0x5ee4, 0x0028, 0x6003, 0x0004, ++ 0x2009, 0x440b, 0x0020, 0x080c, 0x69cd, 0x0804, 0x3573, 0x2001, ++ 0x0170, 0x2004, 0x9084, 0x00ff, 0x9086, 0x004c, 0x1118, 0x2091, ++ 0x31bd, 0x0817, 0x2091, 0x313d, 0x0817, 0x6000, 0x9086, 0x0000, ++ 0x0904, 0x35a5, 0x2069, 0x1847, 0x7890, 0x6842, 0x7894, 0x6846, ++ 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, ++ 0x0001, 0x0804, 0x4af3, 0x9006, 0x080c, 0x2664, 0x81ff, 0x1904, ++ 0x35a5, 0x080c, 0x74e9, 0x11b0, 0x080c, 0x77ed, 0x080c, 0x6029, ++ 0x080c, 0x3368, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c, 0xcf52, ++ 0x0130, 0x080c, 0x750c, 0x1118, 0x080c, 0x74bd, 0x0038, 0x080c, ++ 0x741a, 0x0020, 0x080c, 0x5fee, 0x080c, 0x5ee4, 0x0804, 0x3573, ++ 0x81ff, 0x1904, 0x35a5, 0x080c, 0x74e9, 0x1110, 0x0804, 0x35a5, ++ 0x6194, 0x81ff, 0x01a8, 0x704f, 0x0000, 0x2001, 0x1d80, 0x2009, ++ 0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, 0x8000, ++ 0x2039, 0x0001, 0x080c, 0x4af3, 0x701f, 0x3571, 0x012e, 0x0005, ++ 0x704f, 0x0001, 0x00d6, 0x2069, 0x1d80, 0x20a9, 0x0040, 0x20e9, ++ 0x0001, 0x20a1, 0x1d80, 0x2019, 0xffff, 0x4304, 0x655c, 0x9588, ++ 0x3374, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, 0x0002, ++ 0x2100, 0x9506, 0x01a8, 0x080c, 0x6625, 0x1190, 0xb814, 0x821c, ++ 0x0238, 0x9398, 0x1d80, 0x9085, 0xff00, 0x8007, 0x201a, 0x0038, ++ 0x9398, 0x1d80, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, 0x8210, ++ 0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, 0x2d0c, ++ 0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1d80, 0x2099, ++ 0x1d80, 0x080c, 0x5f79, 0x0804, 0x4465, 0x080c, 0x4ada, 0x0904, ++ 0x35a8, 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, ++ 0x080c, 0x56da, 0xd0b4, 0x0558, 0x7884, 0x908e, 0x007e, 0x0538, ++ 0x908e, 0x007f, 0x0520, 0x908e, 0x0080, 0x0508, 0x080c, 0x3363, ++ 0x1148, 0xb800, 0xd08c, 0x11d8, 0xb804, 0x9084, 0x00ff, 0x9086, ++ 0x0006, 0x11a8, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, ++ 0xca07, 0x1120, 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, 0x0003, ++ 0x701f, 0x44f3, 0x0005, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x20a9, ++ 0x002b, 0xb8c4, 0x20e0, 0xb8c8, 0x2098, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006, ++ 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, 0x2098, 0x080c, ++ 0x0fb7, 0x0070, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x000a, 0x20a0, ++ 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0fb7, ++ 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, ++ 0x0002, 0x2009, 0x002b, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, ++ 0x4af3, 0x81ff, 0x1904, 0x35a5, 0x080c, 0x4abe, 0x0904, 0x35a8, ++ 0x080c, 0x6866, 0x0904, 0x35a5, 0x0058, 0xa878, 0x9005, 0x0120, ++ 0x2009, 0x0004, 0x0804, 0x35a5, 0xa974, 0xaa94, 0x0804, 0x3573, ++ 0x080c, 0x56e2, 0x0904, 0x3573, 0x701f, 0x453d, 0x7007, 0x0003, ++ 0x0005, 0x81ff, 0x1904, 0x35a5, 0x7888, 0x908a, 0x1000, 0x1a04, ++ 0x35a8, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x080c, 0x6a6b, 0x0120, ++ 0x080c, 0x6a73, 0x1904, 0x35a8, 0x080c, 0x68eb, 0x0904, 0x35a5, ++ 0x2019, 0x0004, 0x900e, 0x080c, 0x6878, 0x0904, 0x35a5, 0x7984, ++ 0x7a88, 0x04c9, 0x08a8, 0xa89c, 0x908a, 0x1000, 0x12f8, 0x080c, ++ 0x4ad8, 0x01e0, 0x080c, 0x6a6b, 0x0118, 0x080c, 0x6a73, 0x11b0, ++ 0x080c, 0x68eb, 0x2009, 0x0002, 0x0168, 0x2009, 0x0002, 0x2019, ++ 0x0004, 0x080c, 0x6878, 0x2009, 0x0003, 0x0120, 0xa998, 0xaa9c, ++ 0x00d1, 0x0060, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0x080c, 0x56e2, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0000, 0x0005, 0x9186, 0x00ff, 0x0110, 0x0071, 0x0060, ++ 0x2029, 0x007e, 0x2061, 0x1800, 0x645c, 0x2400, 0x9506, 0x0110, ++ 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x6625, 0x1138, ++ 0x2200, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x864c, 0x0005, ++ 0x81ff, 0x1904, 0x35a5, 0x798c, 0x2001, 0x1980, 0x918c, 0x8000, ++ 0x2102, 0x080c, 0x4abe, 0x0904, 0x35a8, 0x080c, 0x6a6b, 0x0120, ++ 0x080c, 0x6a73, 0x1904, 0x35a8, 0x080c, 0x66ec, 0x0904, 0x35a5, ++ 0x080c, 0x686f, 0x0904, 0x35a5, 0x2001, 0x1980, 0x2004, 0xd0fc, ++ 0x1904, 0x3573, 0x0804, 0x4548, 0xa9a0, 0x2001, 0x1980, 0x918c, ++ 0x8000, 0xc18d, 0x2102, 0x080c, 0x4acb, 0x01a0, 0x080c, 0x6a6b, ++ 0x0118, 0x080c, 0x6a73, 0x1170, 0x080c, 0x66ec, 0x2009, 0x0002, ++ 0x0128, 0x080c, 0x686f, 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, ++ 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, ++ 0x0030, 0x0005, 0xa897, 0x4000, 0x2001, 0x1980, 0x2004, 0xd0fc, ++ 0x1128, 0x080c, 0x56e2, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0000, 0x0005, 0x81ff, 0x1904, 0x35a5, 0x798c, ++ 0x2001, 0x197f, 0x918c, 0x8000, 0x2102, 0x080c, 0x4abe, 0x0904, ++ 0x35a8, 0x080c, 0x6a6b, 0x0120, 0x080c, 0x6a73, 0x1904, 0x35a8, ++ 0x080c, 0x66ec, 0x0904, 0x35a5, 0x080c, 0x685d, 0x0904, 0x35a5, ++ 0x2001, 0x197f, 0x2004, 0xd0fc, 0x1904, 0x3573, 0x0804, 0x4548, ++ 0xa9a0, 0x2001, 0x197f, 0x918c, 0x8000, 0xc18d, 0x2102, 0x080c, ++ 0x4acb, 0x01a0, 0x080c, 0x6a6b, 0x0118, 0x080c, 0x6a73, 0x1170, ++ 0x080c, 0x66ec, 0x2009, 0x0002, 0x0128, 0x080c, 0x685d, 0x1170, ++ 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0x2001, 0x197f, 0x2004, 0xd0fc, 0x1128, 0x080c, 0x56e2, 0x0110, ++ 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, ++ 0x6100, 0x0804, 0x3573, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x080c, ++ 0x56ee, 0x1904, 0x35a5, 0x79a8, 0xd184, 0x1158, 0xb834, 0x8007, ++ 0x789e, 0xb830, 0x8007, 0x789a, 0xbb2c, 0x831f, 0xba28, 0x8217, ++ 0x0050, 0xb824, 0x8007, 0x789e, 0xb820, 0x8007, 0x789a, 0xbb1c, ++ 0x831f, 0xba18, 0x8217, 0xb900, 0x918c, 0x0200, 0x0804, 0x3573, ++ 0x78a8, 0x909c, 0x0003, 0xd0b4, 0x1140, 0x939a, 0x0003, 0x1a04, ++ 0x35a5, 0x625c, 0x7884, 0x9206, 0x1548, 0x080c, 0x87bb, 0x2001, ++ 0xfff4, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, ++ 0x0000, 0x0006, 0x78a8, 0x9084, 0x0080, 0x1118, 0x000e, 0x0804, ++ 0x4af3, 0x000e, 0x2031, 0x0000, 0x2061, 0x18b8, 0x2c44, 0xa66a, ++ 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, ++ 0x1124, 0x7007, 0x0002, 0x701f, 0x46fe, 0x0005, 0x81ff, 0x1904, ++ 0x35a5, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x080c, 0x6a6b, 0x1904, ++ 0x35a5, 0x00c6, 0x080c, 0x4aa7, 0x00ce, 0x0904, 0x35a5, 0xa867, ++ 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x7ea8, 0x080c, 0xc9ad, 0x0904, ++ 0x35a5, 0x7007, 0x0003, 0x701f, 0x4702, 0x0005, 0x080c, 0x4246, ++ 0x0804, 0x3573, 0xa830, 0x9086, 0x0100, 0x0904, 0x35a5, 0x8906, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, ++ 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x4af3, ++ 0x9006, 0x080c, 0x2664, 0x78a8, 0x9084, 0x00ff, 0x9086, 0x00ff, ++ 0x0118, 0x81ff, 0x1904, 0x35a5, 0x080c, 0x74e9, 0x0110, 0x080c, ++ 0x5fee, 0x7888, 0x908a, 0x1000, 0x1a04, 0x35a8, 0x7984, 0x9186, ++ 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x35a8, 0x2100, 0x080c, ++ 0x262e, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061, 0x1a03, ++ 0x601b, 0x0000, 0x601f, 0x0000, 0x6073, 0x0000, 0x6077, 0x0000, ++ 0x080c, 0x74e9, 0x1158, 0x080c, 0x77ed, 0x080c, 0x6029, 0x9085, ++ 0x0001, 0x080c, 0x7530, 0x080c, 0x741a, 0x00f0, 0x080c, 0xa896, ++ 0x080c, 0xab5e, 0x080c, 0xa8b2, 0x2061, 0x0100, 0x2001, 0x1818, ++ 0x2004, 0x9084, 0x00ff, 0x810f, 0x9105, 0x604a, 0x6043, 0x0090, ++ 0x6043, 0x0010, 0x2009, 0x1999, 0x200b, 0x0000, 0x2009, 0x002d, ++ 0x2011, 0x5f14, 0x080c, 0x8708, 0x7984, 0x080c, 0x74e9, 0x1110, ++ 0x2009, 0x00ff, 0x7a88, 0x080c, 0x45ab, 0x012e, 0x00ce, 0x002e, ++ 0x0804, 0x3573, 0x7984, 0x080c, 0x65c4, 0x2b08, 0x1904, 0x35a8, ++ 0x0804, 0x3573, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, ++ 0x60dc, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, ++ 0x35a5, 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, ++ 0x7984, 0x9192, 0x0021, 0x1a04, 0x35a8, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0xa85c, 0x9080, 0x0019, 0x702a, 0xaf60, 0x7736, 0x080c, ++ 0x4af0, 0x701f, 0x47ba, 0x7880, 0x9086, 0x006e, 0x0110, 0x701f, ++ 0x5190, 0x0005, 0x2009, 0x0080, 0x080c, 0x6625, 0x1118, 0x080c, ++ 0x6a6b, 0x0120, 0x2021, 0x400a, 0x0804, 0x3575, 0x00d6, 0x0096, ++ 0xa964, 0xaa6c, 0xab70, 0xac74, 0xad78, 0xae7c, 0xa884, 0x90be, ++ 0x0100, 0x0904, 0x4853, 0x90be, 0x0112, 0x0904, 0x4853, 0x90be, ++ 0x0113, 0x0904, 0x4853, 0x90be, 0x0114, 0x0904, 0x4853, 0x90be, ++ 0x0117, 0x0904, 0x4853, 0x90be, 0x011a, 0x0904, 0x4853, 0x90be, ++ 0x011c, 0x0904, 0x4853, 0x90be, 0x0121, 0x0904, 0x483a, 0x90be, ++ 0x0131, 0x0904, 0x483a, 0x90be, 0x0171, 0x0904, 0x4853, 0x90be, ++ 0x0173, 0x0904, 0x4853, 0x90be, 0x01a1, 0x1128, 0xa894, 0x8007, ++ 0xa896, 0x0804, 0x485e, 0x90be, 0x0212, 0x0904, 0x4847, 0x90be, ++ 0x0213, 0x05e8, 0x90be, 0x0214, 0x0500, 0x90be, 0x0217, 0x0188, ++ 0x90be, 0x021a, 0x1120, 0xa89c, 0x8007, 0xa89e, 0x04e0, 0x90be, ++ 0x021f, 0x05c8, 0x90be, 0x0300, 0x05b0, 0x009e, 0x00de, 0x0804, ++ 0x35a8, 0x7028, 0x9080, 0x0010, 0x2098, 0x20a0, 0x7034, 0x20e0, ++ 0x20e8, 0x20a9, 0x0007, 0x080c, 0x489c, 0x7028, 0x9080, 0x000e, ++ 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, ++ 0x489c, 0x00c8, 0x7028, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7034, ++ 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x48a9, 0x00b8, 0x7028, ++ 0x9080, 0x000e, 0x2098, 0x20a0, 0x7034, 0x20e0, 0x20e8, 0x20a9, ++ 0x0001, 0x080c, 0x48a9, 0x7028, 0x9080, 0x000c, 0x2098, 0x20a0, ++ 0x7034, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x04f1, 0x00c6, 0x080c, ++ 0x4aa7, 0x0550, 0xa868, 0xc0fd, 0xa86a, 0xa867, 0x0119, 0x9006, ++ 0xa882, 0xa87f, 0x0020, 0xa88b, 0x0001, 0x810b, 0xa9ae, 0xa8b2, ++ 0xaab6, 0xabba, 0xacbe, 0xadc2, 0xa9c6, 0xa8ca, 0x00ce, 0x009e, ++ 0x00de, 0xa866, 0xa822, 0xa868, 0xc0fd, 0xa86a, 0xa804, 0x2048, ++ 0x080c, 0xc9c8, 0x1120, 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, ++ 0x0003, 0x701f, 0x4893, 0x0005, 0x00ce, 0x009e, 0x00de, 0x2009, ++ 0x0002, 0x0804, 0x35a5, 0xa820, 0x9086, 0x8001, 0x1904, 0x3573, ++ 0x2009, 0x0004, 0x0804, 0x35a5, 0x0016, 0x0026, 0x3510, 0x20a9, ++ 0x0002, 0x4002, 0x4104, 0x4004, 0x8211, 0x1dc8, 0x002e, 0x001e, ++ 0x0005, 0x0016, 0x0026, 0x0036, 0x0046, 0x3520, 0x20a9, 0x0004, ++ 0x4002, 0x4304, 0x4204, 0x4104, 0x4004, 0x8421, 0x1db8, 0x004e, ++ 0x003e, 0x002e, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, ++ 0x0804, 0x35a5, 0x60dc, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, ++ 0x0005, 0x0804, 0x35a5, 0x7984, 0x78a8, 0x2040, 0x080c, 0xab57, ++ 0x1120, 0x9182, 0x007f, 0x0a04, 0x35a8, 0x9186, 0x00ff, 0x0904, ++ 0x35a8, 0x9182, 0x0800, 0x1a04, 0x35a8, 0x7a8c, 0x7b88, 0x607c, ++ 0x9306, 0x1140, 0x6080, 0x924e, 0x0904, 0x35a8, 0x99cc, 0xff00, ++ 0x0904, 0x35a8, 0x0126, 0x2091, 0x8000, 0x080c, 0x49ba, 0x0904, ++ 0x493a, 0x0086, 0x90c6, 0x4000, 0x008e, 0x1538, 0x00c6, 0x0006, ++ 0x0036, 0xb818, 0xbb1c, 0x9305, 0xbb20, 0x9305, 0xbb24, 0x9305, ++ 0xbb28, 0x9305, 0xbb2c, 0x9305, 0xbb30, 0x9305, 0xbb34, 0x9305, ++ 0x003e, 0x0570, 0xd88c, 0x1128, 0x080c, 0x6a6b, 0x0110, 0xc89d, ++ 0x0438, 0x900e, 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, 0xd0bc, ++ 0x0108, 0xc18d, 0x000e, 0x00ce, 0x00b8, 0x90c6, 0x4007, 0x1110, ++ 0x2408, 0x0090, 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0060, ++ 0x90c6, 0x4009, 0x1108, 0x0040, 0x90c6, 0x4006, 0x1108, 0x0020, ++ 0x2001, 0x4005, 0x2009, 0x000a, 0x2020, 0x012e, 0x0804, 0x3575, ++ 0x000e, 0x00ce, 0x2b00, 0x7026, 0x0016, 0x00b6, 0x00c6, 0x00e6, ++ 0x2c70, 0x080c, 0xac5f, 0x0904, 0x498f, 0x2b00, 0x6012, 0x080c, ++ 0xcccc, 0x2e58, 0x00ee, 0x00e6, 0x00c6, 0x080c, 0x4aa7, 0x00ce, ++ 0x2b70, 0x1158, 0x080c, 0xabed, 0x00ee, 0x00ce, 0x00be, 0x001e, ++ 0x012e, 0x2009, 0x0002, 0x0804, 0x35a5, 0x900e, 0xa966, 0xa96a, ++ 0x2900, 0x6016, 0xa932, 0xa868, 0xc0fd, 0xd88c, 0x0108, 0xc0f5, ++ 0xa86a, 0xd89c, 0x1110, 0x080c, 0x31e7, 0x6023, 0x0001, 0x9006, ++ 0x080c, 0x6561, 0xd89c, 0x0138, 0x2001, 0x0004, 0x080c, 0x6575, ++ 0x2009, 0x0003, 0x0030, 0x2001, 0x0002, 0x080c, 0x6575, 0x2009, ++ 0x0002, 0x080c, 0xac8c, 0x78a8, 0xd094, 0x0138, 0x00ee, 0x7024, ++ 0x00e6, 0x2058, 0xb8d4, 0xc08d, 0xb8d6, 0x9085, 0x0001, 0x00ee, ++ 0x00ce, 0x00be, 0x001e, 0x012e, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x35a5, 0x7007, 0x0003, 0x701f, 0x499e, 0x0005, 0xa830, 0x9086, ++ 0x0100, 0x7024, 0x2058, 0x1138, 0x2009, 0x0004, 0xba04, 0x9294, ++ 0x00ff, 0x0804, 0x5637, 0x900e, 0xa868, 0xd0f4, 0x1904, 0x3573, ++ 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0x0804, 0x3573, 0x00e6, 0x00d6, 0x0096, 0x83ff, 0x0904, 0x4a09, ++ 0x902e, 0x080c, 0xab57, 0x0130, 0x9026, 0x20a9, 0x0800, 0x2071, ++ 0x1000, 0x0030, 0x2021, 0x007f, 0x20a9, 0x0781, 0x2071, 0x107f, ++ 0x2e04, 0x9005, 0x11b8, 0x2100, 0x9406, 0x1904, 0x4a1a, 0x2428, ++ 0x94ce, 0x007f, 0x1120, 0x92ce, 0xfffd, 0x1558, 0x0030, 0x94ce, ++ 0x0080, 0x1130, 0x92ce, 0xfffc, 0x1520, 0x93ce, 0x00ff, 0x1508, ++ 0xc5fd, 0x0480, 0x2058, 0xbf10, 0x2700, 0x9306, 0x11e8, 0xbe14, ++ 0x2600, 0x9206, 0x11c8, 0x2400, 0x9106, 0x1180, 0xd884, 0x0598, ++ 0xd894, 0x1588, 0x080c, 0x6a0b, 0x1570, 0x2001, 0x4000, 0x0460, ++ 0x080c, 0x6a6b, 0x1540, 0x2001, 0x4000, 0x0430, 0x2001, 0x4007, ++ 0x0418, 0x2001, 0x4006, 0x0400, 0x2400, 0x9106, 0x1158, 0xbe14, ++ 0x87ff, 0x1128, 0x86ff, 0x0918, 0x080c, 0xab57, 0x1900, 0x2001, ++ 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, 0x49d0, 0x85ff, 0x1130, ++ 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, 0x0030, 0x080c, 0x65c4, ++ 0x1dd0, 0xbb12, 0xba16, 0x9006, 0x9005, 0x009e, 0x00de, 0x00ee, ++ 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, 0x080c, ++ 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, 0xa867, 0x0000, ++ 0xa868, 0xc0fd, 0xa86a, 0x7884, 0x9005, 0x0904, 0x35a8, 0x9096, ++ 0x00ff, 0x0120, 0x9092, 0x0004, 0x1a04, 0x35a8, 0x2010, 0x2918, ++ 0x080c, 0x3181, 0x1120, 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, ++ 0x0003, 0x701f, 0x4a5c, 0x0005, 0xa830, 0x9086, 0x0100, 0x1904, ++ 0x3573, 0x2009, 0x0004, 0x0804, 0x35a5, 0x7984, 0x080c, 0xab57, ++ 0x1120, 0x9182, 0x007f, 0x0a04, 0x35a8, 0x9186, 0x00ff, 0x0904, ++ 0x35a8, 0x9182, 0x0800, 0x1a04, 0x35a8, 0x2001, 0x9000, 0x080c, ++ 0x5692, 0x1904, 0x35a5, 0x0804, 0x3573, 0xa998, 0x080c, 0xab57, ++ 0x1118, 0x9182, 0x007f, 0x0280, 0x9186, 0x00ff, 0x0168, 0x9182, ++ 0x0800, 0x1250, 0x2001, 0x9000, 0x080c, 0x5692, 0x11a8, 0x0060, ++ 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0000, 0x0005, 0x2009, 0x000a, 0x0c48, 0x080c, ++ 0x103a, 0x0198, 0x9006, 0xa802, 0x7014, 0x9005, 0x1120, 0x2900, ++ 0x7016, 0x701a, 0x0040, 0x7018, 0xa802, 0x0086, 0x2040, 0x2900, ++ 0xa006, 0x701a, 0x008e, 0x9085, 0x0001, 0x0005, 0x7984, 0x080c, ++ 0x6625, 0x1130, 0x7e88, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, ++ 0x905e, 0x8bff, 0x0005, 0xa998, 0x080c, 0x6625, 0x1130, 0xae9c, ++ 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005, ++ 0xae98, 0x0008, 0x7e84, 0x2608, 0x080c, 0x6625, 0x1108, 0x0008, ++ 0x905e, 0x8bff, 0x0005, 0x0016, 0x7114, 0x81ff, 0x0128, 0x2148, ++ 0xa904, 0x080c, 0x106c, 0x0cc8, 0x7116, 0x711a, 0x001e, 0x0005, ++ 0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0x18b8, 0x2c44, ++ 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a, ++ 0x080c, 0x1124, 0x7007, 0x0002, 0x701f, 0x3573, 0x0005, 0x00f6, ++ 0x0126, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x18b0, 0x2004, ++ 0x9005, 0x1190, 0x0e04, 0x4b24, 0x7a36, 0x7833, 0x0012, 0x7a82, ++ 0x7b86, 0x7c8a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, ++ 0x190c, 0x11d6, 0x0804, 0x4b8a, 0x0016, 0x0086, 0x0096, 0x00c6, ++ 0x00e6, 0x2071, 0x189e, 0x7044, 0x9005, 0x1540, 0x7148, 0x9182, ++ 0x0010, 0x0288, 0x7038, 0x2060, 0x080c, 0x103a, 0x0904, 0x4b82, ++ 0xa84b, 0x0000, 0x2900, 0x7046, 0x2001, 0x0002, 0x9080, 0x1e55, ++ 0x2005, 0xa846, 0x0098, 0x7038, 0x90e0, 0x0004, 0x2001, 0x18ba, ++ 0x9c82, 0x18fa, 0x0210, 0x2061, 0x18ba, 0x2c00, 0x703a, 0x7148, ++ 0x81ff, 0x1108, 0x703e, 0x8108, 0x714a, 0x0460, 0x7148, 0x8108, ++ 0x714a, 0x7044, 0x2040, 0xa144, 0x2105, 0x0016, 0x908a, 0x0036, ++ 0x1a0c, 0x0d7d, 0x2060, 0x001e, 0x8108, 0x2105, 0x9005, 0xa146, ++ 0x1520, 0x080c, 0x103a, 0x1130, 0x8109, 0xa946, 0x7148, 0x8109, ++ 0x714a, 0x00d8, 0x9006, 0xa806, 0xa84a, 0xa046, 0x2800, 0xa802, ++ 0x2900, 0xa006, 0x7046, 0x2001, 0x0002, 0x9080, 0x1e55, 0x2005, ++ 0xa846, 0x0058, 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x009e, ++ 0x008e, 0x001e, 0x012e, 0x00fe, 0x0005, 0x2c00, 0x9082, 0x001b, ++ 0x0002, 0x4bac, 0x4bac, 0x4bae, 0x4bac, 0x4bac, 0x4bac, 0x4bb2, ++ 0x4bac, 0x4bac, 0x4bac, 0x4bb6, 0x4bac, 0x4bac, 0x4bac, 0x4bba, ++ 0x4bac, 0x4bac, 0x4bac, 0x4bbe, 0x4bac, 0x4bac, 0x4bac, 0x4bc2, ++ 0x4bac, 0x4bac, 0x4bac, 0x4bc7, 0x080c, 0x0d7d, 0xa276, 0xa37a, ++ 0xa47e, 0x0898, 0xa286, 0xa38a, 0xa48e, 0x0878, 0xa296, 0xa39a, ++ 0xa49e, 0x0858, 0xa2a6, 0xa3aa, 0xa4ae, 0x0838, 0xa2b6, 0xa3ba, ++ 0xa4be, 0x0818, 0xa2c6, 0xa3ca, 0xa4ce, 0x0804, 0x4b85, 0xa2d6, ++ 0xa3da, 0xa4de, 0x0804, 0x4b85, 0x00e6, 0x2071, 0x189e, 0x7048, ++ 0x9005, 0x0904, 0x4c5e, 0x0126, 0x2091, 0x8000, 0x0e04, 0x4c5d, ++ 0x00f6, 0x2079, 0x0000, 0x00c6, 0x0096, 0x0086, 0x0076, 0x9006, ++ 0x2038, 0x7040, 0x2048, 0x9005, 0x0500, 0xa948, 0x2105, 0x0016, ++ 0x908a, 0x0036, 0x1a0c, 0x0d7d, 0x2060, 0x001e, 0x8108, 0x2105, ++ 0x9005, 0xa94a, 0x1904, 0x4c60, 0xa804, 0x9005, 0x090c, 0x0d7d, ++ 0x7042, 0x2938, 0x2040, 0xa003, 0x0000, 0x2001, 0x0002, 0x9080, ++ 0x1e55, 0x2005, 0xa04a, 0x0804, 0x4c60, 0x703c, 0x2060, 0x2c14, ++ 0x6304, 0x6408, 0x650c, 0x2200, 0x7836, 0x7833, 0x0012, 0x7882, ++ 0x2300, 0x7886, 0x2400, 0x788a, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x11d6, 0x87ff, 0x0118, 0x2748, 0x080c, ++ 0x106c, 0x7048, 0x8001, 0x704a, 0x9005, 0x1170, 0x7040, 0x2048, ++ 0x9005, 0x0128, 0x080c, 0x106c, 0x9006, 0x7042, 0x7046, 0x703b, ++ 0x18ba, 0x703f, 0x18ba, 0x0420, 0x7040, 0x9005, 0x1508, 0x7238, ++ 0x2c00, 0x9206, 0x0148, 0x9c80, 0x0004, 0x90fa, 0x18fa, 0x0210, ++ 0x2001, 0x18ba, 0x703e, 0x00a0, 0x9006, 0x703e, 0x703a, 0x7044, ++ 0x9005, 0x090c, 0x0d7d, 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, ++ 0x7042, 0x2001, 0x0002, 0x9080, 0x1e55, 0x2005, 0xa84a, 0x0000, ++ 0x007e, 0x008e, 0x009e, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, ++ 0x2c00, 0x9082, 0x001b, 0x0002, 0x4c7f, 0x4c7f, 0x4c81, 0x4c7f, ++ 0x4c7f, 0x4c7f, 0x4c86, 0x4c7f, 0x4c7f, 0x4c7f, 0x4c8b, 0x4c7f, ++ 0x4c7f, 0x4c7f, 0x4c90, 0x4c7f, 0x4c7f, 0x4c7f, 0x4c95, 0x4c7f, ++ 0x4c7f, 0x4c7f, 0x4c9a, 0x4c7f, 0x4c7f, 0x4c7f, 0x4c9f, 0x080c, ++ 0x0d7d, 0xaa74, 0xab78, 0xac7c, 0x0804, 0x4c0b, 0xaa84, 0xab88, ++ 0xac8c, 0x0804, 0x4c0b, 0xaa94, 0xab98, 0xac9c, 0x0804, 0x4c0b, ++ 0xaaa4, 0xaba8, 0xacac, 0x0804, 0x4c0b, 0xaab4, 0xabb8, 0xacbc, ++ 0x0804, 0x4c0b, 0xaac4, 0xabc8, 0xaccc, 0x0804, 0x4c0b, 0xaad4, ++ 0xabd8, 0xacdc, 0x0804, 0x4c0b, 0x0016, 0x0026, 0x0036, 0x00b6, ++ 0x00c6, 0x2009, 0x007e, 0x080c, 0x6625, 0x2019, 0x0001, 0xb85c, ++ 0xd0ac, 0x0110, 0x2019, 0x0000, 0x2011, 0x801b, 0x080c, 0x4b07, ++ 0x00ce, 0x00be, 0x003e, 0x002e, 0x001e, 0x0005, 0x0026, 0x080c, ++ 0x56da, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x4b07, 0x002e, ++ 0x0005, 0x81ff, 0x1904, 0x35a5, 0x0126, 0x2091, 0x8000, 0x6030, ++ 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x74e9, 0x1158, 0x080c, ++ 0x77ed, 0x080c, 0x6029, 0x9085, 0x0001, 0x080c, 0x7530, 0x080c, ++ 0x741a, 0x0010, 0x080c, 0x5ee4, 0x012e, 0x0804, 0x3573, 0x81ff, ++ 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, 0x080c, 0x56ee, 0x0120, ++ 0x2009, 0x0007, 0x0804, 0x35a5, 0x080c, 0x6a63, 0x0120, 0x2009, ++ 0x0008, 0x0804, 0x35a5, 0x080c, 0x3363, 0x0128, 0x7984, 0x080c, ++ 0x65c4, 0x1904, 0x35a8, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x2b00, ++ 0x7026, 0x080c, 0x6a6b, 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, ++ 0x900e, 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, ++ 0xc18d, 0x0804, 0x3573, 0x080c, 0x4aa7, 0x0904, 0x35a5, 0x9006, ++ 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xca6a, 0x0904, ++ 0x35a5, 0x7888, 0xd094, 0x0118, 0xb8d4, 0xc08d, 0xb8d6, 0x7007, ++ 0x0003, 0x701f, 0x4d80, 0x0005, 0x2061, 0x1800, 0x080c, 0x56ee, ++ 0x2009, 0x0007, 0x1578, 0x080c, 0x6a63, 0x0118, 0x2009, 0x0008, ++ 0x0448, 0x080c, 0x3363, 0x0120, 0xa998, 0x080c, 0x65c4, 0x1530, ++ 0x080c, 0x4ad8, 0x0518, 0x080c, 0x6a6b, 0xa89c, 0x1168, 0x9084, ++ 0x0005, 0x1150, 0x900e, 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, ++ 0xd0bc, 0x0108, 0xc18d, 0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, ++ 0xca6a, 0x11e0, 0xa89c, 0xd094, 0x0118, 0xb8d4, 0xc08d, 0xb8d6, ++ 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, ++ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, ++ 0xa99a, 0x9006, 0x918d, 0x0001, 0x2008, 0x0005, 0x9006, 0x0005, ++ 0xa830, 0x9086, 0x0100, 0x7024, 0x2058, 0x1110, 0x0804, 0x5637, ++ 0x900e, 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, ++ 0xc18d, 0x0804, 0x3573, 0x080c, 0x56ee, 0x0120, 0x2009, 0x0007, ++ 0x0804, 0x35a5, 0x7f84, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, ++ 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, 0x900e, 0x2130, ++ 0x7126, 0x7132, 0xa860, 0x20e8, 0x7036, 0xa85c, 0x9080, 0x0005, ++ 0x702a, 0x20a0, 0x080c, 0x6625, 0x1904, 0x4e22, 0x080c, 0x6a6b, ++ 0x0138, 0x080c, 0x6a73, 0x0120, 0x080c, 0x6a0b, 0x1904, 0x4e22, ++ 0xd794, 0x1110, 0xd784, 0x01a8, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, ++ 0x0006, 0x2098, 0x3400, 0xd794, 0x0160, 0x20a9, 0x0008, 0x4003, ++ 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x20a9, 0x0002, 0x080c, 0x48a9, ++ 0x0048, 0x20a9, 0x0004, 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, ++ 0x080c, 0x48a9, 0x9186, 0x007e, 0x0170, 0x9186, 0x0080, 0x0158, ++ 0x080c, 0x6a6b, 0x90c2, 0x0006, 0x1210, 0xc1fd, 0x0020, 0x080c, ++ 0x6914, 0x1108, 0xc1fd, 0x4104, 0xc1fc, 0xd794, 0x0528, 0xb8c4, ++ 0x20e0, 0xb8c8, 0x2060, 0x9c80, 0x0000, 0x2098, 0x20a9, 0x0002, ++ 0x4003, 0x9c80, 0x0003, 0x2098, 0x20a9, 0x0001, 0x4005, 0x9c80, ++ 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002, 0x4003, 0x2098, 0x20a0, ++ 0x3d00, 0x20e0, 0x080c, 0x489c, 0x9c80, 0x0026, 0x2098, 0xb8c4, ++ 0x20e0, 0x20a9, 0x0002, 0x4003, 0xd794, 0x0110, 0x96b0, 0x000b, ++ 0x96b0, 0x0005, 0x8108, 0x080c, 0xab57, 0x0118, 0x9186, 0x0800, ++ 0x0040, 0xd78c, 0x0120, 0x9186, 0x0800, 0x0170, 0x0018, 0x9186, ++ 0x007e, 0x0150, 0xd794, 0x0118, 0x9686, 0x0020, 0x0010, 0x9686, ++ 0x0028, 0x0150, 0x0804, 0x4db2, 0x86ff, 0x1120, 0x7124, 0x810b, ++ 0x0804, 0x3573, 0x7033, 0x0001, 0x7122, 0x7024, 0x9600, 0x7026, ++ 0x772e, 0x2061, 0x18b8, 0x2c44, 0xa06b, 0x0000, 0xa67a, 0x7034, ++ 0xa072, 0x7028, 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, ++ 0x1124, 0x7007, 0x0002, 0x701f, 0x4e5e, 0x0005, 0x7030, 0x9005, ++ 0x1180, 0x7120, 0x7028, 0x20a0, 0x772c, 0x9036, 0x7034, 0x20e8, ++ 0x2061, 0x18b8, 0x2c44, 0xa28c, 0xa390, 0xa494, 0xa598, 0x0804, ++ 0x4db2, 0x7124, 0x810b, 0x0804, 0x3573, 0x2029, 0x007e, 0x7984, ++ 0x7a88, 0x7b8c, 0x7c98, 0x9184, 0xff00, 0x8007, 0x90e2, 0x0020, ++ 0x0a04, 0x35a8, 0x9502, 0x0a04, 0x35a8, 0x9184, 0x00ff, 0x90e2, ++ 0x0020, 0x0a04, 0x35a8, 0x9502, 0x0a04, 0x35a8, 0x9284, 0xff00, ++ 0x8007, 0x90e2, 0x0020, 0x0a04, 0x35a8, 0x9502, 0x0a04, 0x35a8, ++ 0x9284, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x35a8, 0x9502, 0x0a04, ++ 0x35a8, 0x9384, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x35a8, ++ 0x9502, 0x0a04, 0x35a8, 0x9384, 0x00ff, 0x90e2, 0x0020, 0x0a04, ++ 0x35a8, 0x9502, 0x0a04, 0x35a8, 0x9484, 0xff00, 0x8007, 0x90e2, ++ 0x0020, 0x0a04, 0x35a8, 0x9502, 0x0a04, 0x35a8, 0x9484, 0x00ff, ++ 0x90e2, 0x0020, 0x0a04, 0x35a8, 0x9502, 0x0a04, 0x35a8, 0x2061, ++ 0x1989, 0x6102, 0x6206, 0x630a, 0x640e, 0x0804, 0x3573, 0x080c, ++ 0x4aa7, 0x0904, 0x35a5, 0x2009, 0x0016, 0x7a8c, 0x7b88, 0x7c9c, ++ 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4af0, 0x701f, ++ 0x4ee2, 0x0005, 0x2001, 0x0138, 0x2003, 0x0000, 0x00e6, 0x2071, ++ 0x0300, 0x701c, 0xd0a4, 0x1de8, 0x00ee, 0x20a9, 0x0016, 0x896e, ++ 0x8d6e, 0x8d6f, 0x9d84, 0xffc0, 0x9080, 0x0019, 0x2098, 0x9d84, ++ 0x003f, 0x20e0, 0x2069, 0x1877, 0x20e9, 0x0001, 0x2da0, 0x4003, ++ 0x6800, 0x9005, 0x0904, 0x4f63, 0x6804, 0x2008, 0x918c, 0xfff8, ++ 0x1904, 0x4f63, 0x680c, 0x9005, 0x0904, 0x4f63, 0x9082, 0xff01, ++ 0x1a04, 0x4f63, 0x6810, 0x9082, 0x005c, 0x0a04, 0x4f63, 0x6824, ++ 0x2008, 0x9082, 0x0008, 0x0a04, 0x4f63, 0x9182, 0x0400, 0x1a04, ++ 0x4f63, 0x0056, 0x2029, 0x0000, 0x080c, 0x8d0a, 0x005e, 0x6944, ++ 0x6820, 0x9102, 0x06c0, 0x6820, 0x9082, 0x0019, 0x16a0, 0x6828, ++ 0x6944, 0x810c, 0x9102, 0x0678, 0x6840, 0x9082, 0x000f, 0x1658, ++ 0x080c, 0x1053, 0x2900, 0x0904, 0x4f7d, 0x684e, 0x00e6, 0x2071, ++ 0x1930, 0x00b6, 0x2059, 0x0000, 0x080c, 0x8bc6, 0x00be, 0x00ee, ++ 0x0558, 0x080c, 0x8920, 0x080c, 0x8966, 0x11e0, 0x6857, 0x0000, ++ 0x00c6, 0x2061, 0x0100, 0x6104, 0x918d, 0x2000, 0x6106, 0x6b10, ++ 0x2061, 0x1a6b, 0x630a, 0x00ce, 0x080c, 0x2713, 0x2001, 0x0138, ++ 0x2102, 0x0804, 0x3573, 0x080c, 0x2713, 0x2001, 0x0138, 0x2102, ++ 0x0804, 0x35a8, 0x00e6, 0x2071, 0x1930, 0x080c, 0x8d9b, 0x080c, ++ 0x8daa, 0x080c, 0x8bb5, 0x00ee, 0x2001, 0x188a, 0x204c, 0x080c, ++ 0x106c, 0x2001, 0x188a, 0x2003, 0x0000, 0x080c, 0x2713, 0x2001, ++ 0x0138, 0x2102, 0x0804, 0x35a5, 0x2001, 0x1924, 0x200c, 0x918e, ++ 0x0000, 0x0904, 0x4fdc, 0x080c, 0x8bb0, 0x0904, 0x4fdc, 0x2001, ++ 0x0101, 0x200c, 0x918c, 0xdfff, 0x2102, 0x2001, 0x0138, 0x2003, ++ 0x0000, 0x00e6, 0x2071, 0x0300, 0x701c, 0xd0a4, 0x1de8, 0x00ee, ++ 0x080c, 0x8bb5, 0x2001, 0x0035, 0x080c, 0x1679, 0x00c6, 0x2061, ++ 0x193c, 0x6004, 0x6100, 0x9106, 0x1de0, 0x00ce, 0x080c, 0x2713, ++ 0x2001, 0x0138, 0x2102, 0x00e6, 0x00f6, 0x2071, 0x1923, 0x080c, ++ 0x8af1, 0x0120, 0x2f00, 0x080c, 0x8b7b, 0x0cc8, 0x00fe, 0x00ee, ++ 0x0126, 0x2091, 0x8000, 0x2001, 0x188a, 0x200c, 0x81ff, 0x0138, ++ 0x2148, 0x080c, 0x106c, 0x2001, 0x188a, 0x2003, 0x0000, 0x2001, ++ 0x183d, 0x2003, 0x0020, 0x00e6, 0x2071, 0x1930, 0x080c, 0x8d9b, ++ 0x080c, 0x8daa, 0x00ee, 0x012e, 0x0804, 0x3573, 0x0006, 0x080c, ++ 0x56da, 0xd0cc, 0x000e, 0x0005, 0x0006, 0x080c, 0x56de, 0xd0bc, ++ 0x000e, 0x0005, 0x6174, 0x7a84, 0x6300, 0x82ff, 0x1118, 0x7986, ++ 0x0804, 0x3573, 0x83ff, 0x1904, 0x35a8, 0x2001, 0xfff0, 0x9200, ++ 0x1a04, 0x35a8, 0x2019, 0xffff, 0x6078, 0x9302, 0x9200, 0x0a04, ++ 0x35a8, 0x7986, 0x6276, 0x0804, 0x3573, 0x080c, 0x56ee, 0x1904, ++ 0x35a5, 0x7c88, 0x7d84, 0x7e98, 0x7f8c, 0x080c, 0x4aa7, 0x0904, ++ 0x35a5, 0x900e, 0x901e, 0x7326, 0x7332, 0xa860, 0x20e8, 0x7036, ++ 0xa85c, 0x9080, 0x0003, 0x702a, 0x20a0, 0x91d8, 0x1000, 0x2b5c, ++ 0x8bff, 0x0178, 0x080c, 0x6a6b, 0x0118, 0x080c, 0x6a73, 0x1148, ++ 0x20a9, 0x0001, 0xb814, 0x4004, 0xb810, 0x4004, 0x4104, 0x9398, ++ 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c, 0x0170, ++ 0x0c20, 0x83ff, 0x1148, 0x7224, 0x900e, 0x2001, 0x0003, 0x080c, ++ 0x9166, 0x2208, 0x0804, 0x3573, 0x7033, 0x0001, 0x7122, 0x7024, ++ 0x9300, 0x7026, 0x2061, 0x18b8, 0x2c44, 0xa06b, 0x0000, 0xa37a, ++ 0x7028, 0xa076, 0x7034, 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, ++ 0x080c, 0x1124, 0x7007, 0x0002, 0x701f, 0x505f, 0x0005, 0x7030, ++ 0x9005, 0x1178, 0x7120, 0x7028, 0x20a0, 0x901e, 0x7034, 0x20e8, ++ 0x2061, 0x18b8, 0x2c44, 0xa48c, 0xa590, 0xa694, 0xa798, 0x0804, ++ 0x501d, 0x7224, 0x900e, 0x2001, 0x0003, 0x080c, 0x9166, 0x2208, ++ 0x0804, 0x3573, 0x00f6, 0x00e6, 0x080c, 0x56ee, 0x2009, 0x0007, ++ 0x1904, 0x50f2, 0x2071, 0x189e, 0x745c, 0x84ff, 0x2009, 0x000e, ++ 0x1904, 0x50f2, 0xac9c, 0xad98, 0xaea4, 0xafa0, 0x0096, 0x080c, ++ 0x1053, 0x2009, 0x0002, 0x0904, 0x50f2, 0x2900, 0x705e, 0x900e, ++ 0x901e, 0x7356, 0x7362, 0xa860, 0x7066, 0xa85c, 0x9080, 0x0003, ++ 0x705a, 0x20a0, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, ++ 0x6a6b, 0x0118, 0x080c, 0x6a73, 0x1148, 0xb814, 0x20a9, 0x0001, ++ 0x4004, 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, ++ 0x0800, 0x0120, 0x9386, 0x003c, 0x01e8, 0x0c20, 0x83ff, 0x11c0, ++ 0x7254, 0x900e, 0x2001, 0x0003, 0x080c, 0x9166, 0x2208, 0x009e, ++ 0xa897, 0x4000, 0xa99a, 0x715c, 0x81ff, 0x090c, 0x0d7d, 0x2148, ++ 0x080c, 0x106c, 0x9006, 0x705e, 0x918d, 0x0001, 0x2008, 0x0418, ++ 0x7063, 0x0001, 0x7152, 0x7054, 0x9300, 0x7056, 0x2061, 0x18b9, ++ 0x2c44, 0xa37a, 0x7058, 0xa076, 0x7064, 0xa072, 0xa48e, 0xa592, ++ 0xa696, 0xa79a, 0xa09f, 0x50fe, 0x000e, 0xa0a2, 0x080c, 0x1124, ++ 0x9006, 0x0048, 0x009e, 0xa897, 0x4005, 0xa99a, 0x900e, 0x9085, ++ 0x0001, 0x2001, 0x0030, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0xa0a0, ++ 0x904d, 0x090c, 0x0d7d, 0x00e6, 0x2071, 0x189e, 0xa06c, 0x908e, ++ 0x0100, 0x0138, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4002, ++ 0x00d8, 0x7060, 0x9005, 0x1158, 0x7150, 0x7058, 0x20a0, 0x901e, ++ 0x7064, 0x20e8, 0xa48c, 0xa590, 0xa694, 0xa798, 0x0428, 0xa87b, ++ 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x7254, 0x900e, 0x2001, ++ 0x0003, 0x080c, 0x9166, 0xaa9a, 0x715c, 0x81ff, 0x090c, 0x0d7d, ++ 0x2148, 0x080c, 0x106c, 0x705f, 0x0000, 0xa0a0, 0x2048, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, 0xa09f, 0x0000, 0xa0a3, ++ 0x0000, 0x00ee, 0x00fe, 0x0005, 0x91d8, 0x1000, 0x2b5c, 0x8bff, ++ 0x0178, 0x080c, 0x6a6b, 0x0118, 0x080c, 0x6a73, 0x1148, 0xb814, ++ 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, ++ 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c, 0x0518, 0x0c20, ++ 0x83ff, 0x11f0, 0x7154, 0x810c, 0xa99a, 0xa897, 0x4000, 0x715c, ++ 0x81ff, 0x090c, 0x0d7d, 0x2148, 0x080c, 0x106c, 0x9006, 0x705e, ++ 0x918d, 0x0001, 0x2008, 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6d80, 0x012e, 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x0070, ++ 0x7063, 0x0001, 0x7152, 0x7054, 0x9300, 0x7056, 0xa37a, 0xa48e, ++ 0xa592, 0xa696, 0xa79a, 0x080c, 0x1124, 0x9006, 0x00ee, 0x0005, ++ 0x0096, 0xa88c, 0x90be, 0x7000, 0x0148, 0x90be, 0x7100, 0x0130, ++ 0x90be, 0x7200, 0x0118, 0x009e, 0x0804, 0x35a8, 0xa884, 0xa988, ++ 0x080c, 0x25fb, 0x1518, 0x080c, 0x65c4, 0x1500, 0x7126, 0xbe12, ++ 0xbd16, 0xae7c, 0x080c, 0x4aa7, 0x01c8, 0x080c, 0x4aa7, 0x01b0, ++ 0x009e, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0xa823, 0x0000, ++ 0xa804, 0x2048, 0x080c, 0xc9e8, 0x1120, 0x2009, 0x0003, 0x0804, ++ 0x35a5, 0x7007, 0x0003, 0x701f, 0x51cb, 0x0005, 0x009e, 0x2009, ++ 0x0002, 0x0804, 0x35a5, 0x7124, 0x080c, 0x32fc, 0xa820, 0x9086, ++ 0x8001, 0x1120, 0x2009, 0x0004, 0x0804, 0x35a5, 0x2900, 0x7022, ++ 0xa804, 0x0096, 0x2048, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, ++ 0x9084, 0xffc0, 0x009e, 0x9080, 0x0002, 0x0076, 0x0006, 0x2098, ++ 0x20a0, 0x27e0, 0x27e8, 0x20a9, 0x002a, 0x080c, 0x0fb7, 0xaa6c, ++ 0xab70, 0xac74, 0xad78, 0x2061, 0x18b8, 0x2c44, 0xa06b, 0x0000, ++ 0xae64, 0xaf8c, 0x97c6, 0x7000, 0x0118, 0x97c6, 0x7100, 0x1148, ++ 0x96c2, 0x0004, 0x0600, 0x2009, 0x0004, 0x000e, 0x007e, 0x0804, ++ 0x4af3, 0x97c6, 0x7200, 0x11b8, 0x96c2, 0x0054, 0x02a0, 0x000e, ++ 0x007e, 0x2061, 0x18b8, 0x2c44, 0xa076, 0xa772, 0xa07b, 0x002a, ++ 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c, 0x1124, 0x7007, 0x0002, ++ 0x701f, 0x5227, 0x0005, 0x000e, 0x007e, 0x0804, 0x35a8, 0x7020, ++ 0x2048, 0xa804, 0x2048, 0xa804, 0x2048, 0x8906, 0x8006, 0x8007, ++ 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2098, 0x20a0, ++ 0x27e0, 0x27e8, 0x20a9, 0x002a, 0x080c, 0x0fb7, 0x2100, 0x2238, ++ 0x2061, 0x18b8, 0x2c44, 0xa28c, 0xa390, 0xa494, 0xa598, 0x2009, ++ 0x002a, 0x0804, 0x4af3, 0x81ff, 0x1904, 0x35a5, 0x798c, 0x2001, ++ 0x197e, 0x918c, 0x8000, 0x2102, 0x080c, 0x4abe, 0x0904, 0x35a8, ++ 0x080c, 0x6a6b, 0x0120, 0x080c, 0x6a73, 0x1904, 0x35a8, 0x080c, ++ 0x66ec, 0x0904, 0x35a5, 0x0126, 0x2091, 0x8000, 0x080c, 0x6881, ++ 0x012e, 0x0904, 0x35a5, 0x2001, 0x197e, 0x2004, 0xd0fc, 0x1904, ++ 0x3573, 0x0804, 0x4548, 0xa9a0, 0x2001, 0x197e, 0x918c, 0x8000, ++ 0xc18d, 0x2102, 0x080c, 0x4acb, 0x01a0, 0x080c, 0x6a6b, 0x0118, ++ 0x080c, 0x6a73, 0x1170, 0x080c, 0x66ec, 0x2009, 0x0002, 0x0128, ++ 0x080c, 0x6881, 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a, ++ 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, ++ 0x0005, 0xa897, 0x4000, 0x2001, 0x197e, 0x2004, 0xd0fc, 0x1128, ++ 0x080c, 0x56e2, 0x0110, 0x9006, 0x0018, 0x900e, 0x9085, 0x0001, ++ 0x2001, 0x0000, 0x0005, 0x78a8, 0xd08c, 0x1118, 0xd084, 0x0904, ++ 0x44bd, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x080c, 0x4aa7, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x35a5, 0x080c, 0x6a6b, 0x0130, 0x908e, ++ 0x0004, 0x0118, 0x908e, 0x0005, 0x15a0, 0x78a8, 0xd08c, 0x0120, ++ 0xb800, 0xc08c, 0xb802, 0x0028, 0x080c, 0x56da, 0xd0b4, 0x0904, ++ 0x44f7, 0x7884, 0x908e, 0x007e, 0x0904, 0x44f7, 0x908e, 0x007f, ++ 0x0904, 0x44f7, 0x908e, 0x0080, 0x0904, 0x44f7, 0xb800, 0xd08c, ++ 0x1904, 0x44f7, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, ++ 0xca07, 0x1120, 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, 0x0003, ++ 0x701f, 0x52f3, 0x0005, 0x080c, 0x4ada, 0x0904, 0x35a8, 0x0804, ++ 0x44f7, 0x080c, 0x3363, 0x0108, 0x0005, 0x2009, 0x1834, 0x210c, ++ 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, 0x080c, 0x56ee, ++ 0x0120, 0x2009, 0x0007, 0x0804, 0x35a5, 0x080c, 0x6a63, 0x0120, ++ 0x2009, 0x0008, 0x0804, 0x35a5, 0xb89c, 0xd0a4, 0x1118, 0xd0ac, ++ 0x1904, 0x44f7, 0x9006, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, ++ 0x080c, 0xca6a, 0x1120, 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, ++ 0x0003, 0x701f, 0x532c, 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, ++ 0x2009, 0x0004, 0x0804, 0x5637, 0x080c, 0x4ada, 0x0904, 0x35a8, ++ 0x0804, 0x52c5, 0x81ff, 0x2009, 0x0001, 0x1904, 0x35a5, 0x080c, ++ 0x56ee, 0x2009, 0x0007, 0x1904, 0x35a5, 0x080c, 0x6a63, 0x0120, ++ 0x2009, 0x0008, 0x0804, 0x35a5, 0x080c, 0x4ada, 0x0904, 0x35a8, ++ 0x080c, 0x6a6b, 0x2009, 0x0009, 0x1904, 0x35a5, 0x080c, 0x4aa7, ++ 0x2009, 0x0002, 0x0904, 0x35a5, 0x9006, 0xa866, 0xa832, 0xa868, ++ 0xc0fd, 0xa86a, 0x7988, 0x9194, 0xff00, 0x918c, 0x00ff, 0x9006, ++ 0x82ff, 0x1128, 0xc0ed, 0xa952, 0x798c, 0xa956, 0x0038, 0x928e, ++ 0x0100, 0x1904, 0x35a8, 0xc0e5, 0xa952, 0xa956, 0xa83e, 0x080c, ++ 0xcccd, 0x2009, 0x0003, 0x0904, 0x35a5, 0x7007, 0x0003, 0x701f, ++ 0x5382, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009, 0x0004, 0x0904, ++ 0x35a5, 0x0804, 0x3573, 0x7aa8, 0x9284, 0xc000, 0x0148, 0xd2ec, ++ 0x01a0, 0x080c, 0x56ee, 0x1188, 0x2009, 0x0014, 0x0804, 0x35a5, ++ 0xd2dc, 0x1568, 0x81ff, 0x2009, 0x0001, 0x1904, 0x35a5, 0x080c, ++ 0x56ee, 0x2009, 0x0007, 0x1904, 0x35a5, 0xd2f4, 0x0130, 0x9284, ++ 0x5000, 0x080c, 0x56b5, 0x0804, 0x3573, 0xd2fc, 0x0158, 0x080c, ++ 0x4ada, 0x0904, 0x35a8, 0x7984, 0x9284, 0x9000, 0x080c, 0x5692, ++ 0x0804, 0x3573, 0x080c, 0x4ada, 0x0904, 0x35a8, 0xb804, 0x9084, ++ 0x00ff, 0x9086, 0x0006, 0x2009, 0x0009, 0x1904, 0x546b, 0x080c, ++ 0x4aa7, 0x2009, 0x0002, 0x0904, 0x546b, 0xa85c, 0x9080, 0x001b, ++ 0xaf60, 0x2009, 0x0008, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x080c, ++ 0x4af0, 0x701f, 0x53dc, 0x0005, 0xa86c, 0x9086, 0x0500, 0x1138, ++ 0xa870, 0x9005, 0x1120, 0xa874, 0x9084, 0xff00, 0x0110, 0x1904, ++ 0x35a8, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0x4ada, ++ 0x1110, 0x0804, 0x35a8, 0x2009, 0x0043, 0x080c, 0xcd35, 0x2009, ++ 0x0003, 0x0904, 0x546b, 0x7007, 0x0003, 0x701f, 0x5400, 0x0005, ++ 0xa830, 0x9086, 0x0100, 0x2009, 0x0004, 0x0904, 0x546b, 0x7984, ++ 0x7aa8, 0x9284, 0x1000, 0x080c, 0x5692, 0x0804, 0x3573, 0x00c6, ++ 0xaab0, 0x9284, 0xc000, 0x0140, 0xd2ec, 0x0168, 0x080c, 0x56ee, ++ 0x1150, 0x2009, 0x0014, 0x04f0, 0x2061, 0x1800, 0x080c, 0x56ee, ++ 0x2009, 0x0007, 0x15b8, 0xd2f4, 0x0128, 0x9284, 0x5000, 0x080c, ++ 0x56b5, 0x0050, 0xd2fc, 0x0178, 0x080c, 0x4ad8, 0x0588, 0xa998, ++ 0x9284, 0x9000, 0x080c, 0x5692, 0xa87b, 0x0000, 0xa883, 0x0000, ++ 0xa897, 0x4000, 0x0438, 0x080c, 0x4ad8, 0x0510, 0x080c, 0x6a6b, ++ 0x2009, 0x0009, 0x11b8, 0xa8c4, 0x9086, 0x0500, 0x11c8, 0xa8c8, ++ 0x9005, 0x11b0, 0xa8cc, 0x9084, 0xff00, 0x1190, 0x080c, 0x4ad8, ++ 0x1108, 0x0070, 0x2009, 0x004b, 0x080c, 0xcd35, 0x2009, 0x0003, ++ 0x0108, 0x0078, 0x0429, 0x19c0, 0xa897, 0x4005, 0xa99a, 0x0010, ++ 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ce, ++ 0x0005, 0x9006, 0x0ce0, 0x7aa8, 0xd2dc, 0x0904, 0x35a5, 0x0016, ++ 0x7984, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x5692, 0x001e, 0x1904, ++ 0x35a5, 0x0804, 0x3573, 0x00f6, 0x2d78, 0x0011, 0x00fe, 0x0005, ++ 0xaab0, 0xd2dc, 0x0150, 0x0016, 0xa998, 0x9284, 0x1000, 0xc0fd, ++ 0x080c, 0x5692, 0x001e, 0x9085, 0x0001, 0x0005, 0x81ff, 0x0120, ++ 0x2009, 0x0001, 0x0804, 0x35a5, 0x080c, 0x56ee, 0x0120, 0x2009, ++ 0x0007, 0x0804, 0x35a5, 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, ++ 0x6625, 0x1904, 0x35a8, 0x9186, 0x007f, 0x0138, 0x080c, 0x6a6b, ++ 0x0120, 0x2009, 0x0009, 0x0804, 0x35a5, 0x080c, 0x4aa7, 0x1120, ++ 0x2009, 0x0002, 0x0804, 0x35a5, 0xa867, 0x0000, 0xa868, 0xc0fd, ++ 0xa86a, 0x2001, 0x0100, 0x8007, 0xa80a, 0x080c, 0xca21, 0x1120, ++ 0x2009, 0x0003, 0x0804, 0x35a5, 0x7007, 0x0003, 0x701f, 0x54c9, ++ 0x0005, 0xa808, 0x8007, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, ++ 0x0804, 0x35a5, 0xa8e0, 0xa866, 0xa810, 0x8007, 0x9084, 0x00ff, ++ 0x800c, 0xa814, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9080, 0x0002, ++ 0x9108, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0004, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x4af3, ++ 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, 0x7984, ++ 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, 0x7023, ++ 0x19b3, 0x0040, 0x92c6, 0x0001, 0x1118, 0x7023, 0x19cd, 0x0010, ++ 0x0804, 0x35a8, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, ++ 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4af0, 0x701f, 0x5519, ++ 0x0005, 0x2001, 0x182e, 0x2003, 0x0001, 0xa85c, 0x9080, 0x0019, ++ 0x2098, 0xa860, 0x20e0, 0x20a9, 0x001a, 0x7020, 0x20a0, 0x20e9, ++ 0x0001, 0x4003, 0x0804, 0x3573, 0x080c, 0x4aa7, 0x1120, 0x2009, ++ 0x0002, 0x0804, 0x35a5, 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, ++ 0x8217, 0x82ff, 0x1118, 0x2099, 0x19b3, 0x0040, 0x92c6, 0x0001, ++ 0x1118, 0x2099, 0x19cd, 0x0010, 0x0804, 0x35a8, 0xa85c, 0x9080, ++ 0x0019, 0x20a0, 0xa860, 0x20e8, 0x20a9, 0x001a, 0x20e1, 0x0001, ++ 0x4003, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, ++ 0x9080, 0x0019, 0xaf60, 0x0804, 0x4af3, 0x7884, 0x908a, 0x1000, ++ 0x1a04, 0x35a8, 0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, ++ 0x9108, 0x00c6, 0x2061, 0x1a03, 0x6142, 0x00ce, 0x012e, 0x0804, ++ 0x3573, 0x00c6, 0x080c, 0x74e9, 0x1160, 0x080c, 0x77ed, 0x080c, ++ 0x6029, 0x9085, 0x0001, 0x080c, 0x7530, 0x080c, 0x741a, 0x080c, ++ 0x0d7d, 0x2061, 0x1800, 0x6030, 0xc09d, 0x6032, 0x080c, 0x5ee4, ++ 0x00ce, 0x0005, 0x00c6, 0x2001, 0x1800, 0x2004, 0x908e, 0x0000, ++ 0x0904, 0x35a5, 0x7884, 0x9005, 0x0188, 0x7888, 0x2061, 0x199c, ++ 0x2c0c, 0x2062, 0x080c, 0x29d8, 0x01a0, 0x080c, 0x29e0, 0x0188, ++ 0x080c, 0x29e8, 0x0170, 0x2162, 0x0804, 0x35a8, 0x2061, 0x0100, ++ 0x6038, 0x9086, 0x0007, 0x1118, 0x2009, 0x0001, 0x0010, 0x2009, ++ 0x0000, 0x7884, 0x9086, 0x0002, 0x1588, 0x2061, 0x0100, 0x6028, ++ 0xc09c, 0x602a, 0x080c, 0xa896, 0x0026, 0x2011, 0x0003, 0x080c, ++ 0xa1cf, 0x2011, 0x0002, 0x080c, 0xa1d9, 0x002e, 0x080c, 0xa098, ++ 0x0036, 0x901e, 0x080c, 0xa118, 0x003e, 0x080c, 0xa8b2, 0x60e3, ++ 0x0000, 0x080c, 0xe702, 0x080c, 0xe71d, 0x9085, 0x0001, 0x080c, ++ 0x7530, 0x9006, 0x080c, 0x2a0a, 0x2001, 0x1800, 0x2003, 0x0004, ++ 0x0026, 0x2011, 0x0008, 0x080c, 0x2a44, 0x002e, 0x00ce, 0x0804, ++ 0x3573, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x35a5, 0x080c, ++ 0x56ee, 0x0120, 0x2009, 0x0007, 0x0804, 0x35a5, 0x7984, 0x7ea8, ++ 0x96b4, 0x00ff, 0x080c, 0x6625, 0x1904, 0x35a8, 0x9186, 0x007f, ++ 0x0138, 0x080c, 0x6a6b, 0x0120, 0x2009, 0x0009, 0x0804, 0x35a5, ++ 0x080c, 0x4aa7, 0x1120, 0x2009, 0x0002, 0x0804, 0x35a5, 0xa867, ++ 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xca24, 0x1120, 0x2009, ++ 0x0003, 0x0804, 0x35a5, 0x7007, 0x0003, 0x701f, 0x5620, 0x0005, ++ 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x35a5, ++ 0xa8e0, 0xa866, 0xa834, 0x8007, 0x800c, 0xa85c, 0x9080, 0x000c, ++ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xaf60, 0x0804, 0x4af3, 0xa898, ++ 0x9086, 0x000d, 0x1904, 0x35a5, 0x2021, 0x4005, 0x0126, 0x2091, ++ 0x8000, 0x0e04, 0x5644, 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, ++ 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833, 0x0010, 0x7883, ++ 0x4005, 0xa998, 0x7986, 0xa9a4, 0x799a, 0xa9a8, 0x799e, 0x080c, ++ 0x4ae3, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x11d6, 0x7007, 0x0001, 0x2091, 0x5000, 0x700f, 0x0000, 0x012e, ++ 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, 0x1a03, 0x7984, ++ 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, 0x0009, 0x7898, 0x606a, ++ 0x789c, 0x6066, 0x7888, 0x6062, 0x788c, 0x605e, 0x2001, 0x1a11, ++ 0x2044, 0x2001, 0x1a18, 0xa076, 0xa060, 0xa072, 0xa07b, 0x0001, ++ 0xa07f, 0x0002, 0xa06b, 0x0000, 0xa09f, 0x0000, 0x00ce, 0x012e, ++ 0x0804, 0x3573, 0x0126, 0x2091, 0x8000, 0x00b6, 0x00c6, 0x90e4, ++ 0xc000, 0x0128, 0x0006, 0x080c, 0xc885, 0x000e, 0x1198, 0xd0e4, ++ 0x0160, 0x9180, 0x1000, 0x2004, 0x905d, 0x0160, 0x080c, 0x6043, ++ 0x080c, 0xab57, 0x0110, 0xb817, 0x0000, 0x9006, 0x00ce, 0x00be, ++ 0x012e, 0x0005, 0x9085, 0x0001, 0x0cc8, 0x0126, 0x2091, 0x8000, ++ 0x0156, 0x2010, 0x900e, 0x20a9, 0x0800, 0x0016, 0x9180, 0x1000, ++ 0x2004, 0x9005, 0x0180, 0x9186, 0x007e, 0x0168, 0x9186, 0x007f, ++ 0x0150, 0x9186, 0x0080, 0x0138, 0x9186, 0x00ff, 0x0120, 0x0026, ++ 0x2200, 0x0801, 0x002e, 0x001e, 0x8108, 0x1f04, 0x56bd, 0x015e, ++ 0x012e, 0x0005, 0x2001, 0x1848, 0x2004, 0x0005, 0x2001, 0x1867, ++ 0x2004, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0d4, 0x000e, ++ 0x0005, 0x2001, 0x180e, 0x2004, 0xd0b4, 0x0005, 0x2001, 0x1800, ++ 0x2004, 0x9086, 0x0003, 0x0005, 0x0016, 0x00e6, 0x2071, 0x189e, ++ 0x7108, 0x910d, 0x710a, 0x00ee, 0x001e, 0x0005, 0x79a4, 0x9182, ++ 0x0081, 0x1a04, 0x35a8, 0x810c, 0x0016, 0x080c, 0x4aa7, 0x080c, ++ 0x0f42, 0x2100, 0x2238, 0x7d84, 0x7c88, 0x7b8c, 0x7a90, 0x001e, ++ 0x080c, 0x4af0, 0x701f, 0x5715, 0x0005, 0x2079, 0x0000, 0x7d94, ++ 0x7c98, 0x7ba8, 0x7aac, 0x79a4, 0x810c, 0x2061, 0x18b8, 0x2c44, ++ 0xa770, 0xa074, 0x2071, 0x189e, 0x080c, 0x4af3, 0x701f, 0x5729, ++ 0x0005, 0x2061, 0x18b8, 0x2c44, 0x0016, 0x0026, 0xa270, 0xa174, ++ 0x080c, 0x0f4a, 0x002e, 0x001e, 0x080c, 0x0ff7, 0x9006, 0xa802, ++ 0xa806, 0x0804, 0x3573, 0x0126, 0x0156, 0x0136, 0x0146, 0x01c6, ++ 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2061, 0x0100, 0x2069, ++ 0x0200, 0x2071, 0x1800, 0x6044, 0xd0a4, 0x11e8, 0xd084, 0x0118, ++ 0x080c, 0x58e4, 0x0068, 0xd08c, 0x0118, 0x080c, 0x57ed, 0x0040, ++ 0xd094, 0x0118, 0x080c, 0x57bd, 0x0018, 0xd09c, 0x0108, 0x0099, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, ++ 0x015e, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, ++ 0x612a, 0x001e, 0x0c68, 0x0006, 0x7098, 0x9005, 0x000e, 0x0120, ++ 0x709b, 0x0000, 0x7093, 0x0000, 0x624c, 0x9286, 0xf0f0, 0x1150, ++ 0x6048, 0x9086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, ++ 0x0010, 0x0490, 0x9294, 0xff00, 0x9296, 0xf700, 0x0178, 0x7138, ++ 0xd1a4, 0x1160, 0x6240, 0x9295, 0x0100, 0x6242, 0x9294, 0x0010, ++ 0x0128, 0x2009, 0x00f7, 0x080c, 0x5fa5, 0x00f0, 0x6040, 0x9084, ++ 0x0010, 0x9085, 0x0140, 0x6042, 0x6043, 0x0000, 0x7087, 0x0000, ++ 0x70a3, 0x0001, 0x70c7, 0x0000, 0x70df, 0x0000, 0x2009, 0x1d80, ++ 0x200b, 0x0000, 0x7097, 0x0000, 0x708b, 0x000f, 0x2009, 0x000f, ++ 0x2011, 0x5e87, 0x080c, 0x8708, 0x0005, 0x2001, 0x1869, 0x2004, ++ 0xd08c, 0x0110, 0x705f, 0xffff, 0x7088, 0x9005, 0x1528, 0x2011, ++ 0x5e87, 0x080c, 0x863e, 0x6040, 0x9094, 0x0010, 0x9285, 0x0020, ++ 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x57d3, ++ 0x6242, 0x709b, 0x0000, 0x6040, 0x9094, 0x0010, 0x9285, 0x0080, ++ 0x6042, 0x6242, 0x0048, 0x6242, 0x709b, 0x0000, 0x708f, 0x0000, ++ 0x9006, 0x080c, 0x602e, 0x0000, 0x0005, 0x708c, 0x908a, 0x0003, ++ 0x1a0c, 0x0d7d, 0x000b, 0x0005, 0x57f7, 0x5848, 0x58e3, 0x00f6, ++ 0x0016, 0x6900, 0x918c, 0x0800, 0x708f, 0x0001, 0x2001, 0x015d, ++ 0x2003, 0x0000, 0x6803, 0x00fc, 0x20a9, 0x0004, 0x6800, 0x9084, ++ 0x00fc, 0x0120, 0x1f04, 0x5806, 0x080c, 0x0d7d, 0x68a0, 0x68a2, ++ 0x689c, 0x689e, 0x6898, 0x689a, 0xa001, 0x918d, 0x1600, 0x6902, ++ 0x001e, 0x6837, 0x0020, 0x080c, 0x600a, 0x2079, 0x1d00, 0x7833, ++ 0x1101, 0x7837, 0x0000, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, ++ 0x0001, 0x20a1, 0x1d0e, 0x20a9, 0x0004, 0x4003, 0x080c, 0xa690, ++ 0x20e1, 0x0001, 0x2099, 0x1d00, 0x20e9, 0x0000, 0x20a1, 0x0240, ++ 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, ++ 0x5eb8, 0x00fe, 0x9006, 0x7092, 0x6043, 0x0008, 0x6042, 0x0005, ++ 0x00f6, 0x7090, 0x7093, 0x0000, 0x9025, 0x0904, 0x58c0, 0x6020, ++ 0xd0b4, 0x1904, 0x58be, 0x71a0, 0x81ff, 0x0904, 0x58ac, 0x9486, ++ 0x000c, 0x1904, 0x58b9, 0x9480, 0x0018, 0x8004, 0x20a8, 0x080c, ++ 0x6003, 0x2011, 0x0260, 0x2019, 0x1d00, 0x220c, 0x2304, 0x9106, ++ 0x11e8, 0x8210, 0x8318, 0x1f04, 0x5865, 0x6043, 0x0004, 0x2061, ++ 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, ++ 0x0006, 0x708f, 0x0002, 0x709b, 0x0002, 0x2009, 0x07d0, 0x2011, ++ 0x5e8e, 0x080c, 0x8708, 0x080c, 0x600a, 0x04c0, 0x080c, 0x6003, ++ 0x2079, 0x0260, 0x7930, 0x918e, 0x1101, 0x1558, 0x7834, 0x9005, ++ 0x1540, 0x7900, 0x918c, 0x00ff, 0x1118, 0x7804, 0x9005, 0x0190, ++ 0x080c, 0x6003, 0x2011, 0x026e, 0x2019, 0x1805, 0x20a9, 0x0004, ++ 0x220c, 0x2304, 0x9102, 0x0230, 0x11a0, 0x8210, 0x8318, 0x1f04, ++ 0x58a0, 0x0078, 0x70a3, 0x0000, 0x080c, 0x6003, 0x20e1, 0x0000, ++ 0x2099, 0x0260, 0x20e9, 0x0001, 0x20a1, 0x1d00, 0x20a9, 0x0014, ++ 0x4003, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00fe, 0x0005, ++ 0x6040, 0x9085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x080c, ++ 0xa690, 0x20e1, 0x0001, 0x2099, 0x1d00, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, 0x2011, 0x19f4, ++ 0x2013, 0x0000, 0x7093, 0x0000, 0x60a3, 0x0056, 0x60a7, 0x9575, ++ 0x080c, 0x9e25, 0x08d8, 0x0005, 0x7098, 0x908a, 0x001d, 0x1a0c, ++ 0x0d7d, 0x000b, 0x0005, 0x5915, 0x5928, 0x5951, 0x5971, 0x5997, ++ 0x59c6, 0x59ec, 0x5a24, 0x5a4a, 0x5a78, 0x5ab3, 0x5aeb, 0x5b09, ++ 0x5b34, 0x5b56, 0x5b71, 0x5b7b, 0x5baf, 0x5bd5, 0x5c04, 0x5c2a, ++ 0x5c62, 0x5ca6, 0x5ce3, 0x5d04, 0x5d5d, 0x5d7f, 0x5dad, 0x5dad, ++ 0x00c6, 0x2061, 0x1800, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, ++ 0x9084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x2061, 0x0140, 0x605b, ++ 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0002, 0x709b, ++ 0x0001, 0x2009, 0x07d0, 0x2011, 0x5e8e, 0x080c, 0x8708, 0x0005, ++ 0x00f6, 0x7090, 0x9086, 0x0014, 0x1510, 0x6042, 0x6020, 0xd0b4, ++ 0x11f0, 0x080c, 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, ++ 0x11a0, 0x7834, 0x9005, 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70c4, ++ 0x9005, 0x1110, 0x70c7, 0x0001, 0x2011, 0x5e8e, 0x080c, 0x863e, ++ 0x709b, 0x0010, 0x080c, 0x5b7b, 0x0010, 0x7093, 0x0000, 0x00fe, ++ 0x0005, 0x00f6, 0x709b, 0x0003, 0x6043, 0x0004, 0x2011, 0x5e8e, ++ 0x080c, 0x863e, 0x080c, 0x5f87, 0x2079, 0x0240, 0x7833, 0x1102, ++ 0x7837, 0x0000, 0x20a9, 0x0008, 0x9f88, 0x000e, 0x200b, 0x0000, ++ 0x8108, 0x1f04, 0x5966, 0x60c3, 0x0014, 0x080c, 0x5eb8, 0x00fe, ++ 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, 0x2011, 0x5e8e, 0x080c, ++ 0x863e, 0x9086, 0x0014, 0x11b8, 0x080c, 0x6003, 0x2079, 0x0260, ++ 0x7a30, 0x9296, 0x1102, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, ++ 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, ++ 0x0004, 0x0029, 0x0010, 0x080c, 0x5fdf, 0x00fe, 0x0005, 0x00f6, ++ 0x709b, 0x0005, 0x080c, 0x5f87, 0x2079, 0x0240, 0x7833, 0x1103, ++ 0x7837, 0x0000, 0x080c, 0x6003, 0x080c, 0x5fe6, 0x1170, 0x7084, ++ 0x9005, 0x1158, 0x715c, 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, ++ 0x080c, 0x5e3b, 0x0168, 0x080c, 0x5fbc, 0x20a9, 0x0008, 0x20e1, ++ 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, ++ 0x60c3, 0x0014, 0x080c, 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, ++ 0x9005, 0x0500, 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0014, ++ 0x11b8, 0x080c, 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, ++ 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, ++ 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, 0x0006, 0x0029, 0x0010, ++ 0x080c, 0x5fdf, 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0007, 0x080c, ++ 0x5f87, 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, ++ 0x6003, 0x080c, 0x5fe6, 0x11b8, 0x7084, 0x9005, 0x11a0, 0x7164, ++ 0x9186, 0xffff, 0x0180, 0x9180, 0x3374, 0x200d, 0x918c, 0xff00, ++ 0x810f, 0x2011, 0x0008, 0x080c, 0x5e3b, 0x0180, 0x080c, 0x4fe4, ++ 0x0110, 0x080c, 0x2664, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, ++ 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, ++ 0x080c, 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, ++ 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0014, 0x11b8, 0x080c, ++ 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, ++ 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, ++ 0x70c7, 0x0001, 0x709b, 0x0008, 0x0029, 0x0010, 0x080c, 0x5fdf, ++ 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0009, 0x080c, 0x5f87, 0x2079, ++ 0x0240, 0x7833, 0x1105, 0x7837, 0x0100, 0x080c, 0x5fe6, 0x1150, ++ 0x7084, 0x9005, 0x1138, 0x080c, 0x5dae, 0x1188, 0x9085, 0x0001, ++ 0x080c, 0x2664, 0x20a9, 0x0008, 0x080c, 0x6003, 0x20e1, 0x0000, ++ 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, ++ 0x0014, 0x080c, 0x5eb8, 0x0010, 0x080c, 0x5908, 0x00fe, 0x0005, ++ 0x00f6, 0x7090, 0x9005, 0x05a8, 0x2011, 0x5e8e, 0x080c, 0x863e, ++ 0x9086, 0x0014, 0x1560, 0x080c, 0x6003, 0x2079, 0x0260, 0x7a30, ++ 0x9296, 0x1105, 0x1520, 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, ++ 0x921e, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, ++ 0x70c7, 0x0001, 0x709b, 0x000a, 0x00b1, 0x0098, 0x9005, 0x1178, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, ++ 0x7097, 0x0000, 0x709b, 0x000e, 0x080c, 0x5b56, 0x0010, 0x080c, ++ 0x5fdf, 0x00fe, 0x0005, 0x00f6, 0x709b, 0x000b, 0x2011, 0x1d0e, ++ 0x20e9, 0x0001, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x4304, ++ 0x080c, 0x5f87, 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, ++ 0x080c, 0x5fe6, 0x0118, 0x2013, 0x0000, 0x0020, 0x7060, 0x9085, ++ 0x0100, 0x2012, 0x20a9, 0x0040, 0x2009, 0x024e, 0x2011, 0x1d0e, ++ 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, ++ 0x6812, 0x2009, 0x0240, 0x1f04, 0x5ad8, 0x60c3, 0x0084, 0x080c, ++ 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x01c0, 0x2011, ++ 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0084, 0x1178, 0x080c, 0x6003, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, ++ 0x1120, 0x709b, 0x000c, 0x0029, 0x0010, 0x080c, 0x5fdf, 0x00fe, ++ 0x0005, 0x00f6, 0x709b, 0x000d, 0x080c, 0x5f87, 0x2079, 0x0240, ++ 0x7833, 0x1107, 0x7837, 0x0000, 0x080c, 0x6003, 0x20a9, 0x0040, ++ 0x2011, 0x026e, 0x2009, 0x024e, 0x220e, 0x8210, 0x8108, 0x9186, ++ 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, ++ 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, 0x5b1c, 0x60c3, 0x0084, ++ 0x080c, 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x01e0, ++ 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0084, 0x1198, 0x080c, ++ 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, ++ 0x9005, 0x1140, 0x7097, 0x0001, 0x080c, 0x5f59, 0x709b, 0x000e, ++ 0x0029, 0x0010, 0x080c, 0x5fdf, 0x00fe, 0x0005, 0x918d, 0x0001, ++ 0x080c, 0x602e, 0x709b, 0x000f, 0x7093, 0x0000, 0x2061, 0x0140, ++ 0x605b, 0xbc85, 0x605f, 0xb5b5, 0x2061, 0x0100, 0x6043, 0x0005, ++ 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x5e8e, 0x080c, 0x8632, ++ 0x0005, 0x7090, 0x9005, 0x0130, 0x2011, 0x5e8e, 0x080c, 0x863e, ++ 0x709b, 0x0000, 0x0005, 0x709b, 0x0011, 0x080c, 0xa690, 0x080c, ++ 0x6003, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x7490, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, ++ 0x8004, 0x20a8, 0x4003, 0x080c, 0x5fe6, 0x11a0, 0x717c, 0x81ff, ++ 0x0188, 0x900e, 0x7080, 0x9084, 0x00ff, 0x0160, 0x080c, 0x25fb, ++ 0x9186, 0x007e, 0x0138, 0x9186, 0x0080, 0x0120, 0x2011, 0x0008, ++ 0x080c, 0x5e3b, 0x60c3, 0x0014, 0x080c, 0x5eb8, 0x0005, 0x00f6, ++ 0x7090, 0x9005, 0x0500, 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, ++ 0x0014, 0x11b8, 0x080c, 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, ++ 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, ++ 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, 0x709b, 0x0012, 0x0029, ++ 0x0010, 0x7093, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0013, ++ 0x080c, 0x5f95, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, ++ 0x080c, 0x6003, 0x080c, 0x5fe6, 0x1170, 0x7084, 0x9005, 0x1158, ++ 0x715c, 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c, 0x5e3b, ++ 0x0168, 0x080c, 0x5fbc, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, ++ 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, ++ 0x080c, 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x0500, ++ 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0014, 0x11b8, 0x080c, ++ 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, ++ 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, ++ 0x70c7, 0x0001, 0x709b, 0x0014, 0x0029, 0x0010, 0x7093, 0x0000, ++ 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0015, 0x080c, 0x5f95, 0x2079, ++ 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x6003, 0x080c, ++ 0x5fe6, 0x11b8, 0x7084, 0x9005, 0x11a0, 0x7164, 0x9186, 0xffff, ++ 0x0180, 0x9180, 0x3374, 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, ++ 0x0008, 0x080c, 0x5e3b, 0x0180, 0x080c, 0x4fe4, 0x0110, 0x080c, ++ 0x2664, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, ++ 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5eb8, ++ 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, 0x05f0, 0x2011, 0x5e8e, ++ 0x080c, 0x863e, 0x9086, 0x0014, 0x15a8, 0x080c, 0x6003, 0x2079, ++ 0x0260, 0x7a30, 0x9296, 0x1105, 0x1568, 0x7834, 0x9084, 0x0100, ++ 0x2011, 0x0100, 0x921e, 0x1168, 0x9085, 0x0001, 0x080c, 0x602e, ++ 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, 0x1110, 0x70c7, 0x0001, ++ 0x0080, 0x9005, 0x11b8, 0x7a38, 0xd2fc, 0x0128, 0x70c4, 0x9005, ++ 0x1110, 0x70c7, 0x0001, 0x9085, 0x0001, 0x080c, 0x602e, 0x7097, ++ 0x0000, 0x7a38, 0xd2f4, 0x0110, 0x70df, 0x0008, 0x709b, 0x0016, ++ 0x0029, 0x0010, 0x7093, 0x0000, 0x00fe, 0x0005, 0x080c, 0xa690, ++ 0x080c, 0x6003, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, ++ 0x20a1, 0x0240, 0x20a9, 0x000e, 0x4003, 0x2011, 0x026d, 0x2204, ++ 0x9084, 0x0100, 0x2011, 0x024d, 0x2012, 0x2011, 0x026e, 0x709b, ++ 0x0017, 0x080c, 0x5fe6, 0x1150, 0x7084, 0x9005, 0x1138, 0x080c, ++ 0x5dae, 0x1188, 0x9085, 0x0001, 0x080c, 0x2664, 0x20a9, 0x0008, ++ 0x080c, 0x6003, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, ++ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x5eb8, 0x0010, ++ 0x080c, 0x5908, 0x0005, 0x00f6, 0x7090, 0x9005, 0x01d8, 0x2011, ++ 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0084, 0x1190, 0x080c, 0x6003, ++ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, 0x1150, 0x7834, 0x9005, ++ 0x1138, 0x9006, 0x080c, 0x602e, 0x709b, 0x0018, 0x0029, 0x0010, ++ 0x7093, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x709b, 0x0019, 0x080c, ++ 0x5f95, 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, ++ 0x6003, 0x2009, 0x026e, 0x2039, 0x1d0e, 0x20a9, 0x0040, 0x213e, ++ 0x8738, 0x8108, 0x9186, 0x0280, 0x1128, 0x6814, 0x8000, 0x6816, ++ 0x2009, 0x0260, 0x1f04, 0x5d17, 0x2039, 0x1d0e, 0x080c, 0x5fe6, ++ 0x11e8, 0x2728, 0x2514, 0x8207, 0x9084, 0x00ff, 0x8000, 0x2018, ++ 0x9294, 0x00ff, 0x8007, 0x9205, 0x202a, 0x7060, 0x2310, 0x8214, ++ 0x92a0, 0x1d0e, 0x2414, 0x938c, 0x0001, 0x0118, 0x9294, 0xff00, ++ 0x0018, 0x9294, 0x00ff, 0x8007, 0x9215, 0x2222, 0x20a9, 0x0040, ++ 0x2009, 0x024e, 0x270e, 0x8738, 0x8108, 0x9186, 0x0260, 0x1128, ++ 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x1f04, 0x5d4a, 0x60c3, ++ 0x0084, 0x080c, 0x5eb8, 0x00fe, 0x0005, 0x00f6, 0x7090, 0x9005, ++ 0x01e0, 0x2011, 0x5e8e, 0x080c, 0x863e, 0x9086, 0x0084, 0x1198, ++ 0x080c, 0x6003, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, ++ 0x7834, 0x9005, 0x1140, 0x7097, 0x0001, 0x080c, 0x5f59, 0x709b, ++ 0x001a, 0x0029, 0x0010, 0x7093, 0x0000, 0x00fe, 0x0005, 0x9085, ++ 0x0001, 0x080c, 0x602e, 0x709b, 0x001b, 0x080c, 0xa690, 0x080c, ++ 0x6003, 0x2011, 0x0260, 0x2009, 0x0240, 0x7490, 0x9480, 0x0018, ++ 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x220e, 0x8210, ++ 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, ++ 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, 0x5d96, ++ 0x60c3, 0x0084, 0x080c, 0x5eb8, 0x0005, 0x0005, 0x0086, 0x0096, ++ 0x2029, 0x1848, 0x252c, 0x20a9, 0x0008, 0x2041, 0x1d0e, 0x20e9, ++ 0x0001, 0x28a0, 0x080c, 0x6003, 0x20e1, 0x0000, 0x2099, 0x026e, ++ 0x4003, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0108, 0x9016, ++ 0x2800, 0x9200, 0x200c, 0x91a6, 0xffff, 0x1148, 0xd5d4, 0x0110, ++ 0x8210, 0x0008, 0x8211, 0x1f04, 0x5dc8, 0x0804, 0x5e37, 0x82ff, ++ 0x1160, 0xd5d4, 0x0120, 0x91a6, 0x3fff, 0x0d90, 0x0020, 0x91a6, ++ 0x3fff, 0x0904, 0x5e37, 0x918d, 0xc000, 0x20a9, 0x0010, 0x2019, ++ 0x0001, 0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, ++ 0x8423, 0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, ++ 0x8318, 0x1f04, 0x5dee, 0x04d8, 0x23a8, 0x2021, 0x0001, 0x8426, ++ 0x8425, 0x1f04, 0x5e00, 0x2328, 0x8529, 0x92be, 0x0007, 0x0158, ++ 0x0006, 0x2039, 0x0007, 0x2200, 0x973a, 0x000e, 0x27a8, 0x95a8, ++ 0x0010, 0x1f04, 0x5e0f, 0x755e, 0x95c8, 0x3374, 0x292d, 0x95ac, ++ 0x00ff, 0x7582, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x2644, ++ 0x001e, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0x9405, 0x201a, ++ 0x7087, 0x0001, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x20e1, 0x0001, ++ 0x2898, 0x20a9, 0x0008, 0x4003, 0x9085, 0x0001, 0x0008, 0x9006, ++ 0x009e, 0x008e, 0x0005, 0x0156, 0x01c6, 0x01d6, 0x0136, 0x0146, ++ 0x22a8, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x2011, ++ 0x024e, 0x22a0, 0x4003, 0x014e, 0x013e, 0x01de, 0x01ce, 0x015e, ++ 0x2118, 0x9026, 0x2001, 0x0007, 0x939a, 0x0010, 0x0218, 0x8420, ++ 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, 0x939a, 0x0010, 0x8421, ++ 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, ++ 0x9238, 0x2029, 0x026e, 0x9528, 0x2504, 0x942c, 0x11b8, 0x9405, ++ 0x203a, 0x715e, 0x91a0, 0x3374, 0x242d, 0x95ac, 0x00ff, 0x7582, ++ 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x2644, 0x001e, 0x60e7, ++ 0x0000, 0x65ea, 0x7087, 0x0001, 0x9084, 0x0000, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x708b, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, ++ 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x5f48, 0x080c, 0x9e32, ++ 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, 0x2a1a, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1826, 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, ++ 0x2009, 0x00f7, 0x080c, 0x5fa5, 0x001e, 0x9094, 0x0010, 0x9285, ++ 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x2979, 0x0228, 0x2011, 0x0101, ++ 0x2204, 0xc0c5, 0x2012, 0x2011, 0x19f4, 0x2013, 0x0000, 0x7093, ++ 0x0000, 0x012e, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x9e25, ++ 0x6144, 0xd184, 0x0120, 0x7198, 0x918d, 0x2000, 0x0018, 0x718c, ++ 0x918d, 0x1000, 0x2011, 0x1999, 0x2112, 0x2009, 0x07d0, 0x2011, ++ 0x5e8e, 0x080c, 0x8708, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0xa896, 0x080c, 0xab5e, 0x080c, 0xa8b2, ++ 0x2009, 0x00f7, 0x080c, 0x5fa5, 0x2061, 0x1a03, 0x900e, 0x611a, ++ 0x611e, 0x6172, 0x6176, 0x2061, 0x1800, 0x6003, 0x0001, 0x2061, ++ 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x1999, 0x200b, ++ 0x0000, 0x2009, 0x002d, 0x2011, 0x5f14, 0x080c, 0x8632, 0x012e, ++ 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x0471, 0x2071, 0x0100, 0x080c, 0x9e32, 0x2071, 0x0140, ++ 0x7004, 0x9084, 0x4000, 0x0110, 0x080c, 0x2a1a, 0x080c, 0x74f1, ++ 0x0188, 0x080c, 0x750c, 0x1170, 0x080c, 0x77f7, 0x0016, 0x080c, ++ 0x2713, 0x2001, 0x196d, 0x2102, 0x001e, 0x080c, 0x77f2, 0x080c, ++ 0x741a, 0x0050, 0x2009, 0x0001, 0x080c, 0x29f6, 0x2001, 0x0001, ++ 0x080c, 0x25a0, 0x080c, 0x5ee4, 0x012e, 0x000e, 0x00ee, 0x0005, ++ 0x2001, 0x180e, 0x2004, 0xd0bc, 0x0158, 0x0026, 0x0036, 0x2011, ++ 0x8017, 0x2001, 0x1999, 0x201c, 0x080c, 0x4b07, 0x003e, 0x002e, ++ 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001, 0x20a1, 0x1d80, 0x080c, ++ 0x6003, 0x20e9, 0x0000, 0x2099, 0x026e, 0x0099, 0x20a9, 0x0020, ++ 0x080c, 0x5ffd, 0x2099, 0x0260, 0x20a1, 0x1d92, 0x0051, 0x20a9, ++ 0x000e, 0x080c, 0x6000, 0x2099, 0x0260, 0x20a1, 0x1db2, 0x0009, ++ 0x0005, 0x0016, 0x0026, 0x3410, 0x3308, 0x2104, 0x8007, 0x2012, ++ 0x8108, 0x8210, 0x1f04, 0x5f7d, 0x002e, 0x001e, 0x0005, 0x080c, ++ 0xa690, 0x20e1, 0x0001, 0x2099, 0x1d00, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x080c, 0xa690, 0x080c, ++ 0x6003, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, ++ 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005, 0x00c6, 0x0006, 0x2061, ++ 0x0100, 0x810f, 0x2001, 0x1834, 0x2004, 0x9005, 0x1138, 0x2001, ++ 0x1818, 0x2004, 0x9084, 0x00ff, 0x9105, 0x0010, 0x9185, 0x00f7, ++ 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016, 0x0046, 0x080c, 0x6a67, ++ 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, 0x080c, 0xe2c9, 0x2001, ++ 0x180c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x900e, 0x080c, ++ 0x31a6, 0x080c, 0xcf52, 0x0140, 0x0036, 0x2019, 0xffff, 0x2021, ++ 0x0007, 0x080c, 0x4cbe, 0x003e, 0x004e, 0x001e, 0x0005, 0x080c, ++ 0x5ee4, 0x709b, 0x0000, 0x7093, 0x0000, 0x0005, 0x0006, 0x2001, ++ 0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, ++ 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0x918d, 0x0006, ++ 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x2009, 0x0001, 0x0020, ++ 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, 0x9084, 0xffc0, 0x910d, ++ 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, 0x01d6, 0x9006, 0x20a9, ++ 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1d00, 0x4004, 0x2079, 0x1d00, ++ 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, 0x00ef, 0x7813, 0x0138, ++ 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, 0x014e, 0x015e, 0x00fe, ++ 0x0005, 0x2001, 0x1800, 0x2003, 0x0001, 0x0005, 0x2001, 0x19a6, ++ 0x0118, 0x2003, 0x0001, 0x0010, 0x2003, 0x0000, 0x0005, 0x0156, ++ 0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, 0x200a, 0x8108, 0x1f04, ++ 0x603d, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146, ++ 0x2069, 0x1847, 0x9006, 0xb802, 0xb8d6, 0xb807, 0x0707, 0xb80a, ++ 0xb80e, 0xb812, 0x9198, 0x3374, 0x231d, 0x939c, 0x00ff, 0xbb16, ++ 0x0016, 0x0026, 0xb886, 0x080c, 0xab57, 0x1120, 0x9192, 0x007e, ++ 0x1208, 0xbb86, 0x20a9, 0x0004, 0xb8c4, 0x20e8, 0xb9c8, 0x9198, ++ 0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9198, 0x000a, ++ 0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, 0xb842, 0xb8ce, 0xb8d2, ++ 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, 0x0100, 0xb872, 0xb876, ++ 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, 0xb896, 0xb89a, 0xb89e, ++ 0xb8be, 0xb9a2, 0x0096, 0xb8a4, 0x904d, 0x0110, 0x080c, 0x106c, ++ 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, 0x6810, 0xb83a, 0x680c, ++ 0xb846, 0xb8bb, 0x0520, 0xb8ac, 0x9005, 0x0198, 0x00c6, 0x2060, ++ 0x9c82, 0x1ddc, 0x0a0c, 0x0d7d, 0x2001, 0x181a, 0x2004, 0x9c02, ++ 0x1a0c, 0x0d7d, 0x080c, 0x8b90, 0x00ce, 0x090c, 0x8f34, 0xb8af, ++ 0x0000, 0x6814, 0x9084, 0x00ff, 0xb842, 0x014e, 0x013e, 0x015e, ++ 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000, 0xa974, 0xae78, ++ 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x6119, 0x9182, 0x0800, ++ 0x1a04, 0x611d, 0x2001, 0x180c, 0x2004, 0x9084, 0x0003, 0x1904, ++ 0x6123, 0x9188, 0x1000, 0x2104, 0x905d, 0x0198, 0xb804, 0x9084, ++ 0x00ff, 0x908e, 0x0006, 0x1188, 0xb8a4, 0x900d, 0x1904, 0x6135, ++ 0x080c, 0x64ee, 0x9006, 0x012e, 0x0005, 0x2001, 0x0005, 0x900e, ++ 0x04b8, 0x2001, 0x0028, 0x900e, 0x0498, 0x9082, 0x0006, 0x1290, ++ 0x080c, 0xab57, 0x1160, 0xb8a0, 0x9084, 0xff80, 0x1140, 0xb900, ++ 0xd1fc, 0x0d10, 0x2001, 0x0029, 0x2009, 0x1000, 0x0408, 0x2001, ++ 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, ++ 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040, 0x2001, ++ 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0048, 0x900e, ++ 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, 0x0029, 0x900e, ++ 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, 0x2004, 0xd084, 0x19d0, ++ 0x9188, 0x1000, 0x2104, 0x9065, 0x09a8, 0x080c, 0x6a6b, 0x1990, ++ 0xb800, 0xd0bc, 0x0978, 0x0804, 0x60dc, 0x080c, 0x6890, 0x0904, ++ 0x60e5, 0x0804, 0x60e0, 0x00e6, 0x2071, 0x19e7, 0x7004, 0x9086, ++ 0x0002, 0x1128, 0x7030, 0x9080, 0x0004, 0x2004, 0x9b06, 0x00ee, ++ 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, 0xa874, 0x908e, ++ 0x00ff, 0x1120, 0x2001, 0x196b, 0x205c, 0x0060, 0xa974, 0x9182, ++ 0x0800, 0x1690, 0x9188, 0x1000, 0x2104, 0x905d, 0x01d0, 0x080c, ++ 0x6a0b, 0x11d0, 0x080c, 0xab97, 0x0570, 0x2b00, 0x6012, 0x2900, ++ 0x6016, 0x6023, 0x0009, 0x602b, 0x0000, 0xa874, 0x908e, 0x00ff, ++ 0x1110, 0x602b, 0x8000, 0x2009, 0x0043, 0x080c, 0xac8c, 0x9006, ++ 0x00b0, 0x2001, 0x0028, 0x0090, 0x2009, 0x180c, 0x210c, 0xd18c, ++ 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, ++ 0x0010, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, 0x9005, 0x012e, ++ 0x00ee, 0x00be, 0x0005, 0x2001, 0x002c, 0x0cc0, 0x00b6, 0x00e6, ++ 0x0126, 0x2091, 0x8000, 0xa974, 0x9182, 0x0800, 0x1a04, 0x6211, ++ 0x9188, 0x1000, 0x2104, 0x905d, 0x0904, 0x61e9, 0xb8a0, 0x9086, ++ 0x007f, 0x0178, 0x080c, 0x6a73, 0x0160, 0xa994, 0x81ff, 0x0130, ++ 0x908e, 0x0004, 0x0130, 0x908e, 0x0005, 0x0118, 0x080c, 0x6a6b, ++ 0x1598, 0xa87c, 0xd0fc, 0x01e0, 0xa894, 0x9005, 0x01c8, 0x2060, ++ 0x0026, 0x2010, 0x080c, 0xc826, 0x002e, 0x1120, 0x2001, 0x0008, ++ 0x0804, 0x6213, 0x6020, 0x9086, 0x000a, 0x0120, 0x2001, 0x0008, ++ 0x0804, 0x6213, 0x601a, 0x6003, 0x0008, 0x2900, 0x6016, 0x0058, ++ 0x080c, 0xab97, 0x05e8, 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, ++ 0xffff, 0x6023, 0x000a, 0x2009, 0x0003, 0x080c, 0xac8c, 0x9006, ++ 0x0458, 0x2001, 0x0028, 0x0438, 0x9082, 0x0006, 0x1290, 0x080c, ++ 0xab57, 0x1160, 0xb8a0, 0x9084, 0xff80, 0x1140, 0xb900, 0xd1fc, ++ 0x0900, 0x2001, 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, ++ 0x0090, 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, ++ 0x0050, 0xd184, 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, ++ 0x0010, 0x2001, 0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, ++ 0x2001, 0x002c, 0x0cc0, 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, ++ 0xa8e0, 0x9005, 0x1550, 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, ++ 0x9005, 0x1518, 0xa8c4, 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, ++ 0x1800, 0x9182, 0x0800, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, ++ 0xaa98, 0xab94, 0xa878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, ++ 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, ++ 0x0010, 0x2001, 0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, ++ 0x0018, 0x2001, 0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, ++ 0x00be, 0x00fe, 0x0005, 0x62a8, 0x6263, 0x627a, 0x62a8, 0x62a8, ++ 0x62a8, 0x62a8, 0x62a8, 0x2100, 0x9082, 0x007e, 0x1278, 0x080c, ++ 0x65c4, 0x0148, 0x9046, 0xb810, 0x9306, 0x1904, 0x62b0, 0xb814, ++ 0x9206, 0x15f0, 0x0028, 0xbb12, 0xba16, 0x0010, 0x080c, 0x49ba, ++ 0x0150, 0x04b0, 0x080c, 0x6625, 0x1598, 0xb810, 0x9306, 0x1580, ++ 0xb814, 0x9206, 0x1568, 0x080c, 0xab97, 0x0530, 0x2b00, 0x6012, ++ 0x080c, 0xcccc, 0x2900, 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, ++ 0xa878, 0x9086, 0x0001, 0x1170, 0x080c, 0x31e7, 0x9006, 0x080c, ++ 0x6561, 0x2001, 0x0002, 0x080c, 0x6575, 0x2001, 0x0200, 0xb86e, ++ 0xb893, 0x0002, 0x2009, 0x0003, 0x080c, 0xac8c, 0x9006, 0x0068, ++ 0x2001, 0x0001, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, ++ 0x2001, 0x0028, 0x900e, 0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, ++ 0x0005, 0x00b6, 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, ++ 0x90c6, 0x0015, 0x0904, 0x6497, 0x90c6, 0x0056, 0x0904, 0x649b, ++ 0x90c6, 0x0066, 0x0904, 0x649f, 0x90c6, 0x0067, 0x0904, 0x64a3, ++ 0x90c6, 0x0068, 0x0904, 0x64a7, 0x90c6, 0x0071, 0x0904, 0x64ab, ++ 0x90c6, 0x0074, 0x0904, 0x64af, 0x90c6, 0x007c, 0x0904, 0x64b3, ++ 0x90c6, 0x007e, 0x0904, 0x64b7, 0x90c6, 0x0037, 0x0904, 0x64bb, ++ 0x9016, 0x2079, 0x1800, 0xa974, 0x9186, 0x00ff, 0x0904, 0x6492, ++ 0x9182, 0x0800, 0x1a04, 0x6492, 0x080c, 0x6625, 0x1198, 0xb804, ++ 0x9084, 0x00ff, 0x9082, 0x0006, 0x1268, 0xa894, 0x90c6, 0x006f, ++ 0x0148, 0x080c, 0xab57, 0x1904, 0x647b, 0xb8a0, 0x9084, 0xff80, ++ 0x1904, 0x647b, 0xa894, 0x90c6, 0x006f, 0x0158, 0x90c6, 0x005e, ++ 0x0904, 0x63db, 0x90c6, 0x0064, 0x0904, 0x6404, 0x2008, 0x0804, ++ 0x639d, 0xa998, 0xa8b0, 0x2040, 0x080c, 0xab57, 0x1120, 0x9182, ++ 0x007f, 0x0a04, 0x639d, 0x9186, 0x00ff, 0x0904, 0x639d, 0x9182, ++ 0x0800, 0x1a04, 0x639d, 0xaaa0, 0xab9c, 0x787c, 0x9306, 0x1188, ++ 0x7880, 0x0096, 0x924e, 0x1128, 0x2208, 0x2310, 0x009e, 0x0804, ++ 0x639d, 0x99cc, 0xff00, 0x009e, 0x1120, 0x2208, 0x2310, 0x0804, ++ 0x639d, 0x080c, 0x49ba, 0x0904, 0x63a7, 0x900e, 0x9016, 0x90c6, ++ 0x4000, 0x15e0, 0x0006, 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, ++ 0xd0bc, 0x0108, 0xc18d, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0031, 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, ++ 0x2098, 0x080c, 0x0fb7, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0035, 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x000a, ++ 0x2098, 0x080c, 0x0fb7, 0xa8c4, 0xabc8, 0x9305, 0xabcc, 0x9305, ++ 0xabd0, 0x9305, 0xabd4, 0x9305, 0xabd8, 0x9305, 0xabdc, 0x9305, ++ 0xabe0, 0x9305, 0x9005, 0x0510, 0x000e, 0x00c8, 0x90c6, 0x4007, ++ 0x1110, 0x2408, 0x00a0, 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, ++ 0x0070, 0x90c6, 0x4009, 0x1108, 0x0050, 0x90c6, 0x4006, 0x0138, ++ 0x2001, 0x4005, 0x2009, 0x000a, 0x0010, 0x2001, 0x4006, 0xa896, ++ 0xa99a, 0xaa9e, 0x2001, 0x0030, 0x900e, 0x0478, 0x000e, 0x080c, ++ 0xab97, 0x1130, 0x2001, 0x4005, 0x2009, 0x0003, 0x9016, 0x0c78, ++ 0x2b00, 0x6012, 0x080c, 0xcccc, 0x2900, 0x6016, 0x6023, 0x0001, ++ 0xa868, 0xd88c, 0x0108, 0xc0f5, 0xa86a, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x31e7, 0x012e, 0x9006, 0x080c, 0x6561, 0x2001, 0x0002, ++ 0x080c, 0x6575, 0x2009, 0x0002, 0x080c, 0xac8c, 0xa8b0, 0xd094, ++ 0x0118, 0xb8d4, 0xc08d, 0xb8d6, 0x9006, 0x9005, 0x012e, 0x00ee, ++ 0x00fe, 0x00be, 0x0005, 0x080c, 0x56ee, 0x0118, 0x2009, 0x0007, ++ 0x00f8, 0xa998, 0xaeb0, 0x080c, 0x6625, 0x1904, 0x6398, 0x9186, ++ 0x007f, 0x0130, 0x080c, 0x6a6b, 0x0118, 0x2009, 0x0009, 0x0080, ++ 0x0096, 0x080c, 0x103a, 0x1120, 0x009e, 0x2009, 0x0002, 0x0040, ++ 0x2900, 0x009e, 0xa806, 0x080c, 0xca24, 0x19b0, 0x2009, 0x0003, ++ 0x2001, 0x4005, 0x0804, 0x639f, 0xa998, 0xaeb0, 0x080c, 0x6625, ++ 0x1904, 0x6398, 0x0096, 0x080c, 0x103a, 0x1128, 0x009e, 0x2009, ++ 0x0002, 0x0804, 0x6458, 0x2900, 0x009e, 0xa806, 0x0096, 0x2048, ++ 0x20a9, 0x002b, 0xb8c4, 0x20e0, 0xb8c8, 0x2098, 0xa860, 0x20e8, ++ 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, ++ 0x0006, 0x20a0, 0xbbc8, 0x9398, 0x0006, 0x2398, 0x080c, 0x0fb7, ++ 0x009e, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0xd684, ++ 0x1168, 0x080c, 0x56da, 0xd0b4, 0x1118, 0xa89b, 0x000b, 0x00e0, ++ 0xb800, 0xd08c, 0x0118, 0xa89b, 0x000c, 0x00b0, 0x080c, 0x6a6b, ++ 0x0118, 0xa89b, 0x0009, 0x0080, 0x080c, 0x56ee, 0x0118, 0xa89b, ++ 0x0007, 0x0050, 0x080c, 0xca07, 0x1904, 0x63d4, 0x2009, 0x0003, ++ 0x2001, 0x4005, 0x0804, 0x639f, 0xa87b, 0x0030, 0xa897, 0x4005, ++ 0xa804, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, ++ 0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, ++ 0x2031, 0x0000, 0x2041, 0x127e, 0x080c, 0xb112, 0x1904, 0x63d4, ++ 0x2009, 0x0002, 0x08e8, 0x2001, 0x0028, 0x900e, 0x0804, 0x63d5, ++ 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, ++ 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x900e, ++ 0x0804, 0x63d5, 0x2001, 0x0029, 0x900e, 0x0804, 0x63d5, 0x080c, ++ 0x3797, 0x0804, 0x63d6, 0x080c, 0x540f, 0x0804, 0x63d6, 0x080c, ++ 0x4573, 0x0804, 0x63d6, 0x080c, 0x45ec, 0x0804, 0x63d6, 0x080c, ++ 0x4648, 0x0804, 0x63d6, 0x080c, 0x4a7d, 0x0804, 0x63d6, 0x080c, ++ 0x4d34, 0x0804, 0x63d6, 0x080c, 0x507a, 0x0804, 0x63d6, 0x080c, ++ 0x5273, 0x0804, 0x63d6, 0x080c, 0x39b5, 0x0804, 0x63d6, 0x00b6, ++ 0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1608, 0x9182, ++ 0x0800, 0x1258, 0x9188, 0x1000, 0x2104, 0x905d, 0x0130, 0x080c, ++ 0x6a6b, 0x1138, 0x00d9, 0x9006, 0x00b0, 0x2001, 0x0028, 0x900e, ++ 0x0090, 0x9082, 0x0006, 0x1240, 0xb900, 0xd1fc, 0x0d98, 0x2001, ++ 0x0029, 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, ++ 0x2001, 0x0029, 0x900e, 0x9005, 0x00be, 0x0005, 0xa877, 0x0000, ++ 0xb8d0, 0x9005, 0x1904, 0x6555, 0xb888, 0x9005, 0x1904, 0x6555, ++ 0xb838, 0xb93c, 0x9102, 0x1a04, 0x6555, 0x2b10, 0x080c, 0xabc4, ++ 0x0904, 0x6551, 0x8108, 0xb93e, 0x6212, 0x2900, 0x6016, 0x6023, ++ 0x0003, 0x600b, 0xffff, 0x6007, 0x0040, 0xa878, 0x605e, 0xa880, ++ 0x9084, 0x00ff, 0x6066, 0xa883, 0x0000, 0xa87c, 0xd0ac, 0x0588, ++ 0xc0dd, 0xa87e, 0xa888, 0x8001, 0x1530, 0xa816, 0xa864, 0x9094, ++ 0x00f7, 0x9296, 0x0011, 0x11f8, 0x9084, 0x00ff, 0xc0bd, 0x601e, ++ 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x2001, 0x000f, 0x8001, 0x1df0, ++ 0x2001, 0x8004, 0x6003, 0x0004, 0x6046, 0x00f6, 0x2079, 0x0380, ++ 0x7818, 0xd0bc, 0x1de8, 0x7833, 0x0010, 0x2c00, 0x7836, 0x781b, ++ 0x8080, 0x00fe, 0x0005, 0x080c, 0x1731, 0x601c, 0xc0bd, 0x601e, ++ 0x0c38, 0xd0b4, 0x190c, 0x1c30, 0x2001, 0x8004, 0x6003, 0x0002, ++ 0x0c18, 0x81ff, 0x1110, 0xb88b, 0x0001, 0x2908, 0xb8cc, 0xb9ce, ++ 0x9005, 0x1110, 0xb9d2, 0x0020, 0x0096, 0x2048, 0xa902, 0x009e, ++ 0x0005, 0x00b6, 0x0126, 0x00c6, 0x0026, 0x2091, 0x8000, 0x6210, ++ 0x2258, 0xba00, 0x9005, 0x0110, 0xc285, 0x0008, 0xc284, 0xba02, ++ 0x002e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6, ++ 0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006, ++ 0x1170, 0xb89c, 0xd0ac, 0x0158, 0x080c, 0x6a67, 0x0140, 0x9284, ++ 0xff00, 0x8007, 0x9086, 0x0007, 0x1110, 0x2011, 0x0600, 0x000e, ++ 0x9294, 0xff00, 0x9215, 0xba06, 0x0006, 0x9086, 0x0006, 0x1120, ++ 0xba90, 0x82ff, 0x090c, 0x0d7d, 0x000e, 0x00ce, 0x012e, 0x00be, ++ 0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258, ++ 0xba04, 0x0006, 0x9086, 0x0006, 0x1168, 0xb89c, 0xd0a4, 0x0150, ++ 0x080c, 0x6a63, 0x1138, 0x9284, 0x00ff, 0x9086, 0x0007, 0x1110, ++ 0x2011, 0x0006, 0x000e, 0x9294, 0x00ff, 0x8007, 0x9215, 0xba06, ++ 0x00ce, 0x012e, 0x00be, 0x0005, 0x9182, 0x0800, 0x0218, 0x9085, ++ 0x0001, 0x0005, 0x00d6, 0x0026, 0x9190, 0x1000, 0x2204, 0x905d, ++ 0x1188, 0x0096, 0x080c, 0x103a, 0x2958, 0x009e, 0x0168, 0x2b00, ++ 0x2012, 0xb85c, 0xb8ca, 0xb860, 0xb8c6, 0x9006, 0xb8a6, 0xb8ae, ++ 0x080c, 0x6043, 0x9006, 0x0010, 0x9085, 0x0001, 0x002e, 0x00de, ++ 0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, 0x8000, 0x0026, 0x9182, ++ 0x0800, 0x0218, 0x9085, 0x0001, 0x0458, 0x00d6, 0x9190, 0x1000, ++ 0x2204, 0x905d, 0x0518, 0x2013, 0x0000, 0xb8a4, 0x904d, 0x0110, ++ 0x080c, 0x106c, 0x00d6, 0x00c6, 0xb8bc, 0x2060, 0x8cff, 0x0168, ++ 0x600c, 0x0006, 0x6014, 0x2048, 0x080c, 0xc838, 0x0110, 0x080c, ++ 0x0fec, 0x080c, 0xabed, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x2b48, ++ 0xb8c8, 0xb85e, 0xb8c4, 0xb862, 0x080c, 0x107c, 0x00de, 0x9006, ++ 0x002e, 0x012e, 0x009e, 0x00be, 0x0005, 0x0016, 0x9182, 0x0800, ++ 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, 0x1000, 0x2104, 0x905d, ++ 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, ++ 0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, 0xb802, 0x080c, 0x74e9, ++ 0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, 0x080c, 0xab57, 0x11d8, ++ 0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, 0x2061, 0x1982, 0x7048, ++ 0x2062, 0x704c, 0x6006, 0x7050, 0x600a, 0x7054, 0x600e, 0x00ce, ++ 0x703c, 0x2069, 0x0140, 0x9005, 0x1110, 0x2001, 0x0001, 0x6886, ++ 0x2069, 0x1800, 0x68b6, 0x7040, 0xb85e, 0x7048, 0xb862, 0x704c, ++ 0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, 0xb8c4, 0x20e8, 0xb8c8, ++ 0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2099, 0x027a, ++ 0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2069, 0x0200, ++ 0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, 0xb96e, 0x7048, 0xb872, ++ 0x7050, 0xb876, 0x2069, 0x0200, 0x6817, 0x0000, 0xb8a0, 0x9086, ++ 0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, 0x0211, 0x1218, 0x2009, ++ 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, ++ 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0x9182, 0x0349, ++ 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, 0x1218, 0x2009, ++ 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, ++ 0x2009, 0x0002, 0xb992, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, ++ 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, 0xb896, 0x703c, ++ 0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbd4, 0xc384, 0xba00, 0x2009, ++ 0x1867, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, ++ 0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, 0xc2bd, 0xd0cc, 0x0128, ++ 0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, 0xba02, 0xbbd6, 0x003e, ++ 0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000, ++ 0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, 0x15c0, 0xaa04, 0x9282, ++ 0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x8906, 0x8006, ++ 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9080, 0x0004, ++ 0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, 0x4002, 0x9086, 0xffff, ++ 0x0120, 0x8109, 0x1dd0, 0x080c, 0x0d7d, 0x3c00, 0x20e8, 0x3300, ++ 0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, 0x01de, 0x01ce, 0x014e, ++ 0x013e, 0x0060, 0x080c, 0x103a, 0x0170, 0x2900, 0xb8a6, 0xa803, ++ 0x0000, 0x080c, 0x68b0, 0xa807, 0x0001, 0xae12, 0x9085, 0x0001, ++ 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0126, 0x2091, 0x8000, ++ 0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, 0x9005, 0x1150, 0x080c, ++ 0x68bf, 0x1158, 0xa804, 0x908a, 0x0002, 0x0218, 0x8001, 0xa806, ++ 0x0020, 0x080c, 0x106c, 0xb8a7, 0x0000, 0x009e, 0x012e, 0x0005, ++ 0x0096, 0x00c6, 0xb888, 0x9005, 0x1904, 0x67a9, 0xb8d0, 0x904d, ++ 0x0904, 0x67a9, 0x080c, 0xabc4, 0x0904, 0x67a5, 0x8210, 0xba3e, ++ 0xa800, 0xb8d2, 0x9005, 0x1108, 0xb8ce, 0x2b00, 0x6012, 0x2900, ++ 0x6016, 0x6023, 0x0003, 0x600b, 0xffff, 0x6007, 0x0040, 0xa878, ++ 0x605e, 0xa880, 0x9084, 0x00ff, 0x6066, 0xa883, 0x0000, 0xa87c, ++ 0xd0ac, 0x01c8, 0xc0dd, 0xa87e, 0xa888, 0x8001, 0x1568, 0xa816, ++ 0xa864, 0x9094, 0x00f7, 0x9296, 0x0011, 0x1530, 0x9084, 0x00ff, ++ 0xc0bd, 0x601e, 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x2001, 0x8004, ++ 0x6003, 0x0004, 0x0030, 0x080c, 0x1c30, 0x2001, 0x8004, 0x6003, ++ 0x0002, 0x6046, 0x2001, 0x0010, 0x2c08, 0x080c, 0xa887, 0xb838, ++ 0xba3c, 0x9202, 0x0a04, 0x6756, 0x0020, 0x82ff, 0x1110, 0xb88b, ++ 0x0001, 0x00ce, 0x009e, 0x0005, 0x080c, 0x1731, 0x601c, 0xc0bd, ++ 0x601e, 0x08e0, 0x00b6, 0x0096, 0x0016, 0x20a9, 0x0800, 0x900e, ++ 0x0016, 0x080c, 0x6625, 0x1158, 0xb8d0, 0x904d, 0x0140, 0x3e00, ++ 0x9086, 0x0002, 0x1118, 0xb800, 0xd0bc, 0x1108, 0x0041, 0x001e, ++ 0x8108, 0x1f04, 0x67b8, 0x001e, 0x00be, 0x009e, 0x0005, 0x0096, ++ 0x0016, 0xb8d0, 0x904d, 0x0188, 0xa800, 0xb8d2, 0x9005, 0x1108, ++ 0xb8ce, 0x9006, 0xa802, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x080c, 0xcb36, 0x080c, 0x6d80, 0x0c60, 0x001e, 0x009e, 0x0005, ++ 0x0086, 0x9046, 0xb8d0, 0x904d, 0x0198, 0xa86c, 0x9406, 0x1118, ++ 0xa870, 0x9506, 0x0128, 0x2940, 0xa800, 0x904d, 0x0148, 0x0ca8, ++ 0xa800, 0x88ff, 0x1110, 0xb8d2, 0x0008, 0xa002, 0xa803, 0x0000, ++ 0x008e, 0x0005, 0x901e, 0x0010, 0x2019, 0x0001, 0x00e6, 0x0096, ++ 0x00c6, 0x0086, 0x0026, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, ++ 0x9046, 0x7028, 0x9065, 0x01e8, 0x6014, 0x2068, 0x83ff, 0x0120, ++ 0x605c, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, 0x1118, 0xa870, ++ 0x9506, 0x0120, 0x2c40, 0x600c, 0x2060, 0x0c60, 0x600c, 0x0006, ++ 0x0066, 0x2830, 0x080c, 0x9fa2, 0x006e, 0x000e, 0x83ff, 0x0508, ++ 0x0c08, 0x9046, 0xb8d0, 0x904d, 0x01e0, 0x83ff, 0x0120, 0xa878, ++ 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, ++ 0x0120, 0x2940, 0xa800, 0x2048, 0x0c70, 0xb8d0, 0xaa00, 0x0026, ++ 0x9906, 0x1110, 0xbad2, 0x0008, 0xa202, 0x000e, 0x83ff, 0x0108, ++ 0x0c10, 0x002e, 0x008e, 0x00ce, 0x009e, 0x00ee, 0x0005, 0x9016, ++ 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, 0x080c, 0x6914, 0x0128, ++ 0x080c, 0xc8f9, 0x0010, 0x9085, 0x0001, 0x0005, 0x080c, 0x6914, ++ 0x0128, 0x080c, 0xc89a, 0x0010, 0x9085, 0x0001, 0x0005, 0x080c, ++ 0x6914, 0x0128, 0x080c, 0xc8f6, 0x0010, 0x9085, 0x0001, 0x0005, ++ 0x080c, 0x6914, 0x0128, 0x080c, 0xc8b9, 0x0010, 0x9085, 0x0001, ++ 0x0005, 0x080c, 0x6914, 0x0128, 0x080c, 0xc93a, 0x0010, 0x9085, ++ 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, 0x9085, 0x0001, 0x0005, ++ 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e, 0x810f, ++ 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004, 0x2098, ++ 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128, 0x8109, ++ 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, 0x01ce, 0x013e, 0x0005, ++ 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0004, 0x20a0, ++ 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, 0x01de, 0x014e, 0x0136, ++ 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e, 0x810f, 0x9184, ++ 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004, 0x2098, 0x20a9, ++ 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128, 0x8109, 0x1dd8, ++ 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, 0x3300, 0x8001, 0x20a0, ++ 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, 0x01de, 0x014e, 0x9006, ++ 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000, 0xb8a4, ++ 0x904d, 0x1128, 0x080c, 0x103a, 0x0168, 0x2900, 0xb8a6, 0x080c, ++ 0x68b0, 0xa803, 0x0001, 0xa807, 0x0000, 0x9085, 0x0001, 0x012e, ++ 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x0126, 0x2091, 0x8000, ++ 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, 0x080c, 0x106c, 0x9085, ++ 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, 0xd0a4, 0x0005, 0x00b6, ++ 0x00f6, 0x080c, 0x74e9, 0x01b0, 0x71c4, 0x81ff, 0x1198, 0x71dc, ++ 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, 0x1000, 0x2004, 0x905d, ++ 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1118, 0xb800, ++ 0xc0ed, 0xb802, 0x2079, 0x1847, 0x7804, 0xd0a4, 0x01d0, 0x0156, ++ 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x6625, 0x1168, 0xb804, ++ 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, 0x9086, 0x0006, ++ 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, 0x8108, 0x1f04, 0x693b, ++ 0x015e, 0x080c, 0x6a29, 0x0120, 0x2001, 0x1985, 0x200c, 0x0038, ++ 0x2079, 0x1847, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, ++ 0x6966, 0x080c, 0x8708, 0x00fe, 0x00be, 0x0005, 0x00b6, 0x2011, ++ 0x6966, 0x080c, 0x863e, 0x080c, 0x6a29, 0x01d8, 0x2001, 0x107e, ++ 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, 0x080c, 0x6a67, 0x0130, ++ 0x2009, 0x07d0, 0x2011, 0x6966, 0x080c, 0x8708, 0x00e6, 0x2071, ++ 0x1800, 0x9006, 0x707e, 0x7060, 0x7082, 0x080c, 0x2fb2, 0x00ee, ++ 0x04d0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, ++ 0x6625, 0x1558, 0xb800, 0xd0ec, 0x0540, 0x0046, 0xbaa0, 0x2220, ++ 0x9006, 0x2009, 0x0029, 0x080c, 0xe2c9, 0xb800, 0xc0e5, 0xc0ec, ++ 0xb802, 0x080c, 0x6a63, 0x2001, 0x0707, 0x1128, 0xb804, 0x9084, ++ 0x00ff, 0x9085, 0x0700, 0xb806, 0x080c, 0xa896, 0x2019, 0x0029, ++ 0x080c, 0x93a5, 0x0076, 0x903e, 0x080c, 0x9277, 0x900e, 0x080c, ++ 0xdfeb, 0x007e, 0x004e, 0x080c, 0xa8b2, 0x001e, 0x8108, 0x1f04, ++ 0x698e, 0x00ce, 0x015e, 0x00be, 0x0005, 0x00b6, 0x6010, 0x2058, ++ 0xb800, 0xc0ec, 0xb802, 0x00be, 0x0005, 0x00b6, 0x00c6, 0x0096, ++ 0x080c, 0x1053, 0x090c, 0x0d7d, 0x2958, 0x009e, 0x2001, 0x196b, ++ 0x2b02, 0x8b07, 0x8006, 0x8006, 0x908c, 0x003f, 0xb9c6, 0x908c, ++ 0xffc0, 0xb9ca, 0xb8af, 0x0000, 0x2009, 0x00ff, 0x080c, 0x6043, ++ 0xb807, 0x0006, 0xb813, 0x00ff, 0xb817, 0xffff, 0xb86f, 0x0200, ++ 0xb86c, 0xb893, 0x0002, 0xb8bb, 0x0520, 0xb8a3, 0x00ff, 0xb8af, ++ 0x0000, 0x00ce, 0x00be, 0x0005, 0x7810, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0ac, 0x0005, 0x6010, 0x00b6, 0x905d, 0x0108, 0xb800, ++ 0x00be, 0xd0bc, 0x0005, 0x0006, 0x0016, 0x0026, 0xb804, 0x908c, ++ 0x00ff, 0x9196, 0x0006, 0x0188, 0x9196, 0x0004, 0x0170, 0x9196, ++ 0x0005, 0x0158, 0x908c, 0xff00, 0x810f, 0x9196, 0x0006, 0x0128, ++ 0x9196, 0x0004, 0x0110, 0x9196, 0x0005, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x00b6, 0x00f6, 0x2001, 0x107e, 0x2004, 0x905d, 0x0110, ++ 0xb800, 0xd0ec, 0x00fe, 0x00be, 0x0005, 0x0126, 0x0026, 0x2091, ++ 0x8000, 0x0006, 0xbaa0, 0x9290, 0x1000, 0x2204, 0x9b06, 0x190c, ++ 0x0d7d, 0x000e, 0xba00, 0x9005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, ++ 0xba02, 0x002e, 0x012e, 0x0005, 0x2011, 0x1837, 0x2204, 0xd0cc, ++ 0x0138, 0x2001, 0x1983, 0x200c, 0x2011, 0x6a59, 0x080c, 0x8708, ++ 0x0005, 0x2011, 0x6a59, 0x080c, 0x863e, 0x2011, 0x1837, 0x2204, ++ 0xc0cc, 0x2012, 0x0005, 0x080c, 0x56da, 0xd0ac, 0x0005, 0x080c, ++ 0x56da, 0xd0a4, 0x0005, 0x0016, 0xb904, 0x9184, 0x00ff, 0x908e, ++ 0x0006, 0x001e, 0x0005, 0x0016, 0xb904, 0x9184, 0xff00, 0x8007, ++ 0x908e, 0x0006, 0x001e, 0x0005, 0x00b6, 0x00f6, 0x080c, 0xcf52, ++ 0x0158, 0x70dc, 0x9084, 0x0028, 0x0138, 0x2001, 0x107f, 0x2004, ++ 0x905d, 0x0110, 0xb8d4, 0xd094, 0x00fe, 0x00be, 0x0005, 0x2071, ++ 0x1910, 0x7003, 0x0001, 0x7007, 0x0000, 0x9006, 0x7012, 0x7016, ++ 0x701a, 0x701e, 0x700a, 0x7046, 0x2001, 0x1947, 0x2003, 0x0000, ++ 0x0005, 0x0016, 0x00e6, 0x2071, 0x1948, 0x900e, 0x710a, 0x080c, ++ 0x56da, 0xd0fc, 0x1140, 0x080c, 0x56da, 0x900e, 0xd09c, 0x0108, ++ 0x8108, 0x7102, 0x00f8, 0x2001, 0x1867, 0x200c, 0x9184, 0x0007, ++ 0x0002, 0x6aab, 0x6aab, 0x6aab, 0x6aab, 0x6aab, 0x6ac1, 0x6acf, ++ 0x6aab, 0x7003, 0x0003, 0x2009, 0x1868, 0x210c, 0x9184, 0xff00, ++ 0x8007, 0x9005, 0x1110, 0x2001, 0x0002, 0x7006, 0x0018, 0x7003, ++ 0x0005, 0x0c88, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, 0x0050, ++ 0x684c, 0x9005, 0x1150, 0x00e6, 0x2071, 0x1910, 0x7028, 0xc085, ++ 0x702a, 0x00ee, 0x9085, 0x0001, 0x0488, 0x6844, 0x9005, 0x0158, ++ 0x080c, 0x785f, 0x6a60, 0x9200, 0x7002, 0x6864, 0x9101, 0x7006, ++ 0x9006, 0x7012, 0x7016, 0x6860, 0x7002, 0x6864, 0x7006, 0x6868, ++ 0x700a, 0x686c, 0x700e, 0x6844, 0x9005, 0x1110, 0x7012, 0x7016, ++ 0x684c, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, 0x7037, 0x0019, ++ 0x702b, 0x0001, 0x00e6, 0x2071, 0x1910, 0x7028, 0xc084, 0x702a, ++ 0x7007, 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006, 0x00ee, 0x0005, ++ 0x00e6, 0x0026, 0x2071, 0x1948, 0x7000, 0x9015, 0x0904, 0x6d85, ++ 0x9286, 0x0003, 0x0904, 0x6c15, 0x9286, 0x0005, 0x0904, 0x6c15, ++ 0x2071, 0x1877, 0xa87c, 0x9005, 0x0904, 0x6b76, 0x7140, 0xa868, ++ 0x9102, 0x0a04, 0x6d85, 0xa878, 0xd084, 0x15d8, 0xa853, 0x0019, ++ 0x2001, 0x8023, 0xa84e, 0x2071, 0x1910, 0x701c, 0x9005, 0x1904, ++ 0x6f28, 0x0e04, 0x6f96, 0x2071, 0x0000, 0xa850, 0x7032, 0xa84c, ++ 0x7082, 0xa870, 0x7086, 0xa86c, 0x708a, 0xa880, 0x708e, 0x7036, ++ 0x0146, 0x01d6, 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, ++ 0x002a, 0xa868, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, ++ 0x2098, 0x4003, 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, 0x0804, ++ 0x6bf8, 0xa853, 0x001b, 0x2001, 0x8027, 0x0820, 0x7004, 0xd08c, ++ 0x1904, 0x6d85, 0xa853, 0x001a, 0x2001, 0x8024, 0x0804, 0x6b3a, ++ 0x00e6, 0x0026, 0x2071, 0x1948, 0x7000, 0x9015, 0x0904, 0x6d85, ++ 0x9286, 0x0003, 0x0904, 0x6c15, 0x9286, 0x0005, 0x0904, 0x6c15, ++ 0xa84f, 0x8022, 0xa853, 0x0018, 0x0804, 0x6bdd, 0xa868, 0xd0fc, ++ 0x11d8, 0x00e6, 0x0026, 0x2001, 0x1948, 0x2004, 0x9005, 0x0904, ++ 0x6d85, 0xa87c, 0xd0bc, 0x1904, 0x6d85, 0xa978, 0xa874, 0x9105, ++ 0x1904, 0x6d85, 0x2001, 0x1948, 0x2004, 0x0002, 0x6d85, 0x6bd9, ++ 0x6c15, 0x6c15, 0x6d85, 0x6c15, 0x0005, 0xa868, 0xd0fc, 0x1500, ++ 0x00e6, 0x0026, 0x2009, 0x1948, 0x210c, 0x81ff, 0x0904, 0x6d85, ++ 0xa87c, 0xd0cc, 0x0904, 0x6d85, 0xa880, 0x9084, 0x00ff, 0x9086, ++ 0x0001, 0x1904, 0x6d85, 0x9186, 0x0003, 0x0904, 0x6c15, 0x9186, ++ 0x0005, 0x0904, 0x6c15, 0xa84f, 0x8021, 0xa853, 0x0017, 0x0028, ++ 0x0005, 0xa84f, 0x8020, 0xa853, 0x0016, 0x2071, 0x1910, 0x701c, ++ 0x9005, 0x1904, 0x6f28, 0x0e04, 0x6f96, 0x2071, 0x0000, 0xa84c, ++ 0x7082, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, ++ 0x2071, 0x1800, 0x2011, 0x0001, 0xa804, 0x900d, 0x702c, 0x1158, ++ 0xa802, 0x2900, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, ++ 0x002e, 0x00ee, 0x0005, 0x0096, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x009e, 0x0c58, 0xa84f, 0x0000, 0x00f6, ++ 0x2079, 0x0050, 0x2071, 0x1910, 0xa803, 0x0000, 0x7010, 0x9005, ++ 0x1904, 0x6d0a, 0x782c, 0x908c, 0x0780, 0x190c, 0x70e2, 0x8004, ++ 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x6c33, 0x6d0a, 0x6c58, ++ 0x6ca5, 0x080c, 0x0d7d, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, ++ 0x900d, 0x1170, 0x2071, 0x1a03, 0x703c, 0x9005, 0x1328, 0x2001, ++ 0x1949, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x0c10, ++ 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x15a8, 0x7824, ++ 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1170, 0x2009, 0x1830, ++ 0x210c, 0x918a, 0x0020, 0x0240, 0x7022, 0x2001, 0x1dc0, 0x200c, ++ 0x8108, 0x2102, 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, ++ 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8553, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x19c8, 0x2071, 0x1a03, ++ 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, 0x2004, 0x8005, 0x703e, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, ++ 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70c0, 0x9200, ++ 0x70c2, 0x080c, 0x8553, 0x0804, 0x6c5f, 0x0096, 0x00e6, 0x7824, ++ 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, ++ 0x8000, 0x70c2, 0x080c, 0x8553, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x70e2, 0xd0a4, 0x1d60, 0x00ee, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x70e2, 0xd09c, 0x11a0, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, ++ 0x1560, 0x2071, 0x1a03, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, ++ 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x009e, ++ 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, ++ 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1170, 0x2071, ++ 0x1a03, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, 0x2004, 0x8005, ++ 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1904, 0x6d5f, 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd09c, ++ 0x1198, 0x701c, 0x904d, 0x0180, 0x7010, 0x8001, 0x7012, 0x1108, ++ 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x70e2, 0xd09c, 0x0d68, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x70e2, 0xd0a4, 0x01b0, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, ++ 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, ++ 0x8553, 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x1d60, ++ 0x00ee, 0x2071, 0x1a03, 0x703c, 0x9005, 0x1328, 0x2001, 0x1949, ++ 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, ++ 0x8553, 0x00ee, 0x0804, 0x6d1a, 0xa868, 0xd0fc, 0x1560, 0x0096, ++ 0xa804, 0xa807, 0x0000, 0x904d, 0x190c, 0x0fec, 0x009e, 0x0018, ++ 0xa868, 0xd0fc, 0x1500, 0x00e6, 0x0026, 0xa84f, 0x0000, 0x00f6, ++ 0x2079, 0x0050, 0x2071, 0x1910, 0xa803, 0x0000, 0x7010, 0x9005, ++ 0x1904, 0x6ea2, 0x782c, 0x908c, 0x0780, 0x190c, 0x70e2, 0x8004, ++ 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x6da4, 0x6ea2, 0x6dbf, ++ 0x6e31, 0x080c, 0x0d7d, 0x0005, 0x2071, 0x1800, 0x2900, 0x7822, ++ 0xa804, 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x0c60, 0x2071, ++ 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1904, 0x6e20, 0x7830, ++ 0xd0dc, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824, 0x00e6, ++ 0x2071, 0x0040, 0x712c, 0xd19c, 0x1170, 0x2009, 0x1830, 0x210c, ++ 0x918a, 0x0020, 0x0240, 0x7022, 0x2001, 0x1dc0, 0x200c, 0x8108, ++ 0x2102, 0x00ee, 0x0058, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, ++ 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8553, 0x782c, 0x9094, ++ 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x19c8, 0x0e04, 0x6e17, 0x7838, ++ 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, ++ 0x0013, 0x00de, 0x2001, 0x1921, 0x200c, 0xc184, 0x2102, 0x2091, ++ 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, 0x2009, ++ 0x1947, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2001, ++ 0x1921, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e, 0x00ee, 0x0005, ++ 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, ++ 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x0804, ++ 0x6dce, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, ++ 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8553, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x1d60, 0x00ee, ++ 0x0e04, 0x6e75, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, ++ 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, ++ 0x2009, 0x1947, 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x70e2, 0xd09c, 0x1170, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, ++ 0x11e0, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, ++ 0x0c58, 0x009e, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, ++ 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, ++ 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x00fe, 0x002e, ++ 0x00ee, 0x0005, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1904, 0x6f13, 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd09c, ++ 0x11b0, 0x701c, 0x904d, 0x0198, 0xa84c, 0x9005, 0x1180, 0x7010, ++ 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900, 0x7822, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd09c, 0x0d50, 0x782c, ++ 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x05c8, 0x00e6, 0x7824, ++ 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, ++ 0x8000, 0x70c2, 0x080c, 0x8553, 0x782c, 0x9094, 0x0780, 0x190c, ++ 0x70e2, 0xd0a4, 0x1d60, 0x00ee, 0x0e04, 0x6f0c, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, ++ 0x2004, 0xd084, 0x190c, 0x11d6, 0x2009, 0x1947, 0x200b, 0x0000, ++ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x00fe, ++ 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x00ee, 0x0804, 0x6eb2, ++ 0x2071, 0x1910, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012, ++ 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, ++ 0xa804, 0x900d, 0x1128, 0x1e04, 0x6f53, 0x002e, 0x00ee, 0x0005, ++ 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, ++ 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70c0, 0x9200, 0x70c2, 0x080c, ++ 0x8553, 0x0e04, 0x6f3d, 0x2071, 0x1910, 0x701c, 0x2048, 0xa84c, ++ 0x900d, 0x0d18, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, ++ 0x7086, 0x7036, 0xa870, 0x708a, 0xa850, 0x9082, 0x0019, 0x1278, ++ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, ++ 0x2071, 0x1910, 0x080c, 0x70ce, 0x002e, 0x00ee, 0x0005, 0xa850, ++ 0x9082, 0x001c, 0x1e68, 0xa880, 0x708e, 0x7036, 0x0146, 0x01d6, ++ 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, 0x002a, 0xa868, ++ 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, 0x4003, ++ 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x0890, 0x2071, 0x1910, ++ 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, ++ 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, ++ 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, ++ 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, ++ 0x70c0, 0x9200, 0x70c2, 0x080c, 0x8553, 0x002e, 0x00ee, 0x0005, ++ 0x0006, 0xa87c, 0x0006, 0xa867, 0x0103, 0x20a9, 0x001c, 0xa860, ++ 0x20e8, 0xa85c, 0x9080, 0x001d, 0x20a0, 0x9006, 0x4004, 0x000e, ++ 0x9084, 0x00ff, 0xa87e, 0x000e, 0xa87a, 0xa982, 0x0005, 0x2071, ++ 0x1910, 0x7004, 0x0002, 0x6fe1, 0x6fe2, 0x70cd, 0x6fe2, 0x0d7d, ++ 0x70cd, 0x0005, 0x2001, 0x1948, 0x2004, 0x0002, 0x6fec, 0x6fec, ++ 0x7066, 0x7067, 0x6fec, 0x7067, 0x0126, 0x2091, 0x8000, 0x1e0c, ++ 0x70ed, 0x701c, 0x904d, 0x0508, 0xa84c, 0x9005, 0x0904, 0x7037, ++ 0x0e04, 0x7015, 0xa94c, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, ++ 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0xa850, 0x9082, 0x0019, ++ 0x1278, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x11d6, 0x2071, 0x1910, 0x080c, 0x70ce, 0x012e, 0x0804, 0x7065, ++ 0xa850, 0x9082, 0x001c, 0x1e68, 0xa880, 0x708e, 0x7036, 0x0146, ++ 0x01d6, 0x0136, 0x01c6, 0x0156, 0x20e9, 0x0000, 0x20a1, 0x002a, ++ 0xa868, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, ++ 0x4003, 0x015e, 0x01ce, 0x013e, 0x01de, 0x014e, 0x0890, 0x2001, ++ 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd09c, 0x2071, ++ 0x1910, 0x1510, 0x2071, 0x1910, 0x700f, 0x0001, 0xa964, 0x9184, ++ 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, ++ 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, ++ 0x2071, 0x1910, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, ++ 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x00d6, ++ 0x2008, 0x2069, 0x1a03, 0x683c, 0x9005, 0x0760, 0x0158, 0x9186, ++ 0x0003, 0x0540, 0x2001, 0x1815, 0x2004, 0x2009, 0x1b4e, 0x210c, ++ 0x9102, 0x1500, 0x0126, 0x2091, 0x8000, 0x2069, 0x0050, 0x693c, ++ 0x6838, 0x9106, 0x0190, 0x0e04, 0x7099, 0x2069, 0x0000, 0x6837, ++ 0x8040, 0x6833, 0x0012, 0x6883, 0x8040, 0x2091, 0x4080, 0x2001, ++ 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, 0x2069, 0x1a03, 0x683f, ++ 0xffff, 0x012e, 0x00de, 0x0126, 0x2091, 0x8000, 0x1e0c, 0x7163, ++ 0x701c, 0x904d, 0x0540, 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, ++ 0x15c9, 0xd09c, 0x1500, 0x2071, 0x1910, 0x700f, 0x0001, 0xa964, ++ 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, ++ 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6, 0x2069, 0x0050, 0x6822, ++ 0x00de, 0x701c, 0x2048, 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, ++ 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x701c, 0x904d, 0x0160, 0x7010, 0x8001, 0x7012, 0xa800, ++ 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x080c, 0x106c, 0x0005, ++ 0x012e, 0x0005, 0x2091, 0x8000, 0x0e04, 0x70e4, 0x0006, 0x0016, ++ 0x2001, 0x8004, 0x0006, 0x0804, 0x0d86, 0x0096, 0x00f6, 0x2079, ++ 0x0050, 0x7044, 0xd084, 0x01e0, 0xc084, 0x7046, 0x7838, 0x7938, ++ 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, ++ 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, ++ 0x11d6, 0x2009, 0x1947, 0x200b, 0x0000, 0x00fe, 0x009e, 0x0005, ++ 0x782c, 0x9094, 0x0780, 0x1971, 0xd0a4, 0x0db8, 0x2009, 0x1947, ++ 0x2104, 0x8000, 0x200a, 0x9082, 0x000f, 0x0e78, 0x00e6, 0x2071, ++ 0x1800, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1170, ++ 0x2009, 0x1830, 0x210c, 0x918a, 0x0020, 0x0240, 0x7022, 0x2001, ++ 0x1dc0, 0x200c, 0x8108, 0x2102, 0x00ee, 0x0058, 0x00ee, 0x2048, ++ 0x702c, 0xa802, 0x2900, 0x702e, 0x70c0, 0x8000, 0x70c2, 0x080c, ++ 0x8553, 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x19c8, ++ 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, ++ 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, ++ 0xd084, 0x190c, 0x11d6, 0x2009, 0x1947, 0x200b, 0x0000, 0x00ee, ++ 0x00fe, 0x009e, 0x0005, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084, ++ 0x01b8, 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, ++ 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, ++ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x11d6, 0x00fe, 0x0005, ++ 0x782c, 0x9094, 0x0780, 0x190c, 0x70e2, 0xd0a4, 0x0db8, 0x00e6, ++ 0x2071, 0x1800, 0x7824, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, ++ 0x70c0, 0x8000, 0x70c2, 0x080c, 0x8553, 0x782c, 0x9094, 0x0780, ++ 0x190c, 0x70e2, 0xd0a4, 0x1d70, 0x00d6, 0x2069, 0x0050, 0x693c, ++ 0x2069, 0x1948, 0x6808, 0x690a, 0x2069, 0x1a03, 0x9102, 0x1118, ++ 0x683c, 0x9005, 0x1328, 0x2001, 0x1949, 0x200c, 0x810d, 0x693e, ++ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x7098, 0x908a, 0x0029, 0x1a0c, ++ 0x0d7d, 0x9082, 0x001d, 0x003b, 0x0026, 0x2011, 0x1e00, 0x080c, ++ 0x2a44, 0x002e, 0x0005, 0x728f, 0x7215, 0x7231, 0x725b, 0x727e, ++ 0x72be, 0x72d0, 0x7231, 0x72a6, 0x71d0, 0x71fe, 0x71cf, 0x0005, ++ 0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1180, 0x6808, 0x9005, ++ 0x1518, 0x709b, 0x0028, 0x2069, 0x198f, 0x2d04, 0x7002, 0x080c, ++ 0x762b, 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0, 0x709b, 0x0028, ++ 0x2069, 0x198f, 0x2d04, 0x7002, 0x6028, 0x9085, 0x0600, 0x602a, ++ 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a6b, 0x080c, 0x1ab5, ++ 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, ++ 0x0200, 0x6804, 0x9005, 0x1178, 0x6808, 0x9005, 0x1160, 0x709b, ++ 0x0028, 0x2069, 0x198f, 0x2d04, 0x7002, 0x080c, 0x76ce, 0x6028, ++ 0x9085, 0x0600, 0x602a, 0x00de, 0x0005, 0x0006, 0x2001, 0x0090, ++ 0x080c, 0x2a0a, 0x000e, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x7341, ++ 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x709b, 0x0020, ++ 0x080c, 0x7341, 0x0028, 0x709b, 0x001d, 0x0010, 0x709b, 0x001f, ++ 0x0005, 0x2001, 0x0088, 0x080c, 0x2a0a, 0x6124, 0xd1cc, 0x11e8, ++ 0xd1dc, 0x11c0, 0xd1e4, 0x1198, 0x9184, 0x1e00, 0x11d8, 0x080c, ++ 0x1adf, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x7515, ++ 0x2001, 0x0080, 0x080c, 0x2a0a, 0x709b, 0x0028, 0x0058, 0x709b, ++ 0x001e, 0x0040, 0x709b, 0x001d, 0x0028, 0x709b, 0x0020, 0x0010, ++ 0x709b, 0x001f, 0x0005, 0x080c, 0x1adf, 0x60e3, 0x0001, 0x600c, ++ 0xc0b4, 0x600e, 0x080c, 0x7515, 0x2001, 0x0080, 0x080c, 0x2a0a, ++ 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, ++ 0x1e00, 0x1158, 0x709b, 0x0028, 0x0040, 0x709b, 0x001e, 0x0028, ++ 0x709b, 0x001d, 0x0010, 0x709b, 0x001f, 0x0005, 0x2001, 0x00a0, ++ 0x080c, 0x2a0a, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, ++ 0x1adf, 0x709b, 0x001e, 0x0010, 0x709b, 0x001d, 0x0005, 0x080c, ++ 0x73ca, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x7341, 0x0016, 0x080c, ++ 0x1adf, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x709b, 0x001e, ++ 0x0020, 0x709b, 0x001f, 0x080c, 0x7341, 0x0005, 0x0006, 0x2001, ++ 0x00a0, 0x080c, 0x2a0a, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, ++ 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x709b, 0x001e, 0x0028, ++ 0x709b, 0x001d, 0x0010, 0x709b, 0x0021, 0x0005, 0x080c, 0x73ca, ++ 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x709b, ++ 0x001e, 0x0028, 0x709b, 0x001d, 0x0010, 0x709b, 0x001f, 0x0005, ++ 0x0006, 0x2001, 0x0090, 0x080c, 0x2a0a, 0x000e, 0x6124, 0xd1d4, ++ 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x709b, ++ 0x001e, 0x0040, 0x709b, 0x001d, 0x0028, 0x709b, 0x0020, 0x0010, ++ 0x709b, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, ++ 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, ++ 0x080c, 0x74e9, 0x11f8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01d0, ++ 0xc1b4, 0x2102, 0x0026, 0x2011, 0x0200, 0x080c, 0x2a44, 0x002e, ++ 0x080c, 0x29f0, 0x6024, 0xd0cc, 0x0148, 0x2001, 0x00a0, 0x080c, ++ 0x2a0a, 0x080c, 0x77ed, 0x080c, 0x6029, 0x0428, 0x6028, 0xc0cd, ++ 0x602a, 0x0408, 0x080c, 0x7503, 0x0150, 0x080c, 0x74fa, 0x1138, ++ 0x2001, 0x0001, 0x080c, 0x25a0, 0x080c, 0x74bd, 0x00a0, 0x080c, ++ 0x73c7, 0x0178, 0x2001, 0x0001, 0x080c, 0x25a0, 0x7098, 0x9086, ++ 0x001e, 0x0120, 0x7098, 0x9086, 0x0022, 0x1118, 0x709b, 0x0025, ++ 0x0010, 0x709b, 0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, ++ 0x0005, 0x0026, 0x2011, 0x7352, 0x080c, 0x874a, 0x002e, 0x0016, ++ 0x0026, 0x2009, 0x0064, 0x2011, 0x7352, 0x080c, 0x8741, 0x002e, ++ 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, 0x080c, 0x9e32, 0x2071, ++ 0x1800, 0x080c, 0x72eb, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, ++ 0x9e32, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, ++ 0x8000, 0x6028, 0xc09c, 0x602a, 0x080c, 0xa896, 0x2011, 0x0003, ++ 0x080c, 0xa1cf, 0x2011, 0x0002, 0x080c, 0xa1d9, 0x080c, 0xa098, ++ 0x080c, 0x86f6, 0x0036, 0x901e, 0x080c, 0xa118, 0x003e, 0x080c, ++ 0xa8b2, 0x60e3, 0x0000, 0x080c, 0xe702, 0x080c, 0xe71d, 0x2009, ++ 0x0004, 0x080c, 0x29f6, 0x080c, 0x2916, 0x2001, 0x1800, 0x2003, ++ 0x0004, 0x2011, 0x0008, 0x080c, 0x2a44, 0x2011, 0x7352, 0x080c, ++ 0x874a, 0x080c, 0x7503, 0x0118, 0x9006, 0x080c, 0x2a0a, 0x080c, ++ 0x0bc3, 0x2001, 0x0001, 0x080c, 0x25a0, 0x012e, 0x00fe, 0x00ee, ++ 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x0026, 0x00e6, ++ 0x2011, 0x735f, 0x2071, 0x1a03, 0x701c, 0x9206, 0x1118, 0x7018, ++ 0x9005, 0x0110, 0x9085, 0x0001, 0x00ee, 0x002e, 0x0005, 0x6020, ++ 0xd09c, 0x0005, 0x6800, 0x9084, 0xfffe, 0x9086, 0x00c0, 0x01b8, ++ 0x2001, 0x00c0, 0x080c, 0x2a0a, 0x0156, 0x20a9, 0x002d, 0x1d04, ++ 0x73d7, 0x2091, 0x6000, 0x1f04, 0x73d7, 0x015e, 0x00d6, 0x2069, ++ 0x1800, 0x689c, 0x8001, 0x0220, 0x0118, 0x689e, 0x00de, 0x0005, ++ 0x689f, 0x0014, 0x68ec, 0xd0dc, 0x0dc8, 0x6800, 0x9086, 0x0001, ++ 0x1da8, 0x080c, 0x8756, 0x0c90, 0x00c6, 0x00d6, 0x00e6, 0x2061, ++ 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x77fc, 0x2001, ++ 0x196d, 0x2003, 0x0000, 0x9006, 0x709a, 0x60e2, 0x6886, 0x080c, ++ 0x266f, 0x9006, 0x080c, 0x2a0a, 0x080c, 0x5ee4, 0x0026, 0x2011, ++ 0xffff, 0x080c, 0x2a44, 0x002e, 0x602b, 0x182c, 0x00ee, 0x00de, ++ 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x2071, 0x1800, 0x2001, 0x197d, 0x200c, 0x9186, 0x0000, ++ 0x0158, 0x9186, 0x0001, 0x0158, 0x9186, 0x0002, 0x0158, 0x9186, ++ 0x0003, 0x0158, 0x0804, 0x74ad, 0x709b, 0x0022, 0x0040, 0x709b, ++ 0x0021, 0x0028, 0x709b, 0x0023, 0x0010, 0x709b, 0x0024, 0x60e3, ++ 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x266f, 0x080c, ++ 0xa896, 0x0026, 0x080c, 0xab5e, 0x002e, 0x080c, 0xa8b2, 0x7000, ++ 0x908e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020, ++ 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac, ++ 0x0150, 0x012e, 0x015e, 0x080c, 0xcf52, 0x0118, 0x9006, 0x080c, ++ 0x2a34, 0x0804, 0x74b9, 0x6800, 0x9084, 0x00a1, 0xc0bd, 0x6802, ++ 0x080c, 0x29f0, 0x6904, 0xd1d4, 0x1140, 0x2001, 0x0100, 0x080c, ++ 0x2a0a, 0x1f04, 0x745e, 0x080c, 0x7540, 0x012e, 0x015e, 0x080c, ++ 0x74fa, 0x0170, 0x6044, 0x9005, 0x0130, 0x080c, 0x7540, 0x9006, ++ 0x8001, 0x1df0, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x7540, ++ 0x080c, 0xcf52, 0x0118, 0x9006, 0x080c, 0x2a34, 0x0016, 0x0026, ++ 0x7000, 0x908e, 0x0004, 0x0130, 0x2009, 0x00c8, 0x2011, 0x735f, ++ 0x080c, 0x8708, 0x002e, 0x001e, 0x080c, 0x854a, 0x7034, 0xc085, ++ 0x7036, 0x2001, 0x197d, 0x2003, 0x0004, 0x080c, 0x71b4, 0x080c, ++ 0x74fa, 0x0138, 0x6804, 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, ++ 0x77f2, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, ++ 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x8561, ++ 0x080c, 0x8553, 0x080c, 0x77fc, 0x2001, 0x196d, 0x2003, 0x0000, ++ 0x9006, 0x709a, 0x60e2, 0x6886, 0x080c, 0x266f, 0x9006, 0x080c, ++ 0x2a0a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0026, 0x2011, 0xffff, ++ 0x080c, 0x2a44, 0x002e, 0x602b, 0x182c, 0x00ee, 0x00de, 0x00ce, ++ 0x0005, 0x0006, 0x2001, 0x197c, 0x2004, 0x9086, 0xaaaa, 0x000e, ++ 0x0005, 0x0006, 0x080c, 0x56de, 0x9084, 0x0030, 0x9086, 0x0000, ++ 0x000e, 0x0005, 0x0006, 0x080c, 0x56de, 0x9084, 0x0030, 0x9086, ++ 0x0030, 0x000e, 0x0005, 0x0006, 0x080c, 0x56de, 0x9084, 0x0030, ++ 0x9086, 0x0010, 0x000e, 0x0005, 0x0006, 0x080c, 0x56de, 0x9084, ++ 0x0030, 0x9086, 0x0020, 0x000e, 0x0005, 0x0036, 0x0016, 0x2001, ++ 0x180c, 0x2004, 0x908c, 0x0013, 0x0180, 0x0020, 0x080c, 0x268f, ++ 0x900e, 0x0028, 0x080c, 0x6a63, 0x1dc8, 0x2009, 0x0002, 0x2019, ++ 0x0028, 0x080c, 0x31a6, 0x9006, 0x0019, 0x001e, 0x003e, 0x0005, ++ 0x00e6, 0x2071, 0x180c, 0x2e04, 0x0130, 0x080c, 0xcf4b, 0x1128, ++ 0x9085, 0x0010, 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, 0x0005, ++ 0x6050, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, ++ 0x6028, 0x0006, 0x602f, 0x0100, 0x602f, 0x0000, 0x602f, 0x0040, ++ 0x602f, 0x0000, 0x20a9, 0x0002, 0x080c, 0x29d1, 0x0026, 0x2011, ++ 0x0040, 0x080c, 0x2a44, 0x002e, 0x000e, 0x602a, 0x000e, 0x6006, ++ 0x000e, 0x600e, 0x000e, 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, ++ 0x2001, 0x0001, 0x080c, 0x266f, 0x2001, 0x00a0, 0x0006, 0x080c, ++ 0xcf52, 0x000e, 0x0130, 0x080c, 0x2a28, 0x9006, 0x080c, 0x2a34, ++ 0x0010, 0x080c, 0x2a0a, 0x000e, 0x6052, 0x6050, 0x0006, 0xc0e5, ++ 0x6052, 0x00f6, 0x2079, 0x0100, 0x080c, 0x2981, 0x00fe, 0x000e, ++ 0x6052, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, ++ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, ++ 0xa8f4, 0x0158, 0x2001, 0x0386, 0x2004, 0xd0b4, 0x1130, 0x2001, ++ 0x0016, 0x080c, 0xa887, 0x0804, 0x761d, 0x2001, 0x180c, 0x200c, ++ 0xc1c4, 0x2102, 0x6028, 0x9084, 0xe1ff, 0x602a, 0x2011, 0x0200, ++ 0x080c, 0x2a44, 0x2001, 0x0090, 0x080c, 0x2a0a, 0x20a9, 0x0366, ++ 0x6024, 0xd0cc, 0x1558, 0x1d04, 0x75b8, 0x2091, 0x6000, 0x1f04, ++ 0x75b8, 0x080c, 0xa896, 0x2011, 0x0003, 0x080c, 0xa1cf, 0x2011, ++ 0x0002, 0x080c, 0xa1d9, 0x080c, 0xa098, 0x901e, 0x080c, 0xa118, ++ 0x2001, 0x0386, 0x2003, 0x7000, 0x080c, 0xa8b2, 0x2001, 0x00a0, ++ 0x080c, 0x2a0a, 0x080c, 0x77ed, 0x080c, 0x6029, 0x080c, 0xcf52, ++ 0x0110, 0x080c, 0x0ce9, 0x9085, 0x0001, 0x04e8, 0x2001, 0x0386, ++ 0x2004, 0xd0ac, 0x0110, 0x080c, 0x1adf, 0x60e3, 0x0000, 0x2001, ++ 0x196d, 0x2004, 0x080c, 0x266f, 0x60e2, 0x2001, 0x0080, 0x080c, ++ 0x2a0a, 0x20a9, 0x0366, 0x2011, 0x1e00, 0x080c, 0x2a44, 0x2009, ++ 0x1e00, 0x080c, 0x29f0, 0x6024, 0x910c, 0x0140, 0x1d04, 0x75fb, ++ 0x2091, 0x6000, 0x1f04, 0x75fb, 0x0804, 0x75c1, 0x2001, 0x0386, ++ 0x2003, 0x7000, 0x6028, 0x9085, 0x1e00, 0x602a, 0x70b4, 0x9005, ++ 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x080c, 0xcf52, 0x0110, ++ 0x080c, 0x0ce9, 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, ++ 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, ++ 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x7000, 0x9086, ++ 0x0003, 0x1168, 0x2001, 0x020b, 0x2004, 0x9084, 0x5540, 0x9086, ++ 0x5540, 0x1128, 0x2069, 0x1a77, 0x2d04, 0x8000, 0x206a, 0x2069, ++ 0x0140, 0x6020, 0x9084, 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, ++ 0x7694, 0x2001, 0x0088, 0x080c, 0x2a0a, 0x9006, 0x60e2, 0x6886, ++ 0x080c, 0x266f, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, ++ 0x9005, 0x01d0, 0x6028, 0x9084, 0xfbff, 0x602a, 0x2011, 0x0400, ++ 0x080c, 0x2a44, 0x2069, 0x198f, 0x7000, 0x206a, 0x709b, 0x0026, ++ 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x7674, 0x2091, 0x6000, ++ 0x1f04, 0x7674, 0x0804, 0x76c6, 0x2069, 0x0140, 0x20a9, 0x0384, ++ 0x2011, 0x1e00, 0x080c, 0x2a44, 0x2009, 0x1e00, 0x080c, 0x29f0, ++ 0x6024, 0x910c, 0x0528, 0x9084, 0x1a00, 0x1510, 0x1d04, 0x7680, ++ 0x2091, 0x6000, 0x1f04, 0x7680, 0x080c, 0xa896, 0x2011, 0x0003, ++ 0x080c, 0xa1cf, 0x2011, 0x0002, 0x080c, 0xa1d9, 0x080c, 0xa098, ++ 0x901e, 0x080c, 0xa118, 0x080c, 0xa8b2, 0x2001, 0x00a0, 0x080c, ++ 0x2a0a, 0x080c, 0x77ed, 0x080c, 0x6029, 0x9085, 0x0001, 0x00b0, ++ 0x2001, 0x0080, 0x080c, 0x2a0a, 0x2069, 0x0140, 0x60e3, 0x0000, ++ 0x70b4, 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, ++ 0x196d, 0x2004, 0x080c, 0x266f, 0x60e2, 0x9006, 0x00ee, 0x00de, ++ 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, ++ 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, ++ 0x1800, 0x6020, 0x9084, 0x00c0, 0x01e8, 0x080c, 0xa896, 0x2011, ++ 0x0003, 0x080c, 0xa1cf, 0x2011, 0x0002, 0x080c, 0xa1d9, 0x080c, ++ 0xa098, 0x901e, 0x080c, 0xa118, 0x080c, 0xa8b2, 0x2069, 0x0140, ++ 0x2001, 0x00a0, 0x080c, 0x2a0a, 0x080c, 0x77ed, 0x080c, 0x6029, ++ 0x0804, 0x7769, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x1160, 0xc1b5, ++ 0x2102, 0x080c, 0x7347, 0x2069, 0x0140, 0x2001, 0x0080, 0x080c, ++ 0x2a0a, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, ++ 0x6808, 0x9005, 0x0190, 0x6028, 0x9084, 0xfdff, 0x602a, 0x2011, ++ 0x0200, 0x080c, 0x2a44, 0x2069, 0x198f, 0x7000, 0x206a, 0x709b, ++ 0x0027, 0x7003, 0x0001, 0x0804, 0x7769, 0x2011, 0x1e00, 0x080c, ++ 0x2a44, 0x2009, 0x1e00, 0x080c, 0x29f0, 0x6024, 0x910c, 0x01c8, ++ 0x9084, 0x1c00, 0x11b0, 0x1d04, 0x7725, 0x0006, 0x0016, 0x00c6, ++ 0x00d6, 0x00e6, 0x080c, 0x8592, 0x00ee, 0x00de, 0x00ce, 0x001e, ++ 0x000e, 0x00e6, 0x2071, 0x1a03, 0x7018, 0x00ee, 0x9005, 0x19e8, ++ 0x0500, 0x0026, 0x2011, 0x735f, 0x080c, 0x863e, 0x2011, 0x7352, ++ 0x080c, 0x874a, 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70b4, ++ 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x196d, ++ 0x2004, 0x080c, 0x266f, 0x60e2, 0x2001, 0x180c, 0x200c, 0xc1b4, ++ 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x080c, 0xcf4b, 0x1904, 0x77d7, ++ 0x7130, 0xd184, 0x1170, 0x080c, 0x3368, 0x0138, 0xc18d, 0x7132, ++ 0x2011, 0x1848, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, 0x0904, ++ 0x77d7, 0x2011, 0x1848, 0x220c, 0xd1a4, 0x0538, 0x0016, 0x2019, ++ 0x000e, 0x080c, 0xe239, 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, ++ 0x9186, 0x007e, 0x01a0, 0x9186, 0x0080, 0x0188, 0x080c, 0x6625, ++ 0x1170, 0x2120, 0x9006, 0x0016, 0x2009, 0x000e, 0x080c, 0xe2c9, ++ 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x88ec, 0x001e, 0x8108, ++ 0x1f04, 0x77a0, 0x00be, 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, ++ 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x31a6, 0x001e, 0x0078, ++ 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, 0x080c, 0x6625, 0x1110, ++ 0x080c, 0x6043, 0x8108, 0x1f04, 0x77cd, 0x00be, 0x015e, 0x080c, ++ 0x1adf, 0x080c, 0xa896, 0x080c, 0xab5e, 0x080c, 0xa8b2, 0x60e3, ++ 0x0000, 0x080c, 0x6029, 0x080c, 0x741a, 0x00ee, 0x00ce, 0x004e, ++ 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, 0x197d, 0x2003, ++ 0x0001, 0x0005, 0x2001, 0x197d, 0x2003, 0x0000, 0x0005, 0x2001, ++ 0x197c, 0x2003, 0xaaaa, 0x0005, 0x2001, 0x197c, 0x2003, 0x0000, ++ 0x0005, 0x2071, 0x18fa, 0x7003, 0x0000, 0x7007, 0x0000, 0x080c, ++ 0x1053, 0x090c, 0x0d7d, 0xa8ab, 0xdcb0, 0x2900, 0x704e, 0x080c, ++ 0x1053, 0x090c, 0x0d7d, 0xa8ab, 0xdcb0, 0x2900, 0x7052, 0xa867, ++ 0x0000, 0xa86b, 0x0001, 0xa89f, 0x0000, 0x0005, 0x00e6, 0x2071, ++ 0x0040, 0x6848, 0x9005, 0x1118, 0x9085, 0x0001, 0x04b0, 0x6840, ++ 0x9005, 0x0150, 0x04a1, 0x6a50, 0x9200, 0x7002, 0x6854, 0x9101, ++ 0x7006, 0x9006, 0x7012, 0x7016, 0x6850, 0x7002, 0x6854, 0x7006, ++ 0x6858, 0x700a, 0x685c, 0x700e, 0x6840, 0x9005, 0x1110, 0x7012, ++ 0x7016, 0x6848, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, 0x2001, ++ 0x0019, 0x7036, 0x702b, 0x0001, 0x2001, 0x0004, 0x200c, 0x918c, ++ 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6, 0x2069, 0x18fa, 0x6807, ++ 0x0001, 0x00de, 0x080c, 0x7de4, 0x9006, 0x00ee, 0x0005, 0x900e, ++ 0x0156, 0x20a9, 0x0006, 0x8003, 0x818d, 0x1f04, 0x7863, 0x015e, ++ 0x0005, 0x2079, 0x0040, 0x2071, 0x18fa, 0x7004, 0x0002, 0x7879, ++ 0x787a, 0x78c5, 0x7920, 0x7a30, 0x7877, 0x7877, 0x7a5a, 0x080c, ++ 0x0d7d, 0x0005, 0x2079, 0x0040, 0x2001, 0x1dc0, 0x2003, 0x0000, ++ 0x782c, 0x908c, 0x0780, 0x190c, 0x7ec6, 0xd0a4, 0x0570, 0x2001, ++ 0x1dc0, 0x2004, 0x9082, 0x0080, 0x1640, 0x1d04, 0x7897, 0x2001, ++ 0x1a06, 0x200c, 0x8109, 0x0508, 0x2091, 0x6000, 0x2102, 0x7824, ++ 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a, ++ 0x0040, 0x0608, 0x00b8, 0x2001, 0x1800, 0x200c, 0x9186, 0x0003, ++ 0x1160, 0x7104, 0x9186, 0x0004, 0x0140, 0x9186, 0x0007, 0x0128, ++ 0x9186, 0x0003, 0x1968, 0x080c, 0x7920, 0x782c, 0xd09c, 0x090c, ++ 0x7de4, 0x0005, 0x9082, 0x005a, 0x1218, 0x2100, 0x003b, 0x0c18, ++ 0x080c, 0x7956, 0x0c90, 0x00e3, 0x08f0, 0x0005, 0x7956, 0x7956, ++ 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7978, 0x7956, ++ 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, ++ 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, ++ 0x7956, 0x7956, 0x7962, 0x7956, 0x7b4b, 0x7956, 0x7956, 0x7956, ++ 0x7978, 0x7956, 0x7962, 0x7b8c, 0x7bcd, 0x7c14, 0x7c28, 0x7956, ++ 0x7956, 0x7978, 0x7962, 0x798c, 0x7956, 0x7a04, 0x7cd3, 0x7cee, ++ 0x7956, 0x7978, 0x7956, 0x798c, 0x7956, 0x7956, 0x79fa, 0x7cee, ++ 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, ++ 0x7956, 0x79a0, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, ++ 0x7956, 0x7956, 0x7956, 0x7e6a, 0x7956, 0x7e14, 0x7956, 0x7e14, ++ 0x7956, 0x79b5, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, 0x7956, ++ 0x2079, 0x0040, 0x7004, 0x9086, 0x0003, 0x1198, 0x782c, 0x080c, ++ 0x7e0d, 0xd0a4, 0x0170, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, ++ 0xa864, 0x9084, 0x00ff, 0x908a, 0x001a, 0x1210, 0x002b, 0x0c50, ++ 0x00e9, 0x080c, 0x7de4, 0x0005, 0x7956, 0x7962, 0x7b37, 0x7956, ++ 0x7962, 0x7956, 0x7962, 0x7962, 0x7956, 0x7962, 0x7b37, 0x7962, ++ 0x7962, 0x7962, 0x7962, 0x7962, 0x7956, 0x7962, 0x7b37, 0x7956, ++ 0x7956, 0x7962, 0x7956, 0x7956, 0x7956, 0x7962, 0x00e6, 0x2071, ++ 0x18fa, 0x2009, 0x0400, 0x0071, 0x00ee, 0x0005, 0x2009, 0x1000, ++ 0x0049, 0x0005, 0x2009, 0x2000, 0x0029, 0x0005, 0x2009, 0x0800, ++ 0x0009, 0x0005, 0x7007, 0x0001, 0xa868, 0x9084, 0x00ff, 0x9105, ++ 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, 0x0005, ++ 0xa864, 0x8007, 0x9084, 0x00ff, 0x0d08, 0x8001, 0x1120, 0x7007, ++ 0x0001, 0x0804, 0x7ad9, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, ++ 0x701a, 0x704b, 0x7ad9, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, ++ 0x0968, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x7af4, 0x7007, ++ 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b, 0x7af4, 0x0005, ++ 0xa864, 0x8007, 0x9084, 0x00ff, 0x0904, 0x795e, 0x8001, 0x1120, ++ 0x7007, 0x0001, 0x0804, 0x7b10, 0x7007, 0x0003, 0x7012, 0x2900, ++ 0x7016, 0x701a, 0x704b, 0x7b10, 0x0005, 0xa864, 0x8007, 0x9084, ++ 0x00ff, 0x9086, 0x0001, 0x1904, 0x795e, 0x7007, 0x0001, 0x2009, ++ 0x1834, 0x210c, 0x81ff, 0x11a8, 0xa868, 0x9084, 0x00ff, 0xa86a, ++ 0xa883, 0x0000, 0x080c, 0x62b9, 0x1108, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0xa867, 0x0139, 0xa87a, 0xa982, 0x080c, 0x6d80, 0x012e, ++ 0x0ca0, 0xa994, 0x9186, 0x0071, 0x0d38, 0x9186, 0x0064, 0x0d20, ++ 0x9186, 0x007c, 0x0d08, 0x9186, 0x0028, 0x09f0, 0x9186, 0x0038, ++ 0x09d8, 0x9186, 0x0078, 0x09c0, 0x9186, 0x005f, 0x09a8, 0x9186, ++ 0x0056, 0x0990, 0xa897, 0x4005, 0xa89b, 0x0001, 0x2001, 0x0030, ++ 0x900e, 0x08a0, 0xa87c, 0x9084, 0x00c0, 0x9086, 0x00c0, 0x1120, ++ 0x7007, 0x0001, 0x0804, 0x7d05, 0x2900, 0x7016, 0x701a, 0x20a9, ++ 0x0004, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0030, 0x2098, 0x7050, ++ 0x2040, 0xa060, 0x20e8, 0xa05c, 0x9080, 0x0023, 0x20a0, 0x4003, ++ 0xa888, 0x7012, 0x9082, 0x0401, 0x1a04, 0x7966, 0xaab4, 0x928a, ++ 0x0002, 0x1a04, 0x7966, 0x82ff, 0x1138, 0xa8b8, 0xa9bc, 0x9105, ++ 0x0118, 0x2001, 0x7a97, 0x0018, 0x9280, 0x7a8d, 0x2005, 0x7056, ++ 0x7010, 0x9015, 0x0904, 0x7a78, 0x080c, 0x1053, 0x1118, 0x7007, ++ 0x0004, 0x0005, 0x2900, 0x7022, 0x7054, 0x2060, 0xe000, 0xa866, ++ 0x7050, 0x2040, 0xa95c, 0xe004, 0x9100, 0xa076, 0xa860, 0xa072, ++ 0xe008, 0x920a, 0x1210, 0x900e, 0x2200, 0x7112, 0xe20c, 0x8003, ++ 0x800b, 0x9296, 0x0004, 0x0108, 0x9108, 0xa17a, 0x810b, 0xa17e, ++ 0x080c, 0x1124, 0xa06c, 0x908e, 0x0100, 0x0170, 0x9086, 0x0200, ++ 0x0118, 0x7007, 0x0007, 0x0005, 0x7020, 0x2048, 0x080c, 0x106c, ++ 0x7014, 0x2048, 0x0804, 0x7966, 0x7020, 0x2048, 0x7018, 0xa802, ++ 0xa807, 0x0000, 0x2908, 0x2048, 0xa906, 0x711a, 0x0804, 0x7a30, ++ 0x7014, 0x2048, 0x7007, 0x0001, 0xa8b4, 0x9005, 0x1128, 0xa8b8, ++ 0xa9bc, 0x9105, 0x0108, 0x00b9, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x001e, 0x0904, 0x7d05, 0x0804, 0x7ad9, 0x7a8f, 0x7a93, 0x0002, ++ 0x001d, 0x0007, 0x0004, 0x000a, 0x001b, 0x0005, 0x0006, 0x000a, ++ 0x001d, 0x0005, 0x0004, 0x0076, 0x0066, 0xafb8, 0xaebc, 0xa804, ++ 0x2050, 0xb0c0, 0xb0e2, 0xb0bc, 0xb0de, 0xb0b8, 0xb0d2, 0xb0b4, ++ 0xb0ce, 0xb6da, 0xb7d6, 0xb0b0, 0xb0ca, 0xb0ac, 0xb0c6, 0xb0a8, ++ 0xb0ba, 0xb0a4, 0xb0b6, 0xb6c2, 0xb7be, 0xb0a0, 0xb0b2, 0xb09c, ++ 0xb0ae, 0xb098, 0xb0a2, 0xb094, 0xb09e, 0xb6aa, 0xb7a6, 0xb090, ++ 0xb09a, 0xb08c, 0xb096, 0xb088, 0xb08a, 0xb084, 0xb086, 0xb692, ++ 0xb78e, 0xb080, 0xb082, 0xb07c, 0xb07e, 0xb078, 0xb072, 0xb074, ++ 0xb06e, 0xb67a, 0xb776, 0xb004, 0x9055, 0x1958, 0x006e, 0x007e, ++ 0x0005, 0x2009, 0x1834, 0x210c, 0x81ff, 0x1178, 0x080c, 0x60bb, ++ 0x1108, 0x0005, 0x080c, 0x6fc0, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xcb36, 0x080c, 0x6d80, 0x012e, 0x0ca0, 0x080c, 0xcf4b, 0x1d70, ++ 0x2001, 0x0028, 0x900e, 0x0c70, 0x2009, 0x1834, 0x210c, 0x81ff, ++ 0x1188, 0xa888, 0x9005, 0x0188, 0xa883, 0x0000, 0x080c, 0x6149, ++ 0x1108, 0x0005, 0xa87a, 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, ++ 0x012e, 0x0cb8, 0x2001, 0x0028, 0x0ca8, 0x2001, 0x0000, 0x0c90, ++ 0x2009, 0x1834, 0x210c, 0x81ff, 0x11d8, 0xa888, 0x9005, 0x01e0, ++ 0xa883, 0x0000, 0xa87c, 0xd0f4, 0x0120, 0x080c, 0x621b, 0x1138, ++ 0x0005, 0x9006, 0xa87a, 0x080c, 0x6196, 0x1108, 0x0005, 0x0126, ++ 0x2091, 0x8000, 0xa87a, 0xa982, 0x080c, 0x6d80, 0x012e, 0x0cb0, ++ 0x2001, 0x0028, 0x900e, 0x0c98, 0x2001, 0x0000, 0x0c80, 0x7018, ++ 0xa802, 0x2908, 0x2048, 0xa906, 0x711a, 0x7010, 0x8001, 0x7012, ++ 0x0118, 0x7007, 0x0003, 0x0030, 0x7014, 0x2048, 0x7007, 0x0001, ++ 0x7048, 0x080f, 0x0005, 0x00b6, 0x7007, 0x0001, 0xa974, 0xa878, ++ 0x9084, 0x00ff, 0x9096, 0x0004, 0x0540, 0x20a9, 0x0001, 0x9096, ++ 0x0001, 0x0190, 0x900e, 0x20a9, 0x0800, 0x9096, 0x0002, 0x0160, ++ 0x9005, 0x11d8, 0xa974, 0x080c, 0x6625, 0x11b8, 0x0066, 0xae80, ++ 0x080c, 0x6735, 0x006e, 0x0088, 0x0046, 0x2011, 0x180c, 0x2224, ++ 0xc484, 0x2412, 0x004e, 0x00c6, 0x080c, 0x6625, 0x1110, 0x080c, ++ 0x6904, 0x8108, 0x1f04, 0x7b74, 0x00ce, 0xa87c, 0xd084, 0x1120, ++ 0x080c, 0x106c, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x6d80, 0x012e, 0x00be, 0x0005, 0x0126, 0x2091, 0x8000, 0x7007, ++ 0x0001, 0x080c, 0x6a67, 0x0580, 0x2061, 0x1a6f, 0x6100, 0xd184, ++ 0x0178, 0xa888, 0x9084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, ++ 0x6004, 0x9005, 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, ++ 0x2011, 0x0001, 0xa890, 0x9005, 0x1110, 0x2001, 0x001e, 0x8000, ++ 0x6016, 0xa888, 0x9084, 0x00ff, 0x0178, 0x6006, 0xa888, 0x8007, ++ 0x9084, 0x00ff, 0x0148, 0x600a, 0xa888, 0x8000, 0x1108, 0xc28d, ++ 0x6202, 0x012e, 0x0804, 0x7dce, 0x012e, 0x0804, 0x7dc8, 0x012e, ++ 0x0804, 0x7dc2, 0x012e, 0x0804, 0x7dc5, 0x0126, 0x2091, 0x8000, ++ 0x7007, 0x0001, 0x080c, 0x6a67, 0x05e0, 0x2061, 0x1a6f, 0x6000, ++ 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0xac78, 0x9484, ++ 0x0003, 0x0170, 0xa988, 0x918c, 0x00ff, 0x8001, 0x1120, 0x2100, ++ 0x9210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0x9212, 0x02f0, ++ 0x9484, 0x000c, 0x0188, 0xa988, 0x810f, 0x918c, 0x00ff, 0x9082, ++ 0x0004, 0x1120, 0x2100, 0x9318, 0x0288, 0x0030, 0x9082, 0x0004, ++ 0x1168, 0x2100, 0x931a, 0x0250, 0xa890, 0x9005, 0x0110, 0x8000, ++ 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x7dce, 0x012e, 0x0804, ++ 0x7dcb, 0x012e, 0x0804, 0x7dc8, 0x0126, 0x2091, 0x8000, 0x7007, ++ 0x0001, 0x2061, 0x1a6f, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, ++ 0x0220, 0x630a, 0x012e, 0x0804, 0x7ddc, 0x012e, 0x0804, 0x7dcb, ++ 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0xa87c, ++ 0xd0ac, 0x0148, 0x00c6, 0x2061, 0x1a6f, 0x6000, 0x9084, 0xfcff, ++ 0x6002, 0x00ce, 0x0440, 0xa888, 0x9005, 0x05d8, 0xa88c, 0x9065, ++ 0x0598, 0x2001, 0x1834, 0x2004, 0x9005, 0x0118, 0x080c, 0xac28, ++ 0x0068, 0x6017, 0xf400, 0x6063, 0x0000, 0xa97c, 0xd1a4, 0x0110, ++ 0xa980, 0x6162, 0x2009, 0x0041, 0x080c, 0xac8c, 0xa988, 0x918c, ++ 0xff00, 0x9186, 0x2000, 0x1138, 0x0026, 0x900e, 0x2011, 0xfdff, ++ 0x080c, 0x88ec, 0x002e, 0xa87c, 0xd0c4, 0x0148, 0x2061, 0x1a6f, ++ 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, ++ 0x012e, 0x00be, 0x0804, 0x7dce, 0x00ce, 0x012e, 0x00be, 0x0804, ++ 0x7dc8, 0xa984, 0x9186, 0x002e, 0x0d30, 0x9186, 0x002d, 0x0d18, ++ 0x9186, 0x0045, 0x0510, 0x9186, 0x002a, 0x1130, 0x2001, 0x180c, ++ 0x200c, 0xc194, 0x2102, 0x08b8, 0x9186, 0x0020, 0x0158, 0x9186, ++ 0x0029, 0x1d10, 0xa974, 0x080c, 0x6625, 0x1968, 0xb800, 0xc0e4, ++ 0xb802, 0x0848, 0xa88c, 0x9065, 0x09b8, 0x6007, 0x0024, 0x2001, ++ 0x1986, 0x2004, 0x601a, 0x0804, 0x7c63, 0xa88c, 0x9065, 0x0960, ++ 0x00e6, 0xa890, 0x9075, 0x2001, 0x1834, 0x2004, 0x9005, 0x0150, ++ 0x080c, 0xac28, 0x8eff, 0x0118, 0x2e60, 0x080c, 0xac28, 0x00ee, ++ 0x0804, 0x7c63, 0x6024, 0xc0dc, 0xc0d5, 0x6026, 0x2e60, 0x6007, ++ 0x003a, 0xa8a0, 0x9005, 0x0130, 0x6007, 0x003b, 0xa8a4, 0x602e, ++ 0xa8a8, 0x6016, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, ++ 0x00ee, 0x0804, 0x7c63, 0x2061, 0x1a6f, 0x6000, 0xd084, 0x0190, ++ 0xd08c, 0x1904, 0x7ddc, 0x0126, 0x2091, 0x8000, 0x6204, 0x8210, ++ 0x0220, 0x6206, 0x012e, 0x0804, 0x7ddc, 0x012e, 0xa883, 0x0016, ++ 0x0804, 0x7dd5, 0xa883, 0x0007, 0x0804, 0x7dd5, 0xa864, 0x8007, ++ 0x9084, 0x00ff, 0x0130, 0x8001, 0x1138, 0x7007, 0x0001, 0x0069, ++ 0x0005, 0x080c, 0x795e, 0x0040, 0x7007, 0x0003, 0x7012, 0x2900, ++ 0x7016, 0x701a, 0x704b, 0x7d05, 0x0005, 0x00b6, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0x903e, 0x2061, 0x1800, 0x61d0, 0x81ff, 0x1904, ++ 0x7d87, 0x6130, 0xd194, 0x1904, 0x7db1, 0xa878, 0x2070, 0x9e82, ++ 0x1ddc, 0x0a04, 0x7d7b, 0x6068, 0x9e02, 0x1a04, 0x7d7b, 0x7120, ++ 0x9186, 0x0006, 0x1904, 0x7d6d, 0x7010, 0x905d, 0x0904, 0x7d87, ++ 0xb800, 0xd0e4, 0x1904, 0x7dab, 0x2061, 0x1a6f, 0x6100, 0x9184, ++ 0x0301, 0x9086, 0x0001, 0x15a0, 0x7024, 0xd0dc, 0x1904, 0x7db4, ++ 0xa883, 0x0000, 0xa803, 0x0000, 0x2908, 0x7014, 0x9005, 0x1198, ++ 0x7116, 0xa87c, 0xd0f4, 0x1904, 0x7db7, 0x080c, 0x56da, 0xd09c, ++ 0x1118, 0xa87c, 0xc0cc, 0xa87e, 0x2e60, 0x080c, 0x87df, 0x012e, ++ 0x00ee, 0x00be, 0x0005, 0x2048, 0xa800, 0x9005, 0x1de0, 0xa902, ++ 0x2148, 0xa87c, 0xd0f4, 0x1904, 0x7db7, 0x012e, 0x00ee, 0x00be, ++ 0x0005, 0x012e, 0x00ee, 0xa883, 0x0006, 0x00be, 0x0804, 0x7dd5, ++ 0xd184, 0x0db8, 0xd1c4, 0x1190, 0x00a0, 0xa974, 0x080c, 0x6625, ++ 0x15d0, 0xb800, 0xd0e4, 0x15b8, 0x7120, 0x9186, 0x0007, 0x1118, ++ 0xa883, 0x0002, 0x0490, 0xa883, 0x0008, 0x0478, 0xa883, 0x000e, ++ 0x0460, 0xa883, 0x0017, 0x0448, 0xa883, 0x0035, 0x0430, 0x080c, ++ 0x56de, 0xd0fc, 0x01e8, 0xa878, 0x2070, 0x9e82, 0x1ddc, 0x02c0, ++ 0x6068, 0x9e02, 0x12a8, 0x7120, 0x9186, 0x0006, 0x1188, 0x7010, ++ 0x905d, 0x0170, 0xb800, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, ++ 0x9086, 0x0007, 0x1904, 0x7d11, 0x7003, 0x0002, 0x0804, 0x7d11, ++ 0xa883, 0x0028, 0x0010, 0xa883, 0x0029, 0x012e, 0x00ee, 0x00be, ++ 0x0420, 0xa883, 0x002a, 0x0cc8, 0xa883, 0x0045, 0x0cb0, 0x2e60, ++ 0x2019, 0x0002, 0x601b, 0x0014, 0x080c, 0xde1b, 0x012e, 0x00ee, ++ 0x00be, 0x0005, 0x2009, 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, ++ 0x2009, 0x0006, 0x0028, 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, ++ 0xa884, 0x9084, 0xff00, 0x9105, 0xa886, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6d80, 0x012e, 0x0005, 0x080c, 0x106c, 0x0005, 0x00d6, ++ 0x080c, 0x87d6, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x0040, 0x702c, 0xd084, 0x01d8, 0x908c, 0x0780, ++ 0x190c, 0x7ec6, 0xd09c, 0x11a8, 0x2071, 0x1800, 0x70c0, 0x90ea, ++ 0x0020, 0x0278, 0x8001, 0x70c2, 0x702c, 0x2048, 0xa800, 0x702e, ++ 0x9006, 0xa802, 0xa806, 0x2071, 0x0040, 0x2900, 0x7022, 0x702c, ++ 0x0c28, 0x012e, 0x00ee, 0x00de, 0x0005, 0x0006, 0x9084, 0x0780, ++ 0x190c, 0x7ec6, 0x000e, 0x0005, 0xa898, 0x9084, 0x0003, 0x05a8, ++ 0x080c, 0xab97, 0x05d8, 0x2900, 0x6016, 0xa864, 0x9084, 0x00ff, ++ 0x9086, 0x0035, 0x1138, 0x6028, 0xc0fd, 0x602a, 0x2001, 0x196b, ++ 0x2004, 0x0098, 0xa8a0, 0x9084, 0x00ff, 0xa99c, 0x918c, 0xff00, ++ 0x9105, 0xa99c, 0x918c, 0x00ff, 0x080c, 0x25fb, 0x1540, 0x00b6, ++ 0x080c, 0x6625, 0x2b00, 0x00be, 0x1510, 0x6012, 0x6023, 0x0001, ++ 0x2009, 0x0040, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0035, 0x0110, ++ 0x2009, 0x0041, 0x080c, 0xac8c, 0x0005, 0xa87b, 0x0101, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, 0x0005, 0xa87b, 0x002c, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, 0x0005, 0xa87b, ++ 0x0028, 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, 0x080c, ++ 0xabed, 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6, ++ 0x7007, 0x0001, 0xaa74, 0x9282, 0x0004, 0x1a04, 0x7eb7, 0xa97c, ++ 0x9188, 0x1000, 0x2104, 0x905d, 0xb804, 0xd284, 0x0140, 0x05e8, ++ 0x8007, 0x9084, 0x00ff, 0x9084, 0x0006, 0x1108, 0x04b0, 0x2b10, ++ 0x080c, 0xab97, 0x1118, 0x080c, 0xac5f, 0x05a8, 0x6212, 0xa874, ++ 0x0002, 0x7e95, 0x7e9a, 0x7e9d, 0x7ea3, 0x2019, 0x0002, 0x080c, ++ 0xe239, 0x0060, 0x080c, 0xe1c9, 0x0048, 0x2019, 0x0002, 0xa980, ++ 0x080c, 0xe1e8, 0x0018, 0xa980, 0x080c, 0xe1c9, 0x080c, 0xabed, ++ 0xa887, 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, ++ 0x00be, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, 0xa887, ++ 0x0006, 0x0c80, 0xa887, 0x0002, 0x0c68, 0xa887, 0x0005, 0x0c50, ++ 0xa887, 0x0004, 0x0c38, 0xa887, 0x0007, 0x0c20, 0x2091, 0x8000, ++ 0x0e04, 0x7ec8, 0x0006, 0x0016, 0x2001, 0x8003, 0x0006, 0x0804, ++ 0x0d86, 0x2001, 0x1834, 0x2004, 0x9005, 0x0005, 0x0005, 0x00f6, ++ 0x2079, 0x0300, 0x2001, 0x0200, 0x200c, 0xc1e5, 0xc1dc, 0x2102, ++ 0x2009, 0x0218, 0x210c, 0xd1ec, 0x1120, 0x080c, 0x1608, 0x00fe, ++ 0x0005, 0x2001, 0x020d, 0x2003, 0x0020, 0x781f, 0x0300, 0x00fe, ++ 0x0005, 0x781c, 0xd08c, 0x0904, 0x7f49, 0x68c0, 0x90aa, 0x0005, ++ 0x0a04, 0x854a, 0x7d44, 0x7c40, 0xd59c, 0x190c, 0x0d7d, 0x9584, ++ 0x00f6, 0x1508, 0x9484, 0x7000, 0x0138, 0x908a, 0x2000, 0x1258, ++ 0x9584, 0x0700, 0x8007, 0x04f0, 0x7000, 0x9084, 0xff00, 0x9086, ++ 0x8100, 0x0db0, 0x00b0, 0x9484, 0x0fff, 0x1130, 0x7000, 0x9084, ++ 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, 0xe6da, 0x080c, 0x8441, ++ 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, 0x1118, 0x080c, 0x849d, ++ 0x19c8, 0xd5a4, 0x0148, 0x0046, 0x0056, 0x080c, 0x7f99, 0x080c, ++ 0x2115, 0x005e, 0x004e, 0x0020, 0x080c, 0xe6da, 0x7817, 0x0140, ++ 0x080c, 0x74e9, 0x0168, 0x2001, 0x0111, 0x2004, 0xd08c, 0x0140, ++ 0x6893, 0x0000, 0x2001, 0x0110, 0x2003, 0x0008, 0x2003, 0x0000, ++ 0x0489, 0x0005, 0x0002, 0x7f56, 0x8263, 0x7f53, 0x7f53, 0x7f53, ++ 0x7f53, 0x7f53, 0x7f53, 0x7817, 0x0140, 0x0005, 0x7000, 0x908c, ++ 0xff00, 0x9194, 0xf000, 0x810f, 0x9484, 0x0fff, 0x6892, 0x9286, ++ 0x2000, 0x1150, 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x573b, ++ 0x0070, 0x080c, 0x7fb9, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, ++ 0x81a0, 0x0028, 0x9286, 0x8000, 0x1110, 0x080c, 0x8377, 0x7817, ++ 0x0140, 0x0005, 0x2001, 0x1810, 0x2004, 0xd08c, 0x0178, 0x2001, ++ 0x1800, 0x2004, 0x9086, 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, ++ 0x8048, 0x2518, 0x080c, 0x4b07, 0x003e, 0x002e, 0x0005, 0x0036, ++ 0x0046, 0x0056, 0x00f6, 0x2079, 0x0200, 0x2019, 0xfffe, 0x7c30, ++ 0x0050, 0x0036, 0x0046, 0x0056, 0x00f6, 0x2079, 0x0200, 0x7d44, ++ 0x7c40, 0x2019, 0xffff, 0x2001, 0x1810, 0x2004, 0xd08c, 0x0160, ++ 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, 0x1130, 0x0026, 0x2011, ++ 0x8048, 0x080c, 0x4b07, 0x002e, 0x00fe, 0x005e, 0x004e, 0x003e, ++ 0x0005, 0x00b6, 0x00c6, 0x7010, 0x9084, 0xff00, 0x8007, 0x9096, ++ 0x0001, 0x0120, 0x9096, 0x0023, 0x1904, 0x8171, 0x9186, 0x0023, ++ 0x15c0, 0x080c, 0x840c, 0x0904, 0x8171, 0x6120, 0x9186, 0x0001, ++ 0x0150, 0x9186, 0x0004, 0x0138, 0x9186, 0x0008, 0x0120, 0x9186, ++ 0x000a, 0x1904, 0x8171, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, ++ 0x1130, 0x2009, 0x0015, 0x080c, 0xac8c, 0x0804, 0x8171, 0x908e, ++ 0x0214, 0x0118, 0x908e, 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, ++ 0xac8c, 0x0804, 0x8171, 0x908e, 0x0100, 0x1904, 0x8171, 0x7034, ++ 0x9005, 0x1904, 0x8171, 0x2009, 0x0016, 0x080c, 0xac8c, 0x0804, ++ 0x8171, 0x9186, 0x0022, 0x1904, 0x8171, 0x7030, 0x908e, 0x0300, ++ 0x1580, 0x68dc, 0xd0a4, 0x0528, 0xc0b5, 0x68de, 0x7100, 0x918c, ++ 0x00ff, 0x697e, 0x7004, 0x6882, 0x00f6, 0x2079, 0x0100, 0x79e6, ++ 0x78ea, 0x0006, 0x9084, 0x00ff, 0x0016, 0x2008, 0x080c, 0x2644, ++ 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, 0x080c, 0x25fb, 0x695e, ++ 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, 0x2071, 0x1800, 0x70b6, ++ 0x00ee, 0x7034, 0x9005, 0x1904, 0x8171, 0x2009, 0x0017, 0x0804, ++ 0x8121, 0x908e, 0x0400, 0x1190, 0x7034, 0x9005, 0x1904, 0x8171, ++ 0x080c, 0x74e9, 0x0120, 0x2009, 0x001d, 0x0804, 0x8121, 0x68dc, ++ 0xc0a5, 0x68de, 0x2009, 0x0030, 0x0804, 0x8121, 0x908e, 0x0500, ++ 0x1140, 0x7034, 0x9005, 0x1904, 0x8171, 0x2009, 0x0018, 0x0804, ++ 0x8121, 0x908e, 0x2010, 0x1120, 0x2009, 0x0019, 0x0804, 0x8121, ++ 0x908e, 0x2110, 0x1120, 0x2009, 0x001a, 0x0804, 0x8121, 0x908e, ++ 0x5200, 0x1140, 0x7034, 0x9005, 0x1904, 0x8171, 0x2009, 0x001b, ++ 0x0804, 0x8121, 0x908e, 0x5000, 0x1140, 0x7034, 0x9005, 0x1904, ++ 0x8171, 0x2009, 0x001c, 0x0804, 0x8121, 0x908e, 0x1300, 0x1120, ++ 0x2009, 0x0034, 0x0804, 0x8121, 0x908e, 0x1200, 0x1140, 0x7034, ++ 0x9005, 0x1904, 0x8171, 0x2009, 0x0024, 0x0804, 0x8121, 0x908c, ++ 0xff00, 0x918e, 0x2400, 0x1170, 0x2009, 0x002d, 0x2001, 0x1810, ++ 0x2004, 0xd09c, 0x0904, 0x8121, 0x080c, 0xd64f, 0x1904, 0x8171, ++ 0x0804, 0x811f, 0x908c, 0xff00, 0x918e, 0x5300, 0x1120, 0x2009, ++ 0x002a, 0x0804, 0x8121, 0x908e, 0x0f00, 0x1120, 0x2009, 0x0020, ++ 0x0804, 0x8121, 0x908e, 0x6104, 0x1530, 0x2029, 0x0205, 0x2011, ++ 0x026d, 0x8208, 0x2204, 0x9082, 0x0004, 0x8004, 0x8004, 0x20a8, ++ 0x2011, 0x8015, 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x4b07, ++ 0x004e, 0x8108, 0x0f04, 0x80d5, 0x9186, 0x0280, 0x1d88, 0x2504, ++ 0x8000, 0x202a, 0x2009, 0x0260, 0x0c58, 0x202b, 0x0000, 0x2009, ++ 0x0023, 0x0804, 0x8121, 0x908e, 0x6000, 0x1120, 0x2009, 0x003f, ++ 0x0804, 0x8121, 0x908e, 0x5400, 0x1138, 0x080c, 0x84fa, 0x1904, ++ 0x8171, 0x2009, 0x0046, 0x04a8, 0x908e, 0x5500, 0x1148, 0x080c, ++ 0x8522, 0x1118, 0x2009, 0x0041, 0x0460, 0x2009, 0x0042, 0x0448, ++ 0x908e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0418, 0x908e, 0x1000, ++ 0x1118, 0x2009, 0x004e, 0x00e8, 0x908e, 0x6300, 0x1118, 0x2009, ++ 0x004a, 0x00b8, 0x908c, 0xff00, 0x918e, 0x5600, 0x1118, 0x2009, ++ 0x004f, 0x0078, 0x908c, 0xff00, 0x918e, 0x5700, 0x1118, 0x2009, ++ 0x0050, 0x0038, 0x2009, 0x001d, 0x6838, 0xd0d4, 0x0110, 0x2009, ++ 0x004c, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x25fb, 0x1904, 0x8174, 0x080c, 0x65c4, 0x1904, 0x8174, 0xbe12, ++ 0xbd16, 0x001e, 0x0016, 0x080c, 0x74e9, 0x01c0, 0x68dc, 0xd08c, ++ 0x1148, 0x7000, 0x9084, 0x00ff, 0x1188, 0x7004, 0x9084, 0xff00, ++ 0x1168, 0x0040, 0x687c, 0x9606, 0x1148, 0x6880, 0x9506, 0x9084, ++ 0xff00, 0x1120, 0x9584, 0x00ff, 0xb886, 0x0080, 0xb884, 0x9005, ++ 0x1168, 0x9186, 0x0046, 0x1150, 0x687c, 0x9606, 0x1138, 0x6880, ++ 0x9506, 0x9084, 0xff00, 0x1110, 0x001e, 0x0098, 0x080c, 0xab97, ++ 0x01a8, 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, ++ 0x9186, 0x004c, 0x1110, 0x6023, 0x000a, 0x0016, 0x001e, 0x080c, ++ 0xac8c, 0x00ce, 0x00be, 0x0005, 0x001e, 0x0cd8, 0x2001, 0x180e, ++ 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x4b07, 0x080c, ++ 0xac5f, 0x0d90, 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, ++ 0x001e, 0x0016, 0x9186, 0x0017, 0x0118, 0x9186, 0x0030, 0x1128, ++ 0x6007, 0x0009, 0x6017, 0x2900, 0x0020, 0x6007, 0x0051, 0x6017, ++ 0x0000, 0x602f, 0x0009, 0x6003, 0x0001, 0x080c, 0x9225, 0x08a0, ++ 0x080c, 0x3332, 0x1140, 0x7010, 0x9084, 0xff00, 0x8007, 0x908e, ++ 0x0008, 0x1108, 0x0009, 0x0005, 0x00b6, 0x00c6, 0x0046, 0x7000, ++ 0x908c, 0xff00, 0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, 0x840c, ++ 0x0904, 0x81fb, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1140, ++ 0x7034, 0x9005, 0x15c0, 0x2009, 0x0015, 0x080c, 0xac8c, 0x0498, ++ 0x908e, 0x0100, 0x1580, 0x7034, 0x9005, 0x1568, 0x2009, 0x0016, ++ 0x080c, 0xac8c, 0x0440, 0x9186, 0x0032, 0x1528, 0x7030, 0x908e, ++ 0x1400, 0x1508, 0x2009, 0x0038, 0x0016, 0x2011, 0x0263, 0x2204, ++ 0x8211, 0x220c, 0x080c, 0x25fb, 0x11a8, 0x080c, 0x65c4, 0x1190, ++ 0xbe12, 0xbd16, 0x080c, 0xab97, 0x0168, 0x2b08, 0x6112, 0x080c, ++ 0xcccc, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0xac8c, ++ 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, 0x00b6, ++ 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, 0x11b8, ++ 0x9592, 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, 0x007f, ++ 0x0804, 0x825d, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, 0x0804, ++ 0x825d, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, 0x2011, ++ 0x0000, 0x2019, 0x1837, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9, ++ 0x0800, 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x077f, ++ 0x2071, 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, 0x11d0, ++ 0x9496, 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, 0x2600, ++ 0x9706, 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, 0x9745, ++ 0x1148, 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, 0x94c6, ++ 0x0080, 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x8232, 0x82ff, 0x1118, ++ 0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, 0x00ee, ++ 0x004e, 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, 0x9184, ++ 0x000f, 0x0002, 0x827a, 0x827a, 0x827a, 0x841e, 0x827a, 0x827d, ++ 0x82a2, 0x832b, 0x827a, 0x827a, 0x827a, 0x827a, 0x827a, 0x827a, ++ 0x827a, 0x827a, 0x7817, 0x0140, 0x0005, 0x00b6, 0x7110, 0xd1bc, ++ 0x01e8, 0x7120, 0x2160, 0x9c8c, 0x0003, 0x11c0, 0x9c8a, 0x1ddc, ++ 0x02a8, 0x6868, 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, ++ 0x2158, 0xb910, 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, ++ 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, 0xac8c, 0x7817, 0x0140, ++ 0x00be, 0x0005, 0x00b6, 0x00c6, 0x9484, 0x0fff, 0x0904, 0x8307, ++ 0x7110, 0xd1bc, 0x1904, 0x8307, 0x7108, 0x700c, 0x2028, 0x918c, ++ 0x00ff, 0x2130, 0x9094, 0xff00, 0x15c8, 0x81ff, 0x15b8, 0x9080, ++ 0x3374, 0x200d, 0x918c, 0xff00, 0x810f, 0x2001, 0x0080, 0x9106, ++ 0x0904, 0x8307, 0x9182, 0x0801, 0x1a04, 0x8307, 0x9190, 0x1000, ++ 0x2204, 0x905d, 0x05e0, 0xbe12, 0xbd16, 0xb800, 0xd0ec, 0x15b8, ++ 0xba04, 0x9294, 0xff00, 0x9286, 0x0600, 0x1190, 0x080c, 0xab97, ++ 0x0598, 0x2b08, 0x7028, 0x6052, 0x702c, 0x604e, 0x6112, 0x6023, ++ 0x0006, 0x7120, 0x610a, 0x7130, 0x615e, 0x080c, 0xd8b5, 0x00f8, ++ 0x080c, 0x6a6b, 0x1138, 0xb807, 0x0606, 0x0c40, 0x190c, 0x81ff, ++ 0x11b0, 0x0880, 0x080c, 0xab97, 0x2b08, 0x0188, 0x6112, 0x6023, ++ 0x0004, 0x7120, 0x610a, 0x9286, 0x0400, 0x1118, 0x6007, 0x0005, ++ 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x9225, 0x7817, ++ 0x0140, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180e, 0x2004, 0xd0ec, ++ 0x0120, 0x2011, 0x8049, 0x080c, 0x4b07, 0x080c, 0xac5f, 0x0d78, ++ 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, 0x615e, ++ 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, 0xa022, ++ 0x080c, 0x921e, 0x08e0, 0x00b6, 0x7110, 0xd1bc, 0x05d0, 0x7020, ++ 0x2060, 0x9c84, 0x0003, 0x15a8, 0x9c82, 0x1ddc, 0x0690, 0x6868, ++ 0x9c02, 0x1678, 0x9484, 0x0fff, 0x9082, 0x000c, 0x0650, 0x7008, ++ 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1510, 0x700c, ++ 0xb914, 0x9106, 0x11f0, 0x7124, 0x610a, 0x601c, 0xd0fc, 0x11c8, ++ 0x2001, 0x0271, 0x2004, 0x9005, 0x1180, 0x9484, 0x0fff, 0x9082, ++ 0x000c, 0x0158, 0x0066, 0x2031, 0x0100, 0xa001, 0xa001, 0x8631, ++ 0x1de0, 0x006e, 0x601c, 0xd0fc, 0x1120, 0x2009, 0x0045, 0x080c, ++ 0xac8c, 0x7817, 0x0140, 0x00be, 0x0005, 0x6120, 0x9186, 0x0002, ++ 0x0128, 0x9186, 0x0005, 0x0110, 0x9085, 0x0001, 0x0005, 0x080c, ++ 0x3332, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086, 0x0000, ++ 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b, 0x0005, ++ 0x838e, 0x838f, 0x838e, 0x838e, 0x83ee, 0x83fd, 0x0005, 0x00b6, ++ 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x83ec, 0x700c, ++ 0x7108, 0x080c, 0x25fb, 0x1904, 0x83ec, 0x080c, 0x65c4, 0x1904, ++ 0x83ec, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, 0x080c, 0x6a6b, ++ 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, 0x840c, 0x00ce, ++ 0x05d8, 0x080c, 0xab97, 0x2b08, 0x05b8, 0x6112, 0x080c, 0xcccc, ++ 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, 0xac8c, ++ 0x0458, 0x080c, 0x6a6b, 0x0148, 0x9086, 0x0004, 0x0130, 0x080c, ++ 0x6a73, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, 0xab97, 0x2b08, ++ 0x01d8, 0x6112, 0x080c, 0xcccc, 0x6023, 0x0005, 0x7120, 0x610a, ++ 0x2009, 0x0088, 0x080c, 0xac8c, 0x0078, 0x080c, 0xab97, 0x2b08, ++ 0x0158, 0x6112, 0x080c, 0xcccc, 0x6023, 0x0004, 0x7120, 0x610a, ++ 0x2009, 0x0001, 0x080c, 0xac8c, 0x00be, 0x0005, 0x7110, 0xd1bc, ++ 0x0158, 0x00d1, 0x0148, 0x080c, 0x836d, 0x1130, 0x7124, 0x610a, ++ 0x2009, 0x0089, 0x080c, 0xac8c, 0x0005, 0x7110, 0xd1bc, 0x0158, ++ 0x0059, 0x0148, 0x080c, 0x836d, 0x1130, 0x7124, 0x610a, 0x2009, ++ 0x008a, 0x080c, 0xac8c, 0x0005, 0x7020, 0x2060, 0x9c84, 0x0003, ++ 0x1158, 0x9c82, 0x1ddc, 0x0240, 0x2001, 0x181a, 0x2004, 0x9c02, ++ 0x1218, 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x00b6, 0x7110, ++ 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84, 0x0003, 0x11b0, 0x9c82, ++ 0x1ddc, 0x0298, 0x6868, 0x9c02, 0x1280, 0x7008, 0x9084, 0x00ff, ++ 0x6110, 0x2158, 0xb910, 0x9106, 0x1140, 0x700c, 0xb914, 0x9106, ++ 0x1120, 0x2009, 0x0051, 0x080c, 0xac8c, 0x7817, 0x0140, 0x00be, ++ 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, ++ 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, ++ 0x0005, 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000, 0x9086, ++ 0xc000, 0x05c0, 0x080c, 0xab97, 0x05a8, 0x0066, 0x00c6, 0x0046, ++ 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x25fb, 0x1590, ++ 0x080c, 0x65c4, 0x1578, 0xbe12, 0xbd16, 0x2b00, 0x004e, 0x00ce, ++ 0x6012, 0x080c, 0xcccc, 0x080c, 0x103a, 0x0500, 0x2900, 0x6062, ++ 0x9006, 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b, 0x20a9, ++ 0x000e, 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98, 0x4003, ++ 0x006e, 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003, 0x0001, ++ 0x080c, 0x9225, 0x00fe, 0x009e, 0x00ce, 0x0005, 0x080c, 0xabed, ++ 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8, 0x00c6, 0x7000, 0x908c, ++ 0xff00, 0x9184, 0xf000, 0x810f, 0x9086, 0x2000, 0x1904, 0x84f4, ++ 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111, 0x2004, 0x9005, 0x1904, ++ 0x84f6, 0x7030, 0x908e, 0x0400, 0x0904, 0x84f6, 0x908e, 0x6000, ++ 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e, 0x0300, 0x11d8, 0x2009, ++ 0x1837, 0x210c, 0xd18c, 0x1590, 0xd1a4, 0x1580, 0x080c, 0x6a29, ++ 0x0558, 0x68b0, 0x9084, 0x00ff, 0x7100, 0x918c, 0x00ff, 0x9106, ++ 0x1518, 0x6880, 0x69b0, 0x918c, 0xff00, 0x9105, 0x7104, 0x9106, ++ 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c, 0xd1b4, 0x11a8, 0x908e, ++ 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0, 0x908e, 0x5000, 0x09b8, ++ 0x0058, 0x9186, 0x0023, 0x1140, 0x080c, 0x840c, 0x0128, 0x6004, ++ 0x9086, 0x0002, 0x0118, 0x0000, 0x9006, 0x0010, 0x9085, 0x0001, ++ 0x00ce, 0x0005, 0x0156, 0x0046, 0x0016, 0x0036, 0x7038, 0x2020, ++ 0x8427, 0x94a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x027a, 0x080c, 0xbbae, 0x1178, 0xd48c, 0x0148, ++ 0x20a9, 0x0004, 0x2019, 0x1801, 0x2011, 0x027e, 0x080c, 0xbbae, ++ 0x1120, 0xd494, 0x0110, 0x9085, 0x0001, 0x003e, 0x001e, 0x004e, ++ 0x015e, 0x0005, 0x0156, 0x0046, 0x0016, 0x0036, 0x7038, 0x2020, ++ 0x8427, 0x94a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0004, 0x2019, ++ 0x1805, 0x2011, 0x0272, 0x080c, 0xbbae, 0x1178, 0xd48c, 0x0148, ++ 0x20a9, 0x0004, 0x2019, 0x1801, 0x2011, 0x0276, 0x080c, 0xbbae, ++ 0x1120, 0xd494, 0x0110, 0x9085, 0x0001, 0x003e, 0x001e, 0x004e, ++ 0x015e, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7800, 0xc0e5, 0xc0cc, ++ 0x7802, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x1800, 0x7834, 0xd084, ++ 0x1130, 0x2079, 0x0200, 0x7800, 0x9085, 0x1200, 0x7802, 0x00fe, ++ 0x0005, 0x00e6, 0x2071, 0x1800, 0x7034, 0xc084, 0x7036, 0x00ee, ++ 0x0005, 0x2071, 0x1a03, 0x7003, 0x0003, 0x700f, 0x0361, 0x9006, ++ 0x701a, 0x7072, 0x7012, 0x7017, 0x1ddc, 0x7007, 0x0000, 0x7026, ++ 0x702b, 0x9e54, 0x7032, 0x7037, 0x9ed1, 0x703f, 0xffff, 0x7042, ++ 0x7047, 0x5571, 0x704a, 0x705b, 0x8711, 0x080c, 0x1053, 0x090c, ++ 0x0d7d, 0x2900, 0x703a, 0xa867, 0x0003, 0xa86f, 0x0100, 0xa8ab, ++ 0xdcb0, 0x0005, 0x2071, 0x1a03, 0x1d04, 0x862d, 0x2091, 0x6000, ++ 0x700c, 0x8001, 0x700e, 0x1590, 0x2001, 0x013c, 0x2004, 0x9005, ++ 0x190c, 0x87bb, 0x2001, 0x1869, 0x2004, 0xd0c4, 0x0158, 0x3a00, ++ 0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000, ++ 0x080c, 0x0d7d, 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, 0x2091, ++ 0x8000, 0x2069, 0x1800, 0x69ec, 0xd1e4, 0x1138, 0xd1dc, 0x1118, ++ 0x080c, 0x877f, 0x0010, 0x080c, 0x8756, 0x7040, 0x900d, 0x0148, ++ 0x8109, 0x7142, 0x1130, 0x7044, 0x080f, 0x0018, 0x0126, 0x2091, ++ 0x8000, 0x7024, 0x900d, 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, ++ 0x7023, 0x0009, 0x8109, 0x7126, 0x9186, 0x03e8, 0x1110, 0x7028, ++ 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0x900d, 0x0180, ++ 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, ++ 0x0128, 0x9184, 0x007f, 0x090c, 0x9f6d, 0x0010, 0x7034, 0x080f, ++ 0x703c, 0x9005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0x900d, ++ 0x0168, 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, ++ 0x714e, 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0x900d, ++ 0x01d8, 0x0016, 0x7070, 0x900d, 0x0158, 0x706c, 0x8001, 0x706e, ++ 0x1138, 0x706f, 0x0009, 0x8109, 0x7172, 0x1110, 0x7074, 0x080f, ++ 0x001e, 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, ++ 0x711a, 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x8655, ++ 0x8656, 0x8680, 0x00e6, 0x2071, 0x1a03, 0x7018, 0x9005, 0x1120, ++ 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, ++ 0x2071, 0x1a03, 0x701c, 0x9206, 0x1120, 0x701a, 0x701e, 0x7072, ++ 0x7076, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1a03, 0xb888, ++ 0x9102, 0x0208, 0xb98a, 0x00ee, 0x0005, 0x0005, 0x00b6, 0x2031, ++ 0x0010, 0x7110, 0x080c, 0x6625, 0x11a8, 0xb888, 0x8001, 0x0290, ++ 0xb88a, 0x1180, 0x0126, 0x2091, 0x8000, 0x0066, 0xb8d0, 0x9005, ++ 0x0138, 0x0026, 0xba3c, 0x0016, 0x080c, 0x6750, 0x001e, 0x002e, ++ 0x006e, 0x012e, 0x8108, 0x9182, 0x0800, 0x1220, 0x8631, 0x0128, ++ 0x7112, 0x0c00, 0x900e, 0x7007, 0x0002, 0x7112, 0x00be, 0x0005, ++ 0x2031, 0x0010, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, 0x6048, ++ 0x9005, 0x0128, 0x8001, 0x604a, 0x1110, 0x080c, 0xcb4d, 0x6018, ++ 0x9005, 0x0904, 0x86d8, 0x00f6, 0x2079, 0x0300, 0x7918, 0xd1b4, ++ 0x1904, 0x86eb, 0x781b, 0x2020, 0xa001, 0x7918, 0xd1b4, 0x0120, ++ 0x781b, 0x2000, 0x0804, 0x86eb, 0x8001, 0x601a, 0x0106, 0x781b, ++ 0x2000, 0xa001, 0x7918, 0xd1ac, 0x1dd0, 0x010e, 0x00fe, 0x1540, ++ 0x6120, 0x9186, 0x0003, 0x0148, 0x9186, 0x0006, 0x0130, 0x9186, ++ 0x0009, 0x11e0, 0x611c, 0xd1c4, 0x1100, 0x080c, 0xc838, 0x01b0, ++ 0x6014, 0x2048, 0xa884, 0x908a, 0x199a, 0x0280, 0x9082, 0x1999, ++ 0xa886, 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x800b, ++ 0x810b, 0x9108, 0x611a, 0x080c, 0xcf7e, 0x0110, 0x080c, 0xc536, ++ 0x012e, 0x9c88, 0x001c, 0x7116, 0x2001, 0x181a, 0x2004, 0x9102, ++ 0x1228, 0x8631, 0x0138, 0x2160, 0x0804, 0x8684, 0x7017, 0x1ddc, ++ 0x7007, 0x0000, 0x0005, 0x00fe, 0x0c58, 0x00e6, 0x2071, 0x1a03, ++ 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0x1a0c, ++ 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, 0x1a03, 0x7132, 0x702f, ++ 0x0009, 0x00ee, 0x0005, 0x2011, 0x1a0f, 0x2013, 0x0000, 0x0005, ++ 0x00e6, 0x2071, 0x1a03, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, ++ 0x0005, 0x0086, 0x0026, 0x7054, 0x8000, 0x7056, 0x2001, 0x1a11, ++ 0x2044, 0xa06c, 0x9086, 0x0000, 0x0150, 0x7068, 0xa09a, 0x7064, ++ 0xa096, 0x7060, 0xa092, 0x705c, 0xa08e, 0x080c, 0x1124, 0x002e, ++ 0x008e, 0x0005, 0x0006, 0x0016, 0x0096, 0x00a6, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, 0x8592, 0x015e, 0x00fe, ++ 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x001e, 0x000e, ++ 0x0005, 0x00e6, 0x2071, 0x1a03, 0x7172, 0x7276, 0x706f, 0x0009, ++ 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x1a03, 0x7074, 0x9206, ++ 0x1110, 0x7072, 0x7076, 0x000e, 0x00ee, 0x0005, 0x2069, 0x1800, ++ 0x69ec, 0xd1e4, 0x1518, 0x0026, 0xd1ec, 0x0140, 0x6a54, 0x6874, ++ 0x9202, 0x0288, 0x8117, 0x9294, 0x00c1, 0x0088, 0x9184, 0x0007, ++ 0x01a0, 0x8109, 0x9184, 0x0007, 0x0110, 0x69ee, 0x0070, 0x8107, ++ 0x9084, 0x0007, 0x910d, 0x8107, 0x9106, 0x9094, 0x00c1, 0x9184, ++ 0xff3e, 0x9205, 0x68ee, 0x080c, 0x0f05, 0x002e, 0x0005, 0x69e8, ++ 0x9184, 0x003f, 0x05b8, 0x8109, 0x9184, 0x003f, 0x01a8, 0x6a54, ++ 0x6874, 0x9202, 0x0220, 0xd1bc, 0x0168, 0xc1bc, 0x0018, 0xd1bc, ++ 0x1148, 0xc1bd, 0x2110, 0x00e6, 0x2071, 0x1800, 0x080c, 0x0f27, ++ 0x00ee, 0x0400, 0x69ea, 0x00f0, 0x0026, 0x8107, 0x9094, 0x0007, ++ 0x0128, 0x8001, 0x8007, 0x9085, 0x0007, 0x0050, 0x2010, 0x8004, ++ 0x8004, 0x8004, 0x9084, 0x0007, 0x9205, 0x8007, 0x9085, 0x0028, ++ 0x9086, 0x0040, 0x2010, 0x00e6, 0x2071, 0x1800, 0x080c, 0x0f27, ++ 0x00ee, 0x002e, 0x0005, 0x0016, 0x00c6, 0x2009, 0xfffc, 0x210d, ++ 0x2061, 0x0100, 0x60f0, 0x9100, 0x60f3, 0x0000, 0x2009, 0xfffc, ++ 0x200f, 0x1220, 0x8108, 0x2105, 0x8000, 0x200f, 0x00ce, 0x001e, ++ 0x0005, 0x00c6, 0x2061, 0x1a6f, 0x00ce, 0x0005, 0x9184, 0x000f, ++ 0x8003, 0x8003, 0x8003, 0x9080, 0x1a6f, 0x2060, 0x0005, 0xa884, ++ 0x908a, 0x199a, 0x1638, 0x9005, 0x1150, 0x00c6, 0x2061, 0x1a6f, ++ 0x6014, 0x00ce, 0x9005, 0x1130, 0x2001, 0x001e, 0x0018, 0x908e, ++ 0xffff, 0x01b0, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c, ++ 0x908c, 0x00c0, 0x918e, 0x00c0, 0x0904, 0x8896, 0xd0b4, 0x1168, ++ 0xd0bc, 0x1904, 0x886f, 0x2009, 0x0006, 0x080c, 0x88c3, 0x0005, ++ 0x900e, 0x0c60, 0x2001, 0x1999, 0x08b0, 0xd0fc, 0x05c8, 0x908c, ++ 0x2023, 0x1550, 0x87ff, 0x1540, 0x6124, 0x918c, 0x0500, 0x1520, ++ 0x6100, 0x918e, 0x0007, 0x1500, 0x2009, 0x1869, 0x210c, 0xd184, ++ 0x11d8, 0x6003, 0x0003, 0x6007, 0x0043, 0x6047, 0xb035, 0x080c, ++ 0x1c03, 0xa87c, 0xc0dd, 0xa87e, 0x600f, 0x0000, 0x00f6, 0x2079, ++ 0x0380, 0x7818, 0xd0bc, 0x1de8, 0x7833, 0x0013, 0x2c00, 0x7836, ++ 0x781b, 0x8080, 0x00fe, 0x0005, 0x908c, 0x0003, 0x0120, 0x918e, ++ 0x0003, 0x1904, 0x88bd, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, ++ 0x6024, 0xd0d4, 0x11e8, 0x2009, 0x1869, 0x2104, 0xd084, 0x1138, ++ 0x87ff, 0x1120, 0x2009, 0x0043, 0x0804, 0xac8c, 0x0005, 0x87ff, ++ 0x1de8, 0x2009, 0x0042, 0x0804, 0xac8c, 0x6110, 0x00b6, 0x2158, ++ 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6024, 0xc0cd, 0x6026, 0x0c00, ++ 0xc0d4, 0x6026, 0xa890, 0x602e, 0xa88c, 0x6032, 0x08e0, 0xd0fc, ++ 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x88bd, ++ 0x908c, 0x2020, 0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, 0x2c78, ++ 0x080c, 0x1731, 0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, 0x0042, ++ 0x080c, 0xac8c, 0x0005, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, ++ 0xd1ac, 0x0d58, 0x6124, 0xc1cd, 0x6126, 0x0c38, 0xd0fc, 0x0188, ++ 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, 0x908e, ++ 0x0002, 0x0148, 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0xac8c, ++ 0x0005, 0x00b9, 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, ++ 0xac8c, 0x0cb0, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, ++ 0x0d20, 0x6124, 0xc1cd, 0x6126, 0x0c00, 0x2009, 0x0004, 0x0019, ++ 0x0005, 0x2009, 0x0001, 0x0096, 0x080c, 0xc838, 0x0518, 0x6014, ++ 0x2048, 0xa982, 0xa800, 0x6016, 0x9186, 0x0001, 0x1188, 0xa97c, ++ 0x918c, 0x8100, 0x918e, 0x8100, 0x1158, 0x00c6, 0x2061, 0x1a6f, ++ 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, ++ 0x080c, 0x6bb5, 0x6014, 0x904d, 0x0076, 0x2039, 0x0000, 0x190c, ++ 0x87df, 0x007e, 0x009e, 0x0005, 0x0156, 0x00c6, 0x2061, 0x1a6f, ++ 0x6000, 0x81ff, 0x0110, 0x9205, 0x0008, 0x9204, 0x6002, 0x00ce, ++ 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808, 0x9005, 0x0120, ++ 0x8001, 0x680a, 0x9085, 0x0001, 0x0005, 0x2071, 0x1923, 0x7003, ++ 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, 0x7013, 0x0001, 0x080c, ++ 0x1053, 0x090c, 0x0d7d, 0xa867, 0x0006, 0xa86b, 0x0001, 0xa8ab, ++ 0xdcb0, 0xa89f, 0x0000, 0x2900, 0x702e, 0x7033, 0x0000, 0x0005, ++ 0x0096, 0x00e6, 0x2071, 0x1923, 0x702c, 0x2048, 0x6a2c, 0x721e, ++ 0x6b30, 0x7322, 0x6834, 0x7026, 0xa896, 0x6838, 0x702a, 0xa89a, ++ 0x6824, 0x7016, 0x683c, 0x701a, 0x2009, 0x0028, 0x200a, 0x9005, ++ 0x0148, 0x900e, 0x9188, 0x000c, 0x8001, 0x1de0, 0x2100, 0x9210, ++ 0x1208, 0x8318, 0xaa8e, 0xab92, 0x7010, 0xd084, 0x0178, 0xc084, ++ 0x7007, 0x0001, 0x700f, 0x0000, 0x0006, 0x2009, 0x181d, 0x2104, ++ 0x9082, 0x0007, 0x2009, 0x1b4e, 0x200a, 0x000e, 0xc095, 0x7012, ++ 0x2008, 0x2001, 0x003b, 0x080c, 0x1679, 0x9006, 0x2071, 0x193c, ++ 0x7002, 0x7006, 0x702a, 0x00ee, 0x009e, 0x0005, 0x00e6, 0x0126, ++ 0x0156, 0x2091, 0x8000, 0x2071, 0x1800, 0x7154, 0x2001, 0x0008, ++ 0x910a, 0x0638, 0x2001, 0x187d, 0x20ac, 0x9006, 0x9080, 0x0008, ++ 0x1f04, 0x8976, 0x71c0, 0x9102, 0x02e0, 0x2071, 0x1877, 0x20a9, ++ 0x0007, 0x00c6, 0x080c, 0xab97, 0x6023, 0x0009, 0x6003, 0x0004, ++ 0x601f, 0x0101, 0x0089, 0x0126, 0x2091, 0x8000, 0x080c, 0x8afc, ++ 0x012e, 0x1f04, 0x8982, 0x9006, 0x00ce, 0x015e, 0x012e, 0x00ee, ++ 0x0005, 0x9085, 0x0001, 0x0cc8, 0x00e6, 0x00b6, 0x0096, 0x0086, ++ 0x0056, 0x0046, 0x0026, 0x7118, 0x720c, 0x7620, 0x7004, 0xd084, ++ 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, 0x0020, 0x2021, 0x002c, ++ 0x2029, 0x000a, 0x080c, 0x103a, 0x090c, 0x0d7d, 0x2900, 0x6016, ++ 0x2058, 0xac66, 0x9006, 0xa802, 0xa806, 0xa86a, 0xa87a, 0xa8aa, ++ 0xa887, 0x0005, 0xa87f, 0x0020, 0x7008, 0xa89a, 0x7010, 0xa89e, ++ 0xae8a, 0xa8af, 0xffff, 0xa8b3, 0x0000, 0x8109, 0x0160, 0x080c, ++ 0x103a, 0x090c, 0x0d7d, 0xad66, 0x2b00, 0xa802, 0x2900, 0xb806, ++ 0x2058, 0x8109, 0x1da0, 0x002e, 0x004e, 0x005e, 0x008e, 0x009e, ++ 0x00be, 0x00ee, 0x0005, 0x2079, 0x0000, 0x2071, 0x1923, 0x7004, ++ 0x004b, 0x700c, 0x0002, 0x89ee, 0x89e7, 0x89e7, 0x0005, 0x89f8, ++ 0x8a59, 0x8a59, 0x8a59, 0x8a5a, 0x8a6b, 0x8a6b, 0x700c, 0x0cba, ++ 0x0126, 0x2091, 0x8000, 0x78a0, 0x79a0, 0x9106, 0x0128, 0x78a0, ++ 0x79a0, 0x9106, 0x1904, 0x8a4c, 0x2001, 0x0005, 0x2004, 0xd0bc, ++ 0x0130, 0x2011, 0x0004, 0x2204, 0xc0c5, 0x2012, 0x0ca8, 0x012e, ++ 0x7018, 0x910a, 0x1130, 0x7030, 0x9005, 0x05a8, 0x080c, 0x8a9a, ++ 0x0490, 0x1210, 0x7114, 0x910a, 0x9192, 0x000a, 0x0210, 0x2009, ++ 0x000a, 0x2001, 0x1888, 0x2014, 0x2001, 0x1935, 0x2004, 0x9100, ++ 0x9202, 0x0e48, 0x080c, 0x8be6, 0x2200, 0x9102, 0x0208, 0x2208, ++ 0x0096, 0x702c, 0x2048, 0xa873, 0x0001, 0xa976, 0x080c, 0x8cef, ++ 0x2100, 0xa87e, 0xa86f, 0x0000, 0x009e, 0x0126, 0x2091, 0x8000, ++ 0x2009, 0x1a21, 0x2104, 0xc085, 0x200a, 0x700f, 0x0002, 0x012e, ++ 0x080c, 0x1143, 0x1de8, 0x0005, 0x2001, 0x0005, 0x2004, 0xd0bc, ++ 0x0130, 0x2011, 0x0004, 0x2204, 0xc0c5, 0x2012, 0x0ca8, 0x012e, ++ 0x0005, 0x0005, 0x700c, 0x0002, 0x8a5f, 0x8a62, 0x8a61, 0x080c, ++ 0x89f6, 0x0005, 0x8001, 0x700e, 0x0096, 0x702c, 0x2048, 0xa974, ++ 0x009e, 0x0011, 0x0ca0, 0x0005, 0x0096, 0x702c, 0x2048, 0x7018, ++ 0x9100, 0x7214, 0x921a, 0x1130, 0x701c, 0xa88e, 0x7020, 0xa892, ++ 0x9006, 0x0068, 0x0006, 0x080c, 0x8cef, 0x2100, 0xaa8c, 0x9210, ++ 0xaa8e, 0x1220, 0xa890, 0x9081, 0x0000, 0xa892, 0x000e, 0x009e, ++ 0x2f08, 0x9188, 0x0028, 0x200a, 0x701a, 0x0005, 0x00e6, 0x2071, ++ 0x1923, 0x700c, 0x0002, 0x8a98, 0x8a98, 0x8a96, 0x700f, 0x0001, ++ 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x7030, 0x9005, 0x0508, ++ 0x2078, 0x7814, 0x2048, 0xae88, 0x00b6, 0x2059, 0x0000, 0x080c, ++ 0x8b05, 0x00be, 0x01b0, 0x00e6, 0x2071, 0x193c, 0x080c, 0x8b4c, ++ 0x00ee, 0x0178, 0x0096, 0x080c, 0x1053, 0x2900, 0x009e, 0x0148, ++ 0xa8aa, 0x04b9, 0x0041, 0x2001, 0x1946, 0x2003, 0x0000, 0x012e, ++ 0x08c8, 0x012e, 0x0005, 0x00d6, 0x00c6, 0x0086, 0x00a6, 0x2940, ++ 0x2650, 0x2600, 0x9005, 0x0180, 0xa864, 0x9084, 0x000f, 0x2068, ++ 0x9d88, 0x1e55, 0x2165, 0x0056, 0x2029, 0x0000, 0x080c, 0x8c74, ++ 0x080c, 0x1e2b, 0x1dd8, 0x005e, 0x00ae, 0x2001, 0x187f, 0x2004, ++ 0xa88a, 0x080c, 0x1731, 0x781f, 0x0101, 0x7813, 0x0000, 0x0126, ++ 0x2091, 0x8000, 0x080c, 0x8b5b, 0x012e, 0x008e, 0x00ce, 0x00de, ++ 0x0005, 0x7030, 0x9005, 0x0138, 0x2078, 0x780c, 0x7032, 0x2001, ++ 0x1946, 0x2003, 0x0001, 0x0005, 0x00e6, 0x2071, 0x1923, 0x7030, ++ 0x600e, 0x2c00, 0x7032, 0x00ee, 0x0005, 0x00d6, 0x00c6, 0x0026, ++ 0x9b80, 0x8dce, 0x2005, 0x906d, 0x090c, 0x0d7d, 0x9b80, 0x8dc6, ++ 0x2005, 0x9065, 0x090c, 0x0d7d, 0x6114, 0x2600, 0x9102, 0x0248, ++ 0x6828, 0x9102, 0x02f0, 0x9085, 0x0001, 0x002e, 0x00ce, 0x00de, ++ 0x0005, 0x6804, 0xd094, 0x0148, 0x6854, 0xd084, 0x1178, 0xc085, ++ 0x6856, 0x2011, 0x8026, 0x080c, 0x4b07, 0x684c, 0x0096, 0x904d, ++ 0x090c, 0x0d7d, 0xa804, 0x8000, 0xa806, 0x009e, 0x9006, 0x2030, ++ 0x0c20, 0x6854, 0xd08c, 0x1d08, 0xc08d, 0x6856, 0x2011, 0x8025, ++ 0x080c, 0x4b07, 0x684c, 0x0096, 0x904d, 0x090c, 0x0d7d, 0xa800, ++ 0x8000, 0xa802, 0x009e, 0x0888, 0x7000, 0x2019, 0x0008, 0x8319, ++ 0x7104, 0x9102, 0x1118, 0x2300, 0x9005, 0x0020, 0x0210, 0x9302, ++ 0x0008, 0x8002, 0x0005, 0x00d6, 0x7814, 0x9005, 0x090c, 0x0d7d, ++ 0x781c, 0x9084, 0x0101, 0x9086, 0x0101, 0x190c, 0x0d7d, 0x2069, ++ 0x193c, 0x6804, 0x9080, 0x193e, 0x2f08, 0x2102, 0x6904, 0x8108, ++ 0x9182, 0x0008, 0x0208, 0x900e, 0x6906, 0x9180, 0x193e, 0x2003, ++ 0x0000, 0x00de, 0x0005, 0x0096, 0x00c6, 0x2060, 0x6014, 0x2048, ++ 0xa8a8, 0x0096, 0x2048, 0x9005, 0x190c, 0x106c, 0x009e, 0xa8ab, ++ 0x0000, 0x080c, 0x0fec, 0x080c, 0xabed, 0x00ce, 0x009e, 0x0005, ++ 0x6020, 0x9086, 0x0009, 0x1128, 0x601c, 0xd0c4, 0x0110, 0x9006, ++ 0x0005, 0x9085, 0x0001, 0x0005, 0x6000, 0x9086, 0x0000, 0x0178, ++ 0x6010, 0x9005, 0x0150, 0x00b6, 0x2058, 0x080c, 0x8f01, 0x00be, ++ 0x6013, 0x0000, 0x601b, 0x0000, 0x0010, 0x2c00, 0x0861, 0x0005, ++ 0x2009, 0x1927, 0x210c, 0xd194, 0x0005, 0x00e6, 0x2071, 0x1923, ++ 0x7110, 0xc194, 0xd19c, 0x1118, 0xc185, 0x7007, 0x0000, 0x7112, ++ 0x2001, 0x003b, 0x080c, 0x1679, 0x00ee, 0x0005, 0x0096, 0x00d6, ++ 0x9006, 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, 0x702a, ++ 0x7026, 0x702f, 0x0000, 0x080c, 0x8d4e, 0x0170, 0x080c, 0x8d83, ++ 0x0158, 0x2900, 0x7002, 0x700a, 0x701a, 0x7013, 0x0001, 0x701f, ++ 0x000a, 0x00de, 0x009e, 0x0005, 0x900e, 0x0cd8, 0x00e6, 0x0096, ++ 0x0086, 0x00d6, 0x00c6, 0x2071, 0x1930, 0x721c, 0x2100, 0x9202, ++ 0x1618, 0x080c, 0x8d83, 0x090c, 0x0d7d, 0x7018, 0x9005, 0x1160, ++ 0x2900, 0x7002, 0x700a, 0x701a, 0x9006, 0x7006, 0x700e, 0xa806, ++ 0xa802, 0x7012, 0x701e, 0x0038, 0x2040, 0xa806, 0x2900, 0xa002, ++ 0x701a, 0xa803, 0x0000, 0x7010, 0x8000, 0x7012, 0x701c, 0x9080, ++ 0x000a, 0x701e, 0x721c, 0x08d0, 0x721c, 0x00ce, 0x00de, 0x008e, ++ 0x009e, 0x00ee, 0x0005, 0x0096, 0x0156, 0x0136, 0x0146, 0x00e6, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x1930, 0x7300, 0x831f, 0x831e, ++ 0x831e, 0x9384, 0x003f, 0x20e8, 0x939c, 0xffc0, 0x9398, 0x0003, ++ 0x7104, 0x080c, 0x8cef, 0x810c, 0x2100, 0x9318, 0x8003, 0x2228, ++ 0x2021, 0x0078, 0x9402, 0x9532, 0x0208, 0x2028, 0x2500, 0x8004, ++ 0x20a8, 0x23a0, 0xa001, 0xa001, 0x4005, 0x2508, 0x080c, 0x8cf8, ++ 0x2130, 0x7014, 0x9600, 0x7016, 0x2600, 0x711c, 0x9102, 0x701e, ++ 0x7004, 0x9600, 0x2008, 0x9082, 0x000a, 0x1190, 0x7000, 0x2048, ++ 0xa800, 0x9005, 0x1148, 0x2009, 0x0001, 0x0026, 0x080c, 0x8be6, ++ 0x002e, 0x7000, 0x2048, 0xa800, 0x7002, 0x7007, 0x0000, 0x0008, ++ 0x7106, 0x2500, 0x9212, 0x1904, 0x8c25, 0x012e, 0x00ee, 0x014e, ++ 0x013e, 0x015e, 0x009e, 0x0005, 0x0016, 0x0026, 0x00e6, 0x0126, ++ 0x2091, 0x8000, 0x9580, 0x8dc6, 0x2005, 0x9075, 0x090c, 0x0d7d, ++ 0x080c, 0x8cca, 0x012e, 0x9580, 0x8dc2, 0x2005, 0x9075, 0x090c, ++ 0x0d7d, 0x0156, 0x0136, 0x01c6, 0x0146, 0x01d6, 0x831f, 0x831e, ++ 0x831e, 0x9384, 0x003f, 0x20e0, 0x9384, 0xffc0, 0x9100, 0x2098, ++ 0xa860, 0x20e8, 0xa95c, 0x2c05, 0x9100, 0x20a0, 0x20a9, 0x0002, ++ 0x4003, 0x2e0c, 0x2d00, 0x0002, 0x8cb4, 0x8cb4, 0x8cb6, 0x8cb4, ++ 0x8cb6, 0x8cb4, 0x8cb4, 0x8cb4, 0x8cb4, 0x8cb4, 0x8cbc, 0x8cb4, ++ 0x8cbc, 0x8cb4, 0x8cb4, 0x8cb4, 0x080c, 0x0d7d, 0x4104, 0x20a9, ++ 0x0002, 0x4002, 0x4003, 0x0028, 0x20a9, 0x0002, 0x4003, 0x4104, ++ 0x4003, 0x01de, 0x014e, 0x01ce, 0x013e, 0x015e, 0x00ee, 0x002e, ++ 0x001e, 0x0005, 0x0096, 0x7014, 0x8001, 0x7016, 0x710c, 0x2110, ++ 0x00f1, 0x810c, 0x9188, 0x0003, 0x7308, 0x8210, 0x9282, 0x000a, ++ 0x1198, 0x7008, 0x2048, 0xa800, 0x9005, 0x0158, 0x0006, 0x080c, ++ 0x8d92, 0x009e, 0xa807, 0x0000, 0x2900, 0x700a, 0x7010, 0x8001, ++ 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, 0x009e, 0x0005, 0x0006, ++ 0x810b, 0x810b, 0x2100, 0x810b, 0x9100, 0x2008, 0x000e, 0x0005, ++ 0x0006, 0x0026, 0x2100, 0x9005, 0x0158, 0x9092, 0x000c, 0x0240, ++ 0x900e, 0x8108, 0x9082, 0x000c, 0x1de0, 0x002e, 0x000e, 0x0005, ++ 0x900e, 0x0cd8, 0x2d00, 0x90b8, 0x0008, 0x690c, 0x6810, 0x2019, ++ 0x0001, 0x2031, 0x8d38, 0x9112, 0x0220, 0x0118, 0x8318, 0x2208, ++ 0x0cd0, 0x6808, 0x9005, 0x0108, 0x8318, 0x233a, 0x6804, 0xd084, ++ 0x2300, 0x2021, 0x0001, 0x1150, 0x9082, 0x0003, 0x0967, 0x0a67, ++ 0x8420, 0x9082, 0x0007, 0x0967, 0x0a67, 0x0cd0, 0x9082, 0x0002, ++ 0x0967, 0x0a67, 0x8420, 0x9082, 0x0005, 0x0967, 0x0a67, 0x0cd0, ++ 0x6c1a, 0x2d00, 0x90b8, 0x0007, 0x00e6, 0x2071, 0x1800, 0x7128, ++ 0x6810, 0x2019, 0x0001, 0x910a, 0x0118, 0x0210, 0x8318, 0x0cd8, ++ 0x2031, 0x8d4b, 0x0870, 0x6c16, 0x00ee, 0x0005, 0x0096, 0x0046, ++ 0x0126, 0x2091, 0x8000, 0x2b00, 0x9080, 0x8dca, 0x2005, 0x9005, ++ 0x090c, 0x0d7d, 0x2004, 0x90a0, 0x000a, 0x080c, 0x1053, 0x01d0, ++ 0x2900, 0x7026, 0xa803, 0x0000, 0xa807, 0x0000, 0x080c, 0x1053, ++ 0x0188, 0x7024, 0xa802, 0xa807, 0x0000, 0x2900, 0x7026, 0x94a2, ++ 0x000a, 0x0110, 0x0208, 0x0c90, 0x9085, 0x0001, 0x012e, 0x004e, ++ 0x009e, 0x0005, 0x7024, 0x9005, 0x0dc8, 0x2048, 0xac00, 0x080c, ++ 0x106c, 0x2400, 0x0cc0, 0x0126, 0x2091, 0x8000, 0x7024, 0x2048, ++ 0x9005, 0x0130, 0xa800, 0x7026, 0xa803, 0x0000, 0xa807, 0x0000, ++ 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7024, 0xa802, 0x2900, ++ 0x7026, 0x012e, 0x0005, 0x0096, 0x9e80, 0x0009, 0x2004, 0x9005, ++ 0x0138, 0x2048, 0xa800, 0x0006, 0x080c, 0x106c, 0x000e, 0x0cb8, ++ 0x009e, 0x0005, 0x0096, 0x7008, 0x9005, 0x0138, 0x2048, 0xa800, ++ 0x0006, 0x080c, 0x106c, 0x000e, 0x0cb8, 0x9006, 0x7002, 0x700a, ++ 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x702a, 0x7026, 0x702e, ++ 0x009e, 0x0005, 0x1a6d, 0x0000, 0x0000, 0x0000, 0x1930, 0x0000, ++ 0x0000, 0x0000, 0x1888, 0x0000, 0x0000, 0x0000, 0x1877, 0x0000, ++ 0x0000, 0x0000, 0x00e6, 0x00c6, 0x00b6, 0x00a6, 0xa8a8, 0x2040, ++ 0x2071, 0x1877, 0x080c, 0x8eec, 0xa067, 0x0023, 0x6010, 0x905d, ++ 0x0904, 0x8ec1, 0xb814, 0xa06e, 0xb910, 0xa172, 0xb9a0, 0xa176, ++ 0x2001, 0x0003, 0xa07e, 0xa834, 0xa082, 0xa07b, 0x0000, 0xa898, ++ 0x9005, 0x0118, 0xa078, 0xc085, 0xa07a, 0x2858, 0x2031, 0x0018, ++ 0xa068, 0x908a, 0x0019, 0x1a0c, 0x0d7d, 0x2020, 0x2050, 0x2940, ++ 0xa864, 0x90bc, 0x00ff, 0x908c, 0x000f, 0x91e0, 0x1e55, 0x2c65, ++ 0x9786, 0x0024, 0x2c05, 0x1590, 0x908a, 0x0036, 0x1a0c, 0x0d7d, ++ 0x9082, 0x001b, 0x0002, 0x8e2e, 0x8e2e, 0x8e30, 0x8e2e, 0x8e2e, ++ 0x8e2e, 0x8e32, 0x8e2e, 0x8e2e, 0x8e2e, 0x8e34, 0x8e2e, 0x8e2e, ++ 0x8e2e, 0x8e36, 0x8e2e, 0x8e2e, 0x8e2e, 0x8e38, 0x8e2e, 0x8e2e, ++ 0x8e2e, 0x8e3a, 0x8e2e, 0x8e2e, 0x8e2e, 0x8e3c, 0x080c, 0x0d7d, ++ 0xa180, 0x04b8, 0xa190, 0x04a8, 0xa1a0, 0x0498, 0xa1b0, 0x0488, ++ 0xa1c0, 0x0478, 0xa1d0, 0x0468, 0xa1e0, 0x0458, 0x908a, 0x0034, ++ 0x1a0c, 0x0d7d, 0x9082, 0x001b, 0x0002, 0x8e60, 0x8e5e, 0x8e5e, ++ 0x8e5e, 0x8e5e, 0x8e5e, 0x8e62, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e5e, ++ 0x8e5e, 0x8e64, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e66, ++ 0x8e5e, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e5e, 0x8e68, 0x080c, 0x0d7d, ++ 0xa180, 0x0038, 0xa198, 0x0028, 0xa1b0, 0x0018, 0xa1c8, 0x0008, ++ 0xa1e0, 0x2600, 0x0002, 0x8e84, 0x8e86, 0x8e88, 0x8e8a, 0x8e8c, ++ 0x8e8e, 0x8e90, 0x8e92, 0x8e94, 0x8e96, 0x8e98, 0x8e9a, 0x8e9c, ++ 0x8e9e, 0x8ea0, 0x8ea2, 0x8ea4, 0x8ea6, 0x8ea8, 0x8eaa, 0x8eac, ++ 0x8eae, 0x8eb0, 0x8eb2, 0x8eb4, 0x080c, 0x0d7d, 0xb9e2, 0x0468, ++ 0xb9de, 0x0458, 0xb9da, 0x0448, 0xb9d6, 0x0438, 0xb9d2, 0x0428, ++ 0xb9ce, 0x0418, 0xb9ca, 0x0408, 0xb9c6, 0x00f8, 0xb9c2, 0x00e8, ++ 0xb9be, 0x00d8, 0xb9ba, 0x00c8, 0xb9b6, 0x00b8, 0xb9b2, 0x00a8, ++ 0xb9ae, 0x0098, 0xb9aa, 0x0088, 0xb9a6, 0x0078, 0xb9a2, 0x0068, ++ 0xb99e, 0x0058, 0xb99a, 0x0048, 0xb996, 0x0038, 0xb992, 0x0028, ++ 0xb98e, 0x0018, 0xb98a, 0x0008, 0xb986, 0x8631, 0x8421, 0x0120, ++ 0x080c, 0x1e2b, 0x0804, 0x8e08, 0x00ae, 0x00be, 0x00ce, 0x00ee, ++ 0x0005, 0xa86c, 0xa06e, 0xa870, 0xa072, 0xa077, 0x00ff, 0x9006, ++ 0x0804, 0x8dea, 0x0006, 0x0016, 0x00b6, 0x6010, 0x2058, 0xb810, ++ 0x9005, 0x01b0, 0x2001, 0x1924, 0x2004, 0x9005, 0x0188, 0x2001, ++ 0x1800, 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, 0xbba0, ++ 0x2021, 0x0004, 0x2011, 0x8014, 0x080c, 0x4b07, 0x004e, 0x003e, ++ 0x00be, 0x001e, 0x000e, 0x0005, 0x9016, 0x710c, 0xa834, 0x910a, ++ 0xa936, 0x7008, 0x9005, 0x0120, 0x8210, 0x910a, 0x0238, 0x0130, ++ 0x7010, 0x8210, 0x910a, 0x0210, 0x0108, 0x0cd8, 0xaa8a, 0xa26a, ++ 0x0005, 0x00f6, 0x00d6, 0x0036, 0x2079, 0x0300, 0x781b, 0x0200, ++ 0x7818, 0xd094, 0x1dd8, 0x781b, 0x0202, 0xa001, 0xa001, 0x7818, ++ 0xd094, 0x1da0, 0xb8ac, 0x9005, 0x01b8, 0x2068, 0x2079, 0x0000, ++ 0x2c08, 0x911e, 0x1118, 0x680c, 0xb8ae, 0x0060, 0x9106, 0x0140, ++ 0x2d00, 0x2078, 0x680c, 0x9005, 0x090c, 0x0d7d, 0x2068, 0x0cb0, ++ 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x2079, 0x0300, 0x781b, 0x0200, ++ 0x003e, 0x00de, 0x00fe, 0x0005, 0x00e6, 0x00d6, 0x0096, 0x00c6, ++ 0x0036, 0x0126, 0x2091, 0x8000, 0x0156, 0x20a9, 0x01ff, 0x2071, ++ 0x0300, 0x701b, 0x0200, 0x7018, 0xd094, 0x0110, 0x1f04, 0x8f41, ++ 0x701b, 0x0202, 0xa001, 0xa001, 0x7018, 0xd094, 0x1d90, 0xb8ac, ++ 0x9005, 0x01d0, 0x2060, 0x600c, 0xb8ae, 0x6003, 0x0004, 0x601b, ++ 0x0000, 0x6013, 0x0000, 0x601f, 0x0101, 0x6014, 0x2048, 0xa88b, ++ 0x0000, 0xa8a8, 0xa8ab, 0x0000, 0x904d, 0x090c, 0x0d7d, 0x080c, ++ 0x106c, 0x080c, 0x8afc, 0x0c18, 0x2071, 0x0300, 0x701b, 0x0200, ++ 0x015e, 0x012e, 0x003e, 0x00ce, 0x009e, 0x00de, 0x00ee, 0x0005, ++ 0x00c6, 0x00b6, 0x0016, 0x0006, 0x0156, 0x080c, 0x25fb, 0x015e, ++ 0x11b0, 0x080c, 0x65c4, 0x190c, 0x0d7d, 0x000e, 0x001e, 0xb912, ++ 0xb816, 0x080c, 0xab97, 0x0140, 0x2b00, 0x6012, 0x6023, 0x0001, ++ 0x2009, 0x0001, 0x080c, 0xac8c, 0x00be, 0x00ce, 0x0005, 0x000e, ++ 0x001e, 0x0cd0, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7d, ++ 0x0013, 0x006e, 0x0005, 0x8fb3, 0x8fb3, 0x8fb3, 0x8fb5, 0x8ffe, ++ 0x8fb3, 0x8fb3, 0x8fb3, 0x9061, 0x8fb3, 0x9099, 0x8fb3, 0x8fb3, ++ 0x8fb3, 0x8fb3, 0x8fb3, 0x080c, 0x0d7d, 0x9182, 0x0040, 0x0002, ++ 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, ++ 0x8fc8, 0x8fca, 0x8fdb, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fc8, 0x8fec, ++ 0x080c, 0x0d7d, 0x0096, 0x6114, 0x2148, 0xa87b, 0x0000, 0x6010, ++ 0x00b6, 0x2058, 0xb8bb, 0x0500, 0x00be, 0x080c, 0x6b80, 0x080c, ++ 0xabed, 0x009e, 0x0005, 0x080c, 0x963b, 0x00d6, 0x6114, 0x080c, ++ 0xc838, 0x0130, 0x0096, 0x6114, 0x2148, 0x080c, 0x6d80, 0x009e, ++ 0x00de, 0x080c, 0xabed, 0x0005, 0x080c, 0x963b, 0x080c, 0x31e7, ++ 0x6114, 0x0096, 0x2148, 0x080c, 0xc838, 0x0120, 0xa87b, 0x0029, ++ 0x080c, 0x6d80, 0x009e, 0x080c, 0xabed, 0x0005, 0x601b, 0x0000, ++ 0x9182, 0x0040, 0x0096, 0x0002, 0x9019, 0x9019, 0x9019, 0x9019, ++ 0x9019, 0x9019, 0x9019, 0x9019, 0x901b, 0x9019, 0x9019, 0x9019, ++ 0x905d, 0x9019, 0x9019, 0x9019, 0x9019, 0x9019, 0x9019, 0x9021, ++ 0x9019, 0x080c, 0x0d7d, 0x6114, 0x2148, 0xa938, 0x918e, 0xffff, ++ 0x05e0, 0x00e6, 0x6114, 0x2148, 0x080c, 0x8dd2, 0x0096, 0xa8a8, ++ 0x2048, 0x080c, 0x6b18, 0x009e, 0xa8ab, 0x0000, 0x6010, 0x9005, ++ 0x0128, 0x00b6, 0x2058, 0x080c, 0x8f01, 0x00be, 0xae88, 0x00b6, ++ 0x2059, 0x0000, 0x080c, 0x8b05, 0x00be, 0x01e0, 0x2071, 0x193c, ++ 0x080c, 0x8b4c, 0x01b8, 0x9086, 0x0001, 0x1128, 0x2001, 0x1946, ++ 0x2004, 0x9005, 0x1178, 0x0096, 0x080c, 0x103a, 0x2900, 0x009e, ++ 0x0148, 0xa8aa, 0x00f6, 0x2c78, 0x080c, 0x8ac3, 0x00fe, 0x00ee, ++ 0x009e, 0x0005, 0x080c, 0x8afc, 0x0cd0, 0x080c, 0x9115, 0x009e, ++ 0x0005, 0x9182, 0x0040, 0x0096, 0x0002, 0x9075, 0x9075, 0x9075, ++ 0x9077, 0x9075, 0x9075, 0x9075, 0x9097, 0x9075, 0x9075, 0x9075, ++ 0x9075, 0x9075, 0x9075, 0x9075, 0x9075, 0x080c, 0x0d7d, 0x6003, ++ 0x0003, 0x6106, 0x6014, 0x2048, 0xa8ac, 0xa836, 0xa8b0, 0xa83a, ++ 0xa847, 0x0000, 0xa84b, 0x0000, 0xa884, 0x9092, 0x199a, 0x0210, ++ 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, 0x080c, ++ 0x1bba, 0x2009, 0x8030, 0x080c, 0x9265, 0x009e, 0x0005, 0x080c, ++ 0x0d7d, 0x080c, 0x963b, 0x6114, 0x2148, 0xa87b, 0x0000, 0x6010, ++ 0x00b6, 0x2058, 0xb8bb, 0x0500, 0x00be, 0x080c, 0x6d80, 0x080c, ++ 0xabed, 0x009e, 0x0005, 0x080c, 0xa896, 0x6144, 0xd1fc, 0x0120, ++ 0xd1ac, 0x1110, 0x6003, 0x0003, 0x6000, 0x908a, 0x0016, 0x1a0c, ++ 0x0d7d, 0x0096, 0x0023, 0x009e, 0x080c, 0xa8b2, 0x0005, 0x90cf, ++ 0x90cf, 0x90cf, 0x90d1, 0x90e2, 0x90cf, 0x90cf, 0x90cf, 0x90cf, ++ 0x90cf, 0x90cf, 0x90cf, 0x90cf, 0x90cf, 0x90cf, 0x90cf, 0x080c, ++ 0x0d7d, 0x080c, 0xaa2a, 0x6114, 0x2148, 0xa87b, 0x0006, 0x6010, ++ 0x00b6, 0x2058, 0xb8bb, 0x0500, 0x00be, 0x080c, 0x6d80, 0x080c, ++ 0xabed, 0x0005, 0x0491, 0x0005, 0x080c, 0xa896, 0x6000, 0x6144, ++ 0xd1fc, 0x0130, 0xd1ac, 0x1120, 0x6003, 0x0003, 0x2009, 0x0003, ++ 0x908a, 0x0016, 0x1a0c, 0x0d7d, 0x0096, 0x0033, 0x009e, 0x0106, ++ 0x080c, 0xa8b2, 0x010e, 0x0005, 0x910c, 0x910c, 0x910c, 0x910e, ++ 0x9115, 0x910c, 0x910c, 0x910c, 0x910c, 0x910c, 0x910c, 0x910c, ++ 0x910c, 0x910c, 0x910c, 0x910c, 0x080c, 0x0d7d, 0x0036, 0x00e6, ++ 0x080c, 0xaa2a, 0x00ee, 0x003e, 0x0005, 0x00f6, 0x00e6, 0x601b, ++ 0x0000, 0x6014, 0x2048, 0x6010, 0x9005, 0x0128, 0x00b6, 0x2058, ++ 0x080c, 0x8f01, 0x00be, 0x2071, 0x193c, 0x080c, 0x8b4c, 0x0160, ++ 0x2001, 0x187f, 0x2004, 0xa88a, 0x2031, 0x0000, 0x2c78, 0x080c, ++ 0x8ac3, 0x00ee, 0x00fe, 0x0005, 0x0096, 0xa88b, 0x0000, 0xa8a8, ++ 0x2048, 0x080c, 0x106c, 0x009e, 0xa8ab, 0x0000, 0x080c, 0x8afc, ++ 0x0c80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x187a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0126, 0x2091, 0x8000, 0x0036, 0x0046, 0x20a9, 0x0010, ++ 0x9006, 0x8004, 0x8086, 0x818e, 0x1208, 0x9200, 0x1f04, 0x915a, ++ 0x8086, 0x818e, 0x004e, 0x003e, 0x012e, 0x0005, 0x0126, 0x2091, ++ 0x8000, 0x0076, 0x0156, 0x20a9, 0x0010, 0x9005, 0x01c8, 0x911a, ++ 0x12b8, 0x8213, 0x818d, 0x0228, 0x911a, 0x1220, 0x1f04, 0x9171, ++ 0x0028, 0x911a, 0x2308, 0x8210, 0x1f04, 0x9171, 0x0006, 0x3200, ++ 0x9084, 0xefff, 0x2080, 0x000e, 0x015e, 0x007e, 0x012e, 0x0005, ++ 0x0006, 0x3200, 0x9085, 0x1000, 0x0ca8, 0x0126, 0x2091, 0x2800, ++ 0x2079, 0x19e7, 0x012e, 0x00d6, 0x2069, 0x19e7, 0x6803, 0x0005, ++ 0x0156, 0x0146, 0x01d6, 0x20e9, 0x0000, 0x2069, 0x0200, 0x080c, ++ 0xa690, 0x04a9, 0x080c, 0xa67b, 0x0491, 0x080c, 0xa67e, 0x0479, ++ 0x080c, 0xa681, 0x0461, 0x080c, 0xa684, 0x0449, 0x080c, 0xa687, ++ 0x0431, 0x080c, 0xa68a, 0x0419, 0x080c, 0xa68d, 0x0401, 0x01de, ++ 0x014e, 0x015e, 0x6857, 0x0000, 0x00f6, 0x2079, 0x0380, 0x00f9, ++ 0x7807, 0x0003, 0x7803, 0x0000, 0x7803, 0x0001, 0x2069, 0x0004, ++ 0x2d04, 0x9084, 0xfffe, 0x9085, 0x8000, 0x206a, 0x2069, 0x0100, ++ 0x6828, 0x9084, 0xfffc, 0x682a, 0x00fe, 0x00de, 0x0005, 0x20a9, ++ 0x0020, 0x20a1, 0x0240, 0x2001, 0x0000, 0x4004, 0x0005, 0x00c6, ++ 0x7803, 0x0000, 0x9006, 0x7827, 0x0030, 0x782b, 0x0400, 0x7827, ++ 0x0031, 0x782b, 0x1aef, 0x781f, 0xff00, 0x781b, 0xff00, 0x2061, ++ 0x1ae4, 0x602f, 0x19e7, 0x6033, 0x1800, 0x6037, 0x1a03, 0x603b, ++ 0x1e55, 0x603f, 0x1e65, 0x6042, 0x6047, 0x1aba, 0x00ce, 0x0005, ++ 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, 0x0001, 0x01b0, ++ 0x00c6, 0x6146, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19e7, 0x602c, ++ 0x8000, 0x602e, 0x601c, 0x9005, 0x0130, 0x9080, 0x0003, 0x2102, ++ 0x611e, 0x00ce, 0x0005, 0x6122, 0x611e, 0x0cd8, 0x6146, 0x2c08, ++ 0x2001, 0x0012, 0x080c, 0xa887, 0x0005, 0x0016, 0x2009, 0x8020, ++ 0x6146, 0x2c08, 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, ++ 0x0001, 0x1128, 0x2001, 0x0019, 0x080c, 0xa887, 0x0088, 0x00c6, ++ 0x2061, 0x19e7, 0x602c, 0x8000, 0x602e, 0x600c, 0x9005, 0x0128, ++ 0x9080, 0x0003, 0x2102, 0x610e, 0x0010, 0x6112, 0x610e, 0x00ce, ++ 0x001e, 0x0005, 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, ++ 0x0001, 0x0198, 0x00c6, 0x6146, 0x600f, 0x0000, 0x2c08, 0x2061, ++ 0x19e7, 0x6044, 0x9005, 0x0130, 0x9080, 0x0003, 0x2102, 0x6146, ++ 0x00ce, 0x0005, 0x614a, 0x6146, 0x0cd8, 0x6146, 0x600f, 0x0000, ++ 0x2c08, 0x2001, 0x0013, 0x080c, 0xa887, 0x0005, 0x6044, 0xd0dc, ++ 0x0128, 0x9006, 0x7007, 0x0000, 0x700a, 0x7032, 0x0005, 0x00f6, ++ 0x00e6, 0x00d6, 0x00c6, 0x00b6, 0x0096, 0x0076, 0x0066, 0x0056, ++ 0x0036, 0x0026, 0x0016, 0x0006, 0x0126, 0x902e, 0x2071, 0x19e7, ++ 0x7648, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, 0x92f0, ++ 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x92eb, 0x87ff, 0x0120, ++ 0x605c, 0x9106, 0x1904, 0x92eb, 0x704c, 0x9c06, 0x1178, 0x0036, ++ 0x2019, 0x0001, 0x080c, 0xa118, 0x703f, 0x0000, 0x9006, 0x704e, ++ 0x706a, 0x7052, 0x706e, 0x003e, 0x2029, 0x0001, 0x080c, 0x926e, ++ 0x7048, 0x9c36, 0x1110, 0x660c, 0x764a, 0x7044, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7046, 0x0010, 0x7047, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0x080c, 0xc838, 0x01c8, 0x6014, 0x2048, 0x6020, ++ 0x9086, 0x0003, 0x1560, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x0016, 0x0036, 0x0076, 0x080c, 0xcb36, 0x080c, 0xe621, 0x080c, ++ 0x6d80, 0x007e, 0x003e, 0x001e, 0x080c, 0xca27, 0x080c, 0xac28, ++ 0x00ce, 0x0804, 0x928d, 0x2c78, 0x600c, 0x2060, 0x0804, 0x928d, ++ 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, ++ 0x009e, 0x00be, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, ++ 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0076, 0x080c, 0xe621, ++ 0x080c, 0xe26c, 0x007e, 0x003e, 0x001e, 0x08c0, 0x6020, 0x9086, ++ 0x0009, 0x1168, 0xa87b, 0x0006, 0x0016, 0x0036, 0x0076, 0x080c, ++ 0x6d80, 0x080c, 0xabed, 0x007e, 0x003e, 0x001e, 0x0848, 0x6020, ++ 0x9086, 0x000a, 0x0904, 0x92d5, 0x0804, 0x92d3, 0x0006, 0x0066, ++ 0x0096, 0x00c6, 0x00d6, 0x00f6, 0x9036, 0x0126, 0x2091, 0x8000, ++ 0x2079, 0x19e7, 0x7848, 0x9065, 0x0904, 0x9385, 0x600c, 0x0006, ++ 0x600f, 0x0000, 0x784c, 0x9c06, 0x11a0, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0xa118, 0x783f, 0x0000, 0x901e, 0x7b4e, 0x7b6a, 0x7b52, ++ 0x7b6e, 0x003e, 0x000e, 0x9005, 0x1118, 0x600c, 0x600f, 0x0000, ++ 0x0006, 0x00e6, 0x2f70, 0x080c, 0x926e, 0x00ee, 0x080c, 0xc838, ++ 0x0520, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1580, 0x3e08, ++ 0x918e, 0x0002, 0x1188, 0x6010, 0x9005, 0x0170, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x0140, 0x6048, 0x9005, 0x1198, 0x2001, ++ 0x1988, 0x2004, 0x604a, 0x0070, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x6d74, 0x080c, 0xca27, 0x6044, 0xc0fc, 0x6046, ++ 0x080c, 0xac28, 0x000e, 0x0804, 0x9333, 0x7e4a, 0x7e46, 0x012e, ++ 0x00fe, 0x00de, 0x00ce, 0x009e, 0x006e, 0x000e, 0x0005, 0x6020, ++ 0x9086, 0x0006, 0x1118, 0x080c, 0xe26c, 0x0c38, 0x6020, 0x9086, ++ 0x0009, 0x1130, 0xab7a, 0x080c, 0x6d80, 0x080c, 0xabed, 0x0c10, ++ 0x6020, 0x9086, 0x000a, 0x0990, 0x0878, 0x0016, 0x0026, 0x0086, ++ 0x9046, 0x00a9, 0x080c, 0x9496, 0x008e, 0x002e, 0x001e, 0x0005, ++ 0x00f6, 0x0126, 0x2079, 0x19e7, 0x2091, 0x8000, 0x080c, 0x94df, ++ 0x080c, 0x9573, 0x080c, 0x67b2, 0x012e, 0x00fe, 0x0005, 0x00b6, ++ 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, ++ 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, 0x7620, 0x2660, 0x2678, ++ 0x8cff, 0x0904, 0x945b, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, ++ 0x9456, 0x88ff, 0x0120, 0x605c, 0x9106, 0x1904, 0x9456, 0x7030, ++ 0x9c06, 0x1570, 0x2069, 0x0100, 0x6820, 0xd0a4, 0x1508, 0x080c, ++ 0x86f6, 0x080c, 0x9e32, 0x68c3, 0x0000, 0x080c, 0xa338, 0x7033, ++ 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x2069, ++ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0040, ++ 0x7008, 0xc0ad, 0x700a, 0x6003, 0x0009, 0x630a, 0x0804, 0x9456, ++ 0x7020, 0x9c36, 0x1110, 0x660c, 0x7622, 0x701c, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x701e, 0x0010, 0x701f, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x600f, 0x0000, 0x6044, 0xc0fc, 0x6046, 0x6014, 0x2048, 0x080c, ++ 0xc838, 0x01e8, 0x6020, 0x9086, 0x0003, 0x1580, 0x080c, 0xca4d, ++ 0x1118, 0x080c, 0xb5b5, 0x0098, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, 0xcb36, 0x080c, 0xe621, ++ 0x080c, 0x6d80, 0x008e, 0x003e, 0x001e, 0x080c, 0xca27, 0x080c, ++ 0xac28, 0x080c, 0xa20e, 0x00ce, 0x0804, 0x93d0, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0x93d0, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, ++ 0x00de, 0x00ee, 0x00fe, 0x009e, 0x00be, 0x0005, 0x6020, 0x9086, ++ 0x0006, 0x1158, 0x0016, 0x0036, 0x0086, 0x080c, 0xe621, 0x080c, ++ 0xe26c, 0x008e, 0x003e, 0x001e, 0x08d0, 0x080c, 0xb5b5, 0x6020, ++ 0x9086, 0x0002, 0x1160, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, ++ 0x0904, 0x943c, 0x9086, 0x008b, 0x0904, 0x943c, 0x0840, 0x6020, ++ 0x9086, 0x0005, 0x1920, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, ++ 0x09c8, 0x9086, 0x008b, 0x09b0, 0x0804, 0x944f, 0x0006, 0x00f6, ++ 0x00e6, 0x0096, 0x00b6, 0x00c6, 0x0066, 0x0016, 0x0126, 0x2091, ++ 0x8000, 0x9280, 0x1000, 0x2004, 0x905d, 0x2079, 0x19e7, 0x9036, ++ 0x7828, 0x2060, 0x8cff, 0x0538, 0x6010, 0x9b06, 0x1500, 0x6043, ++ 0xffff, 0x080c, 0xaa75, 0x01d8, 0x610c, 0x0016, 0x080c, 0x9fa2, ++ 0x6014, 0x2048, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, ++ 0x0036, 0x0086, 0x080c, 0xcb36, 0x080c, 0xe621, 0x080c, 0x6d80, ++ 0x008e, 0x003e, 0x001e, 0x080c, 0xac28, 0x00ce, 0x08d8, 0x2c30, ++ 0x600c, 0x2060, 0x08b8, 0x080c, 0x67cf, 0x012e, 0x001e, 0x006e, ++ 0x00ce, 0x00be, 0x009e, 0x00ee, 0x00fe, 0x000e, 0x0005, 0x0096, ++ 0x0006, 0x0066, 0x00c6, 0x00d6, 0x9036, 0x7820, 0x9065, 0x0904, ++ 0x9546, 0x600c, 0x0006, 0x6044, 0xc0fc, 0x6046, 0x600f, 0x0000, ++ 0x7830, 0x9c06, 0x1588, 0x2069, 0x0100, 0x6820, 0xd0a4, 0x1508, ++ 0x080c, 0x86f6, 0x080c, 0x9e32, 0x68c3, 0x0000, 0x080c, 0xa338, ++ 0x7833, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, ++ 0x0138, 0x2001, 0x0100, 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, ++ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, ++ 0x0058, 0x080c, 0x6a03, 0x1538, 0x6003, 0x0009, 0x630a, 0x7808, ++ 0xc0ad, 0x780a, 0x2c30, 0x00f8, 0x6014, 0x2048, 0x080c, 0xc836, ++ 0x01b0, 0x6020, 0x9086, 0x0003, 0x1508, 0x080c, 0xca4d, 0x1118, ++ 0x080c, 0xb5b5, 0x0060, 0x080c, 0x6a03, 0x1168, 0xa867, 0x0103, ++ 0xab7a, 0xa877, 0x0000, 0x080c, 0x6d80, 0x080c, 0xca27, 0x080c, ++ 0xac28, 0x080c, 0xa20e, 0x000e, 0x0804, 0x94e6, 0x7e22, 0x7e1e, ++ 0x00de, 0x00ce, 0x006e, 0x000e, 0x009e, 0x0005, 0x6020, 0x9086, ++ 0x0006, 0x1118, 0x080c, 0xe26c, 0x0c50, 0x080c, 0xb5b5, 0x6020, ++ 0x9086, 0x0002, 0x1150, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, ++ 0x0990, 0x9086, 0x008b, 0x0978, 0x08d0, 0x6020, 0x9086, 0x0005, ++ 0x19b0, 0x6004, 0x0006, 0x9086, 0x0085, 0x000e, 0x0d18, 0x9086, ++ 0x008b, 0x0d00, 0x0860, 0x0006, 0x0096, 0x00b6, 0x00c6, 0x0066, ++ 0x9036, 0x7828, 0x9065, 0x0510, 0x6010, 0x2058, 0x600c, 0x0006, ++ 0x3e08, 0x918e, 0x0002, 0x1118, 0xb800, 0xd0bc, 0x11a8, 0x6043, ++ 0xffff, 0x080c, 0xaa75, 0x0180, 0x610c, 0x080c, 0x9fa2, 0x6014, ++ 0x2048, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x6d80, ++ 0x080c, 0xac28, 0x000e, 0x08f0, 0x2c30, 0x0ce0, 0x006e, 0x00ce, ++ 0x00be, 0x009e, 0x000e, 0x0005, 0x00e6, 0x00d6, 0x0096, 0x0066, ++ 0x080c, 0x613b, 0x11b0, 0x2071, 0x19e7, 0x7030, 0x9080, 0x0005, ++ 0x2004, 0x904d, 0x0170, 0xa878, 0x9606, 0x1158, 0x2071, 0x19e7, ++ 0x7030, 0x9035, 0x0130, 0x9080, 0x0005, 0x2004, 0x9906, 0x1108, ++ 0x0029, 0x006e, 0x009e, 0x00de, 0x00ee, 0x0005, 0x00c6, 0x2660, ++ 0x6043, 0xffff, 0x080c, 0xaa75, 0x0178, 0x080c, 0x9fa2, 0x6014, ++ 0x2048, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xcb36, ++ 0x080c, 0x6d80, 0x080c, 0xac28, 0x00ce, 0x0005, 0x00b6, 0x00e6, ++ 0x00c6, 0x080c, 0xa8f4, 0x0106, 0x190c, 0xa896, 0x2071, 0x0101, ++ 0x2e04, 0xc0c4, 0x2072, 0x6044, 0xd0fc, 0x1138, 0x010e, 0x190c, ++ 0xa8b2, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x2071, 0x19e7, 0x7030, ++ 0x9005, 0x0da0, 0x9c06, 0x190c, 0x0d7d, 0x7036, 0x080c, 0x86f6, ++ 0x7004, 0x9084, 0x0007, 0x0002, 0x960e, 0x9610, 0x9617, 0x9621, ++ 0x962f, 0x960e, 0x9617, 0x960c, 0x080c, 0x0d7d, 0x0428, 0x0005, ++ 0x080c, 0xaa60, 0x7007, 0x0000, 0x7033, 0x0000, 0x00e8, 0x0066, ++ 0x9036, 0x080c, 0x9fa2, 0x006e, 0x7007, 0x0000, 0x7033, 0x0000, ++ 0x0098, 0x080c, 0xaa4b, 0x0140, 0x080c, 0xaa60, 0x0128, 0x0066, ++ 0x9036, 0x080c, 0x9fa2, 0x006e, 0x7033, 0x0000, 0x0028, 0x080c, ++ 0xaa4b, 0x080c, 0xa338, 0x0000, 0x010e, 0x190c, 0xa8b2, 0x00ce, ++ 0x00ee, 0x00be, 0x0005, 0x00d6, 0x00c6, 0x080c, 0xa8f4, 0x0106, ++ 0x190c, 0xa896, 0x6044, 0xd0fc, 0x1130, 0x010e, 0x190c, 0xa8b2, ++ 0x00ce, 0x00de, 0x0005, 0x2069, 0x19e7, 0x684c, 0x9005, 0x0da8, ++ 0x9c06, 0x190c, 0x0d7d, 0x6852, 0x00e6, 0x2d70, 0x080c, 0x926e, ++ 0x00ee, 0x080c, 0x8703, 0x0016, 0x2009, 0x0040, 0x080c, 0x21b0, ++ 0x001e, 0x683c, 0x9084, 0x0003, 0x0002, 0x966b, 0x966c, 0x968a, ++ 0x9669, 0x080c, 0x0d7d, 0x0460, 0x6868, 0x9086, 0x0001, 0x0190, ++ 0x600c, 0x9015, 0x0160, 0x6a4a, 0x600f, 0x0000, 0x6044, 0xc0fc, ++ 0x6046, 0x9006, 0x7042, 0x684e, 0x683f, 0x0000, 0x00c8, 0x684a, ++ 0x6846, 0x0ca0, 0x686b, 0x0000, 0x6848, 0x9065, 0x0d78, 0x6003, ++ 0x0002, 0x0c60, 0x9006, 0x686a, 0x6852, 0x686e, 0x600c, 0x9015, ++ 0x0120, 0x6a4a, 0x600f, 0x0000, 0x0018, 0x684e, 0x684a, 0x6846, ++ 0x684f, 0x0000, 0x010e, 0x190c, 0xa8b2, 0x00ce, 0x00de, 0x0005, ++ 0x0005, 0x6020, 0x9084, 0x000f, 0x000b, 0x0005, 0x96b6, 0x96b9, ++ 0x9b27, 0x9bb6, 0x96b9, 0x9b27, 0x9bb6, 0x96b6, 0x96b9, 0x96b6, ++ 0x96b6, 0x96b6, 0x96b6, 0x96b6, 0x96b6, 0x96b6, 0x080c, 0x95de, ++ 0x0005, 0x00b6, 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, ++ 0x908a, 0x0053, 0x1a0c, 0x0d7d, 0x6110, 0x2158, 0xb984, 0x2c78, ++ 0x2061, 0x0100, 0x619a, 0x908a, 0x0040, 0x1a04, 0x9725, 0x005b, ++ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, ++ 0x015e, 0x00be, 0x0005, 0x98aa, 0x98e5, 0x990e, 0x99b6, 0x99d8, ++ 0x99de, 0x99eb, 0x99f3, 0x99ff, 0x9a05, 0x9a16, 0x9a05, 0x9a6e, ++ 0x99f3, 0x9a7a, 0x9a80, 0x99ff, 0x9a80, 0x9a8c, 0x9723, 0x9723, ++ 0x9723, 0x9723, 0x9723, 0x9723, 0x9723, 0x9723, 0x9723, 0x9723, ++ 0x9723, 0x9fc3, 0x9fe6, 0x9ff7, 0xa017, 0xa049, 0x99eb, 0x9723, ++ 0x99eb, 0x9a05, 0x9723, 0x990e, 0x99b6, 0x9723, 0xa42b, 0x9a05, ++ 0x9723, 0xa447, 0x9a05, 0x9723, 0x99ff, 0x98a4, 0x9746, 0x9723, ++ 0xa463, 0xa4d0, 0xa5b0, 0x9723, 0xa5bd, 0x99e8, 0xa5e8, 0x9723, ++ 0xa053, 0xa5f4, 0x9723, 0x080c, 0x0d7d, 0x2100, 0x005b, 0x00fe, ++ 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, ++ 0x00be, 0x0005, 0xa694, 0xa746, 0x9744, 0x976d, 0x9819, 0x9824, ++ 0x9744, 0x99eb, 0x9744, 0x986b, 0x9877, 0x9788, 0x9744, 0x97a3, ++ 0x97d7, 0xaacb, 0xab10, 0x9a05, 0x080c, 0x0d7d, 0x00d6, 0x0096, ++ 0x080c, 0x9a9f, 0x7003, 0x2414, 0x7007, 0x0018, 0x700b, 0x0800, ++ 0x7814, 0x2048, 0xa83c, 0x700e, 0xa850, 0x7022, 0xa854, 0x7026, ++ 0x60c3, 0x0018, 0x080c, 0x9e02, 0x009e, 0x00de, 0x0005, 0x7810, ++ 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x080c, 0xab57, 0x1118, 0x9084, ++ 0xff80, 0x0110, 0x9085, 0x0001, 0x0005, 0x00d6, 0x0096, 0x080c, ++ 0x9a9f, 0x7003, 0x0500, 0x7814, 0x2048, 0xa874, 0x700a, 0xa878, ++ 0x700e, 0xa87c, 0x7012, 0xa880, 0x7016, 0xa884, 0x701a, 0xa888, ++ 0x701e, 0x60c3, 0x0010, 0x080c, 0x9e02, 0x009e, 0x00de, 0x0005, ++ 0x00d6, 0x0096, 0x080c, 0x9a9f, 0x7003, 0x0500, 0x7814, 0x2048, ++ 0xa8cc, 0x700a, 0xa8d0, 0x700e, 0xa8d4, 0x7012, 0xa8d8, 0x7016, ++ 0xa8dc, 0x701a, 0xa8e0, 0x701e, 0x60c3, 0x0010, 0x080c, 0x9e02, ++ 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x9a9f, 0x20e9, 0x0000, 0x2001, 0x19a3, 0x2003, 0x0000, ++ 0x7814, 0x2048, 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x2001, 0x19a3, 0x0016, ++ 0x200c, 0x2001, 0x0001, 0x080c, 0x2195, 0x080c, 0xd5b1, 0x9006, ++ 0x080c, 0x2195, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c28, ++ 0x04d9, 0x080c, 0x9e02, 0x012e, 0x009e, 0x00de, 0x0005, 0x00d6, ++ 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x9aea, 0x20e9, 0x0000, ++ 0x2001, 0x19a3, 0x2003, 0x0000, 0x7814, 0x2048, 0xa86f, 0x0200, ++ 0xa873, 0x0000, 0xa814, 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x2001, 0x19a3, 0x0016, ++ 0x200c, 0x080c, 0xd5b1, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, ++ 0x0c60, 0x0051, 0x7814, 0x2048, 0x080c, 0x0fec, 0x080c, 0x9e02, ++ 0x012e, 0x009e, 0x00de, 0x0005, 0x60c0, 0x8004, 0x9084, 0x0003, ++ 0x9005, 0x0130, 0x9082, 0x0004, 0x20a3, 0x0000, 0x8000, 0x1de0, ++ 0x0005, 0x080c, 0x9a9f, 0x7003, 0x7800, 0x7808, 0x8007, 0x700a, ++ 0x60c3, 0x0008, 0x0804, 0x9e02, 0x00d6, 0x00e6, 0x080c, 0x9aea, ++ 0x7814, 0x9084, 0xff00, 0x2073, 0x0200, 0x8e70, 0x8e70, 0x9095, ++ 0x0010, 0x2272, 0x8e70, 0x2073, 0x0034, 0x8e70, 0x2069, 0x1805, ++ 0x20a9, 0x0004, 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x983a, 0x2069, ++ 0x1801, 0x20a9, 0x0004, 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x9843, ++ 0x2069, 0x19b3, 0x9086, 0xdf00, 0x0110, 0x2069, 0x19cd, 0x20a9, ++ 0x001a, 0x9e86, 0x0260, 0x1148, 0x00c6, 0x2061, 0x0200, 0x6010, ++ 0x8000, 0x6012, 0x00ce, 0x2071, 0x0240, 0x2d04, 0x8007, 0x2072, ++ 0x8d68, 0x8e70, 0x1f04, 0x9851, 0x60c3, 0x004c, 0x080c, 0x9e02, ++ 0x00ee, 0x00de, 0x0005, 0x080c, 0x9a9f, 0x7003, 0x6300, 0x7007, ++ 0x0028, 0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x00d6, ++ 0x0026, 0x0016, 0x080c, 0x9aea, 0x7003, 0x0200, 0x7814, 0x700e, ++ 0x00e6, 0x9ef0, 0x0004, 0x2009, 0x0001, 0x2011, 0x000c, 0x2069, ++ 0x1923, 0x6810, 0xd084, 0x1148, 0x2073, 0x0500, 0x8e70, 0x2073, ++ 0x0000, 0x8e70, 0x8108, 0x9290, 0x0004, 0x2073, 0x0800, 0x8e70, ++ 0x2073, 0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x9e02, ++ 0x001e, 0x002e, 0x00de, 0x0005, 0x2001, 0x1818, 0x2004, 0x609a, ++ 0x0804, 0x9e02, 0x080c, 0x9a9f, 0x7003, 0x5200, 0x2069, 0x1847, ++ 0x6804, 0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x262e, 0x710e, ++ 0x001e, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, ++ 0x0000, 0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, ++ 0x20a1, 0x0254, 0x4003, 0x080c, 0xab57, 0x1120, 0xb8a0, 0x9082, ++ 0x007f, 0x0248, 0x2001, 0x181f, 0x2004, 0x7032, 0x2001, 0x1820, ++ 0x2004, 0x7036, 0x0030, 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, ++ 0x7036, 0x60c3, 0x001c, 0x0804, 0x9e02, 0x080c, 0x9a9f, 0x7003, ++ 0x0500, 0x080c, 0xab57, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, ++ 0x2001, 0x181f, 0x2004, 0x700a, 0x2001, 0x1820, 0x2004, 0x700e, ++ 0x0030, 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, 0x700e, 0x20a9, ++ 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, ++ 0x0250, 0x4003, 0x60c3, 0x0010, 0x0804, 0x9e02, 0x080c, 0x9a9f, ++ 0x9006, 0x080c, 0x6a35, 0xb8a0, 0x9086, 0x007e, 0x1130, 0x7003, ++ 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, 0x904d, ++ 0x0120, 0x9006, 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, 0x0300, ++ 0xb8a0, 0x9086, 0x007e, 0x1904, 0x997d, 0x00d6, 0x2069, 0x196c, ++ 0x2001, 0x1837, 0x2004, 0xd0a4, 0x0188, 0x6800, 0x700a, 0x6808, ++ 0x9084, 0x2000, 0x7012, 0x080c, 0xab6e, 0x680c, 0x7016, 0x701f, ++ 0x2710, 0x6818, 0x7022, 0x681c, 0x7026, 0x0090, 0x6800, 0x700a, ++ 0x6804, 0x700e, 0x6808, 0x080c, 0x74e9, 0x1118, 0x9084, 0x37ff, ++ 0x0010, 0x9084, 0x3fff, 0x7012, 0x080c, 0xab6e, 0x680c, 0x7016, ++ 0x00de, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, ++ 0x0000, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, ++ 0x20a1, 0x025a, 0x4003, 0x00d6, 0x080c, 0xa67b, 0x2069, 0x1974, ++ 0x2071, 0x024e, 0x6800, 0xc0dd, 0x7002, 0x080c, 0x56de, 0xd0e4, ++ 0x0110, 0x680c, 0x700e, 0x00de, 0x04a8, 0x2001, 0x1837, 0x2004, ++ 0xd0a4, 0x0170, 0x0016, 0x2001, 0x196d, 0x200c, 0x60e0, 0x9106, ++ 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c, 0x266f, 0x61e2, 0x001e, ++ 0x20e1, 0x0001, 0x2099, 0x196c, 0x20e9, 0x0000, 0x20a1, 0x024e, ++ 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1805, 0x20a1, ++ 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1, 0x025a, ++ 0x4003, 0x080c, 0xa67b, 0x20a1, 0x024e, 0x20a9, 0x0008, 0x2099, ++ 0x1974, 0x4003, 0x60c3, 0x0074, 0x0804, 0x9e02, 0x080c, 0x9a9f, ++ 0x7003, 0x2010, 0x7007, 0x0014, 0x700b, 0x0800, 0x700f, 0x2000, ++ 0x9006, 0x00f6, 0x2079, 0x1847, 0x7904, 0x00fe, 0xd1ac, 0x1110, ++ 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085, 0x0010, 0x9085, 0x0002, ++ 0x00d6, 0x0804, 0x9a4f, 0x7026, 0x60c3, 0x0014, 0x0804, 0x9e02, ++ 0x080c, 0x9a9f, 0x7003, 0x5000, 0x0804, 0x9928, 0x080c, 0x9a9f, ++ 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3, 0x0014, 0x0804, 0x9e02, ++ 0x080c, 0x9ae1, 0x0010, 0x080c, 0x9aea, 0x7003, 0x0200, 0x60c3, ++ 0x0004, 0x0804, 0x9e02, 0x080c, 0x9aea, 0x7003, 0x0100, 0x700b, ++ 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x080c, ++ 0x9aea, 0x7003, 0x0200, 0x0804, 0x9928, 0x080c, 0x9aea, 0x7003, ++ 0x0100, 0x782c, 0x9005, 0x0110, 0x700a, 0x0010, 0x700b, 0x0003, ++ 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x00d6, 0x080c, ++ 0x9aea, 0x7003, 0x0210, 0x7007, 0x0014, 0x700b, 0x0800, 0xb894, ++ 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184, 0x0030, 0x0190, 0xb998, ++ 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118, 0x700f, 0x2100, 0x0058, ++ 0x700f, 0x0100, 0x0040, 0x700f, 0x0400, 0x0028, 0x700f, 0x0700, ++ 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079, 0x1847, 0x7904, 0x00fe, ++ 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085, 0x0010, ++ 0x2009, 0x1869, 0x210c, 0xd184, 0x1110, 0x9085, 0x0002, 0x0026, ++ 0x2009, 0x1867, 0x210c, 0xd1e4, 0x0150, 0xc0c5, 0xbad4, 0xd28c, ++ 0x1108, 0xc0cd, 0x9094, 0x0030, 0x9296, 0x0010, 0x0140, 0xd1ec, ++ 0x0130, 0x9094, 0x0030, 0x9296, 0x0010, 0x0108, 0xc0bd, 0x002e, ++ 0x7026, 0x60c3, 0x0014, 0x00de, 0x0804, 0x9e02, 0x080c, 0x9aea, ++ 0x7003, 0x0210, 0x7007, 0x0014, 0x700f, 0x0100, 0x60c3, 0x0014, ++ 0x0804, 0x9e02, 0x080c, 0x9aea, 0x7003, 0x0200, 0x0804, 0x98ae, ++ 0x080c, 0x9aea, 0x7003, 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, ++ 0x60c3, 0x0008, 0x0804, 0x9e02, 0x080c, 0x9aea, 0x7003, 0x0100, ++ 0x700b, 0x000b, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x0026, 0x00d6, ++ 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0040, 0x0026, ++ 0x00d6, 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x080c, ++ 0xa690, 0xb810, 0x9305, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, ++ 0x687c, 0x700a, 0x6880, 0x700e, 0x9485, 0x0029, 0x7012, 0x004e, ++ 0x003e, 0x00de, 0x080c, 0x9df6, 0x721a, 0x9f95, 0x0000, 0x7222, ++ 0x7027, 0xffff, 0x2071, 0x024c, 0x002e, 0x0005, 0x0026, 0x080c, ++ 0xa690, 0x7003, 0x02ff, 0x7007, 0xfffc, 0x00d6, 0x2069, 0x1800, ++ 0x687c, 0x700a, 0x6880, 0x700e, 0x00de, 0x7013, 0x2029, 0x0c10, ++ 0x7003, 0x0100, 0x7007, 0x0000, 0x700b, 0xfc02, 0x700f, 0x0000, ++ 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3300, 0x2021, ++ 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2300, ++ 0x2021, 0x0100, 0x080c, 0xa690, 0xb810, 0x9305, 0x7002, 0xb814, ++ 0x7006, 0x2069, 0x1800, 0xb810, 0x9005, 0x1140, 0xb814, 0x9005, ++ 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0020, 0x687c, 0x700a, ++ 0x6880, 0x700e, 0x0000, 0x9485, 0x0098, 0x7012, 0x004e, 0x003e, ++ 0x00de, 0x080c, 0x9df6, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, ++ 0x2071, 0x024c, 0x002e, 0x0005, 0x080c, 0x9df6, 0x721a, 0x7a08, ++ 0x7222, 0x7814, 0x7026, 0x2071, 0x024c, 0x002e, 0x0005, 0x00b6, ++ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, ++ 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d7d, 0x908a, 0x0092, 0x1a0c, ++ 0x0d7d, 0x6110, 0x2158, 0xb984, 0x2c78, 0x2061, 0x0100, 0x619a, ++ 0x9082, 0x0085, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, ++ 0x0005, 0x9b58, 0x9b67, 0x9b72, 0x9b56, 0x9b56, 0x9b56, 0x9b58, ++ 0x9b56, 0x9b56, 0x9b56, 0x9b56, 0x9b56, 0x9b56, 0x080c, 0x0d7d, ++ 0x0411, 0x60c3, 0x0000, 0x0026, 0x080c, 0x2979, 0x0228, 0x2011, ++ 0x0101, 0x2204, 0xc0c5, 0x2012, 0x002e, 0x0804, 0x9e02, 0x0431, ++ 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3, 0x000c, ++ 0x0804, 0x9e02, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300, 0x60c3, ++ 0x0004, 0x0804, 0x9e02, 0x0026, 0x080c, 0xa690, 0xb810, 0x9085, ++ 0x8100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x687c, 0x700a, ++ 0x6880, 0x700e, 0x7013, 0x0009, 0x0804, 0x9aba, 0x0026, 0x080c, ++ 0xa690, 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006, 0x2069, ++ 0x1800, 0x687c, 0x700a, 0x6880, 0x700e, 0x2001, 0x0099, 0x7012, ++ 0x0804, 0x9b1c, 0x0026, 0x080c, 0xa690, 0xb810, 0x9085, 0x8500, ++ 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x687c, 0x700a, 0x6880, ++ 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, 0x9b1c, 0x00b6, 0x00c6, ++ 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071, 0x0240, ++ 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0d7d, 0x908a, 0x0057, 0x1a0c, ++ 0x0d7d, 0x7910, 0x2158, 0xb984, 0x2061, 0x0100, 0x619a, 0x9082, ++ 0x0040, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x0005, ++ 0x9beb, 0x9beb, 0x9beb, 0x9c11, 0x9beb, 0x9beb, 0x9beb, 0x9beb, ++ 0x9beb, 0x9beb, 0x9beb, 0xa1eb, 0xa1f3, 0xa1fb, 0xa203, 0x9beb, ++ 0x9beb, 0x9beb, 0xa1e3, 0x080c, 0x0d7d, 0x6813, 0x0008, 0xba8c, ++ 0x8210, 0xb8d4, 0xd084, 0x0128, 0x7a4e, 0x7b14, 0x7b52, 0x722e, ++ 0x732a, 0x9294, 0x00ff, 0xba8e, 0x8217, 0x721a, 0xba10, 0x9295, ++ 0x0600, 0x7202, 0xba14, 0x7206, 0x2069, 0x1800, 0x6a7c, 0x720a, ++ 0x6a80, 0x720e, 0x7013, 0x0829, 0x2f10, 0x7222, 0x7027, 0xffff, ++ 0x0005, 0x0016, 0x7814, 0x9084, 0x0700, 0x8007, 0x0013, 0x001e, ++ 0x0005, 0x9c21, 0x9c21, 0x9c23, 0x9c21, 0x9c21, 0x9c21, 0x9c3d, ++ 0x9c21, 0x080c, 0x0d7d, 0x7914, 0x918c, 0x08ff, 0x918d, 0xf600, ++ 0x7916, 0x2009, 0x0003, 0x00b9, 0x2069, 0x1847, 0x6804, 0xd0bc, ++ 0x0130, 0x682c, 0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, 0x7033, ++ 0x3f00, 0x60c3, 0x0001, 0x0804, 0x9e02, 0x2009, 0x0003, 0x0019, ++ 0x7033, 0x7f00, 0x0cb0, 0x0016, 0x080c, 0xa690, 0x001e, 0xb810, ++ 0x9085, 0x0100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6a7c, ++ 0x720a, 0x6a80, 0x720e, 0x7013, 0x0888, 0x918d, 0x0008, 0x7116, ++ 0x080c, 0x9df6, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x0005, ++ 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0036, ++ 0x2061, 0x0100, 0x2071, 0x1800, 0x7160, 0x7810, 0x2058, 0x76dc, ++ 0x96b4, 0x0028, 0x0110, 0x737c, 0x7480, 0x2500, 0x76dc, 0x96b4, ++ 0x0028, 0x0140, 0x2001, 0x04ff, 0x6062, 0x6067, 0xffff, 0x636a, ++ 0x646e, 0x0050, 0x2001, 0x00ff, 0x9085, 0x0400, 0x6062, 0x6067, ++ 0xffff, 0x606b, 0x0000, 0x616e, 0xb8b8, 0x6073, 0x0530, 0x6077, ++ 0x0008, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x9085, ++ 0x0020, 0x607a, 0x607f, 0x0000, 0x2b00, 0x6082, 0x6087, 0xffff, ++ 0x7814, 0x0096, 0x2048, 0xa848, 0x608a, 0xa844, 0x608e, 0xa838, ++ 0x60c6, 0xa834, 0x60ca, 0x009e, 0xb86c, 0x60ce, 0x60ab, 0x0036, ++ 0x60af, 0x95d5, 0x60d7, 0x0000, 0x2001, 0x1837, 0x2004, 0x9084, ++ 0x0028, 0x0128, 0x609f, 0x0000, 0x2001, 0x0092, 0x0058, 0x6028, ++ 0xc0bd, 0x602a, 0x609f, 0x00ff, 0x2011, 0xffff, 0x080c, 0x2a44, ++ 0x2001, 0x00b2, 0x2010, 0x900e, 0x080c, 0x2a53, 0x2009, 0x07d0, ++ 0x080c, 0x86fb, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, ++ 0x00ee, 0x00be, 0x0005, 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, ++ 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, 0x7160, ++ 0x7810, 0x2058, 0xb8a0, 0x2028, 0x76dc, 0xd6ac, 0x1168, 0x9582, ++ 0x007e, 0x1250, 0x2500, 0x9094, 0xff80, 0x1130, 0x9080, 0x3374, ++ 0x2015, 0x9294, 0x00ff, 0x0020, 0xb910, 0xba14, 0x737c, 0x7480, ++ 0x70dc, 0xd0ac, 0x1130, 0x9582, 0x007e, 0x1218, 0x9584, 0xff80, ++ 0x0138, 0x9185, 0x0400, 0x6062, 0x6266, 0x636a, 0x646e, 0x0030, ++ 0x6063, 0x0400, 0x6266, 0x606b, 0x0000, 0x616e, 0xb8b8, 0x6072, ++ 0x6077, 0x0000, 0xb864, 0xd0a4, 0x0110, 0x6077, 0x0008, 0xb88c, ++ 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x9085, 0x0020, 0x607a, ++ 0x607f, 0x0000, 0x2b00, 0x6082, 0x6087, 0xffff, 0x7814, 0x0096, ++ 0x2048, 0xa848, 0x608a, 0xa844, 0x608e, 0xa838, 0x60c6, 0xa834, ++ 0x60ca, 0x009e, 0xb86c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, ++ 0x60d7, 0x0000, 0xba84, 0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, ++ 0x0000, 0x00fe, 0x900e, 0x2011, 0x0092, 0x080c, 0x2a53, 0x2009, ++ 0x07d0, 0x080c, 0x86fb, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, ++ 0x00de, 0x00ee, 0x00be, 0x0005, 0x00b6, 0x0096, 0x00e6, 0x00d6, ++ 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0x1800, ++ 0x7810, 0x2058, 0xb8a0, 0x2028, 0xb910, 0xba14, 0x737c, 0x7480, ++ 0x7820, 0x0002, 0x9d81, 0x9d81, 0x9d81, 0x9d81, 0x9d81, 0x9d81, ++ 0x9d81, 0x9d81, 0x9d81, 0x9d81, 0x9d83, 0x9d81, 0x9d81, 0x9d81, ++ 0x9d81, 0x080c, 0x0d7d, 0xb884, 0x609e, 0x7814, 0x2048, 0xa87c, ++ 0xd0fc, 0x0558, 0xaf90, 0x9784, 0xff00, 0x9105, 0x6062, 0x873f, ++ 0x9784, 0xff00, 0x0006, 0x7814, 0x2048, 0xa878, 0xc0fc, 0x9005, ++ 0x000e, 0x1160, 0xaf94, 0x87ff, 0x0198, 0x2039, 0x0098, 0x9705, ++ 0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, 0x0038, 0x9185, 0x2200, ++ 0x6062, 0x6073, 0x0129, 0x6077, 0x0000, 0xb884, 0x609e, 0x0050, ++ 0x2039, 0x0029, 0x9705, 0x6072, 0x0cc0, 0x9185, 0x0200, 0x6062, ++ 0x6073, 0x2029, 0xa87c, 0xd0fc, 0x0118, 0xaf94, 0x87ff, 0x1120, ++ 0x2f00, 0x6082, 0x7808, 0x6086, 0x6266, 0x636a, 0x646e, 0x6077, ++ 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, ++ 0x607f, 0x0000, 0xa848, 0x608a, 0xa844, 0x608e, 0xa838, 0x60c6, ++ 0xa834, 0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, ++ 0x080c, 0xa670, 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, ++ 0x0110, 0x2009, 0x1b58, 0x080c, 0x86fb, 0x003e, 0x004e, 0x005e, ++ 0x00ce, 0x00de, 0x00ee, 0x009e, 0x00be, 0x0005, 0x7a40, 0x9294, ++ 0x00ff, 0x8217, 0x0005, 0x00d6, 0x2069, 0x19e7, 0x686b, 0x0001, ++ 0x00de, 0x0005, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x00f1, 0x080c, ++ 0x86ed, 0x0005, 0x0016, 0x2001, 0x180c, 0x200c, 0x9184, 0x0600, ++ 0x9086, 0x0600, 0x0128, 0x0089, 0x080c, 0x86ed, 0x001e, 0x0005, ++ 0xc1e5, 0x2001, 0x180c, 0x2102, 0x2001, 0x19e8, 0x2003, 0x0000, ++ 0x2001, 0x19f3, 0x2003, 0x0000, 0x0c88, 0x0006, 0x0016, 0x0026, ++ 0x2009, 0x1804, 0x2011, 0x0009, 0x080c, 0x2a53, 0x002e, 0x001e, ++ 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x080c, 0xa8f4, 0x0106, ++ 0x190c, 0xa896, 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x0016, ++ 0x0026, 0x2009, 0x1804, 0x2011, 0x0008, 0x080c, 0x2a53, 0x002e, ++ 0x001e, 0x010e, 0x190c, 0xa8b2, 0x000e, 0xa001, 0xa001, 0xa001, ++ 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, ++ 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x74e9, 0x1510, 0x2001, ++ 0x1a0c, 0x2004, 0x9005, 0x1904, 0x9eb3, 0x080c, 0x758a, 0x11a8, ++ 0x2069, 0x0380, 0x6843, 0x0101, 0x6844, 0xd084, 0x1de8, 0x2061, ++ 0x0100, 0x6020, 0xd0b4, 0x1120, 0x6024, 0xd084, 0x090c, 0x0d7d, ++ 0x6843, 0x0100, 0x080c, 0x86ed, 0x04b0, 0x00c6, 0x2061, 0x19e7, ++ 0x00f0, 0x6904, 0x9194, 0x4000, 0x0598, 0x080c, 0x9e32, 0x080c, ++ 0x2a1a, 0x00c6, 0x2061, 0x19e7, 0x6134, 0x9192, 0x0008, 0x1278, ++ 0x8108, 0x6136, 0x080c, 0xa896, 0x6130, 0x080c, 0xa8b2, 0x00ce, ++ 0x81ff, 0x01c8, 0x080c, 0x86ed, 0x080c, 0x9e25, 0x00a0, 0x080c, ++ 0xa896, 0x6130, 0x91e5, 0x0000, 0x0150, 0x080c, 0xe717, 0x080c, ++ 0x86f6, 0x6003, 0x0001, 0x2009, 0x0014, 0x080c, 0xac8c, 0x080c, ++ 0xa8b2, 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, ++ 0x2001, 0x1a0c, 0x2004, 0x9005, 0x1db0, 0x00c6, 0x2061, 0x19e7, ++ 0x6134, 0x9192, 0x0003, 0x1ad8, 0x8108, 0x6136, 0x00ce, 0x080c, ++ 0x86ed, 0x080c, 0x5ee4, 0x2009, 0x1846, 0x2114, 0x8210, 0x220a, ++ 0x0c10, 0x0096, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c, ++ 0x8703, 0x080c, 0xa896, 0x2001, 0x0387, 0x2003, 0x0202, 0x2071, ++ 0x19e7, 0x714c, 0x81ff, 0x0904, 0x9f5b, 0x2061, 0x0100, 0x2069, ++ 0x0140, 0x080c, 0x74e9, 0x1510, 0x0036, 0x2019, 0x0002, 0x080c, ++ 0xa118, 0x003e, 0x714c, 0x2160, 0x080c, 0xe717, 0x2009, 0x004a, ++ 0x6220, 0x9296, 0x0009, 0x1130, 0x6114, 0x2148, 0xa87b, 0x0006, ++ 0x2009, 0x004a, 0x6003, 0x0003, 0x080c, 0xac8c, 0x2001, 0x0386, ++ 0x2003, 0x5040, 0x080c, 0x758a, 0x0804, 0x9f5b, 0x6904, 0xd1f4, ++ 0x0904, 0x9f68, 0x080c, 0x2a1a, 0x00c6, 0x704c, 0x9065, 0x090c, ++ 0x0d7d, 0x6020, 0x00ce, 0x9086, 0x0006, 0x1518, 0x61c8, 0x60c4, ++ 0x9105, 0x11f8, 0x2009, 0x180c, 0x2104, 0xd0d4, 0x01d0, 0x6214, ++ 0x9294, 0x1800, 0x1128, 0x6224, 0x9294, 0x0002, 0x1560, 0x0010, ++ 0xc0d4, 0x200a, 0x6014, 0x9084, 0xe7fd, 0x9085, 0x0010, 0x6016, ++ 0x704c, 0x2060, 0x080c, 0x963b, 0x2009, 0x0049, 0x080c, 0xac8c, ++ 0x00d0, 0x0036, 0x2019, 0x0001, 0x080c, 0xa118, 0x003e, 0x714c, ++ 0x2160, 0x080c, 0xe717, 0x2009, 0x004a, 0x6220, 0x9296, 0x0009, ++ 0x1130, 0x6114, 0x2148, 0xa87b, 0x0006, 0x2009, 0x004a, 0x6003, ++ 0x0003, 0x080c, 0xac8c, 0x2001, 0x0387, 0x2003, 0x0200, 0x080c, ++ 0xa8b2, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x009e, 0x0005, ++ 0xd1ec, 0x1904, 0x9f12, 0x0804, 0x9f14, 0x0026, 0x00e6, 0x2071, ++ 0x19e7, 0x706c, 0xd084, 0x01e8, 0xc084, 0x706e, 0x714c, 0x81ff, ++ 0x01c0, 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e, 0x0006, ++ 0x1138, 0x2009, 0x1984, 0x2011, 0x0012, 0x080c, 0x2a53, 0x0048, ++ 0x928e, 0x0009, 0x0db0, 0x2009, 0x1984, 0x2011, 0x0016, 0x080c, ++ 0x2a53, 0x00ee, 0x002e, 0x0005, 0x9036, 0x2001, 0x19f1, 0x2004, ++ 0x9005, 0x0128, 0x9c06, 0x0128, 0x2c30, 0x600c, 0x0cc8, 0x9085, ++ 0x0001, 0x0005, 0x00f6, 0x2079, 0x19e7, 0x610c, 0x9006, 0x600e, ++ 0x6044, 0xc0fc, 0x6046, 0x86ff, 0x1140, 0x7824, 0x9c06, 0x1118, ++ 0x7826, 0x782a, 0x0050, 0x792a, 0x0040, 0x00c6, 0x2660, 0x610e, ++ 0x00ce, 0x7824, 0x9c06, 0x1108, 0x7e26, 0x080c, 0xa20e, 0x080c, ++ 0xca27, 0x00fe, 0x0005, 0x080c, 0x9a9f, 0x7003, 0x1200, 0x7838, ++ 0x7012, 0x783c, 0x7016, 0x00c6, 0x7820, 0x9086, 0x0004, 0x1148, ++ 0x7810, 0x9005, 0x0130, 0x00b6, 0x2058, 0xb810, 0xb914, 0x00be, ++ 0x0020, 0x2061, 0x1800, 0x607c, 0x6180, 0x9084, 0x00ff, 0x700a, ++ 0x710e, 0x00ce, 0x60c3, 0x002c, 0x0804, 0x9e02, 0x080c, 0x9a9f, ++ 0x7003, 0x0f00, 0x7808, 0xd09c, 0x0128, 0xb810, 0x9084, 0x00ff, ++ 0x700a, 0xb814, 0x700e, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x0156, ++ 0x080c, 0x9aea, 0x7003, 0x0200, 0x080c, 0x87bb, 0x20a9, 0x0006, ++ 0x2011, 0xfff4, 0x2019, 0xfff5, 0x9ef0, 0x0002, 0x2305, 0x2072, ++ 0x8e70, 0x2205, 0x2072, 0x8e70, 0x9398, 0x0002, 0x9290, 0x0002, ++ 0x1f04, 0xa006, 0x60c3, 0x001c, 0x015e, 0x0804, 0x9e02, 0x0016, ++ 0x0026, 0x080c, 0x9ac6, 0x080c, 0x9ad8, 0x9e80, 0x0004, 0x20e9, ++ 0x0000, 0x20a0, 0x7814, 0x0096, 0x2048, 0xa800, 0x2048, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098, 0x009e, 0x7808, 0x9088, ++ 0x0002, 0x21a8, 0x9192, 0x0010, 0x1250, 0x4003, 0x9080, 0x0004, ++ 0x8003, 0x60c2, 0x080c, 0x9e02, 0x002e, 0x001e, 0x0005, 0x20a9, ++ 0x0010, 0x4003, 0x080c, 0xa67b, 0x20a1, 0x0240, 0x22a8, 0x4003, ++ 0x0c68, 0x080c, 0x9a9f, 0x7003, 0x6200, 0x7808, 0x700e, 0x60c3, ++ 0x0008, 0x0804, 0x9e02, 0x0016, 0x0026, 0x080c, 0x9a9f, 0x20e9, ++ 0x0000, 0x20a1, 0x024c, 0x7814, 0x0096, 0x2048, 0xa800, 0x2048, ++ 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0023, 0x2098, 0x009e, 0x7808, ++ 0x9088, 0x0002, 0x21a8, 0x4003, 0x8003, 0x60c2, 0x080c, 0x9e02, ++ 0x002e, 0x001e, 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x19e7, 0x7010, 0x2060, 0x8cff, 0x0188, 0x080c, ++ 0xca4d, 0x1110, 0x080c, 0xb5b5, 0x600c, 0x0006, 0x080c, 0xccc4, ++ 0x600f, 0x0000, 0x080c, 0xabed, 0x080c, 0xa20e, 0x00ce, 0x0c68, ++ 0x2c00, 0x7012, 0x700e, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, ++ 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, ++ 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, ++ 0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19e7, ++ 0x7030, 0x2060, 0x8cff, 0x0548, 0x080c, 0x9e32, 0x6ac0, 0x68c3, ++ 0x0000, 0x080c, 0x86f6, 0x00c6, 0x2061, 0x0100, 0x080c, 0xa7cc, ++ 0x00ce, 0x20a9, 0x01f4, 0x04b1, 0x080c, 0x95de, 0x6044, 0xd0ac, ++ 0x1128, 0x2001, 0x1988, 0x2004, 0x604a, 0x0020, 0x2009, 0x0013, ++ 0x080c, 0xac8c, 0x000e, 0x001e, 0x002e, 0x006e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, 0x1800, 0x2004, ++ 0x9096, 0x0001, 0x0d78, 0x9096, 0x0004, 0x0d60, 0x080c, 0x86f6, ++ 0x6814, 0x9084, 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, ++ 0x68c3, 0x0000, 0x2011, 0x5e8e, 0x080c, 0x863e, 0x20a9, 0x01f4, ++ 0x0009, 0x08c0, 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, 0x7804, ++ 0x9084, 0x4000, 0x190c, 0x2a1a, 0x0090, 0xd084, 0x0118, 0x6827, ++ 0x0001, 0x0010, 0x1f04, 0xa0fa, 0x7804, 0x9084, 0x1000, 0x0138, ++ 0x2001, 0x0100, 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x0005, ++ 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, ++ 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, ++ 0xdbff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x0380, ++ 0x701c, 0x0006, 0x701f, 0x0202, 0x2071, 0x19e7, 0x704c, 0x2060, ++ 0x8cff, 0x0904, 0xa1bd, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, ++ 0x0002, 0x0904, 0xa1bd, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, ++ 0x00fa, 0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x8703, ++ 0x080c, 0x1dd8, 0x0046, 0x2009, 0x00a5, 0x080c, 0x0e55, 0x2021, ++ 0x0169, 0x2404, 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, ++ 0x95f5, 0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, ++ 0x2071, 0x19e7, 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, ++ 0x782b, 0x0008, 0x7057, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, ++ 0x1128, 0x7884, 0x9005, 0x1110, 0x7887, 0x0001, 0x0016, 0x2009, ++ 0x0040, 0x080c, 0x21b0, 0x001e, 0x2009, 0x0000, 0x080c, 0x0e55, ++ 0x004e, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0140, 0x6827, 0x0004, ++ 0x7804, 0x9084, 0x4000, 0x190c, 0x2a1a, 0x0090, 0xd08c, 0x0118, ++ 0x6827, 0x0002, 0x0010, 0x1f04, 0xa18b, 0x7804, 0x9084, 0x1000, ++ 0x0138, 0x2001, 0x0100, 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, ++ 0x6827, 0x4000, 0x6824, 0x83ff, 0x1180, 0x2009, 0x0049, 0x6020, ++ 0x9086, 0x0009, 0x0150, 0x080c, 0x963b, 0x6044, 0xd0ac, 0x1118, ++ 0x6003, 0x0002, 0x0010, 0x080c, 0xac8c, 0x000e, 0x2071, 0x0380, ++ 0xd08c, 0x1110, 0x701f, 0x0200, 0x000e, 0x001e, 0x002e, 0x006e, ++ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, ++ 0x0126, 0x2091, 0x8000, 0x2069, 0x19e7, 0x6a06, 0x012e, 0x00de, ++ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x19e7, 0x6a3e, ++ 0x012e, 0x00de, 0x0005, 0x080c, 0x9bed, 0x785c, 0x7032, 0x7042, ++ 0x7047, 0x1000, 0x00f8, 0x080c, 0x9bed, 0x785c, 0x7032, 0x7042, ++ 0x7047, 0x4000, 0x00b8, 0x080c, 0x9bed, 0x785c, 0x7032, 0x7042, ++ 0x7047, 0x2000, 0x0078, 0x080c, 0x9bed, 0x785c, 0x7032, 0x7042, ++ 0x7047, 0x0400, 0x0038, 0x080c, 0x9bed, 0x785c, 0x7032, 0x7042, ++ 0x7047, 0x0200, 0x60c3, 0x0020, 0x0804, 0x9e02, 0x00e6, 0x2071, ++ 0x19e7, 0x702c, 0x9005, 0x0110, 0x8001, 0x702e, 0x00ee, 0x0005, ++ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, 0x0126, ++ 0x2091, 0x8000, 0x2071, 0x19e7, 0x7620, 0x2660, 0x2678, 0x2039, ++ 0x0001, 0x87ff, 0x0904, 0xa2b3, 0x8cff, 0x0904, 0xa2b3, 0x6020, ++ 0x9086, 0x0006, 0x1904, 0xa2ae, 0x88ff, 0x0138, 0x2800, 0x9c06, ++ 0x1904, 0xa2ae, 0x2039, 0x0000, 0x0050, 0x6010, 0x9b06, 0x1904, ++ 0xa2ae, 0x85ff, 0x0120, 0x605c, 0x9106, 0x1904, 0xa2ae, 0x7030, ++ 0x9c06, 0x15b0, 0x2069, 0x0100, 0x68c0, 0x9005, 0x1160, 0x6824, ++ 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x86f6, 0x080c, 0xa338, ++ 0x7033, 0x0000, 0x0428, 0x080c, 0x86f6, 0x6820, 0xd0b4, 0x0110, ++ 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x080c, 0xa338, ++ 0x7033, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, ++ 0x0138, 0x2001, 0x0100, 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, ++ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, ++ 0x7020, 0x9c36, 0x1110, 0x660c, 0x7622, 0x701c, 0x9c36, 0x1140, ++ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x701e, 0x0010, 0x701f, 0x0000, ++ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, ++ 0x89ff, 0x1168, 0x600f, 0x0000, 0x6014, 0x0096, 0x2048, 0x080c, ++ 0xc836, 0x0110, 0x080c, 0xe26c, 0x009e, 0x080c, 0xac28, 0x080c, ++ 0xa20e, 0x88ff, 0x1190, 0x00ce, 0x0804, 0xa229, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0xa229, 0x9006, 0x012e, 0x000e, 0x006e, 0x007e, ++ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, ++ 0x98c5, 0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, 0x0096, 0x00c6, ++ 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, ++ 0x7648, 0x2660, 0x2678, 0x8cff, 0x0904, 0xa327, 0x6020, 0x9086, ++ 0x0006, 0x1904, 0xa322, 0x87ff, 0x0128, 0x2700, 0x9c06, 0x1904, ++ 0xa322, 0x0040, 0x6010, 0x9b06, 0x15e8, 0x85ff, 0x0118, 0x605c, ++ 0x9106, 0x15c0, 0x704c, 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, ++ 0x080c, 0xa118, 0x703f, 0x0000, 0x9006, 0x704e, 0x706a, 0x7052, ++ 0x706e, 0x003e, 0x7048, 0x9c36, 0x1110, 0x660c, 0x764a, 0x7044, ++ 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7046, 0x0010, ++ 0x7047, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, ++ 0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xc836, ++ 0x0110, 0x080c, 0xe26c, 0x080c, 0xac28, 0x87ff, 0x1198, 0x00ce, ++ 0x0804, 0xa2d3, 0x2c78, 0x600c, 0x2060, 0x0804, 0xa2d3, 0x9006, ++ 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x009e, 0x00de, 0x00ee, ++ 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x97bd, 0x0001, 0x0c80, ++ 0x00e6, 0x2071, 0x19e7, 0x7033, 0x0000, 0x7004, 0x9086, 0x0003, ++ 0x0158, 0x2001, 0x1800, 0x2004, 0x9086, 0x0002, 0x1118, 0x7007, ++ 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6, ++ 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, ++ 0x19e7, 0x2c10, 0x7648, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200, ++ 0x9c06, 0x11e0, 0x7048, 0x9c36, 0x1110, 0x660c, 0x764a, 0x7044, ++ 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7046, 0x0010, ++ 0x7047, 0x0000, 0x660c, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, ++ 0x2678, 0x600f, 0x0000, 0x9085, 0x0001, 0x0020, 0x2c78, 0x600c, ++ 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee, ++ 0x00fe, 0x0005, 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, ++ 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, 0x7610, ++ 0x2660, 0x2678, 0x8cff, 0x0904, 0xa41a, 0x6010, 0x00b6, 0x2058, ++ 0xb8a0, 0x00be, 0x9206, 0x1904, 0xa415, 0x7030, 0x9c06, 0x1520, ++ 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0xa3f1, 0x080c, 0x9e32, ++ 0x68c3, 0x0000, 0x080c, 0xa338, 0x7033, 0x0000, 0x0036, 0x2069, ++ 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, ++ 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x2069, 0x0100, 0x6824, 0xd084, ++ 0x0110, 0x6827, 0x0001, 0x003e, 0x7010, 0x9c36, 0x1110, 0x660c, ++ 0x7612, 0x700c, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, ++ 0x700e, 0x0010, 0x700f, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, ++ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xca3c, ++ 0x1158, 0x080c, 0x321c, 0x080c, 0xca4d, 0x11f0, 0x080c, 0xb5b5, ++ 0x00d8, 0x080c, 0xa338, 0x08c0, 0x080c, 0xca4d, 0x1118, 0x080c, ++ 0xb5b5, 0x0090, 0x6014, 0x2048, 0x080c, 0xc836, 0x0168, 0x6020, ++ 0x9086, 0x0003, 0x1508, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, ++ 0x080c, 0x6d74, 0x080c, 0xca27, 0x080c, 0xccc4, 0x080c, 0xac28, ++ 0x080c, 0xa20e, 0x00ce, 0x0804, 0xa39a, 0x2c78, 0x600c, 0x2060, ++ 0x0804, 0xa39a, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, ++ 0x00ee, 0x00fe, 0x009e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1d20, ++ 0x080c, 0xe26c, 0x0c08, 0x00d6, 0x080c, 0x9aea, 0x7003, 0x0200, ++ 0x7007, 0x0014, 0x60c3, 0x0014, 0x20e1, 0x0001, 0x2099, 0x1989, ++ 0x20e9, 0x0000, 0x20a1, 0x0250, 0x20a9, 0x0004, 0x4003, 0x7023, ++ 0x0004, 0x7027, 0x7878, 0x080c, 0x9e02, 0x00de, 0x0005, 0x080c, ++ 0x9aea, 0x700b, 0x0800, 0x7814, 0x9084, 0xff00, 0x700e, 0x7814, ++ 0x9084, 0x00ff, 0x7022, 0x782c, 0x7026, 0x7860, 0x9084, 0x00ff, ++ 0x9085, 0x0200, 0x7002, 0x7860, 0x9084, 0xff00, 0x8007, 0x7006, ++ 0x60c2, 0x0804, 0x9e02, 0x00b6, 0x00d6, 0x0016, 0x00d6, 0x2f68, ++ 0x2009, 0x0035, 0x080c, 0xceca, 0x00de, 0x1904, 0xa4c8, 0x080c, ++ 0x9a9f, 0x7003, 0x1300, 0x782c, 0x080c, 0xa5d3, 0x2068, 0x6820, ++ 0x9086, 0x0003, 0x0560, 0x7810, 0x2058, 0xbaa0, 0x080c, 0xab57, ++ 0x11d8, 0x9286, 0x007e, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, ++ 0x0498, 0x9286, 0x007f, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffd, ++ 0x0458, 0x9284, 0xff80, 0x0180, 0x9286, 0x0080, 0x1128, 0x700b, ++ 0x00ff, 0x700f, 0xfffc, 0x0400, 0x92d8, 0x1000, 0x2b5c, 0xb810, ++ 0x700a, 0xb814, 0x700e, 0x00c0, 0xb884, 0x700e, 0x00a8, 0x080c, ++ 0xab57, 0x1130, 0x7810, 0x2058, 0xb8a0, 0x9082, 0x007e, 0x0250, ++ 0x00d6, 0x2069, 0x181f, 0x2d04, 0x700a, 0x8d68, 0x2d04, 0x700e, ++ 0x00de, 0x0010, 0x6034, 0x700e, 0x7838, 0x7012, 0x783c, 0x7016, ++ 0x60c3, 0x000c, 0x001e, 0x00de, 0x080c, 0x9e02, 0x00be, 0x0005, ++ 0x781b, 0x0001, 0x7803, 0x0006, 0x001e, 0x00de, 0x00be, 0x0005, ++ 0x792c, 0x9180, 0x0008, 0x200c, 0x9186, 0x0006, 0x01c0, 0x9186, ++ 0x0003, 0x0904, 0xa546, 0x9186, 0x0005, 0x0904, 0xa52e, 0x9186, ++ 0x0004, 0x05f0, 0x9186, 0x0008, 0x0904, 0xa537, 0x7807, 0x0037, ++ 0x782f, 0x0003, 0x7817, 0x1700, 0x080c, 0xa5b0, 0x0005, 0x080c, ++ 0xa571, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x6800, ++ 0x6a44, 0xd2fc, 0x11f8, 0x0002, 0xa50f, 0xa51a, 0xa511, 0xa51a, ++ 0xa516, 0xa50f, 0xa50f, 0xa51a, 0xa51a, 0xa51a, 0xa51a, 0xa50f, ++ 0xa50f, 0xa50f, 0xa50f, 0xa50f, 0xa51a, 0xa50f, 0xa51a, 0x080c, ++ 0x0d7d, 0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0x900e, 0x0010, ++ 0x2009, 0x2000, 0x682c, 0x7022, 0x6830, 0x7026, 0x0804, 0xa56a, ++ 0x080c, 0xa571, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, ++ 0x6a00, 0x9286, 0x0002, 0x1108, 0x900e, 0x04e0, 0x080c, 0xa571, ++ 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x0498, 0x04c9, ++ 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x9286, 0x0005, ++ 0x0118, 0x9286, 0x0002, 0x1108, 0x900e, 0x0420, 0x0451, 0x00d6, ++ 0x0026, 0x792c, 0x2168, 0x6814, 0x0096, 0x2048, 0xa9ac, 0xa834, ++ 0x9112, 0xa9b0, 0xa838, 0x009e, 0x9103, 0x7022, 0x7226, 0x792c, ++ 0x9180, 0x0011, 0x2004, 0xd0fc, 0x1148, 0x9180, 0x0000, 0x2004, ++ 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, 0x0118, 0x2009, 0x4000, ++ 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, 0x002e, 0x00de, 0x0804, ++ 0x9e02, 0x00b6, 0x0036, 0x0046, 0x0056, 0x0066, 0x080c, 0x9aea, ++ 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, 0x793c, 0x710e, 0x7810, ++ 0x2058, 0xb8a0, 0x080c, 0xab57, 0x1118, 0x9092, 0x007e, 0x0268, ++ 0x00d6, 0x2069, 0x181f, 0x2d2c, 0x8d68, 0x2d34, 0x90d8, 0x1000, ++ 0x2b5c, 0xbb10, 0xbc14, 0x00de, 0x0028, 0x901e, 0xbc84, 0x2029, ++ 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, 0x2004, 0x9086, 0x0003, ++ 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, 0x0020, 0x7312, 0x7416, ++ 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, 0x003e, 0x00be, 0x0005, ++ 0x080c, 0x9aea, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814, 0x700e, ++ 0x700e, 0x60c3, 0x0008, 0x0804, 0x9e02, 0x080c, 0x9a96, 0x7003, ++ 0x1400, 0x7838, 0x700a, 0x0079, 0x783c, 0x700e, 0x782c, 0x7012, ++ 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, 0x8007, 0x701a, 0x60c3, ++ 0x0010, 0x0804, 0x9e02, 0x00e6, 0x2071, 0x0240, 0x0006, 0x00f6, ++ 0x2078, 0x7810, 0x00b6, 0x2058, 0xb8d4, 0xd084, 0x0120, 0x7850, ++ 0x702a, 0x784c, 0x702e, 0x00be, 0x00fe, 0x000e, 0x00ee, 0x0005, ++ 0x080c, 0x9ae1, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814, 0x700e, ++ 0x60c3, 0x0008, 0x0804, 0x9e02, 0x00a9, 0x7914, 0x712a, 0x60c3, ++ 0x0000, 0x60a7, 0x9575, 0x0026, 0x080c, 0x2979, 0x0228, 0x2011, ++ 0x0101, 0x2204, 0xc0c5, 0x2012, 0x002e, 0x080c, 0x9e25, 0x080c, ++ 0x86ed, 0x0005, 0x0036, 0x0096, 0x00d6, 0x00e6, 0x7860, 0x2048, ++ 0xaa7c, 0x9296, 0x00c0, 0x9294, 0xfffd, 0xaa7e, 0xaa80, 0x9294, ++ 0x0300, 0xaa82, 0xa96c, 0x9194, 0x00ff, 0xab74, 0x9384, 0x00ff, ++ 0x908d, 0xc200, 0xa96e, 0x9384, 0xff00, 0x9215, 0xaa76, 0xa870, ++ 0xaa78, 0xa87a, 0xaa72, 0x00d6, 0x2069, 0x0200, 0x080c, 0xa690, ++ 0x00de, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000a, 0xa860, ++ 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x4003, 0x60a3, 0x0035, ++ 0xaa68, 0x9294, 0x7000, 0x9286, 0x3000, 0x0110, 0x60a3, 0x0037, ++ 0x00ee, 0x00de, 0x009e, 0x003e, 0x0005, 0x900e, 0x7814, 0x0096, ++ 0x2048, 0xa87c, 0xd0fc, 0x01c0, 0x9084, 0x0003, 0x11a8, 0x2001, ++ 0x180c, 0x2004, 0xd0bc, 0x0180, 0x7824, 0xd0cc, 0x1168, 0xd0c4, ++ 0x1158, 0xa8a8, 0x9005, 0x1140, 0x2001, 0x180c, 0x200c, 0xc1d5, ++ 0x2102, 0x2009, 0x19b2, 0x210c, 0x009e, 0x918d, 0x0092, 0x0010, ++ 0x2009, 0x0096, 0x60ab, 0x0036, 0x0026, 0x2110, 0x900e, 0x080c, ++ 0x2a53, 0x002e, 0x0005, 0x2009, 0x0009, 0x00a0, 0x2009, 0x000a, ++ 0x0088, 0x2009, 0x000b, 0x0070, 0x2009, 0x000c, 0x0058, 0x2009, ++ 0x000d, 0x0040, 0x2009, 0x000e, 0x0028, 0x2009, 0x000f, 0x0010, ++ 0x2009, 0x0008, 0x6912, 0x0005, 0x080c, 0x9a9f, 0x0016, 0x0026, ++ 0x0096, 0x00d6, 0x7814, 0x2048, 0x7013, 0x0138, 0x2001, 0x1837, ++ 0x2004, 0x9084, 0x0028, 0x1138, 0x2001, 0x197c, 0x2004, 0x9086, ++ 0xaaaa, 0x1904, 0xa735, 0x7003, 0x5400, 0x00c6, 0x2061, 0x1800, ++ 0x607c, 0x9084, 0x00ff, 0xa998, 0x810f, 0x918c, 0xff00, 0x9105, ++ 0x700a, 0x6080, 0x700e, 0xa998, 0x918c, 0xff00, 0x7112, 0x20a9, ++ 0x0004, 0x2009, 0x1805, 0x2e10, 0x9290, 0x0006, 0x2104, 0x2012, ++ 0x8108, 0x8210, 0x1f04, 0xa6c6, 0x20a9, 0x0004, 0x2009, 0x1801, ++ 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xa6d0, 0xa860, 0x20e0, ++ 0xa85c, 0x9080, 0x0029, 0x2098, 0x2009, 0x0006, 0x20a9, 0x0001, ++ 0x4002, 0x8007, 0x2012, 0x8210, 0x8109, 0x1dc0, 0x00d6, 0x2069, ++ 0x0200, 0x080c, 0xa67b, 0x00de, 0x2071, 0x0240, 0x2011, 0x0240, ++ 0x2009, 0x0002, 0x20a9, 0x0001, 0x4002, 0x8007, 0x2012, 0x8210, ++ 0x8109, 0x1dc0, 0x2009, 0x0008, 0x20a9, 0x0001, 0x4002, 0x8007, ++ 0x2012, 0x8210, 0x8109, 0x1dc0, 0xa85c, 0x9080, 0x0031, 0x2098, ++ 0x2009, 0x0008, 0x20a9, 0x0001, 0x4002, 0x8007, 0x2012, 0x8210, ++ 0x8109, 0x1dc0, 0x00ce, 0x60c3, 0x004c, 0x60a3, 0x0056, 0x60a7, ++ 0x9575, 0x2001, 0x1837, 0x2004, 0x9084, 0x0028, 0x1168, 0x080c, ++ 0x74e9, 0x0150, 0x6028, 0xc0bd, 0x602a, 0x2009, 0x1804, 0x2011, ++ 0x0029, 0x080c, 0x2a53, 0x0010, 0x080c, 0x9e02, 0x080c, 0x86ed, ++ 0x00de, 0x009e, 0x002e, 0x001e, 0x0005, 0x00e6, 0x2071, 0x0240, ++ 0x2001, 0x2200, 0x9085, 0x00ff, 0x7002, 0x7007, 0xffff, 0x2071, ++ 0x0100, 0x709b, 0x00ff, 0x00ee, 0x0804, 0xa6ab, 0x080c, 0x9a9f, ++ 0x0016, 0x0026, 0x0096, 0x00d6, 0x7814, 0x2048, 0x7013, 0x0138, ++ 0x7003, 0x5500, 0x00c6, 0xa89c, 0x9084, 0x00ff, 0xa998, 0x810f, ++ 0x918c, 0xff00, 0x9105, 0x700a, 0xa99c, 0x918c, 0xff00, 0xa8a0, ++ 0x9084, 0x00ff, 0x9105, 0x700e, 0xa998, 0x918c, 0xff00, 0x2061, ++ 0x1800, 0x607c, 0x9084, 0x00ff, 0x910d, 0x7112, 0x6180, 0x7116, ++ 0x2009, 0x0008, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0029, 0x2098, ++ 0x2e10, 0x9290, 0x0006, 0x20a9, 0x0001, 0x4002, 0x8007, 0x2012, ++ 0x8210, 0x8109, 0x1dc0, 0x20a9, 0x0004, 0x2009, 0x1805, 0x2104, ++ 0x2012, 0x8108, 0x8210, 0x1f04, 0xa787, 0x20a9, 0x0002, 0x2009, ++ 0x1801, 0x2104, 0x2012, 0x8108, 0x8210, 0x1f04, 0xa791, 0x00d6, ++ 0x0016, 0x2069, 0x0200, 0x080c, 0xa67b, 0x001e, 0x00de, 0x2071, ++ 0x0240, 0x20a9, 0x0002, 0x2009, 0x1803, 0x2011, 0x0240, 0x2104, ++ 0x2012, 0x8108, 0x8210, 0x1f04, 0xa7a7, 0x2009, 0x0008, 0x4002, ++ 0x8007, 0x2012, 0x8210, 0x8109, 0x1dd0, 0x9006, 0x20a9, 0x0008, ++ 0x2012, 0x8210, 0x1f04, 0xa7b8, 0x00ce, 0x60c3, 0x004c, 0x60a3, ++ 0x0056, 0x60a7, 0x9575, 0x080c, 0x9e02, 0x080c, 0x86ed, 0x00de, ++ 0x009e, 0x002e, 0x001e, 0x0005, 0x00d6, 0x9290, 0x0018, 0x8214, ++ 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813, 0x0000, 0x22a8, 0x9284, ++ 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292, 0x0020, 0x0008, 0x9016, ++ 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff, 0x0120, 0x6810, 0x8000, ++ 0x6812, 0x0c60, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, ++ 0x00a6, 0x0096, 0x0066, 0x0126, 0x2091, 0x8000, 0x2071, 0x19e7, ++ 0x7610, 0x2660, 0x2678, 0x8cff, 0x0904, 0xa873, 0x7030, 0x9c06, ++ 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0xa84a, 0x080c, ++ 0x9e32, 0x68c3, 0x0000, 0x080c, 0xa338, 0x7033, 0x0000, 0x0036, ++ 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, ++ 0x080c, 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x2069, 0x0100, 0x6824, ++ 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7010, 0x9c36, 0x1110, ++ 0x660c, 0x7612, 0x700c, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, ++ 0x2f00, 0x700e, 0x0010, 0x700f, 0x0000, 0x660c, 0x0066, 0x2c00, ++ 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, ++ 0xca3c, 0x1158, 0x080c, 0x321c, 0x080c, 0xca4d, 0x11f0, 0x080c, ++ 0xb5b5, 0x00d8, 0x080c, 0xa338, 0x08c0, 0x080c, 0xca4d, 0x1118, ++ 0x080c, 0xb5b5, 0x0090, 0x6014, 0x2048, 0x080c, 0xc836, 0x0168, ++ 0x6020, 0x9086, 0x0003, 0x1520, 0xa867, 0x0103, 0xab7a, 0xa877, ++ 0x0000, 0x080c, 0x6d80, 0x080c, 0xca27, 0x080c, 0xccc4, 0x080c, ++ 0xac28, 0x080c, 0xa20e, 0x00ce, 0x0804, 0xa7fb, 0x2c78, 0x600c, ++ 0x2060, 0x0804, 0xa7fb, 0x7013, 0x0000, 0x700f, 0x0000, 0x012e, ++ 0x006e, 0x009e, 0x00ae, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, ++ 0x6020, 0x9086, 0x0006, 0x1d08, 0x080c, 0xe26c, 0x08f0, 0x00f6, ++ 0x0036, 0x2079, 0x0380, 0x7b18, 0xd3bc, 0x1de8, 0x7832, 0x7936, ++ 0x7a3a, 0x781b, 0x8080, 0x003e, 0x00fe, 0x0005, 0x0016, 0x2001, ++ 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, 0x0001, 0x1188, 0x2001, ++ 0x0015, 0x0c29, 0x2009, 0x1000, 0x2001, 0x0382, 0x2004, 0x9084, ++ 0x0007, 0x9086, 0x0003, 0x0120, 0x8109, 0x1db0, 0x080c, 0x0d7d, ++ 0x001e, 0x0005, 0x2001, 0x0382, 0x2004, 0x9084, 0x0007, 0x9086, ++ 0x0003, 0x1120, 0x2001, 0x0380, 0x2003, 0x0001, 0x0005, 0x0156, ++ 0x0016, 0x0026, 0x00e6, 0x900e, 0x2071, 0x19e7, 0x0469, 0x0106, ++ 0x0190, 0x7004, 0x9086, 0x0003, 0x0148, 0x20a9, 0x1000, 0x6044, ++ 0xd0fc, 0x01d8, 0x1f04, 0xa8cf, 0x080c, 0x0d7d, 0x080c, 0xa896, ++ 0x6044, 0xd0fc, 0x0190, 0x7030, 0x9c06, 0x1148, 0x080c, 0x95de, ++ 0x6044, 0xd0dc, 0x0150, 0xc0dc, 0x6046, 0x700a, 0x7042, 0x704c, ++ 0x9c06, 0x190c, 0x0d7d, 0x080c, 0x963b, 0x010e, 0x1919, 0x00ee, ++ 0x002e, 0x001e, 0x015e, 0x0005, 0x2001, 0x0382, 0x2004, 0x9084, ++ 0x0007, 0x9086, 0x0003, 0x0005, 0x0126, 0x2091, 0x2400, 0x7808, ++ 0xd0a4, 0x190c, 0x0d76, 0xd09c, 0x0128, 0x7820, 0x908c, 0xf000, ++ 0x11b8, 0x0012, 0x012e, 0x0005, 0xa91c, 0xa95a, 0xa981, 0xa9b8, ++ 0xa9c8, 0xa9d9, 0xa9e8, 0xa9f6, 0xaa23, 0xaa27, 0xa91c, 0xa91c, ++ 0xa91c, 0xa91c, 0xa91c, 0xa91c, 0x080c, 0x0d7d, 0x012e, 0x0005, ++ 0x2060, 0x6044, 0xd0bc, 0x0140, 0xc0bc, 0x6046, 0x6000, 0x908a, ++ 0x0016, 0x1a0c, 0x0d7d, 0x0012, 0x012e, 0x0005, 0xa941, 0xa943, ++ 0xa941, 0xa949, 0xa941, 0xa941, 0xa941, 0xa941, 0xa941, 0xa943, ++ 0xa941, 0xa943, 0xa941, 0xa943, 0xa941, 0xa941, 0xa941, 0xa943, ++ 0xa941, 0x080c, 0x0d7d, 0x2009, 0x0013, 0x080c, 0xac8c, 0x012e, ++ 0x0005, 0x6014, 0x2048, 0xa87c, 0xd0dc, 0x0130, 0x080c, 0x88c1, ++ 0x080c, 0xabed, 0x012e, 0x0005, 0x2009, 0x0049, 0x080c, 0xac8c, ++ 0x012e, 0x0005, 0x080c, 0xa896, 0x2001, 0x1a0c, 0x2003, 0x0000, ++ 0x7030, 0x9065, 0x090c, 0x0d7d, 0x7034, 0x9092, 0x00c8, 0x1258, ++ 0x8000, 0x7036, 0x7004, 0x9086, 0x0003, 0x0110, 0x7007, 0x0000, ++ 0x781f, 0x0808, 0x0040, 0x080c, 0xe717, 0x6003, 0x0001, 0x2009, ++ 0x0014, 0x080c, 0xac8c, 0x781f, 0x0100, 0x080c, 0xa8b2, 0x012e, ++ 0x0005, 0x080c, 0xa896, 0x714c, 0x81ff, 0x1128, 0x2011, 0x1a0f, ++ 0x2013, 0x0000, 0x0438, 0x2061, 0x0100, 0x7150, 0x9192, 0x7530, ++ 0x12f0, 0x8108, 0x7152, 0x714c, 0x9188, 0x0008, 0x210c, 0x918e, ++ 0x0006, 0x1138, 0x6014, 0x9084, 0x1984, 0x9085, 0x0012, 0x6016, ++ 0x0088, 0x714c, 0x9188, 0x0008, 0x210c, 0x918e, 0x0009, 0x0d90, ++ 0x6014, 0x9084, 0x1984, 0x9085, 0x0016, 0x6016, 0x0018, 0x706c, ++ 0xc085, 0x706e, 0x781f, 0x0200, 0x080c, 0xa8b2, 0x012e, 0x0005, ++ 0x080c, 0xa896, 0x714c, 0x2160, 0x6003, 0x0003, 0x2009, 0x004a, ++ 0x080c, 0xac8c, 0x781f, 0x0200, 0x080c, 0xa8b2, 0x012e, 0x0005, ++ 0x7808, 0xd09c, 0x0de8, 0x7820, 0x2060, 0x6003, 0x0003, 0x080c, ++ 0xa896, 0x080c, 0x1d60, 0x781f, 0x0400, 0x080c, 0xa8b2, 0x012e, ++ 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x2060, 0x080c, 0xa896, ++ 0x080c, 0x1da8, 0x781f, 0x0400, 0x080c, 0xa8b2, 0x012e, 0x0005, ++ 0x7030, 0x9065, 0x0148, 0x6044, 0xc0bc, 0x6046, 0x7104, 0x9186, ++ 0x0003, 0x0110, 0x080c, 0x96a1, 0x012e, 0x0005, 0x00f6, 0x703c, ++ 0x9086, 0x0002, 0x0528, 0x704c, 0x907d, 0x0510, 0x7844, 0xc0bc, ++ 0x7846, 0x7820, 0x9086, 0x0009, 0x0118, 0x080c, 0x9d5c, 0x00c0, ++ 0x7828, 0xd0fc, 0x1118, 0x080c, 0x9cdb, 0x0090, 0x2001, 0x1837, ++ 0x2004, 0x9084, 0x0028, 0x1130, 0x2001, 0x197c, 0x2004, 0x9086, ++ 0xaaaa, 0x1120, 0x2001, 0x0387, 0x2003, 0x1000, 0x080c, 0x9c60, ++ 0x00fe, 0x012e, 0x0005, 0x080c, 0x758a, 0x012e, 0x0005, 0x080c, ++ 0x0d7d, 0x0005, 0x00e6, 0x2071, 0x19e7, 0x6044, 0xc0bc, 0x6046, ++ 0xd0fc, 0x01b8, 0x704c, 0x9c06, 0x1190, 0x2019, 0x0001, 0x080c, ++ 0xa118, 0x704f, 0x0000, 0x2001, 0x0109, 0x2004, 0xd08c, 0x1138, ++ 0x2001, 0x0108, 0x2004, 0xd0bc, 0x1110, 0x703f, 0x0000, 0x080c, ++ 0xa34e, 0x00ee, 0x0005, 0x0026, 0x7010, 0x9c06, 0x1178, 0x080c, ++ 0xa20e, 0x6044, 0xc0fc, 0x6046, 0x600c, 0x9015, 0x0120, 0x7212, ++ 0x600f, 0x0000, 0x0010, 0x7212, 0x720e, 0x9006, 0x002e, 0x0005, ++ 0x0026, 0x7020, 0x9c06, 0x1178, 0x080c, 0xa20e, 0x6044, 0xc0fc, ++ 0x6046, 0x600c, 0x9015, 0x0120, 0x7222, 0x600f, 0x0000, 0x0010, ++ 0x7222, 0x721e, 0x9006, 0x002e, 0x0005, 0x00d6, 0x0036, 0x7830, ++ 0x9c06, 0x1558, 0x2069, 0x0100, 0x68c0, 0x9005, 0x01f8, 0x080c, ++ 0x86f6, 0x080c, 0x9e32, 0x68c3, 0x0000, 0x080c, 0xa338, 0x2069, ++ 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, ++ 0x2a0a, 0x9006, 0x080c, 0x2a0a, 0x2069, 0x0100, 0x6824, 0xd084, ++ 0x0110, 0x6827, 0x0001, 0x9085, 0x0001, 0x0038, 0x7808, 0xc0ad, ++ 0x780a, 0x6003, 0x0009, 0x630a, 0x9006, 0x003e, 0x00de, 0x0005, ++ 0x0016, 0x0026, 0x0036, 0x6100, 0x2019, 0x0100, 0x2001, 0x0382, ++ 0x2004, 0xd09c, 0x0190, 0x00c6, 0x0126, 0x2091, 0x2800, 0x0016, ++ 0x0036, 0x080c, 0xa8fc, 0x003e, 0x001e, 0x012e, 0x00ce, 0x6200, ++ 0x2200, 0x9106, 0x0d58, 0x2200, 0x0010, 0x8319, 0x1d38, 0x003e, ++ 0x002e, 0x001e, 0x0005, 0x00d6, 0x0156, 0x080c, 0x9aea, 0x7a14, ++ 0x82ff, 0x0138, 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, ++ 0x0490, 0x7003, 0x0200, 0x7007, 0x0000, 0x2069, 0x1800, 0x901e, ++ 0x6800, 0x9086, 0x0004, 0x1110, 0xc38d, 0x0060, 0x080c, 0x74e9, ++ 0x1110, 0xc3ad, 0x0008, 0xc3a5, 0x6adc, 0xd29c, 0x1110, 0xd2ac, ++ 0x0108, 0xc39d, 0x730e, 0x080c, 0x87bb, 0x20a9, 0x0006, 0x2011, ++ 0xfff4, 0x2019, 0xfff5, 0x2071, 0x0250, 0x2305, 0x2072, 0x8e70, ++ 0x2205, 0x2072, 0x8e70, 0x9398, 0x0002, 0x9290, 0x0002, 0x1f04, ++ 0xaafd, 0x60c3, 0x0020, 0x080c, 0x9e02, 0x015e, 0x00de, 0x0005, ++ 0x0156, 0x080c, 0x9aea, 0x7a14, 0x82ff, 0x0168, 0x9286, 0xffff, ++ 0x0118, 0x9282, 0x000e, 0x1238, 0x7003, 0x0100, 0x700b, 0x0003, ++ 0x60c3, 0x0008, 0x0488, 0x7003, 0x0200, 0x7007, 0x001c, 0x700f, ++ 0x0001, 0x2011, 0x19bd, 0x2204, 0x8007, 0x701a, 0x8210, 0x2204, ++ 0x8007, 0x701e, 0x0421, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, ++ 0x2001, 0x181f, 0x2004, 0x7022, 0x2001, 0x1820, 0x2004, 0x7026, ++ 0x0030, 0x2001, 0x1818, 0x2004, 0x9084, 0x00ff, 0x7026, 0x20a9, ++ 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, ++ 0x0256, 0x4003, 0x60c3, 0x001c, 0x015e, 0x0804, 0x9e02, 0x0006, ++ 0x2001, 0x1837, 0x2004, 0xd0ac, 0x000e, 0x0005, 0x2011, 0x0003, ++ 0x080c, 0xa1cf, 0x2011, 0x0002, 0x080c, 0xa1d9, 0x080c, 0xa098, ++ 0x0036, 0x901e, 0x080c, 0xa118, 0x003e, 0x0005, 0x080c, 0x336d, ++ 0x0188, 0x0016, 0x00b6, 0x00c6, 0x7010, 0x9085, 0x0020, 0x7012, ++ 0x2009, 0x007e, 0x080c, 0x6625, 0xb85c, 0xc0ac, 0xb85e, 0x00ce, ++ 0x00be, 0x001e, 0x0005, 0x2071, 0x188d, 0x7000, 0x9005, 0x0140, ++ 0x2001, 0x0812, 0x2071, 0x1800, 0x7076, 0x707a, 0x706b, 0xffd4, ++ 0x2071, 0x1800, 0x7074, 0x7056, 0x705b, 0x1ddc, 0x0005, 0x00e6, ++ 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7554, 0x9582, 0x0010, ++ 0x0608, 0x7058, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, ++ 0x001c, 0x7068, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1ddc, 0x0c98, ++ 0x6003, 0x0008, 0x8529, 0x7556, 0x9ca8, 0x001c, 0x7068, 0x9502, ++ 0x1230, 0x755a, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x705b, ++ 0x1ddc, 0x0cc0, 0x9006, 0x0cc0, 0x00e6, 0x2071, 0x1800, 0x7554, ++ 0x9582, 0x0010, 0x0600, 0x7058, 0x2060, 0x6000, 0x9086, 0x0000, ++ 0x0148, 0x9ce0, 0x001c, 0x7068, 0x9c02, 0x1208, 0x0cb0, 0x2061, ++ 0x1ddc, 0x0c98, 0x6003, 0x0008, 0x8529, 0x7556, 0x9ca8, 0x001c, ++ 0x7068, 0x9502, 0x1228, 0x755a, 0x9085, 0x0001, 0x00ee, 0x0005, ++ 0x705b, 0x1ddc, 0x0cc8, 0x9006, 0x0cc8, 0x9c82, 0x1ddc, 0x0a0c, ++ 0x0d7d, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1a0c, 0x0d7d, 0x9006, ++ 0x6006, 0x600a, 0x600e, 0x6016, 0x601a, 0x6012, 0x6023, 0x0000, ++ 0x6003, 0x0000, 0x601e, 0x605e, 0x6062, 0x6026, 0x602a, 0x602e, ++ 0x6032, 0x6036, 0x603a, 0x603e, 0x604a, 0x602a, 0x6046, 0x6042, ++ 0x2061, 0x1800, 0x6054, 0x8000, 0x6056, 0x0005, 0x9006, 0x600e, ++ 0x6016, 0x601a, 0x6012, 0x6022, 0x6002, 0x601e, 0x605e, 0x6062, ++ 0x604a, 0x6046, 0x2061, 0x1800, 0x6054, 0x8000, 0x6056, 0x0005, ++ 0x0006, 0x6000, 0x9086, 0x0000, 0x01d0, 0x601c, 0xd084, 0x190c, ++ 0x1a6a, 0x6023, 0x0007, 0x2001, 0x1986, 0x2004, 0x0006, 0x9082, ++ 0x0051, 0x000e, 0x0208, 0x8004, 0x601a, 0x080c, 0xe524, 0x604b, ++ 0x0000, 0x6044, 0xd0fc, 0x1129, 0x9006, 0x6046, 0x6016, 0x000e, ++ 0x0005, 0x080c, 0xa8f4, 0x0106, 0x190c, 0xa896, 0x2001, 0x19fa, ++ 0x2004, 0x9c06, 0x1130, 0x0036, 0x2019, 0x0001, 0x080c, 0xa118, ++ 0x003e, 0x080c, 0xa34e, 0x010e, 0x190c, 0xa8b2, 0x0005, 0x00e6, ++ 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x7554, 0x9582, 0x0001, ++ 0x0608, 0x7058, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, ++ 0x001c, 0x7068, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1ddc, 0x0c98, ++ 0x6003, 0x0008, 0x8529, 0x7556, 0x9ca8, 0x001c, 0x7068, 0x9502, ++ 0x1230, 0x755a, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x705b, ++ 0x1ddc, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084, 0x000f, 0x0002, ++ 0xaca0, 0xacaa, 0xacc5, 0xace0, 0xcf9c, 0xcfb9, 0xcfd4, 0xaca0, ++ 0xacaa, 0x8f9a, 0xacfc, 0xaca0, 0xaca0, 0xaca0, 0xaca0, 0xaca0, ++ 0x9186, 0x0013, 0x1130, 0x6044, 0xd0fc, 0x0110, 0x080c, 0x95de, ++ 0x0005, 0x0005, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7d, ++ 0x0013, 0x006e, 0x0005, 0xacc3, 0xb421, 0xb5fc, 0xacc3, 0xb692, ++ 0xafc5, 0xacc3, 0xacc3, 0xb3a3, 0xbbfa, 0xacc3, 0xacc3, 0xacc3, ++ 0xacc3, 0xacc3, 0xacc3, 0x080c, 0x0d7d, 0x0066, 0x6000, 0x90b2, ++ 0x0016, 0x1a0c, 0x0d7d, 0x0013, 0x006e, 0x0005, 0xacde, 0xc205, ++ 0xacde, 0xacde, 0xacde, 0xacde, 0xacde, 0xacde, 0xc1aa, 0xc388, ++ 0xacde, 0xc242, 0xc2c6, 0xc242, 0xc2c6, 0xacde, 0x080c, 0x0d7d, ++ 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d7d, 0x6000, 0x0002, 0xacfa, ++ 0xbc44, 0xbcdb, 0xbe5b, 0xbeca, 0xacfa, 0xacfa, 0xacfa, 0xbc13, ++ 0xc12b, 0xc12e, 0xacfa, 0xacfa, 0xacfa, 0xacfa, 0xc15e, 0xacfa, ++ 0xacfa, 0xacfa, 0x080c, 0x0d7d, 0x0066, 0x6000, 0x90b2, 0x0016, ++ 0x1a0c, 0x0d7d, 0x0013, 0x006e, 0x0005, 0xad15, 0xad15, 0xad53, ++ 0xadf2, 0xae72, 0xad15, 0xad15, 0xad15, 0xad17, 0xad15, 0xad15, ++ 0xad15, 0xad15, 0xad15, 0xad15, 0xad15, 0x080c, 0x0d7d, 0x9186, ++ 0x004c, 0x0560, 0x9186, 0x0003, 0x190c, 0x0d7d, 0x0096, 0x601c, ++ 0xc0ed, 0x601e, 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa87c, ++ 0x9084, 0xa000, 0xc0b5, 0xa87e, 0xa8ac, 0xa836, 0xa8b0, 0xa83a, ++ 0x9006, 0xa846, 0xa84a, 0xa884, 0x9092, 0x199a, 0x0210, 0x2001, ++ 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, 0x080c, ++ 0x1bba, 0x2009, 0x8030, 0x080c, 0x9265, 0x0005, 0x6010, 0x00b6, ++ 0x2058, 0xbca0, 0x00be, 0x2c00, 0x080c, 0xae94, 0x080c, 0xcf6a, ++ 0x6003, 0x0007, 0x0005, 0x00d6, 0x0096, 0x00f6, 0x2079, 0x1800, ++ 0x7a90, 0x6014, 0x2048, 0xa87c, 0xd0ec, 0x1110, 0x9290, 0x0018, ++ 0xac78, 0xc4fc, 0x0046, 0xa8e0, 0x9005, 0x1140, 0xa8dc, 0x921a, ++ 0x0140, 0x0220, 0xa87b, 0x0007, 0x2010, 0x0028, 0xa87b, 0x0015, ++ 0x0010, 0xa87b, 0x0000, 0x8214, 0xa883, 0x0000, 0xaa02, 0x0006, ++ 0x0016, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2400, 0x9005, ++ 0x1108, 0x009a, 0x2100, 0x9086, 0x0015, 0x1118, 0x2001, 0x0001, ++ 0x0038, 0x2100, 0x9086, 0x0016, 0x0118, 0x2001, 0x0001, 0x002a, ++ 0x94a4, 0x0007, 0x8423, 0x9405, 0x0002, 0xadba, 0xadba, 0xadb5, ++ 0xadb8, 0xadba, 0xadb2, 0xada5, 0xada5, 0xada5, 0xada5, 0xada5, ++ 0xada5, 0xada5, 0xada5, 0xada5, 0xada5, 0x00fe, 0x00ee, 0x00de, ++ 0x00ce, 0x002e, 0x001e, 0x000e, 0x004e, 0x00fe, 0x009e, 0x00de, ++ 0x080c, 0x0d7d, 0x080c, 0xb84f, 0x0028, 0x080c, 0xb934, 0x0010, ++ 0x080c, 0xba2a, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e, ++ 0x2c00, 0xa896, 0x000e, 0x080c, 0xaf52, 0x0530, 0xa804, 0xa80e, ++ 0x00a6, 0x2050, 0xb100, 0x00ae, 0x8006, 0x8006, 0x8007, 0x90bc, ++ 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xaacc, 0xabd0, 0xacd4, ++ 0xadd8, 0x2031, 0x0000, 0x2041, 0x1298, 0x080c, 0xb112, 0x0160, ++ 0x000e, 0x9005, 0x0120, 0x00fe, 0x009e, 0x00de, 0x0005, 0x00fe, ++ 0x009e, 0x00de, 0x0804, 0xabed, 0x2001, 0x002c, 0x900e, 0x080c, ++ 0xafb8, 0x0c70, 0x91b6, 0x0015, 0x0170, 0x91b6, 0x0016, 0x0158, ++ 0x91b2, 0x0047, 0x0a0c, 0x0d7d, 0x91b2, 0x0050, 0x1a0c, 0x0d7d, ++ 0x9182, 0x0047, 0x0042, 0x080c, 0xaaa8, 0x0120, 0x9086, 0x0002, ++ 0x0904, 0xad53, 0x0005, 0xae14, 0xae14, 0xae16, 0xae48, 0xae14, ++ 0xae14, 0xae14, 0xae14, 0xae5b, 0x080c, 0x0d7d, 0x00d6, 0x0016, ++ 0x0096, 0x6003, 0x0004, 0x6114, 0x2148, 0xa87c, 0xd0fc, 0x01c0, ++ 0xa878, 0xc0fc, 0x9005, 0x1158, 0xa894, 0x9005, 0x0140, 0x2001, ++ 0x0000, 0x900e, 0x080c, 0xafb8, 0x080c, 0xabed, 0x00a8, 0x6003, ++ 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae, 0xa8b2, 0x0c78, ++ 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae, 0xa8a8, 0xa8b2, ++ 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e, 0x00de, 0x0005, ++ 0x080c, 0x963b, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xc838, ++ 0x0120, 0xa87b, 0x0006, 0x080c, 0x6d80, 0x009e, 0x00de, 0x080c, ++ 0xabed, 0x0804, 0x96a0, 0x080c, 0x963b, 0x080c, 0x31e7, 0x080c, ++ 0xcf67, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c, 0xc838, 0x0120, ++ 0xa87b, 0x0029, 0x080c, 0x6d80, 0x009e, 0x00de, 0x080c, 0xabed, ++ 0x0804, 0x96a0, 0x9182, 0x0047, 0x0002, 0xae82, 0xae84, 0xae82, ++ 0xae82, 0xae82, 0xae82, 0xae82, 0xae82, 0xae82, 0xae82, 0xae82, ++ 0xae82, 0xae84, 0x080c, 0x0d7d, 0x00d6, 0x0096, 0x601f, 0x0000, ++ 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000, 0x080c, 0x6d80, ++ 0x009e, 0x00de, 0x0804, 0xabed, 0x0026, 0x0036, 0x0056, 0x0066, ++ 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x103a, 0x000e, 0x090c, ++ 0x0d7d, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, 0x21a0, 0x900e, ++ 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800, 0x7990, 0x9188, ++ 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950, 0x00a6, 0x2001, ++ 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001, 0x9182, 0x0034, ++ 0x1228, 0x2011, 0x001f, 0x080c, 0xc40b, 0x04c0, 0x2130, 0x2009, ++ 0x0034, 0x2011, 0x001f, 0x080c, 0xc40b, 0x96b2, 0x0034, 0xb004, ++ 0x904d, 0x0110, 0x080c, 0x0fec, 0x080c, 0x103a, 0x01d0, 0x8528, ++ 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, ++ 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xc40b, 0x00b8, 0x96b2, ++ 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, 0x080c, 0xc40b, ++ 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, ++ 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048, 0x2001, 0x0205, ++ 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050, 0xb566, 0x2a48, ++ 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x6d80, 0x000e, 0x2048, ++ 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e, 0x005e, 0x003e, ++ 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006, 0x080c, 0x103a, ++ 0x000e, 0x090c, 0x0d7d, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019, ++ 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66, 0xa87a, 0x2079, ++ 0x1800, 0x7990, 0x810c, 0x9188, 0x000c, 0x9182, 0x001a, 0x0210, ++ 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76, 0x2e98, 0xa85c, ++ 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, ++ 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x6d80, 0x009e, 0x00fe, ++ 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096, 0x0016, 0x2001, ++ 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e, 0x2079, 0x0200, ++ 0x2e98, 0xa87c, 0xd0ec, 0x0118, 0x9e80, 0x000c, 0x2098, 0x2021, ++ 0x003e, 0x901e, 0x9282, 0x0020, 0x0218, 0x2011, 0x0020, 0x2018, ++ 0x9486, 0x003e, 0x1170, 0x0096, 0x080c, 0x103a, 0x2900, 0x009e, ++ 0x05c0, 0xa806, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, ++ 0x20a0, 0x3300, 0x908e, 0x0260, 0x0140, 0x2009, 0x0280, 0x9102, ++ 0x920a, 0x0218, 0x2010, 0x2100, 0x9318, 0x2200, 0x9402, 0x1228, ++ 0x2400, 0x9202, 0x2410, 0x9318, 0x9006, 0x2020, 0x22a8, 0xa800, ++ 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003, 0x83ff, 0x0180, 0x3300, ++ 0x9086, 0x0280, 0x1130, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, ++ 0x2e98, 0x2310, 0x84ff, 0x0904, 0xaf67, 0x0804, 0xaf69, 0x9085, ++ 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe, 0x00de, 0x001e, 0x0005, ++ 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, 0x080c, ++ 0x6d74, 0x009e, 0x003e, 0x00de, 0x0005, 0x91b6, 0x0015, 0x1118, ++ 0x080c, 0xabed, 0x0030, 0x91b6, 0x0016, 0x190c, 0x0d7d, 0x080c, ++ 0xabed, 0x0005, 0x20a9, 0x000e, 0x20e1, 0x0000, 0x2e98, 0x6014, ++ 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x20a0, 0x009e, 0x4003, ++ 0x0136, 0x9080, 0x001b, 0x2011, 0x0006, 0x20a9, 0x0001, 0x3418, ++ 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318, 0x2398, 0x8211, 0x1db8, ++ 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318, 0x8318, 0x2398, 0x4003, ++ 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8, 0x0096, 0x080c, 0xc838, ++ 0x0130, 0x6014, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0x009e, ++ 0x0804, 0xabed, 0x0096, 0x00d6, 0x0036, 0x7330, 0x9386, 0x0200, ++ 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8d7, 0x0000, 0x00be, 0x6014, ++ 0x9005, 0x0130, 0x2048, 0xa807, 0x0000, 0xa867, 0x0103, 0xab32, ++ 0x080c, 0xabed, 0x003e, 0x00de, 0x009e, 0x0005, 0x0011, 0x1d48, ++ 0x0cc8, 0x0006, 0x0016, 0x080c, 0xcf52, 0x0188, 0x6014, 0x9005, ++ 0x1170, 0x600b, 0x0003, 0x601b, 0x0000, 0x604b, 0x0000, 0x2009, ++ 0x0022, 0x080c, 0xb3f9, 0x9006, 0x001e, 0x000e, 0x0005, 0x9085, ++ 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9, 0x0014, 0x9e80, 0x000c, ++ 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048, 0xa860, 0x20e8, 0xa85c, ++ 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0001, ++ 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003, 0x20a9, 0x000a, 0xa804, ++ 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, ++ 0x2001, 0x0205, 0x2003, 0x0002, 0x2099, 0x0260, 0x20a9, 0x0020, ++ 0x4003, 0x2003, 0x0000, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, ++ 0x0103, 0x080c, 0xabed, 0x001e, 0x009e, 0x0005, 0x0096, 0x0016, ++ 0x900e, 0x7030, 0x9086, 0x0100, 0x0140, 0x7038, 0x9084, 0x00ff, ++ 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004, 0x9080, 0x0004, 0x9108, ++ 0x810b, 0x2011, 0x0002, 0x2019, 0x000c, 0x6014, 0x2048, 0x080c, ++ 0xc40b, 0x080c, 0xc838, 0x0140, 0x6014, 0x2048, 0xa807, 0x0000, ++ 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0xabed, 0x001e, 0x009e, ++ 0x0005, 0x0016, 0x2009, 0x0000, 0x7030, 0x9086, 0x0200, 0x0110, ++ 0x2009, 0x0001, 0x0096, 0x6014, 0x904d, 0x090c, 0x0d7d, 0xa97a, ++ 0x080c, 0x6d80, 0x009e, 0x080c, 0xabed, 0x001e, 0x0005, 0x0016, ++ 0x0096, 0x7030, 0x9086, 0x0100, 0x1118, 0x2009, 0x0004, 0x0010, ++ 0x7034, 0x800c, 0x810b, 0x2011, 0x000c, 0x2019, 0x000c, 0x6014, ++ 0x2048, 0xa804, 0x0096, 0x9005, 0x0108, 0x2048, 0x080c, 0xc40b, ++ 0x009e, 0x080c, 0xc838, 0x0148, 0xa804, 0x9005, 0x1158, 0xa807, ++ 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c, 0xabed, 0x009e, ++ 0x001e, 0x0005, 0x0086, 0x2040, 0xa030, 0x8007, 0x9086, 0x0100, ++ 0x1118, 0x080c, 0xb5b5, 0x00e0, 0xa034, 0x8007, 0x800c, 0x8806, ++ 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x000c, ++ 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0xaaa0, 0xab9c, ++ 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x127e, 0x0019, 0x0d08, ++ 0x008e, 0x0898, 0x0096, 0x0006, 0x080c, 0x103a, 0x000e, 0x01b0, ++ 0xa8ab, 0x0dcb, 0xa876, 0x000e, 0xa8a2, 0x0006, 0xae6a, 0x2800, ++ 0xa89e, 0xa97a, 0xaf72, 0xaa8e, 0xab92, 0xac96, 0xad9a, 0x0086, ++ 0x2940, 0x080c, 0x1124, 0x008e, 0x9085, 0x0001, 0x009e, 0x0005, ++ 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, ++ 0x2258, 0xba10, 0x00be, 0x9206, 0x1520, 0x700c, 0x6210, 0x00b6, ++ 0x2258, 0xba14, 0x00be, 0x9206, 0x11e0, 0x604b, 0x0000, 0x2c68, ++ 0x0016, 0x2009, 0x0035, 0x080c, 0xceca, 0x001e, 0x1158, 0x622c, ++ 0x2268, 0x2071, 0x026c, 0x6b20, 0x9386, 0x0003, 0x0130, 0x9386, ++ 0x0006, 0x0128, 0x080c, 0xabed, 0x0020, 0x0039, 0x0010, 0x080c, ++ 0xb22e, 0x002e, 0x00de, 0x00ee, 0x0005, 0x0096, 0x6814, 0x2048, ++ 0x9186, 0x0015, 0x0904, 0xb20d, 0x918e, 0x0016, 0x1904, 0xb22c, ++ 0x700c, 0x908c, 0xff00, 0x9186, 0x1700, 0x0120, 0x9186, 0x0300, ++ 0x1904, 0xb1e7, 0x89ff, 0x1138, 0x6800, 0x9086, 0x000f, 0x0904, ++ 0xb1c9, 0x0804, 0xb22a, 0x6808, 0x9086, 0xffff, 0x1904, 0xb20f, ++ 0xa87c, 0x9084, 0x0060, 0x9086, 0x0020, 0x1128, 0xa83c, 0xa940, ++ 0x9105, 0x1904, 0xb20f, 0x6824, 0xd0b4, 0x1904, 0xb20f, 0x080c, ++ 0xca27, 0x6864, 0xa882, 0xa87c, 0xc0dc, 0xc0f4, 0xc0d4, 0xa87e, ++ 0x0026, 0x900e, 0x6a18, 0x2001, 0x000a, 0x080c, 0x9166, 0xa884, ++ 0x920a, 0x0208, 0x8011, 0xaa86, 0x82ff, 0x002e, 0x1138, 0x00c6, ++ 0x2d60, 0x080c, 0xc55e, 0x00ce, 0x0804, 0xb22a, 0x00c6, 0xa868, ++ 0xd0fc, 0x1118, 0x080c, 0x60bb, 0x0010, 0x080c, 0x64bf, 0x00ce, ++ 0x1904, 0xb20f, 0x00c6, 0x2d60, 0x080c, 0xabed, 0x00ce, 0x0804, ++ 0xb22a, 0x00c6, 0x080c, 0xac5f, 0x0198, 0x6017, 0x0000, 0x6810, ++ 0x6012, 0x080c, 0xcccc, 0x6023, 0x0003, 0x6904, 0x00c6, 0x2d60, ++ 0x080c, 0xabed, 0x00ce, 0x080c, 0xac8c, 0x00ce, 0x0804, 0xb22a, ++ 0x2001, 0x1988, 0x2004, 0x684a, 0x00ce, 0x0804, 0xb22a, 0x7008, ++ 0x9086, 0x000b, 0x11c8, 0x6010, 0x00b6, 0x2058, 0xb900, 0xc1bc, ++ 0xb902, 0x00be, 0x00c6, 0x2d60, 0xa87b, 0x0003, 0x080c, 0xcf0c, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, 0x8020, ++ 0x080c, 0x921e, 0x00ce, 0x0430, 0x700c, 0x9086, 0x2a00, 0x1138, ++ 0x2001, 0x1988, 0x2004, 0x684a, 0x00e8, 0x04c1, 0x00e8, 0x89ff, ++ 0x090c, 0x0d7d, 0x00c6, 0x00d6, 0x2d60, 0xa867, 0x0103, 0xa87b, ++ 0x0003, 0x080c, 0x6b96, 0x080c, 0xca27, 0x080c, 0xac28, 0x0026, ++ 0x6010, 0x00b6, 0x2058, 0xba3c, 0x080c, 0x6750, 0x00be, 0x002e, ++ 0x00de, 0x00ce, 0x080c, 0xabed, 0x009e, 0x0005, 0x9186, 0x0015, ++ 0x1128, 0x2001, 0x1988, 0x2004, 0x684a, 0x0068, 0x918e, 0x0016, ++ 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, 0xe524, 0x080c, 0x88c1, ++ 0x080c, 0xabed, 0x00ce, 0x080c, 0xabed, 0x0005, 0x0026, 0x0036, ++ 0x0046, 0x7228, 0xacb0, 0xabac, 0xd2f4, 0x0130, 0x2001, 0x1988, ++ 0x2004, 0x684a, 0x0804, 0xb2a8, 0x00c6, 0x2d60, 0x080c, 0xc436, ++ 0x00ce, 0x6804, 0x9086, 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, ++ 0x6003, 0x0001, 0x6007, 0x0050, 0x2009, 0x8023, 0x080c, 0x921e, ++ 0x00ce, 0x04f0, 0x6800, 0x9086, 0x000f, 0x01a8, 0x89ff, 0x090c, ++ 0x0d7d, 0x6800, 0x9086, 0x0004, 0x1190, 0xa87c, 0xd0ac, 0x0178, ++ 0xa843, 0x0fff, 0xa83f, 0x0fff, 0xa880, 0xc0fc, 0xa882, 0x2001, ++ 0x0001, 0x6832, 0x0400, 0x2001, 0x0007, 0x6832, 0x00e0, 0xa87c, ++ 0xd0b4, 0x1150, 0xd0ac, 0x0db8, 0x6824, 0xd0f4, 0x1d48, 0xa838, ++ 0xa934, 0x9105, 0x0d80, 0x0c20, 0xd2ec, 0x1d68, 0x7024, 0x9306, ++ 0x1118, 0x7020, 0x9406, 0x0d38, 0x7020, 0x683e, 0x7024, 0x683a, ++ 0x2001, 0x0005, 0x6832, 0x080c, 0xcbb6, 0x080c, 0x96a0, 0x0010, ++ 0x080c, 0xabed, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, ++ 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, ++ 0x00be, 0x9206, 0x1904, 0xb313, 0x700c, 0x6210, 0x00b6, 0x2258, ++ 0xba14, 0x00be, 0x9206, 0x1904, 0xb313, 0x6038, 0x2068, 0x6824, ++ 0xc0dc, 0x6826, 0x6a20, 0x9286, 0x0007, 0x0904, 0xb313, 0x9286, ++ 0x0002, 0x0904, 0xb313, 0x9286, 0x0000, 0x05e8, 0x6808, 0x633c, ++ 0x9306, 0x15c8, 0x2071, 0x026c, 0x9186, 0x0015, 0x0570, 0x918e, ++ 0x0016, 0x1100, 0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, ++ 0x01c0, 0x9186, 0x004c, 0x01a8, 0x9186, 0x004d, 0x0190, 0x9186, ++ 0x004e, 0x0178, 0x9186, 0x0052, 0x0160, 0x6014, 0x0096, 0x2048, ++ 0x080c, 0xc838, 0x090c, 0x0d7d, 0xa87b, 0x0003, 0x009e, 0x080c, ++ 0xcf0c, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, ++ 0x8020, 0x080c, 0x921e, 0x00ce, 0x0030, 0x6038, 0x2070, 0x2001, ++ 0x1988, 0x2004, 0x704a, 0x080c, 0xabed, 0x002e, 0x00de, 0x00ee, ++ 0x0005, 0x00b6, 0x0096, 0x00f6, 0x6014, 0x2048, 0x6010, 0x2058, ++ 0x91b6, 0x0015, 0x0130, 0xba08, 0xbb0c, 0xbc00, 0xc48c, 0xbc02, ++ 0x0460, 0x0096, 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0010, ++ 0x2019, 0x000a, 0x20a9, 0x0004, 0x080c, 0xbbc2, 0x002e, 0x003e, ++ 0x015e, 0x009e, 0x1904, 0xb382, 0x0096, 0x0156, 0x0036, 0x0026, ++ 0x2b48, 0x9e90, 0x0014, 0x2019, 0x0006, 0x20a9, 0x0004, 0x080c, ++ 0xbbc2, 0x002e, 0x003e, 0x015e, 0x009e, 0x15a0, 0x7238, 0xba0a, ++ 0x733c, 0xbb0e, 0xbc00, 0xc48d, 0xbc02, 0xa804, 0x9005, 0x1128, ++ 0x00fe, 0x009e, 0x00be, 0x0804, 0xaffd, 0x0096, 0x2048, 0xaa12, ++ 0xab16, 0xac0a, 0x009e, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, ++ 0x9084, 0xffc0, 0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, ++ 0xaca8, 0xada4, 0x2031, 0x0000, 0x2041, 0x127e, 0x080c, 0xb112, ++ 0x0130, 0x00fe, 0x009e, 0x080c, 0xabed, 0x00be, 0x0005, 0x080c, ++ 0xb5b5, 0x0cb8, 0x2b78, 0x00f6, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x00fe, 0x00c6, 0x080c, 0xab97, 0x2f00, 0x6012, 0x6017, 0x0000, ++ 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, ++ 0x080c, 0x6575, 0x080c, 0x65a1, 0x080c, 0x9225, 0x080c, 0x96a0, ++ 0x00ce, 0x0804, 0xb355, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0d7d, ++ 0x91b2, 0x0040, 0x1a04, 0xb40b, 0x0002, 0xb3f9, 0xb3f9, 0xb3ef, ++ 0xb3f9, 0xb3f9, 0xb3f9, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, ++ 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, ++ 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, ++ 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3f9, 0xb3ed, 0xb3f9, 0xb3f9, ++ 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ef, 0xb3ed, 0xb3ed, ++ 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3f9, ++ 0xb3f9, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, 0xb3ed, ++ 0xb3ed, 0xb3ed, 0xb3f9, 0xb3ed, 0xb3ed, 0x080c, 0x0d7d, 0x0066, ++ 0x00b6, 0x6610, 0x2658, 0xb8d4, 0xc08c, 0xb8d6, 0x00be, 0x006e, ++ 0x0000, 0x6003, 0x0001, 0x6106, 0x9186, 0x0032, 0x0118, 0x080c, ++ 0x9225, 0x0010, 0x080c, 0x921e, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x96a0, 0x012e, 0x0005, 0x2600, 0x0002, 0xb3f9, 0xb3f9, 0xb41f, ++ 0xb3f9, 0xb3f9, 0xb41f, 0xb41f, 0xb41f, 0xb41f, 0xb3f9, 0xb41f, ++ 0xb3f9, 0xb41f, 0xb3f9, 0xb41f, 0xb41f, 0xb41f, 0xb41f, 0x080c, ++ 0x0d7d, 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0d7d, 0x91b6, 0x0013, ++ 0x0904, 0xb4f6, 0x91b6, 0x0027, 0x1904, 0xb4a2, 0x080c, 0x95de, ++ 0x6004, 0x080c, 0xca3c, 0x01b0, 0x080c, 0xca4d, 0x01a8, 0x908e, ++ 0x0021, 0x0904, 0xb49f, 0x908e, 0x0022, 0x1130, 0x080c, 0xb029, ++ 0x0904, 0xb49b, 0x0804, 0xb49c, 0x908e, 0x003d, 0x0904, 0xb49f, ++ 0x0804, 0xb495, 0x080c, 0x321c, 0x2001, 0x0007, 0x080c, 0x6575, ++ 0x6010, 0x00b6, 0x2058, 0xb9a0, 0x00be, 0x080c, 0xb5b5, 0x9186, ++ 0x007e, 0x1148, 0x2001, 0x1837, 0x2014, 0xc285, 0x080c, 0x74e9, ++ 0x1108, 0xc2ad, 0x2202, 0x080c, 0xa896, 0x0036, 0x0026, 0x2019, ++ 0x0028, 0x2110, 0x080c, 0xe630, 0x002e, 0x003e, 0x0016, 0x0026, ++ 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, 0x93a5, 0x0076, 0x903e, ++ 0x080c, 0x9277, 0x6010, 0x00b6, 0x905d, 0x0100, 0x00be, 0x2c08, ++ 0x080c, 0xdfeb, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0xa8b2, ++ 0x080c, 0xcf67, 0x0016, 0x080c, 0xccc4, 0x080c, 0xabed, 0x001e, ++ 0x080c, 0x32fc, 0x080c, 0x96a0, 0x0030, 0x080c, 0xccc4, 0x080c, ++ 0xabed, 0x080c, 0x96a0, 0x0005, 0x080c, 0xb5b5, 0x0cb0, 0x080c, ++ 0xb5f1, 0x0c98, 0x9186, 0x0015, 0x0118, 0x9186, 0x0016, 0x1140, ++ 0x080c, 0xaaa8, 0x0d80, 0x9086, 0x0002, 0x0904, 0xb5fc, 0x0c58, ++ 0x9186, 0x0014, 0x1d40, 0x080c, 0x95de, 0x6004, 0x908e, 0x0022, ++ 0x1118, 0x080c, 0xb029, 0x09f8, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x080c, 0xca3c, 0x1190, 0x080c, 0x321c, 0x6010, 0x00b6, 0x2058, ++ 0xb9a0, 0x00be, 0x080c, 0xb5b5, 0x9186, 0x007e, 0x1128, 0x2001, ++ 0x1837, 0x200c, 0xc185, 0x2102, 0x0800, 0x080c, 0xca4d, 0x1120, ++ 0x080c, 0xb5b5, 0x0804, 0xb495, 0x6004, 0x908e, 0x0032, 0x1160, ++ 0x00e6, 0x00f6, 0x2071, 0x189e, 0x2079, 0x0000, 0x080c, 0x35a5, ++ 0x00fe, 0x00ee, 0x0804, 0xb495, 0x6004, 0x908e, 0x0021, 0x0d40, ++ 0x908e, 0x0022, 0x090c, 0xb5b5, 0x0804, 0xb495, 0x90b2, 0x0040, ++ 0x1a04, 0xb595, 0x2008, 0x0002, 0xb53e, 0xb53f, 0xb542, 0xb545, ++ 0xb548, 0xb54b, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, ++ 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, ++ 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, ++ 0xb53c, 0xb53c, 0xb54e, 0xb557, 0xb53c, 0xb558, 0xb557, 0xb53c, ++ 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb557, 0xb557, 0xb53c, 0xb53c, ++ 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb53c, 0xb580, 0xb557, ++ 0xb53c, 0xb553, 0xb53c, 0xb53c, 0xb53c, 0xb554, 0xb53c, 0xb53c, ++ 0xb53c, 0xb557, 0xb57b, 0xb53c, 0x080c, 0x0d7d, 0x00c0, 0x2001, ++ 0x000b, 0x00e8, 0x2001, 0x0003, 0x00d0, 0x2001, 0x0005, 0x00b8, ++ 0x2001, 0x0001, 0x00a0, 0x2001, 0x0009, 0x0088, 0x6003, 0x0005, ++ 0x080c, 0x96a0, 0x0058, 0x0018, 0x0010, 0x080c, 0x6575, 0x04b8, ++ 0x080c, 0xcf6a, 0x6003, 0x0004, 0x080c, 0x96a0, 0x0005, 0x080c, ++ 0x6575, 0x6003, 0x0002, 0x0036, 0x2019, 0x1852, 0x2304, 0x9084, ++ 0xff00, 0x1120, 0x2001, 0x1986, 0x201c, 0x0040, 0x8007, 0x909a, ++ 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, 0x9318, 0x631a, 0x003e, ++ 0x080c, 0x96a0, 0x0c18, 0x080c, 0xccc4, 0x080c, 0xabed, 0x08f0, ++ 0x00e6, 0x00f6, 0x2071, 0x189e, 0x2079, 0x0000, 0x080c, 0x35a5, ++ 0x00fe, 0x00ee, 0x080c, 0x95de, 0x080c, 0xabed, 0x0878, 0x6003, ++ 0x0002, 0x080c, 0xcf6a, 0x0804, 0x96a0, 0x2600, 0x2008, 0x0002, ++ 0xb5ac, 0xb58f, 0xb5aa, 0xb58f, 0xb58f, 0xb5aa, 0xb5aa, 0xb5aa, ++ 0xb5aa, 0xb58f, 0xb5aa, 0xb58f, 0xb5aa, 0xb58f, 0xb5aa, 0xb5aa, ++ 0xb5aa, 0xb5aa, 0x080c, 0x0d7d, 0x0096, 0x6014, 0x2048, 0x080c, ++ 0x6d80, 0x009e, 0x080c, 0xabed, 0x0005, 0x00e6, 0x0096, 0x0026, ++ 0x0016, 0x080c, 0xc838, 0x0568, 0x6014, 0x2048, 0xa864, 0x9086, ++ 0x0139, 0x11a8, 0xa894, 0x9086, 0x0056, 0x1148, 0x080c, 0x547b, ++ 0x0130, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x0028, 0x2001, ++ 0x0030, 0x900e, 0x2011, 0x4005, 0x080c, 0xce31, 0x0090, 0xa868, ++ 0xd0fc, 0x0178, 0xa807, 0x0000, 0x0016, 0x6004, 0x908e, 0x0021, ++ 0x0168, 0x908e, 0x003d, 0x0150, 0x001e, 0xa867, 0x0103, 0xa833, ++ 0x0100, 0x001e, 0x002e, 0x009e, 0x00ee, 0x0005, 0x001e, 0x0009, ++ 0x0cc0, 0x0096, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, ++ 0xa823, 0x8001, 0x009e, 0x0005, 0x00b6, 0x6610, 0x2658, 0xb804, ++ 0x9084, 0x00ff, 0x90b2, 0x000c, 0x1a0c, 0x0d7d, 0x6604, 0x96b6, ++ 0x004d, 0x1120, 0x080c, 0xcd50, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x0043, 0x1120, 0x080c, 0xcd99, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x004b, 0x1120, 0x080c, 0xcdc5, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x0033, 0x1120, 0x080c, 0xcce6, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x0028, 0x1120, 0x080c, 0xca86, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x0029, 0x1120, 0x080c, 0xcac7, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x001f, 0x1120, 0x080c, 0xafd2, 0x0804, 0xb681, 0x6604, 0x96b6, ++ 0x0000, 0x1118, 0x080c, 0xb319, 0x04e0, 0x6604, 0x96b6, 0x0022, ++ 0x1118, 0x080c, 0xb00a, 0x04a8, 0x6604, 0x96b6, 0x0035, 0x1118, ++ 0x080c, 0xb130, 0x0470, 0x6604, 0x96b6, 0x0039, 0x1118, 0x080c, ++ 0xb2ae, 0x0438, 0x6604, 0x96b6, 0x003d, 0x1118, 0x080c, 0xb042, ++ 0x0400, 0x6604, 0x96b6, 0x0044, 0x1118, 0x080c, 0xb07e, 0x00c8, ++ 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c, 0xb0bf, 0x0090, 0x6604, ++ 0x96b6, 0x0041, 0x1118, 0x080c, 0xb0a9, 0x0058, 0x91b6, 0x0015, ++ 0x1110, 0x0063, 0x0030, 0x91b6, 0x0016, 0x1128, 0x00be, 0x0804, ++ 0xb8db, 0x00be, 0x0005, 0x080c, 0xaca9, 0x0cd8, 0xb69e, 0xb6a1, ++ 0xb69e, 0xb6e8, 0xb69e, 0xb84f, 0xb8e8, 0xb69e, 0xb69e, 0xb8b1, ++ 0xb69e, 0xb8c7, 0x0096, 0x601f, 0x0000, 0x6014, 0x2048, 0xa800, ++ 0x2048, 0xa867, 0x0103, 0x009e, 0x0804, 0xabed, 0xa001, 0xa001, ++ 0x0005, 0x00e6, 0x2071, 0x1800, 0x7090, 0x9086, 0x0074, 0x1540, ++ 0x080c, 0xdfbc, 0x11b0, 0x6010, 0x00b6, 0x2058, 0x7030, 0xd08c, ++ 0x0128, 0xb800, 0xd0bc, 0x0110, 0xc0c5, 0xb802, 0x00f9, 0x00be, ++ 0x2001, 0x0006, 0x080c, 0x6575, 0x080c, 0x321c, 0x080c, 0xabed, ++ 0x0098, 0x2001, 0x000a, 0x080c, 0x6575, 0x080c, 0x321c, 0x6003, ++ 0x0001, 0x6007, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0020, ++ 0x2001, 0x0001, 0x080c, 0xb81f, 0x00ee, 0x0005, 0x00d6, 0xb800, ++ 0xd084, 0x0160, 0x9006, 0x080c, 0x6561, 0x2069, 0x1847, 0x6804, ++ 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x65a1, 0x00de, 0x0005, ++ 0x00b6, 0x0096, 0x00d6, 0x2011, 0x1824, 0x2204, 0x9086, 0x0074, ++ 0x1904, 0xb7f6, 0x6010, 0x2058, 0xbaa0, 0x9286, 0x007e, 0x1120, ++ 0x080c, 0xba35, 0x0804, 0xb75a, 0x080c, 0xba2a, 0x6010, 0x2058, ++ 0xbaa0, 0x9286, 0x0080, 0x1510, 0x6014, 0x9005, 0x01a8, 0x2048, ++ 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, ++ 0x900e, 0x2011, 0x4000, 0x080c, 0xce31, 0x0030, 0xa807, 0x0000, ++ 0xa867, 0x0103, 0xa833, 0x0200, 0x2001, 0x0006, 0x080c, 0x6575, ++ 0x080c, 0x321c, 0x080c, 0xabed, 0x0804, 0xb7f9, 0x080c, 0xb807, ++ 0x6014, 0x9005, 0x0190, 0x2048, 0xa868, 0xd0f4, 0x01e8, 0xa864, ++ 0x9084, 0x00ff, 0x9086, 0x0039, 0x1d08, 0x2001, 0x0000, 0x900e, ++ 0x2011, 0x4000, 0x080c, 0xce31, 0x08f8, 0x080c, 0xb7fd, 0x0160, ++ 0x9006, 0x080c, 0x6561, 0x2001, 0x0004, 0x080c, 0x65a1, 0x2001, ++ 0x0007, 0x080c, 0x6575, 0x08a0, 0x2001, 0x0004, 0x080c, 0x6575, ++ 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x9225, 0x080c, 0x96a0, ++ 0x0804, 0xb7f9, 0xb85c, 0xd0e4, 0x01d8, 0x080c, 0xcc5e, 0x080c, ++ 0x74e9, 0x0118, 0xd0dc, 0x1904, 0xb71c, 0x2011, 0x1837, 0x2204, ++ 0xc0ad, 0x2012, 0x2001, 0x196d, 0x2004, 0x00f6, 0x2079, 0x0100, ++ 0x78e3, 0x0000, 0x080c, 0x266f, 0x78e2, 0x00fe, 0x0804, 0xb71c, ++ 0x080c, 0xcc9f, 0x2011, 0x1837, 0x2204, 0xc0a5, 0x2012, 0x0006, ++ 0x080c, 0xe14c, 0x000e, 0x1904, 0xb71c, 0xc0b5, 0x2012, 0x2001, ++ 0x0006, 0x080c, 0x6575, 0x9006, 0x080c, 0x6561, 0x00c6, 0x2001, ++ 0x180f, 0x2004, 0xd09c, 0x0520, 0x00f6, 0x2079, 0x0100, 0x00e6, ++ 0x2071, 0x1800, 0x700c, 0x9084, 0x00ff, 0x78e6, 0x707e, 0x7010, ++ 0x78ea, 0x7082, 0x908c, 0x00ff, 0x00ee, 0x780c, 0xc0b5, 0x780e, ++ 0x00fe, 0x080c, 0x2644, 0x00f6, 0x2100, 0x900e, 0x080c, 0x25fb, ++ 0x795e, 0x00fe, 0x9186, 0x0081, 0x01d8, 0x2009, 0x0081, 0x00c8, ++ 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, ++ 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x2644, 0x00f6, 0x2079, ++ 0x1800, 0x7982, 0x2100, 0x900e, 0x080c, 0x25fb, 0x795e, 0x00fe, ++ 0x8108, 0x080c, 0x65c4, 0x2b00, 0x00ce, 0x1904, 0xb71c, 0x6012, ++ 0x2009, 0x180f, 0x210c, 0xd19c, 0x0150, 0x2009, 0x027c, 0x210c, ++ 0x918c, 0x00ff, 0xb912, 0x2009, 0x027d, 0x210c, 0xb916, 0x2001, ++ 0x0002, 0x080c, 0x6575, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, ++ 0x0002, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0018, 0x2001, 0x0001, ++ 0x0431, 0x00de, 0x009e, 0x00be, 0x0005, 0x2001, 0x1810, 0x2004, ++ 0xd0a4, 0x0120, 0x2001, 0x1848, 0x2004, 0xd0ac, 0x0005, 0x00e6, ++ 0x080c, 0xe689, 0x0190, 0x2071, 0x0260, 0x7108, 0x720c, 0x918c, ++ 0x00ff, 0x1118, 0x9284, 0xff00, 0x0140, 0x6010, 0x2058, 0xb8a0, ++ 0x9084, 0xff80, 0x1110, 0xb912, 0xba16, 0x00ee, 0x0005, 0x2030, ++ 0x9005, 0x0158, 0x2001, 0x0007, 0x080c, 0x6575, 0x080c, 0x56ee, ++ 0x1120, 0x2001, 0x0007, 0x080c, 0x65a1, 0x2600, 0x9005, 0x11b0, ++ 0x6014, 0x0096, 0x2048, 0xa868, 0x009e, 0xd0fc, 0x1178, 0x0036, ++ 0x0046, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0004, ++ 0x2011, 0x8014, 0x080c, 0x4b07, 0x004e, 0x003e, 0x080c, 0x321c, ++ 0x6020, 0x9086, 0x000a, 0x1108, 0x0005, 0x0804, 0xabed, 0x00b6, ++ 0x00e6, 0x0026, 0x0016, 0x2071, 0x1800, 0x7090, 0x9086, 0x0014, ++ 0x1904, 0xb8a7, 0x080c, 0x56ee, 0x1170, 0x6014, 0x9005, 0x1158, ++ 0x0036, 0x0046, 0x6010, 0x2058, 0xbba0, 0x2021, 0x0006, 0x080c, ++ 0x4cbe, 0x004e, 0x003e, 0x00d6, 0x6010, 0x2058, 0x080c, 0x66c0, ++ 0x080c, 0xb6d6, 0x00de, 0x080c, 0xbafb, 0x1588, 0x6010, 0x2058, ++ 0xb890, 0x9005, 0x0560, 0x2001, 0x0006, 0x080c, 0x6575, 0x0096, ++ 0x6014, 0x904d, 0x01d0, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, ++ 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xce31, ++ 0x0060, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0029, 0x0130, 0xa807, ++ 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, 0x009e, 0x080c, 0x321c, ++ 0x6020, 0x9086, 0x000a, 0x0140, 0x080c, 0xabed, 0x0028, 0x080c, ++ 0xb5b5, 0x9006, 0x080c, 0xb81f, 0x001e, 0x002e, 0x00ee, 0x00be, ++ 0x0005, 0x2011, 0x1824, 0x2204, 0x9086, 0x0014, 0x1160, 0x2001, ++ 0x0002, 0x080c, 0x6575, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, ++ 0x9225, 0x0804, 0x96a0, 0x2001, 0x0001, 0x0804, 0xb81f, 0x2030, ++ 0x2011, 0x1824, 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, 0x000b, ++ 0x1120, 0x2001, 0x0007, 0x080c, 0x6575, 0x0804, 0xabed, 0x2001, ++ 0x0001, 0x0804, 0xb81f, 0x0002, 0xb69e, 0xb8f3, 0xb69e, 0xb934, ++ 0xb69e, 0xb9e1, 0xb8e8, 0xb69e, 0xb69e, 0xb9f5, 0xb69e, 0xba07, ++ 0x6604, 0x9686, 0x0003, 0x0904, 0xb84f, 0x96b6, 0x001e, 0x1110, ++ 0x080c, 0xabed, 0x0005, 0x00b6, 0x00d6, 0x00c6, 0x080c, 0xba19, ++ 0x11a0, 0x9006, 0x080c, 0x6561, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x2001, 0x0002, 0x080c, 0x6575, 0x6003, 0x0001, 0x6007, 0x0002, ++ 0x080c, 0x9225, 0x080c, 0x96a0, 0x0418, 0x2009, 0x026e, 0x2104, ++ 0x9086, 0x0009, 0x1160, 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, ++ 0x9005, 0x0170, 0x8001, 0xb842, 0x601b, 0x000a, 0x0088, 0x2009, ++ 0x026f, 0x2104, 0x9084, 0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, ++ 0x080c, 0x31e7, 0x080c, 0xcf67, 0x2001, 0x0001, 0x080c, 0xb81f, ++ 0x00ce, 0x00de, 0x00be, 0x0005, 0x0096, 0x00b6, 0x0026, 0x9016, ++ 0x080c, 0xba27, 0x00d6, 0x2069, 0x197c, 0x2d04, 0x9005, 0x0168, ++ 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1138, 0x2069, 0x1820, ++ 0x2d04, 0x8000, 0x206a, 0x00de, 0x0010, 0x00de, 0x0088, 0x9006, ++ 0x080c, 0x6561, 0x2001, 0x0002, 0x080c, 0x6575, 0x6003, 0x0001, ++ 0x6007, 0x0002, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0804, 0xb9b1, ++ 0x080c, 0xc838, 0x01b0, 0x6014, 0x2048, 0xa864, 0x2010, 0x9086, ++ 0x0139, 0x1138, 0x6007, 0x0016, 0x2001, 0x0002, 0x080c, 0xce8b, ++ 0x00b0, 0x6014, 0x2048, 0xa864, 0xd0fc, 0x0118, 0x2001, 0x0001, ++ 0x0ca8, 0x2001, 0x180e, 0x2004, 0xd0dc, 0x0148, 0x6010, 0x2058, ++ 0xb840, 0x9084, 0x00ff, 0x9005, 0x1110, 0x9006, 0x0c38, 0x080c, ++ 0xb5b5, 0x2009, 0x026e, 0x2134, 0x96b4, 0x00ff, 0x9686, 0x0005, ++ 0x0520, 0x9686, 0x000b, 0x01c8, 0x2009, 0x026f, 0x2104, 0x9084, ++ 0xff00, 0x1118, 0x9686, 0x0009, 0x01c0, 0x9086, 0x1900, 0x1168, ++ 0x9686, 0x0009, 0x0190, 0x2001, 0x0004, 0x080c, 0x6575, 0x2001, ++ 0x0028, 0x601a, 0x6007, 0x0052, 0x0020, 0x2001, 0x0001, 0x080c, ++ 0xb81f, 0x002e, 0x00be, 0x009e, 0x0005, 0x9286, 0x0139, 0x0160, ++ 0x6014, 0x2048, 0x080c, 0xc838, 0x0140, 0xa864, 0x9086, 0x0139, ++ 0x0118, 0xa868, 0xd0fc, 0x0108, 0x0c40, 0x6010, 0x2058, 0xb840, ++ 0x9084, 0x00ff, 0x9005, 0x0138, 0x8001, 0xb842, 0x601b, 0x000a, ++ 0x6007, 0x0016, 0x08f0, 0xb8a0, 0x9086, 0x007e, 0x1138, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x5fbc, 0x00ee, 0x0010, 0x080c, 0x31e7, ++ 0x0860, 0x080c, 0xba27, 0x1160, 0x2001, 0x0004, 0x080c, 0x6575, ++ 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, 0x9225, 0x0804, 0x96a0, ++ 0x080c, 0xb5b5, 0x9006, 0x0804, 0xb81f, 0x0489, 0x1160, 0x2001, ++ 0x0008, 0x080c, 0x6575, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, ++ 0x9225, 0x0804, 0x96a0, 0x2001, 0x0001, 0x0804, 0xb81f, 0x00f9, ++ 0x1160, 0x2001, 0x000a, 0x080c, 0x6575, 0x6003, 0x0001, 0x6007, ++ 0x0001, 0x080c, 0x9225, 0x0804, 0x96a0, 0x2001, 0x0001, 0x0804, ++ 0xb81f, 0x2009, 0x026e, 0x2104, 0x9086, 0x0003, 0x1138, 0x2009, ++ 0x026f, 0x2104, 0x9084, 0xff00, 0x9086, 0x2a00, 0x0005, 0x9085, ++ 0x0001, 0x0005, 0x00b6, 0x00c6, 0x0016, 0x6110, 0x2158, 0x080c, ++ 0x6634, 0x001e, 0x00ce, 0x00be, 0x0005, 0x00b6, 0x00f6, 0x00e6, ++ 0x00d6, 0x0036, 0x0016, 0x6010, 0x2058, 0x2009, 0x1837, 0x2104, ++ 0x9085, 0x0003, 0x200a, 0x080c, 0xbacd, 0x0560, 0x2009, 0x1837, ++ 0x2104, 0xc0cd, 0x200a, 0x080c, 0x6a67, 0x0158, 0x9006, 0x2020, ++ 0x2009, 0x002a, 0x080c, 0xe2c9, 0x2001, 0x180c, 0x200c, 0xc195, ++ 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x080c, 0x31a6, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x2fb2, 0x00ee, 0x00c6, 0x0156, 0x20a9, ++ 0x0781, 0x2009, 0x007f, 0x080c, 0x32fc, 0x8108, 0x1f04, 0xba6b, ++ 0x015e, 0x00ce, 0x080c, 0xba2a, 0x2071, 0x0260, 0x2079, 0x0200, ++ 0x7817, 0x0001, 0x2001, 0x1837, 0x200c, 0xc1c5, 0x7018, 0xd0fc, ++ 0x0110, 0xd0dc, 0x0118, 0x7038, 0xd0dc, 0x1108, 0xc1c4, 0x7817, ++ 0x0000, 0x2001, 0x1837, 0x2102, 0x2079, 0x0100, 0x2e04, 0x9084, ++ 0x00ff, 0x2069, 0x181f, 0x206a, 0x78e6, 0x0006, 0x8e70, 0x2e04, ++ 0x2069, 0x1820, 0x206a, 0x78ea, 0x7832, 0x7836, 0x2010, 0x9084, ++ 0xff00, 0x001e, 0x9105, 0x2009, 0x182c, 0x200a, 0x2200, 0x9084, ++ 0x00ff, 0x2008, 0x080c, 0x2644, 0x080c, 0x74e9, 0x0170, 0x2071, ++ 0x0260, 0x2069, 0x1982, 0x7048, 0x206a, 0x704c, 0x6806, 0x7050, ++ 0x680a, 0x7054, 0x680e, 0x080c, 0xcc5e, 0x0040, 0x2001, 0x0006, ++ 0x080c, 0x6575, 0x080c, 0x321c, 0x080c, 0xabed, 0x001e, 0x003e, ++ 0x00de, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x0096, 0x0026, 0x0036, ++ 0x00e6, 0x0156, 0x2019, 0x182c, 0x231c, 0x83ff, 0x01f0, 0x2071, ++ 0x0260, 0x7200, 0x9294, 0x00ff, 0x7004, 0x9084, 0xff00, 0x9205, ++ 0x9306, 0x1198, 0x2011, 0x0276, 0x20a9, 0x0004, 0x2b48, 0x2019, ++ 0x000a, 0x080c, 0xbbc2, 0x1148, 0x2011, 0x027a, 0x20a9, 0x0004, ++ 0x2019, 0x0006, 0x080c, 0xbbc2, 0x1100, 0x015e, 0x00ee, 0x003e, ++ 0x002e, 0x009e, 0x0005, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9086, ++ 0x0014, 0x11a8, 0x7038, 0x9086, 0x0800, 0x1188, 0x703c, 0xd0ec, ++ 0x0160, 0x9084, 0x0f00, 0x9086, 0x0100, 0x1138, 0x7054, 0xd0a4, ++ 0x1110, 0xd0ac, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ee, ++ 0x0005, 0x00e6, 0x0096, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, ++ 0x0006, 0x0126, 0x2091, 0x8000, 0x2029, 0x19f3, 0x252c, 0x2021, ++ 0x19fa, 0x2424, 0x2061, 0x1ddc, 0x2071, 0x1800, 0x7254, 0x7074, ++ 0x9202, 0x1a04, 0xbb8e, 0x080c, 0x8b90, 0x0904, 0xbb87, 0x080c, ++ 0xe2fa, 0x0904, 0xbb87, 0x6720, 0x9786, 0x0007, 0x0904, 0xbb87, ++ 0x2500, 0x9c06, 0x0904, 0xbb87, 0x2400, 0x9c06, 0x0904, 0xbb87, ++ 0x3e08, 0x9186, 0x0002, 0x1148, 0x6010, 0x9005, 0x0130, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1590, 0x00c6, 0x6043, 0xffff, ++ 0x6000, 0x9086, 0x0004, 0x1110, 0x080c, 0x1a6a, 0x9786, 0x000a, ++ 0x0148, 0x080c, 0xca4d, 0x1130, 0x00ce, 0x080c, 0xb5b5, 0x080c, ++ 0xac28, 0x00e8, 0x6014, 0x2048, 0x080c, 0xc838, 0x01a8, 0x9786, ++ 0x0003, 0x1530, 0xa867, 0x0103, 0xa87c, 0xd0cc, 0x0130, 0x0096, ++ 0xa878, 0x2048, 0x080c, 0x0fec, 0x009e, 0xab7a, 0xa877, 0x0000, ++ 0x080c, 0x6d74, 0x080c, 0xca27, 0x080c, 0xac28, 0x00ce, 0x9ce0, ++ 0x001c, 0x7068, 0x9c02, 0x1210, 0x0804, 0xbb2e, 0x012e, 0x000e, ++ 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x009e, 0x00ee, 0x0005, ++ 0x9786, 0x0006, 0x1118, 0x080c, 0xe26c, 0x0c30, 0x9786, 0x0009, ++ 0x1148, 0x6000, 0x9086, 0x0004, 0x0d08, 0x2009, 0x004c, 0x080c, ++ 0xac8c, 0x08e0, 0x9786, 0x000a, 0x0938, 0x0820, 0x220c, 0x2304, ++ 0x9106, 0x1130, 0x8210, 0x8318, 0x1f04, 0xbbae, 0x9006, 0x0005, ++ 0x2304, 0x9102, 0x0218, 0x2001, 0x0001, 0x0008, 0x9006, 0x918d, ++ 0x0001, 0x0005, 0x0136, 0x01c6, 0x0016, 0x8906, 0x8006, 0x8007, ++ 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9300, 0x2098, 0x3518, ++ 0x20a9, 0x0001, 0x220c, 0x4002, 0x910e, 0x1140, 0x8210, 0x8319, ++ 0x1dc8, 0x9006, 0x001e, 0x01ce, 0x013e, 0x0005, 0x220c, 0x9102, ++ 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0x918d, 0x0001, ++ 0x001e, 0x01ce, 0x013e, 0x0005, 0x220c, 0x810f, 0x2304, 0x9106, ++ 0x1130, 0x8210, 0x8318, 0x1f04, 0xbbec, 0x9006, 0x0005, 0x918d, ++ 0x0001, 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d7d, 0x080c, ++ 0xca3c, 0x0120, 0x080c, 0xca4d, 0x0158, 0x0028, 0x080c, 0x321c, ++ 0x080c, 0xca4d, 0x0128, 0x080c, 0x95de, 0x080c, 0xabed, 0x0005, ++ 0x080c, 0xb5b5, 0x0cc0, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, ++ 0x0208, 0x000a, 0x0005, 0xbc32, 0xbc32, 0xbc32, 0xbc32, 0xbc32, ++ 0xbc32, 0xbc32, 0xbc32, 0xbc32, 0xbc32, 0xbc32, 0xbc34, 0xbc34, ++ 0xbc34, 0xbc34, 0xbc32, 0xbc32, 0xbc32, 0xbc34, 0xbc32, 0xbc32, ++ 0xbc32, 0xbc32, 0x080c, 0x0d7d, 0x600b, 0xffff, 0x6003, 0x000f, ++ 0x6106, 0x0126, 0x2091, 0x8000, 0x080c, 0xcf6a, 0x2009, 0x8000, ++ 0x080c, 0x921e, 0x012e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, ++ 0x9082, 0x0040, 0x0804, 0xbcb9, 0x9186, 0x0027, 0x1520, 0x080c, ++ 0x95de, 0x080c, 0x31e7, 0x080c, 0xcf67, 0x0096, 0x6114, 0x2148, ++ 0x080c, 0xc838, 0x0198, 0x080c, 0xca4d, 0x1118, 0x080c, 0xb5b5, ++ 0x0068, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000, 0xa97c, ++ 0xc1c5, 0xa97e, 0x080c, 0x6d80, 0x080c, 0xca27, 0x009e, 0x080c, ++ 0xabed, 0x0804, 0x96a0, 0x9186, 0x0014, 0x1120, 0x6004, 0x9082, ++ 0x0040, 0x0018, 0x080c, 0x0d7d, 0x0005, 0x0002, 0xbc97, 0xbc95, ++ 0xbc95, 0xbc95, 0xbc95, 0xbc95, 0xbc95, 0xbc95, 0xbc95, 0xbc95, ++ 0xbc95, 0xbcb0, 0xbcb0, 0xbcb0, 0xbcb0, 0xbc95, 0xbcb0, 0xbc95, ++ 0xbcb0, 0xbc95, 0xbc95, 0xbc95, 0xbc95, 0x080c, 0x0d7d, 0x080c, ++ 0x95de, 0x0096, 0x6114, 0x2148, 0x080c, 0xc838, 0x0168, 0xa867, ++ 0x0103, 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, ++ 0x080c, 0x6d80, 0x080c, 0xca27, 0x009e, 0x080c, 0xabed, 0x0005, ++ 0x080c, 0x95de, 0x080c, 0xca4d, 0x090c, 0xb5b5, 0x080c, 0xabed, ++ 0x0005, 0x0002, 0xbcd3, 0xbcd1, 0xbcd1, 0xbcd1, 0xbcd1, 0xbcd1, ++ 0xbcd1, 0xbcd1, 0xbcd1, 0xbcd1, 0xbcd1, 0xbcd5, 0xbcd5, 0xbcd5, ++ 0xbcd5, 0xbcd1, 0xbcd7, 0xbcd1, 0xbcd5, 0xbcd1, 0xbcd1, 0xbcd1, ++ 0xbcd1, 0x080c, 0x0d7d, 0x080c, 0x0d7d, 0x080c, 0x0d7d, 0x080c, ++ 0xabed, 0x0804, 0x96a0, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, ++ 0x0208, 0x000a, 0x0005, 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, ++ 0xbd33, 0xbe22, 0xbcfa, 0xbe2e, 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, ++ 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, 0xbcfa, 0xbe2e, 0xbcfc, ++ 0xbcfa, 0xbe2c, 0x080c, 0x0d7d, 0x00b6, 0x0096, 0x6114, 0x2148, ++ 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1508, 0xa87b, 0x0000, 0xa867, ++ 0x0103, 0xa877, 0x0000, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xbeb3, 0x080c, 0x6b96, 0x6210, 0x2258, 0xba3c, ++ 0x82ff, 0x0110, 0x8211, 0xba3e, 0xb8d0, 0x9005, 0x0110, 0x080c, ++ 0x6750, 0x080c, 0xabed, 0x009e, 0x00be, 0x0005, 0xa87c, 0xd0ac, ++ 0x09e0, 0xa838, 0xa934, 0x9105, 0x09c0, 0xa880, 0xd0bc, 0x19a8, ++ 0x080c, 0xcb7d, 0x0c80, 0x00b6, 0x0096, 0x6114, 0x2148, 0x601c, ++ 0xd0fc, 0x1110, 0x7644, 0x0008, 0x9036, 0x96b4, 0x0fff, 0x86ff, ++ 0x1590, 0x6010, 0x2058, 0xb800, 0xd0bc, 0x1904, 0xbe11, 0xa87b, ++ 0x0000, 0xa867, 0x0103, 0xae76, 0xa87c, 0xd0ac, 0x0128, 0xa834, ++ 0xa938, 0x9115, 0x190c, 0xbeb3, 0x080c, 0x6b96, 0x6210, 0x2258, ++ 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0xb8d0, 0x9005, 0x0110, ++ 0x080c, 0x6750, 0x601c, 0xd0fc, 0x1148, 0x7044, 0xd0e4, 0x1904, ++ 0xbdf5, 0x080c, 0xabed, 0x009e, 0x00be, 0x0005, 0x2009, 0x0211, ++ 0x210c, 0x080c, 0x0d7d, 0x968c, 0x0c00, 0x0150, 0x6010, 0x2058, ++ 0xb800, 0xd0bc, 0x1904, 0xbdf9, 0x7348, 0xab92, 0x734c, 0xab8e, ++ 0x968c, 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, 0x0028, 0x1118, ++ 0xa87b, 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0xa87b, 0x0015, 0xa87c, ++ 0xd0ac, 0x0170, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0148, 0x7048, ++ 0x9106, 0x1118, 0x704c, 0x9206, 0x0118, 0xa992, 0xaa8e, 0xc6dc, ++ 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, ++ 0xa867, 0x0103, 0xae76, 0x901e, 0xd6c4, 0x01d8, 0x9686, 0x0100, ++ 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, 0xbd3f, 0x735c, ++ 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, ++ 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xc40b, ++ 0x003e, 0xd6cc, 0x0904, 0xbd54, 0x7154, 0xa98a, 0x81ff, 0x0904, ++ 0xbd54, 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, 0x0018, 0x2011, ++ 0x0029, 0x080c, 0xc40b, 0x2011, 0x0205, 0x2013, 0x0000, 0x080c, ++ 0xcef7, 0x0804, 0xbd54, 0xa868, 0xd0fc, 0x0120, 0x2009, 0x0020, ++ 0xa98a, 0x0c50, 0x00a6, 0x2950, 0x080c, 0xc3aa, 0x00ae, 0x080c, ++ 0xcef7, 0x080c, 0xc3fb, 0x0804, 0xbd56, 0x080c, 0xcb40, 0x0804, ++ 0xbd6b, 0xa87c, 0xd0ac, 0x0904, 0xbd7c, 0xa880, 0xd0bc, 0x1904, ++ 0xbd7c, 0x7348, 0xa838, 0x9306, 0x11c8, 0x734c, 0xa834, 0x931e, ++ 0x0904, 0xbd7c, 0xd6d4, 0x0190, 0xab38, 0x9305, 0x0904, 0xbd7c, ++ 0x0068, 0xa87c, 0xd0ac, 0x0904, 0xbd47, 0xa838, 0xa934, 0x9105, ++ 0x0904, 0xbd47, 0xa880, 0xd0bc, 0x1904, 0xbd47, 0x080c, 0xcb7d, ++ 0x0804, 0xbd6b, 0x00f6, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, ++ 0x7d08, 0x00fe, 0x0021, 0x0005, 0x0011, 0x0005, 0x0005, 0x0096, ++ 0x6003, 0x0002, 0x6007, 0x0043, 0x6014, 0x2048, 0xa87c, 0xd0ac, ++ 0x0128, 0x009e, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0xa9ac, ++ 0x910a, 0x2300, 0xaab0, 0x9213, 0x2600, 0x9102, 0x2500, 0x9203, ++ 0x0e90, 0xac46, 0xab4a, 0xae36, 0xad3a, 0x6044, 0xd0fc, 0x190c, ++ 0xa8bf, 0x604b, 0x0000, 0x080c, 0x1c30, 0x1118, 0x6144, 0x080c, ++ 0x924a, 0x009e, 0x0005, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, ++ 0x0208, 0x000a, 0x0005, 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7a, ++ 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7c, 0xbe7a, 0xbe7a, ++ 0xbe7a, 0xbe7a, 0xbe8d, 0xbe7a, 0xbe7a, 0xbe7a, 0xbe7a, 0xbeb1, ++ 0xbe7a, 0xbe7a, 0x080c, 0x0d7d, 0x6004, 0x9086, 0x0040, 0x1110, ++ 0x080c, 0x95de, 0x2019, 0x0001, 0x080c, 0xa118, 0x6003, 0x0002, ++ 0x080c, 0xcf6f, 0x080c, 0x963b, 0x0005, 0x6004, 0x9086, 0x0040, ++ 0x1110, 0x080c, 0x95de, 0x2019, 0x0001, 0x080c, 0xa118, 0x080c, ++ 0x963b, 0x080c, 0x31e7, 0x080c, 0xcf67, 0x0096, 0x6114, 0x2148, ++ 0x080c, 0xc838, 0x0150, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, ++ 0x0000, 0x080c, 0x6d80, 0x080c, 0xca27, 0x009e, 0x080c, 0xabed, ++ 0x0005, 0x080c, 0x0d7d, 0xa87b, 0x0015, 0xd1fc, 0x0180, 0xa87b, ++ 0x0007, 0x8002, 0x8000, 0x810a, 0x9189, 0x0000, 0x0006, 0x0016, ++ 0x2009, 0x1a78, 0x2104, 0x8000, 0x200a, 0x001e, 0x000e, 0xa992, ++ 0xa88e, 0x0005, 0x9182, 0x0057, 0x1220, 0x9182, 0x0040, 0x0208, ++ 0x000a, 0x0005, 0xbee9, 0xbee9, 0xbee9, 0xbee9, 0xbee9, 0xbeeb, ++ 0xbee9, 0xbee9, 0xbfa8, 0xbee9, 0xbee9, 0xbee9, 0xbee9, 0xbee9, ++ 0xbee9, 0xbee9, 0xbee9, 0xbee9, 0xbee9, 0xc0ec, 0xbee9, 0xc0f6, ++ 0xbee9, 0x080c, 0x0d7d, 0x601c, 0xd0bc, 0x0178, 0xd084, 0x0168, ++ 0xd0f4, 0x0120, 0xc084, 0x601e, 0x0804, 0xbcdb, 0x6114, 0x0096, ++ 0x2148, 0xa87c, 0xc0e5, 0xa87e, 0x009e, 0x0076, 0x00a6, 0x00e6, ++ 0x0096, 0x2071, 0x0260, 0x6114, 0x2150, 0x601c, 0xd0fc, 0x1110, ++ 0x7644, 0x0008, 0x9036, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, ++ 0xb77e, 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, ++ 0xba3e, 0x00be, 0x86ff, 0x0904, 0xbfa1, 0x9694, 0xff00, 0x9284, ++ 0x0c00, 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, ++ 0x0904, 0xbfa1, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, ++ 0xc6c4, 0xb676, 0x0c38, 0x080c, 0x103a, 0x090c, 0x0d7d, 0x2900, ++ 0xb07a, 0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, 0x0103, 0xb068, ++ 0xa86a, 0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, 0x9084, 0xf000, ++ 0x9635, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, ++ 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, ++ 0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, ++ 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, ++ 0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, ++ 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, ++ 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, ++ 0xc40b, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8, ++ 0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, ++ 0x080c, 0xc40b, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068, ++ 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c, ++ 0xc3aa, 0x080c, 0x1a48, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, ++ 0x2001, 0x1988, 0x2004, 0x604a, 0x0096, 0x6114, 0x2148, 0xa83c, ++ 0xa940, 0x9105, 0x1118, 0xa87c, 0xc0dc, 0xa87e, 0x6003, 0x0002, ++ 0x080c, 0xcf78, 0x0904, 0xc0e7, 0x604b, 0x0000, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1500, 0xd1cc, 0x0904, 0xc0a6, ++ 0xa978, 0xa868, 0xd0fc, 0x0904, 0xc067, 0x0016, 0xa87c, 0x0006, ++ 0xa880, 0x0006, 0x00a6, 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, ++ 0x0002, 0x0904, 0xc035, 0x9086, 0x0028, 0x1904, 0xc021, 0xa87b, ++ 0x001c, 0xb07b, 0x001c, 0x0804, 0xc03d, 0x6024, 0xd0f4, 0x11d0, ++ 0xa838, 0xaa34, 0x9205, 0x09c8, 0xa838, 0xaa90, 0x9206, 0x1120, ++ 0xa88c, 0xaa34, 0x9206, 0x0988, 0x6024, 0xd0d4, 0x1148, 0xa9ac, ++ 0xa834, 0x9102, 0x603a, 0xa9b0, 0xa838, 0x9103, 0x603e, 0x6024, ++ 0xc0f5, 0x6026, 0x6010, 0x00b6, 0x2058, 0xb83c, 0x8000, 0xb83e, ++ 0x00be, 0x601c, 0xc0fc, 0x601e, 0x9006, 0xa876, 0xa892, 0xa88e, ++ 0xa87c, 0xc0e4, 0xa87e, 0xd0cc, 0x0140, 0xc0cc, 0xa87e, 0x0096, ++ 0xa878, 0x2048, 0x080c, 0x0fec, 0x009e, 0x080c, 0xcb7d, 0x0804, ++ 0xc0e7, 0xd1dc, 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, ++ 0xce1a, 0x0118, 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, ++ 0xa87b, 0x0007, 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, ++ 0xa834, 0xa938, 0x9115, 0x190c, 0xbeb3, 0xa87c, 0xb07e, 0xa890, ++ 0xb092, 0xa88c, 0xb08e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, ++ 0x20a0, 0x20a9, 0x0020, 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, ++ 0x22e0, 0x9084, 0xffc0, 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, ++ 0x000e, 0xa882, 0x000e, 0xa87e, 0x080c, 0xcef7, 0x001e, 0xa874, ++ 0x0006, 0x2148, 0x080c, 0x0fec, 0x001e, 0x0804, 0xc0d3, 0x0016, ++ 0x00a6, 0x2150, 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, ++ 0x9086, 0x0028, 0x1128, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, ++ 0xd1dc, 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xce1a, ++ 0x0118, 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, ++ 0x0007, 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, ++ 0xa938, 0x9115, 0x190c, 0xbeb3, 0xa890, 0xb092, 0xa88c, 0xb08e, ++ 0xa87c, 0xb07e, 0x00ae, 0x080c, 0x0fec, 0x009e, 0x080c, 0xcef7, ++ 0xa974, 0x0016, 0x080c, 0xc3fb, 0x001e, 0x0468, 0xa867, 0x0103, ++ 0xa974, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, ++ 0x1118, 0xa87b, 0x001c, 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, ++ 0x080c, 0xce1a, 0x0118, 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, ++ 0x0118, 0xa87b, 0x0007, 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, ++ 0x0128, 0xa834, 0xa938, 0x9115, 0x190c, 0xbeb3, 0xa974, 0x0016, ++ 0x080c, 0x6b96, 0x001e, 0x6010, 0x00b6, 0x2058, 0xba3c, 0x82ff, ++ 0x0110, 0x8211, 0xba3e, 0xb8d0, 0x9005, 0x0120, 0x0016, 0x080c, ++ 0x6750, 0x001e, 0x00be, 0xd1e4, 0x1120, 0x080c, 0xabed, 0x009e, ++ 0x0005, 0x080c, 0xcb40, 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, ++ 0x080c, 0xcf78, 0x190c, 0x1a56, 0x009e, 0x0005, 0x0096, 0x6114, ++ 0x2148, 0xa83c, 0xa940, 0x9105, 0x01e8, 0xa877, 0x0000, 0xa87b, ++ 0x0000, 0xa867, 0x0103, 0x00b6, 0x6010, 0x2058, 0xa834, 0xa938, ++ 0x9115, 0x11a0, 0x080c, 0x6b96, 0xba3c, 0x8211, 0x0208, 0xba3e, ++ 0xb8d0, 0x9005, 0x0110, 0x080c, 0x6750, 0x080c, 0xabed, 0x00be, ++ 0x009e, 0x0005, 0xa87c, 0xc0dc, 0xa87e, 0x08f8, 0xb800, 0xd0bc, ++ 0x1120, 0xa834, 0x080c, 0xbeb3, 0x0c28, 0xa880, 0xd0bc, 0x1dc8, ++ 0x080c, 0xcb7d, 0x0c60, 0x080c, 0x95de, 0x0010, 0x080c, 0x963b, ++ 0x601c, 0xd084, 0x0110, 0x080c, 0x1a6a, 0x080c, 0xc838, 0x01f0, ++ 0x0096, 0x6114, 0x2148, 0x080c, 0xca4d, 0x1118, 0x080c, 0xb5b5, ++ 0x00a0, 0xa867, 0x0103, 0x2009, 0x180c, 0x210c, 0xd18c, 0x1198, ++ 0xd184, 0x1170, 0x6108, 0xa97a, 0x918e, 0x0029, 0x1110, 0x080c, ++ 0xe621, 0xa877, 0x0000, 0x080c, 0x6d80, 0x009e, 0x0804, 0xac28, ++ 0xa87b, 0x0004, 0x0cb0, 0xa87b, 0x0004, 0x0c98, 0x9182, 0x0057, ++ 0x1220, 0x9182, 0x0040, 0x0208, 0x000a, 0x0005, 0xc17d, 0xc17d, ++ 0xc17d, 0xc17d, 0xc17d, 0xc17f, 0xc17d, 0xc17d, 0xc17d, 0xc17d, ++ 0xc17d, 0xc17d, 0xc17d, 0xc17d, 0xc17d, 0xc17d, 0xc17d, 0xc17d, ++ 0xc17d, 0xc17d, 0xc1a3, 0xc17d, 0xc17d, 0x080c, 0x0d7d, 0x080c, ++ 0x56e2, 0x01f8, 0x6014, 0x7144, 0x918c, 0x0fff, 0x9016, 0xd1c4, ++ 0x0118, 0x7264, 0x9294, 0x00ff, 0x0096, 0x904d, 0x0188, 0xa87b, ++ 0x0000, 0xa864, 0x9086, 0x0139, 0x0128, 0xa867, 0x0103, 0xa976, ++ 0xaa96, 0x0030, 0xa897, 0x4000, 0xa99a, 0xaa9e, 0x080c, 0x6d80, ++ 0x009e, 0x0804, 0xabed, 0x080c, 0x56e2, 0x0dd8, 0x6014, 0x900e, ++ 0x9016, 0x0c10, 0x9182, 0x0085, 0x0002, 0xc1bc, 0xc1ba, 0xc1ba, ++ 0xc1c8, 0xc1ba, 0xc1ba, 0xc1ba, 0xc1ba, 0xc1ba, 0xc1ba, 0xc1ba, ++ 0xc1ba, 0xc1ba, 0x080c, 0x0d7d, 0x6003, 0x0001, 0x6106, 0x0126, ++ 0x2091, 0x8000, 0x2009, 0x8020, 0x080c, 0x921e, 0x012e, 0x0005, ++ 0x0026, 0x0056, 0x00d6, 0x00e6, 0x2071, 0x0260, 0x7224, 0x6216, ++ 0x7220, 0x080c, 0xc826, 0x01a0, 0x2268, 0x6800, 0x9086, 0x0000, ++ 0x0178, 0x6010, 0x6d10, 0x952e, 0x1158, 0x00c6, 0x2d60, 0x080c, ++ 0xc436, 0x00ce, 0x0128, 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, ++ 0x6007, 0x0087, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, ++ 0x9280, 0x0004, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0140, ++ 0x6824, 0xd0ec, 0x0128, 0x00c6, 0x2260, 0x080c, 0xcb7d, 0x00ce, ++ 0x00ee, 0x00de, 0x005e, 0x002e, 0x0005, 0x9186, 0x0013, 0x1160, ++ 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d7d, 0x908a, 0x0092, 0x1a0c, ++ 0x0d7d, 0x9082, 0x0085, 0x00e2, 0x9186, 0x0027, 0x0120, 0x9186, ++ 0x0014, 0x190c, 0x0d7d, 0x080c, 0x95de, 0x0096, 0x6014, 0x2048, ++ 0x080c, 0xc838, 0x0140, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, ++ 0x0029, 0x080c, 0x6d80, 0x009e, 0x080c, 0xac28, 0x0804, 0x96a0, ++ 0xc23d, 0xc23f, 0xc23f, 0xc23d, 0xc23d, 0xc23d, 0xc23d, 0xc23d, ++ 0xc23d, 0xc23d, 0xc23d, 0xc23d, 0xc23d, 0x080c, 0x0d7d, 0x080c, ++ 0xac28, 0x0005, 0x9186, 0x0013, 0x1130, 0x6004, 0x9082, 0x0085, ++ 0x2008, 0x0804, 0xc28e, 0x9186, 0x0027, 0x1558, 0x080c, 0x95de, ++ 0x080c, 0x31e7, 0x080c, 0xcf67, 0x0096, 0x6014, 0x2048, 0x080c, ++ 0xc838, 0x0150, 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, ++ 0x080c, 0x6d80, 0x080c, 0xca27, 0x009e, 0x080c, 0xabed, 0x0005, ++ 0x9186, 0x0089, 0x0118, 0x9186, 0x008a, 0x1140, 0x080c, 0xaaa8, ++ 0x0128, 0x9086, 0x000c, 0x0904, 0xc2c6, 0x0000, 0x080c, 0xaca9, ++ 0x0c70, 0x9186, 0x0014, 0x1d60, 0x080c, 0x95de, 0x0096, 0x6014, ++ 0x2048, 0x080c, 0xc838, 0x0d00, 0xa867, 0x0103, 0xa877, 0x0000, ++ 0xa87b, 0x0006, 0xa880, 0xc0ec, 0xa882, 0x0890, 0x0002, 0xc29e, ++ 0xc29c, 0xc29c, 0xc29c, 0xc29c, 0xc29c, 0xc2b2, 0xc29c, 0xc29c, ++ 0xc29c, 0xc29c, 0xc29c, 0xc29c, 0x080c, 0x0d7d, 0x6034, 0x908c, ++ 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, ++ 0x2001, 0x1986, 0x0010, 0x2001, 0x1987, 0x2004, 0x601a, 0x6003, ++ 0x000c, 0x0005, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, ++ 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1986, 0x0010, 0x2001, ++ 0x1987, 0x2004, 0x601a, 0x6003, 0x000e, 0x0005, 0x9182, 0x0092, ++ 0x1220, 0x9182, 0x0085, 0x0208, 0x0012, 0x0804, 0xaca9, 0xc2dc, ++ 0xc2dc, 0xc2dc, 0xc2dc, 0xc2de, 0xc32b, 0xc2dc, 0xc2dc, 0xc2dc, ++ 0xc2dc, 0xc2dc, 0xc2dc, 0xc2dc, 0x080c, 0x0d7d, 0x0096, 0x6010, ++ 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0168, 0x6034, 0x908c, ++ 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, ++ 0x009e, 0x0804, 0xc33f, 0x080c, 0xc838, 0x1118, 0x080c, 0xca27, ++ 0x0068, 0x6014, 0x2048, 0x080c, 0xcf7e, 0x1110, 0x080c, 0xca27, ++ 0xa867, 0x0103, 0x080c, 0xcf32, 0x080c, 0x6d80, 0x00d6, 0x2c68, ++ 0x080c, 0xab97, 0x01d0, 0x6003, 0x0001, 0x6007, 0x001e, 0x600b, ++ 0xffff, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, ++ 0x613e, 0x6910, 0x6112, 0x080c, 0xcccc, 0x695c, 0x615e, 0x6023, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, 0x2d60, 0x00de, 0x080c, ++ 0xabed, 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, ++ 0xd0bc, 0x05a0, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0035, ++ 0x0130, 0x9186, 0x001e, 0x0118, 0x9186, 0x0039, 0x1538, 0x00d6, ++ 0x2c68, 0x080c, 0xceca, 0x11f0, 0x080c, 0xab97, 0x01d8, 0x6106, ++ 0x6003, 0x0001, 0x6023, 0x0001, 0x6910, 0x6112, 0x692c, 0x612e, ++ 0x6930, 0x6132, 0x6934, 0x918c, 0x00ff, 0x6136, 0x6938, 0x613a, ++ 0x693c, 0x613e, 0x695c, 0x615e, 0x080c, 0xcccc, 0x2009, 0x8020, ++ 0x080c, 0x921e, 0x2d60, 0x00de, 0x0804, 0xabed, 0x0096, 0x6014, ++ 0x2048, 0x080c, 0xc838, 0x01c8, 0xa867, 0x0103, 0xa880, 0xd0b4, ++ 0x0128, 0xc0ec, 0xa882, 0xa87b, 0x0006, 0x0048, 0xd0bc, 0x0118, ++ 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, 0x080c, 0xcb3c, 0xa877, ++ 0x0000, 0x080c, 0x6d80, 0x080c, 0xca27, 0x009e, 0x0804, 0xabed, ++ 0x0016, 0x0096, 0x6014, 0x2048, 0x080c, 0xc838, 0x0140, 0xa867, ++ 0x0103, 0xa87b, 0x0028, 0xa877, 0x0000, 0x080c, 0x6d80, 0x009e, ++ 0x001e, 0x9186, 0x0013, 0x0158, 0x9186, 0x0014, 0x0130, 0x9186, ++ 0x0027, 0x0118, 0x080c, 0xaca9, 0x0020, 0x080c, 0x95de, 0x080c, ++ 0xac28, 0x0005, 0x0056, 0x0066, 0x0096, 0x00a6, 0x2029, 0x0001, ++ 0x9182, 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x8304, ++ 0x9098, 0x0018, 0x2009, 0x0020, 0x2011, 0x0029, 0x080c, 0xc40b, ++ 0x96b2, 0x0020, 0xb004, 0x904d, 0x0110, 0x080c, 0x0fec, 0x080c, ++ 0x103a, 0x0520, 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, ++ 0xb406, 0x968a, 0x003d, 0x1228, 0x2608, 0x2011, 0x001b, 0x0499, ++ 0x00a8, 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b, ++ 0x0451, 0x0c28, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, ++ 0x95ad, 0x0003, 0xb566, 0x95ac, 0x0000, 0x0048, 0x2001, 0x0205, ++ 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, 0x009e, ++ 0x006e, 0x005e, 0x0005, 0x00a6, 0x89ff, 0x0158, 0xa804, 0x9055, ++ 0x0130, 0xa807, 0x0000, 0x080c, 0x6d80, 0x2a48, 0x0cb8, 0x080c, ++ 0x6d80, 0x00ae, 0x0005, 0x00f6, 0x2079, 0x0200, 0x7814, 0x9085, ++ 0x0080, 0x7816, 0xd184, 0x0108, 0x8108, 0x810c, 0x20a9, 0x0001, ++ 0xa860, 0x20e8, 0xa85c, 0x9200, 0x20a0, 0x20e1, 0x0000, 0x2300, ++ 0x9e00, 0x2098, 0x4003, 0x8318, 0x9386, 0x0020, 0x1148, 0x2018, ++ 0x2300, 0x9e00, 0x2098, 0x7814, 0x8000, 0x9085, 0x0080, 0x7816, ++ 0x8109, 0x1d80, 0x7817, 0x0000, 0x00fe, 0x0005, 0x0066, 0x0126, ++ 0x2091, 0x8000, 0x2031, 0x0001, 0x6020, 0x9084, 0x000f, 0x0083, ++ 0x012e, 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, ++ 0x0000, 0x6020, 0x9084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, ++ 0xc488, 0xc488, 0xc483, 0xc4ac, 0xc460, 0xc483, 0xc462, 0xc483, ++ 0xc460, 0x90e4, 0xc483, 0xc483, 0xc483, 0xc460, 0xc460, 0xc460, ++ 0x080c, 0x0d7d, 0x6010, 0x9080, 0x0000, 0x2004, 0xd0bc, 0x190c, ++ 0xc4ac, 0x0036, 0x6014, 0x0096, 0x2048, 0xa880, 0x009e, 0xd0cc, ++ 0x0118, 0x2019, 0x000c, 0x0038, 0xd094, 0x0118, 0x2019, 0x000d, ++ 0x0010, 0x2019, 0x0010, 0x080c, 0xde1b, 0x6023, 0x0006, 0x6003, ++ 0x0007, 0x003e, 0x0005, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, ++ 0x0096, 0x86ff, 0x11e8, 0x6014, 0x2048, 0x080c, 0xc838, 0x01d0, ++ 0x6043, 0xffff, 0xa864, 0x9086, 0x0139, 0x1128, 0xa87b, 0x0005, ++ 0xa883, 0x0000, 0x0028, 0x900e, 0x2001, 0x0005, 0x080c, 0x6fc0, ++ 0x080c, 0xcb3c, 0x080c, 0x6d74, 0x080c, 0xac28, 0x9085, 0x0001, ++ 0x009e, 0x0005, 0x9006, 0x0ce0, 0x080c, 0xa896, 0x080c, 0xcf8c, ++ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7d, 0x002b, 0x0106, 0x080c, ++ 0xa8b2, 0x010e, 0x0005, 0xc4cb, 0xc4f9, 0xc4cd, 0xc520, 0xc4f4, ++ 0xc4cb, 0xc483, 0xc488, 0xc488, 0xc483, 0xc483, 0xc483, 0xc483, ++ 0xc483, 0xc483, 0xc483, 0x080c, 0x0d7d, 0x86ff, 0x1510, 0x6020, ++ 0x9086, 0x0006, 0x01f0, 0x0096, 0x6014, 0x2048, 0x080c, 0xc838, ++ 0x0158, 0xa87c, 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, ++ 0x0fec, 0x009e, 0x080c, 0xcb3c, 0x009e, 0x080c, 0xcf0c, 0x6007, ++ 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, 0x8020, 0x080c, ++ 0x9200, 0x9085, 0x0001, 0x0005, 0x0066, 0x080c, 0x1a6a, 0x006e, ++ 0x08a0, 0x00e6, 0x2071, 0x19e7, 0x7030, 0x9c06, 0x1120, 0x080c, ++ 0xa098, 0x00ee, 0x0850, 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, ++ 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, 0x2c40, 0x080c, 0xa218, ++ 0x009e, 0x008e, 0x0040, 0x0066, 0x080c, 0x9f94, 0x190c, 0x0d7d, ++ 0x080c, 0x9fa2, 0x006e, 0x00ee, 0x1904, 0xc4cd, 0x0804, 0xc483, ++ 0x0036, 0x00e6, 0x2071, 0x19e7, 0x704c, 0x9c06, 0x1138, 0x901e, ++ 0x080c, 0xa118, 0x00ee, 0x003e, 0x0804, 0xc4cd, 0x080c, 0xa34e, ++ 0x00ee, 0x003e, 0x1904, 0xc4cd, 0x0804, 0xc483, 0x00c6, 0x0066, ++ 0x6020, 0x9084, 0x000f, 0x001b, 0x006e, 0x00ce, 0x0005, 0xc556, ++ 0xc618, 0xc77f, 0xc55e, 0xac28, 0xc556, 0xde0d, 0xcf74, 0xc618, ++ 0x90ab, 0xc7fe, 0xc54f, 0xc54f, 0xc54f, 0xc54f, 0xc54f, 0x080c, ++ 0x0d7d, 0x080c, 0xca4d, 0x1110, 0x080c, 0xb5b5, 0x0005, 0x080c, ++ 0x95de, 0x0804, 0xabed, 0x601b, 0x0001, 0x0005, 0x080c, 0xc838, ++ 0x0130, 0x6014, 0x0096, 0x2048, 0x2c00, 0xa896, 0x009e, 0x080c, ++ 0xa896, 0x080c, 0xcf8c, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7d, ++ 0x0013, 0x0804, 0xa8b2, 0xc583, 0xc585, 0xc5af, 0xc5c3, 0xc5ee, ++ 0xc583, 0xc556, 0xc556, 0xc556, 0xc5ca, 0xc5ca, 0xc583, 0xc583, ++ 0xc583, 0xc583, 0xc5d4, 0x080c, 0x0d7d, 0x00e6, 0x6014, 0x0096, ++ 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19e7, 0x7030, ++ 0x9c06, 0x01d0, 0x0066, 0x080c, 0x9f94, 0x190c, 0x0d7d, 0x080c, ++ 0x9fa2, 0x006e, 0x080c, 0xcf0c, 0x6007, 0x0085, 0x6003, 0x000b, ++ 0x6023, 0x0002, 0x2001, 0x1987, 0x2004, 0x601a, 0x2009, 0x8020, ++ 0x080c, 0x9200, 0x00ee, 0x0005, 0x601b, 0x0001, 0x0cd8, 0x0096, ++ 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x080c, 0xcf0c, ++ 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x2009, 0x8020, ++ 0x080c, 0x9200, 0x0005, 0x080c, 0xa896, 0x080c, 0xaa2a, 0x080c, ++ 0xa8b2, 0x0c28, 0x0096, 0x601b, 0x0001, 0x6014, 0x2048, 0xa880, ++ 0xc0b5, 0xa882, 0x009e, 0x0005, 0x080c, 0x56e2, 0x01a8, 0x6014, ++ 0x0096, 0x904d, 0x0180, 0xa864, 0xa867, 0x0103, 0xa87b, 0x0006, ++ 0x9086, 0x0139, 0x1140, 0xa867, 0x0139, 0xa897, 0x4005, 0xa89b, ++ 0x0004, 0x080c, 0x6d80, 0x009e, 0x0804, 0xabed, 0x6014, 0x0096, ++ 0x904d, 0x0508, 0x080c, 0xcf78, 0x01f0, 0x080c, 0xa8b2, 0x2001, ++ 0x180f, 0x2004, 0xd0c4, 0x0110, 0x009e, 0x0005, 0xa884, 0x009e, ++ 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0x2001, 0x0037, 0x2c08, ++ 0x080c, 0x1679, 0x6000, 0x9086, 0x0004, 0x1120, 0x2009, 0x0048, ++ 0x080c, 0xac8c, 0x0005, 0x009e, 0x080c, 0x1a6a, 0x0804, 0xc5af, ++ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7d, 0x000b, 0x0005, 0xc62f, ++ 0xc55b, 0xc631, 0xc62f, 0xc631, 0xc631, 0xc557, 0xc62f, 0xc551, ++ 0xc551, 0xc62f, 0xc62f, 0xc62f, 0xc62f, 0xc62f, 0xc62f, 0x080c, ++ 0x0d7d, 0x6010, 0x00b6, 0x2058, 0xb804, 0x9084, 0x00ff, 0x00be, ++ 0x908a, 0x000c, 0x1a0c, 0x0d7d, 0x00b6, 0x0013, 0x00be, 0x0005, ++ 0xc64c, 0xc719, 0xc64e, 0xc68e, 0xc64e, 0xc68e, 0xc64e, 0xc65c, ++ 0xc64c, 0xc68e, 0xc64c, 0xc67d, 0x080c, 0x0d7d, 0x6004, 0x908e, ++ 0x0016, 0x05c0, 0x908e, 0x0004, 0x05a8, 0x908e, 0x0002, 0x0590, ++ 0x908e, 0x0052, 0x0904, 0xc715, 0x6004, 0x080c, 0xca4d, 0x0904, ++ 0xc732, 0x908e, 0x0004, 0x1110, 0x080c, 0x321c, 0x908e, 0x0021, ++ 0x0904, 0xc736, 0x908e, 0x0022, 0x0904, 0xc77a, 0x908e, 0x003d, ++ 0x0904, 0xc736, 0x908e, 0x0039, 0x0904, 0xc73a, 0x908e, 0x0035, ++ 0x0904, 0xc73a, 0x908e, 0x001e, 0x0178, 0x908e, 0x0001, 0x1140, ++ 0x6010, 0x2058, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0110, ++ 0x080c, 0x31e7, 0x080c, 0xb5b5, 0x0804, 0xac28, 0x00c6, 0x00d6, ++ 0x6104, 0x9186, 0x0016, 0x0904, 0xc706, 0x9186, 0x0002, 0x1904, ++ 0xc6db, 0x2001, 0x1837, 0x2004, 0xd08c, 0x11c8, 0x080c, 0x74e9, ++ 0x11b0, 0x080c, 0xcf52, 0x0138, 0x080c, 0x750c, 0x1120, 0x080c, ++ 0x73f4, 0x0804, 0xc763, 0x2001, 0x197d, 0x2003, 0x0001, 0x2001, ++ 0x1800, 0x2003, 0x0001, 0x080c, 0x741a, 0x0804, 0xc763, 0x6010, ++ 0x2058, 0x2001, 0x1837, 0x2004, 0xd0ac, 0x1904, 0xc763, 0xb8a0, ++ 0x9084, 0xff80, 0x1904, 0xc763, 0xb840, 0x9084, 0x00ff, 0x9005, ++ 0x0190, 0x8001, 0xb842, 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, ++ 0x0398, 0x604b, 0x0000, 0x080c, 0xab97, 0x0128, 0x2b00, 0x6012, ++ 0x6023, 0x0001, 0x0458, 0x00de, 0x00ce, 0x6004, 0x908e, 0x0002, ++ 0x11a0, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1170, 0x2009, ++ 0x1837, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0x1800, 0x080c, ++ 0x5fbc, 0x00ee, 0x080c, 0xb5b5, 0x0030, 0x080c, 0xb5b5, 0x080c, ++ 0x31e7, 0x080c, 0xcf67, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0x321c, 0x012e, 0x00ee, 0x080c, 0xac28, 0x0005, 0x2001, 0x0002, ++ 0x080c, 0x6575, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x9225, ++ 0x080c, 0x96a0, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x321c, 0x0804, ++ 0xc68a, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38, 0x6010, ++ 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xc6db, 0x8001, ++ 0xb842, 0x6003, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x00de, ++ 0x00ce, 0x0898, 0x080c, 0xb5b5, 0x0804, 0xc68c, 0x080c, 0xb5f1, ++ 0x0804, 0xc68c, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xceca, 0x00de, ++ 0x0118, 0x080c, 0xabed, 0x00f0, 0x6004, 0x8007, 0x6134, 0x918c, ++ 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, ++ 0x0002, 0x603c, 0x600a, 0x2001, 0x1987, 0x2004, 0x601a, 0x602c, ++ 0x2c08, 0x2060, 0x6024, 0xc0b5, 0x6026, 0x2160, 0x2009, 0x8020, ++ 0x080c, 0x921e, 0x0005, 0x00de, 0x00ce, 0x080c, 0xb5b5, 0x080c, ++ 0x31e7, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x321c, 0x6017, ++ 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, 0x604b, 0x0000, 0x012e, ++ 0x00ee, 0x0005, 0x080c, 0xb029, 0x1904, 0xc732, 0x0005, 0x6000, ++ 0x908a, 0x0016, 0x1a0c, 0x0d7d, 0x0096, 0x00d6, 0x001b, 0x00de, ++ 0x009e, 0x0005, 0xc79a, 0xc79a, 0xc79a, 0xc79a, 0xc79a, 0xc79a, ++ 0xc79a, 0xc79a, 0xc79a, 0xc556, 0xc79a, 0xc55b, 0xc79c, 0xc55b, ++ 0xc7a9, 0xc79a, 0x080c, 0x0d7d, 0x6004, 0x9086, 0x008b, 0x0148, ++ 0x6007, 0x008b, 0x6003, 0x000d, 0x2009, 0x8020, 0x080c, 0x921e, ++ 0x0005, 0x080c, 0xcf46, 0x0118, 0x080c, 0xcf59, 0x0010, 0x080c, ++ 0xcf67, 0x080c, 0xca27, 0x080c, 0xc838, 0x0570, 0x080c, 0x31e7, ++ 0x080c, 0xc838, 0x0168, 0x6014, 0x2048, 0xa867, 0x0103, 0xa87b, ++ 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ed, 0xa882, 0x080c, 0x6d80, ++ 0x2c68, 0x080c, 0xab97, 0x0150, 0x6810, 0x6012, 0x080c, 0xcccc, ++ 0x00c6, 0x2d60, 0x080c, 0xac28, 0x00ce, 0x0008, 0x2d60, 0x6017, ++ 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, ++ 0x9225, 0x080c, 0x96a0, 0x00c8, 0x080c, 0xcf46, 0x0138, 0x6034, ++ 0x9086, 0x4000, 0x1118, 0x080c, 0x31e7, 0x08d0, 0x6034, 0x908c, ++ 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, ++ 0x080c, 0x31e7, 0x0868, 0x080c, 0xac28, 0x0005, 0x6000, 0x908a, ++ 0x0016, 0x1a0c, 0x0d7d, 0x0002, 0xc814, 0xc814, 0xc816, 0xc816, ++ 0xc816, 0xc814, 0xc814, 0xac28, 0xc814, 0xc814, 0xc814, 0xc814, ++ 0xc814, 0xc814, 0xc814, 0xc814, 0x080c, 0x0d7d, 0x080c, 0xa896, ++ 0x080c, 0xaa2a, 0x080c, 0xa8b2, 0x6114, 0x0096, 0x2148, 0xa87b, ++ 0x0006, 0x080c, 0x6d80, 0x009e, 0x0804, 0xabed, 0x9284, 0x0003, ++ 0x1158, 0x9282, 0x1ddc, 0x0240, 0x2001, 0x181a, 0x2004, 0x9202, ++ 0x1218, 0x9085, 0x0001, 0x0005, 0x9006, 0x0ce8, 0x0096, 0x0028, ++ 0x0096, 0x0006, 0x6014, 0x2048, 0x000e, 0x0006, 0x9984, 0xf000, ++ 0x9086, 0xf000, 0x0110, 0x080c, 0x10e5, 0x000e, 0x009e, 0x0005, ++ 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, ++ 0x1ddc, 0x2071, 0x1800, 0x7354, 0x7074, 0x9302, 0x1640, 0x6020, ++ 0x9206, 0x11f8, 0x080c, 0xcf52, 0x0180, 0x9286, 0x0001, 0x1168, ++ 0x6004, 0x9086, 0x0004, 0x1148, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x00c6, 0x080c, 0xac28, 0x00ce, 0x0060, 0x080c, 0xcc3e, 0x0148, ++ 0x080c, 0xca4d, 0x1110, 0x080c, 0xb5b5, 0x00c6, 0x080c, 0xabed, ++ 0x00ce, 0x9ce0, 0x001c, 0x7068, 0x9c02, 0x1208, 0x08a0, 0x012e, ++ 0x000e, 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, ++ 0x9188, 0x1000, 0x210c, 0x81ff, 0x0128, 0x2061, 0x1b32, 0x6112, ++ 0x080c, 0x31e7, 0x9006, 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, ++ 0x00ee, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0xab97, ++ 0x01b0, 0x665e, 0x2b00, 0x6012, 0x080c, 0x56e2, 0x0118, 0x080c, ++ 0xc969, 0x0168, 0x080c, 0xcccc, 0x6023, 0x0003, 0x2009, 0x004b, ++ 0x080c, 0xac8c, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, ++ 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0xbaa0, 0x080c, 0xac5f, ++ 0x0580, 0x605f, 0x0000, 0x2b00, 0x6012, 0x080c, 0xcccc, 0x6023, ++ 0x0003, 0x0016, 0x080c, 0xa896, 0x080c, 0x93a5, 0x0076, 0x903e, ++ 0x080c, 0x9277, 0x2c08, 0x080c, 0xdfeb, 0x007e, 0x080c, 0xa8b2, ++ 0x001e, 0xd184, 0x0128, 0x080c, 0xabed, 0x9085, 0x0001, 0x0070, ++ 0x080c, 0x56e2, 0x0128, 0xd18c, 0x1170, 0x080c, 0xc969, 0x0148, ++ 0x2009, 0x004c, 0x080c, 0xac8c, 0x9085, 0x0001, 0x012e, 0x00ce, ++ 0x0005, 0x9006, 0x0cd8, 0x2900, 0x6016, 0x0c90, 0x2009, 0x004d, ++ 0x0010, 0x2009, 0x004e, 0x00f6, 0x00c6, 0x0046, 0x0016, 0x080c, ++ 0xab97, 0x2c78, 0x0590, 0x7e5e, 0x2b00, 0x7812, 0x7823, 0x0003, ++ 0x2021, 0x0005, 0x080c, 0xc97b, 0x9186, 0x004d, 0x0118, 0x9186, ++ 0x004e, 0x0148, 0x2001, 0x1980, 0x200c, 0xd1fc, 0x0168, 0x2f60, ++ 0x080c, 0xabed, 0x00d0, 0x2001, 0x197f, 0x200c, 0xd1fc, 0x0120, ++ 0x2f60, 0x080c, 0xabed, 0x0088, 0x2f60, 0x080c, 0x56e2, 0x0138, ++ 0xd18c, 0x1118, 0x04f1, 0x0148, 0x0010, 0x2900, 0x7816, 0x001e, ++ 0x0016, 0x080c, 0xac8c, 0x9085, 0x0001, 0x001e, 0x004e, 0x00ce, ++ 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x080c, 0xab97, 0x2c78, ++ 0x0508, 0x7e5e, 0x2b00, 0x7812, 0x7823, 0x0003, 0x0096, 0x2021, ++ 0x0004, 0x0489, 0x009e, 0x2001, 0x197e, 0x200c, 0xd1fc, 0x0120, ++ 0x2f60, 0x080c, 0xabed, 0x0060, 0x2f60, 0x080c, 0x56e2, 0x0120, ++ 0xd18c, 0x1160, 0x0071, 0x0130, 0x2009, 0x0052, 0x080c, 0xac8c, ++ 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x2900, 0x7816, ++ 0x0c98, 0x00c6, 0x080c, 0x4aa7, 0x00ce, 0x1120, 0x080c, 0xabed, ++ 0x9006, 0x0005, 0xa867, 0x0000, 0xa86b, 0x8000, 0x2900, 0x6016, ++ 0x9085, 0x0001, 0x0005, 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0xa896, 0x080c, 0x6804, 0x0158, 0x2001, 0xc982, 0x0006, ++ 0x900e, 0x2400, 0x080c, 0x6fc0, 0x080c, 0x6d80, 0x000e, 0x0807, ++ 0x2418, 0x080c, 0x95a4, 0xbaa0, 0x0086, 0x2041, 0x0001, 0x2039, ++ 0x0001, 0x2608, 0x080c, 0x93bf, 0x008e, 0x080c, 0x9277, 0x2f08, ++ 0x2648, 0x080c, 0xdfeb, 0xb93c, 0x81ff, 0x090c, 0x9496, 0x080c, ++ 0xa8b2, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0xab97, 0x0190, 0x660a, 0x2b08, 0x6112, 0x080c, ++ 0xcccc, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f, 0x080c, ++ 0xac8c, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0xac5f, 0x01b8, 0x660a, ++ 0x2b08, 0x6112, 0x080c, 0xcccc, 0x6023, 0x0008, 0x2900, 0x6016, ++ 0x00f6, 0x2c78, 0x080c, 0x1731, 0x00fe, 0x2009, 0x0021, 0x080c, ++ 0xac8c, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, ++ 0x2009, 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000, 0x080c, ++ 0xab97, 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xcccc, 0x6023, ++ 0x0001, 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0xac8c, 0x9085, ++ 0x0001, 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0, 0x00c6, ++ 0x0126, 0x2091, 0x8000, 0x080c, 0xac5f, 0x0188, 0x2b08, 0x6112, ++ 0x080c, 0xcccc, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x0000, ++ 0x080c, 0xac8c, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, ++ 0x0cd8, 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818, 0x0026, ++ 0x00b6, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0118, 0x8211, 0xba3e, ++ 0x1140, 0xb8d0, 0x9005, 0x0128, 0xb888, 0x9005, 0x1110, 0xb88b, ++ 0x0001, 0x00be, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, ++ 0x0002, 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110, ++ 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6020, ++ 0x9086, 0x0004, 0x0190, 0x6014, 0x904d, 0x080c, 0xc838, 0x0168, ++ 0xa864, 0x9086, 0x0139, 0x0158, 0x6020, 0x9086, 0x0003, 0x0128, ++ 0xa868, 0xd0fc, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, ++ 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0xac5f, ++ 0x0198, 0x2b08, 0x6112, 0x080c, 0xcccc, 0x6023, 0x0001, 0x2900, ++ 0x6016, 0x080c, 0x31e7, 0x2009, 0x0028, 0x080c, 0xac8c, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, ++ 0x11a8, 0x2011, 0x1824, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, ++ 0x080c, 0xb807, 0x00be, 0x080c, 0xba2a, 0x6003, 0x0001, 0x6007, ++ 0x0029, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0078, 0x6014, 0x0096, ++ 0x2048, 0xa868, 0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, ++ 0xce8b, 0x080c, 0xb5b5, 0x080c, 0xabed, 0x0005, 0x0096, 0x6014, ++ 0x904d, 0x090c, 0x0d7d, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, ++ 0x4005, 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6d80, 0x012e, 0x009e, 0x080c, 0xabed, 0x0c30, 0x0096, ++ 0x9186, 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x6575, 0x00e8, ++ 0x9186, 0x0015, 0x1510, 0x2011, 0x1824, 0x2204, 0x9086, 0x0014, ++ 0x11e0, 0x6010, 0x00b6, 0x2058, 0x080c, 0x66c0, 0x00be, 0x080c, ++ 0xbafb, 0x1198, 0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, ++ 0x0160, 0x2001, 0x0006, 0x080c, 0x6575, 0x6014, 0x2048, 0xa868, ++ 0xd0fc, 0x0170, 0x080c, 0xaffd, 0x0048, 0x6014, 0x2048, 0xa868, ++ 0xd0fc, 0x0528, 0x080c, 0xb5b5, 0x080c, 0xabed, 0x009e, 0x0005, ++ 0x6014, 0x6310, 0x2358, 0x904d, 0x090c, 0x0d7d, 0xa87b, 0x0000, ++ 0xa883, 0x0000, 0xa897, 0x4000, 0x900e, 0x080c, 0x6914, 0x1108, ++ 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0x6d80, 0x012e, 0x080c, 0xabed, 0x08f8, 0x6014, ++ 0x904d, 0x090c, 0x0d7d, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, ++ 0x4005, 0xa89b, 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, ++ 0x080c, 0x6d80, 0x012e, 0x080c, 0xabed, 0x0840, 0xa878, 0x9086, ++ 0x0005, 0x1108, 0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, ++ 0x604b, 0x0000, 0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, ++ 0x2009, 0x8023, 0x080c, 0x921e, 0x0005, 0x00c6, 0x6010, 0x00b6, ++ 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0130, 0x0066, 0x6020, 0x9084, ++ 0x000f, 0x001b, 0x006e, 0x00ce, 0x0005, 0xc556, 0xcb6f, 0xcb6f, ++ 0xcb72, 0xe318, 0xe333, 0xe336, 0xc556, 0xc556, 0xc556, 0xc556, ++ 0xc556, 0xc556, 0xc556, 0xc556, 0xc556, 0x080c, 0x0d7d, 0xa001, ++ 0xa001, 0x0005, 0x0096, 0x6014, 0x904d, 0x0118, 0xa87c, 0xd0e4, ++ 0x1110, 0x009e, 0x0010, 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058, ++ 0xb800, 0x00be, 0xd0bc, 0x0550, 0x2001, 0x1834, 0x2004, 0x9005, ++ 0x1540, 0x00f6, 0x2c78, 0x080c, 0xab97, 0x0508, 0x7810, 0x6012, ++ 0x080c, 0xcccc, 0x7820, 0x9086, 0x0003, 0x0128, 0x7808, 0x603a, ++ 0x2f00, 0x603e, 0x0020, 0x7808, 0x603e, 0x2f00, 0x603a, 0x602e, ++ 0x6023, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x795c, 0x615e, ++ 0x2009, 0x8020, 0x080c, 0x921e, 0x2f60, 0x00fe, 0x0005, 0x2f60, ++ 0x00fe, 0x2001, 0x1988, 0x2004, 0x604a, 0x0005, 0x0016, 0x0096, ++ 0x6814, 0x2048, 0x681c, 0xd0fc, 0xc0fc, 0x681e, 0xa87c, 0x1108, ++ 0xd0e4, 0x0180, 0xc0e4, 0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, ++ 0xa88f, 0x0000, 0xd0cc, 0x0130, 0xc0cc, 0xa87e, 0xa878, 0x2048, ++ 0x080c, 0x0fec, 0x6830, 0x6036, 0x908e, 0x0001, 0x0148, 0x6803, ++ 0x0002, 0x9086, 0x0005, 0x0170, 0x9006, 0x602e, 0x6032, 0x00d0, ++ 0x681c, 0xc085, 0x681e, 0x6803, 0x0004, 0x6824, 0xc0f4, 0x9085, ++ 0x0c00, 0x6826, 0x6814, 0x2048, 0xa8ac, 0x6938, 0x9102, 0xa8b0, ++ 0x693c, 0x9103, 0x1e48, 0x683c, 0x602e, 0x6838, 0x9084, 0xfffc, ++ 0x683a, 0x6032, 0x2d00, 0x603a, 0x6808, 0x603e, 0x6910, 0x6112, ++ 0x695c, 0x615e, 0x6023, 0x0001, 0x6007, 0x0039, 0x6003, 0x0001, ++ 0x2009, 0x8020, 0x080c, 0x921e, 0x009e, 0x001e, 0x0005, 0x6024, ++ 0xd0d4, 0x0510, 0xd0f4, 0x11f8, 0x6038, 0x940a, 0x603c, 0x9303, ++ 0x0230, 0x9105, 0x0120, 0x6024, 0xc0d4, 0xc0f5, 0x0098, 0x643a, ++ 0x633e, 0xac3e, 0xab42, 0x0046, 0x0036, 0x2400, 0xacac, 0x9402, ++ 0xa836, 0x2300, 0xabb0, 0x9303, 0xa83a, 0x003e, 0x004e, 0x6024, ++ 0xc0d4, 0x0000, 0x6026, 0x0005, 0xd0f4, 0x1138, 0xa83c, 0x603a, ++ 0xa840, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x0005, 0x0006, 0x0016, ++ 0x6004, 0x908e, 0x0034, 0x01b8, 0x908e, 0x0035, 0x01a0, 0x908e, ++ 0x0036, 0x0188, 0x908e, 0x0037, 0x0170, 0x908e, 0x0038, 0x0158, ++ 0x908e, 0x0039, 0x0140, 0x908e, 0x003a, 0x0128, 0x908e, 0x003b, ++ 0x0110, 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, ++ 0x0026, 0x0036, 0x00e6, 0x2001, 0x1982, 0x200c, 0x8000, 0x2014, ++ 0x2001, 0x0032, 0x080c, 0x9166, 0x2001, 0x1986, 0x82ff, 0x1110, ++ 0x2011, 0x0014, 0x2202, 0x2001, 0x1984, 0x200c, 0x8000, 0x2014, ++ 0x2071, 0x196c, 0x711a, 0x721e, 0x2001, 0x0064, 0x080c, 0x9166, ++ 0x2001, 0x1987, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, ++ 0x1988, 0x9288, 0x000a, 0x2102, 0x2001, 0x0017, 0x080c, 0xa887, ++ 0x2001, 0x1a89, 0x2102, 0x2001, 0x0032, 0x080c, 0x1679, 0x080c, ++ 0x6a4c, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, ++ 0x0016, 0x00e6, 0x2001, 0x1986, 0x2003, 0x0028, 0x2001, 0x1987, ++ 0x2003, 0x0014, 0x2071, 0x196c, 0x701b, 0x0000, 0x701f, 0x07d0, ++ 0x2001, 0x1988, 0x2009, 0x001e, 0x2102, 0x2001, 0x0017, 0x080c, ++ 0xa887, 0x2001, 0x1a89, 0x2102, 0x2001, 0x0032, 0x080c, 0x1679, ++ 0x00ee, 0x001e, 0x000e, 0x0005, 0x0096, 0x6060, 0x904d, 0x0110, ++ 0x080c, 0x106c, 0x009e, 0x0005, 0x0005, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x080c, 0xab97, 0x0180, 0x2b08, 0x6112, 0x0ca9, 0x6023, ++ 0x0001, 0x2900, 0x6016, 0x2009, 0x0033, 0x080c, 0xac8c, 0x9085, ++ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x00e6, ++ 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1500, 0x7090, 0x9086, ++ 0x0018, 0x11e0, 0x6014, 0x2048, 0xaa3c, 0xd2e4, 0x1160, 0x2c78, ++ 0x080c, 0x975f, 0x01d8, 0x707c, 0xaa50, 0x9206, 0x1160, 0x7080, ++ 0xaa54, 0x9206, 0x1140, 0x6210, 0x00b6, 0x2258, 0xbaa0, 0x00be, ++ 0x900e, 0x080c, 0x323c, 0x080c, 0xaffd, 0x0020, 0x080c, 0xb5b5, ++ 0x080c, 0xabed, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x7060, 0xaa54, ++ 0x9206, 0x0d48, 0x0c80, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, ++ 0xab97, 0x0188, 0x2b08, 0x6112, 0x080c, 0xcccc, 0x6023, 0x0001, ++ 0x2900, 0x6016, 0x2009, 0x004d, 0x080c, 0xac8c, 0x9085, 0x0001, ++ 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, ++ 0x8000, 0x0016, 0x080c, 0xab97, 0x0180, 0x2b08, 0x6112, 0x080c, ++ 0xcccc, 0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x080c, 0xac8c, ++ 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x001e, 0x9006, 0x0cd0, ++ 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0096, 0x00e6, ++ 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1568, 0x7190, 0x6014, ++ 0x2048, 0xa814, 0x8003, 0x9106, 0x1530, 0x20e1, 0x0000, 0x2001, ++ 0x19a0, 0x2003, 0x0000, 0x6014, 0x2048, 0xa830, 0x20a8, 0x8906, ++ 0x8006, 0x8007, 0x9094, 0x003f, 0x22e8, 0x9084, 0xffc0, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x19a0, 0x0016, 0x200c, 0x080c, 0xd565, ++ 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c38, 0x6014, 0x2048, ++ 0xa867, 0x0103, 0x0010, 0x080c, 0xb5b5, 0x080c, 0xabed, 0x00fe, ++ 0x00ee, 0x009e, 0x006e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, ++ 0x0005, 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, ++ 0x11b8, 0x7090, 0x9086, 0x0004, 0x1198, 0x6014, 0x2048, 0x2c78, ++ 0x080c, 0x975f, 0x01a8, 0x707c, 0xaa74, 0x9206, 0x1130, 0x7080, ++ 0xaa78, 0x9206, 0x1110, 0x080c, 0x31e7, 0x080c, 0xaffd, 0x0020, ++ 0x080c, 0xb5b5, 0x080c, 0xabed, 0x00fe, 0x00ee, 0x009e, 0x0005, ++ 0x7060, 0xaa78, 0x9206, 0x0d78, 0x0c80, 0x0096, 0x00e6, 0x00f6, ++ 0x2071, 0x1800, 0x9186, 0x0015, 0x1550, 0x7090, 0x9086, 0x0004, ++ 0x1530, 0x6014, 0x2048, 0x2c78, 0x080c, 0x975f, 0x05f0, 0x707c, ++ 0xaacc, 0x9206, 0x1180, 0x7080, 0xaad0, 0x9206, 0x1160, 0x080c, ++ 0x31e7, 0x0016, 0xa998, 0xaab0, 0x9284, 0x1000, 0xc0fd, 0x080c, ++ 0x5692, 0x001e, 0x0010, 0x080c, 0x547b, 0x080c, 0xc838, 0x0508, ++ 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0080, 0x080c, ++ 0xc838, 0x01b8, 0x6014, 0x2048, 0x080c, 0x547b, 0x1d70, 0xa87b, ++ 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b, 0x0004, 0x0126, ++ 0x2091, 0x8000, 0xa867, 0x0139, 0x080c, 0x6d80, 0x012e, 0x080c, ++ 0xabed, 0x00fe, 0x00ee, 0x009e, 0x0005, 0x7060, 0xaad0, 0x9206, ++ 0x0930, 0x0888, 0x0016, 0x0026, 0xa87c, 0xd0ac, 0x0178, 0xa938, ++ 0xaa34, 0x2100, 0x9205, 0x0150, 0xa890, 0x9106, 0x1118, 0xa88c, ++ 0x9206, 0x0120, 0xa992, 0xaa8e, 0x9085, 0x0001, 0x002e, 0x001e, ++ 0x0005, 0x00b6, 0x00d6, 0x0036, 0x080c, 0xc838, 0x0904, 0xce87, ++ 0x0096, 0x6314, 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, ++ 0x6310, 0x00c6, 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, ++ 0x080c, 0x6914, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, ++ 0xaa96, 0xa99a, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x0031, 0x20a0, 0xb8c4, 0x20e0, 0xb8c8, 0x9080, 0x0006, 0x2098, ++ 0x080c, 0x0fb7, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, ++ 0xb8c8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0fb7, 0x00ce, 0x0090, ++ 0xaa96, 0x3918, 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, ++ 0x0110, 0xa89b, 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, ++ 0x00ff, 0xa89e, 0x080c, 0x6d74, 0x6017, 0x0000, 0x009e, 0x003e, ++ 0x00de, 0x00be, 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, ++ 0x00f6, 0x6214, 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, ++ 0x0000, 0x11a0, 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x25fb, ++ 0x2118, 0x831f, 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, ++ 0x7c3c, 0x2011, 0x8018, 0x080c, 0x4b07, 0x00a8, 0x9096, 0x0001, ++ 0x1148, 0x89ff, 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, ++ 0xa8aa, 0x0048, 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, ++ 0xa8a6, 0x783c, 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, ++ 0x002e, 0x0005, 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, ++ 0x6a38, 0x0008, 0x6a2c, 0x080c, 0xc826, 0x01f0, 0x2260, 0x6120, ++ 0x9186, 0x0003, 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, ++ 0x0140, 0x683c, 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, ++ 0x0020, 0x6008, 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, ++ 0x001e, 0x002e, 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, ++ 0xd1cc, 0x0188, 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, ++ 0x918c, 0x0f00, 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, ++ 0x9115, 0x190c, 0xbeb3, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, ++ 0x0036, 0x901e, 0x0499, 0x01e0, 0x080c, 0xc838, 0x01c8, 0x080c, ++ 0xca27, 0x6037, 0x4000, 0x6014, 0x6017, 0x0000, 0x0096, 0x2048, ++ 0xa87c, 0x080c, 0xca4d, 0x1118, 0x080c, 0xb5b5, 0x0040, 0xa867, ++ 0x0103, 0xa877, 0x0000, 0x83ff, 0x1129, 0x080c, 0x6d80, 0x009e, ++ 0x003e, 0x0005, 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, ++ 0xa882, 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, ++ 0x0005, 0x080c, 0xcb3c, 0xa877, 0x0000, 0x0005, 0x2001, 0x1810, ++ 0x2004, 0xd0ec, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0f4, ++ 0x000e, 0x0005, 0x0006, 0x2001, 0x1810, 0x2004, 0xd0e4, 0x000e, ++ 0x0005, 0x0036, 0x0046, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, ++ 0x2021, 0x0007, 0x080c, 0x4cbe, 0x004e, 0x003e, 0x0005, 0x0c51, ++ 0x1d81, 0x0005, 0x2001, 0x1986, 0x2004, 0x601a, 0x0005, 0x2001, ++ 0x1988, 0x2004, 0x604a, 0x0005, 0x080c, 0xabed, 0x0804, 0x96a0, ++ 0x611c, 0xd1fc, 0xa97c, 0x1108, 0xd1e4, 0x0005, 0x601c, 0xd0fc, ++ 0xa87c, 0x1108, 0xd0e4, 0x0005, 0x601c, 0xd0fc, 0xc0fc, 0x601e, ++ 0xa87c, 0x1108, 0xd0e4, 0x0005, 0x6044, 0xd0fc, 0x0160, 0xd0dc, ++ 0x1128, 0x908c, 0x000f, 0x9186, 0x0005, 0x1118, 0x6003, 0x0003, ++ 0x0010, 0x6003, 0x0001, 0x0005, 0x00b6, 0x0066, 0x6000, 0x90b2, ++ 0x0016, 0x1a0c, 0x0d7d, 0x001b, 0x006e, 0x00be, 0x0005, 0xcfb7, ++ 0xd6c0, 0xd811, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfee, ++ 0xd893, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfb7, 0xcfb7, 0x080c, ++ 0x0d7d, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7d, 0x0013, ++ 0x006e, 0x0005, 0xcfd2, 0xddaa, 0xcfd2, 0xcfd2, 0xcfd2, 0xcfd2, ++ 0xcfd2, 0xcfd2, 0xdd59, 0xddfc, 0xcfd2, 0xe453, 0xe487, 0xe453, ++ 0xe487, 0xcfd2, 0x080c, 0x0d7d, 0x6000, 0x9082, 0x0016, 0x1a0c, ++ 0x0d7d, 0x6000, 0x000a, 0x0005, 0xcfec, 0xda6f, 0xdb38, 0xdb5a, ++ 0xdbd5, 0xcfec, 0xdccf, 0xdc5d, 0xd89d, 0xdd31, 0xdd46, 0xcfec, ++ 0xcfec, 0xcfec, 0xcfec, 0xcfec, 0x080c, 0x0d7d, 0x91b2, 0x0053, ++ 0x1a0c, 0x0d7d, 0x2100, 0x91b2, 0x0040, 0x1a04, 0xd436, 0x0002, ++ 0xd038, 0xd227, 0xd038, 0xd038, 0xd038, 0xd230, 0xd038, 0xd038, ++ 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, ++ 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd03a, ++ 0xd0a1, 0xd0b0, 0xd114, 0xd13f, 0xd1b8, 0xd212, 0xd038, 0xd038, ++ 0xd233, 0xd038, 0xd038, 0xd248, 0xd255, 0xd038, 0xd038, 0xd038, ++ 0xd038, 0xd038, 0xd2d8, 0xd038, 0xd038, 0xd2ec, 0xd038, 0xd038, ++ 0xd2a7, 0xd038, 0xd038, 0xd038, 0xd304, 0xd038, 0xd038, 0xd038, ++ 0xd381, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd038, 0xd3fe, ++ 0x080c, 0x0d7d, 0x080c, 0x6a29, 0x1150, 0x2001, 0x1837, 0x2004, ++ 0xd0cc, 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, 0x1140, 0x6007, ++ 0x0009, 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, 0xd220, 0x080c, ++ 0x69c5, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6210, 0x2258, ++ 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0xa896, 0x080c, 0x93a5, ++ 0x0076, 0x903e, 0x080c, 0x9277, 0x2c08, 0x080c, 0xdfeb, 0x007e, ++ 0x001e, 0x080c, 0xa8b2, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, ++ 0x6610, 0x2658, 0x080c, 0x6634, 0xbe04, 0x9684, 0x00ff, 0x9082, ++ 0x0006, 0x1268, 0x0016, 0x0026, 0x6210, 0x00b6, 0x2258, 0xbaa0, ++ 0x00be, 0x2c08, 0x080c, 0xe6b0, 0x002e, 0x001e, 0x1178, 0x080c, ++ 0xdf19, 0x1904, 0xd10c, 0x080c, 0xdeb5, 0x1120, 0x6007, 0x0008, ++ 0x0804, 0xd220, 0x6007, 0x0009, 0x0804, 0xd220, 0x080c, 0xe14c, ++ 0x0128, 0x080c, 0xdf19, 0x0d78, 0x0804, 0xd10c, 0x6017, 0x1900, ++ 0x0c88, 0x080c, 0x3332, 0x1904, 0xd433, 0x6106, 0x080c, 0xde66, ++ 0x6007, 0x0006, 0x0804, 0xd220, 0x6007, 0x0007, 0x0804, 0xd220, ++ 0x080c, 0xe4c3, 0x1904, 0xd433, 0x080c, 0x3332, 0x1904, 0xd433, ++ 0x00d6, 0x6610, 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, ++ 0x1220, 0x2001, 0x0001, 0x080c, 0x6561, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0006, 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4, ++ 0x00ff, 0x9686, 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686, ++ 0x0005, 0x0110, 0x00de, 0x0480, 0x00e6, 0x2071, 0x0260, 0x7034, ++ 0x9084, 0x0003, 0x1140, 0x7034, 0x9082, 0x0014, 0x0220, 0x7030, ++ 0x9084, 0x0003, 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, ++ 0x00b0, 0x00ee, 0x080c, 0xdf81, 0x1190, 0x9686, 0x0006, 0x1140, ++ 0x0026, 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x323c, 0x002e, ++ 0x080c, 0x66c0, 0x6007, 0x000a, 0x00de, 0x0804, 0xd220, 0x6007, ++ 0x000b, 0x00de, 0x0804, 0xd220, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x6007, 0x0001, 0x0804, 0xd220, 0x080c, 0xe4c3, 0x1904, 0xd433, ++ 0x080c, 0x3332, 0x1904, 0xd433, 0x2071, 0x0260, 0x7034, 0x90b4, ++ 0x0003, 0x1948, 0x90b2, 0x0014, 0x0a30, 0x7030, 0x9084, 0x0003, ++ 0x1910, 0x6610, 0x2658, 0xbe04, 0x9686, 0x0707, 0x09e8, 0x0026, ++ 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x323c, 0x002e, 0x6007, ++ 0x000c, 0x2001, 0x0001, 0x080c, 0xe690, 0x0804, 0xd220, 0x080c, ++ 0x6a29, 0x1140, 0x2001, 0x1837, 0x2004, 0x9084, 0x0009, 0x9086, ++ 0x0008, 0x1110, 0x0804, 0xd047, 0x080c, 0x69c5, 0x6610, 0x2658, ++ 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x06c8, 0x1138, 0x0026, ++ 0x2001, 0x0006, 0x080c, 0x65a1, 0x002e, 0x0050, 0x96b4, 0xff00, ++ 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xd10c, ++ 0x080c, 0xdf8e, 0x1120, 0x6007, 0x000e, 0x0804, 0xd220, 0x0046, ++ 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x31e7, 0x080c, 0xcf67, ++ 0x004e, 0x0016, 0x9006, 0x2009, 0x1848, 0x210c, 0xd1a4, 0x0148, ++ 0x2009, 0x0029, 0x080c, 0xe2c9, 0x6010, 0x2058, 0xb800, 0xc0e5, ++ 0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x0804, 0xd220, 0x2001, ++ 0x0001, 0x080c, 0x6561, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, ++ 0x0004, 0x2019, 0x1805, 0x2011, 0x0270, 0x080c, 0xbbae, 0x003e, ++ 0x002e, 0x001e, 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, ++ 0x9682, 0x0004, 0x0a04, 0xd10c, 0x9682, 0x0007, 0x0a04, 0xd168, ++ 0x0804, 0xd10c, 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xd220, ++ 0x080c, 0x6a29, 0x1140, 0x2001, 0x1837, 0x2004, 0x9084, 0x0009, ++ 0x9086, 0x0008, 0x1110, 0x0804, 0xd047, 0x080c, 0x69c5, 0x6610, ++ 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0698, 0x0150, ++ 0x96b4, 0xff00, 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, ++ 0x1904, 0xd10c, 0x080c, 0xdfbc, 0x1130, 0x080c, 0xdeb5, 0x1118, ++ 0x6007, 0x0010, 0x04e8, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, ++ 0x080c, 0x31e7, 0x080c, 0xcf67, 0x004e, 0x0016, 0x9006, 0x2009, ++ 0x1848, 0x210c, 0xd1a4, 0x0148, 0x2009, 0x0029, 0x080c, 0xe2c9, ++ 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802, 0x001e, 0x004e, 0x6007, ++ 0x0001, 0x00f0, 0x080c, 0xe14c, 0x0140, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0006, 0x0978, 0x0804, 0xd10c, 0x6017, 0x1900, 0x6007, ++ 0x0009, 0x0070, 0x080c, 0x3332, 0x1904, 0xd433, 0x080c, 0xe4c3, ++ 0x1904, 0xd433, 0x080c, 0xd600, 0x1904, 0xd10c, 0x6007, 0x0012, ++ 0x6003, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, 0x6007, ++ 0x0001, 0x6003, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0cb0, ++ 0x6007, 0x0005, 0x0c68, 0x080c, 0xe4c3, 0x1904, 0xd433, 0x080c, ++ 0x3332, 0x1904, 0xd433, 0x080c, 0xd600, 0x1904, 0xd10c, 0x6007, ++ 0x0020, 0x6003, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, ++ 0x080c, 0x3332, 0x1904, 0xd433, 0x6007, 0x0023, 0x6003, 0x0001, ++ 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, 0x080c, 0xe4c3, 0x1904, ++ 0xd433, 0x080c, 0x3332, 0x1904, 0xd433, 0x080c, 0xd600, 0x1904, ++ 0xd10c, 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7244, 0x9286, ++ 0xffff, 0x0180, 0x2c08, 0x080c, 0xc826, 0x01b0, 0x2260, 0x7240, ++ 0x6008, 0x9206, 0x1188, 0x6010, 0x9190, 0x0004, 0x2214, 0x9206, ++ 0x01b8, 0x0050, 0x7240, 0x2c08, 0x9006, 0x080c, 0xe293, 0x1180, ++ 0x7244, 0x9286, 0xffff, 0x01b0, 0x2160, 0x6007, 0x0026, 0x6017, ++ 0x1700, 0x7214, 0x9296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, ++ 0x6020, 0x9086, 0x0007, 0x1d80, 0x6004, 0x9086, 0x0024, 0x1110, ++ 0x080c, 0xabed, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, ++ 0x9225, 0x080c, 0x96a0, 0x00ee, 0x002e, 0x001e, 0x0005, 0x2001, ++ 0x0001, 0x080c, 0x6561, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, ++ 0x0004, 0x2019, 0x1805, 0x2011, 0x0276, 0x080c, 0xbbae, 0x003e, ++ 0x002e, 0x001e, 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xd220, ++ 0x080c, 0xb81f, 0x080c, 0x74e9, 0x1190, 0x0006, 0x0026, 0x0036, ++ 0x080c, 0x7503, 0x1138, 0x080c, 0x77ed, 0x080c, 0x6029, 0x080c, ++ 0x741a, 0x0010, 0x080c, 0x74bd, 0x003e, 0x002e, 0x000e, 0x0005, ++ 0x080c, 0x3332, 0x1904, 0xd433, 0x080c, 0xd600, 0x1904, 0xd10c, ++ 0x6106, 0x080c, 0xd61c, 0x1120, 0x6007, 0x002b, 0x0804, 0xd220, ++ 0x6007, 0x002c, 0x0804, 0xd220, 0x080c, 0xe4c3, 0x1904, 0xd433, ++ 0x080c, 0x3332, 0x1904, 0xd433, 0x080c, 0xd600, 0x1904, 0xd10c, ++ 0x6106, 0x080c, 0xd621, 0x1120, 0x6007, 0x002e, 0x0804, 0xd220, ++ 0x6007, 0x002f, 0x0804, 0xd220, 0x080c, 0x3332, 0x1904, 0xd433, ++ 0x00e6, 0x00d6, 0x00c6, 0x6010, 0x2058, 0xb904, 0x9184, 0x00ff, ++ 0x9086, 0x0006, 0x0158, 0x9184, 0xff00, 0x8007, 0x9086, 0x0006, ++ 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, 0xd227, 0x080c, 0x56de, ++ 0xd0e4, 0x0904, 0xd37e, 0x2071, 0x026c, 0x7010, 0x603a, 0x7014, ++ 0x603e, 0x7108, 0x720c, 0x080c, 0x6a67, 0x0140, 0x6010, 0x2058, ++ 0xb810, 0x9106, 0x1118, 0xb814, 0x9206, 0x0510, 0x080c, 0x6a63, ++ 0x15b8, 0x2069, 0x1800, 0x6880, 0x9206, 0x1590, 0x687c, 0x9106, ++ 0x1578, 0x7210, 0x080c, 0xc826, 0x0590, 0x080c, 0xd4eb, 0x0578, ++ 0x080c, 0xe345, 0x0560, 0x622e, 0x6007, 0x0036, 0x6003, 0x0001, ++ 0x2009, 0x8020, 0x080c, 0x921e, 0x00ce, 0x00de, 0x00ee, 0x0005, ++ 0x7214, 0x9286, 0xffff, 0x0150, 0x080c, 0xc826, 0x01c0, 0x9280, ++ 0x0002, 0x2004, 0x7110, 0x9106, 0x1190, 0x08e0, 0x7210, 0x2c08, ++ 0x9085, 0x0001, 0x080c, 0xe293, 0x2c10, 0x2160, 0x0140, 0x0890, ++ 0x6007, 0x0037, 0x602f, 0x0009, 0x6017, 0x1500, 0x08b8, 0x6007, ++ 0x0037, 0x602f, 0x0003, 0x6017, 0x1700, 0x0880, 0x6007, 0x0012, ++ 0x0868, 0x080c, 0x3332, 0x1904, 0xd433, 0x6010, 0x2058, 0xb804, ++ 0x9084, 0xff00, 0x8007, 0x9086, 0x0006, 0x1904, 0xd227, 0x00e6, ++ 0x00d6, 0x00c6, 0x080c, 0x56de, 0xd0e4, 0x0904, 0xd3f6, 0x2069, ++ 0x1800, 0x2071, 0x026c, 0x7008, 0x603a, 0x720c, 0x623e, 0x9286, ++ 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0x9085, 0x0001, 0x080c, ++ 0xe293, 0x2c10, 0x00ce, 0x05e8, 0x080c, 0xc826, 0x05d0, 0x7108, ++ 0x9280, 0x0002, 0x2004, 0x9106, 0x15a0, 0x00c6, 0x0026, 0x2260, ++ 0x080c, 0xc436, 0x002e, 0x00ce, 0x7118, 0x918c, 0xff00, 0x810f, ++ 0x9186, 0x0001, 0x0178, 0x9186, 0x0005, 0x0118, 0x9186, 0x0007, ++ 0x1198, 0x9280, 0x0005, 0x2004, 0x9005, 0x0170, 0x080c, 0xd4eb, ++ 0x0904, 0xd377, 0x0056, 0x7510, 0x7614, 0x080c, 0xe35e, 0x005e, ++ 0x00ce, 0x00de, 0x00ee, 0x0005, 0x6007, 0x003b, 0x602f, 0x0009, ++ 0x6017, 0x2a00, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, ++ 0x0c78, 0x6007, 0x003b, 0x602f, 0x0003, 0x6017, 0x0300, 0x6003, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, 0x0c10, 0x6007, 0x003b, ++ 0x602f, 0x000b, 0x6017, 0x0000, 0x0804, 0xd34e, 0x00e6, 0x0026, ++ 0x080c, 0x6a29, 0x0550, 0x080c, 0x69c5, 0x080c, 0xe535, 0x1518, ++ 0x2071, 0x1800, 0x70dc, 0x9085, 0x0003, 0x70de, 0x00f6, 0x2079, ++ 0x0100, 0x72b0, 0x9284, 0x00ff, 0x707e, 0x78e6, 0x9284, 0xff00, ++ 0x7280, 0x9205, 0x7082, 0x78ea, 0x00fe, 0x70e7, 0x0000, 0x080c, ++ 0x6a67, 0x0120, 0x2011, 0x1a09, 0x2013, 0x07d0, 0xd0ac, 0x1128, ++ 0x080c, 0x2fb2, 0x0010, 0x080c, 0xe567, 0x002e, 0x00ee, 0x080c, ++ 0xabed, 0x0804, 0xd226, 0x080c, 0xabed, 0x0005, 0x2600, 0x0002, ++ 0xd44a, 0xd47b, 0xd48c, 0xd44a, 0xd44a, 0xd44c, 0xd49d, 0xd44a, ++ 0xd44a, 0xd44a, 0xd469, 0xd44a, 0xd44a, 0xd44a, 0xd4a8, 0xd4b5, ++ 0xd4e6, 0xd44a, 0x080c, 0x0d7d, 0x080c, 0xe4c3, 0x1d20, 0x080c, ++ 0x3332, 0x1d08, 0x080c, 0xd600, 0x1148, 0x7038, 0x6016, 0x6007, ++ 0x0045, 0x6003, 0x0001, 0x080c, 0x9225, 0x0005, 0x080c, 0x31e7, ++ 0x080c, 0xcf67, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x9225, ++ 0x0005, 0x080c, 0xe4c3, 0x1938, 0x080c, 0x3332, 0x1920, 0x080c, ++ 0xd600, 0x1d60, 0x703c, 0x6016, 0x6007, 0x004a, 0x6003, 0x0001, ++ 0x080c, 0x9225, 0x0005, 0x080c, 0x3332, 0x1904, 0xd433, 0x2009, ++ 0x0041, 0x080c, 0xe570, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, ++ 0x9225, 0x080c, 0x96a0, 0x0005, 0x080c, 0x3332, 0x1904, 0xd433, ++ 0x2009, 0x0042, 0x080c, 0xe570, 0x6007, 0x0047, 0x6003, 0x0001, ++ 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, 0x080c, 0x3332, 0x1904, ++ 0xd433, 0x2009, 0x0046, 0x080c, 0xe570, 0x080c, 0xabed, 0x0005, ++ 0x080c, 0xd508, 0x0904, 0xd433, 0x6007, 0x004e, 0x6003, 0x0001, ++ 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, 0x6007, 0x004f, 0x6017, ++ 0x0000, 0x7134, 0x918c, 0x00ff, 0x81ff, 0x0508, 0x9186, 0x0001, ++ 0x1160, 0x7140, 0x2001, 0x19bd, 0x2004, 0x9106, 0x11b0, 0x7144, ++ 0x2001, 0x19be, 0x2004, 0x9106, 0x0190, 0x9186, 0x0002, 0x1168, ++ 0x2011, 0x0276, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, ++ 0x000a, 0x080c, 0xbbc2, 0x009e, 0x0110, 0x6017, 0x0001, 0x6003, ++ 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0005, 0x6007, 0x0050, ++ 0x703c, 0x6016, 0x0ca0, 0x0016, 0x00e6, 0x2071, 0x0260, 0x00b6, ++ 0x00c6, 0x2260, 0x6010, 0x2058, 0xb8d4, 0xd084, 0x0150, 0x7128, ++ 0x6050, 0x9106, 0x1120, 0x712c, 0x604c, 0x9106, 0x0110, 0x9006, ++ 0x0010, 0x9085, 0x0001, 0x00ce, 0x00be, 0x00ee, 0x001e, 0x0005, ++ 0x0016, 0x0096, 0x0086, 0x00e6, 0x01c6, 0x01d6, 0x0126, 0x2091, ++ 0x8000, 0x2071, 0x1800, 0x7090, 0x908a, 0x00f9, 0x16e8, 0x20e1, ++ 0x0000, 0x2001, 0x19a0, 0x2003, 0x0000, 0x080c, 0x1053, 0x05a0, ++ 0x2900, 0x6016, 0x7090, 0x8004, 0xa816, 0x908a, 0x001e, 0x02d0, ++ 0xa833, 0x001e, 0x20a9, 0x001e, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x19a0, 0x0016, 0x200c, 0x0471, 0x001e, ++ 0x2940, 0x080c, 0x1053, 0x01c0, 0x2900, 0xa006, 0x2100, 0x81ff, ++ 0x0180, 0x0c18, 0xa832, 0x20a8, 0xa860, 0x20e8, 0xa85c, 0x9080, ++ 0x001b, 0x20a0, 0x2001, 0x19a0, 0x0016, 0x200c, 0x00b1, 0x001e, ++ 0x0000, 0x9085, 0x0001, 0x0048, 0x2071, 0x1800, 0x7093, 0x0000, ++ 0x6014, 0x2048, 0x080c, 0x0fec, 0x9006, 0x012e, 0x01de, 0x01ce, ++ 0x00ee, 0x008e, 0x009e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8, 0x080c, 0x2189, 0x2099, ++ 0x026c, 0x2001, 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, ++ 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x2189, 0x2099, ++ 0x0260, 0x0ca8, 0x080c, 0x2189, 0x2061, 0x19a0, 0x6004, 0x2098, ++ 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0048, 0x20a8, ++ 0x4003, 0x22a8, 0x8108, 0x080c, 0x2189, 0x2099, 0x0260, 0x0ca8, ++ 0x2061, 0x19a0, 0x2019, 0x0280, 0x3300, 0x931e, 0x0110, 0x6006, ++ 0x0020, 0x2001, 0x0260, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, ++ 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, ++ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x81ff, 0x11b8, ++ 0x080c, 0x21a1, 0x20a1, 0x024c, 0x2001, 0x0014, 0x3518, 0x9312, ++ 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8, 0x4003, 0x82ff, 0x01f8, ++ 0x22a8, 0x8108, 0x080c, 0x21a1, 0x20a1, 0x0240, 0x0c98, 0x080c, ++ 0x21a1, 0x2061, 0x19a3, 0x6004, 0x20a0, 0x6008, 0x3518, 0x9312, ++ 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8, 0x4003, 0x82ff, 0x0138, ++ 0x22a8, 0x8108, 0x080c, 0x21a1, 0x20a1, 0x0240, 0x0c98, 0x2061, ++ 0x19a3, 0x2019, 0x0260, 0x3400, 0x931e, 0x0110, 0x6006, 0x0020, ++ 0x2001, 0x0240, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, 0x9296, ++ 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, ++ 0x00b6, 0x0066, 0x6610, 0x2658, 0xbe04, 0x96b4, 0xff00, 0x8637, ++ 0x9686, 0x0006, 0x0170, 0x9686, 0x0004, 0x0158, 0xbe04, 0x96b4, ++ 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686, 0x0004, 0x0110, 0x9085, ++ 0x0001, 0x006e, 0x00be, 0x0005, 0x00d6, 0x080c, 0xd696, 0x00de, ++ 0x0005, 0x00d6, 0x080c, 0xd6a3, 0x1520, 0x680c, 0x908c, 0xff00, ++ 0x6820, 0x9084, 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e, 0xd1e4, ++ 0x0130, 0x9006, 0x080c, 0xe690, 0x2009, 0x0001, 0x0078, 0xd1ec, ++ 0x0180, 0x6920, 0x918c, 0x00ff, 0x6824, 0x080c, 0x25fb, 0x1148, ++ 0x2001, 0x0001, 0x080c, 0xe690, 0x2110, 0x900e, 0x080c, 0x323c, ++ 0x0018, 0x9085, 0x0001, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, ++ 0x00c6, 0x080c, 0xac5f, 0x0598, 0x0016, 0x0026, 0x00c6, 0x2011, ++ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x25fb, 0x1568, 0x080c, ++ 0x65c4, 0x1550, 0xbe12, 0xbd16, 0x00ce, 0x002e, 0x001e, 0x2b00, ++ 0x6012, 0x080c, 0xe4c3, 0x11c8, 0x080c, 0x3332, 0x11b0, 0x080c, ++ 0xd600, 0x0500, 0x2001, 0x0007, 0x080c, 0x6575, 0x2001, 0x0007, ++ 0x080c, 0x65a1, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, ++ 0x6003, 0x0001, 0x080c, 0x9225, 0x0010, 0x080c, 0xabed, 0x9085, ++ 0x0001, 0x00ce, 0x00be, 0x0005, 0x080c, 0xabed, 0x00ce, 0x002e, ++ 0x001e, 0x0ca8, 0x080c, 0xabed, 0x9006, 0x0c98, 0x2069, 0x026d, ++ 0x6800, 0x9082, 0x0010, 0x1228, 0x6017, 0x0000, 0x9085, 0x0001, ++ 0x0008, 0x9006, 0x0005, 0x6017, 0x0000, 0x2069, 0x026c, 0x6808, ++ 0x9084, 0xff00, 0x9086, 0x0800, 0x1190, 0x6904, 0x9186, 0x0018, ++ 0x0118, 0x9186, 0x0014, 0x1158, 0x810f, 0x6800, 0x9084, 0x00ff, ++ 0x910d, 0x6162, 0x908e, 0x0014, 0x0110, 0x908e, 0x0010, 0x0005, ++ 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0d7d, 0x91b6, 0x0013, 0x1130, ++ 0x2008, 0x91b2, 0x0040, 0x1a04, 0xd7e5, 0x0092, 0x91b6, 0x0027, ++ 0x0120, 0x91b6, 0x0014, 0x190c, 0x0d7d, 0x2001, 0x0007, 0x080c, ++ 0x65a1, 0x080c, 0x95de, 0x080c, 0xac28, 0x080c, 0x96a0, 0x0005, ++ 0xd720, 0xd722, 0xd720, 0xd720, 0xd720, 0xd722, 0xd72f, 0xd7e2, ++ 0xd77f, 0xd7e2, 0xd793, 0xd7e2, 0xd72f, 0xd7e2, 0xd7da, 0xd7e2, ++ 0xd7da, 0xd7e2, 0xd7e2, 0xd720, 0xd720, 0xd720, 0xd720, 0xd720, ++ 0xd720, 0xd720, 0xd720, 0xd720, 0xd720, 0xd720, 0xd722, 0xd720, ++ 0xd7e2, 0xd720, 0xd720, 0xd7e2, 0xd720, 0xd7df, 0xd7e2, 0xd720, ++ 0xd720, 0xd720, 0xd720, 0xd7e2, 0xd7e2, 0xd720, 0xd7e2, 0xd7e2, ++ 0xd720, 0xd72a, 0xd720, 0xd720, 0xd720, 0xd720, 0xd7de, 0xd7e2, ++ 0xd720, 0xd720, 0xd7e2, 0xd7e2, 0xd720, 0xd720, 0xd720, 0xd720, ++ 0x080c, 0x0d7d, 0x080c, 0xcf6a, 0x6003, 0x0002, 0x080c, 0x96a0, ++ 0x0804, 0xd7e4, 0x9006, 0x080c, 0x6561, 0x0804, 0xd7e2, 0x080c, ++ 0x6a63, 0x1904, 0xd7e2, 0x9006, 0x080c, 0x6561, 0x6010, 0x2058, ++ 0xb810, 0x9086, 0x00ff, 0x1140, 0x00f6, 0x2079, 0x1800, 0x78a8, ++ 0x8000, 0x78aa, 0x00fe, 0x0428, 0x6010, 0x2058, 0xb884, 0x9005, ++ 0x1178, 0x080c, 0xcf52, 0x1904, 0xd7e2, 0x0036, 0x0046, 0xbba0, ++ 0x2021, 0x0007, 0x080c, 0x4cbe, 0x004e, 0x003e, 0x0804, 0xd7e2, ++ 0x080c, 0x3363, 0x1904, 0xd7e2, 0x2001, 0x1800, 0x2004, 0x9086, ++ 0x0002, 0x1138, 0x00f6, 0x2079, 0x1800, 0x78a8, 0x8000, 0x78aa, ++ 0x00fe, 0x2001, 0x0002, 0x080c, 0x6575, 0x6023, 0x0001, 0x6003, ++ 0x0001, 0x6007, 0x0002, 0x080c, 0x9225, 0x080c, 0x96a0, 0x6110, ++ 0x2158, 0x2009, 0x0001, 0x080c, 0x864c, 0x0804, 0xd7e4, 0x6610, ++ 0x2658, 0xbe04, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0904, ++ 0xd7e2, 0x9686, 0x0004, 0x0904, 0xd7e2, 0x080c, 0x8eca, 0x2001, ++ 0x0004, 0x0804, 0xd7e0, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003, ++ 0x1158, 0x0036, 0x0046, 0x6010, 0x2058, 0xbba0, 0x2021, 0x0006, ++ 0x080c, 0x4cbe, 0x004e, 0x003e, 0x2001, 0x0006, 0x080c, 0xd7fe, ++ 0x6610, 0x2658, 0xbe04, 0x0066, 0x96b4, 0xff00, 0x8637, 0x9686, ++ 0x0006, 0x006e, 0x0168, 0x2001, 0x0006, 0x080c, 0x65a1, 0x9284, ++ 0x00ff, 0x908e, 0x0007, 0x1120, 0x2001, 0x0006, 0x080c, 0x6575, ++ 0x080c, 0x6a63, 0x11f8, 0x2001, 0x1837, 0x2004, 0xd0a4, 0x01d0, ++ 0xbe04, 0x96b4, 0x00ff, 0x9686, 0x0006, 0x01a0, 0x00f6, 0x2079, ++ 0x1800, 0x78a8, 0x8000, 0x78aa, 0x00fe, 0x0804, 0xd769, 0x2001, ++ 0x0004, 0x0030, 0x2001, 0x0006, 0x0409, 0x0020, 0x0018, 0x0010, ++ 0x080c, 0x65a1, 0x080c, 0xabed, 0x0005, 0x2600, 0x0002, 0xd7f9, ++ 0xd7f9, 0xd7f9, 0xd7f9, 0xd7f9, 0xd7fb, 0xd7f9, 0xd7fb, 0xd7f9, ++ 0xd7f9, 0xd7fb, 0xd7f9, 0xd7f9, 0xd7f9, 0xd7fb, 0xd7fb, 0xd7fb, ++ 0xd7fb, 0x080c, 0x0d7d, 0x080c, 0xabed, 0x0005, 0x0016, 0x00b6, ++ 0x00d6, 0x6110, 0x2158, 0xb900, 0xd184, 0x0138, 0x080c, 0x6575, ++ 0x9006, 0x080c, 0x6561, 0x080c, 0x321c, 0x00de, 0x00be, 0x001e, ++ 0x0005, 0x6610, 0x2658, 0xb804, 0x9084, 0xff00, 0x8007, 0x90b2, ++ 0x000c, 0x1a0c, 0x0d7d, 0x91b6, 0x0015, 0x1110, 0x003b, 0x0028, ++ 0x91b6, 0x0016, 0x190c, 0x0d7d, 0x006b, 0x0005, 0xb69e, 0xb69e, ++ 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0xd87d, 0xd83e, 0xb69e, 0xb69e, ++ 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0xb69e, ++ 0xd87d, 0xd884, 0xb69e, 0xb69e, 0xb69e, 0xb69e, 0x00f6, 0x080c, ++ 0x6a63, 0x11d8, 0x080c, 0xcf52, 0x11c0, 0x6010, 0x905d, 0x01a8, ++ 0xb884, 0x9005, 0x0190, 0x9006, 0x080c, 0x6561, 0x2001, 0x0002, ++ 0x080c, 0x6575, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, ++ 0x080c, 0x9225, 0x080c, 0x96a0, 0x00f0, 0x2011, 0x0263, 0x2204, ++ 0x8211, 0x220c, 0x080c, 0x25fb, 0x11b0, 0x080c, 0x6625, 0x0118, ++ 0x080c, 0xabed, 0x0080, 0xb810, 0x0006, 0xb814, 0x0006, 0xb884, ++ 0x0006, 0x080c, 0x6043, 0x000e, 0xb886, 0x000e, 0xb816, 0x000e, ++ 0xb812, 0x080c, 0xabed, 0x00fe, 0x0005, 0x6604, 0x96b6, 0x001e, ++ 0x1110, 0x080c, 0xabed, 0x0005, 0x080c, 0xba27, 0x1148, 0x6003, ++ 0x0001, 0x6007, 0x0001, 0x080c, 0x9225, 0x080c, 0x96a0, 0x0010, ++ 0x080c, 0xabed, 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d7d, ++ 0x080c, 0x95de, 0x080c, 0xac28, 0x0005, 0x9182, 0x0040, 0x0002, ++ 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b5, 0xd8b3, 0xd8b3, 0xd8b3, ++ 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, 0xd8b3, ++ 0xd8b3, 0xd8b3, 0xd8b3, 0x080c, 0x0d7d, 0x0096, 0x00b6, 0x00d6, ++ 0x00e6, 0x00f6, 0x0046, 0x0026, 0x6210, 0x2258, 0xb8bc, 0x9005, ++ 0x11b0, 0x6007, 0x0044, 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, ++ 0x0904, 0xd91c, 0x080c, 0xe684, 0x1170, 0x9486, 0x2000, 0x1158, ++ 0x2009, 0x0001, 0x2011, 0x0200, 0x080c, 0x88ec, 0x0020, 0x9026, ++ 0x080c, 0xe508, 0x0c30, 0x080c, 0x103a, 0x090c, 0x0d7d, 0x6003, ++ 0x0007, 0xa867, 0x010d, 0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, ++ 0xa88e, 0x6008, 0xa8e2, 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, ++ 0x0016, 0xa876, 0xa87f, 0x0000, 0xa883, 0x0000, 0xa887, 0x0036, ++ 0x080c, 0x6d80, 0x001e, 0x080c, 0xe684, 0x1904, 0xd97c, 0x9486, ++ 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, 0xe239, 0x0804, 0xd97c, ++ 0x9486, 0x0200, 0x1120, 0x080c, 0xe1c9, 0x0804, 0xd97c, 0x9486, ++ 0x0400, 0x0120, 0x9486, 0x1000, 0x1904, 0xd97c, 0x2019, 0x0002, ++ 0x080c, 0xe1e8, 0x0804, 0xd97c, 0x2069, 0x1a6f, 0x6a00, 0xd284, ++ 0x0904, 0xd9e6, 0x9284, 0x0300, 0x1904, 0xd9df, 0x6804, 0x9005, ++ 0x0904, 0xd9c7, 0x2d78, 0x6003, 0x0007, 0x080c, 0x1053, 0x0904, ++ 0xd988, 0x7800, 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, ++ 0x0000, 0x2001, 0x180f, 0x2004, 0xd084, 0x1904, 0xd9ea, 0x9006, ++ 0xa802, 0xa867, 0x0116, 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, ++ 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, ++ 0xb92c, 0xa9be, 0xb930, 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, ++ 0x7044, 0x9084, 0x0003, 0x9080, 0xd984, 0x2005, 0xa87e, 0x20a9, ++ 0x000a, 0x2001, 0x0270, 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, ++ 0x200b, 0x0080, 0x20e1, 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, ++ 0x4003, 0x200b, 0x0000, 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, ++ 0x200c, 0xa9ae, 0x080c, 0x6d83, 0x002e, 0x004e, 0x00fe, 0x00ee, ++ 0x00de, 0x00be, 0x009e, 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, ++ 0x2001, 0x1810, 0x2004, 0xd084, 0x0120, 0x080c, 0x103a, 0x1904, ++ 0xd931, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x2009, ++ 0xa022, 0x080c, 0x921e, 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, ++ 0xff00, 0x9086, 0x1200, 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, ++ 0x6114, 0x918c, 0xf700, 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, ++ 0x6007, 0x0043, 0x2009, 0xa025, 0x080c, 0x921e, 0x0828, 0x6868, ++ 0x602e, 0x686c, 0x6032, 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, ++ 0x0041, 0x2009, 0xa022, 0x080c, 0x921e, 0x0804, 0xd97c, 0x2001, ++ 0x180e, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x4b07, ++ 0x6017, 0xf300, 0x0010, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, ++ 0x0041, 0x2009, 0xa022, 0x080c, 0x921e, 0x0804, 0xd97c, 0x6017, ++ 0xf500, 0x0c98, 0x6017, 0xf600, 0x0804, 0xd99c, 0x6017, 0xf200, ++ 0x0804, 0xd99c, 0xa867, 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, ++ 0x2c00, 0xa87a, 0x7044, 0x9084, 0x0003, 0x9080, 0xd984, 0x2005, ++ 0xa87e, 0x2928, 0x6010, 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, ++ 0xb82c, 0xa88e, 0xb830, 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, ++ 0x2009, 0x0205, 0x2104, 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, ++ 0x2011, 0x0210, 0x2214, 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, ++ 0x1a0c, 0x0d7d, 0x8210, 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, ++ 0x20e8, 0xa85c, 0x9080, 0x0029, 0x20a0, 0x2011, 0xda66, 0x2041, ++ 0x0001, 0x223d, 0x9784, 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, ++ 0x4003, 0x931a, 0x0530, 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, ++ 0x2001, 0x0260, 0x2098, 0x0c68, 0x2950, 0x080c, 0x1053, 0x0170, ++ 0x2900, 0xb002, 0xa867, 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, ++ 0xa85c, 0x9080, 0x001b, 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, ++ 0x902d, 0x0118, 0x080c, 0x106c, 0x0cc8, 0x080c, 0x106c, 0x0804, ++ 0xd988, 0x2548, 0x8847, 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, ++ 0x200b, 0x0000, 0x080c, 0xe26c, 0x0804, 0xd97c, 0x8010, 0x0004, ++ 0x801a, 0x0006, 0x8018, 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, ++ 0x0013, 0x1160, 0x6004, 0x908a, 0x0057, 0x1a0c, 0x0d7d, 0x9082, ++ 0x0040, 0x0a0c, 0x0d7d, 0x2008, 0x0804, 0xdaf1, 0x9186, 0x0051, ++ 0x0108, 0x0040, 0x080c, 0xaaa8, 0x01e8, 0x9086, 0x0002, 0x0904, ++ 0xdb38, 0x00c0, 0x9186, 0x0027, 0x0180, 0x9186, 0x0048, 0x0128, ++ 0x9186, 0x0014, 0x0150, 0x190c, 0x0d7d, 0x080c, 0xaaa8, 0x0150, ++ 0x9086, 0x0004, 0x0904, 0xdbd5, 0x0028, 0x6004, 0x9082, 0x0040, ++ 0x2008, 0x001a, 0x080c, 0xaca9, 0x0005, 0xdab8, 0xdaba, 0xdaba, ++ 0xdae1, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, ++ 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, 0xdab8, ++ 0x080c, 0x0d7d, 0x080c, 0x95de, 0x080c, 0x96a0, 0x0036, 0x0096, ++ 0x6014, 0x904d, 0x01d8, 0x080c, 0xc838, 0x01c0, 0x6003, 0x0002, ++ 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1178, 0x2019, ++ 0x0004, 0x080c, 0xe26c, 0x6017, 0x0000, 0x6018, 0x9005, 0x1120, ++ 0x2001, 0x1987, 0x2004, 0x601a, 0x6003, 0x0007, 0x009e, 0x003e, ++ 0x0005, 0x0096, 0x080c, 0x95de, 0x080c, 0x96a0, 0x080c, 0xc838, ++ 0x0120, 0x6014, 0x2048, 0x080c, 0x106c, 0x080c, 0xac28, 0x009e, ++ 0x0005, 0x0002, 0xdb05, 0xdb1a, 0xdb07, 0xdb2f, 0xdb05, 0xdb05, ++ 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0xdb05, ++ 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0xdb05, 0x080c, 0x0d7d, 0x0096, ++ 0x6014, 0x2048, 0xa87c, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, ++ 0x0043, 0x080c, 0xac8c, 0x0010, 0x6003, 0x0004, 0x080c, 0x96a0, ++ 0x009e, 0x0005, 0x080c, 0xc838, 0x0138, 0x6114, 0x0096, 0x2148, ++ 0xa97c, 0x009e, 0xd1ec, 0x1138, 0x080c, 0x88c1, 0x080c, 0xabed, ++ 0x080c, 0x96a0, 0x0005, 0x080c, 0xe4cc, 0x0db0, 0x0cc8, 0x6003, ++ 0x0001, 0x6007, 0x0041, 0x2009, 0xa022, 0x080c, 0x921e, 0x0005, ++ 0x9182, 0x0040, 0x0002, 0xdb4e, 0xdb50, 0xdb4e, 0xdb4e, 0xdb4e, ++ 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, ++ 0xdb4e, 0xdb4e, 0xdb4e, 0xdb4e, 0xdb51, 0xdb4e, 0x080c, 0x0d7d, ++ 0x0005, 0x00d6, 0x080c, 0x88c1, 0x00de, 0x080c, 0xe524, 0x080c, ++ 0xabed, 0x0005, 0x9182, 0x0040, 0x0002, 0xdb70, 0xdb70, 0xdb70, ++ 0xdb70, 0xdb70, 0xdb70, 0xdb70, 0xdb70, 0xdb70, 0xdb72, 0xdb9d, ++ 0xdb70, 0xdb70, 0xdb70, 0xdb70, 0xdb9d, 0xdb70, 0xdb70, 0xdb70, ++ 0x080c, 0x0d7d, 0x6014, 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0168, ++ 0x908c, 0x0003, 0x918e, 0x0002, 0x0180, 0x6144, 0xd1e4, 0x1168, ++ 0x2009, 0x0041, 0x009e, 0x0804, 0xdc5d, 0x6003, 0x0007, 0x601b, ++ 0x0000, 0x080c, 0x88c1, 0x009e, 0x0005, 0x6014, 0x2048, 0xa97c, ++ 0xd1ec, 0x1130, 0x080c, 0x88c1, 0x080c, 0xabed, 0x009e, 0x0005, ++ 0x080c, 0xe4cc, 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c, 0x200c, ++ 0xc1d4, 0x2102, 0x0036, 0x080c, 0x963b, 0x080c, 0x96a0, 0x6014, ++ 0x0096, 0x2048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, ++ 0x0188, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x0140, 0xa8ac, ++ 0x6330, 0x931a, 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e, 0x6003, ++ 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xe26c, 0x6018, 0x9005, ++ 0x1128, 0x2001, 0x1987, 0x2004, 0x8003, 0x601a, 0x6017, 0x0000, ++ 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x9182, 0x0040, 0x0002, ++ 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, ++ 0xdbee, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, 0xdbec, ++ 0xdbec, 0xdbec, 0xdbec, 0xdc39, 0x080c, 0x0d7d, 0x6014, 0x0096, ++ 0x2048, 0xa834, 0xaa38, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, ++ 0xd1bc, 0x1190, 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128, 0x2009, ++ 0x0041, 0x009e, 0x0804, 0xdc5d, 0x6003, 0x0007, 0x601b, 0x0000, ++ 0x080c, 0x88c1, 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58, 0x0006, ++ 0x0046, 0xacac, 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030, 0x9420, ++ 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8, 0x6110, ++ 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009, 0x180e, ++ 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, ++ 0x00e9, 0x080c, 0x88c3, 0x009e, 0x0005, 0x6003, 0x0002, 0x009e, ++ 0x0005, 0x6024, 0xd0f4, 0x0128, 0x080c, 0x1670, 0x1904, 0xdbee, ++ 0x0005, 0x6014, 0x0096, 0x2048, 0xa834, 0xa938, 0x009e, 0x9105, ++ 0x1120, 0x080c, 0x1670, 0x1904, 0xdbee, 0x0005, 0xd2fc, 0x0140, ++ 0x8002, 0x8000, 0x8212, 0x9291, 0x0000, 0x2009, 0x0009, 0x0010, ++ 0x2009, 0x0015, 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040, 0x0208, ++ 0x0062, 0x9186, 0x0013, 0x0120, 0x9186, 0x0014, 0x190c, 0x0d7d, ++ 0x6024, 0xd0dc, 0x090c, 0x0d7d, 0x0005, 0xdc80, 0xdc8c, 0xdc98, ++ 0xdca4, 0xdc80, 0xdc80, 0xdc80, 0xdc80, 0xdc87, 0xdc82, 0xdc82, ++ 0xdc80, 0xdc80, 0xdc80, 0xdc80, 0xdc82, 0xdc80, 0xdc82, 0xdc80, ++ 0x080c, 0x0d7d, 0x6024, 0xd0dc, 0x090c, 0x0d7d, 0x0005, 0x6014, ++ 0x9005, 0x190c, 0x0d7d, 0x0005, 0x6003, 0x0001, 0x6106, 0x0126, ++ 0x2091, 0x8000, 0x2009, 0xa022, 0x080c, 0x9200, 0x012e, 0x0005, ++ 0x6003, 0x0004, 0x6106, 0x0126, 0x2091, 0x8000, 0x2009, 0xa001, ++ 0x080c, 0x921e, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, 0x080c, ++ 0x1c03, 0x0126, 0x2091, 0x8000, 0x6014, 0x0096, 0x2048, 0xa87c, ++ 0xd0fc, 0x0188, 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x6024, ++ 0xd0cc, 0x1148, 0xd0c4, 0x1138, 0xa8a8, 0x9005, 0x1120, 0x6144, ++ 0x918d, 0xb035, 0x0018, 0x6144, 0x918d, 0xa035, 0x009e, 0x080c, ++ 0x9265, 0x012e, 0x0005, 0x6144, 0x918d, 0xa032, 0x0cb8, 0x0126, ++ 0x2091, 0x8000, 0x0036, 0x0096, 0x9182, 0x0040, 0x0023, 0x009e, ++ 0x003e, 0x012e, 0x0005, 0xdceb, 0xdced, 0xdd02, 0xdd1c, 0xdceb, ++ 0xdceb, 0xdceb, 0xdceb, 0xdceb, 0xdceb, 0xdceb, 0xdceb, 0xdceb, ++ 0xdceb, 0xdceb, 0xdceb, 0x080c, 0x0d7d, 0x6014, 0x2048, 0xa87c, ++ 0xd0fc, 0x0510, 0x909c, 0x0003, 0x939e, 0x0003, 0x01e8, 0x6003, ++ 0x0001, 0x6106, 0x0126, 0x2091, 0x8000, 0x2009, 0xa022, 0x080c, ++ 0x921e, 0x0470, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0168, 0x909c, ++ 0x0003, 0x939e, 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x2009, ++ 0xa001, 0x080c, 0x921e, 0x00e0, 0x901e, 0x6316, 0x631a, 0x2019, ++ 0x0004, 0x080c, 0xe26c, 0x00a0, 0x6014, 0x2048, 0xa87c, 0xd0fc, ++ 0x0d98, 0x909c, 0x0003, 0x939e, 0x0003, 0x0d70, 0x6003, 0x0003, ++ 0x6106, 0x080c, 0x1c03, 0x6144, 0x918d, 0xa035, 0x080c, 0x9265, ++ 0x0005, 0x080c, 0x95de, 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, ++ 0x080c, 0xe621, 0x0036, 0x2019, 0x0029, 0x080c, 0xe26c, 0x003e, ++ 0x009e, 0x080c, 0xac28, 0x080c, 0x96a0, 0x0005, 0x080c, 0x963b, ++ 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, 0xe621, 0x0036, ++ 0x2019, 0x0029, 0x080c, 0xe26c, 0x003e, 0x009e, 0x080c, 0xac28, ++ 0x0005, 0x9182, 0x0085, 0x0002, 0xdd6b, 0xdd69, 0xdd69, 0xdd77, ++ 0xdd69, 0xdd69, 0xdd69, 0xdd69, 0xdd69, 0xdd69, 0xdd69, 0xdd69, ++ 0xdd69, 0x080c, 0x0d7d, 0x6003, 0x000b, 0x6106, 0x0126, 0x2091, ++ 0x8000, 0x2009, 0x8020, 0x080c, 0x921e, 0x012e, 0x0005, 0x0026, ++ 0x00e6, 0x080c, 0xe4c3, 0x0118, 0x080c, 0xabed, 0x0440, 0x2071, ++ 0x0260, 0x7224, 0x6216, 0x2001, 0x180e, 0x2004, 0xd0e4, 0x0150, ++ 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2011, 0x014e, ++ 0x080c, 0xaf1a, 0x7220, 0x080c, 0xe102, 0x0118, 0x6007, 0x0086, ++ 0x0040, 0x6007, 0x0087, 0x7224, 0x9296, 0xffff, 0x1110, 0x6007, ++ 0x0086, 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, 0x00ee, ++ 0x002e, 0x0005, 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, ++ 0x0a0c, 0x0d7d, 0x908a, 0x0092, 0x1a0c, 0x0d7d, 0x9082, 0x0085, ++ 0x00a2, 0x9186, 0x0027, 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, ++ 0xaca9, 0x0050, 0x2001, 0x0007, 0x080c, 0x65a1, 0x080c, 0x95de, ++ 0x080c, 0xac28, 0x080c, 0x96a0, 0x0005, 0xddda, 0xdddc, 0xdddc, ++ 0xddda, 0xddda, 0xddda, 0xddda, 0xddda, 0xddda, 0xddda, 0xddda, ++ 0xddda, 0xddda, 0x080c, 0x0d7d, 0x080c, 0xac28, 0x080c, 0x96a0, ++ 0x0005, 0x9182, 0x0085, 0x0a0c, 0x0d7d, 0x9182, 0x0092, 0x1a0c, ++ 0x0d7d, 0x9182, 0x0085, 0x0002, 0xddf9, 0xddf9, 0xddf9, 0xddfb, ++ 0xddf9, 0xddf9, 0xddf9, 0xddf9, 0xddf9, 0xddf9, 0xddf9, 0xddf9, ++ 0xddf9, 0x080c, 0x0d7d, 0x0005, 0x9186, 0x0013, 0x0148, 0x9186, ++ 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0xaca9, 0x0020, ++ 0x080c, 0x95de, 0x080c, 0xac28, 0x0005, 0x0036, 0x080c, 0xe524, ++ 0x604b, 0x0000, 0x2019, 0x000b, 0x0031, 0x6023, 0x0006, 0x6003, ++ 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, 0x2001, ++ 0x0382, 0x2004, 0x9084, 0x0007, 0x0006, 0x9086, 0x0003, 0x0110, ++ 0x080c, 0xa896, 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0xa218, ++ 0x009e, 0x008e, 0x1550, 0x0076, 0x2c38, 0x080c, 0xa2c3, 0x007e, ++ 0x1520, 0x6000, 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007, ++ 0x01e0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xe524, 0x080c, ++ 0xcf6a, 0x080c, 0x1a6a, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, ++ 0xc838, 0x0110, 0x080c, 0xe26c, 0x009e, 0x6017, 0x0000, 0x080c, ++ 0xe524, 0x6023, 0x0007, 0x080c, 0xcf6a, 0x000e, 0x9086, 0x0003, ++ 0x0110, 0x080c, 0xa8b2, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, ++ 0x00b6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938, 0x783c, 0x080c, ++ 0x25fb, 0x15e8, 0x0016, 0x00c6, 0x080c, 0x6625, 0x15b0, 0x001e, ++ 0x00c6, 0x2160, 0x080c, 0xcf67, 0x00ce, 0x002e, 0x0026, 0x0016, ++ 0x080c, 0xa896, 0x2019, 0x0029, 0x080c, 0xa38a, 0x080c, 0x93a5, ++ 0x0076, 0x903e, 0x080c, 0x9277, 0x007e, 0x001e, 0x0076, 0x903e, ++ 0x080c, 0xdfeb, 0x007e, 0x080c, 0xa8b2, 0x0026, 0xba04, 0x9294, ++ 0xff00, 0x8217, 0x9286, 0x0006, 0x0118, 0x9286, 0x0004, 0x1118, ++ 0xbaa0, 0x080c, 0x32be, 0x002e, 0xbc84, 0x001e, 0x080c, 0x6043, ++ 0xbe12, 0xbd16, 0xbc86, 0x9006, 0x0010, 0x00ce, 0x001e, 0x015e, ++ 0x003e, 0x00be, 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00b6, ++ 0x0016, 0x2009, 0x1824, 0x2104, 0x9086, 0x0074, 0x1904, 0xdf0e, ++ 0x2069, 0x0260, 0x6944, 0x9182, 0x0100, 0x06e0, 0x6940, 0x9184, ++ 0x8000, 0x0904, 0xdf0b, 0x2001, 0x197c, 0x2004, 0x9005, 0x1140, ++ 0x6010, 0x2058, 0xb884, 0x9005, 0x0118, 0x9184, 0x0800, 0x0598, ++ 0x6948, 0x918a, 0x0001, 0x0648, 0x080c, 0xe689, 0x0118, 0x6978, ++ 0xd1fc, 0x11b8, 0x2009, 0x0205, 0x200b, 0x0001, 0x693c, 0x81ff, ++ 0x1198, 0x6944, 0x9182, 0x0100, 0x02a8, 0x6940, 0x81ff, 0x1178, ++ 0x6948, 0x918a, 0x0001, 0x0288, 0x6950, 0x918a, 0x0001, 0x0298, ++ 0x00d0, 0x6017, 0x0100, 0x00a0, 0x6017, 0x0300, 0x0088, 0x6017, ++ 0x0500, 0x0070, 0x6017, 0x0700, 0x0058, 0x6017, 0x0900, 0x0040, ++ 0x6017, 0x0b00, 0x0028, 0x6017, 0x0f00, 0x0010, 0x6017, 0x2d00, ++ 0x9085, 0x0001, 0x0008, 0x9006, 0x001e, 0x00be, 0x00de, 0x00ce, ++ 0x0005, 0x00c6, 0x00b6, 0x0026, 0x0036, 0x0156, 0x6210, 0x2258, ++ 0xbb04, 0x9394, 0x00ff, 0x9286, 0x0006, 0x0180, 0x9286, 0x0004, ++ 0x0168, 0x9394, 0xff00, 0x8217, 0x9286, 0x0006, 0x0138, 0x9286, ++ 0x0004, 0x0120, 0x080c, 0x6634, 0x0804, 0xdf7a, 0x2011, 0x0276, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xbbc2, ++ 0x009e, 0x15c8, 0x2011, 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x0006, 0x080c, 0xbbc2, 0x009e, 0x1568, 0x0046, 0x0016, ++ 0xbaa0, 0x2220, 0x9006, 0x2009, 0x1848, 0x210c, 0xd1a4, 0x0138, ++ 0x2009, 0x0029, 0x080c, 0xe2c9, 0xb800, 0xc0e5, 0xb802, 0x080c, ++ 0xa896, 0x2019, 0x0029, 0x080c, 0x93a5, 0x0076, 0x2039, 0x0000, ++ 0x080c, 0x9277, 0x2c08, 0x080c, 0xdfeb, 0x007e, 0x080c, 0xa8b2, ++ 0x2001, 0x0007, 0x080c, 0x65a1, 0x2001, 0x0007, 0x080c, 0x6575, ++ 0x001e, 0x004e, 0x9006, 0x015e, 0x003e, 0x002e, 0x00be, 0x00ce, ++ 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800, 0x9086, 0x0800, 0x0118, ++ 0x6017, 0x0000, 0x0008, 0x9006, 0x00de, 0x0005, 0x00b6, 0x00f6, ++ 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0x026c, 0x7930, 0x7834, ++ 0x080c, 0x25fb, 0x11d0, 0x080c, 0x6625, 0x11b8, 0x2011, 0x0270, ++ 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xbbc2, ++ 0x009e, 0x1158, 0x2011, 0x0274, 0x20a9, 0x0004, 0x0096, 0x2b48, ++ 0x2019, 0x0006, 0x080c, 0xbbc2, 0x009e, 0x015e, 0x003e, 0x002e, ++ 0x001e, 0x00fe, 0x00be, 0x0005, 0x00b6, 0x0006, 0x0016, 0x0026, ++ 0x0036, 0x0156, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, ++ 0x25fb, 0x11d0, 0x080c, 0x6625, 0x11b8, 0x2011, 0x0276, 0x20a9, ++ 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a, 0x080c, 0xbbc2, 0x009e, ++ 0x1158, 0x2011, 0x027a, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, ++ 0x0006, 0x080c, 0xbbc2, 0x009e, 0x015e, 0x003e, 0x002e, 0x001e, ++ 0x000e, 0x00be, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, ++ 0x0056, 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x080c, 0xa8f4, ++ 0x0106, 0x190c, 0xa896, 0x2740, 0x2029, 0x19f3, 0x252c, 0x2021, ++ 0x19fa, 0x2424, 0x2061, 0x1ddc, 0x2071, 0x1800, 0x7654, 0x7074, ++ 0x81ff, 0x0150, 0x0006, 0x9186, 0x1b32, 0x000e, 0x0128, 0x8001, ++ 0x9602, 0x1a04, 0xe090, 0x0018, 0x9606, 0x0904, 0xe090, 0x080c, ++ 0x8b90, 0x0904, 0xe087, 0x2100, 0x9c06, 0x0904, 0xe087, 0x080c, ++ 0xe30a, 0x1904, 0xe087, 0x080c, 0xe6a6, 0x0904, 0xe087, 0x080c, ++ 0xe2fa, 0x0904, 0xe087, 0x6720, 0x9786, 0x0001, 0x1148, 0x080c, ++ 0x3363, 0x0904, 0xe0d2, 0x6004, 0x9086, 0x0000, 0x1904, 0xe0d2, ++ 0x9786, 0x0004, 0x0904, 0xe0d2, 0x9786, 0x0007, 0x0904, 0xe087, ++ 0x2500, 0x9c06, 0x0904, 0xe087, 0x2400, 0x9c06, 0x0904, 0xe087, ++ 0x88ff, 0x0118, 0x605c, 0x9906, 0x15d0, 0x0096, 0x6043, 0xffff, ++ 0x6000, 0x9086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1a6a, 0x001e, ++ 0x9786, 0x000a, 0x0148, 0x080c, 0xca4d, 0x1130, 0x080c, 0xb5b5, ++ 0x009e, 0x080c, 0xac28, 0x0418, 0x6014, 0x2048, 0x080c, 0xc838, ++ 0x01d8, 0x9786, 0x0003, 0x1588, 0xa867, 0x0103, 0xa87c, 0xd0cc, ++ 0x0130, 0x0096, 0xa878, 0x2048, 0x080c, 0x0fec, 0x009e, 0xab7a, ++ 0xa877, 0x0000, 0x080c, 0xe621, 0x0016, 0x080c, 0xcb36, 0x080c, ++ 0x6d74, 0x001e, 0x080c, 0xca27, 0x009e, 0x080c, 0xac28, 0x9ce0, ++ 0x001c, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1210, 0x0804, 0xe004, ++ 0x010e, 0x190c, 0xa8b2, 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, ++ 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0x9786, 0x0006, 0x1150, ++ 0x9386, 0x0005, 0x0128, 0x080c, 0xe621, 0x080c, 0xe26c, 0x08e0, ++ 0x009e, 0x08e8, 0x9786, 0x0009, 0x11f8, 0x6000, 0x9086, 0x0004, ++ 0x01c0, 0x6000, 0x9086, 0x0003, 0x11a0, 0x080c, 0x963b, 0x0096, ++ 0x6114, 0x2148, 0x080c, 0xc838, 0x0118, 0x6010, 0x080c, 0x6d80, ++ 0x009e, 0x00c6, 0x080c, 0xabed, 0x00ce, 0x0036, 0x080c, 0x96a0, ++ 0x003e, 0x009e, 0x0804, 0xe087, 0x9786, 0x000a, 0x0904, 0xe06e, ++ 0x0804, 0xe06c, 0x81ff, 0x0904, 0xe087, 0x9180, 0x0001, 0x2004, ++ 0x9086, 0x0018, 0x0138, 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, ++ 0x1904, 0xe087, 0x6000, 0x9086, 0x0002, 0x1904, 0xe087, 0x080c, ++ 0xca3c, 0x0138, 0x080c, 0xca4d, 0x1904, 0xe087, 0x080c, 0xb5b5, ++ 0x0038, 0x080c, 0x321c, 0x080c, 0xca4d, 0x1110, 0x080c, 0xb5b5, ++ 0x080c, 0xac28, 0x0804, 0xe087, 0xa864, 0x9084, 0x00ff, 0x9086, ++ 0x0039, 0x0005, 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, 0x9006, ++ 0x080c, 0xe293, 0x001e, 0x0120, 0x6020, 0x9084, 0x000f, 0x001b, ++ 0x00ee, 0x00ce, 0x0005, 0xe121, 0xe121, 0xe121, 0xe121, 0xe121, ++ 0xe121, 0xe123, 0xe121, 0xe121, 0xe121, 0xe121, 0xac28, 0xac28, ++ 0xe121, 0x9006, 0x0005, 0x0036, 0x0046, 0x0016, 0x7010, 0x00b6, ++ 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2009, 0x0020, 0x080c, 0xe2c9, ++ 0x001e, 0x004e, 0x2019, 0x0002, 0x080c, 0xde1b, 0x003e, 0x9085, ++ 0x0001, 0x0005, 0x0096, 0x080c, 0xc838, 0x0140, 0x6014, 0x904d, ++ 0x080c, 0xc443, 0x687b, 0x0005, 0x080c, 0x6d80, 0x009e, 0x080c, ++ 0xac28, 0x9085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x6561, ++ 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1805, ++ 0x2011, 0x0276, 0x080c, 0xbbae, 0x003e, 0x002e, 0x001e, 0x015e, ++ 0x9005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, ++ 0x00b6, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0x1ddc, 0x2079, ++ 0x0001, 0x8fff, 0x0904, 0xe1bc, 0x2071, 0x1800, 0x7654, 0x7074, ++ 0x8001, 0x9602, 0x1a04, 0xe1bc, 0x88ff, 0x0120, 0x2800, 0x9c06, ++ 0x1590, 0x2078, 0x080c, 0xe2fa, 0x0570, 0x2400, 0x9c06, 0x0558, ++ 0x6720, 0x9786, 0x0006, 0x1538, 0x9786, 0x0007, 0x0520, 0x88ff, ++ 0x1140, 0x6010, 0x9b06, 0x11f8, 0x85ff, 0x0118, 0x605c, 0x9106, ++ 0x11d0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xe524, 0x080c, ++ 0xcf6a, 0x080c, 0x1a6a, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c, ++ 0xc838, 0x0120, 0x0046, 0x080c, 0xe26c, 0x004e, 0x009e, 0x080c, ++ 0xac28, 0x88ff, 0x1198, 0x9ce0, 0x001c, 0x2001, 0x181a, 0x2004, ++ 0x9c02, 0x1210, 0x0804, 0xe171, 0x9006, 0x012e, 0x00be, 0x006e, ++ 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x98c5, 0x0001, ++ 0x0ca0, 0x080c, 0xa896, 0x00b6, 0x0076, 0x0056, 0x0086, 0x9046, ++ 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6210, 0x2258, 0x0096, ++ 0x904e, 0x080c, 0xa218, 0x009e, 0x008e, 0x903e, 0x080c, 0xa2c3, ++ 0x080c, 0xe162, 0x005e, 0x007e, 0x00be, 0x080c, 0xa8b2, 0x0005, ++ 0x080c, 0xa896, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, ++ 0x2c20, 0x2128, 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, ++ 0x6625, 0x1190, 0x0056, 0x0086, 0x9046, 0x2508, 0x2029, 0x0001, ++ 0x0096, 0x904e, 0x080c, 0xa218, 0x009e, 0x008e, 0x903e, 0x080c, ++ 0xa2c3, 0x080c, 0xe162, 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, ++ 0xe1f5, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x080c, ++ 0xa8b2, 0x0005, 0x080c, 0xa896, 0x00b6, 0x0076, 0x0056, 0x6210, ++ 0x2258, 0x0086, 0x9046, 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, ++ 0x904e, 0x080c, 0xa218, 0x009e, 0x008e, 0x903e, 0x080c, 0xa2c3, ++ 0x2c20, 0x080c, 0xe162, 0x005e, 0x007e, 0x00be, 0x080c, 0xa8b2, ++ 0x0005, 0x080c, 0xa896, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, ++ 0x0156, 0x2c20, 0x20a9, 0x0800, 0x900e, 0x0016, 0x0036, 0x080c, ++ 0x6625, 0x11a0, 0x0086, 0x9046, 0x2828, 0x0046, 0x2021, 0x0001, ++ 0x080c, 0xe508, 0x004e, 0x0096, 0x904e, 0x080c, 0xa218, 0x009e, ++ 0x008e, 0x903e, 0x080c, 0xa2c3, 0x080c, 0xe162, 0x003e, 0x001e, ++ 0x8108, 0x1f04, 0xe245, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, ++ 0x00be, 0x080c, 0xa8b2, 0x0005, 0x0016, 0x00f6, 0x080c, 0xc836, ++ 0x0198, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0046, 0x0180, 0xa800, ++ 0x907d, 0x0138, 0xa803, 0x0000, 0xab82, 0x080c, 0x6d80, 0x2f48, ++ 0x0cb0, 0xab82, 0x080c, 0x6d80, 0x00fe, 0x001e, 0x0005, 0xa800, ++ 0x907d, 0x0130, 0xa803, 0x0000, 0x080c, 0x6d80, 0x2f48, 0x0cb8, ++ 0x080c, 0x6d80, 0x0c88, 0x00e6, 0x0046, 0x0036, 0x2061, 0x1ddc, ++ 0x9005, 0x1138, 0x2071, 0x1800, 0x7454, 0x7074, 0x8001, 0x9402, ++ 0x12f8, 0x2100, 0x9c06, 0x0188, 0x6000, 0x9086, 0x0000, 0x0168, ++ 0x6008, 0x9206, 0x1150, 0x6320, 0x9386, 0x0009, 0x01b0, 0x6010, ++ 0x91a0, 0x0004, 0x2424, 0x9406, 0x0140, 0x9ce0, 0x001c, 0x2001, ++ 0x181a, 0x2004, 0x9c02, 0x1220, 0x0c20, 0x9085, 0x0001, 0x0008, ++ 0x9006, 0x003e, 0x004e, 0x00ee, 0x0005, 0x631c, 0xd3c4, 0x1d68, ++ 0x0c30, 0x0096, 0x0006, 0x080c, 0x103a, 0x000e, 0x090c, 0x0d7d, ++ 0xaae2, 0xa867, 0x010d, 0xa88e, 0x0026, 0x2010, 0x080c, 0xc826, ++ 0x2001, 0x0000, 0x0120, 0x2200, 0x9080, 0x0017, 0x2004, 0x002e, ++ 0xa87a, 0x9186, 0x0020, 0x0110, 0xa8e3, 0xffff, 0xa986, 0xac76, ++ 0xa87f, 0x0000, 0x2001, 0x198e, 0x2004, 0xa882, 0x9006, 0xa802, ++ 0xa86a, 0xa88a, 0x0126, 0x2091, 0x8000, 0x080c, 0x6d80, 0x012e, ++ 0x009e, 0x0005, 0x6700, 0x9786, 0x0000, 0x0158, 0x9786, 0x0001, ++ 0x0140, 0x9786, 0x000a, 0x0128, 0x9786, 0x0009, 0x0110, 0x9085, ++ 0x0001, 0x0005, 0x00e6, 0x6010, 0x9075, 0x0138, 0x00b6, 0x2058, ++ 0xb8a0, 0x00be, 0x9206, 0x00ee, 0x0005, 0x9085, 0x0001, 0x0cd8, ++ 0x0016, 0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, 0x6134, 0x918c, ++ 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, ++ 0x0005, 0x2001, 0x1987, 0x2004, 0x601a, 0x2009, 0x8020, 0x080c, ++ 0x921e, 0x001e, 0x0005, 0xa001, 0xa001, 0x0005, 0x6024, 0xd0e4, ++ 0x0158, 0xd0cc, 0x0118, 0x080c, 0xcb7d, 0x0030, 0x080c, 0xe524, ++ 0x080c, 0x88c1, 0x080c, 0xabed, 0x0005, 0x9280, 0x0008, 0x2004, ++ 0x9084, 0x000f, 0x0002, 0xe359, 0xe359, 0xe359, 0xe35b, 0xe359, ++ 0xe35b, 0xe35b, 0xe359, 0xe35b, 0xe359, 0xe359, 0xe359, 0xe359, ++ 0xe359, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x9280, 0x0008, ++ 0x2004, 0x9084, 0x000f, 0x0002, 0xe372, 0xe372, 0xe372, 0xe372, ++ 0xe372, 0xe372, 0xe37f, 0xe372, 0xe372, 0xe372, 0xe372, 0xe372, ++ 0xe372, 0xe372, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, ++ 0x6003, 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, 0x0005, 0x0096, ++ 0x00c6, 0x2260, 0x080c, 0xe524, 0x604b, 0x0000, 0x6024, 0xc0f4, ++ 0xc0e4, 0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, 0x2268, 0x9186, ++ 0x0007, 0x1904, 0xe3d8, 0x6814, 0x9005, 0x0138, 0x2048, 0xa87c, ++ 0xd0fc, 0x1118, 0x00de, 0x009e, 0x08a8, 0x6007, 0x003a, 0x6003, ++ 0x0001, 0x2009, 0x8020, 0x080c, 0x921e, 0x00c6, 0x2d60, 0x6100, ++ 0x9186, 0x0002, 0x1904, 0xe44f, 0x6014, 0x9005, 0x1138, 0x6000, ++ 0x9086, 0x0007, 0x190c, 0x0d7d, 0x0804, 0xe44f, 0x2048, 0x080c, ++ 0xc838, 0x1130, 0x0028, 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, ++ 0x2048, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x1168, 0xa87c, ++ 0xc0dc, 0xc0f4, 0xa87e, 0xa880, 0xc0fc, 0xa882, 0x2009, 0x0043, ++ 0x080c, 0xdc5d, 0x0804, 0xe44f, 0x2009, 0x0041, 0x0804, 0xe449, ++ 0x9186, 0x0005, 0x15a0, 0x6814, 0x2048, 0xa87c, 0xd0bc, 0x1120, ++ 0x00de, 0x009e, 0x0804, 0xe372, 0xd0b4, 0x0128, 0xd0fc, 0x090c, ++ 0x0d7d, 0x0804, 0xe393, 0x6007, 0x003a, 0x6003, 0x0001, 0x2009, ++ 0x8020, 0x080c, 0x921e, 0x00c6, 0x2d60, 0x6100, 0x9186, 0x0002, ++ 0x0120, 0x9186, 0x0004, 0x1904, 0xe44f, 0x6814, 0x2048, 0xa97c, ++ 0xc1f4, 0xc1dc, 0xa97e, 0xa980, 0xc1fc, 0xc1bc, 0xa982, 0x00f6, ++ 0x2c78, 0x080c, 0x1731, 0x00fe, 0x2009, 0x0042, 0x04d0, 0x0036, ++ 0x080c, 0x103a, 0x090c, 0x0d7d, 0xa867, 0x010d, 0x9006, 0xa802, ++ 0xa86a, 0xa88a, 0x2d18, 0xab8e, 0xa887, 0x0045, 0x2c00, 0xa892, ++ 0x6038, 0xa8a2, 0x2360, 0x6024, 0xc0dd, 0x6026, 0x6010, 0x00b6, ++ 0x2058, 0xb8a0, 0x00be, 0x2004, 0x635c, 0xab7a, 0xa876, 0x9006, ++ 0xa87e, 0xa882, 0xad9a, 0xae96, 0xa89f, 0x0001, 0x080c, 0x6d80, ++ 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xde1b, 0x2d00, 0x600a, ++ 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, 0x634a, 0x003e, ++ 0x0038, 0x604b, 0x0000, 0x6003, 0x0007, 0x080c, 0xdc5d, 0x00ce, ++ 0x00de, 0x009e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, ++ 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, 0x080c, 0x95de, ++ 0x0036, 0x0096, 0x6014, 0x2048, 0x2019, 0x0004, 0x080c, 0xe26c, ++ 0x009e, 0x003e, 0x080c, 0x96a0, 0x0005, 0x9186, 0x0014, 0x0d70, ++ 0x080c, 0xaca9, 0x0005, 0xe482, 0xe480, 0xe480, 0xe480, 0xe480, ++ 0xe480, 0xe482, 0xe480, 0xe480, 0xe480, 0xe480, 0xe480, 0xe480, ++ 0x080c, 0x0d7d, 0x6003, 0x000c, 0x080c, 0x96a0, 0x0005, 0x9182, ++ 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x001a, 0x080c, 0xaca9, ++ 0x0005, 0xe49e, 0xe49e, 0xe49e, 0xe49e, 0xe4a0, 0xe4c0, 0xe49e, ++ 0xe49e, 0xe49e, 0xe49e, 0xe49e, 0xe49e, 0xe49e, 0x080c, 0x0d7d, ++ 0x00d6, 0x2c68, 0x080c, 0xab97, 0x01b0, 0x6003, 0x0001, 0x6007, ++ 0x001e, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, ++ 0x613e, 0x600b, 0xffff, 0x6910, 0x6112, 0x6023, 0x0004, 0x2009, ++ 0x8020, 0x080c, 0x921e, 0x2d60, 0x080c, 0xabed, 0x00de, 0x0005, ++ 0x080c, 0xabed, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, ++ 0x00be, 0xd0ec, 0x00ee, 0x0005, 0x2009, 0x1867, 0x210c, 0xd1ec, ++ 0x05b0, 0x6003, 0x0002, 0x6024, 0xc0e5, 0x6026, 0xd0cc, 0x0150, ++ 0x2001, 0x1988, 0x2004, 0x604a, 0x2009, 0x1867, 0x210c, 0xd1f4, ++ 0x1520, 0x00a0, 0x2009, 0x1867, 0x210c, 0xd1f4, 0x0128, 0x6024, ++ 0xc0e4, 0x6026, 0x9006, 0x00d8, 0x2001, 0x1988, 0x200c, 0x2001, ++ 0x1986, 0x2004, 0x9100, 0x9080, 0x000a, 0x604a, 0x6010, 0x00b6, ++ 0x2058, 0xb8bc, 0x00be, 0x0008, 0x2104, 0x9005, 0x0118, 0x9088, ++ 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0x9085, 0x0001, 0x0005, ++ 0x0016, 0x00c6, 0x00e6, 0x615c, 0xb8bc, 0x2060, 0x8cff, 0x0180, ++ 0x84ff, 0x1118, 0x605c, 0x9106, 0x1138, 0x600c, 0x2072, 0x080c, ++ 0x88c1, 0x080c, 0xabed, 0x0010, 0x9cf0, 0x0003, 0x2e64, 0x0c70, ++ 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, 0x00b6, 0x6010, 0x2058, ++ 0xb8bc, 0x2068, 0x9005, 0x0130, 0x9c06, 0x0110, 0x680c, 0x0cd0, ++ 0x600c, 0x680e, 0x00be, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, ++ 0x2011, 0x182c, 0x2204, 0x9084, 0x00ff, 0x2019, 0x026e, 0x2334, ++ 0x9636, 0x1508, 0x8318, 0x2334, 0x2204, 0x9084, 0xff00, 0x9636, ++ 0x11d0, 0x2011, 0x0270, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, ++ 0x2019, 0x000a, 0x080c, 0xbbc2, 0x009e, 0x1168, 0x2011, 0x0274, ++ 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, 0x0006, 0x080c, ++ 0xbbc2, 0x009e, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6, ++ 0x2071, 0x1800, 0x080c, 0x5fbc, 0x080c, 0x2fb2, 0x00ee, 0x0005, ++ 0x0096, 0x0026, 0x080c, 0x103a, 0x090c, 0x0d7d, 0xa85c, 0x9080, ++ 0x001a, 0x20a0, 0x20a9, 0x000c, 0xa860, 0x20e8, 0x9006, 0x4004, ++ 0x9186, 0x0046, 0x1118, 0xa867, 0x0136, 0x0038, 0xa867, 0x0138, ++ 0x9186, 0x0041, 0x0110, 0xa87b, 0x0001, 0x7038, 0x9084, 0xff00, ++ 0x7240, 0x9294, 0xff00, 0x8007, 0x9215, 0xaa9a, 0x9186, 0x0046, ++ 0x1168, 0x7038, 0x9084, 0x00ff, 0x723c, 0x9294, 0xff00, 0x9215, ++ 0xaa9e, 0x723c, 0x9294, 0x00ff, 0xaaa2, 0x0060, 0x7040, 0x9084, ++ 0x00ff, 0x7244, 0x9294, 0xff00, 0x9215, 0xaa9e, 0x7244, 0x9294, ++ 0x00ff, 0xaaa2, 0x9186, 0x0046, 0x1118, 0x9e90, 0x0012, 0x0010, ++ 0x9e90, 0x001a, 0x2204, 0x8007, 0xa8a6, 0x8210, 0x2204, 0x8007, ++ 0xa8aa, 0x8210, 0x2204, 0x8007, 0xa8ae, 0x8210, 0x2204, 0x8007, ++ 0xa8b2, 0x8210, 0x9186, 0x0046, 0x11b8, 0x9e90, 0x0016, 0x2204, ++ 0x8007, 0xa8b6, 0x8210, 0x2204, 0x8007, 0xa8ba, 0x8210, 0x2204, ++ 0x8007, 0xa8be, 0x8210, 0x2204, 0x8007, 0xa8c2, 0x8210, 0x2011, ++ 0x0205, 0x2013, 0x0001, 0x00b0, 0x9e90, 0x001e, 0x2204, 0x8007, ++ 0xa8b6, 0x8210, 0x2204, 0x8007, 0xa8ba, 0x2011, 0x0205, 0x2013, ++ 0x0001, 0x2011, 0x0260, 0x2204, 0x8007, 0xa8be, 0x8210, 0x2204, ++ 0x8007, 0xa8c2, 0x9186, 0x0046, 0x1118, 0x2011, 0x0262, 0x0010, ++ 0x2011, 0x026a, 0x0146, 0x01d6, 0x0036, 0x20a9, 0x0001, 0x2019, ++ 0x0008, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, 0x2204, ++ 0x8007, 0x4004, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x01ce, 0x013e, ++ 0x2011, 0x0205, 0x2013, 0x0000, 0x002e, 0x080c, 0x6d80, 0x009e, ++ 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0fc, ++ 0x0108, 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5, 0xa882, 0x0005, ++ 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, ++ 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0x19f3, 0x252c, 0x2021, ++ 0x19fa, 0x2424, 0x2061, 0x1ddc, 0x2071, 0x1800, 0x7654, 0x7074, ++ 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, 0x9786, 0x0008, ++ 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, 0x01d0, 0x080c, ++ 0xe2fa, 0x01b8, 0x080c, 0xe30a, 0x11a0, 0x6000, 0x9086, 0x0004, ++ 0x1120, 0x0016, 0x080c, 0x1a6a, 0x001e, 0x080c, 0xca3c, 0x1110, ++ 0x080c, 0x321c, 0x080c, 0xca4d, 0x1110, 0x080c, 0xb5b5, 0x080c, ++ 0xac28, 0x9ce0, 0x001c, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1208, ++ 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, ++ 0x00ce, 0x00de, 0x00ee, 0x0005, 0x2001, 0x1810, 0x2004, 0xd0dc, ++ 0x0005, 0x0006, 0x2001, 0x1837, 0x2004, 0xd09c, 0x000e, 0x0005, ++ 0x0006, 0x0036, 0x0046, 0x080c, 0xcf52, 0x0168, 0x2019, 0xffff, ++ 0x9005, 0x0128, 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, ++ 0x0004, 0x080c, 0x4cbe, 0x004e, 0x003e, 0x000e, 0x6004, 0x9086, ++ 0x0001, 0x1128, 0x080c, 0xa38a, 0x080c, 0xac28, 0x9006, 0x0005, ++ 0x00e6, 0x00c6, 0x00b6, 0x0046, 0x2061, 0x1ddc, 0x2071, 0x1800, ++ 0x7454, 0x7074, 0x8001, 0x9402, 0x12b8, 0x2100, 0x9c06, 0x0148, ++ 0x6000, 0x9086, 0x0000, 0x0128, 0x6010, 0x2058, 0xb8a0, 0x9206, ++ 0x0140, 0x9ce0, 0x001c, 0x2001, 0x181a, 0x2004, 0x9c02, 0x1220, ++ 0x0c60, 0x9085, 0x0001, 0x0008, 0x9006, 0x004e, 0x00be, 0x00ce, ++ 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, ++ 0x2071, 0x1840, 0xd5a4, 0x0118, 0x7004, 0x8000, 0x7006, 0xd5b4, ++ 0x0118, 0x7000, 0x8000, 0x7002, 0xd5ac, 0x0178, 0x2500, 0x9084, ++ 0x0007, 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, 0x0130, 0x908e, ++ 0x0005, 0x0118, 0x2071, 0xfffe, 0x0089, 0x001e, 0x00ee, 0x000e, ++ 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, ++ 0xfff6, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e05, 0x8000, ++ 0x2077, 0x1220, 0x8e70, 0x2e05, 0x8000, 0x2077, 0x0005, 0x00e6, ++ 0x2071, 0xfff4, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xfff8, ++ 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, ++ 0x2071, 0x1840, 0x7014, 0x8000, 0x7016, 0x00ee, 0x000e, 0x012e, ++ 0x0005, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, ++ 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, ++ 0x8000, 0x7155 ++}; ++#ifdef UNIQUE_FW_NAME ++unsigned short fw2322ipx_length01 = 0xdf42; ++#else ++unsigned short risc_code_length01 = 0xdf42; ++#endif ++ ++/* ++ * ++ */ ++ ++unsigned long rseqipx_code_addr01 = 0x0001c000 ; ++unsigned short rseqipx_code01[] = { ++0x000b, 0x0003, 0x0000, 0x09d8, 0x0001, 0xc000, 0x0008, 0x8064, ++ 0x0000, 0x0010, 0x0000, 0x8066, 0x0008, 0x0101, 0x0003, 0xc007, ++ 0x0008, 0x80e0, 0x0008, 0xff00, 0x0000, 0x80e2, 0x0008, 0xff00, ++ 0x0008, 0x0162, 0x0000, 0x8066, 0x0008, 0xa101, 0x000b, 0xc00f, ++ 0x0008, 0x0d02, 0x0000, 0x8060, 0x0000, 0x0400, 0x0003, 0x60c2, ++ 0x0003, 0x5817, 0x000b, 0x7ae0, 0x000b, 0x521c, 0x000b, 0xc813, ++ 0x0009, 0xbac0, 0x0000, 0x008a, 0x0003, 0x8813, 0x0000, 0x15fc, ++ 0x000b, 0xb013, 0x0009, 0xc4c0, 0x0000, 0x7000, 0x0001, 0xffa0, ++ 0x0000, 0x2000, 0x0003, 0x9394, 0x0008, 0x808c, 0x0000, 0x0001, ++ 0x0007, 0x0000, 0x0007, 0x0000, 0x0000, 0x40d4, 0x000a, 0x4047, ++ 0x0008, 0x808c, 0x0000, 0x0002, 0x0007, 0x0000, 0x0003, 0x082e, ++ 0x0000, 0x4022, 0x0003, 0x0034, 0x0008, 0x4122, 0x0009, 0xeac0, ++ 0x0008, 0xff00, 0x0009, 0xffe0, 0x0008, 0x0500, 0x0003, 0x0bbb, ++ 0x0002, 0x4447, 0x000b, 0x8bb8, 0x0008, 0x0bfe, 0x0001, 0x11a0, ++ 0x0003, 0x139a, 0x0001, 0x0ca0, 0x0003, 0x139a, 0x0001, 0x9180, ++ 0x0000, 0x0004, 0x0000, 0x8060, 0x0000, 0x0400, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc042, 0x0008, 0x808c, ++ 0x0008, 0x0000, 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x0004, ++ 0x0000, 0x8066, 0x0000, 0x0411, 0x0003, 0xc04a, 0x0000, 0x03fe, ++ 0x0001, 0x43e0, 0x0003, 0x8b97, 0x0009, 0xc2c0, 0x0008, 0x00ff, ++ 0x0001, 0x02e0, 0x0003, 0x8b97, 0x0001, 0x9180, 0x0008, 0x0005, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0000, 0x0019, 0x000b, 0xc059, 0x0002, 0x0240, 0x000b, 0x0b94, ++ 0x0008, 0x00fc, 0x0003, 0x3397, 0x000a, 0x0244, 0x000b, 0x086b, ++ 0x000c, 0x01f5, 0x0001, 0x9180, 0x0000, 0x0007, 0x0008, 0x7f62, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0002, 0x0234, 0x0008, 0x7f04, ++ 0x0000, 0x8066, 0x0000, 0x040a, 0x000b, 0xc06a, 0x000a, 0x0248, ++ 0x000b, 0x0875, 0x0001, 0x9180, 0x0008, 0x0006, 0x0008, 0x7f62, ++ 0x0008, 0x8002, 0x0008, 0x0003, 0x0000, 0x8066, 0x0000, 0x020a, ++ 0x000b, 0xc074, 0x0000, 0x112a, 0x0008, 0x002e, 0x0008, 0x022c, ++ 0x0002, 0x3a44, 0x0003, 0x8813, 0x0008, 0x808c, 0x0000, 0x0002, ++ 0x0008, 0x1760, 0x0008, 0x8062, 0x0008, 0x000f, 0x0000, 0x8066, ++ 0x0008, 0x0011, 0x000b, 0xc081, 0x0008, 0x01fe, 0x0009, 0x42e0, ++ 0x000b, 0x8b87, 0x0000, 0x00fe, 0x0001, 0x43e0, 0x000b, 0x8b87, ++ 0x0000, 0x1734, 0x0000, 0x1530, 0x0008, 0x1632, 0x0008, 0x0d2a, ++ 0x0001, 0x9880, 0x0008, 0x0012, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x1e0a, 0x000b, 0xc093, ++ 0x0008, 0x808a, 0x0008, 0x0003, 0x0000, 0x1a60, 0x0008, 0x8062, ++ 0x0000, 0x0002, 0x0003, 0x5899, 0x0000, 0x8066, 0x0000, 0x3679, ++ 0x000b, 0xc09c, 0x000b, 0x589d, 0x0008, 0x8054, 0x0008, 0x0011, ++ 0x0000, 0x8074, 0x0008, 0x1010, 0x0008, 0x1efc, 0x0003, 0x3013, ++ 0x0004, 0x00a6, 0x0003, 0x0013, 0x0000, 0x1c60, 0x0000, 0x1b62, ++ 0x0000, 0x8066, 0x0008, 0x0231, 0x000b, 0xc0aa, 0x000b, 0x58ab, ++ 0x0008, 0x0140, 0x0000, 0x0242, 0x0002, 0x1f43, 0x0003, 0x88b5, ++ 0x0000, 0x0d44, 0x0008, 0x0d46, 0x0008, 0x0348, 0x0008, 0x044a, ++ 0x0003, 0x00b9, 0x0008, 0x0344, 0x0008, 0x0446, 0x0008, 0x0548, ++ 0x0000, 0x064a, 0x000a, 0x1948, 0x000b, 0x08bc, 0x0008, 0x0d4a, ++ 0x000b, 0x58bc, 0x0008, 0x8054, 0x0000, 0x0001, 0x0000, 0x8074, ++ 0x0008, 0x2020, 0x000f, 0x4000, 0x0000, 0x4820, 0x0008, 0x0bfe, ++ 0x0009, 0x10a0, 0x0003, 0x1123, 0x0001, 0x0ca0, 0x0003, 0x1123, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0000, 0x0008, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc0cf, ++ 0x0001, 0x80e0, 0x0008, 0x0003, 0x000b, 0x8923, 0x0000, 0x49b4, ++ 0x0002, 0x4b4e, 0x000b, 0x892c, 0x0008, 0x808a, 0x0000, 0x0004, ++ 0x0000, 0x18fe, 0x0001, 0x10e0, 0x000b, 0x88dd, 0x0002, 0x192f, ++ 0x0008, 0x7f32, 0x0008, 0x15fe, 0x0001, 0x10e0, 0x000b, 0x88e2, ++ 0x0002, 0x162f, 0x0008, 0x7f2c, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0009, 0x9080, 0x0000, 0x0007, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x0003, 0xc0e9, 0x000a, 0x004f, 0x000b, 0x891a, ++ 0x000a, 0x0040, 0x0003, 0x0904, 0x0002, 0x004e, 0x0003, 0x0904, ++ 0x0002, 0x0030, 0x0002, 0x7f2f, 0x0000, 0x7f00, 0x0000, 0x8066, ++ 0x0008, 0x000a, 0x000b, 0xc0f5, 0x0008, 0x1010, 0x0004, 0x01dc, ++ 0x000b, 0xb0fd, 0x000c, 0x035b, 0x000c, 0x01c6, 0x000b, 0x7814, ++ 0x0003, 0x0013, 0x0000, 0x0806, 0x0008, 0x8010, 0x0000, 0x001f, ++ 0x000c, 0x035b, 0x0000, 0x0310, 0x000c, 0x035b, 0x0003, 0x00fb, ++ 0x000a, 0x002f, 0x0000, 0x7f00, 0x0000, 0x8066, 0x0008, 0x000a, ++ 0x000b, 0xc108, 0x000c, 0x019f, 0x000a, 0x0040, 0x000b, 0x091d, ++ 0x000c, 0x020c, 0x0000, 0x8000, 0x0000, 0x0002, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0006, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x000a, 0x000b, 0xc116, 0x0000, 0x8072, ++ 0x0000, 0x4000, 0x0003, 0x00fb, 0x0008, 0x8010, 0x0008, 0x001e, ++ 0x000b, 0x011f, 0x0008, 0x8010, 0x0008, 0x001d, 0x000c, 0x035b, ++ 0x0008, 0x1010, 0x000c, 0x035b, 0x000b, 0x0014, 0x0002, 0x4b4e, ++ 0x0003, 0x0929, 0x0008, 0x808a, 0x0000, 0x0004, 0x000b, 0x6129, ++ 0x000f, 0x8000, 0x0008, 0x808a, 0x0000, 0x0004, 0x000b, 0x0014, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0011, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, 0x0003, 0xc133, ++ 0x000a, 0x004f, 0x0003, 0x8990, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0009, 0x9080, 0x0008, 0x0005, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x000b, 0xc13d, 0x0008, 0x0060, 0x0008, 0x8062, ++ 0x0000, 0x001f, 0x0000, 0x8066, 0x0000, 0x0209, 0x000b, 0xc143, ++ 0x000a, 0x014b, 0x000b, 0x0990, 0x0008, 0x8062, 0x0008, 0x000f, ++ 0x0000, 0x8066, 0x0000, 0x0211, 0x000b, 0xc14a, 0x0008, 0x01fe, ++ 0x0001, 0x02d0, 0x0003, 0x8990, 0x0004, 0x01a8, 0x000b, 0x0990, ++ 0x0008, 0x03a0, 0x0008, 0x8004, 0x0000, 0x0002, 0x0000, 0x8006, ++ 0x0000, 0x0043, 0x0008, 0x4908, 0x0008, 0x808a, 0x0000, 0x0004, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0000, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x041a, 0x0003, 0xc15f, ++ 0x000b, 0xe160, 0x0008, 0x4908, 0x0008, 0x480a, 0x0008, 0x808a, ++ 0x0000, 0x0004, 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x002b, ++ 0x0000, 0x8066, 0x0000, 0x0411, 0x0003, 0xc16a, 0x0008, 0x04fe, ++ 0x0009, 0x02a0, 0x0003, 0x9171, 0x0002, 0x0500, 0x000b, 0x098d, ++ 0x0003, 0x0172, 0x0000, 0x05fe, 0x0001, 0x03a0, 0x000b, 0x118d, ++ 0x0000, 0x0d0c, 0x0008, 0x0d0e, 0x0008, 0x0d10, 0x0000, 0x0d12, ++ 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x000d, 0x0000, 0x8066, ++ 0x0008, 0x0832, 0x0003, 0xc17d, 0x0000, 0x800a, 0x0000, 0x8005, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0009, 0x9080, 0x0008, 0x0011, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0a12, 0x0003, 0xc187, ++ 0x0008, 0x5006, 0x0008, 0x100e, 0x0004, 0x01b3, 0x000b, 0x7814, ++ 0x0003, 0x0013, 0x0008, 0x0208, 0x0008, 0x030a, 0x0003, 0x0174, ++ 0x000c, 0x019f, 0x0008, 0x808a, 0x0000, 0x0004, 0x0008, 0x8010, ++ 0x0008, 0x0021, 0x000c, 0x035b, 0x0008, 0x1010, 0x000c, 0x035b, ++ 0x0000, 0x4810, 0x000c, 0x035b, 0x0008, 0x4910, 0x000c, 0x035b, ++ 0x0008, 0x808a, 0x0000, 0x0004, 0x000b, 0x0014, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0009, 0x9080, 0x0000, 0x0002, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0xb40a, 0x0003, 0xc1a6, 0x000f, 0x4000, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x0a62, 0x0000, 0x8066, ++ 0x0000, 0x0411, 0x000b, 0xc1ad, 0x0002, 0x0210, 0x0001, 0xffc0, ++ 0x0000, 0x0007, 0x0009, 0x03e0, 0x000f, 0x4000, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0001, 0x8380, 0x0000, 0x0002, 0x0009, 0x0a80, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0000, 0x0e0a, 0x0003, 0xc1bb, ++ 0x0002, 0x0300, 0x0001, 0xffc0, 0x0000, 0x0007, 0x0000, 0x7f06, ++ 0x0002, 0x0a00, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x060a, ++ 0x000b, 0xc1c4, 0x000f, 0x4000, 0x0000, 0x0da0, 0x0008, 0x0da2, ++ 0x0008, 0x0da4, 0x0009, 0x8880, 0x0000, 0x0001, 0x0008, 0x7f62, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x8066, 0x0008, 0xa012, ++ 0x0000, 0x0da6, 0x0008, 0x0da8, 0x0000, 0x0daa, 0x0000, 0x0dac, ++ 0x0003, 0xc1d4, 0x0009, 0x8880, 0x0008, 0x0009, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0xa03a, 0x000b, 0xc1da, 0x000f, 0x4000, ++ 0x0009, 0x8880, 0x0008, 0x0005, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc1e3, ++ 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x000d, 0x0000, 0x8066, ++ 0x0008, 0x0021, 0x000b, 0xc1e9, 0x0000, 0x00fe, 0x0001, 0x01d0, ++ 0x000b, 0x89f2, 0x0008, 0x02fe, 0x0009, 0x03d0, 0x0003, 0x09f2, ++ 0x0000, 0x0d06, 0x000f, 0x4000, 0x0000, 0x8006, 0x0000, 0x0001, ++ 0x000f, 0x4000, 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x002b, ++ 0x0000, 0x8066, 0x0008, 0xa041, 0x0003, 0xc1fa, 0x0002, 0x0243, ++ 0x000b, 0x8a01, 0x0000, 0x54ac, 0x0000, 0x55ae, 0x0008, 0x0da8, ++ 0x0000, 0x0daa, 0x0000, 0x50b0, 0x0000, 0x51b2, 0x0000, 0x0db4, ++ 0x0008, 0x0db6, 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x0007, ++ 0x0000, 0x8066, 0x0008, 0xa452, 0x0003, 0xc20a, 0x000f, 0x4000, ++ 0x000a, 0x3945, 0x000b, 0x8a16, 0x0000, 0x8072, 0x0008, 0x4040, ++ 0x0007, 0x0000, 0x000a, 0x3945, 0x0003, 0x8a14, 0x000f, 0x4000, ++ 0x0000, 0x8072, 0x0000, 0x4000, 0x0007, 0x0000, 0x0007, 0x0000, ++ 0x0007, 0x0000, 0x000a, 0x3945, 0x0003, 0x0a0e, 0x000b, 0x0216, ++ 0x000a, 0x3a40, 0x000b, 0x8817, 0x0008, 0x2b24, 0x0008, 0x2b24, ++ 0x0003, 0x5a20, 0x0008, 0x8054, 0x0000, 0x0002, 0x0002, 0x1242, ++ 0x0003, 0x0a64, 0x000a, 0x3a45, 0x000b, 0x0a55, 0x000a, 0x1e10, ++ 0x0000, 0x7f3c, 0x0003, 0x0a52, 0x0002, 0x1d00, 0x0000, 0x7f3a, ++ 0x0000, 0x0d60, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x0003, 0xc230, 0x0008, 0x00fc, 0x0003, 0xb24f, 0x0000, 0x1c60, ++ 0x0008, 0x8062, 0x0000, 0x0001, 0x0000, 0x8066, 0x0008, 0x0009, ++ 0x000b, 0xc238, 0x0008, 0x00fc, 0x0003, 0x3370, 0x0000, 0x0038, ++ 0x0008, 0x0060, 0x0008, 0x8062, 0x0000, 0x0019, 0x0000, 0x8066, ++ 0x0008, 0x0009, 0x0003, 0xc241, 0x0009, 0x80c0, 0x0008, 0x00ff, ++ 0x0008, 0x7f3e, 0x0000, 0x0d60, 0x0008, 0x0efe, 0x0001, 0x1f80, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0009, 0x0003, 0xc24b, ++ 0x0008, 0x003a, 0x0000, 0x1dfe, 0x000b, 0x022c, 0x0008, 0x0036, ++ 0x0004, 0x00a6, 0x000b, 0x0264, 0x0000, 0x8074, 0x0000, 0x2000, ++ 0x000b, 0x0264, 0x0002, 0x3a44, 0x000b, 0x0b9d, 0x0000, 0x8074, ++ 0x0000, 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, 0x000b, 0xb36d, ++ 0x0008, 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, 0x0008, 0x2700, ++ 0x0009, 0x00d0, 0x0003, 0x8a74, 0x0000, 0x8074, 0x0008, 0x4040, ++ 0x0003, 0x5a64, 0x000b, 0x521c, 0x000a, 0x3a46, 0x0003, 0x8a74, ++ 0x0002, 0x3a47, 0x000b, 0x0a6f, 0x0008, 0x8054, 0x0000, 0x0004, ++ 0x0000, 0x8074, 0x0000, 0x8000, 0x0003, 0x02d4, 0x0009, 0x92c0, ++ 0x0000, 0x0fc8, 0x000b, 0x0813, 0x000a, 0x1246, 0x0003, 0x8b67, ++ 0x0000, 0x1a60, 0x0008, 0x8062, 0x0000, 0x0002, 0x0000, 0x8066, ++ 0x0000, 0x367a, 0x000b, 0xc279, 0x0009, 0x92c0, 0x0008, 0x0780, ++ 0x000b, 0x8b81, 0x0002, 0x124b, 0x000b, 0x0a82, 0x0002, 0x2e4d, ++ 0x0002, 0x2e4d, 0x000b, 0x0b6d, 0x000a, 0x3a46, 0x000b, 0x8a92, ++ 0x000b, 0x5a84, 0x0008, 0x8054, 0x0000, 0x0004, 0x000a, 0x1243, ++ 0x000b, 0x0ad2, 0x0008, 0x8010, 0x0000, 0x000d, 0x000c, 0x035b, ++ 0x000a, 0x1948, 0x0003, 0x0a8f, 0x0004, 0x0350, 0x0000, 0x1810, ++ 0x000c, 0x035b, 0x0003, 0x02d2, 0x000a, 0x1948, 0x000b, 0x0a96, ++ 0x000a, 0x1243, 0x000b, 0x0b70, 0x000a, 0x194d, 0x000b, 0x0a9a, ++ 0x000a, 0x1243, 0x0003, 0x0b77, 0x000b, 0x5a9a, 0x0008, 0x8054, ++ 0x0000, 0x0004, 0x000a, 0x192e, 0x0008, 0x7f32, 0x000a, 0x1947, ++ 0x000b, 0x0acc, 0x0002, 0x194f, 0x000b, 0x0aaa, 0x0004, 0x0350, ++ 0x0000, 0x1810, 0x0004, 0x01dc, 0x000b, 0xb2c5, 0x000c, 0x035b, ++ 0x000c, 0x01c6, 0x0003, 0x02d2, 0x0000, 0x1a60, 0x0008, 0x8062, ++ 0x0000, 0x001f, 0x0000, 0x8066, 0x0008, 0x0009, 0x0003, 0xc2af, ++ 0x000a, 0x004c, 0x0003, 0x8acc, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0001, 0x9880, 0x0000, 0x0007, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0000, 0x320a, 0x000b, 0xc2b9, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0001, 0x9880, 0x0008, 0x0012, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x1e0a, 0x000b, 0xc2c1, 0x0000, 0x1826, 0x0000, 0x1928, ++ 0x0003, 0x02d2, 0x0000, 0x0806, 0x0008, 0x8010, 0x0000, 0x001f, ++ 0x000c, 0x035b, 0x0000, 0x0310, 0x000c, 0x035b, 0x0003, 0x02d2, ++ 0x0004, 0x0350, 0x0008, 0x8010, 0x0000, 0x0001, 0x000c, 0x035b, ++ 0x0000, 0x1810, 0x000c, 0x035b, 0x0000, 0x8074, 0x0008, 0xf000, ++ 0x0000, 0x0d30, 0x0002, 0x3a42, 0x000b, 0x8ada, 0x0000, 0x15fc, ++ 0x000b, 0xb07a, 0x0003, 0x0013, 0x0000, 0x8074, 0x0000, 0x0501, ++ 0x0008, 0x8010, 0x0008, 0x000c, 0x000c, 0x035b, 0x0003, 0x0013, ++ 0x0009, 0xbbe0, 0x0008, 0x0030, 0x0003, 0x8af6, 0x0000, 0x18fe, ++ 0x0009, 0x3ce0, 0x000b, 0x0af3, 0x0008, 0x15fe, 0x0009, 0x3ce0, ++ 0x000b, 0x0af3, 0x0008, 0x13fe, 0x0009, 0x3ce0, 0x000b, 0x8aef, ++ 0x000c, 0x0349, 0x0008, 0x0d26, 0x0003, 0x02f0, 0x0004, 0x034b, ++ 0x0008, 0x8076, 0x0000, 0x0040, 0x0003, 0x0346, 0x0008, 0x8076, ++ 0x0008, 0x0041, 0x0003, 0x0346, 0x0009, 0xbbe0, 0x0000, 0x0032, ++ 0x000b, 0x8afb, 0x0008, 0x3c1e, 0x0003, 0x0346, 0x0009, 0xbbe0, ++ 0x0000, 0x003b, 0x000b, 0x8b00, 0x0000, 0x3cdc, 0x0003, 0x0346, ++ 0x0009, 0xbbe0, 0x0008, 0x0035, 0x000b, 0x8b06, 0x0000, 0x8072, ++ 0x0000, 0x8000, 0x0003, 0x04aa, 0x0009, 0xbbe0, 0x0008, 0x0036, ++ 0x000b, 0x0bcd, 0x0009, 0xbbe0, 0x0000, 0x0037, 0x000b, 0x8b27, ++ 0x0000, 0x18fe, 0x0009, 0x3ce0, 0x0003, 0x8af3, 0x0008, 0x8076, ++ 0x0000, 0x0040, 0x0000, 0x1a60, 0x0008, 0x8062, 0x0000, 0x000d, ++ 0x0008, 0x2604, 0x0008, 0x2604, 0x0008, 0x2706, 0x0008, 0x2706, ++ 0x0000, 0x2808, 0x0000, 0x2808, 0x0000, 0x290a, 0x0000, 0x290a, ++ 0x0000, 0x8066, 0x0000, 0x0422, 0x000b, 0xc31e, 0x0004, 0x0350, ++ 0x0008, 0x8054, 0x0000, 0x0004, 0x0000, 0x8074, 0x0008, 0xf000, ++ 0x0000, 0x8072, 0x0000, 0x8000, 0x0003, 0x02d4, 0x0009, 0xbbe0, ++ 0x0000, 0x0038, 0x000b, 0x8b39, 0x0000, 0x18fe, 0x0009, 0x3ce0, ++ 0x0003, 0x0b36, 0x0008, 0x15fe, 0x0009, 0x3ce0, 0x000b, 0x8ae9, ++ 0x0004, 0x034b, 0x0008, 0x8076, 0x0000, 0x0040, 0x0000, 0x8072, ++ 0x0000, 0x8000, 0x0003, 0x0394, 0x0008, 0x8076, 0x0008, 0x0042, ++ 0x0003, 0x0346, 0x0009, 0xbbe0, 0x0000, 0x0016, 0x0003, 0x8b46, ++ 0x0000, 0x8074, 0x0008, 0x0808, 0x0002, 0x3a44, 0x0003, 0x8816, ++ 0x0000, 0x8074, 0x0000, 0x0800, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x000f, 0x8000, 0x0003, 0x0013, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x0003, 0x0013, 0x0002, 0x1430, 0x0003, 0x034c, 0x000a, 0x3d30, ++ 0x0000, 0x7f00, 0x0001, 0xbc80, 0x0000, 0x0007, 0x0003, 0x0354, ++ 0x000a, 0x1930, 0x0000, 0x7f00, 0x0001, 0x9880, 0x0000, 0x0007, ++ 0x0000, 0x8060, 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0008, 0x000a, 0x000b, 0xc359, 0x000f, 0x4000, 0x000b, 0x235b, ++ 0x0008, 0x0870, 0x000f, 0x4000, 0x0009, 0xbac0, 0x0008, 0x0090, ++ 0x000b, 0x0b64, 0x0000, 0x8074, 0x0000, 0x0706, 0x000b, 0x0366, ++ 0x0000, 0x8074, 0x0000, 0x0703, 0x000f, 0x4000, 0x0008, 0x8010, ++ 0x0000, 0x0023, 0x0003, 0x03a2, 0x0008, 0x8010, 0x0000, 0x0008, ++ 0x0003, 0x03a2, 0x0008, 0x8010, 0x0008, 0x0022, 0x0003, 0x03a2, ++ 0x0004, 0x0350, 0x0008, 0x8010, 0x0000, 0x0007, 0x000c, 0x035b, ++ 0x0000, 0x1810, 0x000c, 0x035b, 0x000b, 0x03ac, 0x0004, 0x0350, ++ 0x0008, 0x8010, 0x0008, 0x001b, 0x000c, 0x035b, 0x0000, 0x1810, ++ 0x000c, 0x035b, 0x0000, 0x8074, 0x0000, 0xf080, 0x0000, 0x0d30, ++ 0x0003, 0x0013, 0x0008, 0x8010, 0x0008, 0x0009, 0x0003, 0x03a2, ++ 0x0008, 0x8010, 0x0008, 0x0005, 0x0003, 0x03a2, 0x000a, 0x1648, ++ 0x000b, 0x8888, 0x0008, 0x808c, 0x0000, 0x0001, 0x0007, 0x0000, ++ 0x0008, 0x8010, 0x0000, 0x0004, 0x000a, 0x4143, 0x0003, 0x0888, ++ 0x0002, 0x3a44, 0x0003, 0x8813, 0x0008, 0x0d2a, 0x0003, 0x03a2, ++ 0x0008, 0x8010, 0x0008, 0x0003, 0x0003, 0x03a4, 0x0008, 0x8010, ++ 0x0000, 0x000b, 0x0003, 0x03a4, 0x0008, 0x8010, 0x0000, 0x0002, ++ 0x0003, 0x03a4, 0x0002, 0x3a47, 0x000b, 0x8a64, 0x0008, 0x8010, ++ 0x0008, 0x0006, 0x0003, 0x03a4, 0x0000, 0x8074, 0x0008, 0xf000, ++ 0x000c, 0x035b, 0x000c, 0x035e, 0x000a, 0x3a40, 0x000b, 0x0813, ++ 0x0008, 0x8010, 0x0008, 0x000c, 0x000c, 0x035b, 0x0003, 0x0013, ++ 0x0000, 0x8074, 0x0000, 0xf080, 0x0000, 0x0d30, 0x0002, 0x2e4d, ++ 0x0002, 0x2e4d, 0x000b, 0x0bb5, 0x0008, 0x8054, 0x0000, 0x0019, ++ 0x0003, 0x0013, 0x0008, 0x8054, 0x0008, 0x0009, 0x0003, 0x0013, ++ 0x0002, 0x3a44, 0x0003, 0x8813, 0x0003, 0x0397, 0x0008, 0x808c, ++ 0x0008, 0x0000, 0x0002, 0x4447, 0x0003, 0x0be1, 0x0001, 0xc0c0, ++ 0x0008, 0x00ff, 0x0009, 0xffe0, 0x0008, 0x00ff, 0x000b, 0x8bb8, ++ 0x0001, 0xc1e0, 0x0008, 0xffff, 0x000b, 0x8bb8, 0x0008, 0x8010, ++ 0x0000, 0x0013, 0x000c, 0x035b, 0x0000, 0x8074, 0x0008, 0x0202, ++ 0x0003, 0x0013, 0x000a, 0x3a40, 0x000b, 0x8bde, 0x0000, 0x8074, ++ 0x0000, 0x0200, 0x0000, 0x3d00, 0x0000, 0x3cfe, 0x0000, 0x8072, ++ 0x0000, 0x8000, 0x0001, 0x43e0, 0x0003, 0x8bdc, 0x0000, 0x42fe, ++ 0x0001, 0xffc0, 0x0008, 0x00ff, 0x0009, 0x00e0, 0x0003, 0x0bb8, ++ 0x0008, 0x0d08, 0x000b, 0x0431, 0x0000, 0x8072, 0x0000, 0x8000, ++ 0x0003, 0x0013, 0x0004, 0x04b3, 0x0008, 0x808c, 0x0000, 0x0001, ++ 0x0000, 0x04fc, 0x0003, 0x3496, 0x0000, 0x0460, 0x0008, 0x8062, ++ 0x0000, 0x0001, 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc3eb, ++ 0x0000, 0x0004, 0x0009, 0x80c0, 0x0008, 0x00ff, 0x0000, 0x7f00, ++ 0x0001, 0x80e0, 0x0000, 0x0004, 0x000b, 0x0c05, 0x0001, 0x80e0, ++ 0x0008, 0x0005, 0x000b, 0x0c05, 0x0001, 0x80e0, 0x0008, 0x0006, ++ 0x000b, 0x0c05, 0x0001, 0x82c0, 0x0008, 0xff00, 0x0008, 0x7f04, ++ 0x0009, 0x82e0, 0x0008, 0x0600, 0x000b, 0x0c05, 0x0009, 0x82e0, ++ 0x0008, 0x0500, 0x000b, 0x0c05, 0x0009, 0x82e0, 0x0000, 0x0400, ++ 0x0003, 0x8c96, 0x0009, 0xc4c0, 0x0000, 0x7000, 0x0009, 0xffe0, ++ 0x0000, 0x1000, 0x0003, 0x0c31, 0x0004, 0x04a4, 0x0002, 0x3941, ++ 0x0003, 0x0c10, 0x0000, 0x8072, 0x0000, 0x0400, 0x0003, 0x0013, ++ 0x0000, 0x0460, 0x0008, 0x80fe, 0x0008, 0x002b, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x2209, 0x000b, 0xc416, 0x0008, 0x11fc, ++ 0x000b, 0x342c, 0x0001, 0x9180, 0x0000, 0x0002, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x0609, ++ 0x000b, 0xc420, 0x0000, 0x42fe, 0x0001, 0xffc0, 0x0008, 0xff00, ++ 0x0009, 0x03e0, 0x000b, 0x8c29, 0x0000, 0x8072, 0x0000, 0x0400, ++ 0x0003, 0x0052, 0x0001, 0x9180, 0x0008, 0x0003, 0x000b, 0x0413, ++ 0x0000, 0x8072, 0x0000, 0x0400, 0x0008, 0x8010, 0x0000, 0x0010, ++ 0x000b, 0x0489, 0x0004, 0x04a4, 0x0002, 0x3941, 0x0003, 0x0c37, ++ 0x0000, 0x8072, 0x0000, 0x0400, 0x0003, 0x0013, 0x0004, 0x046e, ++ 0x0008, 0x11fc, 0x000b, 0xb43f, 0x0000, 0x8072, 0x0000, 0x0400, ++ 0x0008, 0x8010, 0x0000, 0x000e, 0x000b, 0x0489, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0000, 0x04fc, 0x0003, 0xb454, 0x0008, 0x808c, ++ 0x0008, 0x0000, 0x0001, 0x9180, 0x0008, 0x0005, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x0009, 0x000b, 0xc44a, 0x0008, 0x0060, ++ 0x0008, 0x8062, 0x0008, 0x001b, 0x0008, 0x4304, 0x0008, 0x4206, ++ 0x0000, 0x8066, 0x0000, 0x0412, 0x000b, 0xc452, 0x000b, 0x046b, ++ 0x0008, 0x808c, 0x0000, 0x0001, 0x0000, 0x0460, 0x0008, 0x8062, ++ 0x0008, 0x002b, 0x0000, 0x8066, 0x0008, 0x0609, 0x000b, 0xc45b, ++ 0x0000, 0x8066, 0x0008, 0x220a, 0x000b, 0xc45e, 0x0000, 0x42fe, ++ 0x0001, 0xffc0, 0x0008, 0xff00, 0x0008, 0x7f04, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0001, 0x9180, 0x0000, 0x0002, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0008, 0x041a, 0x0003, 0xc46a, 0x0000, 0x8072, ++ 0x0000, 0x0400, 0x0003, 0x0052, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0008, 0x6b62, 0x0000, 0x8066, 0x0000, 0x0411, 0x000b, 0xc473, ++ 0x0008, 0x02fe, 0x0009, 0x03e0, 0x000b, 0x8c79, 0x0000, 0x0d22, ++ 0x000f, 0x4000, 0x0009, 0x8280, 0x0000, 0x0002, 0x0001, 0x6b80, ++ 0x0008, 0x7f62, 0x0000, 0x8066, 0x0008, 0x2209, 0x000b, 0xc47f, ++ 0x000a, 0x0200, 0x0001, 0xffc0, 0x0000, 0x0007, 0x0000, 0x7f06, ++ 0x0008, 0x6b62, 0x0000, 0x8066, 0x0008, 0x060a, 0x0003, 0xc487, ++ 0x000f, 0x4000, 0x0002, 0x3a44, 0x0003, 0x8813, 0x000a, 0x2f44, ++ 0x000a, 0x2f44, 0x0003, 0x8b97, 0x0008, 0x808a, 0x0008, 0x0003, ++ 0x0000, 0x8074, 0x0000, 0xf080, 0x0003, 0x5c92, 0x0008, 0x8054, ++ 0x0000, 0x0019, 0x0003, 0x0013, 0x0002, 0x3a44, 0x0003, 0x8813, ++ 0x0008, 0x808c, 0x0008, 0x0000, 0x0008, 0x8010, 0x0008, 0x0011, ++ 0x000c, 0x035b, 0x0000, 0x42fe, 0x0001, 0xffc0, 0x0008, 0x00ff, ++ 0x0008, 0x7f10, 0x000c, 0x035b, 0x0008, 0x4310, 0x0003, 0x03a4, ++ 0x0002, 0x3941, 0x0003, 0x0ca7, 0x000f, 0x4000, 0x0000, 0x8072, ++ 0x0008, 0x0404, 0x000f, 0x4000, 0x0008, 0x8010, 0x0008, 0x0012, ++ 0x000c, 0x035b, 0x0004, 0x046e, 0x0000, 0x1110, 0x000c, 0x035b, ++ 0x0008, 0x11fc, 0x0003, 0xb4ad, 0x0003, 0x0013, 0x0009, 0xc2c0, ++ 0x0008, 0x00ff, 0x0000, 0x7f00, 0x0001, 0xc3c0, 0x0008, 0xff00, ++ 0x0009, 0x00d0, 0x000b, 0x0cd8, 0x0000, 0x0d0a, 0x0001, 0x8580, ++ 0x0000, 0x1000, 0x0008, 0x7f62, 0x0000, 0x8060, 0x0000, 0x0400, ++ 0x0000, 0x8066, 0x0000, 0x0809, 0x000b, 0xc4c2, 0x0000, 0x04fc, ++ 0x0003, 0x34d1, 0x0000, 0x0460, 0x0008, 0x8062, 0x0000, 0x0004, ++ 0x0000, 0x8066, 0x0000, 0x0211, 0x0003, 0xc4ca, 0x0008, 0x01fe, ++ 0x0009, 0x00e0, 0x0003, 0x8cd1, 0x0008, 0x02fe, 0x0001, 0x43e0, ++ 0x000b, 0x0cd7, 0x0002, 0x0500, 0x0000, 0x7f0a, 0x0009, 0xffe0, ++ 0x0000, 0x0800, 0x0003, 0x8cbb, 0x0008, 0x0d08, 0x000f, 0x4000, ++ 0x0008, 0x43fe, 0x0001, 0x3e80, 0x0000, 0x0d60, 0x0008, 0x7f62, ++ 0x0000, 0x8066, 0x0000, 0x0809, 0x0003, 0xc4de, 0x0000, 0x8060, ++ 0x0000, 0x0400, 0x0001, 0x84c0, 0x0008, 0xff00, 0x0002, 0x7f70, ++ 0x0009, 0xff80, 0x0000, 0x1000, 0x0008, 0x7f62, 0x0000, 0x8066, ++ 0x0000, 0x0809, 0x000b, 0xc4e9, 0x000f, 0x4000, 0xe55a, 0x71f6 ++}; ++unsigned short rseqipx_code_length01 = 0x09d8; ++/* ++ * ++ */ ++ ++unsigned long xseqipx_code_addr01 = 0x0001e000 ; ++unsigned short xseqipx_code01[] = { ++0x0013, 0x0003, 0x0000, 0x1082, 0x0001, 0xe000, 0x0005, 0x0032, ++ 0x0000, 0x0010, 0x0015, 0x0033, 0x0010, 0xbb39, 0x000b, 0x8007, ++ 0x0004, 0x010b, 0x0014, 0x011d, 0x0010, 0xc000, 0x0000, 0xc001, ++ 0x0000, 0xc0b0, 0x0010, 0xc0b1, 0x0010, 0xc0b2, 0x0000, 0xc0b3, ++ 0x0010, 0xc0b4, 0x0000, 0xc0b5, 0x0000, 0xc0b6, 0x0010, 0xc0b7, ++ 0x0010, 0xc0b8, 0x0000, 0xc0b9, 0x0000, 0xc0ba, 0x0000, 0xc0c2, ++ 0x0010, 0xc0c3, 0x0000, 0xc0c4, 0x0010, 0xc0c5, 0x0010, 0xc0c6, ++ 0x0000, 0xc0c7, 0x0000, 0xc0c8, 0x0010, 0xc0c9, 0x0010, 0xc0ca, ++ 0x0000, 0xc0cb, 0x0010, 0xc0cc, 0x0000, 0xc0cd, 0x0000, 0xc0ce, ++ 0x0010, 0xc0cf, 0x0015, 0x0039, 0x0010, 0xff00, 0x0015, 0x003a, ++ 0x0010, 0xff00, 0x0005, 0x00d0, 0x0010, 0xff00, 0x0015, 0x00d1, ++ 0x0010, 0xff00, 0x0012, 0x3a40, 0x000b, 0x1031, 0x0002, 0x7940, ++ 0x001b, 0x112f, 0x0002, 0x3a42, 0x001b, 0x1035, 0x0003, 0xb035, ++ 0x0003, 0xa1d8, 0x0002, 0x3a41, 0x001b, 0x1039, 0x0012, 0x7941, ++ 0x000b, 0x12f6, 0x0003, 0xe055, 0x0012, 0xd042, 0x0003, 0x103f, ++ 0x0000, 0x75ff, 0x0002, 0xff41, 0x001b, 0x1055, 0x0000, 0x0cfe, ++ 0x0003, 0x6049, 0x0002, 0x3a44, 0x000b, 0x1049, 0x0011, 0x02e8, ++ 0x0010, 0x0000, 0x0013, 0x1383, 0x0011, 0x02e8, 0x0010, 0x0005, ++ 0x0003, 0x1413, 0x0012, 0x3a46, 0x001b, 0x1055, 0x0012, 0xd042, ++ 0x0003, 0x1050, 0x0000, 0x75ff, 0x0012, 0xff40, 0x001b, 0x1055, ++ 0x0000, 0x12fe, 0x0013, 0x6055, 0x0001, 0x0fe8, 0x0010, 0x0000, ++ 0x0013, 0x1619, 0x0015, 0x0030, 0x0000, 0x0400, 0x0010, 0xc131, ++ 0x0015, 0x0033, 0x0010, 0xb211, 0x001b, 0x805a, 0x0010, 0xb2ff, ++ 0x0001, 0xb3e0, 0x001c, 0x10cd, 0x000b, 0xf02d, 0x0011, 0x3be8, ++ 0x0000, 0x0010, 0x001b, 0x1072, 0x0000, 0x0afe, 0x000b, 0x6066, ++ 0x0000, 0x3c0b, 0x0003, 0x006e, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0x0a88, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x3c0a, 0x000b, 0x806d, 0x0010, 0x3c0a, 0x0002, 0x0c00, ++ 0x0010, 0xff0c, 0x0013, 0x00ca, 0x0011, 0x3be8, 0x0010, 0x0012, ++ 0x000b, 0x1085, 0x0010, 0x08fe, 0x001b, 0x6079, 0x0010, 0x3c09, ++ 0x0013, 0x0081, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0888, ++ 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x3c0a, ++ 0x000b, 0x8080, 0x0000, 0x3c08, 0x0002, 0x0c00, 0x0010, 0xff0c, ++ 0x0013, 0x00ca, 0x0011, 0x3be8, 0x0000, 0x0013, 0x001b, 0x108b, ++ 0x0000, 0x3cb0, 0x0004, 0x00dd, 0x0013, 0x00ca, 0x0011, 0x3be8, ++ 0x0000, 0x0019, 0x000b, 0x109e, 0x0010, 0x04fe, 0x001b, 0x6092, ++ 0x0010, 0x3c05, 0x0013, 0x009a, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0488, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x3c0a, 0x001b, 0x8099, 0x0000, 0x3c04, 0x0002, 0x0c00, ++ 0x0010, 0xff0c, 0x0013, 0x00ca, 0x0011, 0x3be8, 0x0000, 0x0015, ++ 0x001b, 0x10aa, 0x0014, 0x0114, 0x0004, 0x0126, 0x0015, 0x0039, ++ 0x0000, 0x8000, 0x0017, 0x8000, 0x0004, 0x010b, 0x0014, 0x011d, ++ 0x0004, 0x00f6, 0x0013, 0x002d, 0x0011, 0x3be8, 0x0000, 0x0016, ++ 0x000b, 0x10bc, 0x0001, 0x0fe8, 0x0010, 0x0000, 0x0013, 0x10b6, ++ 0x0001, 0x0fe8, 0x0000, 0x0002, 0x0013, 0x10b6, 0x0015, 0x0039, ++ 0x0010, 0x1010, 0x0013, 0x00ca, 0x0015, 0x0039, 0x0000, 0x5040, ++ 0x0015, 0x00b8, 0x0000, 0x0008, 0x0004, 0x083d, 0x0013, 0x00ca, ++ 0x0011, 0x3be8, 0x0010, 0x0017, 0x000b, 0x10c1, 0x0010, 0x3cc3, ++ 0x0013, 0x00ca, 0x0011, 0x3be8, 0x0010, 0x0018, 0x001b, 0x10c6, ++ 0x0000, 0x3cc2, 0x0013, 0x00ca, 0x0005, 0x00ce, 0x0000, 0x0001, ++ 0x0000, 0x3bcf, 0x0004, 0x0801, 0x0015, 0x0039, 0x0000, 0x8000, ++ 0x0013, 0x002d, 0x0001, 0xb288, 0x0000, 0x0002, 0x0001, 0xc180, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x80d3, ++ 0x0002, 0xb200, 0x0011, 0xffc8, 0x0000, 0x0007, 0x0010, 0xffb2, ++ 0x0010, 0xc131, 0x0015, 0x0033, 0x0010, 0xb20a, 0x0001, 0xb0d0, ++ 0x000b, 0x80dc, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0xb088, ++ 0x0000, 0x0010, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb109, ++ 0x001b, 0x80e4, 0x0001, 0xb1e8, 0x0010, 0xffff, 0x0003, 0x10f5, ++ 0x0000, 0x11fe, 0x001b, 0x60ec, 0x0000, 0xb012, 0x0003, 0x00f4, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0x1188, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb00a, 0x001b, 0x80f3, ++ 0x0000, 0xb011, 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0xbc88, 0x0000, 0x001f, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xc411, 0x000b, 0x80fd, 0x0011, 0xbc88, 0x0010, 0x0018, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xc609, 0x000b, 0x8103, ++ 0x0011, 0xbc88, 0x0000, 0x0037, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xc709, 0x000b, 0x8109, 0x0017, 0x4000, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0xbb88, 0x0000, 0x0001, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0x0269, 0x000b, 0x8112, 0x0017, 0x4000, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbb88, 0x0000, 0x0001, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x026a, 0x000b, 0x811b, ++ 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbb88, ++ 0x0010, 0x000f, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x0f59, ++ 0x000b, 0x8124, 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xbb88, 0x0010, 0x000f, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x0f5a, 0x000b, 0x812d, 0x0017, 0x4000, 0x0000, 0xd0ff, ++ 0x0012, 0xff40, 0x000b, 0x1031, 0x0015, 0x00d1, 0x0010, 0x0101, ++ 0x0013, 0x9134, 0x0005, 0x0079, 0x0000, 0x0001, 0x0013, 0x9137, ++ 0x0015, 0x00d1, 0x0000, 0x0100, 0x0011, 0x02e8, 0x0000, 0x0002, ++ 0x0003, 0x115d, 0x0011, 0x02e8, 0x0000, 0x0001, 0x0003, 0x1175, ++ 0x0011, 0x02e8, 0x0000, 0x0004, 0x0013, 0x1193, 0x0011, 0x02e8, ++ 0x0010, 0x0003, 0x0003, 0x11c4, 0x0005, 0x0002, 0x0010, 0x0000, ++ 0x0000, 0xc00e, 0x0000, 0xc00d, 0x0010, 0xc003, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0xbd88, 0x0010, 0x0009, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x001b, 0x8152, 0x0012, 0x3a45, ++ 0x0013, 0x115a, 0x0015, 0x003a, 0x0000, 0x2000, 0x0015, 0x003a, ++ 0x0010, 0x1010, 0x0004, 0x0829, 0x0012, 0xd042, 0x0013, 0x1031, ++ 0x0013, 0x0050, 0x0012, 0x7849, 0x0013, 0x11d2, 0x0010, 0x0dfe, ++ 0x0003, 0x6148, 0x0012, 0x0c10, 0x0010, 0xff0c, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0003, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb309, 0x000b, 0x816a, 0x0010, 0xb3fe, ++ 0x0003, 0x6172, 0x0010, 0xb30b, 0x0015, 0x0033, 0x0010, 0xc00a, ++ 0x001b, 0x8170, 0x0013, 0x01c7, 0x0000, 0xc00b, 0x0010, 0xc00a, ++ 0x0013, 0x01c7, 0x0000, 0x78b0, 0x0012, 0xb044, 0x0013, 0x11d2, ++ 0x0002, 0xb049, 0x0013, 0x11d2, 0x0010, 0x71ff, 0x0012, 0xff38, ++ 0x0010, 0xff71, 0x0010, 0x0dfe, 0x0013, 0x6146, 0x0012, 0x0c10, ++ 0x0010, 0xff0c, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb309, ++ 0x000b, 0x8188, 0x0010, 0xb3fe, 0x0003, 0x6190, 0x0000, 0xb309, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x818e, 0x0013, 0x01c7, ++ 0x0010, 0xc009, 0x0000, 0xc008, 0x0013, 0x01c7, 0x0000, 0x78b0, ++ 0x0012, 0xb044, 0x0013, 0x11d2, 0x0002, 0xb049, 0x0013, 0x11d2, ++ 0x0010, 0x71ff, 0x0012, 0xff38, 0x0010, 0xff71, 0x0010, 0x0dfe, ++ 0x0013, 0x6146, 0x0012, 0x0c10, 0x0010, 0xff0c, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0003, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb309, 0x000b, 0x81a6, 0x0010, 0xb3fe, ++ 0x0013, 0x61ae, 0x0000, 0xb305, 0x0015, 0x0033, 0x0010, 0xc00a, ++ 0x000b, 0x81ac, 0x0013, 0x01b0, 0x0010, 0xc005, 0x0000, 0xc004, ++ 0x0002, 0x033f, 0x0002, 0xff27, 0x0000, 0x0db8, 0x0004, 0x0378, ++ 0x0000, 0x0db8, 0x0004, 0x083d, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0xbc88, 0x0010, 0x0000, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb309, 0x000b, 0x81bd, 0x0011, 0xb3e8, 0x0000, 0x0002, ++ 0x001b, 0x1146, 0x0005, 0x0002, 0x0010, 0x0005, 0x0003, 0x0148, ++ 0x0012, 0x7849, 0x0013, 0x11d2, 0x0003, 0x0148, 0x0000, 0x0db8, ++ 0x0012, 0x0345, 0x001b, 0x11cd, 0x0002, 0x033f, 0x0004, 0x0378, ++ 0x0013, 0x0146, 0x0002, 0x033f, 0x0002, 0xff27, 0x0004, 0x0378, ++ 0x0004, 0x083d, 0x0013, 0x0146, 0x0015, 0x00b8, 0x0000, 0x0001, ++ 0x0015, 0x003a, 0x0010, 0x0101, 0x0004, 0x083d, 0x0003, 0x0153, ++ 0x0000, 0x2bba, 0x0003, 0xb1d9, 0x0005, 0x002a, 0x0000, 0x0002, ++ 0x0001, 0xbac8, 0x0000, 0x0700, 0x000b, 0x12b1, 0x0011, 0x15e8, ++ 0x0000, 0x0002, 0x0003, 0x122c, 0x0011, 0x15e8, 0x0000, 0x0001, ++ 0x0013, 0x11e8, 0x0005, 0x0015, 0x0010, 0x0000, 0x0003, 0x020f, ++ 0x0005, 0x0015, 0x0010, 0x0000, 0x0002, 0xba43, 0x0003, 0x1210, ++ 0x0003, 0xb1ec, 0x0005, 0x002a, 0x0000, 0x0004, 0x0012, 0xba42, ++ 0x0003, 0x1216, 0x0012, 0x104b, 0x000b, 0x120f, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b2a, ++ 0x001b, 0x81f8, 0x0010, 0x20b0, 0x0010, 0x21b1, 0x0010, 0x22b2, ++ 0x0010, 0x23b3, 0x0010, 0x24b4, 0x0010, 0x25b5, 0x0010, 0x28b8, ++ 0x0010, 0x29b9, 0x0000, 0x1a30, 0x0005, 0x0031, 0x0000, 0x0007, ++ 0x0015, 0x0033, 0x0010, 0xb032, 0x000b, 0x8206, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0010, 0x000f, 0x0015, 0x0033, 0x0010, 0xb812, ++ 0x000b, 0x820c, 0x0005, 0x0015, 0x0010, 0x0000, 0x0013, 0x0035, ++ 0x0000, 0x1efe, 0x0003, 0x6224, 0x0014, 0x0256, 0x0000, 0x1efe, ++ 0x000c, 0x6256, 0x0003, 0x020f, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0020, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x821b, ++ 0x0002, 0xb02f, 0x0000, 0xffb0, 0x0005, 0x0031, 0x0000, 0x0020, ++ 0x0015, 0x0033, 0x0000, 0xb00a, 0x000b, 0x8222, 0x0003, 0x01f3, ++ 0x0015, 0x00b8, 0x0010, 0x0005, 0x0004, 0x083d, 0x0000, 0x13b8, ++ 0x0015, 0x003a, 0x0010, 0x0404, 0x0004, 0x083d, 0x0003, 0x020f, ++ 0x0005, 0x0015, 0x0000, 0x0001, 0x0012, 0xba42, 0x0013, 0x1239, ++ 0x0013, 0xb230, 0x0010, 0x2bff, 0x0012, 0xff4f, 0x000b, 0x11d8, ++ 0x0002, 0xba43, 0x001b, 0x1216, 0x0000, 0x1efe, 0x000c, 0x6256, ++ 0x0003, 0x020f, 0x0010, 0x28b8, 0x0010, 0x29b9, 0x0004, 0x02c7, ++ 0x0002, 0x3a42, 0x000b, 0x120f, 0x0000, 0x1c30, 0x0015, 0x00ff, ++ 0x0000, 0x0002, 0x0002, 0x1f43, 0x001b, 0x1246, 0x0001, 0xff88, ++ 0x0000, 0x0002, 0x0003, 0x0248, 0x0001, 0xff88, 0x0000, 0x0004, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb011, 0x000b, 0x824b, ++ 0x0000, 0xb0ff, 0x0011, 0x16a0, 0x0000, 0xff16, 0x000b, 0x24e2, ++ 0x0002, 0xb100, 0x0003, 0x0253, 0x0010, 0xb1ff, 0x0001, 0x17a0, ++ 0x0010, 0xff17, 0x0013, 0x0216, 0x0000, 0x16ff, 0x0001, 0x18a0, ++ 0x0010, 0xff00, 0x001b, 0x225d, 0x0002, 0x1700, 0x0003, 0x12b0, ++ 0x0013, 0x025e, 0x0010, 0x17ff, 0x0011, 0x19a0, 0x0003, 0x22b0, ++ 0x0011, 0x00d0, 0x0003, 0x12b0, 0x0000, 0x1c30, 0x0000, 0x1b31, ++ 0x0015, 0x0033, 0x0000, 0xb131, 0x000b, 0x8266, 0x0003, 0xb267, ++ 0x0000, 0xb120, 0x0010, 0xb221, 0x0002, 0x1f43, 0x001b, 0x1273, ++ 0x0010, 0xc022, 0x0000, 0xc023, 0x0000, 0xb324, 0x0000, 0xb425, ++ 0x0010, 0xb3b5, 0x0000, 0xb4b6, 0x0003, 0x0277, 0x0000, 0xb322, ++ 0x0000, 0xb423, 0x0000, 0xb524, 0x0010, 0xb625, 0x0013, 0xb277, ++ 0x0005, 0x002a, 0x0000, 0x0001, 0x0012, 0x1500, 0x0000, 0xff15, ++ 0x0000, 0x16ff, 0x0001, 0xb580, 0x0000, 0xff16, 0x000b, 0x2282, ++ 0x0002, 0x1700, 0x0013, 0x0283, 0x0010, 0x17ff, 0x0001, 0xb680, ++ 0x0010, 0xff17, 0x0012, 0x1e10, 0x0010, 0xff1e, 0x0013, 0x62b0, ++ 0x0002, 0x1d00, 0x0010, 0xff1d, 0x0010, 0xc030, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x828e, 0x0010, 0xb0fe, ++ 0x001b, 0x62af, 0x0000, 0x1c30, 0x0005, 0x0031, 0x0000, 0x0001, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x8296, 0x0010, 0xb0fe, ++ 0x001b, 0x629c, 0x0005, 0x00ce, 0x0010, 0x0005, 0x0013, 0x0801, ++ 0x0010, 0xb01c, 0x0000, 0x1c30, 0x0005, 0x0031, 0x0000, 0x0019, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x82a2, 0x0001, 0xb0c8, ++ 0x0010, 0x00ff, 0x0000, 0xff1f, 0x0010, 0xc030, 0x0011, 0xbe80, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x82ab, ++ 0x0000, 0xb01d, 0x0010, 0x1dff, 0x0013, 0x028a, 0x0000, 0xb01b, ++ 0x0017, 0x4000, 0x0002, 0x3a41, 0x0003, 0x12b9, 0x0003, 0xb2b3, ++ 0x0005, 0x002a, 0x0000, 0x0004, 0x0005, 0x0015, 0x0010, 0x0000, ++ 0x0003, 0x020f, 0x0000, 0x1a30, 0x0005, 0x0031, 0x0000, 0x0002, ++ 0x0015, 0x0033, 0x0000, 0x1b2a, 0x000b, 0x82be, 0x0015, 0x00b8, ++ 0x0000, 0x0004, 0x0004, 0x083d, 0x0000, 0x13b8, 0x0015, 0x003a, ++ 0x0010, 0x0404, 0x0004, 0x083d, 0x0013, 0x0039, 0x0002, 0x1e00, ++ 0x0010, 0xff1e, 0x0012, 0x1d10, 0x0010, 0xff1d, 0x0010, 0xc030, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x82cf, ++ 0x0010, 0xb0fe, 0x000b, 0x62f4, 0x0000, 0x1cff, 0x0001, 0x1ae0, ++ 0x0013, 0x12de, 0x0000, 0x1c30, 0x0005, 0x0031, 0x0010, 0x0000, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x82da, 0x0010, 0xb0fe, ++ 0x001b, 0x62de, 0x0000, 0x1aff, 0x0000, 0xff1c, 0x0000, 0x1c30, ++ 0x0005, 0x0031, 0x0000, 0x0019, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x82e4, 0x0001, 0xb0c8, 0x0010, 0x000f, 0x0000, 0xff1f, ++ 0x0001, 0xbf80, 0x0010, 0xff1d, 0x0010, 0xc030, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x82ee, 0x0010, 0xb0fe, ++ 0x000b, 0x62f4, 0x0005, 0x00ce, 0x0010, 0x0006, 0x0013, 0x0801, ++ 0x0000, 0xb01b, 0x0017, 0x4000, 0x0010, 0x79b0, 0x0000, 0xd0ff, ++ 0x0012, 0xff40, 0x001b, 0x1039, 0x0015, 0x00d1, 0x0010, 0x0101, ++ 0x0003, 0x92fc, 0x0005, 0x0079, 0x0000, 0x0002, 0x0003, 0x92ff, ++ 0x0015, 0x00d1, 0x0000, 0x0100, 0x0010, 0x13fe, 0x0003, 0x6334, ++ 0x0012, 0xb04e, 0x001b, 0x1350, 0x0012, 0x784a, 0x0003, 0x1356, ++ 0x0000, 0x75ff, 0x0011, 0xffc8, 0x0010, 0x1800, 0x001b, 0x1356, ++ 0x0001, 0x0fe8, 0x0000, 0x0001, 0x001b, 0x1318, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x000e, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0x8f0a, 0x000b, 0x8316, 0x0013, 0x035c, ++ 0x0001, 0x0fe8, 0x0000, 0x0002, 0x000b, 0x1323, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0005, 0x0031, 0x0000, 0x001a, 0x0015, 0x0033, ++ 0x0010, 0xc00a, 0x001b, 0x8321, 0x0013, 0x035c, 0x0001, 0x0fe8, ++ 0x0010, 0x0000, 0x0013, 0x132a, 0x0005, 0x00ce, 0x0000, 0x0007, ++ 0x0010, 0x0fcf, 0x0013, 0x07fb, 0x0000, 0x13b8, 0x0002, 0x1045, ++ 0x0013, 0x1332, 0x0012, 0x103f, 0x0002, 0xff27, 0x0004, 0x0378, ++ 0x0004, 0x083d, 0x0003, 0x0334, 0x0012, 0x103f, 0x0004, 0x0378, ++ 0x0015, 0x000f, 0x0010, 0x0000, 0x0002, 0x3944, 0x0013, 0x133d, ++ 0x0015, 0x0039, 0x0000, 0x5040, 0x0015, 0x00b8, 0x0000, 0x0008, ++ 0x0004, 0x083d, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbd88, ++ 0x0010, 0x000c, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xc00a, ++ 0x001b, 0x8344, 0x0010, 0xc014, 0x0000, 0xc013, 0x0000, 0xc010, ++ 0x0002, 0x3a47, 0x0013, 0x134f, 0x0015, 0x003a, 0x0000, 0x8000, ++ 0x0015, 0x003a, 0x0010, 0x4040, 0x0014, 0x0806, 0x0013, 0x0039, ++ 0x0015, 0x00b8, 0x0010, 0x0003, 0x0015, 0x003a, 0x0010, 0x0202, ++ 0x0004, 0x083d, 0x0013, 0x0348, 0x0015, 0x00b8, 0x0000, 0x0002, ++ 0x0015, 0x003a, 0x0010, 0x0202, 0x0004, 0x083d, 0x0013, 0x0348, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x8363, ++ 0x0011, 0x1388, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xc00a, 0x001b, 0x8369, 0x0010, 0xb0fe, 0x0003, 0x636e, ++ 0x0000, 0xb012, 0x0003, 0x0370, 0x0010, 0xc012, 0x0010, 0xc011, ++ 0x0012, 0x104b, 0x0013, 0x132a, 0x0002, 0x103b, 0x0010, 0xff03, ++ 0x0005, 0x0002, 0x0010, 0x0000, 0x0000, 0xc00d, 0x0003, 0x032a, ++ 0x0000, 0xffb0, 0x0010, 0xc3b1, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xb888, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb012, 0x001b, 0x8381, 0x0017, 0x4000, 0x0012, 0x3a43, ++ 0x0013, 0x1392, 0x0015, 0x003a, 0x0000, 0x0800, 0x0010, 0x0db0, ++ 0x0003, 0x6392, 0x0000, 0x0bff, 0x0001, 0xb0e0, 0x0003, 0x13bb, ++ 0x0010, 0x09ff, 0x0001, 0xb0e0, 0x0003, 0x139f, 0x0010, 0x05ff, ++ 0x0001, 0xb0e0, 0x0003, 0x1396, 0x0000, 0xc00e, 0x0000, 0x05fe, ++ 0x0013, 0x639c, 0x0000, 0x050d, 0x0005, 0x0002, 0x0000, 0x0004, ++ 0x0014, 0x041d, 0x0002, 0x3a47, 0x001b, 0x141c, 0x0003, 0x03b6, ++ 0x0000, 0x09fe, 0x0013, 0x63b8, 0x0000, 0x090d, 0x0005, 0x0002, ++ 0x0000, 0x0001, 0x0014, 0x0436, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xba09, 0x001b, 0x83a9, 0x0011, 0x03c8, 0x0010, 0x000f, ++ 0x0000, 0xffb6, 0x0011, 0xb6e8, 0x0000, 0x0001, 0x0013, 0x14ca, ++ 0x0011, 0xb6e8, 0x0000, 0x0002, 0x0003, 0x14ec, 0x0011, 0xb6e8, ++ 0x0010, 0x0003, 0x0003, 0x15d7, 0x0014, 0x0806, 0x0013, 0x041c, ++ 0x0010, 0x0bfe, 0x0013, 0x641c, 0x0010, 0x0b0d, 0x0005, 0x0002, ++ 0x0000, 0x0002, 0x0014, 0x0436, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xba09, 0x001b, 0x83c5, 0x0000, 0xb930, 0x0005, 0x0031, ++ 0x0010, 0x0021, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x83cb, ++ 0x0001, 0xb0a8, 0x0000, 0x199a, 0x0003, 0x23d1, 0x0005, 0x00b0, ++ 0x0000, 0x1999, 0x0012, 0xb050, 0x0000, 0xffb0, 0x0002, 0xff50, ++ 0x0002, 0xff50, 0x0001, 0xb080, 0x0000, 0xffb0, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0006, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb00a, 0x001b, 0x83de, 0x0000, 0xb930, ++ 0x0005, 0x0031, 0x0000, 0x0019, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x001b, 0x83e4, 0x0001, 0xb0c8, 0x0010, 0x00ff, 0x0001, 0xffe8, ++ 0x0010, 0x0048, 0x001b, 0x1445, 0x0005, 0x0002, 0x0010, 0x0006, ++ 0x0012, 0x0c10, 0x0010, 0xff0c, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0003, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb109, 0x001b, 0x83f5, 0x0000, 0xb10b, 0x000b, 0x63f9, ++ 0x0010, 0xb10a, 0x0015, 0x0033, 0x0010, 0xc00a, 0x000b, 0x83fb, ++ 0x0002, 0x032b, 0x0010, 0xff03, 0x0011, 0x0d88, 0x0010, 0x0011, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0x030a, 0x000b, 0x8403, ++ 0x0000, 0x11fe, 0x000b, 0x6408, 0x0000, 0x0d12, 0x0003, 0x0411, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0x1188, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0010, 0x0db0, 0x0015, 0x0033, 0x0000, 0xb00a, ++ 0x001b, 0x8410, 0x0000, 0x0d11, 0x0013, 0x041c, 0x0000, 0x05fe, ++ 0x0013, 0x641c, 0x0005, 0x0002, 0x0000, 0x0004, 0x0000, 0x050d, ++ 0x0014, 0x041d, 0x0002, 0x3a47, 0x001b, 0x141c, 0x0014, 0x0806, ++ 0x0003, 0x0049, 0x0001, 0xc7c8, 0x0010, 0x0028, 0x000b, 0x1435, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x000a, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x8427, ++ 0x0002, 0xb04f, 0x0013, 0x1435, 0x0001, 0x0fe8, 0x0010, 0x0000, ++ 0x0013, 0x1433, 0x0001, 0x0fe8, 0x0000, 0x0002, 0x0013, 0x1433, ++ 0x0015, 0x003a, 0x0010, 0x8080, 0x0003, 0x0435, 0x0015, 0x003a, ++ 0x0010, 0x4040, 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x0309, 0x001b, 0x843d, 0x0011, 0x0d88, 0x0010, 0x0005, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb909, 0x001b, 0x8443, ++ 0x0017, 0x4000, 0x0005, 0x00b6, 0x0010, 0x0600, 0x0014, 0x0607, ++ 0x0014, 0x04b4, 0x0000, 0xb05a, 0x0000, 0xb15b, 0x0005, 0x0054, ++ 0x0010, 0x0829, 0x0010, 0x0d58, 0x0015, 0x0059, 0x0010, 0xffff, ++ 0x0000, 0xb930, 0x0005, 0x0031, 0x0010, 0x001e, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x8455, 0x0000, 0xb05c, 0x0005, 0x0031, ++ 0x0000, 0x001f, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x845b, ++ 0x0001, 0xb0c8, 0x0010, 0x000f, 0x001b, 0x1462, 0x0015, 0x00ff, ++ 0x0010, 0x0005, 0x0003, 0x046a, 0x0002, 0xb040, 0x0003, 0x1467, ++ 0x0015, 0x00ff, 0x0000, 0x0004, 0x0003, 0x046a, 0x0001, 0xb0c8, ++ 0x0010, 0x0006, 0x0002, 0xff60, 0x0010, 0xffb2, 0x0011, 0x0d88, ++ 0x0000, 0x0019, 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb109, ++ 0x001b, 0x8470, 0x0012, 0xb170, 0x0011, 0xffc8, 0x0010, 0xff00, ++ 0x0011, 0xb2d0, 0x0010, 0xff60, 0x0002, 0xb045, 0x0013, 0x147b, ++ 0x0015, 0x00b2, 0x0000, 0x0002, 0x0013, 0x0485, 0x0002, 0xb046, ++ 0x0003, 0x1480, 0x0015, 0x00b2, 0x0000, 0x0001, 0x0013, 0x0485, ++ 0x0015, 0x00b2, 0x0010, 0x0000, 0x0000, 0xc0b0, 0x0010, 0xc0b1, ++ 0x0003, 0x048b, 0x0000, 0xb930, 0x0005, 0x0031, 0x0010, 0x002b, ++ 0x0015, 0x0033, 0x0000, 0xb011, 0x001b, 0x848a, 0x0010, 0xb16a, ++ 0x0010, 0xb06b, 0x0000, 0xb261, 0x0015, 0x0044, 0x0010, 0x0018, ++ 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, 0x0000, 0x6241, ++ 0x001b, 0x8494, 0x0003, 0x9495, 0x0015, 0x00a0, 0x0000, 0x0020, ++ 0x0012, 0xd041, 0x001b, 0x1498, 0x0015, 0x00d1, 0x0010, 0x0202, ++ 0x0003, 0x949c, 0x0000, 0x75ff, 0x0011, 0xffc8, 0x0000, 0x1804, ++ 0x0001, 0xffd8, 0x0010, 0x0009, 0x0013, 0x94a2, 0x0000, 0xff75, ++ 0x0013, 0x94a4, 0x0015, 0x00d1, 0x0000, 0x0200, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0001, 0xbd88, 0x0000, 0x0008, 0x0000, 0xff31, ++ 0x0015, 0x00b1, 0x0010, 0x07d0, 0x0005, 0x00b0, 0x0010, 0x0009, ++ 0x0015, 0x0033, 0x0000, 0xb012, 0x000b, 0x84b2, 0x0013, 0x041c, ++ 0x0000, 0xba30, 0x0005, 0x0031, 0x0010, 0x0035, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x001b, 0x84b9, 0x0002, 0xb040, 0x0003, 0x14c7, ++ 0x0000, 0xb7b0, 0x0000, 0xb9b1, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0000, 0x0013, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb012, 0x000b, 0x84c5, 0x0003, 0x04c9, 0x0010, 0xc0b1, ++ 0x0000, 0xc0b0, 0x0017, 0x4000, 0x0005, 0x00b6, 0x0010, 0x0500, ++ 0x0014, 0x0607, 0x0005, 0x0054, 0x0010, 0x0889, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0002, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x84d6, 0x0010, 0xb058, ++ 0x0000, 0x0d59, 0x0000, 0xb930, 0x0005, 0x0031, 0x0000, 0x0023, ++ 0x0015, 0x0033, 0x0000, 0xb011, 0x000b, 0x84de, 0x0010, 0xb15c, ++ 0x0010, 0xb05d, 0x0005, 0x0031, 0x0010, 0x002b, 0x0015, 0x0033, ++ 0x0000, 0xb011, 0x001b, 0x84e5, 0x0000, 0xb15e, 0x0000, 0xb05f, ++ 0x0003, 0x94e8, 0x0015, 0x00a0, 0x0010, 0x000c, 0x0003, 0x05ec, ++ 0x0005, 0x00b6, 0x0000, 0x0700, 0x0014, 0x0607, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0009, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb709, 0x000b, 0x84f6, 0x0012, 0xb749, ++ 0x0013, 0x14fc, 0x0005, 0x0054, 0x0010, 0x0889, 0x0013, 0x04fe, ++ 0x0005, 0x0054, 0x0010, 0x0898, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0000, 0x0002, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x001b, 0x8505, 0x0010, 0xb058, 0x0000, 0x0d59, ++ 0x0001, 0xb9a8, 0x0010, 0x00f0, 0x000b, 0x252a, 0x0011, 0x0d88, ++ 0x0010, 0x0005, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x8510, 0x0001, 0xb0c8, 0x0000, 0xf700, 0x0000, 0xffb0, ++ 0x0011, 0xb0e8, 0x0000, 0xf100, 0x0003, 0x1571, 0x0011, 0xb0e8, ++ 0x0000, 0xf200, 0x0013, 0x1576, 0x0011, 0xb0e8, 0x0010, 0xf300, ++ 0x0003, 0x1599, 0x0011, 0xb0e8, 0x0000, 0xf400, 0x0013, 0x159e, ++ 0x0011, 0xb0e8, 0x0010, 0xf500, 0x0003, 0x1571, 0x0011, 0xb0e8, ++ 0x0010, 0xf600, 0x0003, 0x15af, 0x0005, 0x00ce, 0x0010, 0x0009, ++ 0x0000, 0xb0cf, 0x0013, 0x07fb, 0x0000, 0xb930, 0x0005, 0x0031, ++ 0x0000, 0x0025, 0x0015, 0x0033, 0x0000, 0xb039, 0x000b, 0x852f, ++ 0x0012, 0xb749, 0x0013, 0x1534, 0x0002, 0xb52c, 0x0000, 0xffb5, ++ 0x0000, 0xb162, 0x0000, 0xb063, 0x0005, 0x0031, 0x0000, 0x001f, ++ 0x0015, 0x0033, 0x0000, 0xb309, 0x001b, 0x853a, 0x0001, 0xb3c8, ++ 0x0010, 0x0003, 0x0003, 0x1542, 0x0010, 0xffb2, 0x0001, 0xffe8, ++ 0x0010, 0x0003, 0x001b, 0x1544, 0x0000, 0xc2b7, 0x0003, 0x05cb, ++ 0x0001, 0xb2e8, 0x0000, 0x0001, 0x0003, 0x154b, 0x0005, 0x00ce, ++ 0x0010, 0x000a, 0x0010, 0xb2cf, 0x0013, 0x07fb, 0x0010, 0xb465, ++ 0x0010, 0xb667, 0x0015, 0x00b7, 0x0010, 0x0018, 0x0001, 0xb5c8, ++ 0x0010, 0x0300, 0x0013, 0x1570, 0x0012, 0xb548, 0x0013, 0x1557, ++ 0x0000, 0xb6ff, 0x0011, 0xb780, 0x0010, 0xffb7, 0x0002, 0xb549, ++ 0x0003, 0x155c, 0x0010, 0xb4ff, 0x0011, 0xb780, 0x0010, 0xffb7, ++ 0x0015, 0x0044, 0x0010, 0x0018, 0x0005, 0x0031, 0x0000, 0x002c, ++ 0x0015, 0x0033, 0x0000, 0x6841, 0x000b, 0x8562, 0x0015, 0x0044, ++ 0x0000, 0x0019, 0x0005, 0x0031, 0x0000, 0x0034, 0x0015, 0x0033, ++ 0x0000, 0x5029, 0x001b, 0x8569, 0x0015, 0x0044, 0x0000, 0x0008, ++ 0x0011, 0xb7c8, 0x0010, 0x0003, 0x0013, 0x1570, 0x0010, 0xff55, ++ 0x0003, 0x05cb, 0x0005, 0x00b5, 0x0000, 0x0008, 0x0015, 0x00b7, ++ 0x0010, 0x0018, 0x0003, 0x05cb, 0x0011, 0x0d88, 0x0000, 0x000b, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb011, 0x001b, 0x857b, ++ 0x0010, 0xb1ff, 0x0001, 0xb0d0, 0x0003, 0x1584, 0x0005, 0x00b5, ++ 0x0010, 0x0b02, 0x0010, 0xb062, 0x0010, 0xb163, 0x0003, 0x0586, ++ 0x0005, 0x00b5, 0x0000, 0x0302, 0x0015, 0x0065, 0x0010, 0x0012, ++ 0x0005, 0x0067, 0x0000, 0x0008, 0x0015, 0x006c, 0x0000, 0x7000, ++ 0x0005, 0x006d, 0x0010, 0x0500, 0x0015, 0x006f, 0x0010, 0x000a, ++ 0x0015, 0x0044, 0x0000, 0x0001, 0x0005, 0x0052, 0x0000, 0x2500, ++ 0x0015, 0x0044, 0x0000, 0x0008, 0x0015, 0x00b7, 0x0000, 0x0032, ++ 0x0003, 0x05cb, 0x0005, 0x00b5, 0x0010, 0x0028, 0x0015, 0x00b7, ++ 0x0010, 0x0018, 0x0003, 0x05cb, 0x0005, 0x00b5, 0x0000, 0x0100, ++ 0x0005, 0x0067, 0x0000, 0x0008, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x0d88, 0x0010, 0x0018, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x001b, 0x85a9, 0x0001, 0xb0c8, 0x0010, 0x00ff, ++ 0x0015, 0x00b7, 0x0000, 0x0020, 0x0003, 0x05cb, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0005, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb609, 0x000b, 0x85b6, 0x0001, 0xb6c8, ++ 0x0010, 0xff00, 0x0000, 0xffb0, 0x0015, 0x0033, 0x0000, 0xb00a, ++ 0x000b, 0x85bc, 0x0001, 0xb6c8, 0x0010, 0x00ff, 0x0012, 0xff10, ++ 0x001b, 0x15c5, 0x0000, 0xffb5, 0x0015, 0x00b7, 0x0010, 0x0018, ++ 0x0003, 0x05cb, 0x0010, 0xff63, 0x0005, 0x00b5, 0x0000, 0x0800, ++ 0x0015, 0x00b7, 0x0010, 0x0018, 0x0003, 0x05cb, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0010, 0x0009, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x85d2, 0x0010, 0xb561, ++ 0x0013, 0x95d4, 0x0010, 0xb7a0, 0x0003, 0x05ec, 0x0005, 0x00b6, ++ 0x0010, 0x0300, 0x0014, 0x0607, 0x0005, 0x0054, 0x0010, 0x0819, ++ 0x0010, 0x0d58, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, ++ 0x0000, 0x0002, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x001b, 0x85e4, 0x0000, 0xb059, 0x0003, 0x95e6, 0x0010, 0xc0a0, ++ 0x0010, 0x71ff, 0x0002, 0xff28, 0x0010, 0xff71, 0x0003, 0x05ec, ++ 0x0012, 0xd041, 0x000b, 0x15ec, 0x0015, 0x00d1, 0x0010, 0x0202, ++ 0x0000, 0x75ff, 0x0011, 0xffc8, 0x0000, 0x1804, 0x0001, 0xffd8, ++ 0x0010, 0x0009, 0x0013, 0x95f5, 0x0000, 0xff75, 0x0003, 0x95f7, ++ 0x0015, 0x00d1, 0x0000, 0x0200, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0001, 0xbd88, 0x0000, 0x0008, 0x0000, 0xff31, 0x0005, 0x00b0, ++ 0x0010, 0x0009, 0x0015, 0x00b1, 0x0010, 0x07d0, 0x0015, 0x0033, ++ 0x0000, 0xb012, 0x001b, 0x8605, 0x0013, 0x041c, 0x0015, 0x0044, ++ 0x0000, 0x0008, 0x0005, 0x0098, 0x0010, 0x0056, 0x0015, 0x0099, ++ 0x0000, 0x9575, 0x0004, 0x07c2, 0x0000, 0xb096, 0x0012, 0xb270, ++ 0x0010, 0xff56, 0x0014, 0x07e4, 0x0010, 0xb052, 0x0010, 0xb153, ++ 0x0000, 0xb6ff, 0x0011, 0xb2d0, 0x0010, 0xff50, 0x0010, 0xb351, ++ 0x0017, 0x4000, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0x1288, ++ 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x1009, ++ 0x000b, 0x8620, 0x0015, 0x000f, 0x0000, 0x0001, 0x0010, 0xc014, ++ 0x0000, 0x1213, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, ++ 0x0000, 0x0004, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xba09, ++ 0x000b, 0x862c, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, ++ 0x0010, 0x0005, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0x1a09, ++ 0x000b, 0x8634, 0x0012, 0x104b, 0x000b, 0x163d, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0000, 0x000b, 0x0015, 0x0033, 0x0000, 0x1621, ++ 0x001b, 0x863c, 0x0010, 0x15fe, 0x000b, 0x665c, 0x0014, 0x0683, ++ 0x0002, 0x3a42, 0x001b, 0x1682, 0x0001, 0x10c8, 0x0010, 0x000f, ++ 0x000b, 0x16e5, 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, ++ 0x0000, 0x0008, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x864c, 0x0011, 0xb0e8, 0x0010, 0x0009, 0x0003, 0x1653, ++ 0x0011, 0xb0e8, 0x0000, 0x0001, 0x001b, 0x1681, 0x0011, 0x1388, ++ 0x0010, 0x000a, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, ++ 0x000b, 0x8658, 0x0002, 0xb04f, 0x001b, 0x1678, 0x0013, 0x0681, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0010, 0x0003, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x8663, ++ 0x0015, 0x0033, 0x0010, 0xc00a, 0x001b, 0x8666, 0x0010, 0xb0fe, ++ 0x0003, 0x666b, 0x0000, 0xb012, 0x0003, 0x066d, 0x0010, 0xc012, ++ 0x0010, 0xc011, 0x0015, 0x000f, 0x0010, 0x0000, 0x0002, 0x3944, ++ 0x0013, 0x1676, 0x0015, 0x0039, 0x0000, 0x5040, 0x0015, 0x00b8, ++ 0x0000, 0x0008, 0x0004, 0x083d, 0x0000, 0xc013, 0x0013, 0x0682, ++ 0x0010, 0x02fe, 0x0013, 0x667d, 0x0015, 0x003a, 0x0010, 0x2020, ++ 0x0013, 0x0682, 0x0015, 0x003a, 0x0000, 0x2000, 0x0015, 0x003a, ++ 0x0010, 0x1010, 0x0004, 0x0829, 0x0013, 0x0055, 0x0013, 0xb683, ++ 0x0005, 0x002a, 0x0000, 0x0004, 0x0000, 0xba30, 0x0005, 0x0031, ++ 0x0010, 0x001b, 0x0015, 0x0033, 0x0000, 0xb009, 0x001b, 0x868b, ++ 0x0000, 0xc02c, 0x0000, 0xb02d, 0x0012, 0x104b, 0x0003, 0x16a6, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, ++ 0x0000, 0xb129, 0x001b, 0x8695, 0x0000, 0xb120, 0x0010, 0xb221, ++ 0x0000, 0xb322, 0x0000, 0xb423, 0x0000, 0xb524, 0x0000, 0xc025, ++ 0x0010, 0xb526, 0x0010, 0xc027, 0x0010, 0xb516, 0x0010, 0xc017, ++ 0x0000, 0xb518, 0x0000, 0xc019, 0x0010, 0xc028, 0x0000, 0xc029, ++ 0x0010, 0xc01e, 0x0003, 0x06dc, 0x0012, 0x1044, 0x0013, 0x16d6, ++ 0x0002, 0x1034, 0x0000, 0xff10, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b29, 0x001b, 0x86af, ++ 0x0000, 0x1c30, 0x0000, 0x1b31, 0x0015, 0x0033, 0x0000, 0xb131, ++ 0x001b, 0x86b4, 0x0002, 0x1f43, 0x001b, 0x16bb, 0x0010, 0xb3b5, ++ 0x0000, 0xb4b6, 0x0000, 0xc0b3, 0x0010, 0xc0b4, 0x0000, 0xb120, ++ 0x0010, 0xb221, 0x0000, 0xb322, 0x0000, 0xb423, 0x0000, 0xb524, ++ 0x0010, 0xb625, 0x0010, 0xb516, 0x0000, 0xb617, 0x0000, 0x1826, ++ 0x0000, 0x1927, 0x0000, 0x1a30, 0x0005, 0x0031, 0x0010, 0x000f, ++ 0x0015, 0x0033, 0x0000, 0xb011, 0x001b, 0x86ca, 0x0000, 0xb028, ++ 0x0000, 0xb129, 0x0012, 0x1e10, 0x0010, 0xff1e, 0x0003, 0x66dc, ++ 0x0002, 0x1d00, 0x0010, 0xff1d, 0x0004, 0x028a, 0x0002, 0x3a42, ++ 0x0013, 0x16dc, 0x0013, 0x06e4, 0x0000, 0x1a30, 0x0005, 0x0031, ++ 0x0000, 0x0002, 0x0015, 0x0033, 0x0000, 0x1b79, 0x001b, 0x86db, ++ 0x0013, 0xb6dc, 0x0005, 0x002a, 0x0000, 0x0001, 0x0005, 0x0015, ++ 0x0000, 0x0001, 0x0000, 0x1efe, 0x0013, 0x66e4, 0x0003, 0x0256, ++ 0x0017, 0x4000, 0x0000, 0xba30, 0x0005, 0x0031, 0x0010, 0x001b, ++ 0x0015, 0x0033, 0x0010, 0xb051, 0x000b, 0x86ea, 0x0000, 0xb0a3, ++ 0x0010, 0xb697, 0x0010, 0xb946, 0x0015, 0x00a5, 0x0000, 0x0010, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x0002, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb509, 0x000b, 0x86f7, ++ 0x0014, 0x07e4, 0x0004, 0x07d3, 0x0012, 0xb470, 0x0010, 0xffb4, ++ 0x0010, 0xb48e, 0x0010, 0xb08a, 0x0010, 0xb18b, 0x0012, 0x104d, ++ 0x0003, 0x1702, 0x0013, 0x072f, 0x0012, 0x104b, 0x0003, 0x1715, ++ 0x0005, 0x008c, 0x0010, 0x0829, 0x0010, 0xc08d, 0x0001, 0xb2d8, ++ 0x0010, 0x0600, 0x0010, 0xff88, 0x0010, 0xb389, 0x0000, 0x1390, ++ 0x0010, 0xb591, 0x0000, 0xc08f, 0x0010, 0x1ab9, 0x0014, 0x04b4, ++ 0x0013, 0x9710, 0x0010, 0xb092, 0x0010, 0xb193, 0x0013, 0x9713, ++ 0x0013, 0x072a, 0x0005, 0x008c, 0x0000, 0x0809, 0x0015, 0x008d, ++ 0x0000, 0x0008, 0x0001, 0xb2d8, 0x0000, 0x0100, 0x0010, 0xff88, ++ 0x0010, 0xb389, 0x0000, 0x1390, 0x0010, 0xb591, 0x0000, 0xc08f, ++ 0x0000, 0x1a30, 0x0005, 0x0031, 0x0010, 0x000f, 0x0015, 0x0033, ++ 0x0000, 0xb011, 0x001b, 0x8725, 0x0013, 0x9726, 0x0000, 0xb192, ++ 0x0000, 0xb093, 0x0013, 0x9729, 0x0010, 0x19a1, 0x0000, 0x18a2, ++ 0x0015, 0x00b1, 0x0010, 0x0096, 0x0013, 0x079e, 0x0000, 0xb590, ++ 0x0010, 0x1391, 0x0001, 0x10c8, 0x0010, 0x000f, 0x0001, 0xffe8, ++ 0x0010, 0x0005, 0x0013, 0x1756, 0x0001, 0xb2d8, 0x0000, 0x0700, ++ 0x0010, 0xff88, 0x0010, 0xb389, 0x0015, 0x0030, 0x0000, 0x0400, ++ 0x0011, 0x1388, 0x0010, 0x0009, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0000, 0xb009, 0x000b, 0x8741, 0x0002, 0xb049, 0x0003, 0x1749, ++ 0x0005, 0x008c, 0x0010, 0x0889, 0x0015, 0x00b1, 0x0010, 0x0096, ++ 0x0003, 0x074d, 0x0005, 0x008c, 0x0010, 0x0898, 0x0015, 0x00b1, ++ 0x0000, 0x0092, 0x0010, 0xc08d, 0x0000, 0xc08f, 0x0013, 0x974f, ++ 0x0000, 0xc092, 0x0010, 0xc093, 0x0013, 0x9752, 0x0010, 0x19a1, ++ 0x0000, 0x18a2, 0x0013, 0x079e, 0x0001, 0xb2d8, 0x0000, 0x0100, ++ 0x0010, 0xff88, 0x0010, 0xb389, 0x0005, 0x008c, 0x0010, 0x0880, ++ 0x0015, 0x008d, 0x0000, 0x0008, 0x0011, 0x1388, 0x0000, 0x000e, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb009, 0x000b, 0x8763, ++ 0x0010, 0xb08f, 0x0000, 0xb590, 0x0010, 0x1391, 0x0000, 0x1a30, ++ 0x0005, 0x0031, 0x0000, 0x000d, 0x0015, 0x0033, 0x0000, 0xb021, ++ 0x000b, 0x876c, 0x0013, 0x976d, 0x0010, 0xb392, 0x0010, 0xb293, ++ 0x0013, 0x9770, 0x0000, 0xb1a1, 0x0010, 0xb0a2, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x000b, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb211, 0x001b, 0x877a, 0x0000, 0xb3ff, ++ 0x0001, 0xb080, 0x0000, 0xffb3, 0x000b, 0x2781, 0x0002, 0xb200, ++ 0x0003, 0x0782, 0x0010, 0xb2ff, 0x0011, 0xb180, 0x0010, 0xffb2, ++ 0x0011, 0x1388, 0x0000, 0x000b, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb212, 0x001b, 0x8789, 0x0015, 0x00b1, 0x0000, 0x0092, ++ 0x0002, 0x104c, 0x0013, 0x179c, 0x0011, 0xc2e8, 0x0010, 0x000c, ++ 0x001b, 0x1794, 0x0015, 0x00ff, 0x0000, 0x0800, 0x0003, 0x079c, ++ 0x0011, 0xc2e8, 0x0000, 0x0020, 0x000b, 0x179a, 0x0015, 0x00ff, ++ 0x0010, 0x1800, 0x0003, 0x079c, 0x0015, 0x00ff, 0x0000, 0x1000, ++ 0x0011, 0xb1d0, 0x0010, 0xffb1, 0x0015, 0x009a, 0x0010, 0x0036, ++ 0x0005, 0x009b, 0x0000, 0x95d5, 0x0012, 0xd041, 0x001b, 0x17a2, ++ 0x0015, 0x00d1, 0x0010, 0x0202, 0x0003, 0x97a6, 0x0012, 0x104e, ++ 0x0003, 0x17ab, 0x0012, 0xb12f, 0x0010, 0xffb1, 0x0000, 0xb175, ++ 0x0003, 0x97ac, 0x0015, 0x00d1, 0x0000, 0x0200, 0x0001, 0x19c8, ++ 0x0010, 0xfff0, 0x001b, 0x17b5, 0x0015, 0x00b1, 0x0010, 0x07d0, ++ 0x0003, 0x07b7, 0x0015, 0x00b1, 0x0000, 0x1b58, 0x0005, 0x00b0, ++ 0x0010, 0x0009, 0x0015, 0x0030, 0x0000, 0x0400, 0x0001, 0xbd88, ++ 0x0000, 0x000b, 0x0000, 0xff31, 0x0015, 0x0033, 0x0000, 0xb012, ++ 0x000b, 0x87c0, 0x0013, 0x0682, 0x0000, 0xba30, 0x0005, 0x0031, ++ 0x0010, 0x0021, 0x0015, 0x0033, 0x0010, 0xb019, 0x001b, 0x87c7, ++ 0x0002, 0xb200, 0x0011, 0xffc8, 0x0010, 0x00ff, 0x0010, 0xffb2, ++ 0x0010, 0xb2b7, 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, ++ 0x0010, 0xb20a, 0x000b, 0x87d1, 0x0017, 0x4000, 0x0000, 0xba30, ++ 0x0005, 0x0031, 0x0000, 0x0023, 0x0015, 0x0033, 0x0010, 0xb409, ++ 0x000b, 0x87d8, 0x0002, 0xb400, 0x0011, 0xffc8, 0x0010, 0x00ff, ++ 0x0010, 0xffb4, 0x0010, 0xb4b7, 0x0005, 0x0031, 0x0000, 0x0023, ++ 0x0015, 0x0033, 0x0010, 0xb40a, 0x000b, 0x87e2, 0x0017, 0x4000, ++ 0x0000, 0xba30, 0x0001, 0xc7c8, 0x0000, 0x0020, 0x000b, 0x17f0, ++ 0x0005, 0x0031, 0x0010, 0x0028, 0x0015, 0x0033, 0x0010, 0xb209, ++ 0x001b, 0x87ec, 0x0011, 0xb2c8, 0x0000, 0xff80, 0x0013, 0x17f3, ++ 0x0010, 0xc4b0, 0x0010, 0xc5b1, 0x0003, 0x07f5, 0x0010, 0xc6b1, ++ 0x0000, 0xc0b0, 0x0005, 0x0031, 0x0000, 0x0004, 0x0015, 0x0033, ++ 0x0010, 0xb211, 0x000b, 0x87f9, 0x0017, 0x4000, 0x0015, 0x00b8, ++ 0x0010, 0x0009, 0x0015, 0x003a, 0x0010, 0x0707, 0x0004, 0x083d, ++ 0x0013, 0x002d, 0x0015, 0x00b8, 0x0010, 0x0009, 0x0015, 0x003a, ++ 0x0010, 0x0707, 0x0013, 0x083d, 0x0014, 0x0114, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0004, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0000, 0xba09, 0x001b, 0x880e, 0x0004, 0x07c2, ++ 0x0015, 0x0030, 0x0000, 0x0400, 0x0011, 0x0d88, 0x0000, 0x0010, ++ 0x0000, 0xff31, 0x0015, 0x0033, 0x0010, 0xb20a, 0x000b, 0x8817, ++ 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0x0309, 0x000b, 0x881d, 0x0002, 0x0327, 0x0010, 0xffb2, ++ 0x0011, 0x0d88, 0x0010, 0x0011, 0x0000, 0xff31, 0x0015, 0x0033, ++ 0x0010, 0xb20a, 0x001b, 0x8825, 0x0015, 0x00b8, 0x0010, 0x0006, ++ 0x0013, 0x083d, 0x0004, 0x0126, 0x0004, 0x07c2, 0x0015, 0x0030, ++ 0x0000, 0x0400, 0x0011, 0x1388, 0x0000, 0x0010, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb20a, 0x001b, 0x8832, 0x0012, 0x1027, ++ 0x0010, 0xffb2, 0x0011, 0x1388, 0x0010, 0x0011, 0x0000, 0xff31, ++ 0x0015, 0x0033, 0x0010, 0xb20a, 0x000b, 0x883a, 0x0015, 0x00b8, ++ 0x0000, 0x0007, 0x0003, 0x483d, 0x0000, 0xb838, 0x0017, 0x4000, ++ 0xa4bc, 0xa221 ++}; ++unsigned short xseqipx_code_length01 = 0x1082; +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2200.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2200.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2200.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2200.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2300.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2300.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2300.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2300.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -22,6 +22,9 @@ + * command source for 2300 module + */ + #define ISP2300 ++#define ISP2322 ++#define EXTENDED_IDS ++#define IPX + + #if !defined(LINUX) + #define LINUX +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00.c 2003-10-28 10:34:18.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * Portions (C) Arjan van de Ven for Red Hat, Inc. +@@ -44,6 +44,10 @@ + #error "This driver does not support kernel versions earlier than 2.4.0" + #endif + ++#if defined(FC_IP_SUPPORT) ++#error "IP support is unsupported and unavailable in this driver release!!!" ++#endif ++ + /* IP support not available on ISP2100 */ + #if defined(ISP2100) && defined(FC_IP_SUPPORT) + #error "The ISP2100 does not support IP" +@@ -51,11 +55,6 @@ + + #include "qla_settings.h" + +-#if defined(ISP2300) +-#include "qla_devtbl.h" +-#endif +- +- + static int num_hosts = 0; /* ioctl related */ + static int apiHBAInstance = 0; /* ioctl related keeps track of API HBA Instance */ + +@@ -80,13 +79,12 @@ static unsigned long mem_id[1000]; + #include + #include + #include +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + #include +-#endif + #include + #include + #include + #include ++#include + + #define APIDEV 1 + +@@ -109,12 +107,9 @@ static unsigned long mem_id[1000]; + * options would be SIGPWR, I suppose. + */ + #define SHUTDOWN_SIGS (sigmask(SIGHUP)) +-#include "../sd.h" +-#include "../scsi.h" +-#include "../hosts.h" +-#ifdef __VMWARE__ +-#include "vmklinux_dist.h" +-#endif ++#include "sd.h" ++#include "scsi.h" ++#include "hosts.h" + + #if defined(FC_IP_SUPPORT) + #include +@@ -130,7 +125,7 @@ static unsigned long mem_id[1000]; + #include "qla2x00.h" + + +-#define UNIQUE_FW_NAME /* unique F/W array names */ ++#define UNIQUE_FW_NAME /* unique F/W array names */ + #if defined(ISP2100) + #include "ql2100_fw.h" /* ISP RISC 2100 TP code */ + #endif +@@ -141,16 +136,21 @@ static unsigned long mem_id[1000]; + #include "ql2200_fw.h" /* ISP RISC 2200 TP code */ + #endif + #endif ++ + #if defined(ISP2300) +-#if defined(FC_IP_SUPPORT) +-#include "ql2300ip_fw.h" /* ISP RISC 2300 IP code */ +-#else +-#include "ql2300_fw.h" /* ISP RISC 2300 TP code */ +-#endif ++#include "ql2300flx_fw.h" /* ISP RISC 2300 FLX code */ ++#include "ql2322flx_fw.h" /* ISP RISC 2300 FLX code */ ++#include "ql2300ipx_fw.h" /* ISP RISC 2300 IPX code */ ++#include "ql2322ipx_fw.h" /* ISP RISC 2322 IPX code */ + #endif + ++ + #include "qla_cfg.h" ++#include "qlfolimits.h" ++ + #include "qla_gbl.h" ++#include "qla_devtbl.h" ++ + + #if NO_LONG_DELAYS + #define SYS_DELAY(x) qla2x00_sleep(x) +@@ -164,13 +164,6 @@ static unsigned long mem_id[1000]; + #define UDELAY(x) udelay(x) + #endif + +-/* +- * We only use these macros in 64bit_start and not 32bit_start, so +- * we can assume a 8-byte address (a). +- */ +-#define pci_dma_hi32(a) ((u32) (0xffffffff & (((u64)(a))>>32))) +-#define pci_dma_lo32(a) ((u32) (0xffffffff & (((u64)(a))))) +- + #define CACHE_FLUSH(a) (RD_REG_WORD(a)) + #define INVALID_HANDLE (MAX_OUTSTANDING_COMMANDS+1) + +@@ -226,7 +219,8 @@ del_timer_sync(&(h)->timer); \ + #define DRIVER_NAME "qla2300" + #endif + +-static char qla2x00_version_str[40]; ++#define QLA_DRVR_VERSION_LEN 40 ++static char qla2x00_version_str[QLA_DRVR_VERSION_LEN]; + typedef unsigned long paddr32_t; + + /* proc info string processing */ +@@ -239,7 +233,7 @@ struct info_str { + + + /* +-* Qlogic Driver support Function Prototypes. ++* QLogic Driver support Function Prototypes. + */ + STATIC void copy_mem_info(struct info_str *, char *, int); + STATIC int copy_info(struct info_str *, char *, ...); +@@ -247,14 +241,7 @@ STATIC int copy_info(struct info_str *, + STATIC uint8_t qla2x00_register_with_Linux(scsi_qla_host_t *ha, + uint8_t maxchannels); + STATIC int qla2x00_done(scsi_qla_host_t *); +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +-STATIC void qla2x00_select_queue_depth(struct Scsi_Host *, Scsi_Device *); +-#endif +- +-#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP) +-static int qla2x00_get_scsi_info_from_wwn (int mode, unsigned long long wwn, int *host, int *channel, int *lun, int *id); +-static int qla2x00_get_wwn_from_scsi_info (int host, int id, unsigned long long *wwn); +-#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */ ++static void qla2x00_select_queue_depth(struct Scsi_Host *, Scsi_Device *); + + STATIC void qla2x00_timer(scsi_qla_host_t *); + +@@ -264,7 +251,6 @@ static void qla2x00_dump_regs(struct Scs + #if STOP_ON_ERROR + static void qla2x00_panic(char *, struct Scsi_Host *host); + #endif +-static + void qla2x00_print_scsi_cmd(Scsi_Cmnd *cmd); + + #if 0 +@@ -272,7 +258,7 @@ STATIC void qla2x00_abort_pending_queue( + #endif + + STATIC void qla2x00_mem_free(scsi_qla_host_t *ha); +-STATIC void qla2x00_do_dpc(void *p); ++void qla2x00_do_dpc(void *p); + + static inline void qla2x00_callback(scsi_qla_host_t *ha, Scsi_Cmnd *cmd); + +@@ -302,9 +288,6 @@ STATIC uint8_t qla2100_nvram_config(scsi + #else + STATIC uint8_t qla2x00_nvram_config(scsi_qla_host_t *); + #endif +-STATIC uint8_t qla2x00_get_link_status(scsi_qla_host_t *, +- uint8_t, void *, uint16_t *); +- + STATIC uint8_t qla2x00_loop_reset(scsi_qla_host_t *ha); + STATIC uint8_t qla2x00_abort_isp(scsi_qla_host_t *); + STATIC uint8_t qla2x00_loop_resync(scsi_qla_host_t *); +@@ -312,8 +295,8 @@ STATIC uint8_t qla2x00_loop_resync(scsi_ + STATIC void qla2x00_nv_write(scsi_qla_host_t *, uint16_t); + STATIC void qla2x00_nv_deselect(scsi_qla_host_t *ha); + STATIC void qla2x00_poll(scsi_qla_host_t *); +-STATIC void qla2x00_init_fc_db(scsi_qla_host_t *); + STATIC void qla2x00_init_tgt_map(scsi_qla_host_t *); ++STATIC fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, int); + STATIC void qla2x00_reset_adapter(scsi_qla_host_t *); + STATIC void qla2x00_enable_lun(scsi_qla_host_t *); + STATIC void qla2x00_isp_cmd(scsi_qla_host_t *); +@@ -342,14 +325,14 @@ STATIC uint8_t qla2x00_configure_hba(scs + STATIC void qla2x00_reset_chip(scsi_qla_host_t *ha); + + STATIC void qla2x00_display_fc_names(scsi_qla_host_t *ha); +-static void qla2x00_dump_requests(scsi_qla_host_t *ha); ++void qla2x00_dump_requests(scsi_qla_host_t *ha); + static void qla2x00_get_properties(scsi_qla_host_t *ha, char *string); + STATIC uint8_t qla2x00_find_propname(scsi_qla_host_t *ha, + char *propname, char *propstr, char *db, int siz); + static int qla2x00_get_prop_16chars(scsi_qla_host_t *ha, + char *propname, char *propval, char *cmdline); + static char *qla2x00_get_line(char *str, char *line); +-static void qla2x00_check_fabric_devices(scsi_qla_host_t *ha); ++void qla2x00_check_fabric_devices(scsi_qla_host_t *ha); + #if defined(ISP2300) + STATIC void qla2x00_blink_led(scsi_qla_host_t *ha); + #endif +@@ -403,13 +386,10 @@ static int qla2x00_tx_timeout(scsi_qla_ + #endif /* if defined(FC_IP_SUPPORT) */ + + static void qla2x00_device_resync(scsi_qla_host_t *); +-STATIC uint8_t qla2x00_update_fc_database(scsi_qla_host_t *, fcdev_t *, +- uint8_t); + +-STATIC uint8_t qla2x00_configure_fabric(scsi_qla_host_t *, uint8_t ); ++STATIC uint8_t qla2x00_configure_fabric(scsi_qla_host_t *); + static uint8_t qla2x00_find_all_fabric_devs(scsi_qla_host_t *, +- sns_cmd_rsp_t *, dma_addr_t, struct new_dev *, +- uint16_t *, uint8_t *); ++ sns_cmd_rsp_t *, dma_addr_t, struct list_head *); + #if REG_FC4_ENABLED + static uint8_t qla2x00_register_fc4(scsi_qla_host_t *, sns_cmd_rsp_t *, dma_addr_t); + static uint8_t qla2x00_register_fc4_feature(scsi_qla_host_t *, sns_cmd_rsp_t *, dma_addr_t); +@@ -418,63 +398,55 @@ static uint8_t qla2x00_register_nn(scsi_ + static uint8_t qla2x00_register_snn(scsi_qla_host_t *); + #endif + static uint8_t qla2x00_gnn_ft(scsi_qla_host_t *, sns_cmd_rsp_t *, dma_addr_t, +- struct new_dev *, uint32_t); ++ sw_info_t *, uint32_t); + static uint8_t qla2x00_gpn_id(scsi_qla_host_t *, sns_cmd_rsp_t *, dma_addr_t, +- struct new_dev *); ++ sw_info_t *); + static uint8_t qla2x00_gan(scsi_qla_host_t *, sns_cmd_rsp_t *, dma_addr_t, +- fcdev_t *); +-static uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fcdev_t *); ++ fc_port_t *); ++static uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fc_port_t *, uint16_t *); + static uint8_t qla2x00_local_device_login(scsi_qla_host_t *, uint16_t); + + STATIC uint8_t qla2x00_configure_loop(scsi_qla_host_t *); +-static uint8_t qla2x00_configure_local_loop(scsi_qla_host_t *, uint8_t ); +-static uint8_t qla2x00_configure_fcports( scsi_qla_host_t *ha ); ++static uint8_t qla2x00_configure_local_loop(scsi_qla_host_t *); + + STATIC uint8_t qla2x00_32bit_start_scsi(srb_t *sp); +- + STATIC uint8_t qla2x00_64bit_start_scsi(srb_t *sp); + + /* Routines for Failover */ +-static os_tgt_t *qla2x00_tgt_alloc(scsi_qla_host_t *ha, uint16_t t); ++os_tgt_t *qla2x00_tgt_alloc(scsi_qla_host_t *ha, uint16_t t); + #if APIDEV + static int apidev_init(struct Scsi_Host*); + static int apidev_cleanup(void); + #endif +-static void qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t); +-static os_lun_t *qla2x00_lun_alloc(scsi_qla_host_t *ha, uint16_t t, uint16_t l); ++void qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t); ++os_lun_t *qla2x00_lun_alloc(scsi_qla_host_t *ha, uint16_t t, uint16_t l); + + static void qla2x00_lun_free(scsi_qla_host_t *ha, uint16_t t, uint16_t l); + #if defined(ISP2300) + static inline void + qla2x00_process_response_queue_in_zio_mode(scsi_qla_host_t *); + #endif +-static void qla2x00_next(scsi_qla_host_t *vis_ha); +-static int qla2x00_build_fcport_list(scsi_qla_host_t *ha); ++void qla2x00_next(scsi_qla_host_t *vis_ha); + static void qla2x00_config_os(scsi_qla_host_t *ha); +-static uint16_t qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport); +-static int qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int); +-static int qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int); ++static uint16_t qla2x00_fcport_bind(scsi_qla_host_t *, fc_port_t *); ++static os_lun_t *qla2x00_fclun_bind(scsi_qla_host_t *, fc_port_t *, fc_lun_t *); ++static int qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport); ++static int qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport); + static int qla2x00_rpt_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport); + static void qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun); +- + STATIC void qla2x00_process_failover(scsi_qla_host_t *ha) ; + + STATIC int qla2x00_device_reset(scsi_qla_host_t *, fc_port_t *); + + static inline int qla2x00_is_wwn_zero(uint8_t *wwn); +-static void qla2x00_get_lun_mask_from_config(scsi_qla_host_t *ha, fc_port_t *port, ++void qla2x00_get_lun_mask_from_config(scsi_qla_host_t *ha, fc_port_t *port, + uint16_t tgt, uint16_t dev_no); +-static void +-qla2x00_print_q_info(os_lun_t *q); +- +-#if QLA2X_PERFORMANCE +-static void qla2x00_done_tasklet(long p); +-#endif ++void qla2x00_print_q_info(os_lun_t *q); + + STATIC void qla2x00_failover_cleanup(srb_t *); + void qla2x00_flush_failover_q(scsi_qla_host_t *, os_lun_t *); + +-static void qla2x00_chg_endian(uint8_t buf[], size_t size); ++void qla2x00_chg_endian(uint8_t buf[], size_t size); + STATIC uint8_t qla2x00_check_sense(Scsi_Cmnd *cp, os_lun_t *); + + STATIC uint8_t +@@ -488,7 +460,11 @@ qla2x00_suspend_target(scsi_qla_host_t * + + STATIC uint8_t + qla2x00_check_for_devices_online(scsi_qla_host_t *ha); ++int qla2x00_test_active_port( fc_port_t *fcport ); + ++STATIC void qla2x00_probe_for_all_luns(scsi_qla_host_t *ha); ++void qla2x00_find_all_active_ports(srb_t *sp); ++int qla2x00_test_active_lun( fc_port_t *fcport, fc_lun_t *fclun ); + + #if DEBUG_QLA2100 + #if !defined(QL_DEBUG_ROUTINES) +@@ -510,7 +486,7 @@ STATIC int mbxtimeout = 0; + #endif + + #if DEBUG_GET_FW_DUMP +-#if defined(ISP2300) ++#if defined(ISP2300) + STATIC void qla2300_dump_isp(scsi_qla_host_t *ha), + #endif + qla2x00_dump_word(uint8_t *, uint32_t, uint32_t); +@@ -520,13 +496,14 @@ STATIC void qla2x00_sleep_done (struct s + #endif + STATIC void qla2x00_retry_command(scsi_qla_host_t *, srb_t *); + +-STATIC uint8_t qla2x00_allocate_sp_pool( scsi_qla_host_t *ha); +-STATIC void qla2x00_free_sp_pool(scsi_qla_host_t *ha ); ++static inline void qla2x00_add_timer_to_cmd(srb_t *, int); ++uint8_t qla2x00_allocate_sp_pool( scsi_qla_host_t *ha); ++void qla2x00_free_sp_pool(scsi_qla_host_t *ha ); + STATIC srb_t * qla2x00_get_new_sp (scsi_qla_host_t *ha); + STATIC uint8_t qla2x00_check_tgt_status(scsi_qla_host_t *ha, Scsi_Cmnd *cmd); + STATIC uint8_t qla2x00_check_port_status(scsi_qla_host_t *ha, + fc_port_t *fcport); +-STATIC void qla2x00_mark_device_lost(scsi_qla_host_t *ha, fc_port_t *fcport); ++STATIC void qla2x00_mark_device_lost(scsi_qla_host_t *, fc_port_t *, int); + STATIC void qla2x00_mark_all_devices_lost( scsi_qla_host_t *ha ); + STATIC inline void qla2x00_delete_from_done_queue(scsi_qla_host_t *, srb_t *); + +@@ -564,18 +541,12 @@ STATIC uint8_t qla2x00_erase_flash_secto + uint32_t addr, uint32_t sec_mask, uint8_t mid); + STATIC uint8_t qla2x00_get_flash_manufacturer(scsi_qla_host_t *ha); + STATIC uint16_t qla2x00_get_flash_version(scsi_qla_host_t *); ++STATIC uint16_t qla2x00_get_fcode_version(scsi_qla_host_t *, uint32_t); + #if defined(NOT_USED_FUNCTION) + STATIC uint16_t qla2x00_get_flash_image(scsi_qla_host_t *ha, uint8_t *image); + #endif + STATIC uint16_t qla2x00_set_flash_image(scsi_qla_host_t *ha, uint8_t *image); + +-#if USE_FLASH_DATABASE +-STATIC void qla2x00_flash_enable_database(scsi_qla_host_t *); +-STATIC void qla2x00_flash_disable_database(scsi_qla_host_t *); +-STATIC uint8_t qla2x00_get_database(scsi_qla_host_t *); +-STATIC uint8_t qla2x00_save_database(scsi_qla_host_t *); +-#endif +- + /* Some helper functions */ + static inline uint32_t qla2x00_normalize_dma_addr( + dma_addr_t *e_addr, uint32_t *e_len, +@@ -592,8 +563,11 @@ static inline cont_entry_t *qla2x00_prep + static inline cont_a64_entry_t *qla2x00_prep_a64_cont_packet( + scsi_qla_host_t *ha, + uint16_t *req_ring_index, request_t **request_ring_ptr); ++STATIC inline void ++qla2x00_free_request_resources(scsi_qla_host_t *dest_ha, srb_t *sp); ++ + +-static inline void qla2x00_config_dma_addressing(scsi_qla_host_t *ha); ++#include "qla_inline.h" + + /** + * qla2x00_normalize_dma_addr() - Normalize an DMA address. +@@ -659,12 +633,10 @@ qla2x00_normalize_dma_addr( + return (normalized); + } + +-static int +-qla2x00_add_initiator_device(scsi_qla_host_t *ha, fcdev_t *device); +- ++void qla2x00_ioctl_error_recovery(scsi_qla_host_t *); + + /* Debug print buffer */ +-static char debug_buff[LINESIZE*3]; ++char debug_buff[LINESIZE*3]; + + /* + * insmod needs to find the variable and make it point to something +@@ -673,7 +645,7 @@ static char *ql2xdevconf = NULL; + static int ql2xdevflag = 0; + + #if MPIO_SUPPORT +-static int ql2xretrycount = 30; ++static int ql2xretrycount = 60; + #else + static int ql2xretrycount = 20; + #endif +@@ -684,13 +656,14 @@ static int ql2xlogintimeout = 20; + static int qlport_down_retry = 0; + #endif + static int ql2xmaxqdepth = 0; +-static int displayConfig = 0; ++static int displayConfig = 1; /* 1- default, 2 - for lunids */ + static int retry_gnnft = 10; + static int qfull_retry_count = 16; + static int qfull_retry_delay = 2; + static int extended_error_logging = 0; /* 0 = off, 1 = log errors */ ++static int ql2xplogiabsentdevice = 0; + #if defined(ISP2300) +-static int ql2xintrdelaytimer = 10; ++static int ql2xintrdelaytimer = 3; + #endif + + /* Enable for failover */ +@@ -700,6 +673,10 @@ static int ql2xfailover = 1; + static int ql2xfailover = 0; + #endif + ++#if defined(ISP2200) || defined(ISP2300) ++static int qlogin_retry_count = 0; ++#endif ++ + static int ConfigRequired = 0; + static int recoveryTime = MAX_RECOVERYTIME; + static int failbackTime = MAX_FAILBACKTIME; +@@ -708,8 +685,8 @@ static int failbackTime = MAX_FAILBACKTI + static int Bind = BIND_BY_PORT_NAME; + + static int ql2xsuspendcount = SUSPEND_COUNT; ++static int ql2xioctltimeout = QLA_PT_CMD_TOV; + +-#if defined(MODULE) + static char *ql2xopts = NULL; + + /* insmod qla2100 ql2xopts=verbose" */ +@@ -785,7 +762,7 @@ MODULE_PARM_DESC(failbackTime, + MODULE_PARM(Bind, "i"); + MODULE_PARM_DESC(Bind, + "Target persistent binding method: " +- "0 by Portname (default); 1 by PortID; 2 by Nodename. "); ++ "0 by Portname (default); 1 by PortID. "); + + MODULE_PARM(ql2xsuspendcount,"i"); + MODULE_PARM_DESC(ql2xsuspendcount, +@@ -810,8 +787,25 @@ MODULE_PARM_DESC(extended_error_logging, + "Option to enable extended error logging, " + "Default is 0 - no logging. 1 - log errors."); + ++MODULE_PARM(ql2xplogiabsentdevice, "i"); ++MODULE_PARM_DESC(ql2xplogiabsentdevice, ++ "Option to enable PLOGI to devices that are not present after " ++ "a Fabric scan. This is needed for several broken switches." ++ "Default is 0 - no PLOGI. 1 - perfom PLOGI."); ++ ++#if defined(ISP2200) || defined(ISP2300) ++MODULE_PARM(qlogin_retry_count,"i"); ++MODULE_PARM_DESC(qlogin_retry_count, ++ "Option to modify the login retry count."); ++#endif ++ ++MODULE_PARM(ql2xioctltimeout,"i"); ++MODULE_PARM_DESC(ql2xioctltimeout, ++ "IOCTL timeout value in seconds for pass-thur commands, " ++ "Default=66"); ++ + MODULE_DESCRIPTION("QLogic Fibre Channel Host Adapter Driver"); +-MODULE_AUTHOR("QLogic Corporation"); ++MODULE_AUTHOR(QLOGIC_COMPANY_NAME); + #if defined(MODULE_LICENSE) + MODULE_LICENSE("GPL"); + #endif +@@ -834,8 +828,6 @@ MODULE_PARM_DESC(ql2xuseextopts, + + static char *ql2x_extopts = NULL; + +-#endif +- + #include "listops.h" + #include "qla_fo.cfg" + +@@ -850,6 +842,9 @@ static int qla2x00_lip = 0; + /* multi-OS QLOGIC IOCTL definition file */ + #include "exioct.h" + ++#if REG_FDMI_ENABLED ++#include "qla_gs.h" ++#endif + + #if QLA_SCSI_VENDOR_DIR + /* Include routine to set direction for vendor specific commands */ +@@ -887,117 +882,12 @@ static int qla2x00_lip = 0; + + #include "qla_debug.h" + ++uint8_t copyright[48] = "Copyright 1999-2003, QLogic Corporation"; ++ + /****************************************************************************/ + /* LINUX - Loadable Module Functions. */ + /****************************************************************************/ + +-/*****************************************/ +-/* ISP Boards supported by this driver */ +-/*****************************************/ +-#define QLA2X00_VENDOR_ID 0x1077 +-#define QLA2100_DEVICE_ID 0x2100 +-#define QLA2200_DEVICE_ID 0x2200 +-#define QLA2200A_DEVICE_ID 0x2200A +-#define QLA2300_DEVICE_ID 0x2300 +-#define QLA2312_DEVICE_ID 0x2312 +-#define QLA2200A_RISC_ROM_VER 4 +-#define FPM_2300 6 +-#define FPM_2310 7 +- +-#if defined(ISP2100) +-#define NUM_OF_ISP_DEVICES 2 +-static struct pci_device_id qla2100_pci_tbl[] = +-{ +- {QLA2X00_VENDOR_ID, QLA2100_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, +- {0,} +-}; +-MODULE_DEVICE_TABLE(pci, qla2100_pci_tbl); +-#endif +-#if defined(ISP2200) +-#define NUM_OF_ISP_DEVICES 2 +-static struct pci_device_id qla2200_pci_tbl[] = +-{ +- {QLA2X00_VENDOR_ID, QLA2200_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, +- {0,} +-}; +-MODULE_DEVICE_TABLE(pci, qla2200_pci_tbl); +-#endif +-#if defined(ISP2300) +-#define NUM_OF_ISP_DEVICES 3 +-static struct pci_device_id qla2300_pci_tbl[] = +-{ +- {QLA2X00_VENDOR_ID, QLA2300_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, +- {QLA2X00_VENDOR_ID, QLA2312_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, +- {0,} +-}; +-MODULE_DEVICE_TABLE(pci, qla2300_pci_tbl); +-#endif +- +-typedef struct _qlaboards +-{ +- unsigned char bdName[9]; /* Board ID String */ +- unsigned long device_id; /* Device ID */ +- int numPorts; /* number of loops on adapter */ +- unsigned short *fwcode; /* pointer to FW array */ +- unsigned short *fwlen; /* number of words in array */ +- unsigned short *fwstart; /* start address for F/W */ +- unsigned char *fwver; /* Ptr to F/W version array */ +-} +-qla_boards_t; +- +-/* +- * NOTE: Check the Product ID of the Chip during chip diagnostics +- * whenever support for new ISP is added. +- */ +-static struct _qlaboards QLBoardTbl_fc[NUM_OF_ISP_DEVICES] = +-{ +- /* Name , Board PCI Device ID, Number of ports */ +-#if defined(ISP2300) +- {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES, +-#if defined(FC_IP_SUPPORT) +- &fw2300ip_code01[0], &fw2300ip_length01, +- &fw2300ip_addr01, &fw2300ip_version_str[0] +- }, +-#else +- &fw2300tp_code01[0], &fw2300tp_length01, +- &fw2300tp_addr01, &fw2300tp_version_str[0] +- }, +-#endif +- {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES, +-#if defined(FC_IP_SUPPORT) +- &fw2300ip_code01[0], &fw2300ip_length01, +- &fw2300ip_addr01, &fw2300ip_version_str[0] +- }, +-#else +- &fw2300tp_code01[0], &fw2300tp_length01, +- &fw2300tp_addr01, &fw2300tp_version_str[0] +- }, +-#endif +-#endif +- +-#if defined(ISP2200) +- {"QLA2200 ", QLA2200_DEVICE_ID, MAX_BUSES, +-#if defined(FC_IP_SUPPORT) +- &fw2200ip_code01[0], &fw2200ip_length01, +- &fw2200ip_addr01, &fw2200ip_version_str[0] +- }, +-#else +- &fw2200tp_code01[0], &fw2200tp_length01, +- &fw2200tp_addr01, &fw2200tp_version_str[0] +- }, +-#endif +-#endif +- +-#if defined(ISP2100) +- {"QLA2100 ", QLA2100_DEVICE_ID, MAX_BUSES, +- &fw2100tp_code01[0], &fw2100tp_length01, +- &fw2100tp_addr01, &fw2100tp_version_str[0] +- }, +-#endif +- +- {" ", 0, 0} +-}; +- + /* + * Stat info for all adpaters + */ +@@ -1009,10 +899,6 @@ static struct _qla2100stats { + unsigned long loop_resync; + unsigned long outarray_full; + unsigned long retry_q_cnt; +-#ifdef PERF_MONITORING +- unsigned long highmem_io; +-#endif +- scsi_qla_host_t *irqhba; + } + qla2x00_stats; + +@@ -1056,26 +942,40 @@ STATIC int qla2x00_retryq_dmp = 0; + #include + #include + ++static inline void qla2x00_config_dma_addressing(scsi_qla_host_t *ha); ++/** ++ * qla2x00_config_dma_addressing() - Configure OS DMA addressing method. ++ * @ha: HA context ++ * ++ * At exit, the @ha's flags.enable_64bit_addressing set to indicated ++ * supported addressing method. ++ */ ++static inline void ++qla2x00_config_dma_addressing(scsi_qla_host_t *ha) ++{ ++ /* Assume 32bit DMA address */ ++ ha->flags.enable_64bit_addressing = 0; ++ ++ if (sizeof(dma_addr_t) > 4) { ++ /* Update our PCI device dma_mask for full 64 bits */ ++ if (pci_set_dma_mask(ha->pdev, 0xffffffffffffffffULL) == 0) { ++ ha->flags.enable_64bit_addressing = 1; ++ } else { ++ printk("qla2x00: Failed to set 64 bit PCI mask; using " ++ "32 bit mask.\n"); ++ pci_set_dma_mask(ha->pdev, 0xffffffff); ++ } ++ } else { ++ pci_set_dma_mask(ha->pdev, 0xffffffff); ++ } + +-#define MAX_LOCAL_LOOP_IDS 127 +-static uint8_t alpa_table[MAX_LOCAL_LOOP_IDS] = { +- 0xEF, 0xE8, 0xE4, 0xE2, 0xE1, 0xE0, 0xDC, 0xDA, +- 0xD9, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xCE, +- 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC7, 0xC6, 0xC5, +- 0xC3, 0xBC, 0xBA, 0xB9, 0xB6, 0xB5, 0xB4, 0xB3, +- 0xB2, 0xB1, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, +- 0xA7, 0xA6, 0xA5, 0xA3, 0x9F, 0x9E, 0x9D, 0x9B, +- 0x98, 0x97, 0x90, 0x8F, 0x88, 0x84, 0x82, 0x81, +- 0x80, 0x7C, 0x7A, 0x79, 0x76, 0x75, 0x74, 0x73, +- 0x72, 0x71, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, +- 0x67, 0x66, 0x65, 0x63, 0x5C, 0x5A, 0x59, 0x56, +- 0x55, 0x54, 0x53, 0x52, 0x51, 0x4E, 0x4D, 0x4C, +- 0x4B, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x43, 0x3C, +- 0x3A, 0x39, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, +- 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x27, 0x26, +- 0x25, 0x23, 0x1F, 0x1E, 0x1D, 0x1B, 0x18, 0x17, +- 0x10, 0x0F, 0x08, 0x04, 0x02, 0x01, 0x00 +-}; ++ printk(KERN_INFO ++ "scsi(%ld): %d Bit PCI Addressing Enabled.\n", ha->host_no, ++ (ha->flags.enable_64bit_addressing ? 64 : 32)); ++ DEBUG2(printk(KERN_INFO ++ "scsi(%ld): Scatter/Gather entries= %d\n", ha->host_no, ++ ha->host->sg_tablesize)); ++} + + /************************************************************************* + * qla2x00_set_info +@@ -1085,13 +985,12 @@ static uint8_t alpa_table[MAX_LOCAL_LOOP + * + * Returns: + *************************************************************************/ +-static int ++int + qla2x00_set_info(char *buffer, int length, scsi_qla_host_t *ha) + { +- +- +- if (length < 13 || strncmp("scsi-qla", buffer, 7)) ++ if (length < 13 || strncmp("scsi-qla", buffer, 8)) + goto out; ++ + /* + * Usage: echo "scsi-qlascan " > /proc/scsi// + * +@@ -1105,10 +1004,19 @@ qla2x00_set_info(char *buffer, int lengt + * Scan for all luns on all ports. + */ + if (!strncmp("scan", buffer + 8, 4)) { +- printk("scsi-qla%ld: Scheduling SCAN for new luns.... \n",ha->host_no); +- printk(KERN_INFO "scsi-qla%ld: Scheduling SCAN for new luns.... \n",ha->host_no); +- set_bit(PORT_SCAN_NEEDED, &ha->dpc_flags); ++ printk("scsi-qla%ld: Scheduling SCAN for new luns.... \n", ++ ha->host_no); ++ printk(KERN_INFO ++ "scsi-qla%ld: Scheduling SCAN for new luns.... \n", ++ ha->host_no); ++ set_bit(PORT_SCAN_NEEDED, &ha->dpc_flags); ++ } else if (!strncmp("lip", buffer + 8, 3)) { ++ printk("scsi-qla%ld: Scheduling LIP.... \n", ha->host_no); ++ printk(KERN_INFO ++ "scsi-qla%ld: Scheduling LIP.... \n", ha->host_no); ++ set_bit(LOOP_RESET_NEEDED, &ha->dpc_flags); + } ++ + out: + /* return (-ENOSYS); */ /* Currently this is a no-op */ + return (length); /* Currently this is a no-op */ +@@ -1187,7 +1095,7 @@ copy_info(struct info_str *info, char *f + * < 0: error. errno value. + * >= 0: sizeof data returned. + *************************************************************************/ +-static int ++int + qla2x00_proc_info(char *buffer, char **start, off_t offset, + int length, int hostno, int inout) + { +@@ -1204,6 +1112,11 @@ qla2x00_proc_info(char *buffer, char **s + struct list_head *list, *temp; + unsigned long cpu_flags; + uint8_t *loop_state; ++ fc_port_t *fcport; ++ os_tgt_t *tq; ++#if defined(ISP2300) ++ struct qla2x00_special_options special_options; ++#endif + + #if REQ_TRACE + +@@ -1340,12 +1253,6 @@ qla2x00_proc_info(char *buffer, char **s + ha->qthreads, ha->retry_q_cnt, + ha->done_q_cnt, ha->scsi_retry_q_cnt); + +-#ifdef PERF_MONITORING +- copy_info(&info, +- "Number of highmem_io = %ld\n", +- qla2x00_stats.highmem_io); +-#endif +- + if (ha->flags.failover_enabled) { + copy_info(&info, + "Number of reqs in failover_q= %d\n", +@@ -1354,17 +1261,17 @@ qla2x00_proc_info(char *buffer, char **s + + flags = (unsigned long *) &ha->flags; + +- if (ha->loop_state == LOOP_DOWN) { ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN) { + loop_state = "DOWN"; +- } else if (ha->loop_state == LOOP_UP) { ++ } else if (atomic_read(&ha->loop_state) == LOOP_UP) { + loop_state = "UP"; +- } else if (ha->loop_state == LOOP_READY) { ++ } else if (atomic_read(&ha->loop_state) == LOOP_READY) { + loop_state = "READY"; +- } else if (ha->loop_state == LOOP_TIMEOUT) { ++ } else if (atomic_read(&ha->loop_state) == LOOP_TIMEOUT) { + loop_state = "TIMEOUT"; +- } else if (ha->loop_state == LOOP_UPDATE) { ++ } else if (atomic_read(&ha->loop_state) == LOOP_UPDATE) { + loop_state = "UPDATE"; +- } else if (ha->loop_state == LOOP_DEAD) { ++ } else if (atomic_read(&ha->loop_state) == LOOP_DEAD) { + loop_state = "DEAD"; + } else { + loop_state = "UNKNOWN"; +@@ -1393,6 +1300,34 @@ qla2x00_proc_info(char *buffer, char **s + "Commands retried with dropped frame(s) = %d\n", + ha->dropped_frame_error_cnt); + ++#if defined(ISP2300) ++ *((uint16_t *) &special_options) = ++ le16_to_cpu(*((uint16_t *) &ha->init_cb->special_options)); ++ ++ copy_info(&info, ++ "Configured characteristic impedence: %d ohms\n", ++ special_options.enable_50_ohm_termination ? 50 : 75); ++ ++ switch (special_options.data_rate) { ++ case 0: ++ loop_state = "1 Gb/sec"; ++ break; ++ ++ case 1: ++ loop_state = "2 Gb/sec"; ++ break; ++ ++ case 2: ++ loop_state = "1-2 Gb/sec auto-negotiate"; ++ break; ++ ++ default: ++ loop_state = "unknown"; ++ break; ++ } ++ copy_info(&info, "Configured data rate: %s\n", loop_state); ++#endif ++ + copy_info(&info, "\n"); + + #if REQ_TRACE +@@ -1491,52 +1426,43 @@ qla2x00_proc_info(char *buffer, char **s + ha->init_cb->port_name[7]); + + /* Print out device port names */ +- for (i = 0; i < MAX_FIBRE_DEVICES; i++) { +- if (ha->fc_db[i].loop_id == PORT_UNUSED) { +- continue; +- } ++ if (ha->flags.failover_enabled) { ++ i = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; + +- if (ha->flags.failover_enabled) { +- copy_info(&info, +- "scsi-qla%d-port-%d=" +- "%02x%02x%02x%02x%02x%02x%02x%02x:" +- "%02x%02x%02x%02x%02x%02x%02x%02x;\n", +- (int)ha->instance, i, +- ha->fc_db[i].name[0], +- ha->fc_db[i].name[1], +- ha->fc_db[i].name[2], +- ha->fc_db[i].name[3], +- ha->fc_db[i].name[4], +- ha->fc_db[i].name[5], +- ha->fc_db[i].name[6], +- ha->fc_db[i].name[7], +- ha->fc_db[i].wwn[0], +- ha->fc_db[i].wwn[1], +- ha->fc_db[i].wwn[2], +- ha->fc_db[i].wwn[3], +- ha->fc_db[i].wwn[4], +- ha->fc_db[i].wwn[5], +- ha->fc_db[i].wwn[6], +- ha->fc_db[i].wwn[7]); +- } else { ++ copy_info(&info, ++ "scsi-qla%d-port-%d=" ++ "%02x%02x%02x%02x%02x%02x%02x%02x:" ++ "%02x%02x%02x%02x%02x%02x%02x%02x;\n", ++ (int)ha->instance, i, ++ fcport->node_name[0], fcport->node_name[1], ++ fcport->node_name[2], fcport->node_name[3], ++ fcport->node_name[4], fcport->node_name[5], ++ fcport->node_name[6], fcport->node_name[7], ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7]); ++ i++; ++ } ++ } else { ++ for (t = 0; t < MAX_FIBRE_DEVICES; t++) { ++ if ((tq = TGT_Q(ha, t)) == NULL) ++ continue; + copy_info(&info, +- "scsi-qla%d-target-%d=" +- "%02x%02x%02x%02x%02x%02x%02x%02x;\n", +- (int)ha->instance, i, +- ha->fc_db[i].wwn[0], +- ha->fc_db[i].wwn[1], +- ha->fc_db[i].wwn[2], +- ha->fc_db[i].wwn[3], +- ha->fc_db[i].wwn[4], +- ha->fc_db[i].wwn[5], +- ha->fc_db[i].wwn[6], +- ha->fc_db[i].wwn[7]); ++ "scsi-qla%d-target-%d=" ++ "%02x%02x%02x%02x%02x%02x%02x%02x;\n", ++ (int)ha->instance, t, ++ tq->port_name[0], tq->port_name[1], ++ tq->port_name[2], tq->port_name[3], ++ tq->port_name[4], tq->port_name[5], ++ tq->port_name[6], tq->port_name[7]); + } +- +- } /* 2.25 node/port display to proc */ ++ } + + copy_info(&info, "\nSCSI LUN Information:\n"); +- + copy_info(&info, "(Id:Lun) * - indicates lun is not registered with the OS.\n"); + + /* scan for all equipment stats */ +@@ -1573,13 +1499,6 @@ qla2x00_proc_info(char *buffer, char **s + (int)up->q_flag); + } + +-#ifdef PERF_MONITORING +- copy_info(&info, +- " %lx:%lx (act,resp),", +- up->act_time/up->io_cnt, +- up->resp_time/up->io_cnt); +-#endif +- + copy_info(&info, + " %ld:%d:%02x,", + up->fclun->fcport->ha->instance, +@@ -1650,8 +1569,6 @@ pci_set_dma_mask(struct pci_dev *dev, u6 + static inline void + sp_put(struct scsi_qla_host * ha, srb_t *sp) + { +- unsigned long flags; +- + if (atomic_read(&sp->ref_count) == 0) { + printk(KERN_INFO + "%s(): **** SP->ref_count not zero\n", +@@ -1665,19 +1582,7 @@ sp_put(struct scsi_qla_host * ha, srb_t + return; + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irqsave(&io_request_lock, flags); +-#else +- spin_lock_irqsave(ha->host->host_lock, flags); +-#endif +- + qla2x00_callback(ha, sp->cmd); +- +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irqrestore(&io_request_lock, flags); +-#else +- spin_unlock_irqrestore(ha->host->host_lock, flags); +-#endif + } + + /************************************************************************** +@@ -1753,7 +1658,7 @@ __sp_put(struct scsi_qla_host * ha, srb_ + * None. + * Note:Need to add the support for if( sp->state == SRB_FAILOVER_STATE). + **************************************************************************/ +-static void ++void + qla2x00_cmd_timeout(srb_t *sp) + { + int t, l; +@@ -1761,9 +1666,7 @@ qla2x00_cmd_timeout(srb_t *sp) + scsi_qla_host_t *vis_ha, *dest_ha; + Scsi_Cmnd *cmd; + ulong flags; +-#if defined(QL_DEBUG_LEVEL_3) + ulong cpu_flags; +-#endif + fc_port_t *fcport; + + cmd = sp->cmd; +@@ -1799,8 +1702,12 @@ qla2x00_cmd_timeout(srb_t *sp) + * DID_BUS_BUSY to let the OS retry this cmd. + */ + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD || +- ( vis_ha->loop_state == LOOP_DEAD )){ ++ atomic_read(&fcport->ha->loop_state) == LOOP_DEAD) { + cmd->result = DID_NO_CONNECT << 16; ++ if (atomic_read(&fcport->ha->loop_state) == LOOP_DOWN) ++ sp->err_id = SRB_ERR_LOOP; ++ else ++ sp->err_id = SRB_ERR_PORT; + } else { + cmd->result = DID_BUS_BUSY << 16; + } +@@ -1809,12 +1716,8 @@ qla2x00_cmd_timeout(srb_t *sp) + } + spin_unlock_irqrestore(&vis_ha->list_lock, flags); + if (processed) { +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&vis_ha->run_qla_task); +-#else + if (vis_ha->dpc_wait && !vis_ha->dpc_active) + up(vis_ha->dpc_wait); +-#endif + return; + } + +@@ -1847,10 +1750,15 @@ qla2x00_cmd_timeout(srb_t *sp) + if (dest_ha->flags.failover_enabled) { + cmd->result = DID_BUS_BUSY << 16; + } else { +- if ((atomic_read(&fcport->state) == FC_DEVICE_DEAD) || +- ( dest_ha->loop_state == LOOP_DEAD )){ ++ if (atomic_read(&fcport->state) == FC_DEVICE_DEAD || ++ atomic_read(&dest_ha->loop_state) == LOOP_DEAD) { + qla2x00_extend_timeout(cmd, EXTEND_CMD_TIMEOUT); + cmd->result = DID_NO_CONNECT << 16; ++ if (atomic_read(&dest_ha->loop_state) == ++ LOOP_DOWN) ++ sp->err_id = SRB_ERR_LOOP; ++ else ++ sp->err_id = SRB_ERR_PORT; + } else { + cmd->result = DID_BUS_BUSY << 16; + } +@@ -1861,16 +1769,11 @@ qla2x00_cmd_timeout(srb_t *sp) + } + spin_unlock_irqrestore(&dest_ha->list_lock, flags); + if (processed) { +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&dest_ha->run_qla_task); +-#else + if (dest_ha->dpc_wait && !dest_ha->dpc_active) + up(dest_ha->dpc_wait); +-#endif + return; + } + +-#if defined(QL_DEBUG_LEVEL_3) + spin_lock_irqsave(&dest_ha->list_lock, cpu_flags); + if (sp->state == SRB_DONE_STATE) { + /* IO in done_q -- leave it */ +@@ -1893,6 +1796,24 @@ qla2x00_cmd_timeout(srb_t *sp) + + DEBUG(printk("cmd_timeout: Found in ISP \n");) + ++ if (sp->flags & SRB_TAPE) { ++ /* ++ * We cannot allow the midlayer error handler ++ * to wakeup and begin the abort process. ++ * Extend the timer so that the firmware can ++ * properly return the IOCB. ++ */ ++ DEBUG(printk("cmd_timeout: Extending timeout " ++ "of FCP2 tape command!\n")); ++ qla2x00_extend_timeout(sp->cmd, ++ EXTEND_CMD_TIMEOUT); ++ } else if (sp->flags & SRB_IOCTL) { ++ dest_ha->ioctl_err_cmd = sp->cmd; ++ set_bit(IOCTL_ERROR_RECOVERY, &dest_ha->dpc_flags); ++ if (dest_ha->dpc_wait && !dest_ha->dpc_active) ++ up(dest_ha->dpc_wait); ++ } ++ + sp->state = SRB_ACTIVE_TIMEOUT_STATE; + spin_unlock_irqrestore(&dest_ha->hardware_lock, flags); + } else { +@@ -1917,8 +1838,7 @@ qla2x00_cmd_timeout(srb_t *sp) + "cmd_timeout: LOST command state = 0x%x\n", sp->state); + } + spin_unlock_irqrestore(&dest_ha->list_lock, cpu_flags); +-#endif +- ++ + DEBUG3(printk("cmd_timeout: Leaving\n");) + } + +@@ -1943,16 +1863,7 @@ qla2x00_add_timer_to_cmd(srb_t *sp, int + sp->timer.expires = jiffies + timeout * HZ; + sp->timer.data = (unsigned long) sp; + sp->timer.function = (void (*) (unsigned long))qla2x00_cmd_timeout; +-#ifndef __VMWARE__ + add_timer(&sp->timer); +-#else +- if (timeout) { +- add_timer(&sp->timer); +- } +- else { +- sp->timer.function = NULL; +- } +-#endif + } + + /************************************************************************** +@@ -1981,7 +1892,7 @@ qla2x00_delete_timer_from_cmd(srb_t *sp + * qla2x00_detect + * + * Description: +-* This routine will probe for Qlogic FC SCSI host adapters. ++* This routine will probe for QLogic FC SCSI host adapters. + * It returns the number of host adapters of a particular + * type that were found. It also initialize all data necessary for + * the driver. It is passed-in the host number, so that it +@@ -1993,7 +1904,7 @@ qla2x00_delete_timer_from_cmd(srb_t *sp + * Returns: + * num - number of host adapters found. + **************************************************************************/ +-static int ++int + qla2x00_detect(Scsi_Host_Template *template) + { + int ret; +@@ -2010,17 +1921,7 @@ qla2x00_detect(Scsi_Host_Template *templ + + ENTER("qla2x00_detect"); + +-#ifdef __VMWARE__ +- if (vmk_check_version(VMKDRIVER_VERSION) != VMK_VERSION_OK) { +- return 0; +- } +- /* In the vmkernel, we do not hold the io_request lock during init, +- * so leave it unlocked and do not lock it before returning. */ +-#else +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ + + #if defined(MODULE) + DEBUG3(printk("DEBUG: qla2x00_set_info starts at address = %p\n", +@@ -2043,12 +1944,12 @@ qla2x00_detect(Scsi_Host_Template *templ + + /* Increments the usage count of module: qla2[23]00_conf */ + #if defined(ISP2200) +- ql2x_extopts = (char *) inter_module_get_request("qla22XX_conf", +- "qla2200_conf"); ++ ql2x_extopts = ++ (char *) inter_module_get_request("qla22XX_conf", "qla2200_conf"); + #endif + #if defined(ISP2300) +- ql2x_extopts = (char *) inter_module_get_request("qla23XX_conf", +- "qla2300_conf"); ++ ql2x_extopts = ++ (char *) inter_module_get_request("qla23XX_conf", "qla2300_conf"); + #endif + + DEBUG4(printk("qla2x00_detect: ql2xopts=%p ql2x_extopts=%p " +@@ -2061,8 +1962,8 @@ qla2x00_detect(Scsi_Host_Template *templ + /* Force to use old option. */ + qla2x00_setup(ql2xopts); + printk(KERN_INFO "qla2x00:Loading driver with config data " +- " from /etc/modules.conf. Config Data length=0x%x\n", +- strlen(ql2xopts)); ++ " from /etc/modules.conf. Config Data length=0x%lx\n", ++ (ulong)strlen(ql2xopts)); + + } else if (ql2x_extopts != NULL && *ql2x_extopts != '\0') { + DEBUG4(printk( "qla2x00_detect: using new opt:" +@@ -2073,8 +1974,8 @@ qla2x00_detect(Scsi_Host_Template *templ + ql2xdevflag++; + } + printk(KERN_INFO "qla2x00: Loading driver with config data " +- "from config module. Config Data length=0x%x\n", +- strlen(ql2x_extopts)); ++ "from config module. Config Data length=0x%lx\n", ++ (ulong)strlen(ql2x_extopts)); + } + + if (dummy_buffer[0] != 'P') +@@ -2091,11 +1992,8 @@ qla2x00_detect(Scsi_Host_Template *templ + + if (!pci_present()) { + printk("scsi: PCI not present\n"); +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ ++ + return 0; + } /* end of !pci_present() */ + +@@ -2121,6 +2019,7 @@ qla2x00_detect(Scsi_Host_Template *templ + for (i = 0; bdp->device_id != 0 && i < NUM_OF_ISP_DEVICES; + i++, bdp++) { + ++ pdev = NULL; + /* PCI_SUBSYSTEM_IDS supported */ + while ((pdev = pci_find_subsys(QLA2X00_VENDOR_ID, + bdp->device_id, +@@ -2142,25 +2041,6 @@ qla2x00_detect(Scsi_Host_Template *templ + subsystem_vendor = pdev->subsystem_vendor; + subsystem_device = pdev->subsystem_device; + +- /* If it's an XXX SubSys Vendor ID adapter, skip it. */ +- /* +- if (pdev->subsystem_vendor == PCI_VENDOR_ID_XXX) { +- printk(KERN_WARNING +- "qla2x00: Skip XXX SubSys Vendor ID " +- "Controller\n"); +- continue; +- } +- */ +- +-#ifdef __VMWARE__ +- /* We do not need to hold any lock when calling the +- * functions below in the vmkernel. */ +-#else +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ +- + #if defined(ISP2100) + template->name = "QLogic Fibre Channel 2100"; + #endif +@@ -2170,35 +2050,20 @@ qla2x00_detect(Scsi_Host_Template *templ + #if defined(ISP2300) + template->name = "QLogic Fibre Channel 2300"; + #endif +- if ((host = +- scsi_register( +- template, +- sizeof(scsi_qla_host_t))) == NULL) { +- ++ spin_lock_irq(&io_request_lock); ++ host = scsi_register(template, sizeof(scsi_qla_host_t)); ++ spin_unlock_irq(&io_request_lock); ++ if (host == NULL) { + printk(KERN_WARNING +- "qla2x00: couldn't register " +- "with scsi layer\n"); +- return 0; ++ "qla2x00: couldn't register with scsi " ++ "layer\n"); ++ goto bailout; + } + + ha = (scsi_qla_host_t *)host->hostdata; + +-#if defined(CONFIG_VMNIX) && !defined(__VMWARE__) +- host->bus = pdev->bus->number; +- host->function = pdev->devfn; +- host->devid = ha; +-#endif + /* Clear our data area */ + memset(ha, 0, sizeof(scsi_qla_host_t)); +-#ifdef __VMWARE__ +- scsi_register_uinfo(host, pdev->bus->number, pdev->devfn, ha); +- +- /* Now get and save the adapter pointer... */ +- ha->vmk_adapter = host->adapter; +- if (ha->vmk_adapter == NULL) { +- panic("qla : vmkernel adapter structure is NULL\n"); +- } +-#endif + + ha->host_no = host->host_no; + ha->host = host; +@@ -2208,10 +2073,10 @@ qla2x00_detect(Scsi_Host_Template *templ + ret = qla2x00_iospace_config(ha); + if (ret != 0) { + printk(KERN_WARNING +- "qla2x00: couldn't configure PCI I/O space!\n"); +- ++ "qla2x00: couldn't configure PCI I/O " ++ "space!\n"); ++ spin_lock_irq(&io_request_lock); + scsi_unregister(host); +- + spin_unlock_irq(&io_request_lock); + + continue; +@@ -2230,18 +2095,21 @@ qla2x00_detect(Scsi_Host_Template *templ + ha->devnum = i; + if (qla2x00_verbose) { + printk(KERN_INFO +- "scsi(%d): Found a %s @ bus %d, " +- "device 0x%x, irq %d, iobase 0x%p\n", +- host->host_no, +- bdp->bdName, +- ha->pdev->bus->number, +- PCI_SLOT(ha->pdev->devfn), +- host->irq, +- ha->iobase); ++ "scsi(%d): Found a %s @ bus %d, device " ++ "0x%x, irq %d, iobase 0x%p\n", ++ host->host_no, bdp->bdName, ++ ha->pdev->bus->number, ++ PCI_SLOT(ha->pdev->devfn), host->irq, ++ ha->iobase); + } + + spin_lock_init(&ha->hardware_lock); + ++#if defined(SH_HAS_HOST_LOCK) ++ spin_lock_init(&ha->host_lock); ++ host->host_lock = &ha->host_lock; ++#endif ++ + /* 4.23 Initialize /proc/scsi/qla2x00 counters */ + ha->actthreads = 0; + ha->qthreads = 0; +@@ -2254,9 +2122,10 @@ qla2x00_detect(Scsi_Host_Template *templ + ha->total_bytes = 0; + + /* Initialized memory allocation pointers */ +- INIT_LIST_HEAD(&ha->fcinitiators); + INIT_LIST_HEAD(&ha->free_queue); + ++ INIT_LIST_HEAD(&ha->fcports); ++ + INIT_LIST_HEAD(&ha->done_queue); + INIT_LIST_HEAD(&ha->retry_queue); + INIT_LIST_HEAD(&ha->scsi_retry_queue); +@@ -2264,42 +2133,22 @@ qla2x00_detect(Scsi_Host_Template *templ + + INIT_LIST_HEAD(&ha->pending_queue); + +- /* +- * Need to call this before the PCI allocations are +- * done in qla2x00_mem_alloc(). +- */ + qla2x00_config_dma_addressing(ha); +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ ++ + if (qla2x00_mem_alloc(ha)) { + printk(KERN_WARNING +- "scsi(%d): [ERROR] Failed to allocate " +- "memory for adapter\n", +- host->host_no); ++ "scsi(%d): [ERROR] Failed to allocate " ++ "memory for adapter\n", host->host_no); + qla2x00_mem_free(ha); +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++ pci_release_regions(ha->pdev); ++ + spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ + scsi_unregister(host); +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ ++ + continue; + } + +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ +- + ha->prev_topology = 0; + ha->ports = bdp->numPorts; + +@@ -2319,11 +2168,6 @@ qla2x00_detect(Scsi_Host_Template *templ + else + ha->flags.failover_enabled = 0; + +-#if QLA2X_PERFORMANCE +- tasklet_init(&ha->run_qla_task, +- (void *)qla2x00_done_tasklet, +- (unsigned long) ha); +-#endif + + /* + * These locks are used to prevent more than one CPU +@@ -2337,61 +2181,30 @@ qla2x00_detect(Scsi_Host_Template *templ + spin_lock_init(&ha->mbx_q_lock); + spin_lock_init(&ha->list_lock); + +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ +- + if (qla2x00_initialize_adapter(ha) && + !(ha->device_flags & DFLG_NO_CABLE)) { + + printk(KERN_WARNING +- "qla2x00: Failed to " +- "initialize adapter\n"); ++ "qla2x00: Failed to initialize adapter\n"); + +- DEBUG2(printk(KERN_INFO "scsi%ld: Failed to initialize " +- "adapter - Adapter flags %x.\n", +- ha->host_no, ha->device_flags);) ++ DEBUG2(printk(KERN_INFO ++ "scsi%ld: Failed to initialize adapter - " ++ "Adapter flags %x.\n", ha->host_no, ++ ha->device_flags);) + + qla2x00_mem_free(ha); +-#if QLA2X_PERFORMANCE +- tasklet_kill(&ha->run_qla_task); +-#endif + +-#ifdef __VMWARE__ +- /* No need to grab the lock just to call +- * scsi_unregister in the vmkernel. +- */ +-#else +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++ pci_release_regions(ha->pdev); + spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ +- + scsi_unregister(host); +- +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ ++ + continue; + } + + /* + * Startup the kernel thread for this host adapter + */ +-#ifdef __VMWARE__ +- /* +- * Initialize the extensions defined in ha to +- * communicate with the DPC kernel thread. +- */ +- ha->should_die = FALSE; +- +- ha->notify_sema = (struct semaphore)__SEMAPHORE_INITIALIZER(ha->notify_sema, 0); +- ha->dpc_notify = &ha->notify_sema; +-#else + #if defined(ISP2100) + ha->dpc_notify = &qla2100_detect_sem; + #endif +@@ -2401,20 +2214,13 @@ qla2x00_detect(Scsi_Host_Template *templ + #if defined(ISP2300) + ha->dpc_notify = &qla2300_detect_sem; + #endif +-#endif //__VMWARE__ +- + kernel_thread((int (*)(void *))qla2x00_do_dpc, +- (void *) ha, 0); ++ (void *) ha, 0); + + /* + * Now wait for the kernel dpc thread to initialize + * and go to sleep. + */ +-#ifdef __VMWARE__ +- printk("qla: waiting for kernel_thread\n"); +- down(ha->dpc_notify); +- printk("qla: kernel_thread back\n"); +-#else + #if defined(ISP2100) + down(&qla2100_detect_sem); + #endif +@@ -2424,56 +2230,29 @@ qla2x00_detect(Scsi_Host_Template *templ + #if defined(ISP2300) + down(&qla2300_detect_sem); + #endif +-#endif //__VMWARE__ + + ha->dpc_notify = NULL; + ha->next = NULL; +- /* Mark preallocated Loop IDs in use. */ +- ha->fabricid[SNS_FL_PORT].in_use = TRUE; +- ha->fabricid[FABRIC_CONTROLLER].in_use = TRUE; +- ha->fabricid[SIMPLE_NAME_SERVER].in_use = TRUE; +- +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irq(&io_request_lock); +-#endif + + /* Register our resources with Linux */ + if (qla2x00_register_with_Linux(ha, bdp->numPorts-1)) { + printk(KERN_WARNING +- "scsi%ld: Failed to " +- "register resources.\n", +- ha->host_no); +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); +-#endif ++ "scsi%ld: Failed to register resources.\n", ++ ha->host_no); + + qla2x00_mem_free(ha); +-#if QLA2X_PERFORMANCE +- tasklet_kill(&ha->run_qla_task); +-#endif +-#ifdef __VMWARE__ +- /* No need to grab the lock just to call +- * scsi_unregister in the vmkernel. +- */ +-#else +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ + ++ pci_release_regions(ha->pdev); ++ spin_lock_irq(&io_request_lock); + scsi_unregister(host); +- +-#ifndef __VMWARE__ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + spin_unlock_irq(&io_request_lock); +-#endif +-#endif //__VMWARE__ ++ + continue; + } + + DEBUG2(printk(KERN_INFO "DEBUG: detect hba %ld at " +- "address = %p\n", +- ha->host_no, ha);) ++ "address = %p - adding to hba list\n", ha->host_no, ++ ha);) + + reg = ha->iobase; + +@@ -2482,14 +2261,15 @@ qla2x00_detect(Scsi_Host_Template *templ + + /* Ensure mailbox registers are free. */ + spin_lock_irqsave(&ha->hardware_lock, flags); ++ + WRT_REG_WORD(®->semaphore, 0); + WRT_REG_WORD(®->host_cmd, HC_CLR_RISC_INT); + WRT_REG_WORD(®->host_cmd, HC_CLR_HOST_INT); + + /* Enable proper parity */ +-#if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) +- /* SRAM, Instruction RAM and GP RAM parity */ ++#if defined(ISP2300) ++ if (check_all_device_ids(ha)) ++ /* SRAM, Instruction RAM and GP RAM parity */ + WRT_REG_WORD(®->host_cmd, + (HC_ENABLE_PARITY + 0x7)); + else +@@ -2500,10 +2280,6 @@ qla2x00_detect(Scsi_Host_Template *templ + + spin_unlock_irqrestore(&ha->hardware_lock, flags); + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); +-#endif +- + /* + * if failover is enabled read the user configuration + */ +@@ -2513,9 +2289,9 @@ qla2x00_detect(Scsi_Host_Template *templ + else + mp_config_required = 0; + +- DEBUG(printk("qla2x00_detect: qla2x00_cfg_init " +- "for hba %ld\n", +- ha->instance);) ++ DEBUG2(printk("qla2x00_detect: " ++ "qla2x00_cfg_init for hba %ld\n", ++ ha->instance);) + + qla2x00_cfg_init(ha); + } +@@ -2526,12 +2302,12 @@ qla2x00_detect(Scsi_Host_Template *templ + /* Insert new entry into the list of adapters */ + ha->next = NULL; + +- if( qla2x00_hostlist == NULL ) { ++ if (qla2x00_hostlist == NULL) { + qla2x00_hostlist = ha; + } else { + cur_ha = qla2x00_hostlist; + +- while( cur_ha->next != NULL ) ++ while (cur_ha->next != NULL) + cur_ha = cur_ha->next; + + cur_ha->next = ha; +@@ -2543,17 +2319,15 @@ qla2x00_detect(Scsi_Host_Template *templ + * devices to come on-line. We don't want Linux + * scanning before we are ready. + */ +- for (wait_switch = jiffies + +- (ha->loop_reset_delay * HZ); +- /* jiffies < wait_switch */ +- time_before(jiffies,wait_switch) && +- !(ha->device_flags & +- (DFLG_NO_CABLE | DFLG_FABRIC_DEVICES)) +- && (ha->device_flags & SWITCH_FOUND) ;) { ++ wait_switch = jiffies + (ha->loop_reset_delay * HZ); ++ for ( ; time_before(jiffies, wait_switch) && ++ !(ha->device_flags & (DFLG_NO_CABLE | ++ DFLG_FABRIC_DEVICES)) && ++ (ha->device_flags & SWITCH_FOUND); ) { + + qla2x00_check_fabric_devices(ha); + +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(5); + } + +@@ -2561,6 +2335,7 @@ qla2x00_detect(Scsi_Host_Template *templ + if (displayConfig && (!ha->flags.failover_enabled)) + qla2x00_display_fc_names(ha); + ++ printk(KERN_INFO"%s num_hosts=%d\n",__func__,num_hosts); + ha->init_done = 1; + num_hosts++; + } +@@ -2568,26 +2343,24 @@ qla2x00_detect(Scsi_Host_Template *templ + + /* Decrement the usage count of module: qla2[23]00_conf */ + #if defined(ISP2200) +- if(ql2x_extopts) ++ if (ql2x_extopts) + inter_module_put("qla22XX_conf"); + #endif + #if defined(ISP2300) +- if(ql2x_extopts) ++ if (ql2x_extopts) + inter_module_put("qla23XX_conf"); + #endif + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++ if (ql2xfailover) { ++ /* remap any paths on other hbas */ ++ qla2x00_cfg_remap(qla2x00_hostlist); ++ if (displayConfig) ++ qla2x00_cfg_display_devices(displayConfig == 2); ++ } ++ ++bailout: + spin_lock_irq(&io_request_lock); +-#endif + +- if (displayConfig && ha->flags.failover_enabled) +- qla2x00_cfg_display_devices(); +-#ifdef __VMWARE__ +- /* We do not hold the io_request lock when calling init and we +- * should not hold it when returning. +- */ +- spin_unlock_irq(&io_request_lock); +-#endif + LEAVE("qla2x00_detect"); + + return num_hosts; +@@ -2615,16 +2388,8 @@ qla2x00_register_with_Linux(scsi_qla_hos + + host->can_queue = max_srbs; /* default value:-MAX_SRBS(4096) */ + host->cmd_per_lun = 1; +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + host->select_queue_depths = qla2x00_select_queue_depth; +-#endif +-#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP) +- host->hostt->get_scsi_info_from_wwn = qla2x00_get_scsi_info_from_wwn; +- host->hostt->get_wwn_from_scsi_info = qla2x00_get_wwn_from_scsi_info; +-#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */ +- + host->n_io_port = 0xFF; +- + host->base = 0; + #if MEMORY_MAPPED_IO + host->base = (unsigned long)ha->mmio_address; +@@ -2642,31 +2407,12 @@ qla2x00_register_with_Linux(scsi_qla_hos + /* set our host ID (need to do something about our two IDs) */ + host->this_id = 255; + +-#if defined(CONFIG_MD_MULTIHOST_FC) +- { +- unsigned long i; +- unsigned long j; +- +- union { +- __u64 identifier; +- char wwn[WWN_SIZE]; +- } foo; +- +- for (i = 0, j = WWN_SIZE-1; i < WWN_SIZE; i++, j--) { +- foo.wwn[i] = ha->init_cb->port_name[j]; +- } +- +- host->fc_wwn = foo.identifier; +- } +-#endif /* CONFIG_MD_MULTIHOST_FC */ +- + /* Register the IRQ with Linux (sharable) */ + if (request_irq(host->irq, qla2x00_intr_handler, +- SA_INTERRUPT|SA_SHIRQ, DRIVER_NAME, ha)) { ++ SA_INTERRUPT|SA_SHIRQ, DRIVER_NAME, ha)) { + printk(KERN_WARNING +- "qla2x00 : Failed to reserve interrupt %d " +- "already in use\n", +- host->irq); ++ "qla2x00 : Failed to reserve interrupt %d already in use\n", ++ host->irq); + return 1; + } + +@@ -2690,7 +2436,7 @@ qla2x00_register_with_Linux(scsi_qla_hos + * Returns: + * 0 - Always returns good status + **************************************************************************/ +-static int ++int + qla2x00_release(struct Scsi_Host *host) + { + scsi_qla_host_t *ha = (scsi_qla_host_t *) host->hostdata; +@@ -2715,20 +2461,6 @@ qla2x00_release(struct Scsi_Host *host) + + /* Kill the kernel thread for this host */ + if (ha->dpc_handler != NULL ) { +-#ifdef __VMWARE__ +- extern int vmk_shutting_down(void); +- if (vmk_shutting_down()) { +- printk("qla: vmkernel shutting down\n"); +- } else { +- printk("qla: killing thread and waiting\n"); +- ha->should_die = 1; +- ha->notify_sema = (struct semaphore)__SEMAPHORE_INITIALIZER(ha->notify_sema, 0); +- ha->dpc_notify = &ha->notify_sema; +- up(&ha->wait_sema); +- down(ha->dpc_notify); +- printk("qla: back from killing thread\n"); +- } +-#else + + #if defined(ISP2100) + ha->dpc_notify = &qla2100_detect_sem; +@@ -2752,35 +2484,13 @@ qla2x00_release(struct Scsi_Host *host) + down(&qla2300_detect_sem); + #endif + +-#endif //__VMWARE__ + ha->dpc_notify = NULL; + } + +-#if QLA2X_PERFORMANCE +- tasklet_kill(&ha->run_qla_task); +-#endif +- +-#if USE_FLASH_DATABASE +- /* Move driver database to flash, if enabled. */ +- if (ha->flags.enable_flash_db_update && +- ha->flags.updated_fc_db) { +- +- ha->flags.updated_fc_db = FALSE; +- qla2x00_save_database(ha); +- } +-#endif +- + #if APIDEV + apidev_cleanup(); + #endif + +-#ifdef __VMWARE__ +- spin_lock_destroy(&ha->hardware_lock); +- spin_lock_destroy(&ha->mbx_bits_lock); +- spin_lock_destroy(&ha->mbx_reg_lock); +- spin_lock_destroy(&ha->mbx_q_lock); +- spin_lock_destroy(&ha->list_lock); +-#endif + qla2x00_mem_free(ha); + + if (ha->flags.failover_enabled) +@@ -2821,7 +2531,7 @@ qla2x00_release(struct Scsi_Host *host) + * Returns: + * Return a text string describing the driver. + **************************************************************************/ +-static const char * ++const char * + qla2x00_info(struct Scsi_Host *host) + { + static char qla2x00_buffer[255]; +@@ -2884,7 +2594,8 @@ qla2x00_get_new_sp(scsi_qla_host_t *ha) + "ref_count not zero.\n"); + }) + +- sp_get(ha, sp); ++ atomic_set(&sp->ref_count, 1); ++ + } + + return (sp); +@@ -2925,12 +2636,12 @@ qla2x00_check_tgt_status(scsi_qla_host_t + if (TGT_Q(ha, t) == NULL || + l >= ha->max_luns || + (atomic_read(&fcport->state) == FC_DEVICE_DEAD) || +- ha->loop_state == LOOP_DEAD || ++ atomic_read(&fcport->ha->loop_state) == LOOP_DEAD || + (!atomic_read(&ha->loop_down_timer) && +- ha->loop_state == LOOP_DOWN)|| ++ atomic_read(&ha->loop_state) == LOOP_DOWN)|| + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || +- ha->loop_state != LOOP_READY) { ++ atomic_read(&ha->loop_state) != LOOP_READY) { + + DEBUG(printk(KERN_INFO + "scsi(%ld:%2d:%2d:%2d): %s connection is " +@@ -2968,17 +2679,17 @@ qla2x00_check_port_status(scsi_qla_host_ + } + + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD || +- ha->loop_state == LOOP_DEAD) { ++ atomic_read(&fcport->ha->loop_state) == LOOP_DEAD) { + return (QL_STATUS_ERROR); + } + +- if ((atomic_read(&fcport->state) != FC_ONLINE) || +- (!atomic_read(&ha->loop_down_timer) && +- ha->loop_state == LOOP_DOWN) || +- (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || +- test_bit(CFG_ACTIVE, &ha->cfg_flags) || +- ABORTS_ACTIVE || +- ha->loop_state != LOOP_READY) { ++ if ((atomic_read(&fcport->state) != FC_ONLINE) || ++ (!atomic_read(&ha->loop_down_timer) && ++ atomic_read(&ha->loop_state) == LOOP_DOWN) || ++ (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || ++ test_bit(CFG_ACTIVE, &ha->cfg_flags) || ++ ABORTS_ACTIVE || ++ atomic_read(&ha->loop_state) != LOOP_READY) { + + DEBUG(printk(KERN_INFO + "%s(%ld): connection is down. fcport=%p.\n", +@@ -2992,6 +2703,20 @@ qla2x00_check_port_status(scsi_qla_host_ + } + + ++#if defined(SH_HAS_CAN_QUEUE_MASK) ++static void update_host_queue_mask(scsi_qla_host_t *ha) ++{ ++ unsigned long newmask; ++ if ((max_srbs - ha->srb_cnt) > (REQUEST_ENTRY_CNT/5)) ++ newmask = (1 << ha->last_irq_cpu); ++ else ++ newmask = ~0; ++ ++ if (ha->host->can_queue_mask != newmask) ++ ha->host->can_queue_mask = newmask; ++} ++#endif ++ + /************************************************************************** + * qla2x00_queuecommand + * +@@ -3011,7 +2736,7 @@ qla2x00_check_port_status(scsi_qla_host_ + * interrupt handler may call this routine as part of request-completion + * handling). + **************************************************************************/ +-static int ++int + qla2x00_queuecommand(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *)) + { + fc_port_t *fcport; +@@ -3027,14 +2752,15 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + #else + u_long handle; + #endif ++ int pendingempty = 1; + + ENTER(__func__); + + host = cmd->host; + ha = (scsi_qla_host_t *) host->hostdata; +- ++ + cmd->scsi_done = fn; +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_unlock(&io_request_lock); + #else + spin_unlock(ha->host->host_lock); +@@ -3049,7 +2775,7 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + "%s(): Couldn't allocate memory for sp - retried.\n", + __func__); + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3066,6 +2792,7 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + sp->fo_retry_cnt = 0; + sp->iocb_cnt = 0; + sp->qfull_retry_count = 0; ++ sp->err_id = 0; + + /* Generate LU queue on bus, target, LUN */ + b = SCSI_BUS_32(cmd); +@@ -3084,8 +2811,9 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + qla2x00_add_timer_to_cmd(sp, (CMD_TIMEOUT(cmd)/HZ)); + + if (l >= ha->max_luns) { ++ sp->err_id = SRB_ERR_PORT; + CMD_RESULT(cmd) = DID_NO_CONNECT << 16; +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3138,8 +2866,9 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + DEBUG3(printk("scsi(%ld:%2d:%2d): port unavailable\n", + ha->host_no,t,l);) + ++ sp->err_id = SRB_ERR_PORT; + CMD_RESULT(cmd) = DID_NO_CONNECT << 16; +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3150,10 +2879,12 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + + /* Only modify the allowed count if the target is a *non* tape device */ + if ((fcport->flags & FC_TAPE_DEVICE) == 0) { ++ sp->flags &= ~SRB_TAPE; + if (cmd->allowed < ql2xretrycount) { + cmd->allowed = ql2xretrycount; + } +- } ++ } else ++ sp->flags |= SRB_TAPE; + + DEBUG5(printk("%s(): pid=%ld, opcode=%d, timeout= %d\n", + __func__, +@@ -3186,20 +2917,35 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + * Either PORT_DOWN_TIMER OR LINK_DOWN_TIMER Expired. + */ + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD || +- ha->loop_state == LOOP_DEAD ) { ++ atomic_read(&fcport->ha->loop_state) == LOOP_DEAD) { + /* + * Add the command to the done-queue for later failover +- * processing ++ * processing. + */ ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN) ++ sp->err_id = SRB_ERR_LOOP; ++ else ++ sp->err_id = SRB_ERR_PORT; + CMD_RESULT(cmd) = DID_NO_CONNECT << 16; + add_to_done_queue(ha, sp); +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); ++#if !defined(SH_HAS_HOST_LOCK) ++ spin_lock_irq(&io_request_lock); ++#else ++ spin_lock_irq(ha->host->host_lock); + #endif ++ return (0); ++ } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++ /* ignore SPINUP commands for MSA1000 */ ++ if ((fcport->flags & (FC_MSA_DEVICE|FC_EVA_DEVICE)) && ++ cmd->cmnd[0] == START_STOP) { ++ CMD_RESULT(cmd) = DID_OK << 16; ++ DEBUG2(printk(KERN_INFO ++ "%s(): Ignoring SPIN_STOP scsi command...\n ", __func__)); ++ add_to_done_queue(ha, sp); ++ qla2x00_done(ha); ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3208,21 +2954,46 @@ qla2x00_queuecommand(Scsi_Cmnd *cmd, voi + } + + /* if target suspended put incoming in retry_q */ +- if( tq && test_bit(TGT_SUSPENDED, &tq->q_flags) ) { ++ if (tq && test_bit(TGT_SUSPENDED, &tq->q_flags) && ++ (sp->flags & SRB_TAPE) == 0) { + qla2x00_extend_timeout(sp->cmd, ha->qfull_retry_delay << 2); + add_to_scsi_retry_queue(ha,sp); + } else +- add_to_pending_queue(ha, sp); +- +- /* First start cmds for this lun if possible */ +- qla2x00_next(ha); +- +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++ pendingempty = add_to_pending_queue(ha, sp); ++ ++#if defined(ISP2100) || defined(ISP2200) ++ if (ha->flags.online) { ++ unsigned long flags; ++ ++ if (ha->response_ring_ptr->signature != RESPONSE_PROCESSED) { ++ spin_lock_irqsave(&ha->hardware_lock, flags); ++ qla2x00_process_response_queue(ha); ++ spin_unlock_irqrestore(&ha->hardware_lock, flags); ++ } ++ } ++#endif ++ ++ /* we submit to the hardware if ++ * 1) we're on the cpu the irq's arrive on or ++ * 2) there are very few io's outstanding. ++ * in all other cases we'll let an irq pick up our IO and submit it ++ * to the controller to improve affinity ++ */ ++ if (smp_processor_id() == ha->last_irq_cpu || /* condition 1 */ ++ (((max_srbs - ha->srb_cnt) < REQUEST_ENTRY_CNT/10) && /* less than 10% outstanding io's */ ++ (pendingempty))) ++ qla2x00_next(ha); ++ ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); + #endif + ++#if defined(SH_HAS_CAN_QUEUE_MASK) ++ update_host_queue_mask(ha); ++#endif ++ + LEAVE(__func__); + return (0); + } +@@ -3284,16 +3055,16 @@ qla2x00_eh_wait_on_command(scsi_qla_host + break; + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_unlock_irq(&io_request_lock); + #else + spin_unlock_irq(ha->host->host_lock); + #endif + +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(2*HZ); + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3336,22 +3107,25 @@ static inline int + qla2x00_wait_for_hba_online(scsi_qla_host_t *ha) + { + int return_status ; ++ unsigned long wait_online = 0; + + ENTER(__func__); + +- while((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) || ++ for (wait_online = jiffies + (MAX_LOOP_TIMEOUT *HZ); ++ ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) || + test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) || +- test_bit(ISP_ABORT_RETRY, &ha->dpc_flags)){ ++ test_bit(ISP_ABORT_RETRY, &ha->dpc_flags))&& ++ time_before(jiffies,wait_online) ; ){ + +- set_current_state(TASK_INTERRUPTIBLE); +- schedule_timeout(3 * HZ); ++ set_current_state(TASK_UNINTERRUPTIBLE); ++ schedule_timeout(HZ); + } + if(ha->flags.online == TRUE ) + return_status = QL_STATUS_SUCCESS; + else + return_status = QL_STATUS_ERROR;/*Adapter is disabled/offline */ + +- DEBUG2(printk(KERN_INFO "%s return_status=%d\n",__func__,return_status);) ++ DEBUG(printk(KERN_INFO "%s return_status=%d\n",__func__,return_status);) + LEAVE(__func__); + + return(return_status); +@@ -3383,19 +3157,19 @@ qla2x00_wait_for_loop_ready(scsi_qla_hos + loop_timeout = jiffies + (MAX_LOOP_TIMEOUT * HZ ); + + while (((test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) || +- ( !atomic_read(&ha->loop_down_timer) && +- ha->loop_state == LOOP_DOWN ) || +- test_bit(CFG_ACTIVE, &ha->cfg_flags) || +- ha->loop_state != LOOP_READY)) { ++ (!atomic_read(&ha->loop_down_timer) && ++ atomic_read(&ha->loop_state) == LOOP_DOWN) || ++ test_bit(CFG_ACTIVE, &ha->cfg_flags) || ++ atomic_read(&ha->loop_state) != LOOP_READY)) { + +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(3 * HZ); + if (time_after_eq(jiffies, loop_timeout)) { + return_status = QL_STATUS_ERROR; + break; + } + } +- DEBUG2(printk(KERN_INFO "%s :return_status=%d\n",__func__,return_status);) ++ DEBUG(printk(KERN_INFO "%s :return_status=%d\n",__func__,return_status);) + LEAVE(__func__); + return return_status; + } +@@ -3414,7 +3188,7 @@ qla2x00_wait_for_loop_ready(scsi_qla_hos + * + * Note: + **************************************************************************/ +-static int ++int + qla2xxx_eh_abort(Scsi_Cmnd *cmd) + { + int i; +@@ -3503,15 +3277,15 @@ qla2xxx_eh_abort(Scsi_Cmnd *cmd) + DEBUG2(qla2x00_print_scsi_cmd(cmd)); + DEBUG2(qla2x00_print_q_info(q);) + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); ++#if !defined(SH_HAS_HOST_LOCK) ++ spin_unlock_irq(&io_request_lock); + #else +- spin_unlock_irq(ha->host->host_lock); ++ spin_unlock_irq(ha->host->host_lock); + #endif + /* Blocking call-Does context switching if abort isp is active etc */ + if( qla2x00_wait_for_hba_online(ha) != QL_STATUS_SUCCESS){ + DEBUG2(printk(KERN_INFO "%s failed:board disabled\n",__func__);) +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3519,10 +3293,10 @@ qla2xxx_eh_abort(Scsi_Cmnd *cmd) + return(FAILED); + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_lock_irq(&io_request_lock); ++#if !defined(SH_HAS_HOST_LOCK) ++ spin_lock_irq(&io_request_lock); + #else +- spin_lock_irq(ha->host->host_lock); ++ spin_lock_irq(ha->host->host_lock); + #endif + + /* Search done queue */ +@@ -3694,7 +3468,7 @@ qla2xxx_eh_abort(Scsi_Cmnd *cmd) + sp_get(ha,sp); + + spin_unlock_irqrestore(&ha->hardware_lock, flags); +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_unlock(&io_request_lock); + #else + spin_unlock(ha->host->host_lock); +@@ -3712,7 +3486,7 @@ qla2xxx_eh_abort(Scsi_Cmnd *cmd) + } + + sp_put(ha,sp); +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -3820,77 +3594,63 @@ qla2x00_eh_wait_for_pending_target_comma + * SUCCESS/FAILURE (defined as macro in scsi.h). + * + **************************************************************************/ +-static int ++int + qla2xxx_eh_device_reset(Scsi_Cmnd *cmd) + { +- int return_status = SUCCESS; ++ int return_status; + uint32_t b, t, l; +- srb_t *sp; + scsi_qla_host_t *ha; ++ os_tgt_t *tq; + os_lun_t *lq; ++ fc_port_t *fcport_to_reset; ++ srb_t *rp; ++ unsigned long flags; ++ struct list_head *list, *temp; + +-#if defined(LOGOUT_AFTER_DEVICE_RESET) +- fc_port_t *fcport; +-#endif +- +- ENTER(__func__); + ++ return_status = FAILED; + if (cmd == NULL) { + printk(KERN_INFO + "%s(): **** SCSI mid-layer passing in NULL cmd\n", + __func__); + +- return (FAILED); +- } +- sp = (srb_t *) CMD_SP(cmd); +- +- /* +- * If sp is NULL, command is already returned. +- * sp is NULLED just before we call back scsi_done +- * +- */ +- if (sp == NULL) { +- /* no action - we don't have command */ +- printk(KERN_INFO "%s: cmd already done sp=%p\n", __func__, sp); +- DEBUG(printk("%s: cmd already done sp=%p\n", __func__, sp);) +- +- return (SUCCESS); +- } +- if (sp) { +- DEBUG(printk("%s: refcount %i\n", __func__, +- atomic_read(&sp->ref_count));) ++ return (return_status); + } + +- /* Verify the device exists. */ +- ha = (scsi_qla_host_t *)cmd->host->hostdata; +- if (ha->flags.failover_enabled) +- ha = (scsi_qla_host_t *)sp->ha; +- else +- ha = (scsi_qla_host_t *)cmd->host->hostdata; +- +- ha->eh_start = 0; + b = SCSI_BUS_32(cmd); + t = SCSI_TCN_32(cmd); + l = SCSI_LUN_32(cmd); +- if (TGT_Q(ha, t) == NULL) { ++ ha = (scsi_qla_host_t *)cmd->host->hostdata; ++ ++ tq = TGT_Q(ha, t); ++ if (tq == NULL) { + printk(KERN_INFO + "%s(): **** CMD derives a NULL TGT_Q\n", + __func__); + +- return (FAILED); ++ return (return_status); + } + lq = (os_lun_t *)LUN_Q(ha, t, l); + if (lq == NULL) { + printk(KERN_INFO + "%s(): **** CMD derives a NULL LUN_Q\n", __func__); + +- return (FAILED); ++ return (return_status); + } ++ fcport_to_reset = lq->fclun->fcport; ++ ++ /* ++ * If we are coming in from the back-door, stall I/O until ++ * completion ++ */ ++ if (!cmd->host->eh_active) { ++ set_bit(TGT_SUSPENDED, &tq->q_flags); ++ } ++ ++ ha->eh_start = 0; + + #if STOP_ON_RESET + printk(debug_buff,"Resetting Device= 0x%x\n", (int)cmd); +-/* WE SHOULD NOT call this function, since it dereferences SP */ +- //qla2x00_print_scsi_cmd(cmd); + qla2x00_panic(__func__, ha->host); + #endif + +@@ -3899,21 +3659,33 @@ qla2xxx_eh_device_reset(Scsi_Cmnd *cmd) + "scsi(%ld:%d:%d:%d): DEVICE RESET ISSUED.\n", + ha->host_no, (int)b, (int)t, (int)l); + +- DEBUG2(printk(KERN_INFO "scsi(%ld): DEVICE_RESET cmd=%p jiffies = 0x%lx, " +- "timeout=%x, dpc_flags=%lx, status=%x allowed=%d " +- "cmd.state=%x\n", +- ha->host_no, +- cmd, +- jiffies, +- CMD_TIMEOUT(cmd)/HZ, +- ha->dpc_flags, +- cmd->result, +- cmd->allowed, +- cmd->state);) +-/* WE SHOULD NOT call this function, since it dereferences SP */ +- //qla2x00_print_scsi_cmd(cmd); ++ DEBUG2(printk(KERN_INFO ++ "scsi(%ld): DEVICE_RESET cmd=%p jiffies = 0x%lx, timeout=%x, " ++ "dpc_flags=%lx, status=%x allowed=%d cmd.state=%x\n", ++ ha->host_no, cmd, jiffies, CMD_TIMEOUT(cmd)/HZ, ha->dpc_flags, ++ cmd->result, cmd->allowed, cmd->state);) ++ ++ /* ++ * Clear commands from the retry queue ++ */ ++ spin_lock_irqsave(&ha->list_lock, flags); ++ list_for_each_safe(list, temp, &ha->retry_queue) { ++ rp = list_entry(list, srb_t, list); ++ ++ if( t != SCSI_TCN_32(rp->cmd) ) ++ continue; ++ ++ DEBUG2(printk(KERN_INFO "qla2xxx_eh_reset: found " ++ "in retry queue. SP=%p\n", rp);) ++ ++ __del_from_retry_queue(ha, rp); ++ CMD_RESULT(rp->cmd) = DID_RESET << 16; ++ __add_to_done_queue(ha, rp); ++ ++ } /* list_for_each_safe() */ ++ spin_unlock_irqrestore(&ha->list_lock, flags); + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_unlock_irq(&io_request_lock); + #else + spin_unlock_irq(ha->host->host_lock); +@@ -3921,66 +3693,79 @@ qla2xxx_eh_device_reset(Scsi_Cmnd *cmd) + /* Blocking call-Does context switching if abort isp is active etc */ + if (qla2x00_wait_for_hba_online(ha) != QL_STATUS_SUCCESS) { + DEBUG2(printk(KERN_INFO "%s failed:board disabled\n",__func__);) +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); + #endif +- return (FAILED); ++ goto eh_dev_reset_done; + } + + /* Blocking call-Does context switching if loop is Not Ready */ + if (qla2x00_wait_for_loop_ready(ha) == QL_STATUS_SUCCESS) { + clear_bit(DEVICE_RESET_NEEDED, &ha->dpc_flags); + +- if (qla2x00_device_reset(ha, lq->fclun->fcport) != 0) { +- return_status = FAILED; ++ if (qla2x00_device_reset(ha, fcport_to_reset) == 0) { ++ return_status = SUCCESS; + } + + #if defined(LOGOUT_AFTER_DEVICE_RESET) + if (return_status == SUCCESS) { +- fcport = lq->fclun->fcport; +- +- if (fcport->flags & FC_FABRIC_DEVICE) { ++ if (fcport_to_reset->flags & FC_FABRIC_DEVICE) { + qla2x00_fabric_logout(ha, +- ha->fc_db[t].loop_id & 0xff); +- ha->fc_db[t].flag |= DEV_RELOGIN; +- qla2x00_mark_device_lost(ha, fcport); ++ fcport_to_reset->loop_id); ++ qla2x00_mark_device_lost(ha, fcport_to_reset, ++ 1); + } + } + #endif + } else { +- return_status = FAILED; ++ DEBUG2(printk(KERN_INFO ++ "%s failed: loop not ready\n",__func__);) + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); + #endif + + if (return_status == FAILED) { +- DEBUG3(printk("%s(%ld): reset failed\n", +- __func__,ha->host_no);) +- printk(KERN_INFO "%s(%ld): reset failed\n", +- __func__,ha->host_no); +- return (FAILED); ++ DEBUG3(printk("%s(%ld): device reset failed\n", ++ __func__,ha->host_no);) ++ printk(KERN_INFO "%s(%ld): device reset failed\n", ++ __func__,ha->host_no); ++ ++ goto eh_dev_reset_done; + } + +- /* Waiting for all commands to complete for the device */ +- if (qla2x00_eh_wait_for_pending_target_commands(ha, t)) +- return_status = FAILED; ++ /* ++ * If we are coming down the EH path, wait for all commands to ++ * complete for the device. ++ */ ++ if (cmd->host->eh_active) { ++ if (qla2x00_eh_wait_for_pending_target_commands(ha, t)) ++ return_status = FAILED; + +- if (return_status == FAILED) { +- DEBUG3(printk("%s(%ld): reset failed\n", +- __func__,ha->host_no);) +- printk(KERN_INFO "%s(%ld): reset failed\n", +- __func__,ha->host_no); +- return (FAILED); ++ if (return_status == FAILED) { ++ DEBUG3(printk("%s(%ld): failed while waiting for " ++ "commands\n", __func__, ha->host_no);) ++ printk(KERN_INFO "%s(%ld): failed while waiting for " ++ "commands\n", __func__, ha->host_no); ++ ++ goto eh_dev_reset_done; ++ } + } +- printk(KERN_INFO "%s(%ld):reset success\n", __func__,ha->host_no); + +- LEAVE(__func__); ++ printk(KERN_INFO ++ "scsi(%ld:%d:%d:%d): DEVICE RESET SUCCEEDED.\n", ++ ha->host_no, (int)b, (int)t, (int)l); ++ ++eh_dev_reset_done: ++ ++ if (!cmd->host->eh_active) { ++ clear_bit(TGT_SUSPENDED, &tq->q_flags); ++ } + + return (return_status); + } +@@ -4047,7 +3832,7 @@ qla2x00_eh_wait_for_pending_commands(scs + * SUCCESS/FAILURE (defined as macro in scsi.h). + * + **************************************************************************/ +-static int ++int + qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd) + { + int return_status = SUCCESS; +@@ -4105,15 +3890,15 @@ qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd) + "scsi(%ld:%d:%d:%d): LOOP RESET ISSUED.\n", + ha->host_no, (int)b, (int)t, (int)l); + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); ++#if !defined(SH_HAS_HOST_LOCK) ++ spin_unlock_irq(&io_request_lock); + #else +- spin_unlock_irq(ha->host->host_lock); ++ spin_unlock_irq(ha->host->host_lock); + #endif + /* Blocking call-Does context switching if abort isp is active etc*/ + if( qla2x00_wait_for_hba_online(ha) != QL_STATUS_SUCCESS){ + DEBUG2(printk(KERN_INFO "%s failed:board disabled\n",__func__);) +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -4130,7 +3915,7 @@ qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd) + } else { + return_status = FAILED; + } +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -4184,7 +3969,7 @@ qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd) + * + * Note: + **************************************************************************/ +-static int ++int + qla2xxx_eh_host_reset(Scsi_Cmnd *cmd) + { + int return_status = SUCCESS; +@@ -4264,14 +4049,14 @@ qla2xxx_eh_host_reset(Scsi_Cmnd *cmd) + ((scsi_qla_host_t *)cmd->host->hostdata)->host_no, + (int)b, (int)t, (int)l, ha->host_no);) + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +- spin_unlock_irq(&io_request_lock); ++#if !defined(SH_HAS_HOST_LOCK) ++ spin_unlock_irq(&io_request_lock); + #else +- spin_unlock_irq(ha->host->host_lock); ++ spin_unlock_irq(ha->host->host_lock); + #endif + /* Blocking call-Does context switching if abort isp is active etc*/ + if( qla2x00_wait_for_hba_online(ha) != QL_STATUS_SUCCESS){ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -4306,7 +4091,7 @@ qla2xxx_eh_host_reset(Scsi_Cmnd *cmd) + + clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags); + } +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#if !defined(SH_HAS_HOST_LOCK) + spin_lock_irq(&io_request_lock); + #else + spin_lock_irq(ha->host->host_lock); +@@ -4349,11 +4134,26 @@ qla2xxx_eh_host_reset(Scsi_Cmnd *cmd) + * Description: + * Return the disk geometry for the given SCSI device. + **************************************************************************/ +-static int ++int + qla2x00_biosparam(Disk *disk, kdev_t dev, int geom[]) + { + int heads, sectors, cylinders; ++ int ret; ++ struct buffer_head *bh; + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,17) ++ bh = bread(MKDEV(MAJOR(dev), MINOR(dev) & ~0xf), 0, block_size(dev)); ++#else ++ bh = bread(MKDEV(MAJOR(dev), MINOR(dev) & ~0xf), 0, 1024); ++#endif ++ ++ if (bh) { ++ ret = scsi_partsize(bh, disk->capacity, ++ &geom[2], &geom[0], &geom[1]); ++ brelse(bh); ++ if (ret != -1) ++ return (ret); ++ } + heads = 64; + sectors = 32; + cylinders = disk->capacity / (heads * sectors); +@@ -4378,7 +4178,7 @@ qla2x00_biosparam(Disk *disk, kdev_t dev + * + * Context: Interrupt + **************************************************************************/ +-static void ++void + qla2x00_intr_handler(int irq, void *dev_id, struct pt_regs *regs) + { + unsigned long flags = 0; +@@ -4398,8 +4198,6 @@ qla2x00_intr_handler(int irq, void *dev_ + + return; + } +- qla2x00_stats.irqhba = ha; +- + reg = ha->iobase; + + spin_lock_irqsave(&ha->hardware_lock, flags); +@@ -4416,6 +4214,8 @@ qla2x00_intr_handler(int irq, void *dev_ + qla2x00_isr(ha, data, &got_mbx); + } + spin_unlock_irqrestore(&ha->hardware_lock, flags); ++ qla2x00_next(ha); ++ ha->last_irq_cpu = smp_processor_id(); + + if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && + got_mbx && ha->flags.mbox_int) { +@@ -4449,11 +4249,7 @@ qla2x00_intr_handler(int irq, void *dev_ + } + + if (!list_empty(&ha->done_queue)) +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + + /* Wakeup the DPC routine */ + if ((!ha->flags.mbox_busy && +@@ -4465,39 +4261,12 @@ qla2x00_intr_handler(int irq, void *dev_ + up(ha->dpc_wait); + } + +- LEAVE_INTR("qla2x00_intr_handler"); +-} +- +- +-#if QLA2X_PERFORMANCE +-/* +- * qla2x00_done_tasklet +- * +- * This is a task to process completion only similar to a +- * bottom half handler. +- * +- * Input: +- * p -- pointer to hba struct +- * +- */ +-static void +-qla2x00_done_tasklet(long p) +-{ +- scsi_qla_host_t *ha = (scsi_qla_host_t *) p; +- +- ENTER(__func__); +- +- set_bit(TASKLET_SCHED, &ha->dpc_flags); +- +- if (!list_empty(&ha->done_queue)) +- qla2x00_done(ha); +- +- clear_bit(TASKLET_SCHED, &ha->dpc_flags); +- +- LEAVE(__func__); +-} ++#if defined(SH_HAS_CAN_QUEUE_MASK) ++ update_host_queue_mask(ha); + #endif + ++ LEAVE_INTR("qla2x00_intr_handler"); ++} + + /* + * qla2x00_retry_command +@@ -4519,6 +4288,7 @@ qla2x00_retry_command(scsi_qla_host_t *h + /* restore original timeout */ + qla2x00_extend_timeout(sp->cmd, + (CMD_TIMEOUT(sp->cmd)/HZ) - QLA_CMD_TIMER_DELTA); ++ qla2x00_free_request_resources(ha,sp); + __add_to_pending_queue( ha, sp); + } + +@@ -4535,14 +4305,11 @@ qla2x00_retry_command(scsi_qla_host_t *h + * the timer routine detects a event it will one of the task + * bits then wake us up. + **************************************************************************/ +-static void ++void + qla2x00_do_dpc(void *p) + { +-#ifndef __VMWARE__ + DECLARE_MUTEX_LOCKED(sem); +-#endif +- fcdev_t dev; +- fc_port_t *fcport; ++ fc_port_t *fcport = NULL; + os_lun_t *q; + os_tgt_t *tq; + scsi_qla_host_t *ha = (scsi_qla_host_t *) p; +@@ -4553,19 +4320,10 @@ qla2x00_do_dpc(void *p) + struct list_head *list, *templist; + int dead_cnt, online_cnt; + int retry_cmds; ++ uint16_t next_loopid; + + ENTER(__func__); + +-#ifdef __VMWARE__ +- /* +- * We are not a real Linux thread so no need to handle all the +- * task setup. +- */ +- printk("qla: DPC init\n"); +- ha->wait_sema = (struct semaphore)__SEMAPHORE_INITIALIZER(ha->wait_sema, 0); +- ha->dpc_wait = &ha->wait_sema; +- ha->dpc_handler = (struct task_struct *)1; +-#else + #if defined(MODULE) + siginitsetinv(¤t->blocked, SHUTDOWN_SIGS); + #else +@@ -4581,8 +4339,6 @@ qla2x00_do_dpc(void *p) + * FIXME(dg) this is still a child process of the one that did + * the insmod. This needs to be attached to task[0] instead. + */ +- +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,9) + /* As mentioned in kernel/sched.c(RA)..... + * Reparent the calling kernel thread to the init task. +@@ -4600,7 +4356,6 @@ qla2x00_do_dpc(void *p) + */ + reparent_to_init(); + #endif +-#endif + + /* + * Set the name of this process. +@@ -4611,7 +4366,6 @@ qla2x00_do_dpc(void *p) + ha->dpc_handler = current; + + unlock_kernel(); +-#endif //__VMWARE__ + + /* + * Wake up the thread that created us. +@@ -4630,24 +4384,13 @@ qla2x00_do_dpc(void *p) + */ + DEBUG3(printk("qla2x00: DPC handler sleeping\n");) + +-#ifdef __VMWARE__ +- down_interruptible(ha->dpc_wait); +- +- if (ha->should_die) +- break; /* get out */ +-#else + down_interruptible(&sem); + + if (signal_pending(current)) + break; /* get out */ +-#endif //__VMWARE__ + + if (!list_empty(&ha->done_queue)) +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + + DEBUG3(printk("qla2x00: DPC handler waking up\n");) + +@@ -4664,7 +4407,7 @@ qla2x00_do_dpc(void *p) + + /* Process commands in retry queue */ + if (test_and_clear_bit(PORT_RESTART_NEEDED, &ha->dpc_flags)) { +- DEBUG2(printk(KERN_INFO "%s(%ld): (1) DPC checking retry_q. " ++ DEBUG3(printk(KERN_INFO "%s(%ld): (1) DPC checking retry_q. " + "total=%d\n", + __func__, + ha->host_no, +@@ -4687,13 +4430,19 @@ qla2x00_do_dpc(void *p) + continue; + fcport = q->fclun->fcport; + +- if (atomic_read(&fcport->state) == +- FC_DEVICE_DEAD || +- ( ha->loop_state == LOOP_DEAD )){ ++ if (atomic_read(&fcport->state) == ++ FC_DEVICE_DEAD || ++ atomic_read(&fcport->ha->loop_state) ++ == LOOP_DEAD) { + + __del_from_retry_queue(ha, sp); + CMD_RESULT(sp->cmd) = + DID_NO_CONNECT << 16; ++ if (atomic_read(&ha->loop_state) == ++ LOOP_DOWN) ++ sp->err_id = SRB_ERR_LOOP; ++ else ++ sp->err_id = SRB_ERR_PORT; + CMD_HANDLE(sp->cmd) = + (unsigned char *) NULL; + __add_to_done_queue(ha, sp); +@@ -4767,7 +4516,7 @@ qla2x00_do_dpc(void *p) + q->q_state, tq->q_flags);) + online_cnt++; + __del_from_scsi_retry_queue(ha, sp); +- if( test_bit(TGT_UNSUSPENDED, ++ if( test_bit(TGT_RETRY_CMDS, + &tq->q_flags) ) { + qla2x00_retry_command(ha,sp); + retry_cmds++; +@@ -4782,8 +4531,8 @@ qla2x00_do_dpc(void *p) + if ((tq = ha->otgt[t]) == NULL) + continue; + +- if( test_bit(TGT_UNSUSPENDED, &tq->q_flags) ) +- clear_bit(TGT_UNSUSPENDED, &tq->q_flags); ++ if( test_bit(TGT_RETRY_CMDS, &tq->q_flags) ) ++ clear_bit(TGT_RETRY_CMDS, &tq->q_flags); + } + + if( retry_cmds ) +@@ -4859,17 +4608,18 @@ qla2x00_do_dpc(void *p) + + /* v2.19.8 Retry each device up to login retry count */ + if ((test_and_clear_bit(RELOGIN_NEEDED, +- &ha->dpc_flags)) && +- !test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) && +- ha->loop_state != LOOP_DOWN) { /* v2.19.5 */ ++ &ha->dpc_flags)) && ++ !test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) && ++ atomic_read(&ha->loop_state) != LOOP_DOWN) { + + DEBUG(printk("dpc%ld: qla2x00_port_login\n", + ha->host_no);) + +- for (fcport = ha->fcport; +- fcport != NULL; +- fcport = fcport->next) { +- ++ next_loopid = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; ++ + /* + * If the port is not ONLINE then try + * to login to it if we haven't run +@@ -4877,37 +4627,28 @@ qla2x00_do_dpc(void *p) + */ + if (atomic_read(&fcport->state) != FC_ONLINE && + fcport->login_retry) { +- + fcport->login_retry--; +- memset(&dev, 0, sizeof(fcdev_t)); +- dev.loop_id = fcport->old_loop_id; +- dev.d_id.b24 = fcport->d_id.b24; +- if(ha->fc_db[fcport->dev_id].flag & DEV_PUBLIC) +- status = qla2x00_fabric_login(ha, &dev); ++ if (fcport->flags & FC_FABRIC_DEVICE) ++ status = qla2x00_fabric_login(ha, fcport, &next_loopid); + else +- status = qla2x00_local_device_login(ha, (dev.loop_id & 0xff)); ++ status = qla2x00_local_device_login(ha, fcport->loop_id); + + if (status == QL_STATUS_SUCCESS) { +- ha->fc_db[fcport->dev_id].loop_id = dev.loop_id; +- fcport->loop_id = dev.loop_id; +- fcport->old_loop_id = dev.loop_id; ++ fcport->old_loop_id = fcport->loop_id; + + DEBUG(printk("dpc%ld port login OK: logged in ID 0x%x\n", + ha->host_no, fcport->loop_id);) ++ printk(KERN_INFO "dpc%ld port login OK: logged in ID 0x%x\n", ++ ha->host_no, fcport->loop_id); + ++ fcport->login_retry = 0; + fcport->port_login_retry_count = ha->port_down_retry_count * + PORT_RETRY_TIME; + atomic_set(&fcport->state, FC_ONLINE); + atomic_set(&fcport->port_down_timer, + ha->port_down_retry_count * PORT_RETRY_TIME); + +- fcport->login_retry = 0; + } else if (status == 1) { +- if (dev.loop_id != fcport->old_loop_id) { +- fcport->old_loop_id = dev.loop_id; +- ha->fc_db[fcport->dev_id].loop_id = dev.loop_id; +- } +- + set_bit(RELOGIN_NEEDED, &ha->dpc_flags); + /* retry the login again */ + DEBUG(printk("dpc: Retrying %d login again loop_id 0x%x\n", +@@ -4925,7 +4666,7 @@ qla2x00_do_dpc(void *p) + + /* v2.19.5 */ + if ((test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags)) && +- ha->loop_state != LOOP_DOWN ) { /* v2.19.5 */ ++ atomic_read(&ha->loop_state) != LOOP_DOWN) { /* v2.19.5 */ + + clear_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags); + DEBUG(printk("dpc(%ld): qla2x00_login_retry\n", +@@ -4957,15 +4698,30 @@ qla2x00_do_dpc(void *p) + ha->host_no);) + } + +- if (test_and_clear_bit(PORT_SCAN_NEEDED, &ha->dpc_flags)) { ++ if (test_and_clear_bit(PORT_SCAN_NEEDED, ++ &ha->dpc_flags)) { + + DEBUG(printk("dpc(%ld): qla2x00: RESCAN ...\n", +- ha->host_no);) +- printk(KERN_INFO"dpc(%ld): qla2x00: RESCAN .\n", +- ha->host_no); +- ha->loop_state = LOOP_UPDATE; +- qla2x00_mark_all_devices_lost(ha); +- qla2x00_configure_fcports( ha ); ++ ha->host_no);) ++ printk(KERN_INFO ++ "dpc(%ld): qla2x00: RESCAN .\n", ++ ha->host_no); ++ ++ if ( !(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags)) && ++ atomic_read(&ha->loop_state) != LOOP_DOWN) { ++ /* suspend new I/O for await */ ++ atomic_set(&ha->loop_state, LOOP_UPDATE); ++ qla2x00_probe_for_all_luns(ha); ++ ++ /* If we found all devices then go ready */ ++ atomic_set(&ha->loop_state, LOOP_READY); ++ ++ if (!ha->flags.failover_enabled) ++ qla2x00_config_os(ha); ++ else ++ qla2x00_cfg_remap(qla2x00_hostlist); ++ } ++ + DEBUG(printk("dpc(%ld): qla2x00: RESCAN ...done\n", + ha->host_no);) + printk(KERN_INFO"dpc(%ld): qla2x00: RESCAN" +@@ -4983,7 +4739,7 @@ qla2x00_do_dpc(void *p) + if (test_and_clear_bit(FAILOVER_EVENT, + &ha->dpc_flags)) { + +- DEBUG(printk("dpc(%ld): " ++ DEBUG2(printk("dpc(%ld): " + "qla2x00_cfg_event_notify\n", + ha->host_no);) + +@@ -4991,7 +4747,7 @@ qla2x00_do_dpc(void *p) + qla2x00_cfg_event_notify(ha, ha->failover_type); + } + +- DEBUG(printk("dpc(%ld): " ++ DEBUG2(printk("dpc(%ld): " + "qla2x00_cfg_event_notify - done\n", + ha->host_no);) + } +@@ -5003,12 +4759,12 @@ qla2x00_do_dpc(void *p) + /* + * Get any requests from failover queue + */ +- DEBUG(printk("dpc: qla2x00_process " ++ DEBUG2(printk("dpc: qla2x00_process " + "failover\n");) + + qla2x00_process_failover(ha); + +- DEBUG(printk("dpc: qla2x00_process " ++ DEBUG2(printk("dpc: qla2x00_process " + "failover - done\n");) + } + } +@@ -5029,16 +4785,19 @@ qla2x00_do_dpc(void *p) + + qla2x00_abort_queues(ha, FALSE); + } +- if (!ha->interrupts_on) +- qla2x00_enable_intrs(ha); ++ ++ if (test_and_clear_bit(IOCTL_ERROR_RECOVERY, ++ &ha->dpc_flags)) { ++ qla2x00_ioctl_error_recovery(ha); ++ } ++ ++ if (!ha->interrupts_on) ++ qla2x00_enable_intrs(ha); ++ + } + + if (!list_empty(&ha->done_queue)) +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + + /* spin_unlock_irqrestore(&io_request_lock, ha->cpu_flags);*/ + +@@ -5070,7 +4829,6 @@ qla2x00_do_dpc(void *p) + LEAVE(__func__); + } + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + /************************************************************************** + * qla2x00_device_queue_depth + * Determines the queue depth for a given device. There are two ways +@@ -5080,7 +4838,7 @@ qla2x00_do_dpc(void *p) + * as the default queue depth. Otherwise, we use either 4 or 8 as the + * default queue depth (dependent on the number of hardware SCBs). + **************************************************************************/ +-static void ++void + qla2x00_device_queue_depth(scsi_qla_host_t *p, Scsi_Device *device) + { + int default_depth = 32; +@@ -5089,10 +4847,9 @@ qla2x00_device_queue_depth(scsi_qla_host + if (device->tagged_supported) { + device->tagged_queue = 1; + device->current_tag = 0; +-#if defined(MODULE) +- if (!(ql2xmaxqdepth == 0 || ql2xmaxqdepth > 256)) ++ ++ if (!(ql2xmaxqdepth == 0 || ql2xmaxqdepth > 255)) + device->queue_depth = ql2xmaxqdepth; +-#endif + + printk(KERN_INFO + "scsi(%ld:%d:%d:%d): Enabled tagged queuing, " +@@ -5114,7 +4871,7 @@ qla2x00_device_queue_depth(scsi_qla_host + * host adapter. We use a queue depth of 2 for devices that do not + * support tagged queueing. + **************************************************************************/ +-STATIC void ++static void + qla2x00_select_queue_depth(struct Scsi_Host *host, Scsi_Device *scsi_devs) + { + Scsi_Device *device; +@@ -5129,109 +4886,6 @@ qla2x00_select_queue_depth(struct Scsi_H + + LEAVE(__func__); + } +-#endif +- +-#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP) +-union wwnmap { +- unsigned long long wwn; +- unsigned char wwn_u8[8]; +-}; +- +-int qla2x00_get_scsi_info_from_wwn (int mode, +- unsigned long long wwn, +- int *host, +- int *channel, +- int *lun, +- int *id) { +- +-scsi_qla_host_t *list; +-Scsi_Device *scsi_device; +-union wwnmap wwncompare; +-union wwnmap wwncompare2; +-int i, j, k; +- +- /* +- * Retrieve big endian version of world wide name +- */ +- wwncompare2.wwn = wwn; +- for (j = 0, k=7; j < 8; j++, k--) { +- wwncompare.wwn_u8[j] = wwncompare2.wwn_u8[k]; +- } +- +- /* +- * query all hosts searching for WWN +- */ +- for (list = qla2x00_hostlist; list; list = list->next) { +- for (i = 0; i < MAX_FIBRE_DEVICES; i++) { +- /* +- * Scan all devices in FibreChannel database +- * if WWN match found, return SCSI device information +- */ +- if (memcmp (wwncompare.wwn_u8, list->fc_db[i].name, 8) == 0) { +- /* +- * If inserting, avoid scan for channel and lun information +- */ +- if (mode == 0) { +- *channel = 0; +- *lun = 0; +- *host = list->host->host_no; +- *id = i; +- return (0); +- } +- +- +- /* +- * WWN matches, find channel and lun information from scsi +- * device +- */ +- for (scsi_device = list->host->host_queue; scsi_device; scsi_device = scsi_device->next) { +- if (scsi_device->id == i) { +- *channel = scsi_device->channel; +- *lun = scsi_device->lun; +- break; +- } +- } +- if (scsi_device == 0) { +- return (-ENOENT); +- } +- /* +- * Device found, return all data +- */ +- *host = list->host->host_no; +- *id = i; +- return (0); +- } /* memcmp */ +- } /* i < MAXFIBREDEVICES */ +- } +- return (-ENOENT); +-} +- +-int qla2x00_get_wwn_from_scsi_info (int host, int id, unsigned long long *wwn) { +-scsi_qla_host_t *list; +-union wwnmap wwnendian; +-union wwnmap wwnendian2; +-int j, k; +- +- /* +- * Examine all QLogic hosts +- */ +- for (list = qla2x00_hostlist; list; list = list->next) { +- if (host == list->host->host_no) { +- /* +- * Get endian corrected 64 bit WWN +- */ +- +- memcpy (&wwnendian2.wwn, list->fc_db[id].name, 8); +- for (j = 0, k=7; j < 8; j++, k--) { +- wwnendian.wwn_u8[j] = wwnendian2.wwn_u8[k]; +- } +- *wwn = wwnendian.wwn; +- return (0); +- } +- } +- return (-ENOENT); +-} +-#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */ + + /************************************************************************** + * ** Driver Support Routines ** +@@ -5269,6 +4923,38 @@ qla2x00_disable_intrs(scsi_qla_host_t *h + spin_unlock_irqrestore(&ha->hardware_lock, flags); + } + ++STATIC inline void ++qla2x00_free_request_resources(scsi_qla_host_t *dest_ha, srb_t *sp) ++{ ++ if (sp->flags & SRB_DMA_VALID) { ++ sp->flags &= ~SRB_DMA_VALID; ++ ++#ifndef __VMWARE__ ++ /* Release memory used for this I/O */ ++ if (sp->cmd->use_sg) { ++ pci_unmap_sg(dest_ha->pdev, ++ sp->cmd->request_buffer, ++ sp->cmd->use_sg, ++ scsi_to_pci_dma_dir( ++ sp->cmd->sc_data_direction)); ++ } else if (sp->cmd->request_bufflen) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,13) ++ pci_unmap_page(dest_ha->pdev, ++ sp->saved_dma_handle, ++ sp->cmd->request_bufflen, ++ scsi_to_pci_dma_dir( ++ sp->cmd->sc_data_direction)); ++#else ++ pci_unmap_single(dest_ha->pdev, ++ sp->saved_dma_handle, ++ sp->cmd->request_bufflen, ++ scsi_to_pci_dma_dir( ++ sp->cmd->sc_data_direction)); ++#endif ++ } ++#endif ++ } ++} + + STATIC inline void + qla2x00_delete_from_done_queue(scsi_qla_host_t *dest_ha, srb_t *sp) +@@ -5281,7 +4967,6 @@ qla2x00_delete_from_done_queue(scsi_qla_ + if (sp->flags & SRB_DMA_VALID) { + sp->flags &= ~SRB_DMA_VALID; + +-#ifndef __VMWARE__ + /* Release memory used for this I/O */ + if (sp->cmd->use_sg) { + pci_unmap_sg(dest_ha->pdev, +@@ -5304,7 +4989,6 @@ qla2x00_delete_from_done_queue(scsi_qla_ + sp->cmd->sc_data_direction)); + #endif + } +-#endif + } + } + +@@ -5321,7 +5005,6 @@ qla2x00_delete_from_done_queue(scsi_qla_ + STATIC int + qla2x00_done(scsi_qla_host_t *old_ha) + { +- srb_t *sp; + os_lun_t *lq; + Scsi_Cmnd *cmd; + unsigned long flags = 0; +@@ -5329,49 +5012,29 @@ qla2x00_done(scsi_qla_host_t *old_ha) + scsi_qla_host_t *vis_ha; + int cnt; + int send_marker_once = 0; +- srb_t *done_queue_first = NULL; +- srb_t *done_queue_last = NULL; ++ struct list_head *spl, *sptemp; ++ srb_t *sp; ++ struct list_head local_sp_list; + + ENTER(__func__); + +- if (test_bit(DONE_RUNNING, &old_ha->dpc_flags)) +- return (0); +- +- set_bit(DONE_RUNNING, &old_ha->dpc_flags); + cnt = 0; + ++ INIT_LIST_HEAD(&local_sp_list); ++ + /* + * Get into local queue such that we do not wind up calling done queue + * takslet for the same IOs from DPC or any other place. + */ + spin_lock_irqsave(&old_ha->list_lock,flags); +- while (!list_empty(&old_ha->done_queue)) { +- sp = list_entry(old_ha->done_queue.next, srb_t, list); +- /* remove command from done list */ +- list_del_init(&sp->list); ++ qla_list_splice_init(&old_ha->done_queue, &local_sp_list); ++ spin_unlock_irqrestore(&old_ha->list_lock, flags); + ++ list_for_each_safe(spl, sptemp, &local_sp_list) { ++ sp = list_entry(local_sp_list.next, srb_t, list); + old_ha->done_q_cnt--; +- sp->s_next = NULL; + sp->state = SRB_NO_QUEUE_STATE; +- /* insert in local queue */ +- if (done_queue_first == NULL) { +- done_queue_first = sp; +- done_queue_last = sp; +- } else { +- done_queue_last->s_next = sp; +- done_queue_last = sp; +- } +- } /* end of while list_empty(&ha->done_queue) */ +- spin_unlock_irqrestore(&old_ha->list_lock, flags); +- +- /* +- * All done commands are in local queue. Now do the call back +- */ +- while ((sp = done_queue_first) != NULL) { +- done_queue_first = sp->s_next; +- if (sp->s_next == NULL) +- done_queue_last = NULL; +- sp->s_next = NULL; ++ list_del_init(&sp->list); + + cnt++; + +@@ -5387,14 +5050,17 @@ qla2x00_done(scsi_qla_host_t *old_ha) + + vis_ha = (scsi_qla_host_t *)cmd->host->hostdata; + lq = sp->lun_queue; ++#if 0 + ha = lq->fclun->fcport->ha; ++#else ++ ha = sp->ha; ++#endif + + if (sp->flags & SRB_DMA_VALID) { + sp->flags &= ~SRB_DMA_VALID; + + /* 4.10 64 and 32 bit */ + /* Release memory used for this I/O */ +-#ifndef __VMWARE__ + if (cmd->use_sg) { + pci_unmap_sg(ha->pdev, + cmd->request_buffer, +@@ -5416,17 +5082,17 @@ qla2x00_done(scsi_qla_host_t *old_ha) + cmd->sc_data_direction)); + #endif + } +-#endif + } +- +- if (!(sp->flags & SRB_IOCTL) && ++ if (!(sp->flags & (SRB_IOCTL | SRB_TAPE | SRB_FDMI_CMD)) && + ha->flags.failover_enabled) { + /* + * This routine checks for DID_NO_CONNECT to decide + * whether to failover to another path or not. We only +- * failover on that status. ++ * failover on selection timeout(DID_NO_CONNECT) status. + */ +- if (qla2x00_fo_check(ha,sp)) { ++ if ( !(lq->fclun->fcport->flags & FC_FAILOVER_DISABLE) && ++ !(lq->fclun->flags & FC_VISIBLE_LUN) && ++ qla2x00_fo_check(ha,sp)) { + if ((sp->state != SRB_FAILOVER_STATE)) { + /* + * Retry the command on this path +@@ -5450,7 +5116,7 @@ qla2x00_done(scsi_qla_host_t *old_ha) + + case DID_OK: + case DID_ERROR: +- break; ++ break; + + case DID_RESET: + /* +@@ -5490,15 +5156,18 @@ qla2x00_done(scsi_qla_host_t *old_ha) + + default: + DEBUG(printk("scsi(%ld:%d:%d) %s: did_error " +- "= %d, pid=%ld, comp-scsi= 0x%x-0x%x.\n", +- vis_ha->host_no, +- SCSI_TCN_32(cmd), +- SCSI_LUN_32(cmd), +- __func__, +- (CMD_RESULT(cmd)>>16), +- cmd->serial_number, +- CMD_COMPL_STATUS(cmd), +- CMD_SCSI_STATUS(cmd));) ++ "= %d, pid=%ld, comp-scsi= 0x%x-0x%x " ++ "fcport_state=0x%x sp_flags=0%x.\n", ++ vis_ha->host_no, ++ SCSI_TCN_32(cmd), ++ SCSI_LUN_32(cmd), ++ __func__, ++ (CMD_RESULT(cmd)>>16), ++ cmd->serial_number, ++ CMD_COMPL_STATUS(cmd), ++ CMD_SCSI_STATUS(cmd), ++ atomic_read(&sp->fclun->fcport->state), ++ sp->flags);) + break; + } + +@@ -5507,10 +5176,11 @@ qla2x00_done(scsi_qla_host_t *old_ha) + */ + sp_put(ha, sp); + +- qla2x00_next(vis_ha); ++ if (vis_ha != old_ha) ++ qla2x00_next(vis_ha); + + } /* end of while */ +- clear_bit(DONE_RUNNING, &old_ha->dpc_flags); ++ qla2x00_next(old_ha); + + LEAVE(__func__); + +@@ -5935,24 +5605,32 @@ qla2x00_timer(scsi_qla_host_t *ha) + * down timer every second until it reaches zero. Once it reaches zero + * the port it marked DEAD. + */ +- for (t=0, fcport = ha->fcport; +- fcport != NULL; +- fcport = fcport->next, t++) { ++ t = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; + + if (atomic_read(&fcport->state) == FC_DEVICE_LOST) { + + if (atomic_read(&fcport->port_down_timer) == 0) + continue; + +- if (atomic_dec_and_test(&fcport->port_down_timer) != 0) ++ if (atomic_dec_and_test(&fcport->port_down_timer) ++ != 0) { + atomic_set(&fcport->state, FC_DEVICE_DEAD); ++ DEBUG2(printk(" scsi(%ld): Port num %d marked DEAD" ++ " at portid=%02x%02x%02x.\n", ++ ha->host_no, t, fcport->d_id.b.domain, ++ fcport->d_id.b.area, fcport->d_id.b.al_pa); ) ++ } + +- DEBUG(printk("scsi(%ld): fcport-%d - port retry count " ++ DEBUG2(printk("scsi(%ld): fcport-%d - port retry count " + ":%d remainning\n", + ha->host_no, + t, + atomic_read(&fcport->port_down_timer));) + } ++ t++; + } /* End of for fcport */ + + /* +@@ -5982,7 +5660,8 @@ qla2x00_timer(scsi_qla_host_t *ha) + "scsi%ld: Ending - target %d suspension.\n", + ha->host_no, t);) + clear_bit(TGT_SUSPENDED, &tq->q_flags); +- set_bit(TGT_UNSUSPENDED, &tq->q_flags); ++ /* retry the commands */ ++ set_bit(TGT_RETRY_CMDS, &tq->q_flags); + start_dpc++; + } + } +@@ -6039,8 +5718,15 @@ qla2x00_timer(scsi_qla_host_t *ha) + "before time expire\n", + ha->instance);) + #if !defined(ISP2100) +- if(ha->link_down_timeout) +- ha->loop_state = LOOP_DEAD; ++ if(ha->link_down_timeout) { ++ atomic_set(&ha->loop_state, LOOP_DEAD); ++ printk(KERN_INFO ++ "scsi(%ld): LOOP DEAD detected.\n", ++ ha->host_no); ++ DEBUG2(printk( ++ "scsi(%ld): LOOP DEAD detected.\n", ++ ha->host_no);) ++ } + #endif + set_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags); + start_dpc++; +@@ -6061,7 +5747,9 @@ qla2x00_timer(scsi_qla_host_t *ha) + ha->instance);) + } + } +- DEBUG3(printk("qla%ld: Loop Down - seconds remainning %d\n", ++ if (!(ha->device_flags & DFLG_NO_CABLE)) ++ DEBUG2(printk(KERN_INFO ++ "qla%ld: Loop Down - seconds remainning %d\n", + ha->instance, + atomic_read(&ha->loop_down_timer));) + } +@@ -6070,14 +5758,8 @@ qla2x00_timer(scsi_qla_host_t *ha) + * Done Q Handler -- dgFIXME This handler will kick off doneq if we + * haven't process it in 2 seconds. + */ +- if (!list_empty(&ha->done_queue)) { +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else +- start_dpc++; +- /* qla2x00_done(ha); */ +-#endif +- } ++ if (!list_empty(&ha->done_queue)) ++ qla2x00_done(ha); + + #if QLA2100_LIPTEST + /* +@@ -6149,6 +5831,8 @@ qla2x00_timer(scsi_qla_host_t *ha) + test_bit(FAILOVER_EVENT, &ha->dpc_flags) || + test_bit(FAILOVER_NEEDED, &ha->dpc_flags) || + test_bit(PORT_SCAN_NEEDED, &ha->dpc_flags) || ++ test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags) || ++ test_bit(IOCTL_ERROR_RECOVERY, &ha->dpc_flags) || + test_bit(MAILBOX_CMD_NEEDED, &ha->dpc_flags)) && + ha->dpc_wait && !ha->dpc_active ){ /* v2.19.4 */ + +@@ -6194,7 +5878,8 @@ qla2x00_callback(scsi_qla_host_t *ha, Sc + srb_t *sp = (srb_t *) CMD_SP(cmd); + scsi_qla_host_t *vis_ha; + os_lun_t *lq; +- int got_sense; ++ uint8_t is_fdmi_cmnd; ++ uint8_t got_sense; + unsigned long cpu_flags = 0; + + ENTER(__func__); +@@ -6223,12 +5908,33 @@ qla2x00_callback(scsi_qla_host_t *ha, Sc + sp->cmd = NULL; + CMD_SP(cmd) = NULL; + lq = sp->lun_queue; ++ is_fdmi_cmnd = (sp->flags & SRB_FDMI_CMD) ? 1 : 0; + got_sense = (sp->flags & SRB_GOT_SENSE)? 1: 0; ++#if REG_FDMI_ENABLED ++ if (is_fdmi_cmnd) { ++ DEBUG13(printk("%s(%ld): going to free fdmi srb tmpmem. " ++ "result=%d.\n", ++ __func__, vis_ha->host_no, CMD_RESULT(cmd)>>16);) ++ /* free some tmp buffers saved in sp */ ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ } ++#endif + add_to_free_queue(vis_ha, sp); + + if ((CMD_RESULT(cmd)>>16) == DID_OK) { + /* device ok */ +- ha->total_bytes += cmd->bufflen; ++ if (!is_fdmi_cmnd) { ++ /* keep IO stats for SCSI commands only. */ ++ ha->total_bytes += cmd->bufflen; ++ ++ if (cmd->bufflen) { ++ if (sp->dir & __constant_cpu_to_le16(CF_READ)) ++ ha->total_input_bytes += cmd->bufflen; ++ else ++ ha->total_output_bytes += cmd->bufflen; ++ } ++ } ++ + if (!got_sense) { + /* COMPAQ*/ + #if defined(COMPAQ) +@@ -6294,7 +6000,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + */ + + if( retry != 10 ) +- printk(KERN_INFO ++ printk( KERN_INFO + "scsi(%ld): Memory Allocation retry %d \n", + ha->host_no, retry); + +@@ -6309,7 +6015,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "scsi(%ld): Memory Allocation failed - " + "risc_rec_q\n", + ha->host_no); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6325,7 +6031,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "scsi(%ld): Memory Allocation failed - " + "request_ring\n", + ha->host_no); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6341,7 +6047,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "response_ring\n", + ha->host_no); + qla2x00_mem_free(ha); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6357,7 +6063,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "init_cb\n", + ha->host_no); + qla2x00_mem_free(ha); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6371,7 +6077,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "ioctl_mem\n", + ha->host_no); + qla2x00_mem_free(ha); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6383,7 +6089,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "qla2x00_allocate_sp_pool\n", + ha->host_no); + qla2x00_mem_free(ha); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6400,7 +6106,7 @@ qla2x00_mem_alloc(scsi_qla_host_t *ha) + "mbx_cmd_q", + ha->host_no); + qla2x00_mem_free(ha); +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ/10); + continue; + } +@@ -6447,13 +6153,11 @@ STATIC void + qla2x00_mem_free(scsi_qla_host_t *ha) + { + uint32_t t; +- fc_lun_t *fclun, *fclun_next; +- fc_port_t *fcport, *fcport_next; ++ fc_port_t *fcport, *fcptemp; ++ fc_lun_t *fclun, *fcltemp; + mbx_cmdq_t *ptmp; + mbx_cmdq_t *tmp_q_head; + unsigned long wtime;/* max wait time if mbx cmd is busy. */ +- struct list_head *fcil, *fcitemp; +- fc_initiator_t *fcinitiator; + + ENTER(__func__); + +@@ -6490,15 +6194,6 @@ qla2x00_mem_free(scsi_qla_host_t *ha) + /* free ioctl memory */ + qla2x00_free_ioctl_mem(ha); + +- /* Free host database. */ +- list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); +- +- list_del(&fcinitiator->list); +- kfree(fcinitiator); +- } +- INIT_LIST_HEAD(&ha->fcinitiators); +- + /* free sp pool */ + qla2x00_free_sp_pool(ha); + +@@ -6545,24 +6240,16 @@ qla2x00_mem_free(scsi_qla_host_t *ha) + ha->response_ring = NULL; + ha->response_dma = 0; + +- /* fc ports */ +- for (fcport = ha->fcport; +- fcport != NULL; +- fcport = fcport_next) { +- +- fcport_next = fcport->next; +- +- /* fc luns */ +- for (fclun = fcport->fclun; +- fclun != NULL; +- fclun = fclun_next) { +- +- fclun_next = fclun->next; ++ list_for_each_entry_safe(fcport, fcptemp, &ha->fcports, list) { ++ list_for_each_entry_safe(fclun, fcltemp, &fcport->fcluns, ++ list) { ++ list_del_init(&fclun->list); + kfree(fclun); + } ++ list_del_init(&fcport->list); + kfree(fcport); + } +- ha->fcport = NULL ; ++ INIT_LIST_HEAD(&ha->fcports); + + LEAVE(__func__); + } +@@ -6635,9 +6322,8 @@ qla2x00_initialize_adapter(scsi_qla_host + ha->flags.online = FALSE; + ha->flags.disable_host_adapter = FALSE; + ha->flags.reset_active = FALSE; +- ha->flags.watchdog_enabled = FALSE; + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME); +- ha->loop_state = LOOP_DOWN; ++ atomic_set(&ha->loop_state, LOOP_DOWN); + ha->device_flags = 0; + ha->sns_retry_cnt = 0; + ha->device_flags = 0; +@@ -6663,9 +6349,6 @@ qla2x00_initialize_adapter(scsi_qla_host + + qla2x00_reset_chip(ha); + +- /* Initialize Fibre Channel database. */ +- qla2x00_init_fc_db(ha); +- + /* Initialize target map database. */ + qla2x00_init_tgt_map(ha); + +@@ -6682,7 +6365,6 @@ qla2x00_initialize_adapter(scsi_qla_host + qla2x00_nvram_config(ha); + #endif + +- ha->retry_count = ql2xretrycount; + #if USE_PORTNAME + ha->flags.port_name_used =1; + #else +@@ -6706,7 +6388,7 @@ qla2x00_initialize_adapter(scsi_qla_host + qla2x00_get_properties(ha, ql2xdevconf); + } + +- retry = 10; ++ retry = QLA2XXX_LOOP_RETRY_COUNT; + /* + * Try configure the loop. + */ +@@ -6727,7 +6409,7 @@ qla2x00_initialize_adapter(scsi_qla_host + status = qla2x00_setup_chip(ha); + + if (!status) { +- DEBUG(printk("scsi(%ld): Chip verified " ++ DEBUG2(printk("scsi(%ld): Chip verified " + "and RISC loaded...\n", + ha->host_no)); + } +@@ -6742,7 +6424,7 @@ qla2x00_initialize_adapter(scsi_qla_host + * value OR a minimum of 4 seconds OR If no + * cable, only 5 seconds. + */ +- DEBUG(printk("qla2x00_init_rings OK, call " ++ DEBUG2(printk("qla2x00_init_rings OK, call " + "qla2x00_fw_ready...\n");) + + check_fw_ready_again: +@@ -6766,11 +6448,9 @@ check_fw_ready_again: + break; + } + +- /* if loop state changed while +- * we were discoverying devices +- * then wait for LIP to complete +- */ +- if( ha->loop_state == LOOP_DOWN && retry-- ) { ++ /* if loop state change while we were discoverying devices ++ then wait for LIP to complete */ ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN && retry--) { + goto check_fw_ready_again; + } + +@@ -6783,7 +6463,7 @@ check_fw_ready_again: + !time_after_eq(jiffies,wait_device);) { + qla2x00_check_fabric_devices(ha); + +- set_current_state(TASK_INTERRUPTIBLE); ++ set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(5); + } + #endif +@@ -6940,6 +6620,7 @@ qla2x00_iospace_config(scsi_qla_host_t * + "scsi(%ld): cannot remap MMIO (%s), aborting\n", + ha->host_no, ha->pdev->slot_name); + ++ pci_release_regions(ha->pdev); + goto iospace_error_exit; + } + ha->iobase = (device_reg_t *) ha->mmio_address; +@@ -6978,38 +6659,28 @@ qla2x00_pci_config(scsi_qla_host_t *ha) + * Turn on PCI master; for system BIOSes that don't turn it on by + * default. + */ ++ + pci_set_master(ha->pdev); + pci_read_config_word(ha->pdev, PCI_REVISION_ID, &buf_wd); + ha->revision = buf_wd; + ++#ifndef MEMORY_MAPPED_IO + if (ha->iobase) + return 0; +- ++#endif + do { /* Quick exit */ + /* Get command register. */ + pci_ret = pci_read_config_word(ha->pdev, PCI_COMMAND, &buf_wd); + if (pci_ret != PCIBIOS_SUCCESSFUL) + break; + +- /* +- * Set Bus Master Enable (bit-2), Memory Address Space Enable +- * and reset any error bits. +- */ +- buf_wd &= ~0x7; +- +-#if MEMORY_MAPPED_IO +- DEBUG(printk("%s(): I/O SPACE and MEMORY MAPPED I/O is " +- "enabled.\n", +- __func__)); +- buf_wd |= (PCI_COMMAND_MASTER | +- PCI_COMMAND_MEMORY | +- PCI_COMMAND_IO); +-#else +- DEBUG(printk("%s(): I/O SPACE Enabled and MEMORY MAPPED " +- "I/O is disabled.\n", +- __func__)); +- buf_wd |= (PCI_COMMAND_MASTER | PCI_COMMAND_IO); +-#endif ++ /* PCI Specification Revision 2.3 changes */ ++ if (check_device_id(ha)) { ++ /* Command Register ++ * -- Reset Interrupt Disable -- BIT_10 ++ */ ++ buf_wd &= ~BIT_10; ++ } + + pci_ret = pci_write_config_word(ha->pdev, PCI_COMMAND, buf_wd); + if (pci_ret != PCIBIOS_SUCCESSFUL) +@@ -7103,7 +6774,7 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + uint8_t status = 0; + device_reg_t *reg = ha->iobase; + unsigned long flags = 0; +-#if defined(ISP2300) ++#if defined(ISP2300) + uint16_t buf_wd; + #endif + uint16_t data; +@@ -7112,13 +6783,16 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + ENTER(__func__); + + DEBUG3(printk("%s(): testing device at %lx.\n", +- __func__, +- (u_long)®->flash_address);) ++ __func__, ++ (u_long)®->flash_address);) + + spin_lock_irqsave(&ha->hardware_lock, flags); + + /* Reset ISP chip. */ + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET); ++ CACHE_FLUSH(®->ctrl_status); ++ /* Delay after reset, for chip to recover. */ ++ udelay(20); + data = qla2x00_debounce_register(®->ctrl_status); + for (cnt = 6000000 ; cnt && (data & CSR_ISP_SOFT_RESET); cnt--) { + udelay(5); +@@ -7128,30 +6802,31 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + + if (cnt) { + DEBUG3(printk("%s(): reset register cleared by chip reset\n", +- __func__);) ++ __func__);) + +-#if defined(ISP2300) ++#if defined(ISP2300) + pci_read_config_word(ha->pdev, PCI_COMMAND, &buf_wd); + buf_wd |= (PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); + data = RD_REG_WORD(®->mailbox6); +- +- if ((ha->device_id == QLA2312_DEVICE_ID) || +- ((data & 0xff) == FPM_2310)) ++ if (check_all_device_ids(ha)) + /* Enable Memory Write and Invalidate. */ + buf_wd |= PCI_COMMAND_INVALIDATE; + else + buf_wd &= ~PCI_COMMAND_INVALIDATE; ++ + pci_write_config_word(ha->pdev, PCI_COMMAND, buf_wd); + #endif + /* Reset RISC processor. */ + WRT_REG_WORD(®->host_cmd, HC_RESET_RISC); ++ CACHE_FLUSH(®->host_cmd); + WRT_REG_WORD(®->host_cmd, HC_RELEASE_RISC); ++ CACHE_FLUSH(®->host_cmd); + +-#if defined(ISP2300) ++#if defined(ISP2300) + /* Workaround for QLA2312 PCI parity error */ +- if (ha->device_id == QLA2312_DEVICE_ID) ++ if (check_all_device_ids(ha)) { + udelay(10); +- else { ++ } else { + data = qla2x00_debounce_register(®->mailbox0); + + for (cnt = 6000000; cnt && (data == MBS_BUSY); cnt--) { +@@ -7173,7 +6848,7 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + if (cnt) { + /* Check product ID of chip */ + DEBUG3(printk("%s(): Checking product ID of chip\n", +- __func__);) ++ __func__);) + + if (RD_REG_WORD(®->mailbox1) != PROD_ID_1 || + (RD_REG_WORD(®->mailbox2) != PROD_ID_2 && +@@ -7197,26 +6872,26 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + ha->device_id = QLA2200A_DEVICE_ID; + + DEBUG3(printk("%s(): Found QLA2200A " +- "chip.\n", +- __func__);) ++ "chip.\n", ++ __func__);) + } + #endif + spin_unlock_irqrestore(&ha->hardware_lock, +- flags); ++ flags); + + DEBUG3(printk("%s(): Checking mailboxes.\n", +- __func__);) ++ __func__);) + + /* Wrap Incoming Mailboxes Test. */ + status = qla2x00_mbx_reg_test(ha); + if (status) { + printk(KERN_WARNING +- "%s(): failed mailbox send " +- "register test\n", +- __func__); ++ "%s(): failed mailbox send " ++ "register test\n", ++ __func__); + DEBUG(printk("%s(): Failed mailbox " +- "send register test\n", +- __func__);) ++ "send register test\n", ++ __func__);) + } + spin_lock_irqsave(&ha->hardware_lock, flags); + } +@@ -7225,8 +6900,10 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) + } else + status = 1; + +- if (status) ++ if (status){ + DEBUG2_3(printk(KERN_INFO "%s(): **** FAILED ****\n", __func__);) ++ printk("%s(): **** FAILED ****\n", __func__); ++ } + + spin_unlock_irqrestore(&ha->hardware_lock, flags); + +@@ -7251,30 +6928,17 @@ qla2x00_setup_chip(scsi_qla_host_t *ha) + { + uint8_t status = 0; + uint16_t cnt; +- uint16_t risc_address; + uint16_t *risc_code_address; ++ unsigned long risc_address; + unsigned long risc_code_size; + int num; +-#if defined(WORD_FW_LOAD) +- uint16_t data; +- uint16_t *ql21_risc_code_addr01; +- uint16_t ql21_risc_code_length01; +- uint8_t dump_status; +-#endif ++ struct qla_fw_info *fw_iter; ++ int i; ++ uint16_t *req_ring; + + ENTER(__func__); + +- /* Load RISC code. */ +- risc_address = *QLBoardTbl_fc[ha->devnum].fwstart; +- risc_code_address = QLBoardTbl_fc[ha->devnum].fwcode; +- risc_code_size = *QLBoardTbl_fc[ha->devnum].fwlen; +- +- DEBUG(printk("%s(): Loading RISC code size =(0x%lx) req virt=%p " +- "phys=%llx\n", +- __func__, +- risc_code_size, +- ha->request_ring, +- (u64)ha->request_dma);) ++ fw_iter = QLBoardTbl_fc[ha->devnum].fwinfo; + + /* + * Save active FC4 type depending on firmware support. This info is +@@ -7282,124 +6946,94 @@ qla2x00_setup_chip(scsi_qla_host_t *ha) + */ + ha->active_fc4_types = EXT_DEF_FC4_TYPE_SCSI; + #if defined(FC_IP_SUPPORT) +- ha->active_fc4_types |= EXT_DEF_FC4_TYPE_IP; ++ if (ha->flags.enable_ip) ++ ha->active_fc4_types |= EXT_DEF_FC4_TYPE_IP; + #endif + #if defined(FC_SCTP_SUPPORT) ++ risc_address = *fw_iter->fwstart; + if (risc_address == fw2300sctp_code01) + ha->active_fc4_types |= EXT_DEF_FC4_TYPE_SCTP; + #endif + +- num = 0; +- while (risc_code_size > 0 && !status) { +- cnt = REQUEST_ENTRY_SIZE * REQUEST_ENTRY_CNT >> 1; +-#if defined(ISP2200) +- /* for 2200A set transfer size to 128 bytes */ +- if (ha->device_id == QLA2200A_DEVICE_ID) +- cnt = 128 >> 1; +-#endif +- +- if (cnt > risc_code_size) +- cnt = risc_code_size; +- +- DEBUG7(printk("%s(): loading risc segment@ addr %p, number of " +- "bytes 0x%x, offset 0x%x.\n", +- __func__, +- risc_code_address, +- cnt, +- risc_address);) +- +-#if defined(__LITTLE_ENDIAN) +- memcpy(ha->request_ring, risc_code_address, (cnt << 1)); +-#else +- { +- int i; +- uint16_t *req_ring; ++ /* Load firmware sequences */ ++ while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) { ++ risc_code_address = fw_iter->fwcode; ++ risc_code_size = *fw_iter->fwlen; ++ ++ if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { ++ risc_address = *fw_iter->fwstart; ++ DEBUG7(printk(KERN_INFO "%s risc_address=%lx" ++ "address=%d\n",__func__,risc_address, ++ fw_iter->addressing);) ++ } else { ++ /* Extended address */ ++ risc_address = *fw_iter->lfwstart; ++ DEBUG7(printk(KERN_INFO "%s risc_address=%lx" ++ "address=%d\n",__func__,risc_address, ++ fw_iter->addressing);) ++ } + +- req_ring = (uint16_t *)ha->request_ring; +- for (i = 0; i < cnt; i++) +- req_ring[i] = cpu_to_le16(risc_code_address[i]); +- }; ++ num = 0; ++ while (risc_code_size > 0 && !status) { ++ cnt = REQUEST_ENTRY_SIZE * REQUEST_ENTRY_CNT >> 1; ++#if defined(ISP2200) ++ /* for 2200A set transfer size to 128 bytes */ ++ if (ha->device_id == QLA2200A_DEVICE_ID) ++ cnt = 128 >> 1; + #endif + +- /* +- * Flush written firmware to the ha->request_ring buffer before +- * DMA +- */ +- flush_cache_all(); +- +- status = qla2x00_load_ram(ha, +- ha->request_dma, risc_address, cnt); ++ if (cnt > risc_code_size) ++ cnt = risc_code_size; + +- if (status) { +- qla2x00_dump_regs(ha->host); +- printk(KERN_WARNING +- "qla2x00: [ERROR] Failed to load segment " +- "%d of FW\n", +- num); +- DEBUG(printk("%s(): Failed to load segment %d of FW\n", +- __func__, +- num);) +- break; +- } +- +- risc_address += cnt; +- risc_code_size -= cnt; +- risc_code_address += cnt; +- num++; +- } +- +-#if defined(WORD_FW_LOAD) +- { +- int i; ++ DEBUG7(printk("%s(): loading risc segment@ addr %p," ++ " number of bytes 0x%x, offset 0x%lx.\n", ++ __func__, risc_code_address, cnt, risc_address);) + +- risc_address = *QLBoardTbl_fc[ha->devnum].fwstart; +- ql21_risc_code_addr01 = QLBoardTbl_fc[ha->devnum].fwcode; +- ql21_risc_code_length01 = *QLBoardTbl_fc[ha->devnum].fwlen; +- +- for (i = 0; i < ql21_risc_code_length01 ; i++) { +- dump_status = qla2x00_write_ram_word(ha, +- risc_address + i, +- *(ql21_risc_code_addr01 + i)); ++ req_ring = (uint16_t *)ha->request_ring; ++ for (i = 0; i < cnt; i++) ++ req_ring[i] = cpu_to_le16(risc_code_address[i]); + +- if (dump_status) { +- printk(KERN_WARNING +- "qla2x00: [ERROR] firmware load " +- "failure\n"); +- break; ++ /* ++ * Flush written firmware to the ha->request_ring ++ * buffer before DMA */ ++ flush_cache_all(); ++ if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { ++ status = qla2x00_load_ram(ha, ++ ha->request_dma, risc_address, cnt); ++ } else { ++ status = qla2x00_load_ram_ext(ha, ++ ha->request_dma, risc_address, cnt); + } + +- dump_status = qla2x00_read_ram_word(ha, +- risc_address + i, &data); +- +- if (dump_status) { ++ if (status) { ++ qla2x00_dump_regs(ha->host); + printk(KERN_WARNING +- "qla2x00: [ERROR] RISC FW Read " +- "Failure\n"); +- break; ++ "qla2x00: [ERROR] Failed to load segment " ++ "%d of FW\n", num); ++ DEBUG2(printk("%s(): Failed to load segment %d" ++ " of FW\n", __func__, num);) ++ break; + } + +- if (data != *(ql21_risc_code_addr01 + i)) { +- printk(KERN_WARNING +- "qla2x00: [ERROR] RISC FW Compare " +- "ERROR @ (0x%p)\n", +- (void *)(ql21_risc_code_addr01+i)); +- } ++ risc_address += cnt; ++ risc_code_size -= cnt; ++ risc_code_address += cnt; ++ num++; + } +- printk(KERN_INFO +- "qla2x00: RISC FW download confirmed... \n"); ++ /* Next firmware sequence */ ++ fw_iter++; + } +-#endif /* WORD_FW_LOAD */ + + /* Verify checksum of loaded RISC code. */ + if (!status) { +- DEBUG(printk("%s(): Verifying Check Sum of loaded RISC code.\n", ++ DEBUG2(printk("%s(): Verifying Check Sum of loaded RISC code.\n", + __func__);) + + status = (uint8_t)qla2x00_verify_checksum(ha); + + if (status == QL_STATUS_SUCCESS) { + /* Start firmware execution. */ +- DEBUG(printk("%s(): CS Ok, Start firmware running\n", ++ DEBUG2(printk("%s(): CS Ok, Start firmware running\n", + __func__);) + status = qla2x00_execute_fw(ha); + } +@@ -7493,16 +7127,18 @@ qla2x00_init_rings(scsi_qla_host_t *ha) + /* Initialize response queue entries */ + qla2x00_init_response_q_entries(ha); + +-#if defined(ISP2300) ++#if defined(ISP2300) + WRT_REG_WORD(®->req_q_in, 0); + WRT_REG_WORD(®->req_q_out, 0); + WRT_REG_WORD(®->rsp_q_in, 0); + WRT_REG_WORD(®->rsp_q_out, 0); ++ CACHE_FLUSH(®->rsp_q_out); + #else + WRT_REG_WORD(®->mailbox4, 0); + WRT_REG_WORD(®->mailbox4, 0); + WRT_REG_WORD(®->mailbox5, 0); + WRT_REG_WORD(®->mailbox5, 0); ++ CACHE_FLUSH(®->mailbox5); + #endif + + spin_unlock_irqrestore(&ha->hardware_lock, flags); +@@ -7516,18 +7152,20 @@ qla2x00_init_rings(scsi_qla_host_t *ha) + __func__, + ha->host_no);) + } else { ++#if defined(ISP2300) + /* Setup seriallink options */ + uint16_t opt10, opt11; ++#endif ++ qla2x00_get_firmware_options(ha, ++ &ha->fw_options1, &ha->fw_options2, &ha->fw_options3); + ++#if defined(ISP2300) + DEBUG3(printk("%s(%ld): Serial link options:\n", + __func__, ha->host_no);) + DEBUG3(qla2x00_dump_buffer( + (uint8_t *)&ha->fw_seriallink_options, + sizeof(ha->fw_seriallink_options));) + +- qla2x00_get_firmware_options(ha, +- &ha->fw_options1, &ha->fw_options2, &ha->fw_options3); +- + ha->fw_options1 &= ~BIT_8; + if (ha->fw_seriallink_options.output_enable) + ha->fw_options1 |= BIT_8; +@@ -7537,12 +7175,15 @@ qla2x00_init_rings(scsi_qla_host_t *ha) + opt11 = (ha->fw_seriallink_options.output_emphasis_2g << 14) | + (ha->fw_seriallink_options.output_swing_2g << 8) | 0x3; + ++ /* TAPE FIX */ ++ /* Return the IOCB without waiting for the ABTS. */ ++ ha->fw_options3 |= BIT_13; ++ + qla2x00_set_firmware_options(ha, ha->fw_options1, + ha->fw_options2, ha->fw_options3, opt10, opt11); +- +- DEBUG3(printk("%s(%ld): exiting normally.\n", +- __func__, +- ha->host_no);) ++#endif ++ DEBUG3(printk("%s(%ld): exiting normally.\n", __func__, ++ ha->host_no)); + } + + return (status); +@@ -7571,7 +7212,11 @@ qla2x00_fw_ready(scsi_qla_host_t *ha) + + ENTER(__func__); + +- min_wait = 60; /* 60 seconds for loop down. */ ++ if (!ha->init_done) ++ min_wait = 60; /* 60 seconds for loop down. */ ++ else ++ min_wait = 20; /* 20 seconds for loop down. */ ++ ha->device_flags &= ~DFLG_NO_CABLE; + + /* + * Firmware should take at most one RATOV to login, plus 5 seconds for +@@ -7644,8 +7289,8 @@ qla2x00_fw_ready(scsi_qla_host_t *ha) + break; + + /* Delay for a while */ +- set_current_state(TASK_INTERRUPTIBLE); +- schedule_timeout(HZ / 2); ++ set_current_state(TASK_UNINTERRUPTIBLE); ++ schedule_timeout(HZ / HZ); + + DEBUG3(printk("%s(): fw_state=%x curr time=%lx.\n", + __func__, +@@ -7791,45 +7436,6 @@ qla2x00_configure_hba(scsi_qla_host_t *h + return(rval); + } + +-/** +- * qla2x00_config_dma_addressing() - Configure OS DMA addressing method. +- * @ha: HA context +- * +- * At exit, the @ha's flags.enable_64bit_addressing set to indicated +- * supported addressing method. +- */ +-static inline void +-qla2x00_config_dma_addressing(scsi_qla_host_t *ha) +-{ +- /* +- * Given the two variants of pci_set_dma_mask(), allow the compiler to +- * assist in setting the proper dma mask. +- */ +- if (sizeof(dma_addr_t) > 4) { +- ha->flags.enable_64bit_addressing = 1; +- /* Update our PCI device dma_mask for full 64 bit mask */ +- if (pci_set_dma_mask(ha->pdev, 0xffffffffffffffffULL)) { +- printk("qla2x00: failed to set 64 bit PCI DMA mask, " +- "using 32 bits\n"); +- ha->flags.enable_64bit_addressing = 0; +- pci_set_dma_mask(ha->pdev, 0xffffffff); +- } +- (void) pci_set_consistent_dma_mask(ha->pdev, 0xffffffffffffffffULL); +- } +- else { +- ha->flags.enable_64bit_addressing = 0; +- pci_set_dma_mask(ha->pdev, 0xffffffff); +- } +- printk(KERN_INFO +- "scsi(%ld): %d Bit PCI Addressing Enabled.\n", +- ha->host_no, +- (ha->flags.enable_64bit_addressing ? 64 : 32)); +- printk(KERN_INFO +- "scsi(%ld): Scatter/Gather entries= %d\n", +- ha->host_no, +- ha->host->sg_tablesize); +-} +- + #if defined(ISP2100) + /* + * NVRAM configuration for 2100. +@@ -7962,13 +7568,10 @@ qla2100_nvram_config(scsi_qla_host_t *ha + ha->flags.disable_luns = nv->host_p.disable_luns; + ha->flags.disable_risc_code_load = nv->host_p.disable_risc_code_load; + ha->flags.set_cache_line_size_1 = nv->host_p.set_cache_line_size_1; +- ha->flags.enable_64bit_addressing = nv->host_p.enable_64bit_addressing; + + if (nv->host_p.enable_extended_logging) + extended_error_logging = 1 ; + +- qla2x00_config_dma_addressing(ha); +- + ha->flags.link_down_error_enable = 1; + + ha->flags.enable_lip_reset = nv->host_p.enable_lip_reset; +@@ -8032,8 +7635,7 @@ qla2100_nvram_config(scsi_qla_host_t *ha + + ha->binding_type = Bind; + if ((ha->binding_type != BIND_BY_PORT_NAME) && +- (ha->binding_type != BIND_BY_PORT_ID) && +- (ha->binding_type != BIND_BY_NODE_NAME)) { ++ (ha->binding_type != BIND_BY_PORT_ID)) { + + printk(KERN_WARNING + "scsi(%ld): Invalid binding type specified " +@@ -8050,10 +7652,10 @@ qla2100_nvram_config(scsi_qla_host_t *ha + icb->response_q_inpointer = 0; + icb->request_q_length = REQUEST_ENTRY_CNT; + icb->response_q_length = RESPONSE_ENTRY_CNT; +- icb->request_q_address[0] = LS_64BITS(ha->request_dma); +- icb->request_q_address[1] = MS_64BITS(ha->request_dma); +- icb->response_q_address[0] = LS_64BITS(ha->response_dma); +- icb->response_q_address[1] = MS_64BITS(ha->response_dma); ++ icb->request_q_address[0] = LSD(ha->request_dma); ++ icb->request_q_address[1] = MSD(ha->request_dma); ++ icb->response_q_address[0] = LSD(ha->response_dma); ++ icb->response_q_address[1] = MSD(ha->response_dma); + + + ha->qfull_retry_count = qfull_retry_count; +@@ -8072,20 +7674,6 @@ qla2100_nvram_config(scsi_qla_host_t *ha + return(status); + } + #else +-#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_SGI_SN2) +-/* +- * SGI systems can't adjust NVRAM settings, and some cards for SGI +- * systems have incorrect defaults. +- */ +-void +-sgi_sn_nvram_fixup(nvram22_t *nv) +-{ +- nv->frame_payload_size = __constant_cpu_to_le16(2048); +-#if defined(ISP2300) +- nv->special_options.data_rate = SO_DATA_RATE_AUTO; +-#endif +-} +-#endif + /* + * NVRAM configuration for the 2200/2300/2312 + * +@@ -8106,7 +7694,7 @@ sgi_sn_nvram_fixup(nvram22_t *nv) + STATIC uint8_t + qla2x00_nvram_config(scsi_qla_host_t *ha) + { +-#if defined(ISP2300) ++#if defined(ISP2300) + device_reg_t *reg = ha->iobase; + uint16_t data; + #endif +@@ -8126,8 +7714,8 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + ENTER(__func__); + + if (!ha->flags.nvram_config_done) { +-#if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++#if defined(ISP2300) ++ if (check_all_device_ids(ha)) { + data = RD_REG_WORD(®->ctrl_status); + if ((data >> 14) == 1) + base = 0x80; +@@ -8163,8 +7751,8 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + chksum += (uint8_t)(*wptr >> 8); + wptr++; + } +-#if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++#if defined(ISP2300) ++ if (check_all_device_ids(ha)) { + /* Unlock resource */ + WRT_REG_WORD(®->host_semaphore, 0); + } +@@ -8252,22 +7840,25 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + nv->link_down_timeout = 60; + status = 1; + } +-#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_SGI_SN2) +- if (ia64_platform_is("sn2")) +- sgi_sn_nvram_fixup(nv); +-#endif + + #if defined(ISP2200) + /* Model Number */ + sprintf(ha->model_number,"QLA22xx"); + #endif + +-#if defined(ISP2300) ++#if defined(ISP2300) + /* Sub System Id (QLA2300/QLA2310): 0x9 */ +- if(ha->pdev->subsystem_device == 0x9 ) { ++ if (ha->device_id == QLA2300_DEVICE_ID && ++ ha->pdev->subsystem_device == 0x9 ) { + /* Model Number */ + sprintf(ha->model_number,"QLA2300/2310"); +- } else { ++ } else ++ { ++ /* This should be later versions of 23xx, with NVRAM ++ * support of hardware ID. ++ */ ++ strncpy(ha->hw_id_version, nv->hw_id, NVRAM_HW_ID_SIZE); ++ + /* Get the Model Number from the NVRAM. If + * the string is empty then lookup the table. + */ +@@ -8286,13 +7877,15 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + sprintf(ha->model_number, + qla2x00_model_name[index]); + } else { +- sprintf(ha->model_number, +- "QLA23xx"); ++ set_model_number(ha); + } + } + } + + #endif ++ ++ sprintf(ha->model_desc,"QLogic %s PCI Fibre Channel Adapter", ++ ha->model_number); + + /* Reset NVRAM data. */ + memset(icb, 0, sizeof(init_cb_t)); +@@ -8348,6 +7941,7 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + firmware_options.enable_full_login_on_lip = 1; + #if defined(ISP2300) + firmware_options.enable_fast_posting = 0; ++ icb->special_options.data_rate = 2; + #endif + #if !defined(FC_IP_SUPPORT) + /* Enable FC-Tape support */ +@@ -8355,25 +7949,30 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + additional_firmware_options.enable_fc_tape = 1; + additional_firmware_options.enable_fc_confirm = 1; + #endif ++#if defined(ISP2200) ++ additional_firmware_options.operation_mode = 4; ++ icb->response_accum_timer = 3; ++ icb->interrupt_delay_timer = 5; ++#endif + /* + * Set host adapter parameters + */ + ha->flags.enable_target_mode = firmware_options.enable_target_mode; + ha->flags.disable_luns = host_p.disable_luns; ++ if (check_device_id(ha)) ++ host_p.disable_risc_code_load = 0; + ha->flags.disable_risc_code_load = host_p.disable_risc_code_load; + ha->flags.set_cache_line_size_1 = host_p.set_cache_line_size_1; +- ha->flags.enable_64bit_addressing = host_p.enable_64bit_addressing; + if(host_p.enable_extended_logging) + extended_error_logging = 1 ; + +- qla2x00_config_dma_addressing(ha); +- + ha->flags.enable_lip_reset = host_p.enable_lip_reset; + ha->flags.enable_lip_full_login = host_p.enable_lip_full_login; + ha->flags.enable_target_reset = host_p.enable_target_reset; + ha->flags.enable_flash_db_update = host_p.enable_database_storage; + ha->operating_mode = additional_firmware_options.connection_options; +- ++ DEBUG2(printk("%s(%ld):operating mode=%d\n",__func__, ++ ha->host_no, ha->operating_mode);) + /* + * Set serial firmware options + */ +@@ -8403,8 +8002,10 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + + ha->hiwat = le16_to_cpu(icb->iocb_allocation); + ha->execution_throttle = le16_to_cpu(nv->execution_throttle); ++#if defined(ISP2200) || defined(ISP2300) + if (nv->login_timeout < ql2xlogintimeout) + nv->login_timeout = ql2xlogintimeout; ++#endif + + icb->execution_throttle = __constant_cpu_to_le16(0xFFFF); + ha->retry_count = nv->retry_count; +@@ -8475,8 +8076,7 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + + ha->binding_type = Bind; + if ((ha->binding_type != BIND_BY_PORT_NAME) && +- (ha->binding_type != BIND_BY_PORT_ID) && +- (ha->binding_type != BIND_BY_NODE_NAME)) { ++ (ha->binding_type != BIND_BY_PORT_ID)) { + + printk(KERN_WARNING + "scsi(%ld): Invalid binding type specified " +@@ -8489,8 +8089,11 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + /* + * Need enough time to try and get the port back. + */ ++ ha->port_down_retry_count = 30; ++#if defined(ISP2200) || defined(ISP2300) + if (qlport_down_retry) + ha->port_down_retry_count = qlport_down_retry; ++#endif + #if defined(COMPAQ) + else if (ha->port_down_retry_count < HSG80_PORT_RETRY_COUNT) + ha->port_down_retry_count = HSG80_PORT_RETRY_COUNT; +@@ -8503,6 +8106,11 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + else if ( ha->port_down_retry_count > ha->login_retry_count ) + ha->login_retry_count = ha->port_down_retry_count; + ++#if defined(ISP2200) || defined(ISP2300) ++ if(qlogin_retry_count) ++ ha->login_retry_count = qlogin_retry_count; ++#endif ++ + /* + * Setup ring parameters in initialization control block + */ +@@ -8512,14 +8120,10 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + __constant_cpu_to_le16(REQUEST_ENTRY_CNT); + icb->response_q_length = + __constant_cpu_to_le16(RESPONSE_ENTRY_CNT); +- icb->request_q_address[0] = +- cpu_to_le32(LS_64BITS(ha->request_dma)); +- icb->request_q_address[1] = +- cpu_to_le32(MS_64BITS(ha->request_dma)); +- icb->response_q_address[0] = +- cpu_to_le32(LS_64BITS(ha->response_dma)); +- icb->response_q_address[1] = +- cpu_to_le32(MS_64BITS(ha->response_dma)); ++ icb->request_q_address[0] = cpu_to_le32(LSD(ha->request_dma)); ++ icb->request_q_address[1] = cpu_to_le32(MSD(ha->request_dma)); ++ icb->response_q_address[0] = cpu_to_le32(LSD(ha->response_dma)); ++ icb->response_q_address[1] = cpu_to_le32(MSD(ha->response_dma)); + + icb->lun_enables = __constant_cpu_to_le16(0); + icb->command_resource_count = 0; +@@ -8531,14 +8135,14 @@ qla2x00_nvram_config(scsi_qla_host_t *ha + if (icb->additional_firmware_options.operation_mode + == ZIO_MODE){ + icb->interrupt_delay_timer = ql2xintrdelaytimer; +- DEBUG2(printk(KERN_INFO "%s ZIO enabled:intr_timer_delay=%d\n", +- __func__,ql2xintrdelaytimer);) ++ DEBUG2(printk(KERN_INFO "%s ZIO enabled:" ++ " intr_timer_delay=%d\n", __func__, ++ ql2xintrdelaytimer);) + printk(KERN_INFO "%s ZIO enabled:intr_timer_delay=%d\n", + __func__,ql2xintrdelaytimer); + ha->flags.process_response_queue = 1; + } + #endif +- + ha->qfull_retry_count = qfull_retry_count; + ha->qfull_retry_delay = qfull_retry_delay; + +@@ -8648,6 +8252,7 @@ qla2x00_nvram_request(scsi_qla_host_t *h + + /* Deselect chip. */ + WRT_REG_WORD(®->nvram, NV_DESELECT); ++ CACHE_FLUSH(®->nvram); + /* qla2x00_nv_delay(ha); */ + NVRAM_DELAY(); + +@@ -8660,13 +8265,15 @@ qla2x00_nv_write(scsi_qla_host_t *ha, ui + device_reg_t *reg = ha->iobase; + + WRT_REG_WORD(®->nvram, data | NV_SELECT); ++ CACHE_FLUSH(®->nvram); + NVRAM_DELAY(); +- /* qla2x00_nv_delay(ha); */ ++ + WRT_REG_WORD(®->nvram, data | NV_SELECT | NV_CLOCK); +- /* qla2x00_nv_delay(ha); */ ++ CACHE_FLUSH(®->nvram); + NVRAM_DELAY(); ++ + WRT_REG_WORD(®->nvram, data | NV_SELECT); +- /* qla2x00_nv_delay(ha); */ ++ CACHE_FLUSH(®->nvram); + NVRAM_DELAY(); + } + +@@ -8676,6 +8283,7 @@ qla2x00_nv_deselect(scsi_qla_host_t *ha) + device_reg_t *reg = ha->iobase; + + WRT_REG_WORD(®->nvram, NV_DESELECT); ++ CACHE_FLUSH(®->nvram); + NVRAM_DELAY(); + } + +@@ -8696,16 +8304,8 @@ qla2x00_poll(scsi_qla_host_t *ha) + + ENTER(__func__); + +-#ifdef __VMWARE__ +- /* This function is only called from qla2x00_ms_req_pkt and +- * qla2x00_req_pkt. Since these functions drop the hardware +- * lock and we immediately regrab it here, we drop releasing +- * it there and drop grabbing it here. -- Thor +- */ +-#else + /* Acquire interrupt specific lock */ + spin_lock_irqsave(&ha->hardware_lock, flags); +-#endif + + /* Check for pending interrupts. */ + #if defined(ISP2100) || defined(ISP2200) +@@ -8713,7 +8313,7 @@ qla2x00_poll(scsi_qla_host_t *ha) + if (data & RISC_INT) + qla2x00_isr(ha, data, &discard); + #else +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if (check_all_device_ids(ha)) { + data = RD_REG_WORD(®->istatus); + if (data & RISC_INT) { + data = RD_REG_WORD(®->host_status_lo); +@@ -8726,22 +8326,11 @@ qla2x00_poll(scsi_qla_host_t *ha) + qla2x00_isr(ha, data, &discard); + } + #endif +-#ifdef __VMWARE__ +- /* Again, we do not grab and release this lock since the caller +- * already has this lock. The effect is that tasklet_schedule below +- * is called with interrupts disabled, which is fine. -- Thor +- */ +-#else + /* Release interrupt specific lock */ + spin_unlock_irqrestore(&ha->hardware_lock, flags); +-#endif + + if (!list_empty(&ha->done_queue)) +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + + LEAVE(__func__); + } +@@ -8756,7 +8345,7 @@ qla2x00_poll(scsi_qla_host_t *ha) + * Returns: + * 0 = success + */ +-static int ++int + qla2x00_restart_isp(scsi_qla_host_t *ha) + { + uint8_t status = 0; +@@ -8783,7 +8372,7 @@ qla2x00_restart_isp(scsi_qla_host_t *ha) + spin_lock_irqsave(&ha->hardware_lock, flags); + + /* Enable proper parity */ +- if (ha->device_id == QLA2312_DEVICE_ID) ++ if (check_all_device_ids(ha)) + /* SRAM, Instruction RAM and GP RAM parity */ + WRT_REG_WORD(®->host_cmd, + (HC_ENABLE_PARITY + 0x7)); +@@ -8841,9 +8430,6 @@ qla2x00_abort_isp(scsi_qla_host_t *ha) + uint16_t cnt; + srb_t *sp; + uint8_t status = 0; +-#ifdef PERF_MONITORING +- os_lun_t *lq; +-#endif + + ENTER("qla2x00_abort_isp"); + +@@ -8861,8 +8447,8 @@ qla2x00_abort_isp(scsi_qla_host_t *ha) + ha->host_no,ha); + qla2x00_reset_chip(ha); + +- if (ha->loop_state != LOOP_DOWN) { +- ha->loop_state = LOOP_DOWN; ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { ++ atomic_set(&ha->loop_state, LOOP_DOWN); + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME); + qla2x00_mark_all_devices_lost(ha); + } +@@ -8890,13 +8476,6 @@ qla2x00_abort_isp(scsi_qla_host_t *ha) + ha->actthreads--; + sp->lun_queue->out_cnt--; + ha->iocb_cnt -= sp->iocb_cnt; +-#ifdef PERF_MONITORING +- /* update stats */ +- lq = sp->lun_queue; +- lq->resp_time += jiffies - sp->u_start; +- lq->act_time += jiffies - sp->r_start; +-#endif +- + sp->flags = 0; + + /* +@@ -9005,47 +8584,6 @@ qla2x00_abort_isp(scsi_qla_host_t *ha) + } + + /* +-* qla2x00_init_fc_db +-* Initializes Fibre Channel Device Database. +-* +-* Input: +-* ha = adapter block pointer. +-* +-* Output: +-* ha->fc_db = initialized +-*/ +-STATIC void +-qla2x00_init_fc_db(scsi_qla_host_t *ha) +-{ +- uint16_t cnt; +- +- ENTER(__func__); +- +- /* Initialize fc database if it is not initialized. */ +- if (!ha->fc_db[0].loop_id && !ha->fc_db[1].loop_id) { +- ha->flags.updated_fc_db = FALSE; +- +- /* Initialize target database. */ +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- ha->fc_db[cnt].name[0] = 0L; +- ha->fc_db[cnt].name[1] = 0L; +- ha->fc_db[cnt].loop_id = PORT_UNUSED; +- ha->fc_db[cnt].port_login_retry_count = +- ha->port_down_retry_count * PORT_RETRY_TIME; +- ha->fc_db[cnt].flag = 0; /* v2.19.5b3 */ +- } +- +-#if USE_FLASH_DATABASE +- /* Move flash database to driver database. */ +- qla2x00_get_database(ha); +-#endif +- } +- +- LEAVE(__func__); +-} +- +- +-/* + * qla2x00_init_tgt_map + * Initializes target map. + * +@@ -9069,6 +8607,35 @@ qla2x00_init_tgt_map(scsi_qla_host_t *ha + } + + ++/** ++ * qla2x00_alloc_fcport() - Allocate a generic fcport. ++ * @ha: HA context ++ * @flags: allocation flags ++ * ++ * Returns a pointer to the allocated fcport, or NULL, if none available. ++ */ ++STATIC fc_port_t * ++qla2x00_alloc_fcport(scsi_qla_host_t *ha, int flags) ++{ ++ fc_port_t *fcport; ++ ++ fcport = kmalloc(sizeof(fc_port_t), flags); ++ if (fcport == NULL) ++ return (fcport); ++ ++ /* Setup fcport template structure. */ ++ memset(fcport, 0, sizeof (fc_port_t)); ++ fcport->ha = ha; ++ fcport->port_type = FCT_UNKNOWN; ++ fcport->loop_id = FC_NO_LOOP_ID; ++ atomic_set(&fcport->state, FC_DEVICE_DEAD); ++ fcport->flags = FC_SUPPORT_RPT_LUNS; ++ INIT_LIST_HEAD(&fcport->fcluns); ++ ++ return (fcport); ++} ++ ++ + /* + * qla2x00_reset_adapter + * Reset adapter. +@@ -9128,35 +8695,12 @@ qla2x00_loop_reset(scsi_qla_host_t *ha) + continue; + + status = qla2x00_target_reset(ha, 0, t); +-#ifndef __VMWARE__NO_BUG_FIX +- /* Ignore error from qla2x00_target_reset(), +- * because it is always returning an error in the +- * multipath driver. */ +-#else +- if (status != QL_STATUS_SUCCESS) { +- break; +- } +-#endif + } + } + +- if ( +- +-#ifdef __VMWARE__NO_BUG_FIX +- status == QL_STATUS_SUCCESS && +-#else +- /* Do not look at status, since it may very well be the result of +- * the last target reset and will not tell whether the lip_reset +- * was completed successfully!!! +- */ +-#endif +- ((!ha->flags.enable_target_reset && +- !ha->flags.enable_lip_reset) || +- ha->flags.enable_lip_full_login)) { ++ if ((!ha->flags.enable_target_reset && !ha->flags.enable_lip_reset) || ++ ha->flags.enable_lip_full_login) { + +-#ifdef __VMWARE__ +- printk("Doing full login LIP\n"); +-#endif + status = qla2x00_full_login_lip(ha); + } + +@@ -9240,7 +8784,11 @@ __qla2x00_marker(scsi_qla_host_t *ha, ui + + if (type != MK_SYNC_ALL) { + pkt->lun = cpu_to_le16(lun); +- pkt->target = (uint8_t)loop_id; ++#if defined(EXTENDED_IDS) ++ pkt->target = cpu_to_le16(loop_id); ++#else ++ pkt->target = (uint8_t)loop_id; ++#endif + } + + /* Issue command to ISP */ +@@ -9416,7 +8964,6 @@ qla2x00_64bit_start_scsi(srb_t *sp) + uint32_t timeout; + + device_reg_t *reg; +- uint16_t reg_flushed; + + ENTER(__func__); + +@@ -9440,6 +8987,7 @@ qla2x00_64bit_start_scsi(srb_t *sp) + ha->marker_needed = 0; + } + ++ + /* Acquire ring specific lock */ + spin_lock_irqsave(&ha->hardware_lock, flags); + +@@ -9502,7 +9050,11 @@ qla2x00_64bit_start_scsi(srb_t *sp) + cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address; + + /* Set target ID */ +- cmd_pkt->target = (uint8_t)fclun->fcport->loop_id; ++#if defined(EXTENDED_IDS) ++ cmd_pkt->target = cpu_to_le16(fclun->fcport->loop_id); ++#else ++ cmd_pkt->target = (uint8_t)fclun->fcport->loop_id; ++#endif + + /* Set LUN number*/ + #if VSA +@@ -9561,8 +9113,8 @@ qla2x00_64bit_start_scsi(srb_t *sp) + + cmd_pkt->byte_count = cpu_to_le32((uint32_t)cmd->request_bufflen); + +- if (cmd->request_bufflen == 0 || +- cmd->sc_data_direction == SCSI_DATA_NONE) { ++ if (cmd->request_bufflen == 0 || ++ cmd->sc_data_direction == SCSI_DATA_NONE) { + /* No data transfer */ + cmd_pkt->byte_count = __constant_cpu_to_le32(0); + DEBUG5(printk("%s(): No data, command packet data - " +@@ -9573,50 +9125,7 @@ qla2x00_64bit_start_scsi(srb_t *sp) + (uint32_t)SCSI_LUN_32(cmd));) + DEBUG5(qla2x00_dump_buffer((uint8_t *)cmd_pkt, + REQUEST_ENTRY_SIZE);) +- } +- else { +-#if defined(SANE_USAGE_OF_CMD_DIRECTION) +- /* Set transfer direction */ +-#ifndef __VMWARE__ +- if (cmd->sc_data_direction == SCSI_DATA_WRITE) { +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_WRITE); +- } else if (cmd->sc_data_direction == SCSI_DATA_READ) { +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +- } else +-#else +- /* Always set the data direction here, since the vmkernel +- * does not do it for us (otherwise it will hold a default +- * value of zero, which means SCSI_DATA_WRITE) +- */ +- if (1) +-#endif //__VMWARE__ +- { +- switch (cmd->data_cmnd[0]) { +- case FORMAT_UNIT: +- case WRITE_6: +- case MODE_SELECT: +- case SEND_DIAGNOSTIC: +- case WRITE_10: +- case WRITE_BUFFER: +- case WRITE_LONG: +- case WRITE_SAME: +- case MODE_SELECT_10: +- case WRITE_12: +- case WRITE_VERIFY: +- case WRITE_VERIFY_12: +- case SEND_VOLUME_TAG: +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_WRITE); +- break; +- default: +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +- break; +- } +- } +-#else ++ } else { + switch (cmd->data_cmnd[0]) { + case FORMAT_UNIT: + case WRITE_6: +@@ -9635,20 +9144,15 @@ qla2x00_64bit_start_scsi(srb_t *sp) + __constant_cpu_to_le16(CF_WRITE); + break; + default: +-#ifdef __VMWARE__ +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +-#else + if (cmd->sc_data_direction == SCSI_DATA_WRITE) + cmd_pkt->control_flags |= + __constant_cpu_to_le16(CF_WRITE); + else + cmd_pkt->control_flags |= + __constant_cpu_to_le16(CF_READ); +-#endif //__VMWARE__ + break; + } +-#endif ++ + sp->dir = cmd_pkt->control_flags & + __constant_cpu_to_le16(CF_READ | CF_WRITE); + +@@ -9659,15 +9163,8 @@ qla2x00_64bit_start_scsi(srb_t *sp) + int nseg; + + cur_seg = (struct scatterlist *)cmd->request_buffer; +-#ifdef __VMWARE__ +- /* +- * The dma addresses in sg have already been set up. +- */ +- nseg = cmd->use_sg; +-#else + nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg, + scsi_to_pci_dma_dir(cmd->sc_data_direction)); +-#endif + end_seg = cur_seg + nseg; + + while (cur_seg < end_seg) { +@@ -9706,15 +9203,8 @@ qla2x00_64bit_start_scsi(srb_t *sp) + &nml_dma, &nml_len); + + /* One entry always consumed */ +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(sle_dma)); +- *cur_dsd++ = cpu_to_le32( +- pci_dma_hi32(sle_dma)); +-#ifdef PERF_MONITORING +- if ( pci_dma_hi32(sle_dma) != 0L) { +- qla2x00_stats.highmem_io++; +- } +-#endif ++ *cur_dsd++ = cpu_to_le32(LSD(sle_dma)); ++ *cur_dsd++ = cpu_to_le32(MSD(sle_dma)); + *cur_dsd++ = cpu_to_le32(sle_len); + tot_dsds++; + avail_dsds--; +@@ -9746,10 +9236,8 @@ qla2x00_64bit_start_scsi(srb_t *sp) + avail_dsds = 5; + } + +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(nml_dma)); +- *cur_dsd++ = cpu_to_le32( +- pci_dma_hi32(nml_dma)); ++ *cur_dsd++ = cpu_to_le32(LSD(nml_dma)); ++ *cur_dsd++ = cpu_to_le32(MSD(nml_dma)); + *cur_dsd++ = cpu_to_le32(nml_len); + tot_dsds++; + avail_dsds--; +@@ -9771,12 +9259,6 @@ qla2x00_64bit_start_scsi(srb_t *sp) + uint32_t nml_len; + uint32_t normalized; + +-#ifdef __VMWARE__ +- /* +- * We already have the machine address. +- */ +- req_dma = (unsigned long)cmd->request_buffer; +-#else + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,13) + struct page *page = virt_to_page(cmd->request_buffer); + unsigned long offset = ((unsigned long) +@@ -9796,7 +9278,6 @@ qla2x00_64bit_start_scsi(srb_t *sp) + scsi_to_pci_dma_dir( + cmd->sc_data_direction)); + #endif +-#endif + req_len = cmd->request_bufflen; + + sp->saved_dma_handle = req_dma; +@@ -9806,23 +9287,14 @@ qla2x00_64bit_start_scsi(srb_t *sp) + &nml_dma, &nml_len); + + /* One entry always consumed */ +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(req_dma)); +- *cur_dsd++ = cpu_to_le32( +- pci_dma_hi32(req_dma)); ++ *cur_dsd++ = cpu_to_le32(LSD(req_dma)); ++ *cur_dsd++ = cpu_to_le32(MSD(req_dma)); + *cur_dsd++ = cpu_to_le32(req_len); + tot_dsds++; + +-#ifdef PERF_MONITORING +- if ( pci_dma_hi32(req_dma) != 0L) { +- qla2x00_stats.highmem_io++; +- } +-#endif + if (normalized) { +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(nml_dma)); +- *cur_dsd++ = cpu_to_le32( +- pci_dma_hi32(nml_dma)); ++ *cur_dsd++ = cpu_to_le32(LSD(nml_dma)); ++ *cur_dsd++ = cpu_to_le32(MSD(nml_dma)); + *cur_dsd++ = cpu_to_le32(nml_len); + tot_dsds++; + } +@@ -9857,6 +9329,16 @@ qla2x00_64bit_start_scsi(srb_t *sp) + + ha->actthreads++; + ha->total_ios++; ++ ++ if (cmd_pkt->control_flags & __constant_cpu_to_le16(CF_WRITE) && ++ cmd->request_bufflen != 0) { ++ ha->total_output_cnt++; ++ } else if (cmd_pkt->control_flags & __constant_cpu_to_le16(CF_READ)) { ++ ha->total_input_cnt++; ++ } else { ++ ha->total_ctrl_cnt++; ++ } ++ + sp->ha = ha; + sp->lun_queue->out_cnt++; + sp->flags |= SRB_DMA_VALID; +@@ -9871,21 +9353,19 @@ qla2x00_64bit_start_scsi(srb_t *sp) + #endif + + #if defined(ISP2100) || defined(ISP2200) +- reg_flushed = CACHE_FLUSH(®->mailbox4); + WRT_REG_WORD(®->mailbox4, ha->req_ring_index); ++ CACHE_FLUSH(®->mailbox4); + #else +- reg_flushed = CACHE_FLUSH(®->req_q_in); + WRT_REG_WORD(®->req_q_in, ha->req_ring_index); ++ CACHE_FLUSH(®->req_q_in); + #endif + + spin_unlock_irqrestore(&ha->hardware_lock, flags); + return (0); + + mapped_queuing_error_64: +-#ifndef __VMWARE__ + pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer, + cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction)); +-#endif + + queuing_error_64: + spin_unlock_irqrestore(&ha->hardware_lock, flags); +@@ -9897,7 +9377,7 @@ queuing_error_64: + * The start SCSI is responsible for building request packets on + * request ring and modifying ISP input pointer. + * +-* The Qlogic firmware interface allows every queue slot to have a SCSI ++* The QLogic firmware interface allows every queue slot to have a SCSI + * command and up to 4 scatter/gather (SG) entries. If we need more + * than 4 SG entries, then continuation entries are used that can + * hold another 7 entries each. The start routine determines if there +@@ -9937,7 +9417,6 @@ qla2x00_32bit_start_scsi(srb_t *sp) + uint32_t timeout; + + device_reg_t *reg; +- uint16_t reg_flushed; + + ENTER(__func__); + +@@ -10023,7 +9502,11 @@ qla2x00_32bit_start_scsi(srb_t *sp) + cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address; + + /* Set target ID */ ++#if defined(EXTENDED_IDS) ++ cmd_pkt->target = cpu_to_le16(fclun->fcport->loop_id); ++#else + cmd_pkt->target = (uint8_t)fclun->fcport->loop_id; ++#endif + + /* Set LUN number*/ + #if VSA +@@ -10094,50 +9577,7 @@ qla2x00_32bit_start_scsi(srb_t *sp) + (uint32_t)SCSI_LUN_32(cmd));) + DEBUG5(qla2x00_dump_buffer((uint8_t *)cmd_pkt, + REQUEST_ENTRY_SIZE);) +- } +- else { +-#if defined(SANE_USAGE_OF_CMD_DIRECTION) +-#ifndef __VMWARE__ +- /* Set transfer direction */ +- if (cmd->sc_data_direction == SCSI_DATA_WRITE) { +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_WRITE); +- } else if (cmd->sc_data_direction == SCSI_DATA_READ) { +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +- } else +-#else +- /* Always set the data direction here, since the vmkernel +- * does not do it for us (otherwise it will hold a default +- * value of zero, which means SCSI_DATA_WRITE) +- */ +- if (1) +-#endif //__VMWARE__ +- { +- switch (cmd->data_cmnd[0]) { +- case FORMAT_UNIT: +- case WRITE_6: +- case MODE_SELECT: +- case SEND_DIAGNOSTIC: +- case WRITE_10: +- case WRITE_BUFFER: +- case WRITE_LONG: +- case WRITE_SAME: +- case MODE_SELECT_10: +- case WRITE_12: +- case WRITE_VERIFY: +- case WRITE_VERIFY_12: +- case SEND_VOLUME_TAG: +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_WRITE); +- break; +- default: +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +- break; +- } +- } +-#else ++ } else { + switch (cmd->data_cmnd[0]) { + case FORMAT_UNIT: + case WRITE_6: +@@ -10156,20 +9596,14 @@ qla2x00_32bit_start_scsi(srb_t *sp) + __constant_cpu_to_le16(CF_WRITE); + break; + default: +-#ifdef __VMWARE__ +- cmd_pkt->control_flags |= +- __constant_cpu_to_le16(CF_READ); +-#else + if (cmd->sc_data_direction == SCSI_DATA_WRITE) + cmd_pkt->control_flags |= + __constant_cpu_to_le16(CF_WRITE); + else + cmd_pkt->control_flags |= + __constant_cpu_to_le16(CF_READ); +-#endif //__VMWARE__ + break; + } +-#endif + sp->dir = cmd_pkt->control_flags & + __constant_cpu_to_le16(CF_READ | CF_WRITE); + +@@ -10180,21 +9614,11 @@ qla2x00_32bit_start_scsi(srb_t *sp) + int nseg; + + cur_seg = (struct scatterlist *)cmd->request_buffer; +-#ifdef __VMWARE__ +- /* +- * The dma addresses in sg have already been set up. +- */ +- nseg = cmd->use_sg; +-#else + nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg, + scsi_to_pci_dma_dir(cmd->sc_data_direction)); +-#endif + end_seg = cur_seg + nseg; + + while (cur_seg < end_seg) { +- dma_addr_t sle_dma; +- uint32_t sle_len; +- + /* Allocate additional continuation packets? */ + if (avail_dsds == 0) { + tot_iocbs++; +@@ -10216,13 +9640,10 @@ qla2x00_32bit_start_scsi(srb_t *sp) + avail_dsds = 7; + } + +- sle_dma = sg_dma_address(cur_seg); +- sle_len = sg_dma_len(cur_seg); +- + /* One entry always consumed */ +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(sle_dma)); +- *cur_dsd++ = cpu_to_le32(sle_len); ++ *cur_dsd++ = ++ cpu_to_le32(sg_dma_address(cur_seg)); ++ *cur_dsd++ = cpu_to_le32(sg_dma_len(cur_seg)); + tot_dsds++; + avail_dsds--; + +@@ -10235,14 +9656,7 @@ qla2x00_32bit_start_scsi(srb_t *sp) + * of request. + */ + dma_addr_t req_dma; +- uint32_t req_len; + +-#ifdef __VMWARE__ +- /* +- * We already have the machine address. +- */ +- req_dma = (unsigned long)cmd->request_buffer; +-#else + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,13) + struct page *page = virt_to_page(cmd->request_buffer); + unsigned long offset = ((unsigned long) +@@ -10262,15 +9676,11 @@ qla2x00_32bit_start_scsi(srb_t *sp) + scsi_to_pci_dma_dir( + cmd->sc_data_direction)); + #endif +-#endif +- req_len = cmd->request_bufflen; +- + sp->saved_dma_handle = req_dma; + + /* One entry always consumed */ +- *cur_dsd++ = cpu_to_le32( +- pci_dma_lo32(req_dma)); +- *cur_dsd++ = cpu_to_le32(req_len); ++ *cur_dsd++ = cpu_to_le32(req_dma); ++ *cur_dsd++ = cpu_to_le32(cmd->request_bufflen); + tot_dsds++; + } + } +@@ -10302,6 +9712,16 @@ qla2x00_32bit_start_scsi(srb_t *sp) + + ha->actthreads++; + ha->total_ios++; ++ ++ if (cmd_pkt->control_flags & __constant_cpu_to_le16(CF_WRITE) && ++ cmd->request_bufflen != 0) { ++ ha->total_output_cnt++; ++ } else if (cmd_pkt->control_flags & __constant_cpu_to_le16(CF_READ)) { ++ ha->total_input_cnt++; ++ } else { ++ ha->total_ctrl_cnt++; ++ } ++ + sp->ha = ha; + sp->lun_queue->out_cnt++; + sp->flags |= SRB_DMA_VALID; +@@ -10316,21 +9736,19 @@ qla2x00_32bit_start_scsi(srb_t *sp) + #endif + + #if defined(ISP2100) || defined(ISP2200) +- reg_flushed = CACHE_FLUSH(®->mailbox4); + WRT_REG_WORD(®->mailbox4, ha->req_ring_index); ++ CACHE_FLUSH(®->mailbox4); + #else +- reg_flushed = CACHE_FLUSH(®->req_q_in); + WRT_REG_WORD(®->req_q_in, ha->req_ring_index); ++ CACHE_FLUSH(®->req_q_in); + #endif + + spin_unlock_irqrestore(&ha->hardware_lock, flags); + return (0); + + mapped_queuing_error_32: +-#ifndef __VMWARE__ + pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer, + cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction)); +-#endif + + queuing_error_32: + spin_unlock_irqrestore(&ha->hardware_lock, flags); +@@ -10428,16 +9846,6 @@ qla2x00_ms_req_pkt(scsi_qla_host_t *ha, + break; + } + +-#ifdef __VMWARE__ +- /* The qla2x00_poll function is only called from here and +- * from qla2x00_req_pkt (in a similar way). Since +- * qla2x00_poll will immediately regrab the hardware lock, +- * we drop releasing it here and drop grabbing it in the +- * poll function. -- Thor +- */ +- udelay(20); +- qla2x00_poll(ha); +-#else + /* Release ring specific lock */ + spin_unlock(&ha->hardware_lock); + udelay(20); +@@ -10445,7 +9853,6 @@ qla2x00_ms_req_pkt(scsi_qla_host_t *ha, + /* Check for pending interrupts. */ + qla2x00_poll(ha); + spin_lock_irq(&ha->hardware_lock); +-#endif + } + + #if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) +@@ -10517,17 +9924,6 @@ qla2x00_req_pkt(scsi_qla_host_t *ha) + break; + } + +-#ifdef __VMWARE__ +- /* The qla2x00_poll function is only called from here and +- * from qla2x00_ms_req_pkt (in a similar way). Since +- * qla2x00_poll will immediately regrab the hardware lock, +- * we drop releasing it here and drop grabbing it in the +- * poll function. -- Thor +- */ +- udelay(2); +- if (!ha->marker_needed) +- qla2x00_poll(ha); +-#else + /* Release ring specific lock */ + spin_unlock(&ha->hardware_lock); + +@@ -10539,7 +9935,6 @@ qla2x00_req_pkt(scsi_qla_host_t *ha) + qla2x00_poll(ha); + + spin_lock_irq(&ha->hardware_lock); +-#endif + } + + #if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) +@@ -10582,8 +9977,10 @@ qla2x00_isp_cmd(scsi_qla_host_t *ha) + /* Set chip new ring index. */ + #if defined(ISP2100) || defined(ISP2200) + WRT_REG_WORD(®->mailbox4, ha->req_ring_index); ++ CACHE_FLUSH(®->mailbox4); + #else + WRT_REG_WORD(®->req_q_in, ha->req_ring_index); ++ CACHE_FLUSH(®->req_q_in); + #endif + + LEAVE(__func__); +@@ -10644,9 +10041,6 @@ qla2x00_process_good_request(struct scsi + { + srb_t *sp; + struct scsi_qla_host *vis_ha; +-#ifdef PERF_MONITORING +- os_lun_t *lq; +-#endif + + ENTER(__func__); + +@@ -10673,13 +10067,6 @@ qla2x00_process_good_request(struct scsi + CMD_COMPL_STATUS(sp->cmd) = 0L; + CMD_SCSI_STATUS(sp->cmd) = 0L; + +-#ifdef PERF_MONITORING +- /* update stats */ +- lq = sp->lun_queue; +- lq->resp_time += jiffies - sp->u_start; +- lq->act_time += jiffies - sp->r_start; +-#endif +- + /* Save ISP completion status */ + CMD_RESULT(sp->cmd) = DID_OK << 16; + sp->fo_retry_cnt = 0; +@@ -10791,7 +10178,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + #if defined(ISP2100) || defined(ISP2200) + uint16_t response_index = RESPONSE_ENTRY_CNT; + #endif +-#if defined(ISP2300) ++#if defined(ISP2300) + uint16_t temp2; + uint8_t mailbox_int; + uint16_t hccr; +@@ -10823,6 +10210,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + * get out of the RISC PAUSED state. + */ + WRT_REG_WORD(®->host_cmd, HC_RESET_RISC); ++ CACHE_FLUSH(®->host_cmd); + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); + } + #endif +@@ -10852,6 +10240,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + break; + case RESPONSE_QUEUE_INT: + WRT_REG_WORD(®->host_cmd, HC_CLR_RISC_INT); ++ CACHE_FLUSH(®->host_cmd); + goto response_queue_int; + break; + +@@ -10922,7 +10311,8 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) + QLA_MBX_REG_LOCK(ha); + */ +- if (temp1 == MBA_SCSI_COMPLETION) { ++ if (( temp1 == MBA_SCSI_COMPLETION) || ++ ((temp1 >= RIO_MBS_CMD_CMP_1_16) && (temp1 <= RIO_MBS_CMD_CMP_5_16))) { + #if defined(ISP2100) || defined(ISP2200) + mailbox[1] = RD_REG_WORD(®->mailbox1); + #else +@@ -10930,6 +10320,10 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + #endif + + mailbox[2] = RD_REG_WORD(®->mailbox2); ++ mailbox[3] = RD_REG_WORD(®->mailbox3); ++ mailbox[5] = RD_REG_WORD(®->mailbox5); ++ mailbox[6] = RD_REG_WORD(®->mailbox6); ++ mailbox[7] = RD_REG_WORD(®->mailbox7); + } else { + MBOX_TRACE(ha,BIT_4); + mailbox[0] = temp1; +@@ -10960,6 +10354,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + /* Release mailbox registers. */ + WRT_REG_WORD(®->semaphore, 0); + WRT_REG_WORD(®->host_cmd, HC_CLR_RISC_INT); ++ CACHE_FLUSH(®->host_cmd); + + DEBUG5(printk("%s(): mailbox interrupt mailbox[0] = %x.\n", + __func__, +@@ -10968,12 +10363,10 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + /* Handle asynchronous event */ + switch (temp1) { + +-#if defined(ISP2300) + case MBA_ZIO_UPDATE: + DEBUG5(printk("%s ZIO update completion\n", + __func__);) + break; +-#endif + case MBA_SCSI_COMPLETION: /* Completion */ + + DEBUG5(printk("%s(): mailbox response " +@@ -10984,12 +10377,73 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + break; + + /* Get outstanding command index */ +- index = (uint32_t) +- (mailbox[2] << 16 | mailbox[1]); ++ index = le32_to_cpu(((uint32_t)(mailbox[2] << 16)) | mailbox[1]); ++ + qla2x00_process_good_request(ha, + index, MBA_SCSI_COMPLETION); + break; + ++ case RIO_MBS_CMD_CMP_1_16: /* Mitigated Response completion */ ++ DEBUG5(printk("qla2100_isr: mailbox response completion\n")); ++ if (ha->flags.online) { ++ /* Get outstanding command index. */ ++ index = (uint32_t) (mailbox[1]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_1_16); ++ } ++ break; ++ case RIO_MBS_CMD_CMP_2_16: /* Mitigated Response completion */ ++ DEBUG5(printk("qla2100_isr: mailbox response completion\n")); ++ if (ha->flags.online) { ++ /* Get outstanding command index. */ ++ index = (uint32_t) (mailbox[1]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_2_16); ++ index = (uint32_t) (mailbox[2]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_2_16); ++ } ++ break; ++ case RIO_MBS_CMD_CMP_3_16: /* Mitigated Response completion */ ++ DEBUG5(printk("qla2100_isr: mailbox response completion\n")); ++ if (ha->flags.online) { ++ /* Get outstanding command index. */ ++ index = (uint32_t) (mailbox[1]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_3_16); ++ index = (uint32_t) (mailbox[2]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_3_16); ++ index = (uint32_t) (mailbox[3]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_3_16); ++ } ++ break; ++ case RIO_MBS_CMD_CMP_4_16: /* Mitigated Response completion */ ++ DEBUG5(printk("qla2100_isr: mailbox response completion\n")); ++ if (ha->flags.online) { ++ /* Get outstanding command index. */ ++ index = (uint32_t) (mailbox[1]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_4_16); ++ index = (uint32_t) (mailbox[2]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_4_16); ++ index = (uint32_t) (mailbox[3]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_4_16); ++ index = (uint32_t) (mailbox[6]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_4_16); ++ } ++ break; ++ case RIO_MBS_CMD_CMP_5_16: /* Mitigated Response completion */ ++ DEBUG5(printk("qla2100_isr: mailbox response completion\n")); ++ if (ha->flags.online) { ++ /* Get outstanding command index. */ ++ index = (uint32_t) (mailbox[1]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_5_16); ++ index = (uint32_t) (mailbox[2]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_5_16); ++ index = (uint32_t) (mailbox[3]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_5_16); ++ index = (uint32_t) (mailbox[6]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_5_16); ++ index = (uint32_t) (mailbox[7]); ++ qla2x00_process_good_request(ha, index, RIO_MBS_CMD_CMP_5_16); ++ } ++ break; ++ + case MBA_RESET: /* Reset */ + + DEBUG2(printk(KERN_INFO "scsi(%ld): %s: asynchronous " +@@ -11061,8 +10515,8 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + + /* Save LIP sequence. */ + ha->lip_seq = mailbox[1]; +- if (ha->loop_state != LOOP_DOWN) { +- ha->loop_state = LOOP_DOWN; ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { ++ atomic_set(&ha->loop_state, LOOP_DOWN); + atomic_set(&ha->loop_down_timer, + LOOP_DOWN_TIME); + qla2x00_mark_all_devices_lost(ha); +@@ -11125,13 +10579,16 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + "MBA_LOOP_DOWN.\n", + ha->host_no, __func__);) + +- if (ha->loop_state != LOOP_DOWN) { +- ha->loop_state = LOOP_DOWN; ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { ++ ha->device_flags |= DFLG_NO_CABLE; ++ atomic_set(&ha->loop_state, LOOP_DOWN); + atomic_set(&ha->loop_down_timer, +- LOOP_DOWN_TIME); ++ LOOP_DOWN_TIME); + qla2x00_mark_all_devices_lost(ha); + } + ++ clear_bit(FDMI_REGISTER_NEEDED, &ha->fdmi_flags); ++ + ha->flags.management_server_logged_in = 0; + ha->current_speed = 0; /* reset value */ + +@@ -11157,10 +10614,10 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags); + set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags); + +- if( ha->loop_state != LOOP_DOWN ) { +- atomic_set(&ha->loop_down_timer, +- LOOP_DOWN_TIME); +- ha->loop_state = LOOP_DOWN; ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { ++ atomic_set(&ha->loop_state, LOOP_DOWN); ++ atomic_set(&ha->loop_down_timer, ++ LOOP_DOWN_TIME); + qla2x00_mark_all_devices_lost(ha); + } + ha->operating_mode = LOOP; +@@ -11202,12 +10659,12 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags); + #endif + +- if (ha->loop_state != LOOP_DOWN) { ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { + if (!atomic_read(&ha->loop_down_timer)) + atomic_set(&ha->loop_down_timer, +- LOOP_DOWN_TIME); ++ LOOP_DOWN_TIME); + +- ha->loop_state = LOOP_DOWN; ++ atomic_set(&ha->loop_state, LOOP_DOWN); + qla2x00_mark_all_devices_lost(ha); + } + break; +@@ -11224,9 +10681,9 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + "MBA_UPDATE_CONFIG.\n", + ha->host_no, __func__);) + +- if (ha->loop_state != LOOP_DOWN) { ++ if (atomic_read(&ha->loop_state) != LOOP_DOWN) { + /* dg - 03/30 */ +- ha->loop_state = LOOP_DOWN; ++ atomic_set(&ha->loop_state, LOOP_DOWN); + if (!atomic_read(&ha->loop_down_timer)) + atomic_set(&ha->loop_down_timer, + LOOP_DOWN_TIME); +@@ -11247,7 +10704,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + * to come in. + */ + +- if (ha->loop_state == LOOP_DOWN) { ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN) { + printk(KERN_INFO "scsi(%ld): Port database " + "changed.\n", + ha->host_no); +@@ -11256,6 +10713,8 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + "MBA_PORT_UPDATE.\n", + ha->host_no, __func__);) + ++ set_bit(FDMI_REGISTER_NEEDED, &ha->fdmi_flags); ++ + /* dg - 06/19/01 + * + * Mark all devices as missing so we will +@@ -11264,7 +10723,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + ha->flags.rscn_queue_overflow = 1; + + atomic_set(&ha->loop_down_timer, 0); +- ha->loop_state = LOOP_UP; ++ atomic_set(&ha->loop_state, LOOP_UP); + qla2x00_mark_all_devices_lost(ha); + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags); + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags); +@@ -11273,7 +10732,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + * + * ha->flags.loop_resync_needed = TRUE; + */ +- ha->loop_state = LOOP_UPDATE; ++ atomic_set(&ha->loop_state, LOOP_UPDATE); + if (ha->ioctl->flags & + IOCTL_AEN_TRACKING_ENABLE) { + /* Update AEN queue. */ +@@ -11295,10 +10754,11 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + ha->host_no, + mailbox[1], + mailbox[2]);) +- +- DEBUG3(printk("scsi%ld %s: asynchronous " +- "MBA_RSCR_UPDATE.\n", +- ha->host_no, __func__);) ++ printk(KERN_INFO "scsi(%ld): RSCN database changed " ++ "-0x%x,0x%x.\n", ++ ha->host_no, ++ mailbox[1], ++ mailbox[2]); + + rscn_queue_index = ha->rscn_in_ptr + 1; + if (rscn_queue_index == MAX_RSCN_COUNT) +@@ -11327,13 +10787,12 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + atomic_set(&ha->loop_down_timer, 0); + ha->flags.management_server_logged_in = 0; + +- ha->loop_state = LOOP_UPDATE; ++ atomic_set(&ha->loop_state, LOOP_UPDATE); + if (ha->ioctl->flags & +- IOCTL_AEN_TRACKING_ENABLE) { ++ IOCTL_AEN_TRACKING_ENABLE) { + /* Update AEN queue. */ + qla2x00_enqueue_aen(ha, +- MBA_RSCN_UPDATE, +- &mailbox[0]); ++ MBA_RSCN_UPDATE, &mailbox[0]); + } + break; + +@@ -11345,6 +10804,7 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + + break; + ++ + default: + + if (temp1 >= MBA_ASYNC_EVENT) +@@ -11366,14 +10826,13 @@ qla2x00_isr(scsi_qla_host_t *ha, uint16_ + "ERROR.\n", + __func__);) + } +- DEBUG5(printk("%s(): Returning mailbox data\n", ++ DEBUG3(printk("%s(): Returning mailbox data\n", + __func__);) + break; + } + } else { + WRT_REG_WORD(®->host_cmd, HC_CLR_RISC_INT); + } +- + #if defined(ISP2300) + response_queue_int: + #endif +@@ -11425,6 +10884,42 @@ qla2x00_rst_aen(scsi_qla_host_t *ha) + + LEAVE(__func__); + } ++ ++static void qla2x00_handle_RIO_type2_iocb(struct scsi_qla_host * ha, response_t *pkt) ++{ ++ struct rio_iocb_type2_entry *rio; ++ int i; ++ ENTER("qla2x00_handle_RIO_type2_iocb"); ++ ++ rio = (struct rio_iocb_type2_entry *) pkt; ++ ++ if (rio->handle_count > 29) { ++ printk("Invalid packet 22 count: %i \n", rio->handle_count); ++ } ++ ++ for (i=0; i < rio->handle_count; i++) ++ qla2x00_process_good_request(ha, rio->handle[i], 0x22); ++ LEAVE("qla2x00_handle_RIO_type2_iocb"); ++} ++ ++static void qla2x00_handle_RIO_type1_iocb(struct scsi_qla_host * ha, response_t *pkt) ++{ ++ struct rio_iocb_type1_entry *rio; ++ int i; ++ ENTER("qla2x00_handle_RIO_type1_iocb"); ++ ++ rio = (struct rio_iocb_type1_entry *) pkt; ++ ++ if (rio->handle_count > 14) { ++ printk("Invalid packet 21 count! %i\n", rio->handle_count); ++ } ++ ++ for (i=0; i < rio->handle_count; i++) ++ qla2x00_process_good_request(ha, rio->handle[i], 0x22); ++ LEAVE("qla2x00_handle_RIO_type1_iocb"); ++ ++} ++ + /* + * qla2x00_process_response_queue + * Processes Response Queue. +@@ -11443,10 +10938,9 @@ qla2x00_process_response_queue(scsi_qla_ + while (ha->response_ring_ptr->signature != RESPONSE_PROCESSED ) { + pkt = ( sts_entry_t *) ha->response_ring_ptr; + +- DEBUG5(printk("%s(): ha->rsp_ring_index=%ld index=%ld.\n", ++ DEBUG5(printk("%s(): ha->rsp_ring_index=%ld.\n", + __func__, +- (u_long)ha->rsp_ring_index, +- (u_long)index);) ++ (u_long)ha->rsp_ring_index)); + DEBUG5(printk("%s(): response packet data:", __func__);) + DEBUG5(qla2x00_dump_buffer((uint8_t *)pkt, + RESPONSE_ENTRY_SIZE);) +@@ -11473,6 +10967,7 @@ qla2x00_process_response_queue(scsi_qla_ + __func__);) + qla2x00_error_entry(ha, pkt); + ((response_t *)pkt)->signature = RESPONSE_PROCESSED; ++ wmb(); + continue; + } + +@@ -11504,7 +10999,7 @@ qla2x00_process_response_queue(scsi_qla_ + + case ET_IP_RECEIVE: + /* Handle IP receive packet */ +- qla2x00_ip_receive(ha, pkt); ++ qla2x00_ip_receive(ha, (request_t *)pkt); + break; + + case ET_MAILBOX_COMMAND: +@@ -11514,6 +11009,12 @@ qla2x00_process_response_queue(scsi_qla_ + break; + } + #endif /* FC_IP_SUPPORT */ ++ case RIO_IOCB_TYPE1: ++ qla2x00_handle_RIO_type1_iocb(ha, (response_t*)pkt); ++ break; ++ case RIO_IOCB_TYPE2: ++ qla2x00_handle_RIO_type2_iocb(ha, (response_t*)pkt); ++ break; + + default: + /* Type Not Supported. */ +@@ -11527,13 +11028,16 @@ qla2x00_process_response_queue(scsi_qla_ + break; + } + ((response_t *)pkt)->signature = RESPONSE_PROCESSED; ++ wmb(); + } + + /* Adjust ring index -- once, instead of for all entries. */ + #if defined(ISP2100) || defined(ISP2200) + WRT_REG_WORD(®->mailbox5, ha->rsp_ring_index); ++ CACHE_FLUSH(®->mailbox5); + #else + WRT_REG_WORD(®->rsp_q_out, ha->rsp_ring_index); ++ CACHE_FLUSH(®->rsp_q_out); + #endif + + LEAVE(__func__); +@@ -11587,6 +11091,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha + uint8_t lscsi_status; + fc_port_t *fcport; + scsi_qla_host_t *vis_ha; ++ uint16_t rsp_info_len; + + + ENTER(__func__); +@@ -11664,20 +11169,13 @@ qla2x00_status_entry(scsi_qla_host_t *ha + tq = sp->tgt_queue; + lq = sp->lun_queue; + +-#ifdef PERF_MONITORING +- /* update stats */ +- lq->resp_time += jiffies - sp->u_start; +- lq->act_time += jiffies - sp->r_start; +-#endif +- + /* + * If loop is in transient state Report DID_BUS_BUSY + */ +- if (!(sp->flags & SRB_IOCTL) && +- (atomic_read(&ha->loop_down_timer) || +- ha->loop_state != LOOP_READY) && +- (comp_status != CS_COMPLETE || +- scsi_status != 0)) { ++ if (!(sp->flags & (SRB_IOCTL | SRB_TAPE | SRB_FDMI_CMD)) && ++ (atomic_read(&ha->loop_down_timer) || ++ atomic_read(&ha->loop_state) != LOOP_READY) && ++ (comp_status != CS_COMPLETE || scsi_status != 0)) { + + DEBUG2(printk(KERN_INFO "scsi(%ld:%d:%d:%d): Loop Not Ready - pid=%lx.\n", + ha->host_no, +@@ -11693,6 +11191,24 @@ qla2x00_status_entry(scsi_qla_host_t *ha + return; + } + ++ /* Check for any FCP transport errors. */ ++ if (scsi_status & SS_RESPONSE_INFO_LEN_VALID) { ++ rsp_info_len = le16_to_cpu(pkt->rsp_info_len); ++ if (rsp_info_len > 3 && pkt->rsp_info[3]) { ++ DEBUG2(printk("scsi(%ld:%d:%d:%d) FCP I/O protocol " ++ "failure (%x/%02x%02x%02x%02x%02x%02x%02x%02x)..." ++ "retrying command\n", ha->host_no, b, t, l, ++ rsp_info_len, pkt->rsp_info[0], pkt->rsp_info[1], ++ pkt->rsp_info[2], pkt->rsp_info[3], ++ pkt->rsp_info[4], pkt->rsp_info[5], ++ pkt->rsp_info[6], pkt->rsp_info[7])); ++ ++ cp->result = DID_BUS_BUSY << 16; ++ add_to_done_queue(ha, sp); ++ return; ++ } ++ } ++ + /* + * Based on Host and scsi status generate status code for Linux + */ +@@ -11705,7 +11221,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha + if (scsi_status == 0) { + CMD_RESULT(cp) = DID_OK << 16; + +-#ifndef __VMWARE__ + /* + * Special case consideration On an Inquiry + * command (0x12) for Lun 0, device responds +@@ -11716,7 +11231,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha + */ + /* Perform any post command processing */ + qla2x00_filter_command(ha, sp); +-#endif + } else { /* Check for non zero scsi status */ + if (lscsi_status == SS_BUSY_CONDITION) { + CMD_RESULT(cp) = DID_BUS_BUSY << 16 | +@@ -11761,9 +11275,10 @@ qla2x00_status_entry(scsi_qla_host_t *ha + if (sp->request_sense_length != 0) + ha->status_srb = sp; + +- if (!(sp->flags & SRB_IOCTL) && +- qla2x00_check_sense(cp, lq) == +- QL_STATUS_SUCCESS) { ++ if (!(sp->flags & (SRB_IOCTL | ++ SRB_TAPE | SRB_FDMI_CMD)) && ++ qla2x00_check_sense(cp, lq) == ++ QL_STATUS_SUCCESS) { + /* + * Throw away status_cont + * if any +@@ -11772,7 +11287,8 @@ qla2x00_status_entry(scsi_qla_host_t *ha + add_to_scsi_retry_queue(ha, sp); + return; + } +-#if defined(QL_DEBUG_LEVEL_5) ++#if defined(QL_DEBUG_LEVEL_2) ++ if (sense_sz) { + printk("%s(): Check condition Sense " + "data, scsi(%ld:%d:%d:%d) " + "cmd=%p pid=%ld\n", +@@ -11780,10 +11296,10 @@ qla2x00_status_entry(scsi_qla_host_t *ha + ha->host_no, + b, t, l, + cp, cp->serial_number); +- if (sense_sz) + qla2x00_dump_buffer( + cp->sense_buffer, + CMD_ACTUAL_SNSLEN(cp)); ++ } + #endif + } + } +@@ -11848,21 +11364,23 @@ qla2x00_status_entry(scsi_qla_host_t *ha + if (sp->request_sense_length != 0) + ha->status_srb = sp; + +- if (!(sp->flags & SRB_IOCTL) && +- (qla2x00_check_sense(cp, lq) == +- QL_STATUS_SUCCESS)) { ++ if (!(sp->flags & (SRB_IOCTL | ++ SRB_TAPE | SRB_FDMI_CMD)) && ++ (qla2x00_check_sense(cp, lq) == ++ QL_STATUS_SUCCESS)) { + ha->status_srb = NULL; + add_to_scsi_retry_queue(ha,sp); + return; + } +-#if defined(QL_DEBUG_LEVEL_5) ++#if defined(QL_DEBUG_LEVEL_2) ++ if (sense_sz) { + printk("scsi: Check condition Sense " + "data, scsi(%ld:%d:%d:%d)\n", + ha->host_no, b, t, l); +- if (sense_sz) + qla2x00_dump_buffer( + cp->sense_buffer, + CMD_ACTUAL_SNSLEN(cp)); ++ } + #endif + } + } else { +@@ -11916,7 +11434,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha + /* Everybody online, looking good... */ + CMD_RESULT(cp) = DID_OK << 16; + +-#ifndef __VMWARE__ + /* + * Special case consideration On an Inquiry + * command (0x12) for Lun 0, device responds +@@ -11927,7 +11444,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha + */ + /* Perform any post command processing */ + qla2x00_filter_command(ha, sp); +-#endif + } + break; + +@@ -11950,18 +11466,32 @@ qla2x00_status_entry(scsi_qla_host_t *ha + sp->cmd->serial_number, + comp_status, + atomic_read(&fcport->state));) +- if ((sp->flags & SRB_IOCTL) || +- (atomic_read(&fcport->state) == FC_DEVICE_DEAD)) { +- CMD_RESULT(cp) = DID_NO_CONNECT << 16; +- add_to_done_queue(ha, sp); +- } else { ++ DEBUG2(printk( "scsi(%ld:%2d:%2d): status_entry: " ++ "Port Down pid=%ld, compl " ++ "status=0x%x, port state=0x%x\n", ++ ha->host_no, ++ t, l, ++ sp->cmd->serial_number, ++ comp_status, ++ atomic_read(&fcport->state));) ++ ++ if ((sp->flags & (SRB_IOCTL | SRB_TAPE | ++ SRB_FDMI_CMD)) || (atomic_read(&fcport->state) == ++ FC_DEVICE_DEAD)) { ++ CMD_RESULT(cp) = DID_NO_CONNECT << 16; ++ add_to_done_queue(ha, sp); ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN) ++ sp->err_id = SRB_ERR_LOOP; ++ else ++ sp->err_id = SRB_ERR_PORT; ++ } else { + qla2x00_extend_timeout(cp, + EXTEND_CMD_TIMEOUT); + add_to_retry_queue(ha, sp); + } + + if (atomic_read(&fcport->state) == FC_ONLINE) { +- qla2x00_mark_device_lost(ha, fcport); ++ qla2x00_mark_device_lost(ha, fcport, 1); + } + + return; +@@ -11975,7 +11505,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha + comp_status, + scsi_status);) + +- if (sp->flags & SRB_IOCTL) { ++ if (sp->flags & (SRB_IOCTL | SRB_TAPE | SRB_FDMI_CMD)) { + CMD_RESULT(cp) = DID_RESET << 16; + } + else { +@@ -12025,17 +11555,15 @@ qla2x00_status_entry(scsi_qla_host_t *ha + "public device loop id (%x), " + "attempt new recovery\n", + le16_to_cpu(pkt->status_flags), +- ha->fc_db[t].loop_id);) +- ha->fc_db[t].flag |= DEV_RELOGIN; +- fcport->login_retry = ha->login_retry_count; +- set_bit(RELOGIN_NEEDED, &ha->dpc_flags); ++ fcport->loop_id);) ++ qla2x00_mark_device_lost(ha, fcport, 1); + } + break; + + case CS_QUEUE_FULL: + + +- printk(KERN_INFO ++ DEBUG2(printk(KERN_INFO + "scsi(%ld:%d:%d): QUEUE FULL status detected " + "0x%x-0x%x, pid=%ld.\n", + ha->host_no, +@@ -12043,7 +11571,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha + l, + comp_status, + scsi_status, +- sp->cmd->serial_number); ++ sp->cmd->serial_number)); + /* + * SCSI Mid-Layer handles device queue full + */ +@@ -12083,10 +11611,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha + + break; + } /* end of switch comp_status */ +- + /* Place command on done queue. */ +- if (ha->status_srb == NULL) ++ if (ha->status_srb == NULL){ ++ + add_to_done_queue(ha, sp); ++ } + + LEAVE(__func__); + } +@@ -12164,9 +11693,6 @@ STATIC void + qla2x00_error_entry(scsi_qla_host_t *ha, sts_entry_t *pkt) + { + srb_t *sp; +-#ifdef PERF_MONITORING +- os_lun_t *lq; +-#endif + + ENTER(__func__); + +@@ -12198,12 +11724,6 @@ qla2x00_error_entry(scsi_qla_host_t *ha, + ha->actthreads--; + sp->lun_queue->out_cnt--; + ha->iocb_cnt -= sp->iocb_cnt; +-#ifdef PERF_MONITORING +- /* update stats */ +- lq = sp->lun_queue; +- lq->resp_time += jiffies - sp->u_start; +- lq->act_time += jiffies - sp->r_start; +-#endif + + sp->flags |= SRB_ISP_COMPLETED; + +@@ -12234,6 +11754,7 @@ qla2x00_error_entry(scsi_qla_host_t *ha, + LEAVE(__func__); + } + ++ + STATIC void + qla2x00_ms_entry(scsi_qla_host_t *ha, ms_iocb_entry_t *pkt) + { +@@ -12302,6 +11823,9 @@ qla2x00_restart_queues(scsi_qla_host_t * + spin_lock_irqsave(&ha->list_lock,flags); + list_for_each_safe(list, temp, &ha->pending_queue) { + sp = list_entry(list, srb_t, list); ++ ++ if ((sp->flags & SRB_TAPE)) ++ continue; + /* + * When time expire return request back to OS as BUSY + */ +@@ -12372,11 +11896,7 @@ qla2x00_restart_queues(scsi_qla_host_t * + } + + if (!list_empty(&ha->done_queue)) +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + + LEAVE(__func__); + } +@@ -12424,6 +11944,32 @@ qla2x00_abort_queues(scsi_qla_host_t *ha + LEAVE(__func__); + } + ++void ++qla2x00_ioctl_error_recovery(scsi_qla_host_t *ha) ++{ ++ int return_status; ++ unsigned long flags; ++ ++ printk(KERN_INFO ++ "%s(%ld) issuing device reset\n", __func__,ha->host_no); ++ if (!ha->ioctl_err_cmd) { ++ printk("%s(%ld) should not occur\n", __func__, ha->host_no); ++ return; ++ } ++ ++ spin_lock_irqsave(&io_request_lock, flags); ++ return_status = qla2xxx_eh_device_reset(ha->ioctl_err_cmd); ++ if (return_status != SUCCESS){ ++ printk("%s(%ld) elevation to host_reset\n", ++ __func__, ha->host_no); ++ return_status = qla2xxx_eh_host_reset(ha->ioctl_err_cmd); ++ printk("%s(%ld) return_status=%x\n", __func__, ha->host_no, ++ return_status); ++ } ++ ha->ioctl_err_cmd = NULL ; ++ spin_unlock_irqrestore(&io_request_lock, flags); ++} ++ + + /* + * qla2x00_reset_lun_fo_counts +@@ -12491,12 +12037,84 @@ qla2x00_failover_cleanup(srb_t *sp) + + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16; + CMD_HANDLE(sp->cmd) = (unsigned char *) NULL; ++ if( (sp->flags & SRB_GOT_SENSE ) ) { ++ sp->flags &= ~SRB_GOT_SENSE; ++ sp->cmd->sense_buffer[0] = 0; ++ } + + /* turn-off all failover flags */ + sp->flags = sp->flags & ~(SRB_RETRY|SRB_FAILOVER|SRB_FO_CANCEL); + } + + ++void qla2x00_find_all_active_ports(srb_t *sp) ++{ ++ scsi_qla_host_t *ha = qla2x00_hostlist; ++ fc_port_t *fcport; ++ fc_lun_t *fclun; ++ fc_lun_t *orig_fclun; ++ ++ DEBUG2(printk(KERN_INFO "%s: Scanning for active ports... %d\n", ++ __func__, sp->lun_queue->fclun->lun);) ++ orig_fclun = sp->lun_queue->fclun; ++ for ( ; (ha != NULL); ha=ha->next) { ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_TARGET ) ++ continue; ++ if ( (fcport->flags & (FC_EVA_DEVICE|FC_MSA_DEVICE)) ) { ++ list_for_each_entry(fclun, &fcport->fcluns, list) { ++ if (fclun->flags & FC_VISIBLE_LUN) ++ continue; ++ if (orig_fclun->lun != fclun->lun) ++ continue; ++ qla2x00_test_active_lun(fcport,fclun); ++ } ++ } ++ if ( (fcport->flags & FC_MSA_DEVICE) ) ++ qla2x00_test_active_port(fcport); ++ } ++ } ++ DEBUG2(printk(KERN_INFO "%s: Scanning ports...Done\n", ++ __func__);) ++} ++ ++ ++int qla2x00_suspend_failover_targets(scsi_qla_host_t *ha) ++{ ++ unsigned long flags; ++ struct list_head *list, *temp; ++ srb_t *sp; ++ int count; ++ os_tgt_t *tq; ++ ++ spin_lock_irqsave(&ha->list_lock, flags); ++ count = ha->failover_cnt; ++ list_for_each_safe(list, temp, &ha->failover_queue) { ++ sp = list_entry(ha->failover_queue.next, srb_t, list); ++ tq = sp->tgt_queue; ++ if( !(test_bit(TGT_SUSPENDED, &tq->q_flags)) ) ++ set_bit(TGT_SUSPENDED, &tq->q_flags); ++ } ++ spin_unlock_irqrestore(&ha->list_lock,flags); ++ ++ return count; ++} ++ ++srb_t * ++qla2x00_failover_next_request(scsi_qla_host_t *ha) ++{ ++ unsigned long flags; ++ srb_t *sp = NULL; ++ ++ spin_lock_irqsave(&ha->list_lock, flags); ++ if (!list_empty(&ha->failover_queue)) { ++ sp = list_entry(ha->failover_queue.next, srb_t, list); ++ __del_from_failover_queue(ha, sp); ++ } ++ spin_unlock_irqrestore(&ha->list_lock, flags); ++ return( sp ); ++} ++ + /* + * qla2x00_process_failover + * Process any command on the failover queue. +@@ -12515,75 +12133,106 @@ qla2x00_process_failover(scsi_qla_host_t + os_lun_t *lq; + srb_t *sp; + fc_port_t *fcport; +- struct list_head *list, *temp; +- unsigned long flags; + uint32_t t, l; +- scsi_qla_host_t *vis_ha = NULL; ++ scsi_qla_host_t *vis_ha = ha; ++ int count, i; + +- DEBUG(printk("%s(): Processing failover for hba %ld\n", ++ DEBUG2(printk(KERN_INFO "%s: hba %ld active=%ld, retry=%d, " ++ "done=%ld, failover=%d, scsi retry=%d commands.\n", + __func__, +- ha->host_no);) ++ ha->host_no, ++ ha->actthreads, ++ ha->retry_q_cnt, ++ ha->done_q_cnt, ++ ha->failover_cnt, ++ ha->scsi_retry_q_cnt);) + +- /* +- * Process all the commands in the failover queue. Attempt to failover +- * then either complete the command as is or requeue for retry. +- */ + +- /* Prevent or allow acceptance of new I/O requests. */ +- spin_lock_irqsave(&ha->list_lock, flags); ++ /* Prevent acceptance of new I/O requests for failover target. */ ++ count = qla2x00_suspend_failover_targets(ha); + + /* +- * Get first entry to find our visible adapter. We could never get +- * here if the list is empty ++ * Process all the commands in the failover queue. Attempt to failover ++ * then either complete the command as is or requeue for retry. + */ +- list = ha->failover_queue.next; +- sp = list_entry(list, srb_t, list); +- vis_ha = (scsi_qla_host_t *) sp->cmd->host->hostdata; +- list_for_each_safe(list, temp, &ha->failover_queue) { +- sp = list_entry(list, srb_t, list); +- ++ for( i = 0; i < count ; i++ ) { ++ sp = qla2x00_failover_next_request(ha); ++ if( sp == NULL ) ++ break; ++ qla2x00_extend_timeout(sp->cmd, 360); ++ if( i == 0 ) { ++ vis_ha = (scsi_qla_host_t *) sp->cmd->host->hostdata; ++ } + tq = sp->tgt_queue; + lq = sp->lun_queue; + fcport = lq->fclun->fcport; +- +- /* Remove srb from failover queue. */ +- __del_from_failover_queue(ha, sp); +- +- DEBUG3(printk("%s(): pid %ld retrycnt=%d\n", ++ DEBUG(printk("%s(): pid %ld retrycnt=%d," ++ "fcport =%p, state=0x%x, \nloop state=0x%x" ++ " fclun=%p, lq fclun=%p, lq=%p, lun=%d\n", + __func__, + sp->cmd->serial_number, +- sp->cmd->retries);) +- ++ sp->cmd->retries, ++ fcport, ++ atomic_read(&fcport->state), ++ atomic_read(&ha->loop_state), ++ sp->fclun, lq->fclun, lq, lq->fclun->lun);) ++ if ( sp->err_id == SRB_ERR_DEVICE && ++ sp->fclun == lq->fclun && ++ atomic_read(&fcport->state) == FC_ONLINE) { ++ if( !(qla2x00_test_active_lun(fcport, sp->fclun)) ) { ++ DEBUG2(printk("scsi(%ld) %s Detected INACTIVE Port 0x%02x \n", ++ ha->host_no,__func__,fcport->loop_id);) ++ sp->err_id = SRB_ERR_OTHER; ++ sp->cmd->sense_buffer[2] = 0; ++ CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16; ++ } ++ } ++ if( (sp->flags & SRB_GOT_SENSE ) ) { ++ sp->flags &= ~SRB_GOT_SENSE; ++ sp->cmd->sense_buffer[0] = 0; ++ CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16; ++ CMD_HANDLE(sp->cmd) = (unsigned char *) NULL; ++ } + /*** Select an alternate path ***/ + /* + * If the path has already been change by a previous request + * sp->fclun != lq->fclun + */ + if (sp->fclun != lq->fclun || +- atomic_read(&fcport->state) != FC_DEVICE_DEAD) { ++ ( sp->err_id != SRB_ERR_OTHER && ++ atomic_read(&fcport->ha->loop_state) ++ != LOOP_DEAD && ++ atomic_read(&fcport->state) != FC_DEVICE_DEAD) ) { + + qla2x00_failover_cleanup(sp); + } else if (qla2x00_cfg_failover(ha, lq->fclun, + tq, sp) == NULL) { + /* +- * We ran out of paths, so just post the status which +- * is already set in the cmd. ++ * We ran out of paths, so just retry the status which ++ * is already set in the cmd. We want to serialize the ++ * failovers, so we make them go thur visible HBA. + */ + printk(KERN_INFO +- "%s(): Ran out of paths - pid %ld\n", ++ "%s(): Ran out of paths - pid %ld - retrying\n", + __func__, + sp->cmd->serial_number); + } else { + qla2x00_failover_cleanup(sp); + + } +- __add_to_done_queue(ha, sp); +- } /* list_for_each_safe */ +- spin_unlock_irqrestore(&ha->list_lock,flags); ++ add_to_done_queue(ha, sp); ++ } + + for (t = 0; t < vis_ha->max_targets; t++) { + if ((tq = vis_ha->otgt[t]) == NULL) + continue; ++ if( test_and_clear_bit(TGT_SUSPENDED, &tq->q_flags) ) { ++ /* EMPTY */ ++ DEBUG2(printk("%s(): remove suspend for " ++ "target %d\n", ++ __func__, ++ t);) ++ } + for (l = 0; l < vis_ha->max_luns; l++) { + if ((lq = (os_lun_t *) tq->olun[l]) == NULL) + continue; +@@ -12596,12 +12245,11 @@ qla2x00_process_failover(scsi_qla_host_t + lq->fclun->lun);) + } + } +- } ++ } + +- //qla2x00_restart_queues(ha,TRUE); + qla2x00_restart_queues(ha, FALSE); + +- DEBUG(printk("%s() - done", __func__);) ++ DEBUG2(printk("%s() - done\n", __func__);) + } + + /* +@@ -12623,7 +12271,7 @@ qla2x00_loop_resync(scsi_qla_host_t *ha) + + DEBUG(printk("%s(): entered\n", __func__);) + +- ha->loop_state = LOOP_UPDATE; ++ atomic_set(&ha->loop_state, LOOP_UPDATE); + qla2x00_stats.loop_resync++; + ha->total_loop_resync++; + clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags); +@@ -12631,7 +12279,7 @@ qla2x00_loop_resync(scsi_qla_host_t *ha) + if (!(status = qla2x00_fw_ready(ha))) { + do { + /* v2.19.05b6 */ +- ha->loop_state = LOOP_UPDATE; ++ atomic_set(&ha->loop_state, LOOP_UPDATE); + + /* + * Issue marker command only when we are going +@@ -12679,12 +12327,13 @@ qla2x00_loop_resync(scsi_qla_host_t *ha) + STATIC uint16_t + qla2x00_debounce_register(volatile uint16_t *addr) + { +- volatile uint16_t ret; +- volatile uint16_t ret2; ++ uint16_t ret; ++ uint16_t ret2; + + do { + ret = RD_REG_WORD(addr); + barrier(); ++ cpu_relax(); + ret2 = RD_REG_WORD(addr); + } while (ret != ret2); + +@@ -12719,7 +12368,7 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + /* Pause RISC. */ + WRT_REG_WORD(®->host_cmd, HC_PAUSE_RISC); + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if (check_all_device_ids(ha)) { + UDELAY(10); + } else { + for (cnt = 0; cnt < 30000; cnt++) { +@@ -12750,7 +12399,20 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + WRT_REG_WORD(®->ctrl_status, 0x10); + + /* Reset frame buffer FIFOs. */ ++#if defined(ISP2200) + WRT_REG_WORD(®->fb_cmd, 0xa000); ++#else ++ WRT_REG_WORD(®->fb_cmd, 0x00fc); ++ ++ /* Read back fb_cmd until zero or 3 seconds max */ ++ for (cnt = 0; cnt < 3000; cnt++) { ++ if ((RD_REG_WORD(®->fb_cmd) & 0xff) == 0) ++ break; ++ udelay(100); ++ } ++ ++ ++#endif + + /* Select RISC module registers. */ + WRT_REG_WORD(®->ctrl_status, 0); +@@ -12764,7 +12426,7 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET); + + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if (check_all_device_ids(ha)) { + UDELAY(10); + } else { + /* Wait for RISC to recover from reset. */ +@@ -12789,7 +12451,7 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + WRT_REG_WORD(®->host_cmd, HC_RELEASE_RISC); + + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if (check_all_device_ids(ha)) { + UDELAY(10); + } else { + for (cnt = 0; cnt < 30000; cnt++) { +@@ -12846,12 +12508,8 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + + /* Reset ISP chip. */ + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET); +- +- /* +- * Delay after reset, for chip to recover. Otherwise causes system +- * PANIC +- */ +- mdelay(2); ++ /* Delay after reset, for chip to recover. */ ++ udelay(20); + + for (cnt = 30000; cnt; cnt--) { + if (!(RD_REG_WORD(®->ctrl_status) & CSR_ISP_SOFT_RESET)) +@@ -12885,7 +12543,7 @@ qla2x00_reset_chip(scsi_qla_host_t *ha) + * This routine will wait for fabric devices for + * the reset delay. + */ +-static void qla2x00_check_fabric_devices(scsi_qla_host_t *ha) ++void qla2x00_check_fabric_devices(scsi_qla_host_t *ha) + { + uint16_t fw_state; + +@@ -13001,22 +12659,6 @@ qla2x00_display_fc_names(scsi_qla_host_t + tgt, + tq->d_id.b24); + break; +- +- case BIND_BY_NODE_NAME: +- printk(KERN_INFO +- "scsi-qla%d-tgt-%d-di-0-node=" +- "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n", +- (int)ha->instance, +- tgt, +- tq->node_name[0], +- tq->node_name[1], +- tq->node_name[2], +- tq->node_name[3], +- tq->node_name[4], +- tq->node_name[5], +- tq->node_name[6], +- tq->node_name[7]); +- break; + } + + #if VSA +@@ -13250,179 +12892,6 @@ qla2x00_get_properties(scsi_qla_host_t * + } + + /* +- * qla2x00_update_fc_database +- * This routine updates the device data in the database. +- * +- * Input: +- * ha = adapter block pointer. +- * device = device data pointer. +- * +- * Returns: +- * 0 = success, if device found or added to database. +- * BIT_0 = error +- * BIT_1 = database was full and device was not configured. +- */ +-STATIC uint8_t +-qla2x00_update_fc_database(scsi_qla_host_t *ha, +- fcdev_t *device, uint8_t enable_slot_reuse) +-{ +- int rval; +- uint16_t cnt, i; +- +- DEBUG(printk("qla2x00: Found device - " +- "nodename=%02x%02x%02x%02x%02x%02x%02x%02x, " +- "portname=%02x%02x%02x%02x%02x%02x%02x%02x, " +- "port Id=%06x, loop id=%04x\n", +- device->name[0], device->name[1], +- device->name[2], device->name[3], +- device->name[4], device->name[5], +- device->name[6], device->name[7], +- device->wwn[0], device->wwn[1], +- device->wwn[2], device->wwn[3], +- device->wwn[4], device->wwn[5], +- device->wwn[6], device->wwn[7], +- device->d_id.b24, device->loop_id);) +- +- /* Look for device in database. */ +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- if (ha->fc_db[cnt].loop_id == PORT_UNUSED) +- continue; +- +- rval = 1; +- switch (ha->binding_type) { +- case BIND_BY_PORT_NAME: +- rval = memcmp(device->wwn, +- ha->fc_db[cnt].wwn, WWN_SIZE); +- break; +- +- case BIND_BY_PORT_ID: +- rval = (device->d_id.b24 != +- ha->fc_db[cnt].d_id.b24); +- break; +- +- case BIND_BY_NODE_NAME: +- rval = memcmp(device->name, +- ha->fc_db[cnt].name, WWN_SIZE); +- break; +- } +- if (rval) +- continue; +- +- DEBUG(printk("qla2x00: Reusing slot %d " +- "for device " +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- cnt, +- device->wwn[0], +- device->wwn[1], +- device->wwn[2], +- device->wwn[3], +- device->wwn[4], +- device->wwn[5], +- device->wwn[6], +- device->wwn[7]);) +- +- if (device->flag & DEV_PUBLIC) { +- ha->fc_db[cnt].flag |= DEV_PUBLIC; +- } else { +- if (ha->fc_db[cnt].flag & DEV_PUBLIC) { +- ha->fc_db[cnt].flag &= ~DEV_PUBLIC; +- ha->fabricid[ha->fc_db[cnt].loop_id].in_use +- = FALSE; +- } +- } +- +- ha->fc_db[cnt].loop_id = device->loop_id; +- ha->fc_db[cnt].d_id.b24 = device->d_id.b24; +- +- /* Update volatile unbound fields for PortID binding only */ +- if (ha->binding_type == BIND_BY_PORT_ID) { +- memcpy(ha->fc_db[cnt].name, device->name, WWN_SIZE); +- memcpy(ha->fc_db[cnt].wwn, device->wwn, WWN_SIZE); +- } +- +- return (0); +- } +- +- /* Find a empty slot and add device into database. */ +- for (i = 0; i < MAX_FIBRE_DEVICES; i++) { +- +-/* FlexServ Patch */ +-#if QLA2XXX_HOTSWAP_ENUMERATION +- /* +- * Enumerate upon the actual ID so add-single-device works +- */ +- if (i != device->loop_id) { +- continue; +- } +-#endif +- +- if ((ha->fc_db[i].loop_id == PORT_UNUSED) || +- (ha->fc_db[i].loop_id == PORT_NEED_MAP)) { +- +- DEBUG(printk("qla2x00: New slot %d for device " +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- i, +- device->wwn[0], +- device->wwn[1], +- device->wwn[2], +- device->wwn[3], +- device->wwn[4], +- device->wwn[5], +- device->wwn[6], +- device->wwn[7]);) +- +- memcpy(ha->fc_db[i].name, device->name, WWN_SIZE); +- memcpy(ha->fc_db[i].wwn, device->wwn, WWN_SIZE); +- ha->fc_db[i].loop_id = device->loop_id; +- ha->fc_db[i].d_id.b24 = device->d_id.b24; +- +- if (device->flag & DEV_PUBLIC) +- ha->fc_db[i].flag |= DEV_PUBLIC; +- +- ha->flags.updated_fc_db = TRUE; +- +- return (0); +- } +- } +- +- if (enable_slot_reuse) { +- for (i = 0; i < MAX_FIBRE_DEVICES; i++) { +- if (ha->fc_db[i].loop_id == PORT_AVAILABLE) { +- DEBUG(printk("qla2x00: Assigned slot %d " +- "reuse for device " +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- i, +- device->wwn[0], +- device->wwn[1], +- device->wwn[2], +- device->wwn[3], +- device->wwn[4], +- device->wwn[5], +- device->wwn[6], +- device->wwn[7]);) +- +- memcpy(ha->fc_db[i].name, +- device->name, WWN_SIZE); +- memcpy(ha->fc_db[i].wwn, +- device->wwn, WWN_SIZE); +- ha->fc_db[i].loop_id = device->loop_id; +- ha->fc_db[i].d_id.b24 = device->d_id.b24; +- +- if (device->flag & DEV_PUBLIC) +- ha->fc_db[i].flag |= DEV_PUBLIC; +- +- ha->flags.updated_fc_db = TRUE; +- +- return (0); +- } +- } +- } +- +- return(BIT_1); +-} +- +- +-/* + * qla2x00_device_resync + * Marks devices in the database that needs resynchronization. + * +@@ -13435,11 +12904,9 @@ qla2x00_update_fc_database(scsi_qla_host + static void + qla2x00_device_resync(scsi_qla_host_t *ha) + { +- uint16_t index; + uint32_t mask; + rscn_t dev; +- struct list_head *fcil; +- fc_initiator_t *fcinitiator; ++ fc_port_t *fcport; + + ENTER(__func__); + +@@ -13484,44 +12951,19 @@ qla2x00_device_resync(scsi_qla_host_t *h + } + + /* Mark target devices indicated by RSCN for later processing */ +- for (index = 0; index < MAX_FIBRE_DEVICES; index++) { +- if ((ha->fc_db[index].flag & DEV_PUBLIC) && +- (ha->fc_db[index].d_id.b24 & mask) == +- dev.d_id.b24) { +- +- /* fabric device */ +- if (ha->fc_db[index].loop_id != PORT_UNUSED) { +- ha->fc_db[index].loop_id |= +- PORT_LOST_ID; +- +- DEBUG(printk("qla%d: RSCN port @ " +- "slot %d " +- "port_id=%06x\n", +- (int)ha->instance, +- index, +- ha->fc_db[index].d_id.b24);) +- } +- } +- } +- +- if (dev.format == 3) +- continue; +- +- /* +- * Invalidate initiator devices indicated by RSCN so we know +- * they are no longer logged in. +- */ +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); +- +- if ((fcinitiator->d_id.b24 & mask) != dev.d_id.b24) +- continue; +- if (fcinitiator->loop_id & PORT_LOST_ID || +- fcinitiator->loop_id & PORT_LOGIN_NEEDED) ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if ((fcport->flags & FC_FABRIC_DEVICE) == 0 || ++ (fcport->d_id.b24 & mask) != dev.d_id.b24 || ++ fcport->port_type == FCT_BROADCAST) + continue; + +- fcinitiator->loop_id |= PORT_LOST_ID; +- fcinitiator->d_id.b24 = 0; ++ if (atomic_read(&fcport->state) == FC_ONLINE) { ++ if (dev.format != 3 || ++ fcport->port_type != FCT_INITIATOR) { ++ atomic_set(&fcport->state, ++ FC_DEVICE_LOST); ++ } ++ } + } + } + +@@ -13529,63 +12971,314 @@ qla2x00_device_resync(scsi_qla_host_t *h + } + + /* +- * qla2x00_configure_fabric +- * Setup SNS devices with loop ID's. ++ * qla2x00_find_new_loop_id ++ * Scan through our port list and find a new usable loop ID. + * + * Input: +- * ha = adapter block pointer. ++ * ha: adapter state pointer. ++ * dev: port structure pointer. + * + * Returns: +- * 0 = success. +- * BIT_0 = error +- * BIT_1 = database was full and device was not configured. ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. + */ +-#define MAX_PUBLIC_LOOP_IDS LAST_SNS_LOOP_ID + 1 +- +-STATIC uint8_t +-qla2x00_configure_fabric(scsi_qla_host_t *ha, uint8_t enable_slot_reuse) ++int ++qla2x00_find_new_loop_id(scsi_qla_host_t *ha, fc_port_t *dev) + { +- uint8_t rval = 0; +- uint8_t rval1; +- uint8_t local_flags = 0; +- sns_cmd_rsp_t *sns; +- uint8_t tmp_name[8]; +- fcdev_t dev; +- uint16_t i, index, found_cnt; +- dma_addr_t phys_address = 0; +- uint16_t new_dev_cnt; +- uint16_t tmp_loop_id; +- uint16_t tmp_topo; +- struct new_dev *new_dev_list; +- struct list_head *fcil, *fcitemp; +- fc_initiator_t *fcinitiator; ++ int rval; ++ int found; ++ fc_port_t *fcport; ++ uint16_t first_loop_id; + +- ENTER(__func__); ++ rval = QL_STATUS_SUCCESS; + +- DEBUG2(printk(KERN_INFO "scsi%ld: Enter qla2x00_configure_fabric: hba=%p\n", +- ha->host_no, ha);) ++ /* Save starting loop ID. */ ++ first_loop_id = dev->loop_id; + +- /* If FL port exists, then SNS is present */ +- rval1 = qla2x00_get_port_name(ha, SNS_FL_PORT, tmp_name, 0); +- if (rval1 || qla2x00_is_wwn_zero(tmp_name)) { +- DEBUG2(printk(KERN_INFO "%s(): MBC_GET_PORT_NAME Failed, No FL Port\n", +- __func__);) ++ for (;;) { ++ /* Skip loop ID if already used by adapter. */ ++ if (dev->loop_id == ha->loop_id) { ++ dev->loop_id++; ++ } + +- ha->device_flags &= ~SWITCH_FOUND; +- return (0); +- } ++ /* Skip reserved loop IDs. */ ++ while (RESERVED_LOOP_ID(dev->loop_id)) { ++ dev->loop_id++; ++ } + +- ha->device_flags |= SWITCH_FOUND; ++ /* Reset loop ID if passed the end. */ ++ if (dev->loop_id > SNS_LAST_LOOP_ID) { ++ /* first loop ID. */ ++ dev->loop_id = ha->min_external_loopid; ++ } + +- /* Get adapter port ID. */ +- rval = qla2x00_get_adapter_id(ha, &tmp_loop_id, &ha->d_id.b.al_pa, +- &ha->d_id.b.area, &ha->d_id.b.domain, &tmp_topo); ++ /* Check for loop ID being already in use. */ ++ found = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->loop_id == dev->loop_id && fcport != dev) { ++ /* ID possibly in use */ ++ found++; ++ break; ++ } ++ } + +- sns = pci_alloc_consistent(ha->pdev, +- sizeof(sns_cmd_rsp_t), +- &phys_address); +- if (sns == NULL) { +- printk(KERN_WARNING ++ /* If not in use then it is free to use. */ ++ if (!found) { ++ break; ++ } ++ ++ /* ID in use. Try next value. */ ++ dev->loop_id++; ++ ++ /* If wrap around. No free ID to use. */ ++ if (dev->loop_id == first_loop_id) { ++ dev->loop_id = FC_NO_LOOP_ID; ++ rval = QL_STATUS_ERROR; ++ break; ++ } ++ } ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_fabric_dev_login ++ * Login fabric target device and update FC port database. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * fcport: port structure list pointer. ++ * next_loopid: contains value of a new loop ID that can be used ++ * by the next login attempt. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++static int ++qla2x00_fabric_dev_login(scsi_qla_host_t *ha, fc_port_t *fcport, ++ uint16_t *next_loopid) ++{ ++ int rval; ++ int retry; ++ ++ rval = QL_STATUS_SUCCESS; ++ retry = 0; ++ ++ rval = qla2x00_fabric_login(ha, fcport, next_loopid); ++ if (rval == QL_STATUS_SUCCESS) { ++ rval = qla2x00_get_port_database(ha, fcport, BIT_1 | BIT_0); ++ if (rval != QL_STATUS_SUCCESS) { ++ qla2x00_fabric_logout(ha, fcport->loop_id); ++ } else { ++ qla2x00_update_fcport(ha, fcport); ++ } ++ } ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_fabric_login ++ * Issue fabric login command. ++ * ++ * Input: ++ * ha = adapter block pointer. ++ * device = pointer to FC device type structure. ++ * ++ * Returns: ++ * 0 - Login successfully ++ * 1 - Login failed ++ * 2 - Initiator device ++ * 3 - Fatal error ++ */ ++static uint8_t ++qla2x00_fabric_login(scsi_qla_host_t *ha, fc_port_t *fcport, ++ uint16_t *next_loopid) ++{ ++ int rval; ++ int retry; ++ uint16_t tmp_loopid; ++ uint16_t mb[MAILBOX_REGISTER_COUNT]; ++ ++ retry = 0; ++ tmp_loopid = 0; ++ ++ for (;;) { ++ DEBUG(printk("scsi(%ld): Trying Fabric Login w/loop id 0x%04x " ++ "for port %02x%02x%02x.\n", ++ ha->host_no, fcport->loop_id, fcport->d_id.b.domain, ++ fcport->d_id.b.area, fcport->d_id.b.al_pa)); ++ ++ /* Login fcport on switch. */ ++ qla2x00_login_fabric(ha, fcport->loop_id, ++ fcport->d_id.b.domain, fcport->d_id.b.area, ++ fcport->d_id.b.al_pa, mb, BIT_0); ++ if (mb[0] == MBS_PORT_ID_USED) { ++ /* ++ * Device has another loop ID. The firmware team ++ * recommends us to perform an implicit login with the ++ * specified ID again. The ID we just used is save here ++ * so we return with an ID that can be tried by the ++ * next login. ++ */ ++ retry++; ++ tmp_loopid = fcport->loop_id; ++ fcport->loop_id = mb[1]; ++ ++ DEBUG(printk("Fabric Login: port in use - next " ++ "loop id=0x%04x, port Id=%02x%02x%02x.\n", ++ fcport->loop_id, fcport->d_id.b.domain, ++ fcport->d_id.b.area, fcport->d_id.b.al_pa)); ++ ++ } else if (mb[0] == MBS_COMMAND_COMPLETE) { ++ /* ++ * Login succeeded. ++ */ ++ if (retry) { ++ /* A retry occurred before. */ ++ *next_loopid = tmp_loopid; ++ } else { ++ /* ++ * No retry occurred before. Just increment the ++ * ID value for next login. ++ */ ++ *next_loopid = (fcport->loop_id + 1); ++ } ++ ++ if (mb[1] & BIT_0) { ++ fcport->port_type = FCT_INITIATOR; ++ } else { ++ fcport->port_type = FCT_TARGET; ++ if (mb[1] & BIT_1) { ++ fcport->flags |= FC_TAPE_DEVICE; ++ } ++ } ++ ++ rval = QL_STATUS_SUCCESS; ++ break; ++ } else if (mb[0] == MBS_LOOP_ID_USED) { ++ /* ++ * Loop ID already used, try next loop ID. ++ */ ++ fcport->loop_id++; ++ rval = qla2x00_find_new_loop_id(ha, fcport); ++ if (rval != QL_STATUS_SUCCESS) { ++ /* Ran out of loop IDs to use */ ++ break; ++ } ++ } else if (mb[0] == MBS_CMD_ERR) { ++ /* ++ * Firmware possibly timed out during login. If NO ++ * retries are left to do then the device is declared ++ * dead. ++ */ ++ *next_loopid = fcport->loop_id; ++ qla2x00_fabric_logout(ha, fcport->loop_id); ++ fcport->loop_id = FC_NO_LOOP_ID; ++ if (mb[1] == MBS_SC_TOPOLOGY_ERR){ ++ printk(KERN_INFO "%s:HBA trying to log " ++ "through FL_Port\n", __func__); ++ DEBUG2(printk(KERN_INFO "%s:HBA trying to log " ++ "through FL_Port\n", __func__);) ++ ++ atomic_set(&fcport->state, FC_DEVICE_DEAD); ++ } ++ ++ rval = 3; ++ break; ++ } else { ++ /* ++ * unrecoverable / not handled error ++ */ ++ DEBUG2(printk("%s(%ld): failed=%x port_id=%02x%02x%02x " ++ "loop_id=%x jiffies=%lx.\n", ++ __func__, ha->host_no, mb[0], ++ fcport->d_id.b.domain, fcport->d_id.b.area, ++ fcport->d_id.b.al_pa, fcport->loop_id, jiffies)); ++ ++ /* Trying to log into more than 8 Target */ ++ if(mb[0] == MBS_ALL_LOOP_IDS_IN_USE){ ++ printk(KERN_INFO "%s:No more loop ids\n" ++ ,__func__); ++ DEBUG2(printk("%s:No more loop ids\n" ++ ,__func__);) ++ } ++ *next_loopid = fcport->loop_id; ++ qla2x00_fabric_logout(ha, fcport->loop_id); ++ fcport->loop_id = FC_NO_LOOP_ID; ++ atomic_set(&fcport->state, FC_DEVICE_DEAD); ++ ++ rval = 1; ++ break; ++ } ++ } ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_configure_fabric ++ * Setup SNS devices with loop ID's. ++ * ++ * Input: ++ * ha = adapter block pointer. ++ * ++ * Returns: ++ * 0 = success. ++ * BIT_0 = error ++ * BIT_1 = database was full and device was not configured. ++ */ ++#define MAX_PUBLIC_LOOP_IDS SNS_LAST_LOOP_ID + 1 ++ ++STATIC uint8_t ++qla2x00_configure_fabric(scsi_qla_host_t *ha) ++{ ++ uint8_t rval = 0; ++ uint8_t rval1; ++ sns_cmd_rsp_t *sns; ++ uint8_t tmp_name[8]; ++ dma_addr_t phys_address = 0; ++ uint16_t tmp_loop_id; ++ uint16_t tmp_topo; ++ fc_port_t *fcport, *fcptemp; ++ uint16_t next_loopid; ++ LIST_HEAD(new_fcports); ++#if REG_FC4_ENABLED ++ uint16_t mb[MAILBOX_REGISTER_COUNT]; ++#endif ++ ++ ENTER(__func__); ++ ++ DEBUG2(printk(KERN_INFO "scsi(%ld): Enter qla2x00_configure_fabric:" ++ "hba=%p\n", ha->host_no, ha);) ++ ++ /* If FL port exists, then SNS is present */ ++ rval1 = qla2x00_get_port_name(ha, SNS_FL_PORT, tmp_name, 0); ++ if (rval1 || qla2x00_is_wwn_zero(tmp_name)) { ++ DEBUG2(printk(KERN_INFO "%s(): MBC_GET_PORT_NAME Failed, No FL Port\n", ++ __func__);) ++ ++ ha->device_flags &= ~SWITCH_FOUND; ++ return (0); ++ } ++ ++ ha->device_flags |= SWITCH_FOUND; ++ ++ /* Get adapter port ID. */ ++ rval = qla2x00_get_adapter_id(ha, &tmp_loop_id, &ha->d_id.b.al_pa, ++ &ha->d_id.b.area, &ha->d_id.b.domain, &tmp_topo); ++ ++ sns = pci_alloc_consistent(ha->pdev, ++ sizeof(sns_cmd_rsp_t), ++ &phys_address); ++ if (sns == NULL) { ++ printk(KERN_WARNING + "qla(%ld): Memory Allocation failed - sns.\n", + ha->host_no); + ha->mem_err++; +@@ -13596,9 +13289,38 @@ qla2x00_configure_fabric(scsi_qla_host_t + + /* Mark devices that need re-synchronization. */ + qla2x00_device_resync(ha); +- found_cnt = 0; + do { ++#if REG_FDMI_ENABLED ++ /* FDMI support */ ++ /* login to management server */ ++ if (!ha->init_done) { ++ if (test_and_clear_bit(FDMI_REGISTER_NEEDED, ++ &ha->fdmi_flags)) { ++ if (qla2x00_mgmt_svr_login(ha) != ++ QL_STATUS_SUCCESS) { ++ DEBUG2(printk("%s(%ld): failed MS " ++ "server login.\n", __func__, ++ ha->host_no);) ++ } else { ++ /* use mbx commands to send commands */ ++ qla2x00_fdmi_register(ha); ++ } ++ } ++ } ++#endif ++ + #if REG_FC4_ENABLED ++ /* Ensure we are logged into the SNS. */ ++ qla2x00_login_fabric(ha, SIMPLE_NAME_SERVER, 0xff, 0xff, 0xfc, ++ mb, BIT_0); ++ if (mb[0] != MBS_COMMAND_COMPLETE) { ++ printk(KERN_INFO "scsi(%ld): Failed SNS login: " ++ "loop_id=%x mb[0]=%x mb[1]=%x mb[2]=%x mb[6]=%x " ++ "mb[7]=%x\n", ha->host_no, SIMPLE_NAME_SERVER, ++ mb[0], mb[1], mb[2], mb[6], mb[7]); ++ return (QL_STATUS_ERROR); ++ } ++ + if (test_and_clear_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags)) { + if (qla2x00_register_fc4(ha, sns, phys_address)) { + /* EMPTY */ +@@ -13632,21 +13354,8 @@ qla2x00_configure_fabric(scsi_qla_host_t + } + } + #endif +- new_dev_list = kmalloc( MAX_FIBRE_DEVICES * +- sizeof(struct new_dev), GFP_ATOMIC); +- if( new_dev_list == NULL ){ +- printk("%s Failed to allocate memory for" +- "New Device List\n",__func__); +- rval = BIT_0 ; +- break; +- }else { +- memset(new_dev_list , 0 , +- MAX_FIBRE_DEVICES * sizeof(struct new_dev)); +- rval = qla2x00_find_all_fabric_devs(ha, +- sns, phys_address, +- new_dev_list, &new_dev_cnt, +- &local_flags); +- } ++ rval = qla2x00_find_all_fabric_devs(ha, sns, phys_address, ++ &new_fcports); + if (rval != 0) + break; + +@@ -13654,150 +13363,95 @@ qla2x00_configure_fabric(scsi_qla_host_t + * Logout all previous fabric devices marked lost, except + * tape devices. + */ +- for (index = 0; index < MAX_FIBRE_DEVICES && +- !atomic_read(&ha->loop_down_timer) && +- !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); +- index++) { +- +- if (ha->fc_db[index].loop_id & PORT_LOST_ID && +- (ha->fc_db[index].flag & DEV_PUBLIC) && +- !(ha->fc_db[index].flag & DEV_TAPE_DEVICE)) { +- +- qla2x00_fabric_logout(ha, +- ha->fc_db[index].loop_id & +- 0xff); +- local_flags |= LOGOUT_PERFORMED; +- } +- } +- +- /* Logout and remove any lost initiator devices */ +- list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) ++ break; + +- if ((fcinitiator->loop_id & PORT_LOST_ID) == 0) ++ if ((fcport->flags & FC_FABRIC_DEVICE) == 0) + continue; + +- qla2x00_fabric_logout(ha, fcinitiator->loop_id & 0xff); +- ha->fabricid[fcinitiator->loop_id &0xFF].in_use = FALSE; +- +- list_del(&fcinitiator->list); +- kfree(fcinitiator); +- } +- +-#if 0 +- /* +- * Wait for all remaining IO's to finish if there was logout. +- */ +- if (local_flags & LOGOUT_PERFORMED) { +- local_flags &= ~LOGOUT_PERFORMED; +- +- if (ha->init_done) { +- if (!(ha->dpc_flags & COMMAND_WAIT_ACTIVE)) { +- ha->dpc_flags |= COMMAND_WAIT_ACTIVE; +- +- qla2x00_cmd_wait(ha); +- +- ha->dpc_flags &= ~COMMAND_WAIT_ACTIVE; ++ if (atomic_read(&fcport->state) == FC_DEVICE_LOST) { ++ qla2x00_mark_device_lost(ha, fcport, ++ ql2xplogiabsentdevice); ++ ++ if (fcport->loop_id != FC_NO_LOOP_ID && ++ (fcport->flags & FC_TAPE_DEVICE) == 0 && ++ fcport->port_type != FCT_INITIATOR && ++ fcport->port_type != FCT_BROADCAST) { ++ ++ qla2x00_fabric_logout(ha, ++ fcport->loop_id); ++ fcport->loop_id = FC_NO_LOOP_ID; + } + } + } +-#endif ++ ++ /* Starting free loop ID. */ ++ next_loopid = ha->min_external_loopid; + + /* +- * Scan through our database and login entries already in our +- * database. ++ * Scan through our port list and login entries that need to be ++ * logged in. + */ +- for (index = 0; index < MAX_FIBRE_DEVICES && +- !atomic_read(&ha->loop_down_timer) && +- !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) { ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (atomic_read(&ha->loop_down_timer) || ++ test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) ++ break; + +- if (!(ha->fc_db[index].loop_id & PORT_LOGIN_NEEDED)) ++ if ((fcport->flags & FC_FABRIC_DEVICE) == 0 || ++ (fcport->flags & FC_LOGIN_NEEDED) == 0) + continue; + +- ha->fc_db[index].loop_id &= ~PORT_LOGIN_NEEDED; +- if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID) { +- +- /* loop_id reusable */ +- dev.loop_id = ha->fc_db[index].loop_id & 0xff; +- } else { +- for (i = ha->min_external_loopid; +- i < MAX_PUBLIC_LOOP_IDS; +- i++) { +- +- if (!ha->fabricid[i].in_use) { +- ha->fabricid[i].in_use = TRUE; +- dev.loop_id = i; +- break; +- } +- } +- +- if (i == MAX_PUBLIC_LOOP_IDS) ++ if (fcport->loop_id == FC_NO_LOOP_ID) { ++ fcport->loop_id = next_loopid; ++ rval = qla2x00_find_new_loop_id(ha, fcport); ++ if (rval != QL_STATUS_SUCCESS) { ++ /* Ran out of IDs to use */ + break; ++ } + } + +- dev.d_id.b24 = ha->fc_db[index].d_id.b24; ++ /* Login and update database */ ++ qla2x00_fabric_dev_login(ha, fcport, &next_loopid); ++ } + +- /* login and update database */ +- if (qla2x00_fabric_login(ha, &dev) == 0) { +- ha->fc_db[index].loop_id = dev.loop_id; +- found_cnt++; +- } ++ /* Exit if out of loop IDs. */ ++ if (rval != QL_STATUS_SUCCESS) { ++ break; + } + + /* +- * Scan through new device list and login and add to our +- * database. ++ * Login and add the new devices to our port list. + */ +- for (index = 0; index < new_dev_cnt && +- !atomic_read(&ha->loop_down_timer) && +- !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); +- index++) { +- +- if (new_dev_list[index].ignore) +- continue; +- +- memcpy(&dev, &new_dev_list[index], +- sizeof(struct new_dev)); +- +- dev.flag = DEV_PUBLIC; +- +- for (i = ha->min_external_loopid; +- i < MAX_PUBLIC_LOOP_IDS; +- i++) { +- +- if (!ha->fabricid[i].in_use) { +- ha->fabricid[i].in_use = TRUE; +- dev.loop_id = i; +- break; +- } +- } +- +- if (i == MAX_PUBLIC_LOOP_IDS) ++ list_for_each_entry_safe(fcport, fcptemp, &new_fcports, list) { ++ if (atomic_read(&ha->loop_down_timer) || ++ test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) + break; + +- DEBUG(printk("%s(): calling qla2100_fabric_login()\n", +- __func__);) ++ /* Find a new loop ID to use. */ ++ fcport->loop_id = next_loopid; ++ rval = qla2x00_find_new_loop_id(ha, fcport); ++ if (rval != QL_STATUS_SUCCESS) { ++ /* Ran out of IDs to use */ ++ break; ++ } + +- if (qla2x00_fabric_login(ha, &dev) == 0) { +- found_cnt++; +- if ((rval = +- qla2x00_update_fc_database(ha, +- &dev, +- enable_slot_reuse)) ) { ++ /* Login and update database */ ++ qla2x00_fabric_dev_login(ha, fcport, &next_loopid); + +- qla2x00_fabric_logout(ha, dev.loop_id); +- ha->fabricid[i].in_use = FALSE; +- break; +- } +- } ++ /* Remove device from the new list and add it to DB */ ++ list_del(&fcport->list); ++ list_add_tail(&fcport->list, &ha->fcports); + } +- } while(0); ++ } while (0); + + pci_free_consistent(ha->pdev, sizeof(sns_cmd_rsp_t), sns, phys_address); + +- if( new_dev_list != NULL ){ +- kfree(new_dev_list); +- } ++ /* Free all new device structures not processed. */ ++ list_for_each_entry_safe(fcport, fcptemp, &new_fcports, list) { ++ list_del(&fcport->list); ++ kfree(fcport); ++ } + + if (rval) { + DEBUG2(printk(KERN_INFO "%s(%ld): error exit: rval=%d\n", +@@ -13806,9 +13460,6 @@ qla2x00_configure_fabric(scsi_qla_host_t + rval);) + } else { + /* EMPTY */ +- DEBUG2(if (found_cnt)) +- DEBUG2(printk(KERN_INFO "scsi%ld Found (%d) ports\n", +- ha->host_no, found_cnt);) + DEBUG2(printk(KERN_INFO "scsi%ld: %s: exit\n", ha->host_no, __func__);) + } + +@@ -13838,38 +13489,54 @@ qla2x00_configure_fabric(scsi_qla_host_t + * Kernel context. + */ + static uint8_t +-qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, +- sns_cmd_rsp_t *sns, dma_addr_t phys_addr, +- struct new_dev *new_dev_list, uint16_t *new_dev_cnt, uint8_t *flags) ++qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, sns_cmd_rsp_t *sns, ++ dma_addr_t phys_addr, struct list_head *new_fcports) + { +- fcdev_t first_dev, dev; + uint8_t rval = 0; +- uint8_t use_gan = 0; +- uint8_t wrap_around; /* device list */ + uint16_t i; +- uint16_t index, device_index = 0; +- uint16_t new_cnt; + uint16_t public_count; +- uint16_t initiator; +- struct list_head *fcil; +- fc_initiator_t *fcinitiator; ++ ++ fc_port_t *fcport, *new_fcport, *tmp_fcport = NULL; ++ int found; ++ sw_info_t *swl; ++ int swl_idx; ++ int first_dev, last_dev; ++ port_id_t wrap; + + + ENTER(__func__); ++ + /* Try GNN_FT to get the list of SCSI type devices */ +- if (qla2x00_gnn_ft(ha, sns, phys_addr, +- new_dev_list, SCSI_TYPE) != QL_STATUS_SUCCESS){ +- use_gan = 1; +- printk(KERN_INFO "%s GNN_FT Failed-Try" +- " issuing GAN \n",__func__); +- }else if(qla2x00_gpn_id(ha, sns, phys_addr, +- new_dev_list) != QL_STATUS_SUCCESS) { +- use_gan = 1; +- printk(KERN_INFO "%s GPN_ID Failed-Try" +- " issuing GAN \n",__func__); ++ swl = kmalloc(sizeof(sw_info_t) * MAX_FIBRE_DEVICES, GFP_ATOMIC); ++ if (swl == NULL) { ++ /*EMPTY*/ ++ DEBUG2(printk("scsi(%ld): GNN_FT allocations failed, fallback " ++ "on GAN\n", ha->host_no)); ++ } else { ++ memset(swl, 0 ,MAX_FIBRE_DEVICES * sizeof (sw_info_t)); ++ if (qla2x00_gnn_ft(ha, sns, phys_addr, swl, SCSI_TYPE) != ++ QL_STATUS_SUCCESS) { ++ kfree(swl); ++ swl = NULL; ++ } else if (qla2x00_gpn_id(ha, sns, phys_addr, swl) != ++ QL_STATUS_SUCCESS) { ++ kfree(swl); ++ swl = NULL; ++ } ++ } ++ ++ /* Allocate temporary fcport for any new fcports discovered. */ ++ new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL); ++ if (new_fcport == NULL) { ++ if (swl) ++ kfree(swl); ++ return (QL_STATUS_ERROR); + } ++ new_fcport->flags |= FC_FABRIC_DEVICE; ++ new_fcport->flags |= FC_LOGIN_NEEDED; ++ + #if defined(ISP2100) +- ha->max_public_loop_ids = LAST_SNS_LOOP_ID - SNS_FIRST_LOOP_ID + 1; ++ ha->max_public_loop_ids = SNS_LAST_LOOP_ID - SNS_FIRST_LOOP_ID + 1; + #else + ha->max_public_loop_ids = MAX_PUBLIC_LOOP_IDS; + #endif +@@ -13887,84 +13554,74 @@ qla2x00_find_all_fabric_devs(scsi_qla_ho + #endif + + /* Set start port ID scan at adapter ID. */ +- dev.d_id.b24 = 0; +- first_dev.d_id.b24 = 0; +- wrap_around = FALSE ; /* device list */ ++ swl_idx = 0; ++ first_dev = 1; ++ last_dev = 0; + +- new_cnt = 0; /* new device count */ +- +- DEBUG2(printk(KERN_INFO "%s(%ld): use_gan=%d dpc_flags=0x%lx\n", +- __func__, ha->host_no, use_gan, ha->dpc_flags);) ++ DEBUG2(printk(KERN_INFO "%s(%ld): dpc_flags=0x%lx\n", ++ __func__, ha->host_no, ha->dpc_flags);) + + for (i = 0; + i < public_count && !atomic_read(&ha->loop_down_timer) && + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); i++) { + +- if( ! use_gan ){ +- if (wrap_around){ +- dev.d_id.b24 = first_dev.d_id.b24; +- }else{ +- new_dev_list[device_index].ignore++; +- dev.d_id.b24 = +- new_dev_list[device_index].d_id.b24; +- memcpy(dev.name , +- new_dev_list[device_index].name, WWN_SIZE); +- memcpy(dev.wwn , +- new_dev_list[device_index].wwn, WWN_SIZE); +- +- /* Last Device */ +- if ( new_dev_list[device_index].d_id.b.rsvd_1 +- != 0) { +- wrap_around = TRUE; ++ if (swl != NULL) { ++ if (last_dev) { ++ wrap.b24 = new_fcport->d_id.b24; ++ } else { ++ new_fcport->d_id.b24 = swl[swl_idx].d_id.b24; ++ memcpy(new_fcport->node_name, ++ swl[swl_idx].node_name, WWN_SIZE); ++ memcpy(new_fcport->port_name, ++ swl[swl_idx].port_name, WWN_SIZE); ++ ++ if (swl[swl_idx].d_id.b.rsvd_1 != 0) { ++ last_dev = 1; + } + +- device_index++; ++ swl_idx++; + } + } else { + /* Send GAN to the switch */ + rval = 0; +- if (qla2x00_gan(ha, sns, phys_addr, &dev)) { ++ if (qla2x00_gan(ha, sns, phys_addr, new_fcport)) { + rval = rval | BIT_0; + break; + } + } + + /* If wrap on switch device list, exit. */ +- if (dev.d_id.b24 == first_dev.d_id.b24) ++ if (first_dev) { ++ wrap.b24 = new_fcport->d_id.b24; ++ first_dev = 0; ++ } else if (new_fcport->d_id.b24 == wrap.b24){ ++ DEBUG(printk("%s switch device list wrapped\n" ++ ,__func__);) + break; ++ } + + DEBUG(printk("scsi(%ld): found fabric(%d) - " + "port Id=%06x\n", + ha->host_no, + i, +- dev.d_id.b24);) +- +- if (first_dev.d_id.b24 == 0) +- first_dev.d_id.b24 = dev.d_id.b24; ++ new_fcport->d_id.b24);) + +- if(use_gan){ +- /* If port type not equal to N or NL port, skip it. */ +- if (sns->p.gan_rsp[16] != 1 +- && sns->p.gan_rsp[16] != 2) { +- continue; /* needed for McData switch */ +- } +- } + + /* Bypass if host adapter. */ +- if (dev.d_id.b24 == ha->d_id.b24) ++ if (new_fcport->d_id.b24 == ha->d_id.b24) + continue; + + /* Bypass reserved domain fields. */ +- if ((dev.d_id.b.domain & 0xf0) == 0xf0) ++ if ((new_fcport->d_id.b.domain & 0xf0) == 0xf0) + continue; + + /* Bypass if same domain and area of adapter. */ +- if ((dev.d_id.b24 & 0xffff00) == (ha->d_id.b24 & 0xffff00)) ++ if ((new_fcport->d_id.b24 & 0xffff00) == ++ (ha->d_id.b24 & 0xffff00)) + continue; +- + #if defined(FC_IP_SUPPORT) + /* Check for IP device */ +- if(use_gan){ ++ if(swl == NULL){ + if (sns->p.gan_rsp[579] & 0x20) { + /* Found IP device */ + DEBUG12(printk("qla%ld: IP fabric WWN: " +@@ -13982,179 +13639,100 @@ qla2x00_find_all_fabric_devs(scsi_qla_ho + } + #endif + +- /* Bypass if initiator */ +- initiator = FALSE; +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); +- +- if (memcmp(dev.wwn, fcinitiator->port_name, 8) != 0) ++ /* Locate matching device in database. */ ++ found = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (memcmp(new_fcport->port_name, fcport->port_name, ++ WWN_SIZE)) + continue; + +- initiator = TRUE; +- DEBUG(printk("qla%ld: found host " +- "%02x%02x%02x%02x%02x%02x%02x%02x, " +- "port Id=%06x\n", +- ha->instance, +- dev.name[0], dev.name[1], +- dev.name[2], dev.name[3], +- dev.name[4], dev.name[5], +- dev.name[6], dev.name[7], +- dev.d_id.b24);) ++ found++; + + /* +- * If the initiator was marked as lost, perform the +- * required logout and relogin the initiator by +- * assuming a new device. ++ * If device was not a fabric device before. + */ +- if ((fcinitiator->loop_id & PORT_LOST_ID) == 0) ++ if ((fcport->flags & FC_FABRIC_DEVICE) == 0) { ++ fcport->d_id.b24 = new_fcport->d_id.b24; ++ fcport->loop_id = FC_NO_LOOP_ID; ++ fcport->flags |= FC_LOGIN_NEEDED; ++ fcport->flags |= FC_FABRIC_DEVICE; + break; +- +- initiator = FALSE; +- break; +- } +- +- /* Bypass if initiator */ +- if (initiator) +- continue; +- /* Locate matching device in database. */ +- for (index = 0; index < MAX_FIBRE_DEVICES; index++) { +- if (ha->fc_db[index].loop_id == PORT_UNUSED) +- continue; +- +- rval = 1; +- switch (ha->binding_type) { +- case BIND_BY_PORT_NAME: +- rval = memcmp(dev.wwn, +- ha->fc_db[index].wwn, WWN_SIZE); +- break; +- +- case BIND_BY_PORT_ID: +- rval = (dev.d_id.b24 != +- ha->fc_db[index].d_id.b24); +- break; +- +- case BIND_BY_NODE_NAME: +- rval = memcmp(dev.name, +- ha->fc_db[index].name, WWN_SIZE); +- break; + } +- if (rval) +- continue; + + /* +- * Update volatile unbound fields for PortID binding +- * only ++ * If address the same and state FCS_ONLINE, nothing ++ * changed. + */ +- if (ha->binding_type == BIND_BY_PORT_ID) { +- memcpy(ha->fc_db[index].name, +- dev.name, WWN_SIZE); +- memcpy(ha->fc_db[index].wwn, +- dev.wwn, WWN_SIZE); +- } +- +- /* Now we found a matching device name */ +- DEBUG(printk("qla%ld: found fabric dev %d in tgt %d " +- "db, flags= 0x%x, loop_id=" +- "0x%04x, port=%06x, name=" +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- ha->instance, +- i, index, +- ha->fc_db[index].flag, +- ha->fc_db[index].loop_id, +- ha->fc_db[index].d_id.b24, +- dev.wwn[0], dev.wwn[1], +- dev.wwn[2], dev.wwn[3], +- dev.wwn[4], dev.wwn[5], +- dev.wwn[6], dev.wwn[7]);) +- +- if (!(ha->fc_db[index].flag & DEV_PUBLIC)) { +- /* +- * This was in our database as a local device. +- * Here we assume this device either has +- * changed location so configure_local_loop has +- * already done necessary clean up, or it's +- * saved here due to persistent name binding. +- * We'll just add it in as a fabric device. +- */ +- /* Copy port id and name fields. */ +- ha->fc_db[index].flag |= DEV_PUBLIC; +- ha->fc_db[index].d_id.b24 = dev.d_id.b24; +- ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED; +- +- break; +- } +- +- /* This was in our database as a fabric device. */ +- if ((ha->fc_db[index].d_id.b24 == dev.d_id.b24) && +- (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID)) +- /* Device didn't change */ +- break; +- +- if (ha->fc_db[index].loop_id == PORT_AVAILABLE) { +- ha->fc_db[index].flag |= DEV_PUBLIC; +- ha->fc_db[index].d_id.b24 = dev.d_id.b24; +- ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED; ++ if (fcport->d_id.b24 == new_fcport->d_id.b24 && ++ atomic_read(&fcport->state) == FC_ONLINE) { + break; + } + + /* + * Port ID changed or device was marked to be updated; +- * logout and mark it for relogin later. ++ * Log it out if still logged in and mark it for ++ * relogin later. + */ +- qla2x00_fabric_logout(ha, +- ha->fc_db[index].loop_id & 0xff); +- +- ha->fc_db[index].flag |= DEV_PUBLIC; +- ha->fc_db[index].d_id.b24 = dev.d_id.b24; +- +- ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED; +- ha->fc_db[index].loop_id &= ~PORT_LOST_ID; +- +- *flags |= LOGOUT_PERFORMED; ++ fcport->d_id.b24 = new_fcport->d_id.b24; ++ fcport->flags |= FC_LOGIN_NEEDED; ++ if (fcport->loop_id != FC_NO_LOOP_ID && ++ (fcport->flags & FC_TAPE_DEVICE) == 0 && ++ fcport->port_type != FCT_INITIATOR && ++ fcport->port_type != FCT_BROADCAST) { ++ qla2x00_fabric_logout(ha, fcport->loop_id); ++ fcport->loop_id = FC_NO_LOOP_ID; ++ } + + break; + } + +- if (index == MAX_FIBRE_DEVICES) { +- /* +- * Did not find a match in our database. This is a new +- * device. +- */ +- DEBUG3(printk("%s(): new device " +- "%02x%02x%02x%02x%02x%02x%02x%02x.\n", +- __func__, +- dev.wwn[0], dev.wwn[1], dev.wwn[2], dev.wwn[3], +- dev.wwn[4], dev.wwn[5], dev.wwn[6], dev.wwn[7]);) +- +- if( use_gan){ +- memcpy(&new_dev_list[new_cnt], &dev, +- sizeof(struct new_dev)); +- } else { +- new_dev_list[device_index-1].ignore = 0; +- } +- new_cnt++; ++ if (found) ++ continue; ++ ++ /* If device was not in our fcports list, then add it. */ ++ list_add_tail(&new_fcport->list, new_fcports); ++ tmp_fcport = new_fcport; ++ ++ /* Allocate a new replacement fcport. */ ++ new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL); ++ if (new_fcport == NULL) { ++ if (swl) ++ kfree(swl); ++ return (QL_STATUS_ERROR); + } ++ new_fcport->flags |= FC_FABRIC_DEVICE; ++ new_fcport->flags |= FC_LOGIN_NEEDED; ++ new_fcport->d_id.b24 = tmp_fcport->d_id.b24; + } + +- if (use_gan) { +- *new_dev_cnt = new_cnt; +- } else { +- *new_dev_cnt = device_index; +- } ++ if (swl) ++ kfree(swl); ++ ++ if (new_fcport) ++ kfree(new_fcport); + +- if (new_cnt > 0) ++ if (!list_empty(new_fcports)) + ha->device_flags |= DFLG_FABRIC_DEVICES; + + DEBUG(printk("%s(%ld): exit. rval=%d dpc_flags=0x%lx" +- " total_no_of_new_devices=%d. loop_down_timer=%i\n", +- __func__,ha->host_no,rval,ha->dpc_flags,new_cnt, ++ " loop_down_timer=%i\n", ++ __func__,ha->host_no,rval,ha->dpc_flags, + atomic_read(&ha->loop_down_timer));) ++ DEBUG2(printk(KERN_INFO "%s(%ld): exit. rval=%d dpc_flags=0x%lx" ++ " loop_down_timer=%i\n", ++ __func__,ha->host_no,rval,ha->dpc_flags, ++ atomic_read(&ha->loop_down_timer))); + + LEAVE(__func__); + + return (rval); + } + ++ ++#if REG_FDMI_ENABLED ++#include "qla_gs.c" ++#endif ++ + static __inline__ ms_iocb_entry_t * + qla2x00_prep_ms_iocb(scsi_qla_host_t *, uint32_t, uint32_t); + /** +@@ -14188,12 +13766,12 @@ qla2x00_prep_ms_iocb(scsi_qla_host_t *ha + ms_pkt->rsp_bytecount = cpu_to_le32(rsp_size); + ms_pkt->req_bytecount = cpu_to_le32(req_size); + +- ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma)); +- ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma)); ++ ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ct_iu_dma)); ++ ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ct_iu_dma)); + ms_pkt->dseg_req_length = ms_pkt->req_bytecount; + +- ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma)); +- ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma)); ++ ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ct_iu_dma)); ++ ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ct_iu_dma)); + ms_pkt->dseg_rsp_length = ms_pkt->rsp_bytecount; + + return (ms_pkt); +@@ -14250,8 +13828,8 @@ qla2x00_register_fc4(scsi_qla_host_t *ha + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = RFT_DATA_SIZE / 2; + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] = cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] = cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length = __constant_cpu_to_le16(22); + sns->p.cmd.subcommand = __constant_cpu_to_le16(0x217); + wc = (RFT_DATA_SIZE - 16) / 4; +@@ -14315,8 +13893,8 @@ qla2x00_register_fc4_feature(scsi_qla_ho + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = RFF_DATA_SIZE / 2; + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] = cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] = cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length = __constant_cpu_to_le16(8); + sns->p.cmd.subcommand = __constant_cpu_to_le16(0x21f); + wc = (RFF_DATA_SIZE - 16) / 4; +@@ -14377,8 +13955,8 @@ qla2x00_register_nn(scsi_qla_host_t *ha, + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = RNN_DATA_SIZE / 2; + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] = cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] = cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length = __constant_cpu_to_le16(10); + sns->p.cmd.subcommand = __constant_cpu_to_le16(0x213); + wc = (RNN_DATA_SIZE - 16) / 4; +@@ -14437,6 +14015,7 @@ qla2x00_register_snn(scsi_qla_host_t *ha + uint8_t version[20]; + + ms_iocb_entry_t *ms_pkt; ++ struct ct_sns_pkt *ct_iu; + struct ct_sns_req *ct_req; + struct ct_sns_rsp *ct_rsp; + qla_boards_t *bdp; +@@ -14444,10 +14023,12 @@ qla2x00_register_snn(scsi_qla_host_t *ha + ENTER(__func__); + + /* Get consistent memory allocated for MS IOCB */ +- ha->ms_iocb = pci_alloc_consistent(ha->pdev, +- sizeof(ms_iocb_entry_t), &ha->ms_iocb_dma); ++ if (ha->ms_iocb == NULL){ ++ ha->ms_iocb = pci_alloc_consistent(ha->pdev, ++ sizeof(ms_iocb_entry_t), &ha->ms_iocb_dma); ++ } + +- if( ha->ms_iocb == NULL){ ++ if (ha->ms_iocb == NULL){ + /* error */ + printk(KERN_WARNING + "scsi(%ld): Memory Allocation failed - ms_iocb\n", +@@ -14457,10 +14038,13 @@ qla2x00_register_snn(scsi_qla_host_t *ha + } + memset(ha->ms_iocb, 0, sizeof(ms_iocb_entry_t)); + +- /* Get consistent memory allocated for CT SNS commands */ +- ha->ct_sns = pci_alloc_consistent(ha->pdev, +- sizeof(struct ct_sns_pkt), &ha->ct_sns_dma); +- if( ha->ct_sns == NULL){ ++ /* Get consistent memory allocated for CT SNS command */ ++ if (ha->ct_iu == NULL) { ++ ha->ct_iu = pci_alloc_consistent(ha->pdev, ++ sizeof(struct ct_sns_pkt), &ha->ct_iu_dma); ++ } ++ ++ if( ha->ct_iu == NULL){ + /* error */ + printk(KERN_WARNING + "scsi(%ld): Memory Allocation failed - ct_sns\n", +@@ -14469,7 +14053,7 @@ qla2x00_register_snn(scsi_qla_host_t *ha + return (rval) ; + } + +- memset(ha->ct_sns, 0, sizeof(struct ct_sns_pkt)); ++ memset(ha->ct_iu, 0, sizeof(struct ct_sns_pkt)); + + /* Prepare common MS IOCB- Request size adjusted + * after CT preparation */ +@@ -14477,8 +14061,9 @@ qla2x00_register_snn(scsi_qla_host_t *ha + ms_pkt = qla2x00_prep_ms_iocb(ha, 0, RSNN_NN_RSP_SIZE); + + /* Prepare CT request */ +- ct_req = &ha->ct_sns->p.req; +- ct_rsp = &ha->ct_sns->p.rsp; ++ ct_iu = (struct ct_sns_pkt *)ha->ct_iu; ++ ct_req = &ct_iu->p.req; ++ ct_rsp = &ct_iu->p.rsp; + + /* Initialize Name Server CT-Command header */ + qla2x00_prep_nsrv_ct_cmd_hdr(ct_req,RSNN_NN_CMD,RSNN_NN_RSP_SIZE); +@@ -14528,11 +14113,11 @@ qla2x00_register_snn(scsi_qla_host_t *ha + __func__ ,ha->host_no)); + } + pci_free_consistent(ha->pdev, +- sizeof(struct ct_sns_pkt), ha->ct_sns, ha->ct_sns_dma); ++ sizeof(struct ct_sns_pkt), ha->ct_iu, ha->ct_iu_dma); + pci_free_consistent(ha->pdev, + sizeof(ms_iocb_entry_t), ha->ms_iocb, ha->ms_iocb_dma); + +- ha->ct_sns = NULL; ++ ha->ct_iu = NULL; + ha->ms_iocb = NULL; + + LEAVE(__func__); +@@ -14562,7 +14147,7 @@ qla2x00_register_snn(scsi_qla_host_t *ha + */ + static uint8_t + qla2x00_gnn_ft(scsi_qla_host_t *ha, sns_cmd_rsp_t *sns, dma_addr_t phys_addr, +- struct new_dev *new_dev_list , uint32_t protocol) ++ sw_info_t *swl , uint32_t protocol) + { + uint8_t rval = BIT_0 ; + uint16_t wc; +@@ -14570,63 +14155,65 @@ qla2x00_gnn_ft(scsi_qla_host_t *ha, sns + + ENTER(__func__); + +- /* Retry GNNFT till valid list or retries exhausted- +- * Default value of retry_gnnft: 10 +- */ +- while( retry_count++ < retry_gnnft ) { ++ /* Retry GNNFT till valid list or retries exhausted - Default value of ++ * retry_gnnft: 10 */ ++ while (retry_count++ < retry_gnnft) { + /* Get Node Name and Port Id for device on SNS. */ + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = GNNFT_DATA_SIZE / 2; /* Size in 16 bit words*/ + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] = +- cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] = +- cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length = __constant_cpu_to_le16(6); + sns->p.cmd.subcommand = +- __constant_cpu_to_le16(0x173); /* GNN_FT */ ++ __constant_cpu_to_le16(0x173); /* GNN_FT */ + wc = (GNNFT_DATA_SIZE - 16) / 4; /* Size in 32 bit words */ + sns->p.cmd.size = cpu_to_le16(wc); + sns->p.cmd.param[0] = protocol; /* SCSI Type : 0x8 */ + + rval = BIT_0; + if (!qla2x00_send_sns(ha, phys_addr, GNNFT_CMD_SIZE / 2, +- sizeof(sns_cmd_rsp_t))) { +- if (sns->p.gnnft_rsp[8] == 0x80 +- && sns->p.gnnft_rsp[9] == 0x2) { ++ sizeof(sns_cmd_rsp_t))) { ++ if (sns->p.gnnft_rsp[8] == 0x80 && ++ sns->p.gnnft_rsp[9] == 0x2) { + + uint32_t i,j; + +- /* Set port IDs and Node Name in new device list. */ +- for (i = 16, j = 0; i < GNNFT_DATA_SIZE; +- i += 16, j++) { +- new_dev_list[j].d_id.b.domain = +- sns->p.gnnft_rsp[i + 1]; +- new_dev_list[j].d_id.b.area = +- sns->p.gnnft_rsp[i + 2]; +- new_dev_list[j].d_id.b.al_pa = +- sns->p.gnnft_rsp[i + 3]; ++ /* ++ * Set port IDs and Node Name in new device ++ * list. ++ */ ++ for (i = 16, j = 0; i < GNNFT_DATA_SIZE; ++ i += 16, j++) { ++ swl[j].d_id.b.domain = ++ sns->p.gnnft_rsp[i + 1]; ++ swl[j].d_id.b.area = ++ sns->p.gnnft_rsp[i + 2]; ++ swl[j].d_id.b.al_pa = ++ sns->p.gnnft_rsp[i + 3]; + /* Extract Nodename */ +- memcpy(new_dev_list[j].name, +- &sns->p.gnnft_rsp[i + 8], WWN_SIZE); ++ memcpy(swl[j].node_name, ++ &sns->p.gnnft_rsp[i + 8], WWN_SIZE); ++ ++ DEBUG2(printk(KERN_INFO ++ "qla2x00: gnn_ft entry - " ++ "nodename " ++ "%02x%02x%02x%02x%02x%02x%02x%02x " ++ "port Id=%06x\n", ++ sns->p.gnnft_rsp[i+8], ++ sns->p.gnnft_rsp[i+9], ++ sns->p.gnnft_rsp[i+10], ++ sns->p.gnnft_rsp[i+11], ++ sns->p.gnnft_rsp[i+12], ++ sns->p.gnnft_rsp[i+13], ++ sns->p.gnnft_rsp[i+14], ++ sns->p.gnnft_rsp[i+15], ++ swl[j].d_id.b24)); + +- DEBUG2(printk(KERN_INFO "qla2x00: gnn_ft entry - " +- "nodename " +- "%02x%02x%02x%02x%02x%02x%02x%02x " +- "port Id=%06x\n", +- sns->p.gnnft_rsp[i+8], +- sns->p.gnnft_rsp[i+9], +- sns->p.gnnft_rsp[i+10], +- sns->p.gnnft_rsp[i+11], +- sns->p.gnnft_rsp[i+12], +- sns->p.gnnft_rsp[i+13], +- sns->p.gnnft_rsp[i+14], +- sns->p.gnnft_rsp[i+15], new_dev_list[j].d_id.b24);) +- + /* Last one exit. */ + if (sns->p.gnnft_rsp[i] & BIT_7) { +- new_dev_list[j].d_id.b.rsvd_1 = +- sns->p.gnnft_rsp[i]; ++ swl[j].d_id.b.rsvd_1 = ++ sns->p.gnnft_rsp[i]; + rval = 0; + break; + } +@@ -14634,15 +14221,17 @@ qla2x00_gnn_ft(scsi_qla_host_t *ha, sns + /* Successfully completed,no need to + * retry any more */ + break; +- }else{ +- DEBUG2(printk(KERN_INFO "%s(%ld): GNN_FT retrying" +- "retry_count=%d\n", +- __func__,ha->host_no,retry_count);) +- // DEBUG2(qla2x00_dump_buffer( +- // (uint8_t *)sns->p.gnnft_rsp, +- // GNNFT_DATA_SIZE);) ++ } else{ ++ DEBUG2(printk(KERN_INFO ++ "%s(%ld): GNN_FT retrying retry_count=%d\n", ++ __func__,ha->host_no,retry_count)); ++ ++ DEBUG5(qla2x00_dump_buffer( ++ (uint8_t *)sns->p.gnnft_rsp, ++ GNNFT_DATA_SIZE);) + } + } ++ + /* Wait for 1ms before retrying */ + udelay(10000); + } /* end of while */ +@@ -14655,7 +14244,6 @@ qla2x00_gnn_ft(scsi_qla_host_t *ha, sns + LEAVE(__func__); + + return (rval); +- + } + + /* +@@ -14675,8 +14263,8 @@ qla2x00_gnn_ft(scsi_qla_host_t *ha, sns + * Kernel context. + */ + static uint8_t +-qla2x00_gpn_id(scsi_qla_host_t *ha, sns_cmd_rsp_t *sns, dma_addr_t phys_addr, +- struct new_dev *new_dev_list) ++qla2x00_gpn_id(scsi_qla_host_t *ha, sns_cmd_rsp_t *sns, dma_addr_t phys_addr, ++ sw_info_t *swl) + { + uint8_t rval = BIT_0 ; + uint16_t wc; +@@ -14691,10 +14279,10 @@ qla2x00_gpn_id(scsi_qla_host_t *ha, sns + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = GPN_DATA_SIZE / 2; /* Size in 16 bit words*/ + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] +- = cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] +- = cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = ++ cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = ++ cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length + = __constant_cpu_to_le16(6); + sns->p.cmd.subcommand +@@ -14703,45 +14291,46 @@ qla2x00_gpn_id(scsi_qla_host_t *ha, sns + wc = (GPN_DATA_SIZE - 16) / 4; + /* Size in 32 bit words */ + sns->p.cmd.size = cpu_to_le16(wc); +- sns->p.cmd.param[0] = new_dev_list[i].d_id.b.al_pa; +- sns->p.cmd.param[1] = new_dev_list[i].d_id.b.area; +- sns->p.cmd.param[2] = new_dev_list[i].d_id.b.domain; ++ sns->p.cmd.param[0] = swl[i].d_id.b.al_pa; ++ sns->p.cmd.param[1] = swl[i].d_id.b.area; ++ sns->p.cmd.param[2] = swl[i].d_id.b.domain; + + rval = BIT_0; + if (!qla2x00_send_sns(ha, phys_addr, GPN_CMD_SIZE / 2, + sizeof(sns_cmd_rsp_t))) { +- if (sns->p.gpn_rsp[8] == 0x80 && +- sns->p.gpn_rsp[9] == 0x2) { ++ if (sns->p.gpn_rsp[8] == 0x80 && ++ sns->p.gpn_rsp[9] == 0x2) { + /* Extract Portname */ +- memcpy(new_dev_list[i].wwn, +- &sns->p.gpn_rsp[16], WWN_SIZE); ++ memcpy(swl[i].port_name, ++ &sns->p.gpn_rsp[16], WWN_SIZE); + +- DEBUG2(printk(KERN_INFO "qla2x00: gpn entry -" +- " portname " +- "%02x%02x%02x%02x%02x%02x%02x%02x " +- "port Id=%06x\n", +- sns->p.gpn_rsp[16], sns->p.gpn_rsp[17], +- sns->p.gpn_rsp[18], sns->p.gpn_rsp[19], +- sns->p.gpn_rsp[20], sns->p.gpn_rsp[21], +- sns->p.gpn_rsp[22], sns->p.gpn_rsp[23], +- new_dev_list[i].d_id.b24);) ++ DEBUG2(printk(KERN_INFO ++ "qla2x00: gpn entry - portname " ++ "%02x%02x%02x%02x%02x%02x%02x%02x " ++ "port Id=%06x\n", ++ sns->p.gpn_rsp[16], ++ sns->p.gpn_rsp[17], ++ sns->p.gpn_rsp[18], ++ sns->p.gpn_rsp[19], ++ sns->p.gpn_rsp[20], ++ sns->p.gpn_rsp[21], ++ sns->p.gpn_rsp[22], ++ sns->p.gpn_rsp[23], ++ swl[i].d_id.b24);) + + rval = 0; + break; + + } +- }else{ +- DEBUG2(printk(KERN_INFO "%s(%ld): GPN_ID retrying" +- "retry_count=%d\n", +- __func__,ha->host_no,retry_gpnid);) +- // DEBUG2(qla2x00_dump_buffer( +- // (uint8_t *)sns->p.gpn_rsp, +- // GPN_DATA_SIZE);) ++ } else { ++ DEBUG2(printk(KERN_INFO ++ "%s(%ld): GPN_ID retrying retry_count=%d\n", ++ __func__,ha->host_no,retry_gpnid);) + } + } /* end of while */ + + /* Last one exit. */ +- if ( new_dev_list[i].d_id.b.rsvd_1 != 0) { ++ if (swl[i].d_id.b.rsvd_1 != 0) { + break; + } + } /* end of for */ +@@ -14772,9 +14361,8 @@ qla2x00_gpn_id(scsi_qla_host_t *ha, sns + * Kernel context. + */ + static uint8_t +-qla2x00_gan(scsi_qla_host_t *ha, +- sns_cmd_rsp_t *sns, +- dma_addr_t phys_addr, fcdev_t *dev) ++qla2x00_gan(scsi_qla_host_t *ha, sns_cmd_rsp_t *sns, dma_addr_t phys_addr, ++ fc_port_t *fcport) + { + uint8_t rval; + uint16_t wc; +@@ -14785,38 +14373,41 @@ qla2x00_gan(scsi_qla_host_t *ha, + memset(sns, 0, sizeof(sns_cmd_rsp_t)); + wc = GAN_DATA_SIZE / 2; + sns->p.cmd.buffer_length = cpu_to_le16(wc); +- sns->p.cmd.buffer_address[0] = cpu_to_le32(LS_64BITS(phys_addr)); +- sns->p.cmd.buffer_address[1] = cpu_to_le32(MS_64BITS(phys_addr)); ++ sns->p.cmd.buffer_address[0] = cpu_to_le32(LSD(phys_addr)); ++ sns->p.cmd.buffer_address[1] = cpu_to_le32(MSD(phys_addr)); + sns->p.cmd.subcommand_length = __constant_cpu_to_le16(6); + sns->p.cmd.subcommand = __constant_cpu_to_le16(0x100); /* GA_NXT */ + wc = (GAN_DATA_SIZE - 16) / 4; + sns->p.cmd.size = cpu_to_le16(wc); +- sns->p.cmd.param[0] = dev->d_id.b.al_pa; +- sns->p.cmd.param[1] = dev->d_id.b.area; +- sns->p.cmd.param[2] = dev->d_id.b.domain; ++ sns->p.cmd.param[0] = fcport->d_id.b.al_pa; ++ sns->p.cmd.param[1] = fcport->d_id.b.area; ++ sns->p.cmd.param[2] = fcport->d_id.b.domain; + + rval = BIT_0; + if (!qla2x00_send_sns(ha, phys_addr, 14, sizeof(sns_cmd_rsp_t))) { + if (sns->p.gan_rsp[8] == 0x80 && sns->p.gan_rsp[9] == 0x2) { +- dev->d_id.b.al_pa = sns->p.gan_rsp[19]; +- dev->d_id.b.area = sns->p.gan_rsp[18]; +- dev->d_id.b.domain = sns->p.gan_rsp[17]; +- dev->flag = DEV_PUBLIC; ++ fcport->d_id.b.al_pa = sns->p.gan_rsp[19]; ++ fcport->d_id.b.area = sns->p.gan_rsp[18]; ++ fcport->d_id.b.domain = sns->p.gan_rsp[17]; ++ ++ memcpy(fcport->node_name, &sns->p.gan_rsp[284], ++ WWN_SIZE); ++ memcpy(fcport->port_name, &sns->p.gan_rsp[20], ++ WWN_SIZE); + +- /* Save FC name */ +- memcpy(dev->name, &sns->p.gan_rsp[284], WWN_SIZE); +- +- /* Extract portname */ +- memcpy(dev->wwn, &sns->p.gan_rsp[20], WWN_SIZE); ++ /* If port type not equal to N or NL port, skip it. */ ++ if (sns->p.gan_rsp[16] != 1 && ++ sns->p.gan_rsp[16] != 2) ++ fcport->d_id.b.domain = 0xf0; + +- DEBUG3(printk("qla2x00: gan entry - portname " ++ DEBUG2(printk(KERN_INFO "qla2x00: gan entry - portname " + "%02x%02x%02x%02x%02x%02x%02x%02x " + "port Id=%06x\n", + sns->p.gan_rsp[20], sns->p.gan_rsp[21], + sns->p.gan_rsp[22], sns->p.gan_rsp[23], + sns->p.gan_rsp[24], sns->p.gan_rsp[25], + sns->p.gan_rsp[26], sns->p.gan_rsp[27], +- dev->d_id.b24);) ++ fcport->d_id.b24)); + rval = 0; + } + } +@@ -14832,87 +14423,6 @@ qla2x00_gan(scsi_qla_host_t *ha, + } + + /* +- * qla2x00_fabric_login +- * Issue fabric login command. +- * +- * Input: +- * ha = adapter block pointer. +- * device = pointer to FC device type structure. +- * +- * Returns: +- * 0 - Login successfully +- * 1 - Login failed +- * 2 - Initiator device +- * 3 - Fatal error +- */ +-static uint8_t +-qla2x00_fabric_login(scsi_qla_host_t *ha, fcdev_t *device) +-{ +- uint16_t status[3]; +- +- for (;;) { +- DEBUG(printk("scsi(%ld): Trying Fabric Login w/loop id 0x%04x " +- "for port %06x\n", +- ha->host_no, device->loop_id, device->d_id.b24);) +- +- /* Login device on switch. */ +- qla2x00_login_fabric(ha, +- device->loop_id, device->d_id.b.domain, +- device->d_id.b.area, device->d_id.b.al_pa, +- &status[0], BIT_0); +- if( status[0] != 0x4000) +- DEBUG2(printk(KERN_INFO "%s mbx[0]=0x%x mbx[1]=0x%x\n" +- ,__func__,status[0],status[1]);) +- if (status[0] == 0x4007) { +- ha->fabricid[device->loop_id].in_use = FALSE; +- device->loop_id = status[1]; +- +- DEBUG(printk("Fabric Login: port in use - next " +- "loop id=0x%04x, port Id=%06x\n", +- device->loop_id, device->d_id.b24);) +- +- if (device->loop_id <= LAST_SNS_LOOP_ID) +- ha->fabricid[device->loop_id].in_use = TRUE; +- else +- return 1; +- +- } else if (status[0] == 0x4000) { +- if (status[1] & 0x0001) { +- /* Initiator only device */ +- qla2x00_add_initiator_device(ha, device); +- +- return 2; +- } +- +- /* This is target capable device */ +- qla2x00_get_port_database(ha, device, 0); +- +- DEBUG(printk("scsi(%ld): Fabric Login OK. loop " +- "id=0x%04x, port Id=%06x\n", +- ha->host_no, device->loop_id, device->d_id.b24);) +- return 0; +- +- } else if (status[0] == 0x4008) { +- +- if (device->loop_id++ <= LAST_SNS_LOOP_ID) +- ha->fabricid[device->loop_id].in_use = TRUE; +- else +- return 1; +- +- } else if (status[0] == 0x4006) { +- /* No more retry needed. */ +- return 3; +- } else { +- DEBUG(printk("%s(%ld): failed=%x port_id=%06x " +- "loop_id=%x jiffies=%lx.\n", +- __func__, ha->host_no, status[0], +- device->d_id.b24, device->loop_id, jiffies);) +- return 1; +- } +- } +-} +- +-/* + * qla2x00_local_device_login + * Issue local device login command. + * +@@ -14944,64 +14454,6 @@ qla2x00_local_device_login(scsi_qla_host + return rval; + } + +- +-/* +- * qla2x00_configure_fcports +- * Updates Fibre Channel port database +- * +- * Input: +- * ha = adapter block pointer. +- * +- * Returns: +- * 0 = success. +- * 1 = error. +- */ +-static uint8_t +-qla2x00_configure_fcports( scsi_qla_host_t *ha ) +-{ +- uint8_t rval = 0; +- uint8_t rval1; +- +- rval1 = qla2x00_build_fcport_list(ha); +- if (((rval1 & BIT_0) || +- ha->mem_err != 0) && +- ha->sns_retry_cnt < 8 ) { +- +- ha->sns_retry_cnt++; +- set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags); +- } +- +- if(!ha->flags.failover_enabled) +- qla2x00_config_os(ha); +- +- /* If we found all devices then go ready */ +- if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) { +- ha->loop_state = LOOP_READY; +- +- if (ha->flags.failover_enabled) { +- DEBUG(printk("%s(%ld): schedule " +- "FAILBACK EVENT\n", +- __func__, +- ha->host_no);) +- if (!(test_and_set_bit(FAILOVER_EVENT_NEEDED, +- &ha->dpc_flags))) { +- ha->failback_delay = failbackTime; +- } +- set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags); +- ha->failover_type = MP_NOTIFY_LOOP_UP; +- } +- +- DEBUG2(printk("%s(%ld): LOOP READY\n", +- __func__, +- ha->host_no);) +- } else { +- rval = 1; +- } +- +- return(rval); +-} +- +- + /* + * qla2x00_configure_loop + * Updates Fibre Channel Device Database with what is actually on loop. +@@ -15010,7 +14462,6 @@ qla2x00_configure_fcports( scsi_qla_host + * ha = adapter block pointer. + * + * Output: +- * ha->fc_db = updated + * + * Returns: + * 0 = success. +@@ -15022,15 +14473,13 @@ qla2x00_configure_loop(scsi_qla_host_t * + { + uint8_t rval = 0; + uint8_t rval1 = 0; +- uint8_t enable_slot_reuse = FALSE; +- uint16_t cnt; +- static unsigned long flags, save_flags; ++ unsigned long flags, save_flags; + #if defined(FC_IP_SUPPORT) + struct ip_device *ipdev; + #endif ++ unsigned long sflags; + + DEBUG3(printk("%s(%ld): entered\n", __func__, ha->host_no);) +- DEBUG(printk("scsi%ld: Enter %s():\n", ha->host_no, __func__);) + + /* Get Initiator ID */ + if (qla2x00_configure_hba(ha)) { +@@ -15046,17 +14495,19 @@ qla2x00_configure_loop(scsi_qla_host_t * + ipdev->flags &= ~IP_DEV_FLAG_PRESENT; + #endif /* FC_IP_SUPPORT */ + +- save_flags = flags = ha->dpc_flags; +- DEBUG(printk("%s(): dpc flags =0x%lx\n", __func__, flags);) +- +- /* dg 02/26/02 ha->dpc_flags &= ~(LOCAL_LOOP_UPDATE | RSCN_UPDATE); */ ++ ++ DEBUG(printk("%s(): dpc flags =0x%lx\n", __func__, ha->dpc_flags);) + ++ spin_lock_irqsave(&ha->hardware_lock, sflags); ++ save_flags = flags = ha->dpc_flags; + /* + * If we have both an RSCN and PORT UPDATE pending then handle them + * both at the same time. + */ + clear_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags); + clear_bit(RSCN_UPDATE, &ha->dpc_flags); ++ spin_unlock_irqrestore(&ha->hardware_lock, sflags); ++ + ha->mem_err = 0 ; + + /* Determine what we need to do */ +@@ -15084,56 +14535,53 @@ qla2x00_configure_loop(scsi_qla_host_t * + do { + if (test_bit(LOCAL_LOOP_UPDATE, &flags)) { + rval = rval | +- qla2x00_configure_local_loop(ha, +- enable_slot_reuse); ++ qla2x00_configure_local_loop(ha); + } + + if (test_bit(RSCN_UPDATE, &flags)) { +- rval1 = qla2x00_configure_fabric(ha, enable_slot_reuse); ++ rval1 = qla2x00_configure_fabric(ha); + if ((rval1 & BIT_0) && ha->sns_retry_cnt < 8) { + ha->sns_retry_cnt++; + set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags); + } + } + +- /* If devices not configured first time try reusing slots.*/ +- if (enable_slot_reuse == FALSE && (rval & BIT_1)) +- enable_slot_reuse = TRUE; +- else +- enable_slot_reuse = FALSE; +- + /* Isolate error status. */ + if (rval & BIT_0) { + rval = 1; + } else { +- rval = 0; ++ rval = QLA2X00_SUCCESS; + } + +- } while (enable_slot_reuse == TRUE && rval == 0); ++ } while (rval != QLA2X00_SUCCESS); + + if (!atomic_read(&ha->loop_down_timer) && + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))) { + +- /* Mark devices that are not present as DEV_ABSENCE */ +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- if (ha->fc_db[cnt].loop_id & PORT_LOST_ID) { +- ha->fc_db[cnt].flag |= DEV_ABSENCE; +- } else { +- /* device returned */ +- if (ha->fc_db[cnt].loop_id <= +- LAST_SNS_LOOP_ID && +- ha->fc_db[cnt].flag & DEV_ABSENCE) { +- +- ha->fc_db[cnt].flag &= ~DEV_ABSENCE; +- ha->fc_db[cnt].flag |= DEV_RETURN; +- ha->fc_db[cnt].port_login_retry_count = +- ha->port_down_retry_count * +- PORT_RETRY_TIME; ++ if (!ha->flags.failover_enabled) ++ qla2x00_config_os(ha); ++ ++ /* If we found all devices then go ready */ ++ if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) { ++ atomic_set(&ha->loop_state, LOOP_READY); ++ if (ha->flags.failover_enabled) { ++ DEBUG(printk("%s(%ld): schedule " ++ "FAILBACK EVENT\n", ++ __func__, ++ ha->host_no);) ++ if (!(test_and_set_bit(FAILOVER_EVENT_NEEDED, ++ &ha->dpc_flags))) { ++ ha->failback_delay = failbackTime; + } ++ set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags); ++ ha->failover_type = MP_NOTIFY_LOOP_UP; + } +- } + +- if ( qla2x00_configure_fcports( ha ) ) { ++ DEBUG2(printk("%s(%ld): LOOP READY\n", ++ __func__, ++ ha->host_no);) ++ ++ } else { + if (test_bit(LOCAL_LOOP_UPDATE, &save_flags)) + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags); + if (test_bit(RSCN_UPDATE, &save_flags)) +@@ -15158,6 +14606,14 @@ qla2x00_configure_loop(scsi_qla_host_t * + DEBUG3(printk("%s: exiting normally\n", __func__);) + } + ++ /* Restore state if a resync event occured during processing */ ++ if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) { ++ if (test_bit(LOCAL_LOOP_UPDATE, &save_flags)) ++ set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags); ++ if (test_bit(RSCN_UPDATE, &save_flags)) ++ set_bit(RSCN_UPDATE, &ha->dpc_flags); ++ } ++ + return(rval); + } + +@@ -15177,92 +14633,25 @@ qla2x00_config_os(scsi_qla_host_t *ha) + { + fc_port_t *fcport; + fc_lun_t *fclun; +- os_lun_t *lq; +- uint16_t t, l; +- + + DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);) + +- for (fcport = ha->fcport; fcport != NULL; fcport = fcport->next) { +- /* Allocate target */ +-#if 0 +- if (fcport->loop_id == FC_NO_LOOP_ID) ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (atomic_read(&fcport->state) != FC_ONLINE || ++ fcport->port_type == FCT_INITIATOR || ++ fcport->port_type == FCT_BROADCAST) { ++ fcport->dev_id = MAX_TARGETS; + continue; +-#endif +- +- /* Bind fcport to target number. */ +- DEBUG5(printk("%s(%ld): fcport bind= %p\n", +- __func__, +- ha->host_no,fcport);) ++ } + +- if ((t = qla2x00_fcport_bind(ha, fcport)) == MAX_TARGETS) ++ /* Bind FC port to OS target number. */ ++ if (qla2x00_fcport_bind(ha, fcport) == MAX_TARGETS) { + continue; ++ } + +-#if VSA +- if( (ha->fc_db[t].flag & DEV_FLAG_VSA) ) +- fcport->flags |= FC_VSA; +-#endif +- DEBUG5(printk("%s(%ld): going to alloc lun for tgt %d. mask=" +- "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" +- "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" +- "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" +- ".\n", +- __func__, +- ha->host_no, +- t, +- fcport->lun_mask.mask[0], +- fcport->lun_mask.mask[1], +- fcport->lun_mask.mask[2], +- fcport->lun_mask.mask[3], +- fcport->lun_mask.mask[4], +- fcport->lun_mask.mask[5], +- fcport->lun_mask.mask[6], +- fcport->lun_mask.mask[7], +- fcport->lun_mask.mask[8], +- fcport->lun_mask.mask[9], +- fcport->lun_mask.mask[10], +- fcport->lun_mask.mask[11], +- fcport->lun_mask.mask[12], +- fcport->lun_mask.mask[13], +- fcport->lun_mask.mask[14], +- fcport->lun_mask.mask[15], +- fcport->lun_mask.mask[16], +- fcport->lun_mask.mask[17], +- fcport->lun_mask.mask[18], +- fcport->lun_mask.mask[19], +- fcport->lun_mask.mask[20], +- fcport->lun_mask.mask[21], +- fcport->lun_mask.mask[22], +- fcport->lun_mask.mask[23], +- fcport->lun_mask.mask[24], +- fcport->lun_mask.mask[25], +- fcport->lun_mask.mask[26], +- fcport->lun_mask.mask[27], +- fcport->lun_mask.mask[28], +- fcport->lun_mask.mask[29], +- fcport->lun_mask.mask[30], +- fcport->lun_mask.mask[31]);) +- +- /* Allocate LUNs */ +- for (fclun = fcport->fclun; +- fclun != NULL; fclun = fclun->next) { +- +- l = fclun->lun; /* Must not exceed MAX_LUN */ +- +- /* +- * Always alloc LUN 0 so kernel will scan past LUN 0. +- */ +- if (l != 0 && +- (EXT_IS_LUN_BIT_SET(&(fcport->lun_mask), l))) { +- +- /* mask this LUN */ +- continue; +- } +- +- if ((lq = qla2x00_lun_alloc(ha, t, l)) == NULL) +- continue; +- +- lq->fclun = fclun; ++ /* Bind FC LUN to OS LUN number. */ ++ list_for_each_entry(fclun, &fcport->fcluns, list) { ++ qla2x00_fclun_bind(ha, fcport, fclun); + } + } + +@@ -15286,445 +14675,162 @@ qla2x00_config_os(scsi_qla_host_t *ha) + static uint16_t + qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport) + { +- int rval; +- uint16_t t; ++ uint16_t tgt; + os_tgt_t *tq; ++ uint8_t rval; + +- ENTER(__func__); +- +- /* Check for tgt already allocated for persistent binding. */ +- for (t = 0; t < MAX_TARGETS; t++) { +- if ((tq = TGT_Q(ha, t)) == NULL) ++ /* Check for persistent binding. */ ++ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { ++ if ((tq = TGT_Q(ha, tgt)) == NULL) + continue; +- +- rval = 0; ++ rval = 1; + switch (ha->binding_type) { +- case BIND_BY_PORT_NAME: +- rval = memcmp(fcport->port_name, +- tq->port_name, WWN_SIZE); +- break; +- + case BIND_BY_PORT_ID: +- rval = (fcport->d_id.b24 != tq->d_id.b24); +- break; ++ if(fcport->d_id.b24 == tq->d_id.b24){ ++ memcpy(tq->node_name, fcport->node_name, ++ WWN_SIZE); ++ memcpy(tq->port_name, fcport->port_name, ++ WWN_SIZE); ++ rval = 0; ++ } ++ break; + +- case BIND_BY_NODE_NAME: +- rval = memcmp(fcport->node_name, +- tq->node_name, WWN_SIZE); ++ case BIND_BY_PORT_NAME: ++ if (memcmp(fcport->port_name, tq->port_name, ++ WWN_SIZE) == 0) { ++ /* In case of persistent binding, update ++ * the WWNN */ ++ memcpy(tq->node_name, fcport->node_name, ++ WWN_SIZE); ++ rval = 0; ++ } + break; + } +- /* Found a persistently bound match */ +- if (rval == 0) +- break; ++ if(rval == 0) ++ break; + } + +- if (fcport->loop_id == FC_NO_LOOP_ID) { +- DEBUG(tq = TGT_Q(ha, t);) +- DEBUG(printk("scsi%ld: Missing target ID %02x @ %p to " +- "loop id: %04x, port state=0x%x, " +- "port down retry=%d\n", +- ha->host_no, +- t, +- tq, +- fcport->loop_id, +- atomic_read(&fcport->state), +- atomic_read(&fcport->port_down_timer));) +- return (MAX_TARGETS); ++ if ( ConfigRequired == 0 && tgt == MAX_TARGETS) { ++ /* Check if targetID 0 available. */ ++ tgt = 0; ++ ++ if (TGT_Q(ha, tgt) != NULL) { ++ /* Locate first free target for device. */ ++ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { ++ if (TGT_Q(ha, tgt) == NULL) { ++ break; ++ } ++ } ++ } ++ if (tgt != MAX_TARGETS) { ++ if ((tq = qla2x00_tgt_alloc(ha, tgt)) != NULL) { ++ memcpy(tq->node_name, fcport->node_name, ++ WWN_SIZE); ++ memcpy(tq->port_name, fcport->port_name, ++ WWN_SIZE); ++ tq->d_id.b24 = fcport->d_id.b24; ++ } ++ } + } + +- if (t != MAX_TARGETS) { +- tq = TGT_Q(ha, t); ++ /* Reset target numbers incase it changed. */ ++ fcport->dev_id = tgt; ++ if (tgt != MAX_TARGETS && tq != NULL) { ++ DEBUG2(printk("scsi(%ld): Assigning target ID=%02d @ %p to " ++ "loop id=0x%04x, port state=0x%x, port down retry=%d\n", ++ ha->host_no, tgt, tq, fcport->loop_id, ++ atomic_read(&fcport->state), ++ atomic_read(&fcport->port_down_timer))); ++ + tq->vis_port = fcport; ++ tq->port_down_retry_count = ha->port_down_retry_count; + +- DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to " +- "loop id: %04x, port state=0x%x, " +- "port down retry=%d\n", +- ha->host_no, +- t, +- tq, +- fcport->loop_id, +- atomic_read(&fcport->state), +- atomic_read(&fcport->port_down_timer));) +- return (t); ++ if (!ha->flags.failover_enabled) ++ qla2x00_get_lun_mask_from_config(ha, fcport, tgt, 0); + } + +- /* Check for persistent binding not yet configured. */ +- for (t = 0; t < MAX_TARGETS; t++) { +- rval = 0; +- switch (ha->binding_type) { +- case BIND_BY_PORT_NAME: +- rval = memcmp(fcport->port_name, +- ha->fc_db[t].wwn, WWN_SIZE); +- break; ++ if ( ConfigRequired == 0 && tgt == MAX_TARGETS) { ++ printk(KERN_WARNING ++ "scsi(%ld): Unable to bind fcport, loop_id=%x\n", ++ ha->host_no, fcport->loop_id); ++ } + +- case BIND_BY_PORT_ID: +- rval = (fcport->d_id.b24 != +- ha->fc_db[t].d_id.b24); +- break; ++ return (tgt); ++} + +- case BIND_BY_NODE_NAME: +- rval = memcmp(fcport->node_name, +- ha->fc_db[t].name, WWN_SIZE); +- break; +- } +- /* Found not-yet-allocated target at t */ +- if (rval == 0) +- break; +- } ++/* ++ * qla2x00_fclun_bind ++ * Binds all FC device LUNS to OS LUNS. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * fcport: FC port structure pointer. ++ * ++ * Returns: ++ * target number ++ * ++ * Context: ++ * Kernel context. ++ */ ++static os_lun_t * ++qla2x00_fclun_bind(scsi_qla_host_t *ha, fc_port_t *fcport, fc_lun_t *fclun) ++{ ++ os_lun_t *lq; ++ uint16_t tgt; ++ uint16_t lun; + +- if (t == MAX_TARGETS) { +- /* Check if slot at loop ID is available. */ +- t = fcport->loop_id; +- if (TGT_Q(ha, t) != NULL) { +- /* Locate first free target id in db for device. */ +- for (t = 0; t < MAX_TARGETS; t++) { +- if (TGT_Q(ha, t) == NULL) +- break; +- } +- } ++ tgt = fcport->dev_id; ++ lun = fclun->lun; ++ ++ /* Allocate LUNs */ ++ if (lun >= MAX_LUNS) { ++ DEBUG2(printk("scsi(%ld): Unable to bind lun, invalid " ++ "lun=(%x).\n", ha->host_no, lun)); ++ return (NULL); + } + +- if (t != MAX_TARGETS) { +- tq = qla2x00_tgt_alloc(ha, t); +- if (tq != NULL) { +- memcpy(tq->port_name, fcport->port_name, WWN_SIZE); +- tq->d_id.b24 = fcport->d_id.b24; +- memcpy(tq->node_name, fcport->node_name, WWN_SIZE); +- } +- else +- t = MAX_TARGETS; ++ /* Always alloc LUN 0 so kernel will scan past LUN 0. */ ++ if (lun != 0 && (EXT_IS_LUN_BIT_SET(&(fcport->lun_mask), lun))) { ++ return (NULL); + } + +- if (t == MAX_TARGETS) { ++ if ((lq = qla2x00_lun_alloc(ha, tgt, lun)) == NULL) { + printk(KERN_WARNING +- "%s(): **** FAILED ****", __func__); +- } else { +- if (!ha->flags.failover_enabled) { +- /* fcport IS the visible port in non-failover mode */ +- tq = TGT_Q(ha, t); +- tq->vis_port = fcport; +- } +- +- DEBUG(tq = TGT_Q(ha, t);) +- DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to " +- "loop id: %04x, port state=0x%x, " +- "port down retry=%d\n", +- ha->host_no, +- t, +- tq, +- fcport->loop_id, +- atomic_read(&fcport->state), +- atomic_read(&fcport->port_down_timer));) ++ "scsi(%ld): Unable to bind fclun, loop_id=%x lun=%x\n", ++ ha->host_no, fcport->loop_id, lun); ++ return (NULL); + } + +- LEAVE(__func__); ++ lq->fclun = fclun; + +- return (t); ++ return (lq); + } + + /* +- * qla2x00_build_fcport_list +- * Updates device on list. ++ * qla2x00_mark_device_lost ++ * Updates fcport state when device goes offline. + * + * Input: + * ha = adapter block pointer. + * fcport = port structure pointer. + * + * Return: +- * 0 - Success +- * BIT_0 - error ++ * None. + * + * Context: +- * Kernel context. + */ +-static int +-qla2x00_build_fcport_list(scsi_qla_host_t *ha) ++STATIC void ++qla2x00_mark_device_lost(scsi_qla_host_t *ha, fc_port_t *fcport, int do_login) + { +- int rval; +- fcdev_t *dev; +- int found = 0; +- int cnt, i; +- fc_port_t *fcport; +- fc_port_t *prev_fcport; +- +- ENTER(__func__); +- +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- dev = &ha->fc_db[cnt]; +- +- /* Skip if zero port name */ +- if (qla2x00_is_wwn_zero(dev->wwn)) { +- continue; +- } +- +- DEBUG3(printk("%s(%ld): found tgt %d in fc_db.\n", +- __func__, ha->host_no, cnt);) +- +- /* Check for matching device in port list. */ +- found = 0; +- prev_fcport = NULL; +- for (i=0, fcport = ha->fcport; +- fcport != NULL; +- fcport = fcport->next, i++) { +- +- rval = 1; +- switch (ha->binding_type) { +- case BIND_BY_PORT_NAME: +- rval = memcmp(dev->wwn, +- fcport->port_name, +- WWN_SIZE); +- break; +- +- case BIND_BY_PORT_ID: +- rval = (dev->d_id.b24 != +- fcport->d_id.b24); +- break; +- +- case BIND_BY_NODE_NAME: +- rval = memcmp(dev->name, +- fcport->node_name, +- WWN_SIZE); +- break; +- } +- if (rval) { +- prev_fcport = fcport; +- continue; +- } +- +- /* +- * Update volatile unbound fields for PortID binding +- * only +- */ +- if (ha->binding_type == BIND_BY_PORT_ID) { +- memcpy(fcport->node_name, dev->name, WWN_SIZE); +- memcpy(fcport->port_name, dev->wwn, WWN_SIZE); +- } +- +- DEBUG(printk("%s(%ld): Found matching port %06x, " +- "device flags= 0x%x\n", +- __func__,ha->host_no, +- dev->d_id.b24, +- dev->flag);) +- +- /* if device found is missing then mark it */ +- if (dev->flag & DEV_ABSENCE) { +- DEBUG(printk("%s(%ld): Port missing --- " +- "(port_name) -> " +- "%02x%02x%02x%02x%02x" +- "%02x%02x%02x, " +- "loop id = 0x%04x\n", +- __func__,ha->host_no, +- fcport->port_name[0], +- fcport->port_name[1], +- fcport->port_name[2], +- fcport->port_name[3], +- fcport->port_name[4], +- fcport->port_name[5], +- fcport->port_name[6], +- fcport->port_name[7], +- fcport->loop_id);) +- +- fcport->loop_id = FC_NO_LOOP_ID; +- +- qla2x00_mark_device_lost(ha, fcport); +- +- found++; +- break; +- } +- +- /* if device was missing but returned */ +- if (fcport->loop_id == FC_NO_LOOP_ID || +- !(dev->flag & DEV_PUBLIC) || +- atomic_read(&fcport->state) != FC_ONLINE) { +- +- DEBUG(printk("%s(): Port returned +++ " +- "(port_name) -> " +- "%02x%02x%02x%02x%02x" +- "%02x%02x%02x, " +- "loop id = 0x%04x\n", +- __func__, +- fcport->port_name[0], +- fcport->port_name[1], +- fcport->port_name[2], +- fcport->port_name[3], +- fcport->port_name[4], +- fcport->port_name[5], +- fcport->port_name[6], +- fcport->port_name[7], +- fcport->loop_id);) +- +- fcport->loop_id = dev->loop_id; +- fcport->old_loop_id = dev->loop_id; +- fcport->d_id.b24 = dev->d_id.b24; +- +- break; +- } +- +- DEBUG(printk("%s(): Match - fcport[%d] = fc_db[%d] " +- "(ignored) -> " +- "%02x%02x%02x%02x%02x%02x%02x%02x, " +- "loop id = 0x%04x\n", +- __func__, +- i, +- cnt, +- fcport->port_name[0], +- fcport->port_name[1], +- fcport->port_name[2], +- fcport->port_name[3], +- fcport->port_name[4], +- fcport->port_name[5], +- fcport->port_name[6], +- fcport->port_name[7], +- fcport->loop_id);) +- found++; +- break; +- } +- if (found) +- continue; +- +- /* Add device to port list. */ +- if (fcport == NULL) { +- DEBUG3(printk("%s(%ld): adding new device to list.\n", +- __func__, +- ha->host_no);) +- +- fcport = kmalloc(sizeof(fc_port_t), GFP_ATOMIC); +- if (fcport == NULL) +- break; +- +- memset(fcport, 0, sizeof(fc_port_t)); +- +- /* copy fields into fcport */ +- memcpy(fcport->port_name, dev->wwn, WWN_SIZE); +- memcpy(fcport->node_name, dev->name, WWN_SIZE); +- +- fcport->dev_id = cnt; +- +- if (dev->flag & DEV_ABSENCE) { +- DEBUG(printk("%s(): Port missing --- " +- "(port_name) -> " +- "%02x%02x%02x%02x" +- "%02x%02x%02x%02x, " +- "loop id = 0x%04x\n", +- __func__, +- fcport->port_name[0], +- fcport->port_name[1], +- fcport->port_name[2], +- fcport->port_name[3], +- fcport->port_name[4], +- fcport->port_name[5], +- fcport->port_name[6], +- fcport->port_name[7], +- fcport->loop_id);) +- +- fcport->loop_id = FC_NO_LOOP_ID; +- +- qla2x00_mark_device_lost(ha, fcport); +- } else { +- fcport->loop_id = dev->loop_id; +- fcport->old_loop_id = dev->loop_id; +- } +- +- fcport->d_id.b24 = dev->d_id.b24; +- +- DEBUG(printk("%s(): New Device +++ (port_name) -> " +- "%02x%02x%02x%02x%02x%02x%02x%02x, " +- "loop id = 0x%04x\n", +- __func__, +- fcport->port_name[0], +- fcport->port_name[1], +- fcport->port_name[2], +- fcport->port_name[3], +- fcport->port_name[4], +- fcport->port_name[5], +- fcport->port_name[6], +- fcport->port_name[7], +- fcport->loop_id);) +- +- /* flags */ +- if (dev->flag & DEV_PUBLIC) +- fcport->flags |= FC_FABRIC_DEVICE; +- +- if (dev->flag & DEV_INITIATOR) +- fcport->flags |= FC_INITIATOR_DEVICE; +- +- /* Assume the device supports RLC */ +- fcport->flags |= FC_SUPPORT_RPT_LUNS; +- +- if (!ha->flags.failover_enabled) +- qla2x00_get_lun_mask_from_config(ha, +- fcport, cnt, 0); +- +- if (prev_fcport == NULL) { +- /* nothing in fcport list yet */ +- ha->fcport = fcport; +- } else { +- /* +- * prev_fcport should be pointing to last +- * port in list +- */ +- prev_fcport->next = fcport; +- } +- +- } else { +- DEBUG3(printk("%s(%ld): updating device to list.\n", +- __func__, ha->host_no);) +- fcport->loop_id = dev->loop_id; +- fcport->loop_id = dev->loop_id; +- fcport->old_loop_id = dev->loop_id; +- } +- +- if (atomic_read(&fcport->state) != FC_ONLINE) { +- if (qla2x00_update_fcport(ha, fcport, cnt)) { +- DEBUG2(printk(KERN_INFO "%s(%ld): update_fcport " +- "failed.\n", +- __func__, ha->host_no);) +- +- return BIT_0; +- } +- } +- +- } +- +- LEAVE(__func__); +- +- return (0); +-} +- +-/* +- * qla2x00_mark_device_lost +- * Updates fcport state when device goes offline. +- * +- * Input: +- * ha = adapter block pointer. +- * fcport = port structure pointer. +- * +- * Return: +- * None. +- * +- * Context: +- */ +-STATIC void +-qla2x00_mark_device_lost( scsi_qla_host_t *ha, fc_port_t *fcport ) +-{ +-#if 0 +- /* +- * No point in marking the device as lost, if the device is already +- * DEAD. +- */ +- if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) +- return; +- +- /* Mark the device LOST */ +- atomic_set(&fcport->state, FC_DEVICE_LOST); +-#else + /* + * We may need to retry the login, so don't change the + * state of the port but do the retries. + */ + if (atomic_read(&fcport->state) != FC_DEVICE_DEAD) + atomic_set(&fcport->state, FC_DEVICE_LOST); +-#endif ++ ++ if (!do_login) ++ return; + + #if defined(PORT_LOGIN_4xWAY) + if (PORT_LOGIN_RETRY(fcport) > 0) { +@@ -15767,107 +14873,562 @@ qla2x00_mark_device_lost( scsi_qla_host_ + set_bit(RELOGIN_NEEDED, &ha->dpc_flags); + } + #endif +-} ++} ++ ++/* ++ * qla2x00_mark_all_devices_lost ++ * Updates fcport state when device goes offline. ++ * ++ * Input: ++ * ha = adapter block pointer. ++ * fcport = port structure pointer. ++ * ++ * Return: ++ * None. ++ * ++ * Context: ++ */ ++STATIC void ++qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha) ++{ ++ struct list_head *fcpl; ++ fc_port_t *fcport; ++ ++ list_for_each(fcpl, &ha->fcports) { ++ fcport = list_entry(fcpl, fc_port_t, list); ++ if(fcport->port_type != FCT_TARGET) ++ continue; ++ ++ /* ++ * No point in marking the device as lost, if the device is ++ * already DEAD. ++ */ ++ if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) ++ continue; ++ ++ atomic_set(&fcport->state, FC_DEVICE_LOST); ++ } ++} ++ ++/* ++ * qla2x00_check_for_devices_online ++ * ++ * Check fcport state of all devices to make sure online. ++ * ++ * Input: ++ * ha = adapter block pointer. ++ * ++ * Return: ++ * None. ++ * ++ * Context: ++ */ ++STATIC uint8_t ++qla2x00_check_for_devices_online(scsi_qla_host_t *ha) ++{ ++ fc_port_t *fcport; ++ int found, cnt; ++ ++ found = 0; ++ cnt = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; ++ ++ if ((atomic_read(&fcport->state) == FC_ONLINE) || ++ (fcport->flags & FC_FAILBACK_DISABLE) || ++ (atomic_read(&fcport->state) == FC_DEVICE_DEAD)) ++ found++; ++ ++ cnt++; ++ } ++ if (cnt == found) { ++ DEBUG5(printk("%s(%ld): all online\n", ++ __func__, ++ ha->host_no);) ++ return 1; ++ } else ++ return 0; ++} ++ ++STATIC void ++qla2x00_probe_for_all_luns(scsi_qla_host_t *ha) ++{ ++ fc_port_t *fcport; ++ ++ qla2x00_mark_all_devices_lost(ha); ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; ++ ++ qla2x00_update_fcport(ha, fcport); ++ } ++} ++ ++/* ++ * qla2x00_update_fcport ++ * Updates device on list. ++ * ++ * Input: ++ * ha = adapter block pointer. ++ * fcport = port structure pointer. ++ * ++ * Return: ++ * 0 - Success ++ * BIT_0 - error ++ * ++ * Context: ++ * Kernel context. ++ */ ++static int ++qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport) ++{ ++ int rval; ++ ++ DEBUG4(printk("%s(): entered, loop_id = %d\n", ++ __func__, ++ fcport->loop_id);) ++ ++ fcport->port_login_retry_count = ++ ha->port_down_retry_count * PORT_RETRY_TIME; ++ fcport->flags &= ~FC_LOGIN_NEEDED; ++ atomic_set(&fcport->state, FC_ONLINE); ++ fcport->login_retry = 0; ++ fcport->ha = ha; ++ atomic_set(&fcport->port_down_timer, ++ ha->port_down_retry_count * PORT_RETRY_TIME); ++ ++ if (fcport->port_type != FCT_TARGET) ++ return (QLA2X00_SUCCESS); ++ ++ /* Do LUN discovery. */ ++ rval = qla2x00_lun_discovery(ha, fcport); ++ if ( (fcport->flags & (FC_MSA_DEVICE|FC_EVA_DEVICE)) ) ++ qla2x00_test_active_port(fcport); ++ ++ return (rval); ++} ++ ++ ++ ++int ++qla2x00_issue_scsi_inquiry(scsi_qla_host_t *ha, ++ fc_port_t *fcport, fc_lun_t *fclun ) ++{ ++ inq_cmd_rsp_t *pkt; ++ int rval; ++ dma_addr_t phys_address = 0; ++ int retry; ++ uint16_t comp_status; ++ uint16_t scsi_status; ++ int ret = 0; ++ ++ uint16_t lun = fclun->lun; ++ ++ ++ pkt = pci_alloc_consistent(ha->pdev, ++ sizeof(inq_cmd_rsp_t), &phys_address); ++ ++ if (pkt == NULL) { ++ printk(KERN_WARNING ++ "scsi(%ld): Memory Allocation failed - INQ\n", ++ ha->host_no); ++ ha->mem_err++; ++ return BIT_0; ++ } ++ ++ retry = 2; ++ do { ++ memset(pkt, 0, sizeof(inq_cmd_rsp_t)); ++ pkt->p.cmd.entry_type = COMMAND_A64_TYPE; ++ pkt->p.cmd.entry_count = 1; ++ pkt->p.cmd.lun = cpu_to_le16(lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else ++ pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif ++ pkt->p.cmd.control_flags = ++ __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG); ++ pkt->p.cmd.scsi_cdb[0] = INQ_SCSI_OPCODE; ++ pkt->p.cmd.scsi_cdb[4] = INQ_DATA_SIZE; ++ pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1); ++ pkt->p.cmd.timeout = __constant_cpu_to_le16(3); ++ pkt->p.cmd.byte_count = ++ __constant_cpu_to_le32(INQ_DATA_SIZE); ++ pkt->p.cmd.dseg_0_address[0] = cpu_to_le32( ++ LSD(phys_address + sizeof(sts_entry_t))); ++ pkt->p.cmd.dseg_0_address[1] = cpu_to_le32( ++ MSD(phys_address + sizeof(sts_entry_t))); ++ pkt->p.cmd.dseg_0_length = ++ __constant_cpu_to_le32(INQ_DATA_SIZE); ++ ++ DEBUG(printk("scsi(%ld:0x%x:%d) %s: Inquiry - fcport=%p," ++ " lun (%d)\n", ++ ha->host_no, fcport->loop_id, lun, ++ __func__,fcport, ++ lun);) ++ ++ rval = qla2x00_issue_iocb(ha, pkt, ++ phys_address, sizeof(inq_cmd_rsp_t)); ++ ++ comp_status = le16_to_cpu(pkt->p.rsp.comp_status); ++ scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status); ++ ++ } while ((rval != QLA2X00_SUCCESS || ++ comp_status != CS_COMPLETE) && ++ retry--); ++ ++ if (rval != QLA2X00_SUCCESS || ++ comp_status != CS_COMPLETE || ++ (scsi_status & SS_CHECK_CONDITION)) { ++ ++ DEBUG2(printk("%s: Failed lun inquiry - " ++ "inq[0]= 0x%x, comp status 0x%x, " ++ "scsi status 0x%x. loop_id=%d\n", ++ __func__,pkt->inq[0], ++ comp_status, ++ scsi_status, ++ fcport->loop_id);) ++ ret = 1; ++ } else { ++ fclun->inq0 = pkt->inq[0]; ++ } ++ ++ pci_free_consistent(ha->pdev, sizeof(inq_cmd_rsp_t), pkt, phys_address); ++ ++ return( ret ); ++} ++ ++int ++qla2x00_test_active_lun( fc_port_t *fcport, fc_lun_t *fclun ) ++{ ++ tur_cmd_rsp_t *pkt; ++ int rval = 0 ; ++ dma_addr_t phys_address = 0; ++ int retry; ++ uint16_t comp_status; ++ uint16_t scsi_status; ++ scsi_qla_host_t *ha; ++ uint16_t lun = 0; ++ ++ ENTER(__func__); ++ ++ ++ ha = fcport->ha; ++ if (atomic_read(&fcport->state) == FC_DEVICE_DEAD){ ++ DEBUG2(printk("scsi(%ld) %s leaving: Port loop_id 0x%02x is marked DEAD\n", ++ ha->host_no,__func__,fcport->loop_id);) ++ return rval; ++ } ++ ++ if ( fclun == NULL ){ ++ DEBUG2(printk("scsi(%ld) %s Bad fclun ptr on entry.\n", ++ ha->host_no,__func__);) ++ return rval; ++ } ++ ++ lun = fclun->lun; ++ ++ pkt = pci_alloc_consistent(ha->pdev, ++ sizeof(tur_cmd_rsp_t), &phys_address); ++ ++ if (pkt == NULL) { ++ printk(KERN_WARNING ++ "scsi(%ld): Memory Allocation failed - TUR\n", ++ ha->host_no); ++ ha->mem_err++; ++ return rval; ++ } ++ ++ retry = 4; ++ do { ++ memset(pkt, 0, sizeof(tur_cmd_rsp_t)); ++ pkt->p.cmd.entry_type = COMMAND_A64_TYPE; ++ pkt->p.cmd.entry_count = 1; ++ pkt->p.cmd.lun = cpu_to_le16(lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else ++ pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif ++ /* no direction for this command */ ++ pkt->p.cmd.control_flags = ++ __constant_cpu_to_le16(CF_SIMPLE_TAG); ++ pkt->p.cmd.scsi_cdb[0] = TEST_UNIT_READY; ++ pkt->p.cmd.dseg_count = __constant_cpu_to_le16(0); ++ pkt->p.cmd.timeout = __constant_cpu_to_le16(3); ++ pkt->p.cmd.byte_count = __constant_cpu_to_le32(0); + +-/* +- * qla2x00_mark_all_devices_lost +- * Updates fcport state when device goes offline. +- * +- * Input: +- * ha = adapter block pointer. +- * fcport = port structure pointer. +- * +- * Return: +- * None. +- * +- * Context: +- */ +-STATIC void +-qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha) +-{ +- fc_port_t *fcport; ++ rval = qla2x00_issue_iocb(ha, pkt, ++ phys_address, sizeof(tur_cmd_rsp_t)); + +- for (fcport = ha->fcport; fcport != NULL; fcport = fcport->next) { +- /* +- * No point in marking the device as lost, if the device is +- * already DEAD. +- */ +- if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) +- continue; ++ comp_status = le16_to_cpu(pkt->p.rsp.comp_status); ++ scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status); + +- atomic_set(&fcport->state, FC_DEVICE_LOST); ++ /* Port Logged Out, so don't retry */ ++ if( comp_status == CS_PORT_LOGGED_OUT || ++ comp_status == CS_PORT_CONFIG_CHG || ++ comp_status == CS_PORT_BUSY || ++ comp_status == CS_INCOMPLETE || ++ comp_status == CS_PORT_UNAVAILABLE ) ++ break; ++ ++ DEBUG(printk("scsi(%ld:%04x:%d) " ++ "%s: TEST UNIT READY - " ++ " comp status 0x%x, " ++ "scsi status 0x%x, rval=%d\n",ha->host_no, ++ fcport->loop_id, ++ lun,__func__, ++ comp_status, scsi_status, rval);) ++ if( (scsi_status & SS_CHECK_CONDITION) ) { ++ DEBUG2(printk("%s: check status bytes = 0x%02x 0x%02x 0x%02x\n", ++ __func__, pkt->p.rsp.req_sense_data[2], ++ pkt->p.rsp.req_sense_data[12] , ++ pkt->p.rsp.req_sense_data[13]);) ++ ++ if (pkt->p.rsp.req_sense_data[2] == NOT_READY && ++ pkt->p.rsp.req_sense_data[12] == 0x4 && ++ pkt->p.rsp.req_sense_data[13] == 0x2 ) ++ break; ++ } ++ } while ( (rval != QLA2X00_SUCCESS || ++ comp_status != CS_COMPLETE || ++ (scsi_status & SS_CHECK_CONDITION)) && ++ retry--); ++ ++ if (rval == QLA2X00_SUCCESS && ++ ( !( (scsi_status & SS_CHECK_CONDITION) && ++ (pkt->p.rsp.req_sense_data[2] == NOT_READY && ++ pkt->p.rsp.req_sense_data[12] == 0x4 && ++ pkt->p.rsp.req_sense_data[13] == 0x2 ) ) && ++ comp_status == CS_COMPLETE) ) { ++ ++ DEBUG2(printk("scsi(%ld) %s - Lun (0x%02x:%d) set to ACTIVE.\n", ++ ha->host_no, __func__, ++ (uint8_t)fcport->loop_id,lun);) ++ /* We found an active path */ ++ fclun->flags |= FC_ACTIVE_LUN; ++ rval = 1; ++ } else { ++ DEBUG2(printk("scsi(%ld) %s - Lun (0x%02x:%d) set to INACTIVE.\n", ++ ha->host_no, __func__, ++ (uint8_t)fcport->loop_id,lun);) ++ /* fcport->flags &= ~(FC_MSA_PORT_ACTIVE); */ ++ fclun->flags &= ~(FC_ACTIVE_LUN); + } ++ ++ pci_free_consistent(ha->pdev, sizeof(tur_cmd_rsp_t), ++ pkt, phys_address); ++ ++ LEAVE(__func__); ++ ++ return rval; ++ + } + +-/* +- * qla2x00_check_for_devices_online +- * +- * Check fcport state of all devices to make sure online. +- * +- * Input: +- * ha = adapter block pointer. +- * +- * Return: +- * None. +- * +- * Context: +- */ +-STATIC uint8_t +-qla2x00_check_for_devices_online(scsi_qla_host_t *ha) ++ ++static fc_lun_t * ++qla2x00_find_data_lun( fc_port_t *fcport ) + { +- fc_port_t *fcport; +- int found, cnt; ++ scsi_qla_host_t *ha; ++ fc_lun_t *fclun, *ret_fclun; + +- found = 0; +- for (cnt = 0, fcport = ha->fcport; +- fcport != NULL; +- fcport = fcport->next, cnt++) { ++ ha = fcport->ha; ++ ret_fclun = NULL; + +- if ((atomic_read(&fcport->state) == FC_ONLINE) || +- (atomic_read(&fcport->state) == FC_DEVICE_DEAD)) +- found++; ++ /* Go thur all luns and find a good data lun */ ++ list_for_each_entry(fclun, &fcport->fcluns, list) { ++ fclun->flags &= ~FC_VISIBLE_LUN; ++ if (fclun->inq0 == 0xff) ++ qla2x00_issue_scsi_inquiry(ha, fcport, fclun); ++ if (fclun->inq0 == 0xc) ++ fclun->flags |= FC_VISIBLE_LUN; ++ else if (fclun->inq0 == 0 ) { ++ ret_fclun = fclun; ++ } + } +- if (cnt == found) { +- DEBUG5(printk("%s(%ld): all online\n", +- __func__, +- ha->host_no);) +- return 1; +- } else +- return 0; ++ return (ret_fclun); + } + + /* +- * qla2x00_update_fcport +- * Updates device on list. ++ * qla2x00_test_active_port ++ * Determines if the port is in active or standby mode. First, we ++ * need to locate a storage lun then do a TUR on it. + * + * Input: +- * ha = adapter block pointer. + * fcport = port structure pointer. ++ * + * + * Return: +- * 0 - Success +- * BIT_0 - error ++ * 0 - Standby or error ++ * 1 - Active + * + * Context: + * Kernel context. + */ +-static int +-qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int index) ++int ++qla2x00_test_active_port( fc_port_t *fcport ) + { +- DEBUG4(printk("%s(): entered, loop_id = %d\n", +- __func__, ++ tur_cmd_rsp_t *pkt; ++ int rval = 0 ; ++ dma_addr_t phys_address = 0; ++ int retry; ++ uint16_t comp_status; ++ uint16_t scsi_status; ++ scsi_qla_host_t *ha; ++ uint16_t lun = 0; ++ fc_lun_t *fclun; ++ ++ ENTER(__func__); ++ ++ ++ ha = fcport->ha; ++ if (atomic_read(&fcport->state) == FC_DEVICE_DEAD){ ++ DEBUG2(printk("scsi(%ld) %s leaving: Port 0x%02x is marked DEAD\n", ++ ha->host_no,__func__,fcport->loop_id);) ++ return rval; ++ } ++ ++ ++ if( (fclun = qla2x00_find_data_lun( fcport )) == NULL ) { ++ DEBUG2(printk(KERN_INFO "%s leaving: Couldn't find data lun\n",__func__);) ++ return rval; ++ } ++ lun = fclun->lun; ++ ++ pkt = pci_alloc_consistent(ha->pdev, ++ sizeof(tur_cmd_rsp_t), &phys_address); ++ ++ if (pkt == NULL) { ++ printk(KERN_WARNING ++ "scsi(%ld): Memory Allocation failed - TUR\n", ++ ha->host_no); ++ ha->mem_err++; ++ return rval; ++ } ++ ++ retry = 4; ++ do { ++ memset(pkt, 0, sizeof(tur_cmd_rsp_t)); ++ pkt->p.cmd.entry_type = COMMAND_A64_TYPE; ++ pkt->p.cmd.entry_count = 1; ++ pkt->p.cmd.lun = cpu_to_le16(lun); ++ /* pkt->p.cmd.lun = lun; */ ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else ++ pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif ++ /* no direction for this command */ ++ pkt->p.cmd.control_flags = ++ __constant_cpu_to_le16(CF_SIMPLE_TAG); ++ pkt->p.cmd.scsi_cdb[0] = TEST_UNIT_READY; ++ pkt->p.cmd.dseg_count = __constant_cpu_to_le16(0); ++ pkt->p.cmd.timeout = __constant_cpu_to_le16(3); ++ pkt->p.cmd.byte_count = __constant_cpu_to_le32(0); ++ ++ rval = qla2x00_issue_iocb(ha, pkt, ++ phys_address, sizeof(tur_cmd_rsp_t)); ++ ++ comp_status = le16_to_cpu(pkt->p.rsp.comp_status); ++ scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status); ++ ++ /* Port Logged Out, so don't retry */ ++ if( comp_status == CS_PORT_LOGGED_OUT || ++ comp_status == CS_PORT_CONFIG_CHG || ++ comp_status == CS_PORT_BUSY || ++ comp_status == CS_INCOMPLETE || ++ comp_status == CS_PORT_UNAVAILABLE ) ++ break; ++ ++ DEBUG(printk("scsi(%ld:%04x:%d) " ++ "%s: TEST UNIT READY - " ++ " comp status 0x%x, " ++ "scsi status 0x%x, rval=%d\n",ha->host_no, ++ fcport->loop_id, ++ lun,__func__, ++ comp_status, scsi_status, rval);) ++ if( (scsi_status & SS_CHECK_CONDITION) ) { ++ DEBUG2(printk("%s: check status bytes = 0x%02x 0x%02x 0x%02x\n", ++ __func__, pkt->p.rsp.req_sense_data[2], ++ pkt->p.rsp.req_sense_data[12] , ++ pkt->p.rsp.req_sense_data[13]);) ++ ++ if (pkt->p.rsp.req_sense_data[2] == NOT_READY && ++ pkt->p.rsp.req_sense_data[12] == 0x4 && ++ pkt->p.rsp.req_sense_data[13] == 0x2 ) ++ break; ++ } ++ } while ( (rval != QLA2X00_SUCCESS || ++ comp_status != CS_COMPLETE || ++ (scsi_status & SS_CHECK_CONDITION)) && ++ retry--); ++ ++ if (rval == QLA2X00_SUCCESS && ++ ( !( (scsi_status & SS_CHECK_CONDITION) && ++ (pkt->p.rsp.req_sense_data[2] == NOT_READY && ++ pkt->p.rsp.req_sense_data[12] == 0x4 && ++ pkt->p.rsp.req_sense_data[13] == 0x2 ) ) && ++ comp_status == CS_COMPLETE) ) { ++ DEBUG2(printk("scsi(%ld) %s - Port (0x%04x) set to ACTIVE.\n", ++ ha->host_no, __func__, ++ fcport->loop_id);) ++ /* We found an active path */ ++ fcport->flags |= FC_MSA_PORT_ACTIVE; ++ rval = 1; ++ } else { ++ DEBUG2(printk("scsi(%ld) %s - Port (0x%04x) set to INACTIVE.\n", ++ ha->host_no, __func__, + fcport->loop_id);) ++ fcport->flags &= ~(FC_MSA_PORT_ACTIVE); ++ } + +- fcport->port_login_retry_count = +- ha->port_down_retry_count * PORT_RETRY_TIME; +- atomic_set(&fcport->state, FC_ONLINE); +- fcport->login_retry = 0; +- fcport->ha = ha; +- atomic_set(&fcport->port_down_timer, +- ha->port_down_retry_count * PORT_RETRY_TIME); ++ pci_free_consistent(ha->pdev, sizeof(tur_cmd_rsp_t), ++ pkt, phys_address); + +- /* Do LUN discovery. */ +- return (qla2x00_lun_discovery(ha, fcport, index)); ++ LEAVE(__func__); ++ ++ return rval; ++ ++} ++ ++void ++qla2x00_set_device_flags(scsi_qla_host_t *ha, ++ fc_port_t *fcport ) ++{ ++ ++ if ( fcport->cfg_id != -1 ){ ++ fcport->flags &= ~(FC_XP_DEVICE|FC_MSA_DEVICE|FC_EVA_DEVICE); ++ if ( (cfg_device_list[fcport->cfg_id].flags & 1) ){ ++ printk(KERN_INFO ++ "scsi(%ld) :Loop id 0x%04x is an XP device\n", ++ ha->host_no, ++ fcport->loop_id); ++ fcport->flags |= FC_XP_DEVICE; ++ } else if ( (cfg_device_list[fcport->cfg_id].flags & 2) ){ ++ printk(KERN_INFO ++ "scsi(%ld) :Loop id 0x%04x is a MSA1000 device\n", ++ ha->host_no, ++ fcport->loop_id); ++ fcport->flags |= FC_MSA_DEVICE; ++ fcport->flags |= FC_FAILBACK_DISABLE; ++ } else if ( (cfg_device_list[fcport->cfg_id].flags & 4) ){ ++ printk(KERN_INFO ++ "scsi(%ld) :Loop id 0x%04x is a EVA device\n", ++ ha->host_no, ++ fcport->loop_id); ++ fcport->flags |= FC_EVA_DEVICE; ++ fcport->flags |= FC_FAILBACK_DISABLE; ++ } ++ if ( (cfg_device_list[fcport->cfg_id].flags & 8) ){ ++ fcport->flags |= FC_FAILOVER_DISABLE; ++ printk(KERN_INFO ++ "scsi(%ld) :Loop id 0x%04x has FAILOVERS disabled.\n", ++ ha->host_no, ++ fcport->loop_id); ++ } ++ } + } + + /* +@@ -15886,19 +15447,21 @@ qla2x00_update_fcport(scsi_qla_host_t *h + * Kernel context. + */ + static int +-qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int index) ++qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport) + { + inq_cmd_rsp_t *pkt; + int rval; + uint16_t lun; ++ struct list_head *fcll; + fc_lun_t *fclun; ++ int found; + dma_addr_t phys_address = 0; + int disconnected; + int retry; +- fcdev_t dev; +- int rlc_succeeded; ++ int rlc_succeeded, first; + uint16_t comp_status; + uint16_t scsi_status; ++ uint16_t next_loopid; + + ENTER(__func__); + +@@ -15933,14 +15496,20 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + return BIT_0; + } + ++ first = 0; + for (lun = 0; lun < ha->max_probe_luns; lun++) { + retry = 2; + do { ++ // FIXME: dma_addr_t could be 64bits in length! + memset(pkt, 0, sizeof(inq_cmd_rsp_t)); + pkt->p.cmd.entry_type = COMMAND_A64_TYPE; + pkt->p.cmd.entry_count = 1; + pkt->p.cmd.lun = cpu_to_le16(lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else + pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif + pkt->p.cmd.control_flags = + __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG); + pkt->p.cmd.scsi_cdb[0] = INQ_SCSI_OPCODE; +@@ -15950,13 +15519,13 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + pkt->p.cmd.byte_count = + __constant_cpu_to_le32(INQ_DATA_SIZE); + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32( +- pci_dma_lo32(phys_address + sizeof(sts_entry_t))); ++ LSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32( +- pci_dma_hi32(phys_address + sizeof(sts_entry_t))); ++ MSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_length = + __constant_cpu_to_le32(INQ_DATA_SIZE); + +- DEBUG5(printk("lun_discovery: Lun Inquiry - fcport=%p," ++ DEBUG(printk("lun_discovery: Lun Inquiry - fcport=%p," + " lun (%d)\n", + fcport, + lun);) +@@ -15977,12 +15546,16 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + + /* if port not logged in then try and login */ + if (lun == 0 && comp_status == CS_PORT_LOGGED_OUT) { +- memset(&dev, 0, sizeof (dev)); +- dev.d_id.b24 = ha->fc_db[index].d_id.b24; +- +- /* login and update database */ +- if (qla2x00_fabric_login(ha, &dev) == 0) +- ha->fc_db[index].loop_id = dev.loop_id; ++ if (fcport->flags & FC_FABRIC_DEVICE) { ++ /* login and update database */ ++ next_loopid = 0; ++ qla2x00_fabric_login(ha, fcport, ++ &next_loopid); ++ } else { ++ /* Loop device gone but no LIP... */ ++ rval = QL_STATUS_ERROR; ++ break; ++ } + } + } while ((rval != QLA2X00_SUCCESS || + comp_status != CS_COMPLETE) && +@@ -15992,7 +15565,7 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + comp_status != CS_COMPLETE || + (scsi_status & SS_CHECK_CONDITION)) { + +- DEBUG(printk("lun_discovery: Failed lun inquiry - " ++ DEBUG2(printk("lun_discovery: Failed lun inquiry - " + "inq[0]= 0x%x, comp status 0x%x, " + "scsi status 0x%x. loop_id=%d\n", + pkt->inq[0], +@@ -16012,12 +15585,15 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + if (rlc_succeeded == 1) { + if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) { + fcport->flags &= ~(FC_TAPE_DEVICE); +- ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE; + } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) { + fcport->flags |= FC_TAPE_DEVICE; +- ha->fc_db[index].flag |= DEV_TAPE_DEVICE; + } +- ++ /* Does this port require special failover handling? */ ++ if (ha->flags.failover_enabled) { ++ fcport->cfg_id = qla2x00_cfg_lookup_device( ++ &pkt->inq[0]); ++ qla2x00_set_device_flags(ha, fcport); ++ } + /* Stop the scan */ + break; + } +@@ -16031,35 +15607,37 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + */ + if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) { + fcport->flags &= ~(FC_TAPE_DEVICE); +- ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE; + } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) { + fcport->flags |= FC_TAPE_DEVICE; +- ha->fc_db[index].flag |= DEV_TAPE_DEVICE; + } else if (pkt->inq[0] == 0x20 || pkt->inq[0] == 0x7f) { + disconnected++; + } else { + continue; + } + ++ /* Does this port require special failover handling? */ ++ if (ha->flags.failover_enabled && !first) { ++ fcport->cfg_id = qla2x00_cfg_lookup_device(&pkt->inq[0]); ++ qla2x00_set_device_flags(ha,fcport); ++ first++; ++ } + /* Allocate LUN if not already allocated. */ +- for (fclun = fcport->fclun; +- fclun != NULL; +- fclun = fclun->next) { ++ found = 0; ++ list_for_each(fcll, &fcport->fcluns) { ++ fclun = list_entry(fcll, fc_lun_t, list); + +- if (fclun->lun == lun) ++ if (fclun->lun == lun) { ++ found++; + break; ++ } + } +- +- if (fclun != NULL) { +- /* Found this lun already in our list */ ++ if (found) + continue; +- } + + /* Add this lun to our list */ +- fcport->lun_cnt++; +- + fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC); + if (fclun != NULL) { ++ fcport->lun_cnt++; + /* Setup LUN structure. */ + memset(fclun, 0, sizeof(fc_lun_t)); + +@@ -16070,12 +15648,13 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + + fclun->fcport = fcport; + fclun->lun = lun; ++ fclun->inq0 = 0xff; + + if (disconnected) + fclun->flags |= FC_DISCON_LUN; + +- fclun->next = fcport->fclun; +- fcport->fclun = fclun; ++ list_add_tail(&fclun->list, &fcport->fcluns); ++ + + DEBUG5(printk("lun_discvery: Allocated fclun %p, " + "fclun.lun=%d\n", +@@ -16094,7 +15673,7 @@ qla2x00_lun_discovery(scsi_qla_host_t *h + + } + +- DEBUG(printk("lun_discovery(%ld): fcport lun count=%d, fcport= %p\n", ++ DEBUG2(printk("lun_discovery(%ld): fcport lun count=%d, fcport= %p\n", + ha->host_no, + fcport->lun_cnt, + fcport);) +@@ -16153,10 +15732,15 @@ qla2x00_rpt_lun_discovery(scsi_qla_host_ + } + + for (retries = 4; retries; retries--) { ++ // FIXME: dma_addr_t could be 64bits in length! + memset(pkt, 0, sizeof(rpt_lun_cmd_rsp_t)); + pkt->p.cmd.entry_type = COMMAND_A64_TYPE; + pkt->p.cmd.entry_count = 1; ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else + pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif + pkt->p.cmd.control_flags = + __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG); + pkt->p.cmd.scsi_cdb[0] = RPT_LUN_SCSI_OPCODE; +@@ -16167,9 +15751,9 @@ qla2x00_rpt_lun_discovery(scsi_qla_host_ + pkt->p.cmd.byte_count = + __constant_cpu_to_le32(sizeof(rpt_lun_lst_t)); + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32( +- pci_dma_lo32(phys_address + sizeof(sts_entry_t))); ++ LSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32( +- pci_dma_hi32(phys_address + sizeof(sts_entry_t))); ++ MSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_length = + __constant_cpu_to_le32(sizeof(rpt_lun_lst_t)); + +@@ -16280,26 +15864,29 @@ qla2x00_rpt_lun_discovery(scsi_qla_host_ + static void + qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun) + { ++ int found; + fc_lun_t *fclun; + + /* Allocate LUN if not already allocated. */ +- for (fclun = fcport->fclun; fclun != NULL; fclun = fclun->next) { ++ found = 0; ++ list_for_each_entry(fclun, &fcport->fcluns, list) { + if (fclun->lun == lun) { ++ found++; + break; + } + } +- if (fclun == NULL) { ++ if (!found) { + fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC); + if (fclun != NULL) { ++ fcport->lun_cnt++; ++ + /* Setup LUN structure. */ + memset(fclun, 0, sizeof(fc_lun_t)); +- fcport->lun_cnt++; + fclun->fcport = fcport; +- /* How dow we assign the following */ +- /* fclun->state = FCS_ONLINE; */ + fclun->lun = lun; +- fclun->next = fcport->fclun; +- fcport->fclun = fclun; ++ fclun->inq0 = 0xff; ++ ++ list_add_tail(&fclun->list, &fcport->fcluns); + } else { + printk(KERN_WARNING + "%s(): Memory Allocation failed - FCLUN\n", +@@ -16322,20 +15909,40 @@ qla2x00_cfg_lun(fc_port_t *fcport, uint1 + * BIT_1 = database was full and a device was not configured. + */ + static uint8_t +-qla2x00_configure_local_loop(scsi_qla_host_t *ha, uint8_t enable_slot_reuse) ++qla2x00_configure_local_loop(scsi_qla_host_t *ha) + { +- uint8_t status = 0; + uint8_t rval; +- uint8_t port_name[8]; ++ int rval2; ++#if defined(FC_IP_SUPPORT) + uint8_t update_status = 0; +- uint16_t index, size; +- dma_addr_t phys_address = 0; +- fcdev_t device; +- port_list_entry_t *gn_list, *port_entry; +- uint16_t localdevices = 0; ++#endif ++ uint16_t localdevices; ++ ++ uint16_t index; ++ uint16_t entries; ++ uint16_t loop_id; ++ struct dev_id { ++ uint8_t al_pa; ++ uint8_t area; ++ uint8_t domain; ++#if defined(EXTENDED_IDS) ++ uint8_t reserved; ++ uint16_t loop_id; ++#else ++ uint8_t loop_id; ++#endif ++ } *id_list; ++#define MAX_ID_LIST_SIZE (sizeof(struct dev_id) * MAX_FIBRE_DEVICES) ++ dma_addr_t id_list_dma; ++ ++ int found; ++ fc_port_t *fcport, *new_fcport; + + ENTER(__func__); + ++ localdevices = 0; ++ new_fcport = NULL; ++ + /* + * No point in continuing if the loop is in a volatile state -- + * reschedule LOCAL_LOOP_UPDATE for later processing +@@ -16345,187 +15952,146 @@ qla2x00_configure_local_loop(scsi_qla_ho + return (0); + } + +- gn_list = pci_alloc_consistent(ha->pdev, +- sizeof(GN_LIST_LENGTH), &phys_address); +- if (gn_list == NULL) { +- printk(KERN_WARNING +- "scsi(%ld): Memory Allocation failed - port_list", +- ha->host_no); +- ha->mem_err++; ++ entries = MAX_FIBRE_DEVICES; ++ id_list = pci_alloc_consistent(ha->pdev, MAX_ID_LIST_SIZE, ++ &id_list_dma); ++ if (id_list == NULL) { ++ DEBUG2(printk("scsi(%ld): Failed to allocate memory, No local " ++ "loop\n", ha->host_no)); + +- DEBUG2(printk(KERN_INFO "%s(%ld): Failed to allocate memory, No " +- "local loop\n", +- __func__, +- ha->host_no);) ++ printk(KERN_WARNING ++ "scsi(%ld): Memory Allocation failed - port_list", ++ ha->host_no); + ++ ha->mem_err++; + return (BIT_0); + } +- memset(gn_list, 0, sizeof(GN_LIST_LENGTH)); +- +- /* Mark all local devices PORT_LOST_ID first */ +- for (index = 0; index < MAX_FIBRE_DEVICES; index++) { +- if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID && +- !(ha->fc_db[index].flag & DEV_PUBLIC)) { +- +- DEBUG(printk("%s(%ld): port lost @ slot %d %06x\n", +- __func__, +- ha->host_no, +- index, +- ha->fc_db[index].d_id.b24);) +- +- ha->fc_db[index].loop_id |= PORT_LOST_ID; +- } +- } ++ memset(id_list, 0, MAX_ID_LIST_SIZE); + +- DEBUG3(printk("%s(%ld): Getting FCAL position map\n", +- __func__, ha->host_no)); ++ DEBUG3(printk("scsi(%ld): Getting FCAL position map\n", ha->host_no)); + DEBUG3(qla2x00_get_fcal_position_map(ha, NULL)); + +- /* Get port name list.*/ +-#if defined(FC_IP_SUPPORT) +- if (ha->flags.enable_ip == FALSE) +- rval = qla2x00_get_port_list(ha, +- gn_list, phys_address, BIT_0, &size); +- else +- /* +- * Bit 0 - return node names, +- * Bit 1 - loop IDs 0-255 +- */ +- rval = qla2x00_get_port_list(ha, +- gn_list, phys_address, BIT_0|BIT_1, &size); +-#else +- rval = qla2x00_get_port_list(ha, gn_list, phys_address, BIT_0, &size); +-#endif ++ /* Get list of logged in devices. */ ++ rval = qla2x00_get_id_list(ha, id_list, id_list_dma, &entries); + if (rval) { +- status = BIT_0; ++ rval = BIT_0; + goto cleanup_allocation; + } + +- DEBUG3(printk("%s(%ld): port list size (%d)\n", +- __func__, ha->host_no, size)); +- DEBUG3(qla2x00_dump_buffer((uint8_t *)gn_list, size)); +- +- /* Any valid entries returned? */ +- /* dg: 10/29/99 for an empty list */ +- if (size / sizeof(port_list_entry_t) == 0) ++ DEBUG3(printk("scsi(%ld): Entries in ID list (%d)\n", ++ ha->host_no, entries)); ++ DEBUG3(qla2x00_dump_buffer((uint8_t *)id_list, ++ entries * sizeof(struct dev_id))); ++ ++ /* Allocate temporary fcport for any new fcports discovered. */ ++ new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL); ++ if (new_fcport == NULL) { ++ rval = BIT_0; + goto cleanup_allocation; ++ } + +- port_entry = gn_list; +- for ( ; size >= sizeof(port_list_entry_t); +- size -= sizeof(port_list_entry_t), +- port_entry++) { +- device.loop_id = le16_to_cpu(port_entry->loop_id); ++ /* Mark all local ports LOST first */ ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (!(fcport->flags & FC_FABRIC_DEVICE)) { ++ /* ++ * No point in marking the device as lost, if the ++ * device is already DEAD. ++ */ ++ if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) ++ continue; + +-#if defined(FC_IP_SUPPORT) +- device.loop_id &= LOOP_ID_MASK; +-#endif ++ atomic_set(&fcport->state, FC_DEVICE_LOST); ++ } ++ } + +- /* Skip any non-local loop-ids - this includes 'known ports' */ +- if (device.loop_id > LAST_LOCAL_LOOP_ID) ++ /* Add devices to port list. */ ++ for (index = 0; index < entries; index++) { ++ /* Bypass reserved domain fields. */ ++ if ((id_list[index].domain & 0xf0) == 0xf0) + continue; +-#if NOT_NEEDED +- /* Skip the known ports. */ +- if ((device.loop_id == SNS_FL_PORT) || +- (device.loop_id == FABRIC_CONTROLLER) || +- (device.loop_id == SIMPLE_NAME_SERVER)) ++ ++ /* Bypass if not same domain and area of adapter. */ ++ if (id_list[index].area != ha->d_id.b.area || ++ id_list[index].domain != ha->d_id.b.domain) + continue; ++ ++ /* Bypass invalid local loop ID. */ ++#if defined(EXTENDED_IDS) ++ loop_id = le16_to_cpu(id_list[index].loop_id); ++#else ++ loop_id = (uint16_t)id_list[index].loop_id; + #endif ++ if (loop_id > LAST_LOCAL_LOOP_ID) ++ continue; + +- /* Get port name */ +- rval = qla2x00_get_port_name(ha, device.loop_id, port_name, 0); +- if (rval || qla2x00_is_wwn_zero(port_name)) { +- DEBUG2(printk(KERN_INFO "%s(%ld): get_port_name error.\n", +- __func__, +- ha->host_no);) +- status = BIT_0; ++ /* Fill in member data. */ ++ new_fcport->d_id.b.domain = id_list[index].domain; ++ new_fcport->d_id.b.area = id_list[index].area; ++ new_fcport->d_id.b.al_pa = id_list[index].al_pa; ++ new_fcport->loop_id = loop_id; ++ rval2 = qla2x00_get_port_database(ha, new_fcport, 0); ++ if (rval2 != QL_STATUS_SUCCESS) { ++ DEBUG2(printk("scsi(%ld): Failed to retrieve fcport " ++ "information -- get_port_database=%x, " ++ "loop_id=0x%04x\n", ++ ha->host_no, rval2, new_fcport->loop_id)); ++ continue; ++ } ++ ++ /* Check for matching device in port list. */ ++ found = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (memcmp(new_fcport->port_name, fcport->port_name, ++ WWN_SIZE)) ++ continue; ++ ++ fcport->flags &= ~FC_FABRIC_DEVICE; ++ fcport->loop_id = new_fcport->loop_id; ++ fcport->port_type = new_fcport->port_type; ++ fcport->d_id.b24 = new_fcport->d_id.b24; ++ memcpy(fcport->node_name, new_fcport->node_name, ++ WWN_SIZE); ++ ++ found++; + break; + } +- memcpy(device.wwn, port_name, WWN_SIZE); +- DEBUG3(printk("%s(%ld): found portname -> " +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- __func__, +- ha->host_no, +- port_name[0], port_name[1], +- port_name[2], port_name[3], +- port_name[4], port_name[5], +- port_name[6], port_name[7]);) +- +- /* Now get node name -- big-endian format */ +- *((u64 *)device.name) = be64_to_cpup((u64 *)port_entry->name); +- DEBUG3(printk("%s(%ld): found nodename -> " +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- __func__, +- ha->host_no, +- device.name[0], device.name[1], +- device.name[2], device.name[3], +- device.name[4], device.name[5], +- device.name[6], device.name[7]);) +- +- device.flag = 0; +- +- /* Derive portid from alpa table */ +- device.d_id.b24 = 0; +- device.d_id.b.al_pa = alpa_table[device.loop_id]; + +-#if defined(FC_IP_SUPPORT) +- if (!(list_entry_loop_id & PLE_NOT_SCSI_DEVICE)) { +-#endif +- /* SCSI type device */ +- update_status = qla2x00_update_fc_database(ha, +- &device, enable_slot_reuse); ++ if (!found) { ++ /* New device, add to fcports list. */ ++ list_add_tail(&new_fcport->list, &ha->fcports); ++ ++ /* Allocate a new replacement fcport. */ ++ fcport = new_fcport; ++ new_fcport = qla2x00_alloc_fcport(ha, GFP_KERNEL); ++ if (new_fcport == NULL) { ++ rval = BIT_0; ++ goto cleanup_allocation; ++ } ++ } + +- if (update_status) +- status |= update_status; +- else +- localdevices++; ++ qla2x00_update_fcport(ha, fcport); + +-#if defined(FC_IP_SUPPORT) +- } else if (ha->flags.enable_ip == TRUE) { +- /* SCSI login failed, assume it is IP device */ +- DEBUG12(printk("qla%ld: IP local WWN:" +- "%02x%02x%02x%02x%02x%02x%02x%02x " +- "DID:%06x\n", +- ha->instance, +- device.name[0], device.name[1], +- device.name[2], device.name[3], +- device.name[4], device.name[5], +- device.name[6], device.name[7], +- device.d_id.b24);) +- +- update_status = qla2x00_update_ip_device_data(ha, +- &device); +- +- if (update_status == QL_STATUS_SUCCESS) +- localdevices++; +- else if (update_status == QL_STATUS_RESOURCE_ERROR) +- status |= BIT_1; +- else +- status |= BIT_0; +- } +-#endif +- } /* for each port entry */ ++ localdevices++; ++ } + + cleanup_allocation: ++ pci_free_consistent(ha->pdev, MAX_ID_LIST_SIZE, id_list, id_list_dma); + +- pci_free_consistent(ha->pdev, +- sizeof(GN_LIST_LENGTH), gn_list, phys_address); ++ if (new_fcport) ++ kfree(new_fcport); + +-#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) +- if (status & BIT_0) +- printk(KERN_WARNING +- "%s(%ld): *** FAILED ***\n", +- __func__, +- ha->host_no); +-#endif ++ if (rval & BIT_0) { ++ DEBUG2(printk("scsi(%ld): Configure local loop error exit: " ++ "rval=%x\n", ha->host_no, rval)); ++ } + + if (localdevices > 0) { + ha->device_flags |= DFLG_LOCAL_DEVICES; + ha->device_flags &= ~DFLG_RETRY_LOCAL_DEVICES; + } + +- LEAVE(__func__); +- +- return (status); ++ return (rval); + } + + +@@ -16543,7 +16109,7 @@ cleanup_allocation: + * Context: + * Kernel context. + */ +-static os_tgt_t * ++os_tgt_t * + qla2x00_tgt_alloc(scsi_qla_host_t *ha, uint16_t t) + { + os_tgt_t *tq; +@@ -16599,7 +16165,7 @@ qla2x00_tgt_alloc(scsi_qla_host_t *ha, u + * Context: + * Kernel context. + */ +-static void ++void + qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t) + { + os_tgt_t *tq; +@@ -16648,7 +16214,7 @@ qla2x00_tgt_free(scsi_qla_host_t *ha, ui + * Context: + * Kernel context. + */ +-static os_lun_t * ++os_lun_t * + qla2x00_lun_alloc(scsi_qla_host_t *ha, uint16_t t, uint16_t l) + { + os_lun_t *lq; +@@ -16741,9 +16307,6 @@ qla2x00_lun_free(scsi_qla_host_t *ha, ui + (lq = LUN_Q(ha, t, l)) != NULL) { + + LUN_Q(ha, t, l) = NULL; +-#ifdef __VMWARE__ +- spin_lock_destroy(&lq->q_lock); +-#endif + kfree(lq); + + DEBUG3(printk("Dealloc lun @ %p -- deleted\n", lq);) +@@ -16783,11 +16346,7 @@ qla2x00_process_response_queue_in_zio_mo + , flags); + /* Complete any commands in done_queue */ + if (!list_empty(&ha->done_queue)){ +-#if QLA2X_PERFORMANCE +- tasklet_schedule(&ha->run_qla_task); +-#else + qla2x00_done(ha); +-#endif + } + + } +@@ -16814,7 +16373,7 @@ qla2x00_process_response_queue_in_zio_mo + * + * Note: This routine will always try to start I/O from visible HBA. + */ +-static void ++void + qla2x00_next(scsi_qla_host_t *vis_ha) + { + scsi_qla_host_t *dest_ha = NULL; +@@ -16833,7 +16392,7 @@ qla2x00_next(scsi_qla_host_t *vis_ha) + dest_ha = fcport->ha; + + /* Check if command can be started, exit if not. */ +- if (LOOP_TRANSITION(dest_ha)) { ++ if (!(sp->flags & SRB_TAPE) && LOOP_TRANSITION(dest_ha)) { + break; + } + +@@ -16845,19 +16404,19 @@ qla2x00_next(scsi_qla_host_t *vis_ha) + + CMD_RESULT(sp->cmd) = DID_NO_CONNECT << 16; + +- if (!atomic_read(&dest_ha->loop_down_timer) && +- dest_ha->loop_state == LOOP_DOWN) { +- sp->err_id = 2; +- ++ if (atomic_read(&dest_ha->loop_state) == LOOP_DOWN) { ++ sp->err_id = SRB_ERR_LOOP; + } else { +- sp->err_id = 1; ++ sp->err_id = SRB_ERR_PORT; + } ++ + DEBUG3(printk("scsi(%ld): loop/port is down - " +- "pid=%ld, sp=%p loopid=0x%x queued " ++ "pid=%ld, sp=%p err_id %d, loopid=0x%x queued " + "to dest HBA scsi%ld.\n", + dest_ha->host_no, + sp->cmd->serial_number, + sp, ++ sp->err_id, + fcport->loop_id, + dest_ha->host_no);) + /* +@@ -16882,12 +16441,18 @@ qla2x00_next(scsi_qla_host_t *vis_ha) + * continues until the LOOP DOWN time expires or the condition + * goes away. + */ +- if (!(sp->flags & SRB_IOCTL) && +- (atomic_read(&fcport->state) != FC_ONLINE || +- test_bit(ABORT_ISP_ACTIVE, &dest_ha->dpc_flags) || +- (dest_ha->loop_state != LOOP_READY) +- || (sp->flags & SRB_FAILOVER) +- )) { ++ if (sp->flags & SRB_TAPE && ++ (atomic_read(&dest_ha->loop_state) != LOOP_READY)) { ++ qla2x00_extend_timeout(sp->cmd, ++ vis_ha->loop_down_timeout); ++ __add_to_retry_queue(vis_ha, sp); ++ continue; ++ } else if (!(sp->flags & (SRB_IOCTL | SRB_FDMI_CMD)) && ++ (atomic_read(&fcport->state) != FC_ONLINE || ++ test_bit(CFG_FAILOVER, &dest_ha->cfg_flags) || ++ test_bit(ABORT_ISP_ACTIVE, &dest_ha->dpc_flags) || ++ (atomic_read(&dest_ha->loop_state) != LOOP_READY) ++ || (sp->flags & SRB_FAILOVER))) { + + DEBUG3(printk("scsi(%ld): port=(0x%x) retry_q(%d) loop " + "state = %d, loop counter = 0x%x" +@@ -16895,7 +16460,7 @@ qla2x00_next(scsi_qla_host_t *vis_ha) + dest_ha->host_no, + fcport->loop_id, + atomic_read(&fcport->state), +- dest_ha->loop_state, ++ atomic_read(&dest_ha->loop_state), + atomic_read(&dest_ha->loop_down_timer), + dest_ha->dpc_flags);) + +@@ -16908,7 +16473,7 @@ qla2x00_next(scsi_qla_host_t *vis_ha) + * if this request's lun is suspended then put the request on + * the scsi_retry queue. + */ +- if (!(sp->flags & SRB_IOCTL) && ++ if (!(sp->flags & (SRB_IOCTL | SRB_TAPE | SRB_FDMI_CMD)) && + sp->lun_queue->q_state == LUN_STATE_WAIT) { + DEBUG3(printk("%s(): lun wait state - pid=%ld, " + "opcode=%d, allowed=%d, retries=%d\n", +@@ -17109,7 +16674,7 @@ qla2x00_bstr_to_hex(char *s, uint8_t *bp + * Context: + * Kernel context. + */ +-static int ++int + qla2x00_get_prop_xstr(scsi_qla_host_t *ha, + char *propname, uint8_t *propval, int size) + { +@@ -17162,7 +16727,7 @@ qla2x00_get_prop_xstr(scsi_qla_host_t *h + * Context: + * Kernel context. + */ +-static void ++void + qla2x00_chg_endian(uint8_t buf[], size_t size) + { + uint8_t byte; +@@ -17191,7 +16756,7 @@ qla2x00_chg_endian(uint8_t buf[], size_t + * + * Note: Sets the ref_count for non Null sp to one. + */ +-static uint8_t ++uint8_t + qla2x00_allocate_sp_pool(scsi_qla_host_t *ha) + { + srb_t *sp; +@@ -17236,7 +16801,7 @@ qla2x00_allocate_sp_pool(scsi_qla_host_t + if (ha->srb_alloc_cnt == 0) + status = QL_STATUS_ERROR; + +- printk(KERN_INFO ++ printk(KERN_DEBUG + "scsi(%ld): Allocated %d SRB(s).\n", + ha->host_no, + ha->srb_alloc_cnt); +@@ -17250,7 +16815,7 @@ qla2x00_allocate_sp_pool(scsi_qla_host_t + * This routine frees all adapter allocated memory. + * + */ +-static void ++void + qla2x00_free_sp_pool( scsi_qla_host_t *ha) + { + struct list_head *list, *temp; +@@ -17497,60 +17062,182 @@ qla2x00_get_flash_manufacturer(scsi_qla_ + * + * Returns QL_STATUS_SUCCESS on successful retrieval of flash version. + */ +-STATIC uint16_t ++uint16_t + qla2x00_get_flash_version(scsi_qla_host_t *ha) + { ++ uint8_t code_type, last_image; + uint16_t ret = QL_STATUS_SUCCESS; +- uint32_t loop_cnt = 1; /* this is for error exit only */ +- uint32_t pcir_adr; +- +- ENTER(__func__); ++ uint32_t pcihdr, pcids; + + qla2x00_flash_enable(ha); +- do { /* Loop once to provide quick error exit */ +- /* Match signature */ +- if (!(qla2x00_read_flash_byte(ha, 0) == 0x55 && +- qla2x00_read_flash_byte(ha, 1) == 0xaa)) { ++ ++ /* Begin with first PCI expansion ROM header. */ ++ pcihdr = 0; ++ last_image = 1; ++ do { ++ /* Verify PCI expansion ROM header. */ ++ if (qla2x00_read_flash_byte(ha, pcihdr) != 0x55 || ++ qla2x00_read_flash_byte(ha, pcihdr + 0x01) != 0xaa) { + /* No signature */ +- DEBUG2(printk(KERN_INFO "%s(): No matching signature.\n", +- __func__);) ++ DEBUG2(printk("scsi(%ld): No matching ROM signature.\n", ++ ha->host_no)); + ret = QL_STATUS_ERROR; + break; + } + +- pcir_adr = qla2x00_read_flash_byte(ha, 0x18) & 0xff; +- +- /* validate signature of PCI data structure */ +- if ((qla2x00_read_flash_byte(ha, pcir_adr)) == 'P' && +- (qla2x00_read_flash_byte(ha, pcir_adr + 1)) == 'C' && +- (qla2x00_read_flash_byte(ha, pcir_adr + 2)) == 'I' && +- (qla2x00_read_flash_byte(ha, pcir_adr + 3)) == 'R') { +- +- /* Read version */ +- ha->optrom_minor = qla2x00_read_flash_byte(ha, +- pcir_adr + 0x12); +- ha->optrom_major = qla2x00_read_flash_byte(ha, +- pcir_adr + 0x13); +- DEBUG3(printk("%s(): got %d.%d.\n", +- __func__, +- ha->optrom_major, ha->optrom_minor);) +- } else { +- /* error */ +- DEBUG2(printk(KERN_INFO "%s(): PCI data struct not found. " +- "pcir_adr=%x.\n", +- __func__, pcir_adr);) ++ /* Locate PCI data structure. */ ++ pcids = pcihdr + ++ ((qla2x00_read_flash_byte(ha, pcihdr + 0x19) << 8) | ++ qla2x00_read_flash_byte(ha, pcihdr + 0x18)); ++ ++ /* Validate signature of PCI data structure. */ ++ if (qla2x00_read_flash_byte(ha, pcids) != 'P' || ++ qla2x00_read_flash_byte(ha, pcids + 0x1) != 'C' || ++ qla2x00_read_flash_byte(ha, pcids + 0x2) != 'I' || ++ qla2x00_read_flash_byte(ha, pcids + 0x3) != 'R') { ++ /* Incorrect header. */ ++ DEBUG2(printk("%s(): PCI data struct not found " ++ "pcir_adr=%x.\n", ++ __func__, pcids)); + ret = QL_STATUS_ERROR; + break; + } + +- } while (--loop_cnt); +- qla2x00_flash_disable(ha); ++ /* Read version */ ++ code_type = qla2x00_read_flash_byte(ha, pcids + 0x14); ++ switch (code_type) { ++ case ROM_CODE_TYPE_BIOS: ++ /* Intel x86, PC-AT compatible. */ ++ set_bit(ROM_CODE_TYPE_BIOS, &ha->code_types); ++ ha->bios_revision[0] = ++ qla2x00_read_flash_byte(ha, pcids + 0x12); ++ ha->bios_revision[1] = ++ qla2x00_read_flash_byte(ha, pcids + 0x13); ++ DEBUG3(printk("%s(): read BIOS %d.%d.\n", __func__, ++ ha->bios_revision[1], ha->bios_revision[0])); ++ break; ++ case ROM_CODE_TYPE_FCODE: ++ /* Open Firmware standard for PCI (FCode). */ ++ /* Eeeewww... */ ++ if (qla2x00_get_fcode_version(ha, pcids) == ++ QL_STATUS_SUCCESS) ++ set_bit(ROM_CODE_TYPE_FCODE, &ha->code_types); ++ break; ++ case ROM_CODE_TYPE_EFI: ++ /* Extensible Firmware Interface (EFI). */ ++ set_bit(ROM_CODE_TYPE_EFI, &ha->code_types); ++ ha->efi_revision[0] = ++ qla2x00_read_flash_byte(ha, pcids + 0x12); ++ ha->efi_revision[1] = ++ qla2x00_read_flash_byte(ha, pcids + 0x13); ++ DEBUG3(printk("%s(): read EFI %d.%d.\n", __func__, ++ ha->efi_revision[1], ha->efi_revision[0])); ++ break; ++ default: ++ DEBUG2(printk("%s(): Unrecognized code type %x at " ++ "pcids %x.\n", __func__, code_type, pcids)); ++ break; ++ } + +- LEAVE(__func__); ++ last_image = qla2x00_read_flash_byte(ha, pcids + 0x15) & BIT_7; ++ ++ /* Locate next PCI expansion ROM. */ ++ pcihdr += ((qla2x00_read_flash_byte(ha, pcids + 0x11) << 8) | ++ qla2x00_read_flash_byte(ha, pcids + 0x10)) * 512; ++ } while (!last_image); ++ ++ qla2x00_flash_disable(ha); + + return (ret); + } + ++/** ++ * qla2x00_get_fcode_version() - Determine an FCODE image's version. ++ * @ha: HA context ++ * @pcids: Pointer to the FCODE PCI data structure ++ * ++ * The process of retrieving the FCODE version information is at best ++ * described as interesting. ++ * ++ * Within the first 100h bytes of the image an ASCII string is present ++ * which contains several pieces of information including the FCODE ++ * version. Unfortunately it seems the only reliable way to retrieve ++ * the version is by scanning for another sentinel within the string, ++ * the FCODE build date: ++ * ++ * ... 2.00.02 10/17/02 ... ++ * ++ * Returns QL_STATUS_SUCCESS on successful retrieval of version. ++ */ ++static uint16_t ++qla2x00_get_fcode_version(scsi_qla_host_t *ha, uint32_t pcids) ++{ ++ uint16_t ret = QL_STATUS_ERROR; ++ uint32_t istart, iend, iter, vend; ++ uint8_t do_next, *vbyte; ++ ++ memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); ++ ++ /* Skip the PCI data structure. */ ++ istart = pcids + ++ ((qla2x00_read_flash_byte(ha, pcids + 0x0B) << 8) | ++ qla2x00_read_flash_byte(ha, pcids + 0x0A)); ++ iend = istart + 0x100; ++ do { ++ /* Scan for the sentinel date string...eeewww. */ ++ do_next = 0; ++ iter = istart; ++ while ((iter < iend) && !do_next) { ++ iter++; ++ if (qla2x00_read_flash_byte(ha, iter) == '/') { ++ if (qla2x00_read_flash_byte(ha, iter + 2) == ++ '/') ++ do_next++; ++ else if (qla2x00_read_flash_byte(ha, ++ iter + 3) == '/') ++ do_next++; ++ } ++ } ++ if (!do_next) ++ break; ++ ++ /* Backtrack to previous ' ' (space). */ ++ do_next = 0; ++ while ((iter > istart) && !do_next) { ++ iter--; ++ if (qla2x00_read_flash_byte(ha, iter) == ' ') ++ do_next++; ++ } ++ if (!do_next) ++ break; ++ ++ /* Mark end of version tag, and find previous ' ' (space). */ ++ vend = iter - 1; ++ do_next = 0; ++ while ((iter > istart) && !do_next) { ++ iter--; ++ if (qla2x00_read_flash_byte(ha, iter) == ' ') ++ do_next++; ++ } ++ if (!do_next) ++ break; ++ ++ /* Mark beginning of version tag, and copy data. */ ++ iter++; ++ if ((vend - iter) && ++ ((vend - iter) < sizeof(ha->fcode_revision))) { ++ vbyte = ha->fcode_revision; ++ while (iter <= vend) { ++ *vbyte++ = qla2x00_read_flash_byte(ha, iter); ++ iter++; ++ } ++ ret = QL_STATUS_SUCCESS; ++ } ++ } while (0); ++ ++ return ret; ++} ++ + #if defined(NOT_USED_FUNCTION) + /** + * qla2x00_get_flash_image() - Read image from flash chip. +@@ -17608,6 +17295,8 @@ qla2x00_set_flash_image(scsi_qla_host_t + + /* Reset ISP chip. */ + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET); ++ /* Delay after reset, for chip to recover. */ ++ udelay(20); + + qla2x00_flash_enable(ha); + do { /* Loop once to provide quick error exit */ +@@ -17687,312 +17376,11 @@ qla2x00_set_flash_image(scsi_qla_host_t + return (status); + } + +-#if USE_FLASH_DATABASE +-#error Do not use FLASH DATABASE!!!! +- +-/* +-* qla2x00_flash_enable_database +-* Setup flash for reading/writing. +-* +-* Input: +-* ha = adapter block pointer. +-*/ +-STATIC void +-qla2x00_flash_enable_database(scsi_qla_host_t *ha) +-{ +- device_reg_t *reg = ha->iobase; +- +- /* Setup bit 16 of flash address. */ +- WRT_REG_WORD(®->nvram, NV_SELECT); +- +- /* Enable Flash Read/Write. */ +- WRT_REG_WORD(®->ctrl_status, CSR_FLASH_ENABLE); +- +- /* Read/Reset Command Sequence */ +- qla2x00_write_flash_byte(ha, 0x5555, 0xaa); +- qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); +- qla2x00_write_flash_byte(ha, 0x5555, 0xf0); +- qla2x00_read_flash_byte(ha, FLASH_DATABASE_0); +-} +- +-/* +-* qla2x00_flash_disable_database +-* Disable flash and allow RISC to run. +-* +-* Input: +-* ha = adapter block pointer. +-*/ +-STATIC void +-qla2x00_flash_disable_database(scsi_qla_host_t *ha) +-{ +- device_reg_t *reg = ha->iobase; +- +- /* Restore chip registers. */ +- WRT_REG_WORD(®->ctrl_status, 0); +- WRT_REG_WORD(®->nvram, 0); +-} +- +- +-/* +-* qla2x00_get_database +-* Copies and converts flash database to driver database. +-* (may sleep) +-* +-* Input: +-* ha = adapter block pointer. +-* +-* Returns: +-* 0 = success. +-*/ +-STATIC uint8_t +-qla2x00_get_database(scsi_qla_host_t *ha) +-{ +- flash_database_t *fptr; +- uint8_t status = 1; +- uint32_t addr; +- uint16_t cnt; +- uint8_t *bptr; +- uint8_t checksum; +- uint32_t b, t; +- +- ENTER("qla2x00_get_database"); +- +- /* Default setup. */ +- ha->flash_db = FLASH_DATABASE_0; +- ha->flash_seq = 0; +- +- fptr = kmalloc(sizeof(flash_database_t), GFP_ATOMIC); +- if (!fptr) { +- printk(KERN_WARNING +- "scsi(%d): Memory Allocation failed - flash mem", +- (int)ha->host_no); +- ha->mem_err++; +- return (status); +- } +- +- /* Enable Flash Read/Write. */ +- qla2x00_flash_enable_database(ha); +- +- /* +- * Start with flash database with the highest sequence number. +- */ +- b = qla2x00_read_flash_byte(ha, FLASH_DATABASE_0); +- b |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_0 + 1) << 8; +- b |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_0 + 1) << 16; +- b |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_0 + 1) << 24; +- t = qla2x00_read_flash_byte(ha, FLASH_DATABASE_1); +- t |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_1 + 1) << 8; +- t |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_1 + 1) << 16; +- t |= qla2x00_read_flash_byte(ha, FLASH_DATABASE_1 + 1) << 24; +- if (t > b) { +- ha->flash_db = FLASH_DATABASE_1; +- } +- +- /* Select the flash database with the good checksum. */ +- for (t = 0; t < 2; t++) { +- checksum = 0; +- addr = ha->flash_db; +- bptr = (uint8_t *)fptr; +- fptr->hdr.size = sizeof(flash_database_t); +- +- /* Read flash database to driver. */ +- for (cnt = 0; cnt < fptr->hdr.size; cnt++) { +- *bptr = (uint8_t)qla2x00_read_flash_byte(ha, addr++); +- checksum += *bptr++; +- if (bptr == &fptr->hdr.spares[0] && +- (fptr->hdr.size > sizeof(flash_database_t) || +- fptr->hdr.size < sizeof(flash_hdr_t) || +- !fptr->hdr.version) ) { +- +- checksum = 1; +- break; +- } +- } +- +- if (!checksum) { +- status = 0; +- break; +- } +- /* trying other database */ +- if (ha->flash_db == FLASH_DATABASE_0) { +- ha->flash_db = FLASH_DATABASE_1; +- } else { +- ha->flash_db = FLASH_DATABASE_0; +- } +- } +- +- if (!status) { +- ha->flash_seq = fptr->hdr.seq; +- +- /* Convert flash database to driver database format. */ +- if (fptr->hdr.size -= sizeof(flash_hdr_t)) { +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- ha->fc_db[cnt].name[0] = +- fptr->node[cnt].name[0]; +- ha->fc_db[cnt].name[1] = +- fptr->node[cnt].name[1]; +- /* UNKNOWN CODE!!! +- cnt, +- ha->fc_db[cnt].name[1], +- ha->fc_db[cnt].name[0]); +- */ +- +- ha->fc_db[cnt].loop_id = PORT_AVAILABLE; +- ha->fc_db[cnt].flag = 0; /* v2.19.05b3 */ +- if(!(fptr->hdr.size -= sizeof(flash_node_t))) +- break; +- } +- } +- } +- +- qla2x00_flash_disable_database(ha); +- +- kfree(fptr); +- +-#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) +- if (status) +- printk("qla2x00_get_database: **** FAILED ****\n"); +-#endif +- +- LEAVE("qla2x00_get_database"); +- +- return(status); +-} +- +-/* +-* qla2x00_save_database +-* Copies and converts driver database to flash database. +-* (may sleep) +-* +-* Input: +-* ha = adapter block pointer. +-* +-* Returns: +-* 0 = success. +-*/ +-STATIC uint8_t +-qla2x00_save_database(scsi_qla_host_t *ha) +-{ +- flash_database_t *fptr; +- uint8_t status = 1; +- uint32_t addr; +- uint16_t cnt; +- uint8_t *bptr; +- uint8_t checksum; +- +- ENTER("qla2x00_save_database"); +- +- fptr = kmalloc(sizeof(flash_database_t), GFP_ATOMIC); +- if (!fptr) { +- printk(KERN_WARNING +- "scsi(%d): Memory Allocation failed - flash mem", +- (int)ha->host_no); +- ha->mem_err++; +- return (status); +- } +- +- /* Enable Flash Read/Write. */ +- qla2x00_flash_enable_database(ha); +- +- fptr->hdr.seq = ++ha->flash_seq; +- fptr->hdr.version = FLASH_DATABASE_VERSION; +- fptr->hdr.size = sizeof(flash_hdr_t); +- +- /* Copy and convert driver database to flash database. */ +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- if (ha->fc_db[cnt].loop_id == PORT_UNUSED) +- break; +- else { +- fptr->node[cnt].name[0] = ha->fc_db[cnt].name[0]; +- fptr->node[cnt].name[1] = ha->fc_db[cnt].name[1]; +- fptr->hdr.size += sizeof(flash_node_t); +- } +- } +- +- /* Calculate checksum. */ +- checksum = 0; +- bptr = (uint8_t *)fptr; +- for (cnt = 0; cnt < fptr->hdr.size; cnt++) +- checksum += *bptr++; +- fptr->hdr.checksum = ~checksum + 1; +- +- /* Setup next sector address for flash */ +- if (ha->flash_db == FLASH_DATABASE_0) +- addr = FLASH_DATABASE_1; +- else +- addr = FLASH_DATABASE_0; +- ha->flash_db = addr; +- +- /* Erase flash sector prior to write. */ +- status = qla2x00_erase_flash_sector(ha, addr); +- +- /* Write database to flash. */ +- bptr = (uint8_t *)fptr; +- for (cnt = 0; cnt < fptr->hdr.size && !status; cnt++) +- status = qla2x00_program_flash_address(ha, addr++, *bptr++); +- +- qla2x00_flash_disable_database(ha); +- +- kfree(fptr); +- +-#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) +- if (status) +- printk("qla2x00_save_database: **** FAILED ****\n"); +-#endif +- +- LEAVE("qla2x00_save_database"); +- +- return(status); +-} +- +-#endif +- +- +-/* +- *qla2x00_add_initiator_device +- * This routine adds the initiator device to the list +- * +- * Input: +- * ha = adapter block pointer. +- * device = device data pointer. +- * +- * Returns: +- * 0 = success, initiator added to the list +- * 1 = Failed to allocate memory +- */ +-static int +-qla2x00_add_initiator_device(scsi_qla_host_t *ha, fcdev_t *device) +-{ +- int ret; +- fc_initiator_t *fcinitiator; +- +- ret = 1; +- fcinitiator = kmalloc(sizeof(fc_initiator_t), GFP_ATOMIC); +- if (fcinitiator != NULL) { +- /* Setup initiator structure. */ +- memset(fcinitiator, 0, sizeof(fc_initiator_t)); +- +- memcpy(fcinitiator->node_name, device->name, WWN_SIZE); +- memcpy(fcinitiator->port_name, device->wwn, WWN_SIZE); +- fcinitiator->d_id.b24 = device->d_id.b24; +- fcinitiator->loop_id = device->loop_id; +- list_add_tail(&fcinitiator->list, &ha->fcinitiators); +- ret = 0; +- } else { +- printk(KERN_WARNING +- "%s(): Memory Allocation failed - FCINITIATOR\n", +- __func__); +- } +- +- return (ret); +-} +- +- + /* + * Declarations for load module + */ + static Scsi_Host_Template driver_template = QLA2100_LINUX_TEMPLATE; +-#include "../scsi_module.c" ++#include "scsi_module.c" + + /****************************************************************************/ + /* Driver Debug Functions. */ +@@ -18004,11 +17392,10 @@ qla2x00_dump_buffer(uint8_t * b, uint32_ + uint32_t cnt; + uint8_t c; + +- printk(" 0 1 2 3 4 5 6 7 8 9 " +- " Ah Bh Ch Dh Eh Fh\n"); +- printk("---------------------------------------" +- "------------------------\n"); +- ++ printk(" 0 1 2 3 4 5 6 7 8 9 " ++ "Ah Bh Ch Dh Eh Fh\n"); ++ printk("----------------------------------------" ++ "----------------------\n"); + for (cnt = 0; cnt < size;) { + c = *b++; + printk("%02x",(uint32_t) c); +@@ -18018,8 +17405,7 @@ qla2x00_dump_buffer(uint8_t * b, uint32_ + else + printk(" "); + } +- if (cnt % 16) +- printk("\n"); ++ printk("\n"); + } + + /************************************************************************** +@@ -18028,7 +17414,7 @@ qla2x00_dump_buffer(uint8_t * b, uint32_ + * Input + * cmd : Scsi_Cmnd + **************************************************************************/ +-static void ++void + qla2x00_print_scsi_cmd(Scsi_Cmnd * cmd) + { + struct scsi_qla_host *ha; +@@ -18083,7 +17469,7 @@ qla2x00_print_scsi_cmd(Scsi_Cmnd * cmd) + * Input + * q: lun queue + */ +-static void ++void + qla2x00_print_q_info(struct os_lun *q) + { + printk("Queue info: flags=0x%lx\n", q->q_flag); +@@ -18100,7 +17486,7 @@ qla2x00_print_q_info(struct os_lun *q) + * wd_size = word size 8, 16, 32 or 64 bits + * count = number of words. + */ +-static void ++void + qla2x00_formatted_dump_buffer(char *string, uint8_t * buffer, + uint8_t wd_size, uint32_t count) + { +@@ -18231,7 +17617,7 @@ qla2x00_panic(char *cp, struct Scsi_Host + * qla2x00_dump_requests + * + **************************************************************************/ +-static void ++void + qla2x00_dump_requests(scsi_qla_host_t *ha) + { + +@@ -18418,6 +17804,7 @@ qla2x00_get_tokens(char *line, char **ar + } + + #if VSA ++/* XXX: There is no fc_db member in HA. */ + /* + * qla2x00_get_vsa_opt_from_config + * Get VSA option from the configuration parameters. +@@ -18506,8 +17893,6 @@ qla2x00_cfg_persistent_binding(scsi_qla_ + rval = qla2x00_get_prop_16chars(ha, propbuf, pnn, cmdline); + if (rval != 0) + pnn = NULL; +- if (ha->binding_type == BIND_BY_NODE_NAME && rval != 0) +- continue; + + tq = qla2x00_tgt_alloc(ha, tgt); + if (tq == NULL) { +@@ -18517,13 +17902,8 @@ qla2x00_cfg_persistent_binding(scsi_qla_ + continue; + } + +- ha->fc_db[tgt].loop_id = PORT_AVAILABLE; +- ha->fc_db[tgt].flag = 0; /* v2.19.05b3 */ +- ha->fc_db[tgt].flag |= DEV_CONFIGURED; +- + if (ppn != NULL) { + memcpy(tq->port_name, ppn, WWN_SIZE); +- memcpy(ha->fc_db[tgt].wwn, ppn, WWN_SIZE); + } + if (pd_id != NULL) { + /* +@@ -18534,11 +17914,9 @@ qla2x00_cfg_persistent_binding(scsi_qla_ + pd_id->r.d_id[1] = portid[1]; + pd_id->r.d_id[2] = portid[0]; + tq->d_id.b24 = pd_id->b24; +- ha->fc_db[tgt].d_id.b24 = pd_id->b24; + } + if (pnn != NULL) { + memcpy(tq->node_name, pnn, WWN_SIZE); +- memcpy(ha->fc_db[tgt].name, pnn, WWN_SIZE); + } + + DEBUG(printk("Target %03d - configured by user: ",tgt);) +@@ -18556,20 +17934,11 @@ qla2x00_cfg_persistent_binding(scsi_qla_ + tgt, + pd_id->b24);) + break; +- +- case BIND_BY_NODE_NAME: +- DEBUG(printk("**bind tgt by port-%03d=" +- "%02x%02x%02x%02x%02x%02x%02x%02x\n", +- tgt, +- pnn[0], pnn[1], pnn[2], pnn[3], +- pnn[4], pnn[5], pnn[6], pnn[7]);) +- break; + } + /* look for VSA */ + #if VSA + qla2x00_get_vsa_opt_from_config(ha, tgt, dev_no); + #endif +- + } + + LEAVE(__func__); +@@ -18580,7 +17949,7 @@ qla2x00_cfg_persistent_binding(scsi_qla_ + * kmem_zalloc + * Allocate and zero out the block of memory + */ +-static inline void * ++inline void * + kmem_zalloc( int siz, int code, int id) + { + uint8_t *bp; +@@ -18627,6 +17996,7 @@ kmem_free(void *ptr) + /* + * Declarations for failover + */ ++ + #include "qla_cfg.c" + #include "qla_fo.c" + +@@ -18646,18 +18016,10 @@ static struct Scsi_Host *apidev_host = 0 + static int + apidev_open(struct inode *inode, struct file *file) + { +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + DEBUG9(printk(KERN_INFO + "%s(): open MAJOR number = %d, MINOR number = %d\n", + __func__, + MAJOR(inode->i_rdev), MINOR(inode->i_rdev));) +-#else +- DEBUG9(printk(KERN_INFO +- "%s(): open MAJOR number = %d, MINOR number = %d\n", +- __func__, +- major(inode->i_rdev), minor(inode->i_rdev));) +-#endif +- + return 0; + } + +@@ -18684,14 +18046,20 @@ apidev_ioctl(struct inode *inode, struct + } + + static struct file_operations apidev_fops = { +- ioctl: +- apidev_ioctl, +- open: +- apidev_open, +- release: +- apidev_close ++ owner: ++ THIS_MODULE, ++ ioctl: ++ apidev_ioctl, ++ open: ++ apidev_open, ++ release: ++ apidev_close + }; + ++#if defined(QLA_CONFIG_COMPAT) ++#include "qla_ppc64.c" ++#endif ++ + static int + apidev_init(struct Scsi_Host *host) + { +@@ -18717,22 +18085,19 @@ apidev_init(struct Scsi_Host *host) + host->hostt->proc_dir->name, + APIDEV_NODE, apidev_major);) + +-#ifndef __VMWARE__ +- // XXX: Fix this when proc_mknod works again on main!!! +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + proc_mknod(APIDEV_NODE, 0777+S_IFCHR, host->hostt->proc_dir, + (kdev_t)MKDEV(apidev_major, 0)); +-#else +- proc_mknod(APIDEV_NODE, 0777+S_IFCHR, host->hostt->proc_dir, +- (kdev_t)mk_kdev(apidev_major, 0)); ++ ++#if defined(QLA_CONFIG_COMPAT) ++ apidev_init_ppc64(); + #endif +-#endif //__VMWARE__ + + return 0; + } + + static int apidev_cleanup() + { ++ + if (!apidev_host) + return 0; + +@@ -18740,6 +18105,10 @@ static int apidev_cleanup() + remove_proc_entry(APIDEV_NODE,apidev_host->hostt->proc_dir); + apidev_host = 0; + ++#if defined(QLA_CONFIG_COMPAT) ++ apidev_cleanup_ppc64(); ++#endif ++ + return 0; + } + #endif /* APIDEV */ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00.h 2004-04-22 19:42:53.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +-* Copyright (C) 2003 Qlogic Corporation ++* Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -45,12 +45,15 @@ extern "C" { + /* #define QL_DEBUG_LEVEL_10 */ /* Output IOCTL error msgs */ + /* #define QL_DEBUG_LEVEL_11 */ /* Output Mbx Cmd trace msgs */ + /* #define QL_DEBUG_LEVEL_12 */ /* Output IP trace msgs */ ++/* #define QL_DEBUG_LEVEL_13 */ /* Output fdmi function trace msgs */ + + #define QL_DEBUG_CONSOLE /* Output to console */ + + #include + #include + ++#define QLOGIC_COMPANY_NAME "QLogic Corporation" ++ + /* + * Data bit definitions. + */ +@@ -87,18 +90,14 @@ extern "C" { + #define BIT_30 0x40000000 + #define BIT_31 0x80000000 + +-#define LS_64BITS(x) ((uint32_t)(0xffffffff & ((u64)(x)))) +-#define MS_64BITS(x) ((uint32_t)(0xffffffff & (((u64)(x))>>16>>16))) ++#define LSB(x) ((uint8_t)(x)) ++#define MSB(x) ((uint8_t)((uint16_t)(x) >> 8)) + +-#define MSB(x) (uint8_t)(((uint16_t)(x) >> 8) & 0xff) +-#define LSB(x) (uint8_t)(x & 0xff) +-#define MSW(x) (uint16_t)(((uint32_t)(x) >> 16) & 0xffff) +-#define LSW(x) (uint16_t)(x & 0xffff) +-#define QL21_64BITS_3RDWD(x) ((uint16_t) (( (x) >> 16) >> 16) & 0xffff) +-#define QL21_64BITS_4THWD(x) ((uint16_t) ((( (x) >>16)>>16)>>16) & 0xffff) ++#define LSW(x) ((uint16_t)(x)) ++#define MSW(x) ((uint16_t)((uint32_t)(x) >> 16)) + +-#define LSD(x) ((uint32_t)((uint64_t)(x))) +-#define MSD(x) ((uint32_t)((uint64_t)(x) >> 32)) ++#define LSD(x) ((uint32_t)((uint64_t)(x))) ++#define MSD(x) ((uint32_t)((((uint64_t)(x)) >> 16) >> 16)) + + + +@@ -143,7 +142,7 @@ typedef char BOOL; + * I/O register + */ + /* #define MEMORY_MAPPED_IO */ /* Enable memory mapped I/O */ +-#undef MEMORY_MAPPED_IO /* Disable memory mapped I/O */ ++#define MEMORY_MAPPED_IO 1 + + #if defined(MEMORY_MAPPED_IO) + #define RD_REG_BYTE(addr) readb(addr) +@@ -164,6 +163,10 @@ typedef char BOOL; + * Fibre Channel device definitions. + */ + #define WWN_SIZE 8 /* Size of WWPN, WWN & WWNN */ ++#if defined(ISP200) ++#define MAX_FABRIC_DEVICES 8 /* Fabric Devices */ ++#define MAX_LLOOP_DEVICES 16 /* Local Loop Devices */ ++#endif + #define MAX_FIBRE_DEVICES 256 + #define MAX_FIBRE_LUNS 256 + #define MAX_RSCN_COUNT 10 +@@ -186,14 +189,25 @@ typedef char BOOL; + /* + * Fibre Channel device definitions. + */ ++#if defined(EXTENDED_IDS) ++#define SNS_LAST_LOOP_ID 0x7ff ++#else ++#define SNS_LAST_LOOP_ID 0xfe ++#endif ++ + #define LAST_LOCAL_LOOP_ID 0x7d + #define SNS_FL_PORT 0x7e + #define FABRIC_CONTROLLER 0x7f + #define SIMPLE_NAME_SERVER 0x80 + #define SNS_FIRST_LOOP_ID 0x81 +-#define LAST_SNS_LOOP_ID 0xfe + #define MANAGEMENT_SERVER 0xfe + #define BROADCAST 0xff ++ ++#define RESERVED_LOOP_ID(x) ((x > LAST_LOCAL_LOOP_ID && \ ++ x < SNS_FIRST_LOOP_ID) || \ ++ x == MANAGEMENT_SERVER || \ ++ x == BROADCAST) ++ + #define SNS_ACCEPT 0x0280 /* 8002 swapped */ + #define SNS_REJECT 0x0180 /* 8001 swapped */ + +@@ -214,10 +228,10 @@ typedef char BOOL; + #define LOOP_DOWN_RESET (LOOP_DOWN_TIME - 30) + + /* Maximum outstanding commands in ISP queues (1-65535) */ +-#define MAX_OUTSTANDING_COMMANDS 1024 ++#define MAX_OUTSTANDING_COMMANDS 2048 + + /* ISP request and response entry counts (37-65535) */ +-#define REQUEST_ENTRY_CNT 128 /* Number of request entries. */ ++#define REQUEST_ENTRY_CNT 512 /* Number of request entries. */ + #if defined(ISP2100) || defined(ISP2200) + #define RESPONSE_ENTRY_CNT 64 /* Number of response entries.*/ + #else +@@ -243,16 +257,12 @@ typedef char BOOL; + #define SGDATA_PER_REQUEST 2 + #define SGDATA_PER_CONT 7 + +-#define SG_SEGMENTS (SGDATA_PER_REQUEST + (SGDATA_PER_CONT * REQUEST_ENTRY_CNT - 2)) +- + /* + * SCSI Request Block + */ + typedef struct srb + { + struct list_head list; +- struct srb *s_next; /* (4) Next block on LU queue */ +- struct srb *s_prev; /* (4) Previous block on LU queue */ + Scsi_Cmnd *cmd; /* Linux SCSI command pkt */ + struct scsi_qla_host *ha; /* ha this SP is queued on */ + uint8_t more_cdb[4]; /* For 16 bytes CDB pass thru cmd since +@@ -288,10 +298,15 @@ typedef struct srb + /* Target/LUN queue pointers. */ + struct os_tgt *tgt_queue; /* ptr to visible ha's target */ + struct os_lun *lun_queue; /* ptr to visible ha's lun */ +- struct fc_lun *fclun; /* FC LUN context pointer. */ ++ struct fc_lun *fclun; /* FC LUN context pointer. */ + /* Raw completion info for use by failover ? */ + uint8_t fo_retry_cnt; /* Retry count this request */ + uint8_t err_id; /* error id */ ++#define SRB_ERR_PORT 1 /* Request failed because "port down" */ ++#define SRB_ERR_LOOP 2 /* Request failed because "loop down" */ ++#define SRB_ERR_DEVICE 3 /* Request failed because "device error" */ ++#define SRB_ERR_OTHER 4 ++ + uint8_t cmd_length; /* command length */ + uint8_t qfull_retry_count; + +@@ -301,7 +316,7 @@ typedef struct srb + u_long e_start; /* jiffies at start of extend timeout */ + u_long r_start; /* jiffies at start of request */ + u_long u_start; /* jiffies when sent to F/W */ +- u_long f_start; /*ra 10/29/01*/ /*jiffies when put in failov er queue*/ ++ u_long f_start; /*ra 10/29/01*/ /*jiffies when put in failover queue*/ + uint32_t resid; /* Residual transfer length */ + uint16_t sense_len; /* Sense data length */ + uint32_t request_sense_length; +@@ -329,6 +344,8 @@ typedef struct srb + #define SRB_ISP_STARTED BIT_11 /* Command sent to ISP. */ + + #define SRB_ISP_COMPLETED BIT_12 /* ISP finished with command */ ++#define SRB_FDMI_CMD BIT_13 /* MSIOCB/non-ioctl command. */ ++#define SRB_TAPE BIT_14 /* TAPE command. */ + + + /* +@@ -440,7 +457,7 @@ typedef volatile struct + + #else + /* +- * I/O Register Set structure definitions for ISP2300. ++ * I/O Register Set structure definitions for ISP2300/ISP200. + */ + typedef volatile struct + { +@@ -597,12 +614,23 @@ typedef struct { + #define MBS_TEST_FAILED 0x4003 /* Test Failed. */ + #define MBS_CMD_ERR 0x4005 /* Command Error. */ + #define MBS_CMD_PARAM_ERR 0x4006 /* Command Parameter Error. */ ++#define MBS_PORT_ID_USED 0x4007 ++#define MBS_LOOP_ID_USED 0x4008 ++#define MBS_ALL_IDS_IN_USE 0x4009 /* For ISP200 if host tries to log ++ into more than 8 targets */ ++#define MBS_NOT_LOGGED_IN 0x400A ++ + #define MBS_FATAL_ERROR 0xF000 /* Command Fatal Error. */ + + #define MBS_FIRMWARE_ALIVE 0x0000 + #define MBS_COMMAND_COMPLETE 0x4000 + #define MBS_INVALID_COMMAND 0x4001 + ++/* F/W will return mbx0:0x4005 and mbx1:0x16 if ++ * HBA tries to log into a target through FL Port ++ */ ++#define MBS_SC_TOPOLOGY_ERR 0x16 ++ + /* QLogic subroutine status definitions */ + #define QL_STATUS_SUCCESS 0 + #define QL_STATUS_ERROR 1 +@@ -632,11 +660,17 @@ typedef struct { + #define MBA_RSCN_UPDATE MBA_SCR_UPDATE + #define MBA_SCSI_COMPLETION 0x8020 /* SCSI Command Complete. */ + #define MBA_CTIO_COMPLETION 0x8021 /* CTIO Complete. */ +-#if !defined(ISP2100) + #define MBA_LINK_MODE_UP 0x8030 /* FC Link Mode UP. */ + #define MBA_UPDATE_CONFIG 0x8036 /* FC Update Configuration. */ + #define MBA_ZIO_UPDATE 0x8040 /* ZIO-Process response queue */ +-#endif ++#define RIO_MBS_CMD_CMP_1_16 0x8031 /* Scsi command complete */ ++#define RIO_MBS_CMD_CMP_2_16 0x8032 /* Scsi command complete */ ++#define RIO_MBS_CMD_CMP_3_16 0x8033 /* Scsi command complete */ ++#define RIO_MBS_CMD_CMP_4_16 0x8034 /* Scsi command complete */ ++#define RIO_MBS_CMD_CMP_5_16 0x8035 /* Scsi command complete */ ++#define RIO_RESPONSE_UPDATE 0x8040 /* Scsi command complete but check iocb */ ++ ++ + + /* + * ISP mailbox commands +@@ -689,7 +723,7 @@ typedef struct { + #define MBC_INITIALIZE_RECEIVE_QUEUE 0x77 /* Initialize receive queue */ + #define MBC_SEND_FARP_REQ_COMMAND 0x78 /* FARP request. */ + #define MBC_SEND_FARP_REPLY_COMMAND 0x79 /* FARP reply. */ +-#define MBC_PORT_LOOP_NAME_LIST 0x7C /* Get port/node name list. */ ++#define MBC_GET_ID_LIST 0x7C /* Get Port ID list. */ + #define MBC_SEND_LFA_COMMAND 0x7D /* Send Loop Fabric Address */ + #define MBC_LUN_RESET 0x7E /* Send LUN reset */ + +@@ -1203,10 +1237,12 @@ struct qla2x00_hba_features + /* For future QLA2XXX */ + #define NVRAM_MOD_OFFSET 200 /* Model Number offset: 200-215 */ + #define BINZERO "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +-#define NVRAM_MODEL_SIZE 16 /* 16 bytes reserved for model_num string*/ + + #endif + ++#define NVRAM_HW_ID_SIZE 16 /* 16 bytes reserved for hw_id string*/ ++#define NVRAM_MODEL_SIZE 16 /* 16 bytes reserved for model_num string*/ ++ + #if !defined(ISP2100) + + /* +@@ -1283,7 +1319,10 @@ typedef struct + uint8_t link_down_timeout; + + /* Offset 112 */ +- uint8_t reserved_7_2[38]; ++ uint8_t hw_id[16]; ++ ++ /* Offset 128 */ ++ uint8_t reserved_7_2[22]; + + /* Offset 150 */ + uint16_t reserved_8[25]; +@@ -1404,8 +1443,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t handle; /* System handle. */ ++#if defined(EXTENDED_IDS) ++ uint16_t target; /* SCSI ID */ ++#else + uint8_t reserved; + uint8_t target; /* SCSI ID */ ++#endif + uint16_t lun; /* SCSI LUN */ + uint16_t control_flags; /* Control flags. */ + #define CF_HEAD_TAG BIT_1 +@@ -1437,8 +1480,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t handle; /* System handle. */ ++#if defined(EXTENDED_IDS) ++ uint16_t target; /* SCSI ID */ ++#else + uint8_t reserved; + uint8_t target; /* SCSI ID */ ++#endif + uint16_t lun; /* SCSI LUN */ + uint16_t control_flags; /* Control flags. */ + uint16_t reserved_1; +@@ -1554,8 +1601,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t target; /* SCSI ID */ ++#else + uint8_t reserved; + uint8_t target; /* SCSI ID */ ++#endif + uint8_t modifier; /* Modifier (7-0). */ + #define MK_SYNC_ID_LUN 0 /* Synchronize ID/LUN */ + #define MK_SYNC_ID 1 /* Synchronize ID */ +@@ -1633,8 +1684,12 @@ typedef struct + uint32_t sys_define_2; /* System defined. */ + uint8_t reserved_8; + uint8_t initiator_id; ++#if defined(EXTENDED_IDS) ++ uint16_t target; ++#else + uint8_t reserved_1; + uint8_t target_id; ++#endif + uint32_t reserved_2; + uint16_t status; + uint16_t task_flags; +@@ -1657,8 +1712,12 @@ typedef struct + uint32_t sys_define_2; /* System defined. */ + uint8_t reserved_8; + uint8_t initiator_id; ++#if defined(EXTENDED_IDS) ++ uint16_t target; ++#else + uint8_t reserved_1; + uint8_t target_id; ++#endif + uint16_t flags; + uint16_t reserved_2; + uint16_t status; +@@ -1678,8 +1737,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t initiator_id; ++#else + uint8_t reserved_8; + uint8_t initiator_id; ++#endif + uint16_t exchange_id; + uint16_t flags; + uint16_t status; +@@ -1707,8 +1770,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t initiator_id; ++#else + uint8_t reserved_8; + uint8_t initiator_id; ++#endif + uint16_t exchange_id; + uint16_t flags; + uint16_t status; +@@ -1738,8 +1805,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t initiator_id; ++#else + uint8_t reserved_8; + uint8_t initiator_id; ++#endif + uint16_t exchange_id; + uint16_t flags; + uint16_t status; +@@ -1763,8 +1834,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t initiator_id; ++#else + uint8_t reserved_8; + uint8_t initiator_id; ++#endif + uint16_t exchange_id; + uint16_t flags; + uint16_t status; +@@ -1792,8 +1867,12 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t sys_define_2; /* System defined. */ ++#if defined(EXTENDED_IDS) ++ uint16_t initiator_id; ++#else + uint8_t reserved_8; + uint8_t initiator_id; ++#endif + uint16_t exchange_id; + uint16_t flags; + uint16_t status; +@@ -1883,10 +1962,15 @@ typedef struct + uint8_t sys_define; /* System defined. */ + uint8_t entry_status; /* Entry Status. */ + uint32_t handle1; /* System handle. */ ++#if defined(EXTENDED_IDS) ++ uint16_t loop_id; ++#else + uint8_t reserved; + uint8_t loop_id; ++#endif + uint16_t status; + uint16_t control_flags; /* Control flags. */ ++#define CF_ELS_PASSTHRU BIT_15 + uint16_t reserved2; + uint16_t timeout; + uint16_t cmd_dsd_count; +@@ -1904,6 +1988,31 @@ typedef struct + uint32_t dseg_rsp_length; /* Data segment 1 length. */ + } ms_iocb_entry_t; + ++/* 4.15 ++ * RIO Type 1 IOCB response ++ */ ++struct rio_iocb_type1_entry ++{ ++ uint8_t entry_type; /* Entry type. */ ++ #define RIO_IOCB_TYPE1 0x21 /* IO Completion IOCB */ ++ uint8_t entry_count; /* Entry count. */ ++ uint8_t handle_count; /* # of valid handles. */ ++ uint8_t entry_status; /* Entry Status. */ ++ uint32_t handle[14]; /* handles finished */ ++}; ++ ++/* 4.16 ++ * RIO Type 2 IOCB response ++ */ ++struct rio_iocb_type2_entry ++{ ++ uint8_t entry_type; /* Entry type. */ ++ #define RIO_IOCB_TYPE2 0x22 /* IO Completion IOCB */ ++ uint8_t entry_count; /* Entry count. */ ++ uint8_t handle_count; /* # of valid handles. */ ++ uint8_t entry_status; /* Entry Status. */ ++ uint16_t handle[29]; /* handles finished */ ++}; + + /* + * ISP request and response queue entry sizes +@@ -1941,11 +2050,8 @@ typedef struct + #define SS_RESIDUAL_UNDER BIT_11 + #define SS_RESIDUAL_OVER BIT_10 + #define SS_SENSE_LEN_VALID BIT_9 +-#if defined(ISP2100) + #define SS_RESIDUAL_LEN_VALID BIT_8 +-#else + #define SS_RESPONSE_INFO_LEN_VALID BIT_8 +-#endif + + #define SS_RESERVE_CONFLICT (BIT_4 | BIT_3) + #define SS_BUSY_CONDITION BIT_3 +@@ -1994,36 +2100,18 @@ typedef union { + }b; + } port_id_t; + +-typedef struct +-{ +- port_id_t d_id; +- uint8_t name[WWN_SIZE]; +- uint8_t wwn[WWN_SIZE]; /* port name */ +- uint16_t loop_id; +- uint16_t flag; +- /* flags bits defined as follows */ +-#define DEV_PUBLIC BIT_0 +-#define DEV_LUNMASK_SET BIT_1 /* some LUNs masked for this device */ +-#define DEV_TAPE_DEVICE BIT_2 +-#define DEV_RELOGIN BIT_3 +-#define DEV_PORT_DOWN BIT_4 +-#define DEV_CONFIGURED BIT_5 +-#define DEV_ABSENCE BIT_6 +-#define DEV_RETURN BIT_7 +-#define DEV_INITIATOR BIT_8 +-#define DEV_FLAG_VSA BIT_9 +- int port_login_retry_count; +- uint8_t port_timer; +-}fcdev_t; ++/* ++ * Switch info gathering structure. ++ */ ++typedef struct { ++ port_id_t d_id; ++ uint8_t node_name[WWN_SIZE]; ++ uint8_t port_name[WWN_SIZE]; ++ uint32_t type; ++#define SW_TYPE_SCSI BIT_0 ++#define SW_TYPE_IP BIT_1 ++} sw_info_t; + +-/* New device name list struct; used in configure_fabric. */ +-struct new_dev { +- port_id_t d_id; +- uint8_t name[WWN_SIZE]; /* node name */ +- uint8_t wwn[WWN_SIZE]; /* port name */ +- uint16_t ignore; +-}; +-#define LOGOUT_PERFORMED 0x01 + /* + * Inquiry command structure. + */ +@@ -2038,6 +2126,26 @@ typedef struct { + uint8_t inq[INQ_DATA_SIZE]; + } inq_cmd_rsp_t; + ++#define VITAL_PRODUCT_DATA_SIZE 32 ++#define INQ_EVPD_SET 1 ++#define INQ_DEV_IDEN_PAGE 0x83 ++#define WWLUN_SIZE 32 ++ ++typedef struct { ++ union { ++ cmd_a64_entry_t cmd; ++ sts_entry_t rsp; ++ } p; ++ uint8_t inq[VITAL_PRODUCT_DATA_SIZE]; ++} evpd_inq_cmd_rsp_t; ++ ++typedef struct { ++ union { ++ cmd_a64_entry_t cmd; ++ sts_entry_t rsp; ++ } p; ++} tur_cmd_rsp_t; ++ + /* + * Report LUN command structure. + */ +@@ -2092,7 +2200,7 @@ typedef struct os_tgt { + atomic_t q_timer; /* suspend timer */ + unsigned long q_flags; /* suspend flags */ + #define TGT_SUSPENDED 1 +-#define TGT_UNSUSPENDED 2 ++#define TGT_RETRY_CMDS 2 + } os_tgt_t; + + /* +@@ -2141,32 +2249,45 @@ typedef struct lun_bit_mask { + } lun_bit_mask_t; + + /* ++ * Fibre channel port type. ++ */ ++ typedef enum { ++ FCT_UNKNOWN, ++ FCT_RSCN, ++ FCT_SWITCH, ++ FCT_BROADCAST, ++ FCT_INITIATOR, ++ FCT_TARGET ++} fc_port_type_t; ++ ++/* + * Fibre channel port structure. + */ + typedef struct fc_port { +- struct fc_port *next; +- struct fc_lun *fclun; ++ struct list_head list; ++ struct list_head fcluns; ++ + struct scsi_qla_host *ha; + struct scsi_qla_host *vis_ha; /* only used when suspending lun */ + port_id_t d_id; + uint16_t loop_id; + uint16_t old_loop_id; + int16_t lun_cnt; +- int16_t dev_id; /* index in fc_dev table */ ++ uint16_t dev_id; + #define FC_NO_LOOP_ID 0x100 + uint8_t node_name[WWN_SIZE]; /* Big Endian. */ + uint8_t port_name[WWN_SIZE]; /* Big Endian. */ + uint8_t mp_byte; /* multi-path byte */ + uint8_t cur_path; /* current path id */ + int port_login_retry_count; +- int login_retry; +- atomic_t state; /* port state */ +-#define FC_DEVICE_DEAD 1 +-#define FC_DEVICE_LOST 2 +-#define FC_ONLINE 3 +-#define FC_LOGIN_NEEDED 4 ++ int login_retry; ++ atomic_t state; /* state for I/O routing */ ++#define FC_DEVICE_DEAD 1 /* Device has been missing for the expired time */ ++ /* "port timeout" */ ++#define FC_DEVICE_LOST 2 /* Device is missing */ ++#define FC_ONLINE 3 /* Device is ready and online */ + +- uint8_t flags; ++ uint16_t flags; + #define FC_FABRIC_DEVICE BIT_0 + #define FC_TAPE_DEVICE BIT_1 + #define FC_INITIATOR_DEVICE BIT_2 +@@ -2174,7 +2295,25 @@ typedef struct fc_port { + #define FC_VSA BIT_4 + #define FC_HD_DEVICE BIT_5 + #define FC_SUPPORT_RPT_LUNS BIT_6 +- atomic_t port_down_timer; ++#define FC_XP_DEVICE BIT_7 ++#define FC_CONFIG_DEVICE BIT_8 ++#define FC_MSA_DEVICE BIT_9 ++#define FC_MSA_PORT_ACTIVE BIT_10 ++#define FC_FAILBACK_DISABLE BIT_11 ++#define FC_LOGIN_NEEDED BIT_12 ++#define FC_EVA_DEVICE BIT_13 ++#define FC_FAILOVER_DISABLE BIT_14 ++ int16_t cfg_id; /* index into cfg device table */ ++ uint16_t notify_type; ++ atomic_t port_down_timer; ++ int (*fo_combine)(void *, uint16_t, ++ struct fc_port *, uint16_t ); ++ int (*fo_detect)(void); ++ int (*fo_notify)(void); ++ int (*fo_select)(void); ++ ++ fc_port_type_t port_type; ++ + lun_bit_mask_t lun_mask; + } fc_port_t; + +@@ -2182,28 +2321,22 @@ typedef struct fc_port { + * Fibre channel LUN structure. + */ + typedef struct fc_lun { +- struct fc_lun *next; ++ struct list_head list; ++ + fc_port_t *fcport; + uint16_t lun; + uint8_t max_path_retries; + uint8_t flags; + #define FC_DISCON_LUN BIT_0 ++#define FC_VISIBLE_LUN BIT_2 ++#define FC_ACTIVE_LUN BIT_3 ++ uint8_t inq0; + u_long kbytes; ++ void *mplun; ++ void *mpbuf; /* ptr to buffer use by multi-path driver */ ++ int mplen; + } fc_lun_t; + +-typedef struct +-{ +- uint8_t in_use; +-}fabricid_t; +- +-typedef struct { +- struct list_head list; +- +- uint8_t node_name[WWN_SIZE]; +- uint8_t port_name[WWN_SIZE]; +- port_id_t d_id; +- uint16_t loop_id; +-} fc_initiator_t; + + /* + * Registered State Change Notification structures. +@@ -2607,6 +2740,13 @@ typedef struct scsi_qla_host + uint32_t total_dev_errs; /* device error cnt */ + uint32_t total_ios; /* IO cnt */ + uint64_t total_bytes; /* xfr byte cnt */ ++ ++ uint64_t total_input_cnt; /* input request cnt */ ++ uint64_t total_output_cnt; /* output request cnt */ ++ uint64_t total_ctrl_cnt; /* control request cnt */ ++ uint64_t total_input_bytes; /* input xfr bytes cnt */ ++ uint64_t total_output_bytes; /* output xfr bytes cnt */ ++ + uint32_t total_mbx_timeout; /* mailbox timeout cnt */ + uint32_t total_loop_resync; /* loop resyn cnt */ + +@@ -2656,37 +2796,30 @@ typedef struct scsi_qla_host + uint16_t max_targets; + + /* Fibre Channel Device List. */ +- fc_port_t *fcport; ++ struct list_head fcports; + + /* OS target queue pointers. */ + os_tgt_t *otgt[MAX_FIBRE_DEVICES]; + +- /* Fibre Channel Device Database and LIP sequence. */ +- fcdev_t fc_db[MAX_FIBRE_DEVICES]; /* Driver database. */ + uint32_t flash_db; /* Flash database address in use. */ +- fabricid_t fabricid[MAX_FIBRE_DEVICES]; /* Fabric ids table . */ + uint32_t flash_seq; /* Flash database seq # in use. */ + volatile uint16_t lip_seq; /* LIP sequence number. */ + +- /* Tracks host adapters we find */ +- struct list_head fcinitiators; /* Initiator database */ +- + /* RSCN queue. */ + rscn_t rscn_queue[MAX_RSCN_COUNT]; + uint8_t rscn_in_ptr; + uint8_t rscn_out_ptr; ++ ++ unsigned long last_irq_cpu; /* cpu where we got our last irq */ + +-#if QLA2X_PERFORMANCE +- /* Doneq bottom half handler */ +- struct tasklet_struct run_qla_task; +-#endif + /* + * Need to hold the list_lock with irq's disabled in order to + * access the following list. + * This list_lock is of lower priority than the io_request_lock. + */ + /*********************************************************/ +- spinlock_t list_lock; /* lock to guard lists which ++ spinlock_t list_lock ____cacheline_aligned; ++ /* lock to guard lists which + hold srb_t's*/ + struct list_head retry_queue; /* watchdog queue */ + struct list_head done_queue; /* job on done queue */ +@@ -2695,17 +2828,9 @@ typedef struct scsi_qla_host + struct list_head scsi_retry_queue; /* SCSI retry queue */ + + struct list_head pending_queue; /* SCSI command pending queue */ +- ++ + /*********************************************************/ + +- /* This spinlock is used to protect "io transactions", you must +- * aquire it before doing any IO to the card, eg with RD_REG*() and +- * WRT_REG*() for the duration of your entire commandtransaction. +- * +- * This spinlock is of lower priority than the io request lock. +- */ +- +- spinlock_t hardware_lock; + + /* Linux kernel thread */ + struct task_struct *dpc_handler; /* kernel thread */ +@@ -2717,6 +2842,15 @@ typedef struct scsi_qla_host + /* Received ISP mailbox data. */ + volatile uint16_t mailbox_out[MAILBOX_REGISTER_COUNT]; + ++ /* This spinlock is used to protect "io transactions", you must ++ * aquire it before doing any IO to the card, eg with RD_REG*() and ++ * WRT_REG*() for the duration of your entire commandtransaction. ++ * ++ * This spinlock is of lower priority than the io request lock. ++ */ ++ ++ spinlock_t hardware_lock ____cacheline_aligned; ++ + /* Outstandings ISP commands. */ + srb_t *outstanding_cmds[MAX_OUTSTANDING_COMMANDS]; + uint32_t current_outstanding_cmd; +@@ -2815,6 +2949,7 @@ typedef struct scsi_qla_host + uint8_t *cmdline; + + uint32_t login_retry_count; ++ + + volatile struct + { +@@ -2825,7 +2960,7 @@ typedef struct scsi_qla_host + + uint32_t port_name_used :1; /* 4 */ + uint32_t failover_enabled :1; /* 5 */ +- uint32_t watchdog_enabled :1; /* 6 */ ++ uint32_t failback_disabled :1; /* 6 */ + uint32_t cfg_suspended :1; /* 7 */ + + uint32_t disable_host_adapter :1; /* 8 */ +@@ -2853,11 +2988,7 @@ typedef struct scsi_qla_host + #if defined(FC_IP_SUPPORT) + uint32_t enable_ip :1; /* 27 */ + #endif +-#if defined(ISP2300) + uint32_t process_response_queue :1; /* 28 */ +-#endif +- +- + } flags; + + uint32_t device_flags; +@@ -2912,6 +3043,7 @@ typedef struct scsi_qla_host + #define ISP_ABORT_RETRY 27 /* ISP aborted. */ + + #define PORT_SCAN_NEEDED 28 /* */ ++#define IOCTL_ERROR_RECOVERY 29 + + + /* macro for timer to start dpc for handling mailbox commands */ +@@ -2926,13 +3058,13 @@ typedef struct scsi_qla_host + uint8_t interrupts_on; + uint8_t init_done; + +- volatile uint16_t loop_state; +-#define LOOP_TIMEOUT 0x01 +-#define LOOP_DOWN 0x02 +-#define LOOP_UP 0x04 +-#define LOOP_UPDATE 0x08 +-#define LOOP_READY 0x10 +-#define LOOP_DEAD 0x20 /* Link Down Timer expires */ ++ atomic_t loop_state; ++#define LOOP_TIMEOUT 1 ++#define LOOP_DOWN 2 ++#define LOOP_UP 3 ++#define LOOP_UPDATE 4 ++#define LOOP_READY 5 ++#define LOOP_DEAD 6 /* Link Down Timer expires */ + + mbx_cmd_t mc; + uint32_t mbx_flags; +@@ -2948,8 +3080,15 @@ typedef struct scsi_qla_host + hba_ioctl_context *ioctl; + uint8_t node_name[WWN_SIZE]; + +- uint8_t optrom_major; +- uint8_t optrom_minor; ++ /* PCI expansion ROM image information. */ ++ unsigned long code_types; ++#define ROM_CODE_TYPE_BIOS 0 ++#define ROM_CODE_TYPE_FCODE 1 ++#define ROM_CODE_TYPE_EFI 3 ++ ++ uint8_t bios_revision[2]; ++ uint8_t efi_revision[2]; ++ uint8_t fcode_revision[16]; + + uint8_t nvram_version; + +@@ -2963,7 +3102,7 @@ typedef struct scsi_qla_host + uint8_t serial1; + uint8_t serial2; + +- /* Offset 200-215 : Model Number */ ++ /* NVRAM Offset 200-215 : Model Number */ + uint8_t model_number[16]; + + /* oem related items */ +@@ -2978,6 +3117,7 @@ typedef struct scsi_qla_host + uint32_t failback_delay; + unsigned long cfg_flags; + #define CFG_ACTIVE 0 /* CFG during a failover, event update, or ioctl */ ++#define CFG_FAILOVER 1 /* CFG during path change */ + /* uint8_t cfg_active; */ + int eh_start; + +@@ -2993,7 +3133,6 @@ typedef struct scsi_qla_host + uint32_t binding_type; + #define BIND_BY_PORT_NAME 0 + #define BIND_BY_PORT_ID 1 +-#define BIND_BY_NODE_NAME 2 + + srb_t *status_srb; /* Keep track of Status Continuation Entries */ + +@@ -3010,10 +3149,23 @@ typedef struct scsi_qla_host + #endif + ms_iocb_entry_t *ms_iocb; + dma_addr_t ms_iocb_dma; +- struct ct_sns_pkt *ct_sns; +- dma_addr_t ct_sns_dma; ++ void *ct_iu; ++ dma_addr_t ct_iu_dma; ++ ++ Scsi_Cmnd *ioctl_err_cmd; + ++ unsigned long fdmi_flags; ++#define FDMI_REGISTER_NEEDED 0 /* bit 0 */ + ++ /* Hardware ID/version string from NVRAM */ ++ uint8_t hw_id_version[16]; ++ /* Model description string from our table based on NVRAM spec */ ++ uint8_t model_desc[80]; ++ ++ /* Scsi midlayer lock */ ++#if defined(SH_HAS_HOST_LOCK) ++ spinlock_t host_lock ____cacheline_aligned; ++#endif + } scsi_qla_host_t; + + #if defined(__BIG_ENDIAN) +@@ -3059,8 +3211,6 @@ typedef struct scsi_qla_host + #define TGT_Q(ha, t) (ha->otgt[t]) + #define LUN_Q(ha, t, l) (TGT_Q(ha, t)->olun[l]) + #define GET_LU_Q(ha, t, l) ( (TGT_Q(ha,t) != NULL)? TGT_Q(ha, t)->olun[l] : NULL) +-#define PORT_DOWN_TIMER(ha, t) ((ha)->fc_db[(t)].port_timer) +-#define PORT(ha, t) ((ha)->fc_db[(t)]) + #define PORT_LOGIN_RETRY(fcport) ((fcport)->port_login_retry_count) + + #define MBOX_TRACE(ha,b) {(ha)->mbox_trace |= (b);} +@@ -3078,35 +3228,46 @@ typedef struct scsi_qla_host + } + #endif + +-static void qla2x00_device_queue_depth(scsi_qla_host_t *, Scsi_Device *); ++void qla2x00_device_queue_depth(scsi_qla_host_t *, Scsi_Device *); + #endif + +-#if defined(__386__) +-# define QLA2100_BIOSPARAM qla2x00_biosparam +-#else +-# define QLA2100_BIOSPARAM NULL +-#endif + + /* + * Linux - SCSI Driver Interface Function Prototypes. + */ +-static int qla2x00_ioctl(Scsi_Device *, int , void *); +-static int qla2x00_proc_info ( char *, char **, off_t, int, int, int); +-static const char * qla2x00_info(struct Scsi_Host *host); +-static int qla2x00_detect(Scsi_Host_Template *); +-static int qla2x00_release(struct Scsi_Host *); +-static const char * qla2x00_info(struct Scsi_Host *); +-static int qla2x00_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *)); ++int qla2x00_ioctl(Scsi_Device *, int , void *); ++int qla2x00_proc_info ( char *, char **, off_t, int, int, int); ++const char * qla2x00_info(struct Scsi_Host *host); ++int qla2x00_detect(Scsi_Host_Template *); ++int qla2x00_release(struct Scsi_Host *); ++const char * qla2x00_info(struct Scsi_Host *); ++int qla2x00_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *)); + int qla2x00_abort(Scsi_Cmnd *); + int qla2x00_reset(Scsi_Cmnd *, unsigned int); +-static int qla2x00_biosparam(Disk *, kdev_t, int[]); +-static void qla2x00_intr_handler(int, void *, struct pt_regs *); ++int qla2x00_biosparam(Disk *, kdev_t, int[]); ++void qla2x00_intr_handler(int, void *, struct pt_regs *); + #if !defined(MODULE) +-static int __init qla2x00_setup (char *s); ++static int __init qla2100_setup (char *s); + #else + void qla2x00_setup(char *s); + #endif + ++#if defined(CONFIG_COMPAT) || \ ++ ( defined(CONFIG_SUSE_KERNEL) && \ ++ (defined(CONFIG_PPC64) || defined(CONFIG_X86_64))) ++#define QLA_CONFIG_COMPAT ++#endif ++ ++/* ++ * Scsi_Host_template (see hosts.h) ++ * Device driver Interfaces to mid-level SCSI driver. ++ */ ++ ++/* Kernel version specific template additions */ ++ ++/* Number of segments 1 - 65535 */ ++#define SG_SEGMENTS 32 /* Cmd entry + 6 continuations */ ++ + /* + * Scsi_Host_template (see hosts.h) + * Device driver Interfaces to mid-level SCSI driver. +@@ -3119,7 +3280,7 @@ void qla2x00_setup(char *s); + * + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,8) +-#define TEMPLATE_MAX_SECTORS max_sectors: 8192, ++#define TEMPLATE_MAX_SECTORS max_sectors: 512, + #else + #define TEMPLATE_MAX_SECTORS + #endif +@@ -3127,60 +3288,99 @@ void qla2x00_setup(char *s); + * use_new_eh_code + * + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +-#define TEMPLATE_USE_NEW_EH_CODE +-#else + #define TEMPLATE_USE_NEW_EH_CODE use_new_eh_code: 1, +-#endif + /* + * emulated + * + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +-#define TEMPLATE_EMULATED +-#else + #define TEMPLATE_EMULATED emulated: 0, +-#endif + /* + * next + * + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +-#define TEMPLATE_NEXT +-#else + #define TEMPLATE_NEXT next: NULL, +-#endif + /* + * module + * + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +-#define TEMPLATE_MODULE +-#else + #define TEMPLATE_MODULE module: NULL, +-#endif + /* + * proc_dir + * + */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +-#define TEMPLATE_PROC_DIR +-#else + #define TEMPLATE_PROC_DIR proc_dir: NULL, ++ ++/* highmem_io */ ++#ifdef SHT_HAS_HIGHMEM_IO ++#define TEMPLATE_HIGHMEM_IO highmem_io: 1, ++#else ++#define TEMPLATE_HIGHMEM_IO ++#endif ++/* can_dma_32 */ ++#ifdef SHT_HAS_CAN_DMA_32 ++#define TEMPLATE_CAN_DMA_32 can_dma_32: 1, ++#else ++#define TEMPLATE_CAN_DMA_32 ++#endif ++/* single_sg_ok A.S. 2.1 */ ++#ifdef SHT_HAS_SINGLE_SG_OK ++#define TEMPLATE_SINGLE_SG_OK single_sg_ok: 1, ++#else ++#define TEMPLATE_SINGLE_SG_OK ++#endif ++/* can_do_varyio -- A.S. 2.1 */ ++#ifdef SHT_HAS_CAN_DO_VARYIO ++#define TEMPLATE_CAN_DO_VARYIO can_do_varyio: 1, ++#else ++#define TEMPLATE_CAN_DO_VARYIO ++#endif ++/* vary_io -- SLES 8 */ ++#ifdef SHT_HAS_VARY_IO ++#define TEMPLATE_VARY_IO vary_io: 1, ++#else ++#define TEMPLATE_VARY_IO + #endif + ++/* RHEL3 specifics */ ++ ++/* need_plug_timer -- RHEL3 */ ++#ifdef SHT_HAS_NEED_PLUG_TIMER ++/* As per RH, backout scsi-affine feature. */ ++#define TEMPLATE_NEED_PLUG_TIMER ++/*#define TEMPLATE_NEED_PLUG_TIMER need_plug_timer: 1, */ ++#else ++#define TEMPLATE_NEED_PLUG_TIMER ++#endif ++ ++/* ++ * There are several Scsi_Host members that are RHEL3 specific ++ * yet depend on the SCSI_HAS_HOST_LOCK define for visibility. ++ * Unfortuantely, it seems several RH kernels have the define ++ * set, but do not have a host_lock member. ++ * ++ * Use the SH_HAS_HOST_LOCK define determined during driver ++ * compilation rather than SCSI_HAS_HOST_LOCK. ++ * ++ * Also use SH_HAS_CAN_QUEUE_MASK to determine if can_queue_mask ++ * is an Scsi_Host member. ++ * ++ * SH_HAS_HOST_LOCK -- host_lock defined ++ * SH_HAS_CAN_QUEUE_MASK -- can_queue_mask defined ++ */ + ++/* As per RH, backout scsi-affine feature. */ ++#undef SH_HAS_CAN_QUEUE_MASK + + #define QLA2100_LINUX_TEMPLATE { \ + TEMPLATE_NEXT \ + TEMPLATE_MODULE \ + TEMPLATE_PROC_DIR \ + proc_info: qla2x00_proc_info, \ +- name: "Qlogic Fibre Channel 2x00", \ ++ name: "QLogic Fibre Channel 2x00", \ + detect: qla2x00_detect, \ + release: qla2x00_release, \ + info: qla2x00_info, \ +- ioctl: qla2x00_ioctl, \ ++ ioctl: qla2x00_ioctl, \ + command: NULL, \ + queuecommand: qla2x00_queuecommand, \ + eh_strategy_handler: NULL, \ +@@ -3191,19 +3391,23 @@ TEMPLATE_PROC_DIR \ + abort: NULL, \ + reset: NULL, \ + slave_attach: NULL, \ +- bios_param: QLA2100_BIOSPARAM, \ +- can_queue: 256, /* max simultaneous cmds */\ ++ bios_param: qla2x00_biosparam, \ ++ can_queue: REQUEST_ENTRY_CNT+128, /* max simultaneous cmds */\ + this_id: -1, /* scsi id of host adapter */\ + sg_tablesize: SG_SEGMENTS, /* max scatter-gather cmds */\ + cmd_per_lun: 3, /* cmds per lun (linked cmds) */\ + present: 0, /* number of 7xxx's present */\ + unchecked_isa_dma: 0, /* no memory DMA restrictions */\ +- use_clustering: ENABLE_CLUSTERING, \ + TEMPLATE_USE_NEW_EH_CODE \ + TEMPLATE_MAX_SECTORS \ + TEMPLATE_EMULATED \ +- highmem_io :1, \ +- vary_io: 1, \ ++TEMPLATE_HIGHMEM_IO \ ++TEMPLATE_CAN_DMA_32 \ ++TEMPLATE_SINGLE_SG_OK \ ++TEMPLATE_CAN_DO_VARYIO \ ++TEMPLATE_VARY_IO \ ++TEMPLATE_NEED_PLUG_TIMER \ ++ use_clustering: ENABLE_CLUSTERING \ + } + + #endif /* _IO_HBA_QLA2100_H */ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00_ioctl.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00_ioctl.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla2x00_ioctl.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla2x00_ioctl.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -18,9 +18,8 @@ + ******************************************************************************/ + + +-#define QLA_PT_CMD_TOV (60) /* firmware timeout */ +-#define QLA_PT_CMD_DRV_TOV (QLA_PT_CMD_TOV + 1) /* drvr timeout */ +-#define QLA_IOCTL_ACCESS_WAIT_TIME (QLA_PT_CMD_DRV_TOV + 2) /* wait_q tov */ ++#define QLA_PT_CMD_DRV_TOV (ql2xioctltimeout + 1) /* drvr timeout */ ++#define QLA_IOCTL_ACCESS_WAIT_TIME (ql2xioctltimeout + 2) /* wait_q tov */ + #define QLA_INITIAL_IOCTLMEM_SIZE (2 * PAGE_SIZE) + #define QLA_IOCTL_SCRAP_SIZE 2048 /* scrap memory for local use. */ + +@@ -39,12 +38,12 @@ + #if defined(INTAPI) + #include "inioct.h" + /* from qla_inioct.c */ +-static int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t); +-static int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); ++extern int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); ++extern int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); ++extern int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t); ++extern int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int); ++extern int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); ++extern int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); + #endif + + +@@ -58,11 +57,6 @@ STATIC void qla2x00_free_ioctl_mem(scsi_ + STATIC int qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *, void **, uint32_t); + STATIC void qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *); + +-#if defined(ISP2300) +-STATIC uint8_t qla2x00_get_next_free_pub_id(scsi_qla_host_t *, uint16_t *); +-STATIC uint8_t qla2x00_host_relogin(scsi_qla_host_t *, fcdev_t *); +-#endif +- + STATIC int qla2x00_find_curr_ha(uint16_t, scsi_qla_host_t **); + + STATIC int qla2x00_get_driver_specifics(EXT_IOCTL *); +@@ -83,15 +77,17 @@ STATIC int qla2x00_get_statistics(scsi_q + STATIC int qla2x00_get_fc_statistics(scsi_qla_host_t *, EXT_IOCTL *, int); + STATIC int qla2x00_get_port_summary(scsi_qla_host_t *, EXT_IOCTL *, int); + STATIC int qla2x00_get_fcport_summary(scsi_qla_host_t *, EXT_DEVICEDATAENTRY *, +- void *, uint32_t, uint32_t *, uint32_t *); ++ void *, uint32_t, uint32_t, uint32_t *, uint32_t *); ++#if 0 + STATIC int qla2x00_std_missing_port_summary(scsi_qla_host_t *, + EXT_DEVICEDATAENTRY *, void *, uint32_t, uint32_t *, uint32_t *); ++#endif + STATIC int qla2x00_query_driver(scsi_qla_host_t *, EXT_IOCTL *, int); + STATIC int qla2x00_query_fw(scsi_qla_host_t *, EXT_IOCTL *, int); + + STATIC int qla2x00_msiocb_passthru(scsi_qla_host_t *, EXT_IOCTL *, int, + int); +-#if defined(ISP2300) ++#if defined(ISP2300) + STATIC int qla2x00_send_els_passthru(scsi_qla_host_t *, EXT_IOCTL *, + Scsi_Cmnd *, fc_port_t *, fc_lun_t *, int); + #endif +@@ -208,6 +204,7 @@ qla2x00_scsi_pt_done(Scsi_Cmnd *pscsi_cm + /* save detail status for IOCTL reporting */ + ha->ioctl->SCSIPT_InProgress = 0; + ha->ioctl->ioctl_tov = 0; ++ ha->ioctl_err_cmd = NULL; + + up(&ha->ioctl->cmpl_sem); + +@@ -260,7 +257,7 @@ qla2x00_msiocb_done(Scsi_Cmnd *pscsi_cmd + * ret != 0 Failed; detailed status copied to EXT_IOCTL structure + * if possible + *************************************************************************/ +-STATIC int ++int + qla2x00_ioctl(Scsi_Device *dev, int cmd, void *arg) + { + int mode = 0; +@@ -285,13 +282,6 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + return (ret); + } + +- ret = verify_area(VERIFY_READ, (void *)arg, sizeof(EXT_IOCTL)); +- if (ret) { +- DEBUG9_10(printk("%s: ERROR VERIFY_READ EXT_IOCTL " +- "sturct. cmd=%x arg=%p.\n", __func__, cmd, arg);) +- return (ret); +- } +- + /* Allocate ioctl structure buffer to support multiple concurrent + * entries. + */ +@@ -314,16 +304,6 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + return (ret); + } + +- /* Verify before update status fields in EXT_IOCTL struct. */ +- ret = verify_area(VERIFY_WRITE, (void *)arg, sizeof(EXT_IOCTL)); +- if (ret) { +- DEBUG9_10(printk("%s: ERROR VERIFY_WRITE EXT_IOCTL " +- "sturct. cmd=%x arg=%p.\n", __func__, cmd, arg);) +- +- KMEM_FREE(pext, sizeof(EXT_IOCTL)); +- return (ret); +- } +- + /* check signature of this ioctl */ + temp = (uint8_t *) &pext->Signature; + +@@ -340,10 +320,10 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + DEBUG9_10(printk("%s: signature did not match. " + "cmd=%x arg=%p.\n", __func__, cmd, arg);) + pext->Status = EXT_STATUS_INVALID_PARAM; +- copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); +- return (-EINVAL); ++ return (ret); + } + + /* check version of this ioctl */ +@@ -351,8 +331,6 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + printk(KERN_WARNING + "qla2x00: ioctl interface version not supported = %d.\n", + pext->Version); +- pext->Status = EXT_STATUS_UNSUPPORTED_VERSION; +- copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); + return (-EINVAL); +@@ -365,8 +343,7 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + + pext->Instance = num_hosts; + pext->Status = EXT_STATUS_OK; +- ret = copy_to_user((void *)arg, (void *)pext, +- sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); + return (ret); +@@ -393,7 +370,8 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + */ + if (qla2x00_find_curr_ha(pext->Instance, &ha) != 0) { + pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, ++ sizeof(EXT_IOCTL)); + DEBUG9_10(printk("%s: SETINSTANCE invalid inst " + "%d. num_hosts=%d ha=%p ret=%d.\n", + __func__, pext->Instance, num_hosts, ha, +@@ -425,7 +403,7 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + + case EXT_CC_DRIVER_SPECIFIC: + ret = qla2x00_get_driver_specifics(pext); +- tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL)); ++ tmp_rval = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + if (ret == 0) + ret = tmp_rval; +@@ -454,10 +432,10 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + __func__, apiHBAInstance);) + + pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- copy_to_user(arg, pext, sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); +- return (-EINVAL); ++ return (ret); + } + + DEBUG9(printk("%s: active apiHBAInstance=%d host_no=%ld " +@@ -475,10 +453,10 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + __func__, pext->HbaSelect);) + + pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- copy_to_user(arg, pext, sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); +- return (-EINVAL); ++ return (ret); + } + + DEBUG9(printk("%s: active host_inst=%ld CC=%x SC=%x.\n", +@@ -495,15 +473,15 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + "access. host no=%d.\n", __func__, pext->HbaSelect);) + + pext->Status = EXT_STATUS_BUSY; +- copy_to_user(arg, pext, sizeof(EXT_IOCTL)); ++ ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + KMEM_FREE(pext, sizeof(EXT_IOCTL)); +- return (-EBUSY); ++ return (ret); + } + + + while (test_bit(CFG_ACTIVE, &ha->cfg_flags) || ha->dpc_active) { +- if( signal_pending(current) ) ++ if (signal_pending(current)) + break; /* get out */ + + set_current_state(TASK_INTERRUPTIBLE); +@@ -598,7 +576,7 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + case EXT_CC_PLATFORM_REG: + break; + */ +- ++#if !defined(ISP200) + /* Failover IOCTLs */ + case FO_CC_GET_PARAMS: + case FO_CC_SET_PARAMS: +@@ -615,6 +593,7 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + qla2x00_fo_ioctl(ha, cmd, pext, mode); + + break; ++#endif + + default: + pext->Status = EXT_STATUS_INVALID_REQUEST; +@@ -623,7 +602,7 @@ qla2x00_ioctl(Scsi_Device *dev, int cmd, + } /* end of CC decode switch */ + + /* Always try to copy values back regardless what happened before. */ +- tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL)); ++ tmp_rval = copy_to_user(arg, pext, sizeof(EXT_IOCTL)); + + if (ret == 0) + ret = tmp_rval; +@@ -712,18 +691,10 @@ qla2x00_alloc_ioctl_mem(scsi_qla_host_t + __func__, ha->host_no, ha->ioctl->scrap_mem_size);) + + ha->ioctl->ioctl_lq->q_state = LUN_STATE_READY; +-#ifdef __VMWARE__ +- spin_lock_init(&ha->ioctl->ioctl_lq->q_lock); +-#else + ha->ioctl->ioctl_lq->q_lock = SPIN_LOCK_UNLOCKED; +-#endif + + /* Init wait_q fields */ +-#ifdef __VMWARE__ +- spin_lock_init(&ha->ioctl->wait_q_lock); +-#else + ha->ioctl->wait_q_lock = SPIN_LOCK_UNLOCKED; +-#endif + + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n", + __func__, ha->host_no, ha->instance);) +@@ -812,10 +783,6 @@ qla2x00_free_ioctl_mem(scsi_qla_host_t * + } + + if (ha->ioctl->ioctl_lq != NULL) { +-#ifdef __VMWARE__ +- spin_lock_destroy(&ha->ioctl->ioctl_lq->q_lock); +- spin_lock_destroy(&ha->ioctl->wait_q_lock); +-#endif + KMEM_FREE(ha->ioctl->ioctl_lq, sizeof(os_lun_t)); + ha->ioctl->ioctl_lq = NULL; + } +@@ -908,193 +875,6 @@ qla2x00_free_ioctl_scrap_mem(scsi_qla_ho + __func__, ha->host_no);) + } + +-#if defined(ISP2300) +-/* +- * qla2x00_get_next_free_pub_id +- * Find the next free public loop ID to use, starting from the old +- * loop ID passed in. If the old loop ID is invalid, this function +- * will start the search from beginning. +- * +- * Input: +- * ha = adapter block pointer. +- * ploop_id = pointer to a 16bit var containing the old loop +- * ID which is also to be used to get the new loop ID. +- * +- * Returns: +- * QL_STATUS_SUCCESS - Found an usable loop ID +- * QL_STATUS_RESOURCE_ERROR - No more free loop ID +- */ +-STATIC uint8_t +-qla2x00_get_next_free_pub_id(scsi_qla_host_t *ha, uint16_t *ploop_id) +-{ +- uint8_t retval = QL_STATUS_SUCCESS; +- uint16_t index; +- uint16_t old_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld entered.\n", +- __func__, ha->host_no, ha->instance);) +- +- old_id = *ploop_id; +- if (old_id >= LAST_SNS_LOOP_ID) { +- /* set a starting point */ +- old_id = ha->min_external_loopid; +- } +- +- for (index = old_id; index < LAST_SNS_LOOP_ID; index++) { +- if (!ha->fabricid[index].in_use) { +- ha->fabricid[index].in_use = TRUE; +- *ploop_id = index; +- DEBUG9(printk("%s(%ld): found Lid %02x.\n", +- __func__, ha->host_no, index);) +- break; +- } +- } +- if (index >= LAST_SNS_LOOP_ID) { +- /* no more free ID */ +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no more free LID " +- "available.\n", __func__, ha->host_no, ha->instance);) +- +- retval = QL_STATUS_RESOURCE_ERROR; +- } +- +- DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n", +- __func__, ha->host_no, ha->instance, retval);) +- +- return retval; +-} +- +-/* +- * qla2x00_host_relogin +- * Issue fabric login command to a host in the host_db which +- * had somehow been lost before. All updates are passed back +- * via pdevice. No update will be done to any of ha's database. +- * +- * Input: +- * ha = adapter block pointer. +- * pdevice = pointer to FC device type structure. +- * +- * Returns: +- * QL_STATUS_SUCCESS - Login successfully +- * QL_STATUS_ERROR - Login failed +- * QL_STATUS_FATAL_ERROR - Fatal error +- */ +-STATIC uint8_t +-qla2x00_host_relogin(scsi_qla_host_t *ha, fcdev_t *pdevice) +-{ +- uint8_t retval = QL_STATUS_SUCCESS; +- uint16_t status[3]; +- uint16_t tmp_loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld entered.\n", +- __func__, ha->host_no, ha->instance);) +- +- /* pdevice->loop_id is assumed to be straight from the current +- * database content. +- */ +- tmp_loop_id = pdevice->loop_id & 0xff; +- if (tmp_loop_id >= LAST_SNS_LOOP_ID) { +- /* Invalid value. We need to find a valid ID to use. */ +- if (qla2x00_get_next_free_pub_id(ha, &tmp_loop_id) != 0) { +- /* no more free IDs to use */ +- DEBUG9_10(printk("%s(%ld): inst=%ld no free loop_id " +- " available for login.\n", +- __func__, ha->host_no, ha->instance);) +- +- return QL_STATUS_ERROR; +- } +- } +- +- for (;;) { +- DEBUG9(printk("%s(%ld): Login w/loop id 0x%02x for port %06x\n", +- __func__, ha->host_no, pdevice->loop_id, +- pdevice->d_id.b24);) +- +- /* Login device on switch. */ +- qla2x00_login_fabric(ha, +- tmp_loop_id, pdevice->d_id.b.domain, +- pdevice->d_id.b.area, pdevice->d_id.b.al_pa, +- &status[0], 0); +- +- if (status[0] != MBS_CMD_CMP && +- status[0] != MBS_PORT_ID_IN_USE && +- status[0] != MBS_LOOP_ID_IN_USE) { +- +- DEBUG9_10(printk("%s(%ld): inst=%ld " +- "ERROR login status[0]=%x status[1]=%x.\n", +- __func__, ha->host_no, ha->instance, status[0], +- status[1]);) +- +- retval = QL_STATUS_FATAL_ERROR; +- break; +- } +- +- if (status[0] == MBS_CMD_CMP) { +- DEBUG9(printk("%s(%ld): inst=%ld " +- " host login success; loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, tmp_loop_id);) +- +- pdevice->loop_id = tmp_loop_id; +- retval = QL_STATUS_SUCCESS; +- break; +- +- } else if (status[0] == MBS_PORT_ID_IN_USE) { +- ha->fabricid[tmp_loop_id].in_use = FALSE; +- tmp_loop_id = status[1]; +- +- DEBUG9(printk("%s(%ld): inst=%ld " +- "port %06x already using loop id=0x%02x in " +- "f/w database. Retrying.\n", +- __func__, ha->host_no, ha->instance, +- pdevice->d_id.b24, tmp_loop_id);) +- +- if (tmp_loop_id <= LAST_SNS_LOOP_ID) { +- ha->fabricid[tmp_loop_id].in_use = TRUE; +- } else { +- /* Error */ +- DEBUG9_10(printk("%s(%ld): inst=%ld " +- "PORT_ID_IN_USE - invalid loop id %02x " +- "returned.\n", +- __func__, ha->host_no, ha->instance, +- pdevice->loop_id);) +- retval = QL_STATUS_ERROR; +- break; +- } +- +- } else if (status[0] == MBS_LOOP_ID_IN_USE) { +- /* loop id already used by others; try another one */ +- DEBUG9_10(printk("%s(%ld): inst=%ld " +- "loop id %02x already used.\n", +- __func__, ha->host_no, ha->instance, +- pdevice->loop_id);) +- +- /* Search for another usable loop_id */ +- if (qla2x00_get_next_free_pub_id(ha, +- &tmp_loop_id) == 0) { +- +- DEBUG9(printk("%s(%ld): previous loop " +- "id in use. Retry with 0x%02x.\n", +- __func__, ha->host_no, tmp_loop_id);) +- +- ha->fabricid[tmp_loop_id].in_use = TRUE; +- } else { +- /* Error */ +- DEBUG9_10(printk("%s(%ld): inst=%ld loop id " +- "in use; no more free loop id.\n", +- __func__, ha->host_no, ha->instance);) +- +- retval = QL_STATUS_ERROR; +- break; +- } +- } +- } +- +- DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n", +- __func__, ha->host_no, ha->instance, retval);) +- +- return (retval); +-} +-#endif +- + /* + * qla2x00_find_curr_ha + * Searches and returns the pointer to the adapter host_no specified. +@@ -1172,21 +952,11 @@ qla2x00_get_driver_specifics(EXT_IOCTL * + data.DrvVer.Patch = QLA_DRIVER_PATCH_VER; + data.DrvVer.Beta = QLA_DRIVER_BETA_VER; + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, ++ ret = copy_to_user(pext->ResponseAdr, &data, + sizeof(EXT_LN_DRIVER_DATA)); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s: ERROR verify write resp buf\n", +- __func__);) +- +- return (ret); +- } +- +- ret = copy_to_user(pext->ResponseAdr, &data, sizeof(EXT_LN_DRIVER_DATA)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s: ERROR copy resp buf\n", +- __func__);) ++ DEBUG9_10(printk("%s: ERROR copy resp buf\n", __func__);) + } + + DEBUG9(printk("%s: exiting. ret=%d.\n", +@@ -1220,17 +990,8 @@ qla2x00_aen_reg(scsi_qla_host_t *ha, EXT + DEBUG9(printk("%s(%ld): inst %ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- rval = verify_area(VERIFY_READ, (void *)cmd->RequestAdr, ++ rval = copy_from_user(®_struct, cmd->RequestAdr, + sizeof(EXT_REG_AEN)); +- if (rval) { +- cmd->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst %ld ERROR verify read req buf\n", +- __func__, ha->host_no, ha->instance);) +- +- return (rval); +- } +- +- rval = copy_from_user(®_struct, cmd->RequestAdr, sizeof(EXT_REG_AEN)); + if (rval == 0) { + cmd->Status = EXT_STATUS_OK; + if (reg_struct.Enable) { +@@ -1294,9 +1055,10 @@ qla2x00_aen_get(scsi_qla_host_t *ha, EXT + if (request_cnt < EXT_DEF_MAX_AEN_QUEUE) { + /* We require caller to alloc for the maximum request count */ + cmd->Status = EXT_STATUS_BUFFER_TOO_SMALL; +- DEBUG9_10(printk("%s(%ld): inst=%ld Buffer too small. " ++ DEBUG9_10(printk("%s(%ld): inst=%ld Buffer size %ld too small. " + "Exiting normally.", +- __func__, ha->host_no, ha->instance);) ++ __func__, ha->host_no, ha->instance, ++ (ulong)cmd->ResponseLen);) + + return (rval); + } +@@ -1349,18 +1111,6 @@ qla2x00_aen_get(scsi_qla_host_t *ha, EXT + /* Copy the entire queue to user's buffer. */ + ret_len = (uint32_t)(queue_cnt * sizeof(EXT_ASYNC_EVENT)); + if (queue_cnt != 0) { +- rval = verify_area(VERIFY_WRITE, (void *)cmd->ResponseAdr, +- ret_len); +- if (rval != 0) { +- cmd->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR verify write resp buf.\n", +- __func__, ha->host_no, ha->instance);) +- +- qla2x00_free_ioctl_scrap_mem(ha); +- return (rval); +- } +- + rval = copy_to_user(cmd->ResponseAdr, paen, ret_len); + } + cmd->ResponseLen = ret_len; +@@ -1560,6 +1310,7 @@ qla2x00_query_hba_node(scsi_qla_host_t * + uint32_t i, transfer_size; + EXT_HBA_NODE *ptmp_hba_node; + qla_boards_t *bdp; ++ uint8_t *next_str; + + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", +@@ -1581,7 +1332,7 @@ qla2x00_query_hba_node(scsi_qla_host_t * + for (i = 0; i < 8 ; i++) + ptmp_hba_node->WWNN[i] = ha->node_name[i]; + +- sprintf((char *)(ptmp_hba_node->Manufacturer),"Qlogic Corp."); ++ sprintf((char *)(ptmp_hba_node->Manufacturer), QLOGIC_COMPANY_NAME); + sprintf((char *)(ptmp_hba_node->Model),ha->model_number); + + ptmp_hba_node->SerialNum[0] = ha->serial0; +@@ -1591,25 +1342,47 @@ qla2x00_query_hba_node(scsi_qla_host_t * + sprintf((char *)(ptmp_hba_node->FWVersion),"%2d.%02d.%02d", + bdp->fwver[0], bdp->fwver[1], bdp->fwver[2]); + +- sprintf((char *)(ptmp_hba_node->OptRomVersion),"%d.%d", +- ha->optrom_major, ha->optrom_minor); ++#ifdef MAKEUP_YOUR_MIND ++ /* ++ * Prep OptionROM string: ++ * ++ * \0\0\0 ++ */ ++ memset(ptmp_hba_node->OptRomVersion, 0, ++ sizeof(ptmp_hba_node->OptRomVersion)); ++ next_str = ptmp_hba_node->OptRomVersion; ++ if (test_bit(ROM_CODE_TYPE_BIOS, &ha->code_types)) { ++ sprintf(next_str, "%d.%02d", ha->bios_revision[1], ++ ha->bios_revision[0]); ++ } ++ next_str += strlen(next_str) + 1; ++ if (test_bit(ROM_CODE_TYPE_FCODE, &ha->code_types)) { ++ strcpy(next_str, ha->fcode_revision); ++ } ++ next_str += strlen(next_str) + 1; ++ if (test_bit(ROM_CODE_TYPE_EFI, &ha->code_types)) { ++ sprintf(next_str, "%d.%02d", ha->efi_revision[1], ++ ha->efi_revision[0]); ++ } ++#else ++ memset(ptmp_hba_node->OptRomVersion, 0, ++ sizeof(ptmp_hba_node->OptRomVersion)); ++ next_str = ptmp_hba_node->OptRomVersion; ++ sprintf(next_str, "0.00"); ++ if (test_bit(ROM_CODE_TYPE_BIOS, &ha->code_types)) { ++ sprintf(next_str, "%d.%02d", ha->bios_revision[1], ++ ha->bios_revision[0]); ++ } ++#endif + + ptmp_hba_node->InterfaceType = EXT_DEF_FC_INTF_TYPE; + ptmp_hba_node->PortCount = 1; + +- +- ptmp_hba_node->DriverAttr = (ha->flags.failover_enabled) ? +- DRVR_FO_ENABLED : 0; +- +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_HBA_NODE)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } ++ ptmp_hba_node->DriverAttr = 0; ++#if !defined(ISP200) ++ if (ha->flags.failover_enabled) ++ ptmp_hba_node->DriverAttr = DRVR_FO_ENABLED; ++#endif + + /* now copy up the HBA_NODE to user */ + if (pext->ResponseLen < sizeof(EXT_HBA_NODE)) +@@ -1617,8 +1390,7 @@ qla2x00_query_hba_node(scsi_qla_host_t * + else + transfer_size = sizeof(EXT_HBA_NODE); + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ptmp_hba_node, transfer_size); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_hba_node, transfer_size); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -1708,7 +1480,7 @@ qla2x00_query_hba_port(scsi_qla_host_t * + } + + port_cnt = 0; +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { ++ list_for_each_entry(fcport, &ha->fcports, list) { + /* if removed or missing */ + if (atomic_read(&fcport->state) != FC_ONLINE) { + DEBUG9_10(printk( +@@ -1748,11 +1520,10 @@ qla2x00_query_hba_port(scsi_qla_host_t * + ptmp_hba_port->DiscPortCount = port_cnt; + ptmp_hba_port->DiscTargetCount = tgt_cnt; + +- if (ha->loop_state == LOOP_DOWN) { +- ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN || ++ atomic_read(&ha->loop_state) == LOOP_DEAD) { + ptmp_hba_port->State = EXT_DEF_HBA_LOOP_DOWN; +- +- } else if (ha->loop_state != LOOP_READY || ++ } else if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || ABORTS_ACTIVE) { + +@@ -1796,24 +1567,13 @@ qla2x00_query_hba_port(scsi_qla_host_t * + + ptmp_hba_port->PortSpeed = ha->current_speed; + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- sizeof(EXT_HBA_PORT)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + /* now copy up the HBA_PORT to user */ + if (pext->ResponseLen < sizeof(EXT_HBA_PORT)) + transfer_size = pext->ResponseLen; + else + transfer_size = sizeof(EXT_HBA_PORT); + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ptmp_hba_port, transfer_size); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_hba_port, transfer_size); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -1856,12 +1616,17 @@ qla2x00_query_disc_port(scsi_qla_host_t + fc_port_t *fcport; + os_tgt_t *tq; + EXT_DISC_PORT *ptmp_disc_port; ++ int found; + + DEBUG9(printk("%s(%ld): inst=%ld entered. Port inst=%02d.\n", + __func__, ha->host_no, ha->instance, pext->Instance);) + + inst = 0; +- for (fcport = ha->fcport; fcport != NULL; fcport = fcport->next) { ++ found = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; ++ + if (atomic_read(&fcport->state) != FC_ONLINE) { + /* port does not exist anymore */ + DEBUG9_10(printk("%s(%ld): fcport marked lost. " +@@ -1896,10 +1661,11 @@ qla2x00_query_disc_port(scsi_qla_host_t + fcport->loop_id);) + + /* Found the matching port still connected. */ ++ found++; + break; + } + +- if (fcport == NULL) { ++ if (!found) { + DEBUG9_10(printk("%s(%ld): inst=%ld dev not found.\n", + __func__, ha->host_no, ha->instance);) + +@@ -1961,24 +1727,13 @@ qla2x00_query_disc_port(scsi_qla_host_t + } + } + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- sizeof(EXT_DISC_PORT)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + /* now copy up the DISC_PORT to user */ + if (pext->ResponseLen < sizeof(EXT_DISC_PORT)) + transfer_size = pext->ResponseLen; + else + transfer_size = sizeof(EXT_DISC_PORT); + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ptmp_disc_port, transfer_size); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_disc_port, transfer_size); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -1997,6 +1752,26 @@ qla2x00_query_disc_port(scsi_qla_host_t + return (ret); + } + ++UINT8 ++qla2x00_is_fcport_in_config(scsi_qla_host_t *ha, fc_port_t *fcport) ++{ ++#if !defined(ISP200) ++ if (ha->flags.failover_enabled) { ++ return (qla2x00_is_fcport_in_foconfig(ha, fcport)); ++ } else ++#endif ++ { ++ fc_port_t *fciter; ++ ++ list_for_each_entry(fciter, &ha->fcports, list) { ++ if (memcmp(fcport->port_name, fciter->port_name, ++ EXT_DEF_WWN_NAME_SIZE) == 0) ++ return(TRUE); ++ } ++ } ++ return (FALSE); ++} ++ + /* + * qla2x00_query_disc_tgt + * Handles EXT_SC_QUERY_DISC_TGT subcommand. +@@ -2068,7 +1843,17 @@ qla2x00_query_disc_tgt(scsi_qla_host_t * + } + + tgt_fcport = tq->vis_port; +- memcpy(ptmp_disc_target->WWNN, tgt_fcport->node_name, WWN_SIZE); ++ ++ if (tgt_fcport->flags & FC_XP_DEVICE) { ++ memcpy(ptmp_disc_target->WWNN, tq->node_name, WWN_SIZE); ++ DEBUG9(printk("%s(%ld): inst=%ld using 1 target node name.\n", ++ __func__, ha->host_no, ha->instance);) ++ } else { ++ memcpy(ptmp_disc_target->WWNN, tgt_fcport->node_name, WWN_SIZE); ++ DEBUG9(printk("%s(%ld): inst=%ld using 1 fcport node name.\n", ++ __func__, ha->host_no, ha->instance);) ++ } ++ + memcpy(ptmp_disc_target->WWPN, tgt_fcport->port_name, WWN_SIZE); + + ptmp_disc_target->Id[0] = 0; +@@ -2128,24 +1913,13 @@ qla2x00_query_disc_tgt(scsi_qla_host_t * + tgt_fcport->port_name[7], + cnt);) + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_DISC_TARGET)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + /* now copy up the DISC_PORT to user */ + if (pext->ResponseLen < sizeof(EXT_DISC_PORT)) + transfer_size = pext->ResponseLen; + else + transfer_size = sizeof(EXT_DISC_TARGET); + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ptmp_disc_target, transfer_size); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_disc_target, transfer_size); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -2220,24 +1994,13 @@ qla2x00_query_chip(scsi_qla_host_t *ha, + for (i = 0; i < 8; i++) + ptmp_isp->OutMbx[i] = 0; + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_CHIP)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + /* now copy up the ISP to user */ + if (pext->ResponseLen < sizeof(EXT_CHIP)) + transfer_size = pext->ResponseLen; + else + transfer_size = sizeof(EXT_CHIP); + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)ptmp_isp, +- transfer_size); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_isp, transfer_size); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -2349,18 +2112,8 @@ qla2x00_get_statistics(scsi_qla_host_t * + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_HBA_PORT_STAT)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE " +- "EXT_HBA_PORT_STAT.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + /* check on loop down */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || ha->dpc_active) { +@@ -2415,6 +2168,13 @@ qla2x00_get_statistics(scsi_qla_host_t * + ptmp_stat->TotalInterrupts = ha->total_isr_cnt; + */ + ++ ptmp_stat->InputRequestCount = ha->total_input_cnt; ++ ptmp_stat->OutputRequestCount = ha->total_output_cnt; ++ ptmp_stat->ControlRequestCount = ha->total_ctrl_cnt; ++ /* convert to MB */ ++ ptmp_stat->InputMBytes = ha->total_input_bytes >> 20; ++ ptmp_stat->OutputMBytes = ha->total_output_bytes >> 20; ++ + ptmp_stat->TotalLinkFailures = stat_buf.link_fail_cnt; + ptmp_stat->TotalLossOfSync = stat_buf.loss_sync_cnt; + ptmp_stat->TotalLossOfSignals = stat_buf.loss_sig_cnt; +@@ -2422,6 +2182,25 @@ qla2x00_get_statistics(scsi_qla_host_t * + ptmp_stat->InvalidTransmissionWordCount = stat_buf.inval_xmit_word_cnt; + ptmp_stat->InvalidCRCCount = stat_buf.inval_crc_cnt; + ++ DEBUG9(printk("%s(%ld): inst=%ld Got following HBA statistics:\n" ++ "isp_aborts=%d device_err=%d total_io=%d total MB=%d LIP " ++ "resets=%d\n" ++ "input cnt=%lld MB=%lld output cnt=%lld MB=%lld ctrl cnt=%lld\n" ++ "link failure=%d loss sync=%d loss signal=%d prim seq err=%d " ++ "invalid word %d invalid CRC=%d.\n", ++ __func__, ha->host_no, ha->instance, ++ ptmp_stat->ControllerErrorCount, ptmp_stat->DeviceErrorCount, ++ ptmp_stat->TotalIoCount, ptmp_stat->TotalMBytes, ++ ptmp_stat->TotalLipResets, ++ ptmp_stat->InputRequestCount, ptmp_stat->InputMBytes, ++ ptmp_stat->OutputRequestCount, ptmp_stat->OutputMBytes, ++ ptmp_stat->ControlRequestCount, ++ ptmp_stat->TotalLinkFailures, ptmp_stat->TotalLossOfSync, ++ ptmp_stat->TotalLossOfSignals, ++ ptmp_stat->PrimitiveSeqProtocolErrorCount, ++ ptmp_stat->InvalidTransmissionWordCount, ++ ptmp_stat->InvalidCRCCount);) ++ + /* now copy up the STATISTICS to user */ + if (pext->ResponseLen < sizeof(EXT_HBA_PORT_STAT)) + transfer_size = pext->ResponseLen; +@@ -2480,20 +2259,12 @@ qla2x00_get_fc_statistics(scsi_qla_host_ + uint8_t *req_name; + uint16_t mb_stat[1]; + uint32_t transfer_size; ++ int found; + + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_HBA_PORT_STAT)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + ret = copy_from_user(&addr_struct, pext->RequestAdr, pext->RequestLen); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; +@@ -2503,12 +2274,14 @@ qla2x00_get_fc_statistics(scsi_qla_host_ + } + + /* find the device's loop_id */ ++ found = 0; + switch (addr_struct.DestType) { + case EXT_DEF_DESTTYPE_WWPN: + req_name = addr_struct.DestAddr.WWPN; +- for (fcport = ha->fcport; fcport; fcport = fcport->next) { ++ list_for_each_entry(fcport, &ha->fcports, list) { + if (memcmp(fcport->port_name, req_name, + EXT_DEF_WWN_NAME_SIZE) == 0) { ++ found++; + break; + } + } +@@ -2528,7 +2301,7 @@ qla2x00_get_fc_statistics(scsi_qla_host_ + break; + } + +- if (fcport == NULL) { ++ if (!found) { + /* not found */ + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR device port %02x%02x" + "%02x%02x%02x%02x%02x%02x not found.\n", +@@ -2568,7 +2341,7 @@ qla2x00_get_fc_statistics(scsi_qla_host_ + */ + + /* check on loop down */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || ha->dpc_active) { +@@ -2677,6 +2450,7 @@ qla2x00_get_port_summary(scsi_qla_host_t + uint32_t port_cnt = 0; + uint32_t top_xfr_size; + uint32_t usr_no_of_entries = 0; ++ uint32_t device_types; + void *start_of_entry_list; + fc_port_t *fcport; + +@@ -2691,9 +2465,9 @@ qla2x00_get_port_summary(scsi_qla_host_t + /* not enough memory */ + pext->Status = EXT_STATUS_NO_MEMORY; + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. " +- "pdevicedata requested=%d.\n", ++ "pdevicedata requested=%ld.\n", + __func__, ha->host_no, ha->instance, +- sizeof(EXT_DEVICEDATA));) ++ (ulong)sizeof(EXT_DEVICEDATA));) + return (ret); + } + +@@ -2702,9 +2476,22 @@ qla2x00_get_port_summary(scsi_qla_host_t + /* not enough memory */ + pext->Status = EXT_STATUS_NO_MEMORY; + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. " +- "pdd_entry requested=%d.\n", ++ "pdd_entry requested=%ld.\n", + __func__, ha->host_no, ha->instance, +- sizeof(EXT_DEVICEDATAENTRY));) ++ (ulong)sizeof(EXT_DEVICEDATAENTRY));) ++ qla2x00_free_ioctl_scrap_mem(ha); ++ return (ret); ++ } ++ ++ /* Get device types to query. */ ++ device_types = 0; ++ ret = copy_from_user(&device_types, pext->RequestAdr, ++ sizeof(device_types)); ++ if (ret) { ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s(%ld): inst=%ld ERROR" ++ "copy_from_user() of struct failed (%d).\n", ++ __func__, ha->host_no, ha->instance, ret);) + qla2x00_free_ioctl_scrap_mem(ha); + return (ret); + } +@@ -2719,9 +2506,8 @@ qla2x00_get_port_summary(scsi_qla_host_t + start_of_entry_list = (void *)(pext->ResponseAdr) + top_xfr_size; + + /* Start copying from devices that exist. */ +- ret = qla2x00_get_fcport_summary(ha, pdd_entry, +- start_of_entry_list, usr_no_of_entries, +- &entry_cnt, &pext->Status); ++ ret = qla2x00_get_fcport_summary(ha, pdd_entry, start_of_entry_list, ++ device_types, usr_no_of_entries, &entry_cnt, &pext->Status); + + DEBUG9(printk("%s(%ld): after get_fcport_summary, entry_cnt=%d.\n", + __func__, ha->host_no, entry_cnt);) +@@ -2731,15 +2517,20 @@ qla2x00_get_port_summary(scsi_qla_host_t + */ + if (ret == 0) { + if (!ha->flags.failover_enabled) { ++#if 0 + ret = qla2x00_std_missing_port_summary(ha, pdd_entry, + start_of_entry_list, usr_no_of_entries, + &entry_cnt, &pext->Status); +- } else { ++#endif ++ } ++#if !defined(ISP200) ++ else { + ret = qla2x00_fo_missing_port_summary(ha, pdd_entry, + start_of_entry_list, usr_no_of_entries, + &entry_cnt, &pext->Status); + + } ++#endif + } + + DEBUG9(printk( +@@ -2754,8 +2545,11 @@ qla2x00_get_port_summary(scsi_qla_host_t + } + + pdevicedata->ReturnListEntryCount = entry_cnt; +- for (fcport = ha->fcport; fcport != NULL; fcport = fcport->next) { ++ list_for_each_entry(fcport, &ha->fcports, list) { + /* count all ports that exist */ ++ if (fcport->port_type != FCT_TARGET) ++ continue; ++ + port_cnt++; + } + if (port_cnt > entry_cnt) +@@ -2771,16 +2565,6 @@ qla2x00_get_port_summary(scsi_qla_host_t + /* copy top of devicedata, which is everything other than the + * actual entry list data. + */ +- ret = verify_area(VERIFY_WRITE, (void *)(pext->ResponseAdr), +- top_xfr_size); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->ResponseAdr; + kernel_tmp = (uint8_t *)pdevicedata; + ret = copy_to_user(usr_temp, kernel_tmp, top_xfr_size); +@@ -2825,8 +2609,8 @@ qla2x00_get_port_summary(scsi_qla_host_t + */ + STATIC int + qla2x00_get_fcport_summary(scsi_qla_host_t *ha, EXT_DEVICEDATAENTRY *pdd_entry, +- void *pstart_of_entry_list, uint32_t max_entries, uint32_t *pentry_cnt, +- uint32_t *ret_status) ++ void *pstart_of_entry_list, uint32_t device_types, uint32_t max_entries, ++ uint32_t *pentry_cnt, uint32_t *ret_status) + { + int ret = QL_STATUS_SUCCESS; + uint8_t *usr_temp, *kernel_tmp; +@@ -2836,12 +2620,31 @@ qla2x00_get_fcport_summary(scsi_qla_host + uint32_t transfer_size; + fc_port_t *fcport; + os_tgt_t *tq; ++#if !defined(ISP200) ++ mp_host_t *host = NULL; ++ uint16_t idx; ++ mp_device_t *tmp_dp = NULL; ++#endif + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- for (fcport = ha->fcport; fcport && *pentry_cnt < max_entries; +- fcport = fcport->next) { ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (*pentry_cnt >= max_entries) ++ break; ++ ++ if (fcport->port_type != FCT_TARGET) { ++ /* Don't report initiators or broadcast devices. */ ++ DEBUG2_9_10(printk("%s(%ld): not reporting non-target " ++ "fcport %02x%02x%02x%02x%02x%02x%02x%02x. " ++ "port_type=%x.\n", ++ __func__, ha->host_no, fcport->port_name[0], ++ fcport->port_name[1], fcport->port_name[2], ++ fcport->port_name[3], fcport->port_name[4], ++ fcport->port_name[5], fcport->port_name[6], ++ fcport->port_name[7], fcport->port_type)); ++ continue; ++ } + + if ((atomic_read(&fcport->state) != FC_ONLINE) && + !qla2x00_is_fcport_in_config(ha, fcport)) { +@@ -2861,9 +2664,6 @@ qla2x00_get_fcport_summary(scsi_qla_host + + /* copy from fcport to dd_entry */ + +- memcpy(pdd_entry->NodeWWN, fcport->node_name, WWN_SIZE); +- memcpy(pdd_entry->PortWWN, fcport->port_name, WWN_SIZE); +- + for (b = 0; b < 3 ; b++) + pdd_entry->PortID[b] = fcport->d_id.r.d_id[2-b]; + +@@ -2885,10 +2685,56 @@ qla2x00_get_fcport_summary(scsi_qla_host + + if (memcmp(fcport->port_name, tq->vis_port->port_name, + EXT_DEF_WWN_NAME_SIZE) == 0) { ++ + pdd_entry->TargetAddress.Target = tgt; ++ ++ if ((fcport->flags & FC_XP_DEVICE) && ++ !(device_types & ++ EXT_DEF_GET_TRUE_NN_DEVICE)) { ++ memcpy(pdd_entry->NodeWWN, ++ tq->node_name, WWN_SIZE); ++ } else { ++ memcpy(pdd_entry->NodeWWN, ++ fcport->node_name, WWN_SIZE); ++ } ++ + break; + } + } ++ ++ if (tgt == MAX_TARGETS) { ++ /* did not bind to a target */ ++/* ++ memcpy(pdd_entry->NodeWWN, ++ tq->node_name, WWN_SIZE); ++*/ ++#if !defined(ISP200) ++ if (ha->flags.failover_enabled) { ++ if (((host = qla2x00_cfg_find_host(ha)) != NULL) ++ && (fcport->flags & FC_XP_DEVICE) && ++ !(device_types & ++ EXT_DEF_GET_TRUE_NN_DEVICE)) { ++ if((tmp_dp = ++ qla2x00_find_mp_dev_by_portname( ++ host, fcport->port_name, &idx)) ++ != NULL) ++ memcpy(pdd_entry->NodeWWN, ++ tmp_dp->nodename, WWN_SIZE); ++ } ++/* XXX */ ++ else ++ memcpy(pdd_entry->NodeWWN, ++ fcport->node_name, WWN_SIZE); ++ } else ++#endif ++ { ++ memcpy(pdd_entry->NodeWWN, ++ fcport->node_name, WWN_SIZE); ++ } ++ } ++ ++ memcpy(pdd_entry->PortWWN, fcport->port_name, WWN_SIZE); ++ + pdd_entry->TargetAddress.Lun = 0; + pdd_entry->DeviceFlags = 0; + pdd_entry->LoopID = fcport->loop_id; +@@ -2905,18 +2751,6 @@ qla2x00_get_fcport_summary(scsi_qla_host + current_offset = *pentry_cnt * sizeof(EXT_DEVICEDATAENTRY); + + transfer_size = sizeof(EXT_DEVICEDATAENTRY); +- ret = verify_area(VERIFY_WRITE, +- (uint8_t *)pstart_of_entry_list + current_offset, +- transfer_size); +- +- if (ret) { +- *ret_status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE " +- "rsp bufaddr=%p\n", +- __func__, ha->host_no, ha->instance, +- (uint8_t *)pstart_of_entry_list + current_offset);) +- return (ret); +- } + + /* now copy up this dd_entry to user */ + usr_temp = (uint8_t *)pstart_of_entry_list + current_offset; +@@ -2944,6 +2778,9 @@ qla2x00_get_fcport_summary(scsi_qla_host + * qla2x00_fo_missing_port_summary is in qla_fo.c + */ + ++//RUBY: Do we need this with the new consolidated fcports list? This will ++// be handled transparently in qla2x00_get_fcport_summary(). ++#if 0 + /* + * qla2x00_std_missing_port_summary + * Returns values of devices not connected but found in configuration +@@ -3027,36 +2864,22 @@ qla2x00_std_missing_port_summary(scsi_ql + sizeof(EXT_DEVICEDATAENTRY); + + transfer_size = sizeof(EXT_DEVICEDATAENTRY); +- ret = verify_area(VERIFY_WRITE, +- (uint8_t *)pstart_of_entry_list + current_offset, +- transfer_size); + +- if (ret == 0) { +- +- /* now copy up this dd_entry to user */ +- usr_temp = (uint8_t *)pstart_of_entry_list + +- current_offset; +- kernel_tmp = (uint8_t *)pdd_entry; +- ret = copy_to_user(usr_temp, kernel_tmp, +- transfer_size); +- if (ret) { +- *ret_status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld " +- "ERROR copy rsp list buffer.\n", +- __func__, ha->host_no, +- ha->instance);) +- break; +- } else { +- *pentry_cnt+=1; +- } +- } else { ++ /* now copy up this dd_entry to user */ ++ usr_temp = (uint8_t *)pstart_of_entry_list + ++ current_offset; ++ kernel_tmp = (uint8_t *)pdd_entry; ++ ret = copy_to_user(usr_temp, kernel_tmp, ++ transfer_size); ++ if (ret) { + *ret_status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld " +- "ERROR verify wrt rsp bufaddr=%p\n", +- __func__, ha->host_no, ha->instance, +- (uint8_t *)pstart_of_entry_list + +- current_offset);) ++ "ERROR copy rsp list buffer.\n", ++ __func__, ha->host_no, ++ ha->instance);) + break; ++ } else { ++ *pentry_cnt+=1; + } + } + +@@ -3070,7 +2893,7 @@ qla2x00_std_missing_port_summary(scsi_ql + + return (ret); + } +- ++#endif + + /* + * qla2x00_query_driver +@@ -3127,16 +2950,6 @@ qla2x00_query_driver(scsi_qla_host_t *ha + else + transfer_size = sizeof(EXT_DRIVER); + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- transfer_size); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + /* now copy up the ISP to user */ + usr_temp = (uint8_t *)pext->ResponseAdr; + kernel_tmp = (uint8_t *)pdriver_prop; +@@ -3206,16 +3019,6 @@ qla2x00_query_fw(scsi_qla_host_t *ha, EX + + transfer_size = sizeof(EXT_FW); + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- transfer_size); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->ResponseAdr; + kernel_tmp = (uint8_t *)pfw_prop; + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size); +@@ -3288,17 +3091,6 @@ qla2x00_msiocb_passthru(scsi_qla_host_t + __func__, ha->host_no, ha->instance);) + } + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- pext->RequestLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR verify read req buf\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } +- + DEBUG9(printk("%s(%ld): inst=%ld req buf verified.\n", + __func__, ha->host_no, ha->instance);) + +@@ -3390,24 +3182,19 @@ qla2x00_send_els_passthru(scsi_qla_host_ + { + int ret = 0; + +- uint8_t index; + uint8_t invalid_wwn = FALSE; +- uint8_t port_found; + uint8_t *ptmp_stat; + uint8_t *pusr_req_buf; + uint8_t *presp_payload; + uint32_t payload_len; + uint32_t usr_req_len; + +- fcdev_t tmpdev; +- +- fc_port_t *pfcport; ++ int found; ++ uint16_t next_loop_id; ++ fc_port_t *fcport; + + EXT_ELS_PT_REQ *pels_pt_req; + +- struct list_head *fcil; +- fc_initiator_t *fcinitiator; +- + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) +@@ -3464,7 +3251,7 @@ qla2x00_send_els_passthru(scsi_qla_host_ + __func__, ha->host_no, ha->instance);) + + /* check on loop down (1) */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || ABORTS_ACTIVE) { + +@@ -3528,147 +3315,62 @@ qla2x00_send_els_passthru(scsi_qla_host_ + /* Now find the loop ID */ + /************************/ + +- /* 1st: scan thru our HBA database */ +- index = 0; +- port_found = FALSE; +- fcinitiator = NULL; +- if (!invalid_wwn) { +- /* search with WWPN */ +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); +- +- if (memcmp(pels_pt_req->WWPN, fcinitiator->port_name, +- EXT_DEF_WWN_NAME_SIZE) == 0) { +- +- port_found = TRUE; +- pels_pt_req->Lid = fcinitiator->loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld found host " +- "w/ WWN. loop_id = %02x.\n", +- __func__, ha->host_no, ha->instance, +- pels_pt_req->Lid);) ++ found = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_INITIATOR || ++ fcport->port_type != FCT_TARGET) ++ continue; + +- break; +- } ++ if (!invalid_wwn) { ++ /* search with WWPN */ ++ if (memcmp(pels_pt_req->WWPN, fcport->port_name, ++ EXT_DEF_WWN_NAME_SIZE)) ++ continue; ++ } else { ++ /* search with PID */ ++ if (pels_pt_req->Id[1] != fcport->d_id.r.d_id[2] ++ || pels_pt_req->Id[2] != fcport->d_id.r.d_id[1] ++ || pels_pt_req->Id[3] != fcport->d_id.r.d_id[0]) ++ continue; + } +- } else { +- /* search with PID */ +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); +- +- if (pels_pt_req->Id[1] == fcinitiator->d_id.r.d_id[2] +- && pels_pt_req->Id[2] == fcinitiator->d_id.r.d_id[1] +- && pels_pt_req->Id[3] == +- fcinitiator->d_id.r.d_id[0]) { +- +- port_found = TRUE; +- pels_pt_req->Lid = fcinitiator->loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld found host " +- "w/ WWN. loop_id = %02x.\n", +- __func__, ha->host_no, ha->instance, +- pels_pt_req->Lid);) + +- break; +- } +- } ++ found++; + } + +- /* If this is for a host device, check if we need to perform login */ +- if (port_found && (fcinitiator->loop_id >= LAST_SNS_LOOP_ID)) { +- +- DEBUG9_10(printk("%s(%ld): inst=%ld need to relogin to " +- "dest host.\n", ++ if (!found) { ++ /* invalid WWN or PID specified */ ++ pext->Status = EXT_STATUS_INVALID_PARAM; ++ DEBUG9_10(printk("%s(%ld): inst=%ld ERROR WWPN/PID invalid.\n", + __func__, ha->host_no, ha->instance);) + +- if (fcinitiator->d_id.b24 == 0) { +- /* Either RSCN hasn't been processed yet or +- * this host is no longer connected to us. +- */ +- pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR dest host " +- "port lost.\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } ++ return (ret); ++ } + +- /* login and update database */ +- tmpdev.d_id.b24 = fcinitiator->d_id.b24; +- tmpdev.loop_id = fcinitiator->loop_id; ++ /* If this is for a host device, check if we need to perform login */ ++ if (fcport->port_type == FCT_INITIATOR && ++ fcport->loop_id >= SNS_LAST_LOOP_ID) { + +- if (qla2x00_host_relogin(ha, &tmpdev) != 0) { ++ next_loop_id = 0; ++ ret = qla2x00_fabric_login(ha, fcport, &next_loop_id); ++ if (ret != QL_STATUS_SUCCESS) { + /* login failed. */ + pext->Status = EXT_STATUS_DEV_NOT_FOUND; + + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR login to " +- "host port failed. loop_id=%02x pid=%06x ret=%d.\n", +- __func__, ha->host_no, ha->instance, tmpdev.loop_id, +- tmpdev.d_id.b24, ret);) +- +- return (ret); +- } else { +- fcinitiator->loop_id = tmpdev.loop_id; +- pels_pt_req->Lid = tmpdev.loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld success login to " +- "remote host; Lid=%02x.\n", ++ "host port failed. loop_id=%02x pid=%02x%02x%02x " ++ "ret=%d.\n", + __func__, ha->host_no, ha->instance, +- fcinitiator->loop_id);) +- } +- } +- +- /* 2nd: scan thru our fcport database */ +- if (!invalid_wwn) { +- /* search with WWPN */ +- for (pfcport = ha->fcport; +- (!port_found) && pfcport != NULL; pfcport = pfcport->next) { ++ fcport->loop_id, fcport->d_id.b.domain, ++ fcport->d_id.b.area, fcport->d_id.b.al_pa, ret);) + +- if (memcmp(pfcport->port_name, pels_pt_req->WWPN, +- EXT_DEF_WWN_NAME_SIZE) == 0) { +- +- port_found = TRUE; +- pels_pt_req->Lid = pfcport->loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld found fcport " +- "w/ WWN. loop_id = %02x.\n", +- __func__, ha->host_no, ha->instance, +- pels_pt_req->Lid);) +- break; +- } +- } +- } else { +- /* search with PID */ +- for (pfcport = ha->fcport; +- (!port_found) && pfcport != NULL; pfcport = pfcport->next) { +- +- if (pels_pt_req->Id[1] == pfcport->d_id.r.d_id[2] +- && pels_pt_req->Id[2] == pfcport->d_id.r.d_id[1] +- && pels_pt_req->Id[3] == pfcport->d_id.r.d_id[0]) { +- +- port_found = TRUE; +- pels_pt_req->Lid = pfcport->loop_id; +- +- DEBUG9(printk("%s(%ld): inst=%ld found fcport " +- "w/ PID. loop_id = %02x.\n", +- __func__, ha->host_no, ha->instance, +- pels_pt_req->Lid);) +- +- break; +- } ++ return (ret); + } + } +- +- if (!port_found) { +- /* invalid WWN or PID specified */ +- pext->Status = EXT_STATUS_INVALID_PARAM; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR WWPN/PID invalid.\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } + + /* queue command */ ++ pels_pt_req->Lid = fcport->loop_id; ++ + if ((ret = qla2x00_ioctl_ms_queuecommand(ha, pext, pscsi_cmd, + ptmp_fcport, ptmp_fclun, pels_pt_req))) { + return (ret); +@@ -3701,20 +3403,8 @@ qla2x00_send_els_passthru(scsi_qla_host_ + /* The data returned include FC frame header */ + presp_payload = (uint8_t *)pext->ResponseAdr + sizeof(EXT_ELS_PT_REQ); + +- ret = verify_area(VERIFY_WRITE, (void *)presp_payload, payload_len); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp " +- "buffer. ha=%p.\n", +- __func__, ha->host_no, ha->instance, ha);) +- +- return (ret); +- } +- + /* copy back data returned to response buffer */ +- ret = copy_to_user(presp_payload, (uint8_t *)ha->ioctl_mem, +- payload_len); ++ ret = copy_to_user(presp_payload, ha->ioctl_mem, payload_len); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -3729,6 +3419,57 @@ qla2x00_send_els_passthru(scsi_qla_host_ + } + #endif + ++#if defined(ISP200) ++/* ++ * qla2x00_mgmt_svr_login ++ * Login management server. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++int ++qla2x00_mgmt_svr_login(scsi_qla_host_t *ha) ++{ ++ int tmp_rval = 0; ++ uint16_t mb[MAILBOX_REGISTER_COUNT]; ++ ++ DEBUG13(printk("%s(%ld): entered\n", ++ __func__, ha->host_no);) ++ ++ /* check on management server login status */ ++ if (ha->flags.management_server_logged_in == 0) { ++ /* login to management server device */ ++ ++ tmp_rval = qla2x00_login_fabric(ha, MANAGEMENT_SERVER, ++ 0xff, 0xff, 0xfa, &mb[0], BIT_1); ++ ++ if (tmp_rval != 0 || mb[0] != 0x4000) { ++ ++ DEBUG2_13(printk( ++ "%s(%ld): inst=%ld ERROR login to MS.\n", ++ __func__, ha->host_no, ha->instance);) ++ ++ return (QL_STATUS_ERROR); ++ } ++ ++ ha->flags.management_server_logged_in = 1; ++ DEBUG13(printk("%s(%ld): success login to MS.\n", ++ __func__, ha->host_no);) ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", ++ __func__, ha->host_no);) ++ ++ return (QL_STATUS_SUCCESS); ++} ++#endif ++ + /* + * qla2x00_send_fcct + * Passes the FC CT command down to firmware as MSIOCB and +@@ -3752,8 +3493,6 @@ qla2x00_send_fcct(scsi_qla_host_t *ha, E + int mode) + { + int ret = 0; +- int tmp_rval = 0; +- uint16_t mb[MAILBOX_REGISTER_COUNT]; + + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", +@@ -3782,24 +3521,15 @@ qla2x00_send_fcct(scsi_qla_host_t *ha, E + DEBUG9(printk("%s(%ld): inst=%ld after copy request.\n", + __func__, ha->host_no, ha->instance);) + +- /* check on management server login status */ +- if (ha->flags.management_server_logged_in == 0) { +- /* login to management server device */ +- +- tmp_rval = qla2x00_login_fabric(ha, MANAGEMENT_SERVER, +- 0xff, 0xff, 0xfa, &mb[0], BIT_1); +- +- if (tmp_rval != 0 || mb[0] != 0x4000) { +- pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR login to MS.\n", +- __func__, ha->host_no, ha->instance);) ++ /* login to management server device */ ++ if (qla2x00_mgmt_svr_login(ha) != QL_STATUS_SUCCESS) { ++ pext->Status = EXT_STATUS_DEV_NOT_FOUND; + +- return (ret); +- } ++ DEBUG9_10(printk( ++ "%s(%ld): inst=%ld mgmt_svr_login failed.\n", ++ __func__, ha->host_no, ha->instance);) + +- ha->flags.management_server_logged_in = 1; ++ return (ret); + } + + DEBUG9(printk("%s(%ld): success login to MS.\n", +@@ -3820,20 +3550,8 @@ qla2x00_send_fcct(scsi_qla_host_t *ha, E + return (ret); + } + +- /* getting device data and putting in pext->ResponseAdr */ +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp " +- "buffer. ha=%p.\n", +- __func__, ha->host_no, ha->instance, ha);) +- return (ret); +- } +- + /* sending back data returned from Management Server */ +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ha->ioctl_mem, pext->ResponseLen); ++ ret = copy_to_user(pext->ResponseAdr, ha->ioctl_mem, pext->ResponseLen); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -3882,7 +3600,6 @@ qla2x00_ioctl_ms_queuecommand(scsi_qla_h + pfclun->fcport = pfcport; + pfclun->lun = 0; + pfclun->flags = 0; +- pfclun->next = NULL; + plq->fclun = pfclun; + plq->fclun->fcport->ha = ha; + +@@ -3891,7 +3608,7 @@ qla2x00_ioctl_ms_queuecommand(scsi_qla_h + pscsi_cmd->scsi_done = qla2x00_msiocb_done; + + /* check on loop down (2)- check again just before sending cmd out. */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE) { +@@ -3982,8 +3699,12 @@ qla2x00_start_ms_cmd(scsi_qla_host_t *ha + usr_req_len = pext->RequestLen - sizeof(EXT_ELS_PT_REQ); + usr_resp_len = pext->ResponseLen - sizeof(EXT_ELS_PT_REQ); + +- pkt->control_flags = BIT_15; /* ELS passthru enabled */ ++ pkt->control_flags = __constant_cpu_to_le16(CF_ELS_PASSTHRU); ++#if defined(EXTENDED_IDS) ++ pkt->loop_id = cpu_to_le16(pels_pt_req->Lid); ++#else + pkt->loop_id = pels_pt_req->Lid; ++#endif + pkt->type = 1; /* ELS frame */ + + if (pext->ResponseLen != 0) { +@@ -3996,7 +3717,11 @@ qla2x00_start_ms_cmd(scsi_qla_host_t *ha + } else { + usr_req_len = pext->RequestLen; + usr_resp_len = pext->ResponseLen; +- pkt->loop_id = MANAGEMENT_SERVER; ++#if defined(EXTENDED_IDS) ++ pkt->loop_id = __constant_cpu_to_le16(MANAGEMENT_SERVER); ++#else ++ pkt->loop_id = MANAGEMENT_SERVER; ++#endif + } + + DEBUG9_10(printk("%s(%ld): inst=%ld using loop_id=%02x req_len=%d, " +@@ -4004,22 +3729,22 @@ qla2x00_start_ms_cmd(scsi_qla_host_t *ha + __func__, ha->host_no, ha->instance, + pkt->loop_id, usr_req_len, usr_resp_len);) + +- pkt->timeout = QLA_PT_CMD_TOV; +- pkt->cmd_dsd_count = 1; +- pkt->total_dsd_count = 2; /* no continuation */ +- pkt->rsp_bytecount = usr_resp_len; +- pkt->req_bytecount = usr_req_len; ++ pkt->timeout = cpu_to_le16(ql2xioctltimeout); ++ pkt->cmd_dsd_count = __constant_cpu_to_le16(1); ++ pkt->total_dsd_count = __constant_cpu_to_le16(2); /* no continuation */ ++ pkt->rsp_bytecount = cpu_to_le32(usr_resp_len); ++ pkt->req_bytecount = cpu_to_le32(usr_req_len); + + /* loading command payload address. user request is assumed + * to have been copied to ioctl_mem. + */ +- pkt->dseg_req_address[0] = LS_64BITS(ha->ioctl_mem_phys); +- pkt->dseg_req_address[1] = MS_64BITS(ha->ioctl_mem_phys); ++ pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ioctl_mem_phys)); ++ pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ioctl_mem_phys)); + pkt->dseg_req_length = usr_req_len; + + /* loading response payload address */ +- pkt->dseg_rsp_address[0] = LS_64BITS(ha->ioctl_mem_phys); +- pkt->dseg_rsp_address[1] = MS_64BITS(ha->ioctl_mem_phys); ++ pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ioctl_mem_phys)); ++ pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ioctl_mem_phys)); + pkt->dseg_rsp_length = usr_resp_len; + + /* set flag to indicate IOCTL MSIOCB cmd in progress */ +@@ -4099,16 +3824,6 @@ qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t + return (ret); + } + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- pext->RequestLen); +- if (ret) { +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR VERIFY_READ req buf\n", +- __func__, ha->host_no, ha->instance);) +- pext->Status = EXT_STATUS_COPY_ERR; +- return (ret); +- } +- + ret = copy_from_user(tmp_wwpn, pext->RequestAdr, pext->RequestLen); + if (ret) { + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy_from_user " +@@ -4166,17 +3881,7 @@ qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t + if (pext->ResponseLen > sizeof(EXT_SCSI_ADDR)) + pext->ResponseLen = sizeof(EXT_SCSI_ADDR); + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY wrt rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, &tmp_addr, +- pext->ResponseLen); ++ ret = copy_to_user(pext->ResponseAdr, &tmp_addr, pext->ResponseLen); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -4284,8 +3989,8 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + Scsi_Cmnd *pscsi_cmd, Scsi_Device *pscsi_dev, fc_port_t *pfcport, + fc_lun_t *pfclun, uint8_t *pmore_cdb) + { +- int ret = 0; +- int ret2 = 0; ++ int ret = QL_STATUS_SUCCESS; ++ int ret2 = QL_STATUS_SUCCESS; + uint8_t *usr_temp, *kernel_tmp; + uint32_t lun = 0, tgt = 0; + #if defined(QL_DEBUG_LEVEL_9) +@@ -4305,7 +4010,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + __func__, ha->host_no, ha->instance);) + + pext->Status = EXT_STATUS_NO_MEMORY; +- return (ret); ++ return (QL_STATUS_ERROR); + } + + switch(pext->SubCode) { +@@ -4326,7 +4031,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + __func__, ha->host_no, ha->instance, pfcport, pfclun);) + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + + if (pscsi_cmd->cmd_len == 6 || pscsi_cmd->cmd_len == 0x0A || +@@ -4341,7 +4046,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + pext->Status = EXT_STATUS_INVALID_PARAM; + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + tq = ha->ioctl->ioctl_tq; + lq = ha->ioctl->ioctl_lq; +@@ -4355,7 +4060,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + __func__, ha->host_no, ha->instance, pfcport, pfclun);) + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + + sp->cmd_length = pscsi_cmd->cmd_len; +@@ -4386,19 +4091,6 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + + if (pscsi_cmd->sc_data_direction == SCSI_DATA_WRITE) { + /* sending user data from pext->ResponseAdr to device */ +- ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr, +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify read " +- "ResponseAdr.\n", +- __func__, ha->host_no, ha->instance);) +- atomic_set(&sp->ref_count, 0); +- add_to_free_queue (ha, sp); +- +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->ResponseAdr; + kernel_tmp = (uint8_t *)ha->ioctl_mem; + ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen); +@@ -4425,7 +4117,8 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + pscsi_cmd->use_sg = 0; /* no ScatterGather */ + pscsi_cmd->request_bufflen = pext->ResponseLen; + pscsi_cmd->request_buffer = ha->ioctl_mem; +- pscsi_cmd->timeout_per_command = QLA_PT_CMD_TOV * HZ; ++ if (pscsi_cmd->timeout_per_command == 0) ++ pscsi_cmd->timeout_per_command = ql2xioctltimeout * HZ; + + if (tq && lq) { + if (pext->SubCode == EXT_SC_SEND_SCSI_PASSTHRU) { +@@ -4440,7 +4133,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + pfcport, pfclun);) + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + + } else { +@@ -4488,7 +4181,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + pext->Status = EXT_STATUS_DEV_NOT_FOUND; + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + } else { + ret2 = qla2x00_check_port_status(ha, pfcport); +@@ -4503,7 +4196,7 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + + atomic_set(&sp->ref_count, 0); + add_to_free_queue (ha, sp); +- return (ret); ++ return (QL_STATUS_ERROR); + } + } + +@@ -4519,6 +4212,13 @@ qla2x00_ioctl_scsi_queuecommand(scsi_qla + DEBUG9(printk("%s(%ld): inst=%ld sending command.\n", + __func__, ha->host_no, ha->instance);) + ++ /* Time the command via our standard driver-timer */ ++ if ((CMD_TIMEOUT(pscsi_cmd)/HZ) > QLA_CMD_TIMER_DELTA) ++ qla2x00_add_timer_to_cmd(sp, ++ (CMD_TIMEOUT(pscsi_cmd)/HZ) - QLA_CMD_TIMER_DELTA); ++ else ++ qla2x00_add_timer_to_cmd(sp, (CMD_TIMEOUT(pscsi_cmd)/HZ)); ++ + add_to_pending_queue(ha, sp); + + qla2x00_next(ha); +@@ -4560,13 +4260,14 @@ qla2x00_sc_scsi_passthru(scsi_qla_host_t + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- sizeof(EXT_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ " +- "req buf.\n", ++ if (test_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags) || ++ test_bit(FAILOVER_EVENT, &ha->dpc_flags) || ++ test_bit(FAILOVER_NEEDED, &ha->dpc_flags)) { ++ /* Stall intrusive passthru commands until failover complete */ ++ DEBUG9_10(printk("%s(%ld): inst=%ld failover in progress -- " ++ "returning busy.\n", + __func__, ha->host_no, ha->instance);) ++ pext->Status = EXT_STATUS_BUSY; + return (ret); + } + +@@ -4658,21 +4359,17 @@ qla2x00_sc_scsi_passthru(scsi_qla_host_t + DEBUG9(printk("%s(%ld): inst=%ld sending command.\n", + __func__, ha->host_no, ha->instance);) + +- if ((ret = qla2x00_ioctl_scsi_queuecommand(ha, pext, pscsi_cmd, +- pscsi_device, NULL, NULL, NULL))) { ++ if (qla2x00_ioctl_scsi_queuecommand(ha, pext, pscsi_cmd, ++ pscsi_device, NULL, NULL, NULL)) { + return (ret); + } + +- ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ; +- add_timer(&ha->ioctl->cmpl_timer); +- + DEBUG9(printk("%s(%ld): inst=%ld waiting for completion.\n", + __func__, ha->host_no, ha->instance);) + ++ /* Wait for completion */ + down(&ha->ioctl->cmpl_sem); + +- del_timer(&ha->ioctl->cmpl_timer); +- + DEBUG9(printk("%s(%ld): inst=%ld completed.\n", + __func__, ha->host_no, ha->instance);) + +@@ -4763,15 +4460,6 @@ qla2x00_sc_scsi_passthru(scsi_qla_host_t + (uint8_t *)&pscsi_pass->SenseData[0], + CMD_ACTUAL_SNSLEN(pscsi_cmd));) + +- ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr, +- sizeof(EXT_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE " +- "req buf.\n", __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->RequestAdr; + kernel_tmp = (uint8_t *)pscsi_pass; + ret = copy_to_user(usr_temp, kernel_tmp, +@@ -4789,17 +4477,6 @@ qla2x00_sc_scsi_passthru(scsi_qla_host_t + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n", + __func__, ha->host_no, ha->instance);) + +- /* getting device data and putting in pext->ResponseAdr */ +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr , +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write " +- "ResponseAdr.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + /* now copy up the READ data to user */ + if ((CMD_COMPL_STATUS(pscsi_cmd) == CS_DATA_UNDERRUN) && + (CMD_RESID_LEN(pscsi_cmd))) { +@@ -4864,6 +4541,7 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + uint32_t i; + + uint32_t transfer_len; ++ int found_fcp, found_fcl; + + EXT_FC_SCSI_PASSTHRU *pfc_scsi_pass; + +@@ -4879,6 +4557,17 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + } + ) + ++ if (test_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags) || ++ test_bit(FAILOVER_EVENT, &ha->dpc_flags) || ++ test_bit(FAILOVER_NEEDED, &ha->dpc_flags)) { ++ /* Stall intrusive passthru commands until failover complete */ ++ DEBUG9_10(printk("%s(%ld): inst=%ld failover in progress -- " ++ "returning busy.\n", ++ __func__, ha->host_no, ha->instance);) ++ pext->Status = EXT_STATUS_BUSY; ++ return (ret); ++ } ++ + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_pass, + sizeof(EXT_FC_SCSI_PASSTHRU))) { + /* not enough memory */ +@@ -4893,17 +4582,6 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + /* clear ioctl_mem to be used */ + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size); + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- sizeof(EXT_FC_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR verify READ req buf.\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } +- + if (pext->ResponseLen > ha->ioctl_mem_size) { + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) != + QL_STATUS_SUCCESS) { +@@ -4940,23 +4618,27 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + } + + fclun = NULL; +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { ++ found_fcp = 0; ++ found_fcl = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { + if (memcmp(fcport->port_name, + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN, 8) != 0) { + continue; + + } + +- for (fclun = fcport->fclun; fclun; fclun = fclun->next) { ++ found_fcp++; ++ list_for_each_entry(fclun, &fcport->fcluns, list) { + if (fclun->lun == pfc_scsi_pass->FCScsiAddr.Lun) { + /* Found the right LUN */ ++ found_fcl++; + break; + } + } + break; + } + +- if (fcport == NULL) { ++ if (!found_fcp) { + pext->Status = EXT_STATUS_DEV_NOT_FOUND; + DEBUG9_10(printk("%s(%ld): inst=%ld FC AddrFormat - DID NOT " + "FIND Port matching WWPN.\n", +@@ -4964,13 +4646,12 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + return (ret); + } + +- if (fclun == NULL) { ++ if (!found_fcl) { + /* Use a temporary fclun to send out the command. */ + fclun = &temp_fclun; + fclun->fcport = fcport; + fclun->lun = pfc_scsi_pass->FCScsiAddr.Lun; + fclun->flags = 0; +- fclun->next = NULL; + } + + /* set target coordinates */ +@@ -5038,19 +4719,17 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + DEBUG9(printk("%s(%ld): inst=%ld queuing command.\n", + __func__, ha->host_no, ha->instance);) + +- if ((ret = qla2x00_ioctl_scsi_queuecommand(ha, pext, pfc_scsi_cmd, +- pfc_scsi_device, fcport, fclun, pmore_cdb))) { ++ if (qla2x00_ioctl_scsi_queuecommand(ha, pext, pfc_scsi_cmd, ++ pfc_scsi_device, fcport, fclun, pmore_cdb)) { + return (ret); + } + +- /* Wait for comletion */ +- ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ; +- add_timer(&ha->ioctl->cmpl_timer); ++ DEBUG9(printk("%s(%ld): inst=%ld waiting for completion.\n", ++ __func__, ha->host_no, ha->instance);) + ++ /* Wait for completion */ + down(&ha->ioctl->cmpl_sem); + +- del_timer(&ha->ioctl->cmpl_timer); +- + if (ha->ioctl->SCSIPT_InProgress == 1) { + + printk(KERN_WARNING +@@ -5127,16 +4806,6 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + pfc_scsi_cmd->sense_buffer[i]; + } + +- ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr, +- sizeof(EXT_FC_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE " +- "RequestAdr.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->RequestAdr; + kernel_tmp = (uint8_t *)pfc_scsi_pass; + ret = copy_to_user(usr_temp, kernel_tmp, +@@ -5155,19 +4824,6 @@ qla2x00_sc_fc_scsi_passthru(scsi_qla_hos + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n", + __func__, ha->host_no, ha->instance);) + +- /* getting device data and putting in pext->ResponseAdr */ +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write " +- "ResponseAdr.\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } +- + /* now copy up the READ data to user */ + if ((CMD_COMPL_STATUS(pfc_scsi_cmd) == CS_DATA_UNDERRUN) && + (CMD_RESID_LEN(pfc_scsi_cmd))) { +@@ -5229,6 +4885,7 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + uint8_t *pmore_cdb = NULL; + uint32_t transfer_len; + uint32_t i; ++ int found; + + EXT_FC_SCSI_PASSTHRU *pscsi3_pass; + +@@ -5245,6 +4902,17 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + } + ) + ++ if (test_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags) || ++ test_bit(FAILOVER_EVENT, &ha->dpc_flags) || ++ test_bit(FAILOVER_NEEDED, &ha->dpc_flags)) { ++ /* Stall intrusive passthru commands until failover complete */ ++ DEBUG9_10(printk("%s(%ld): inst=%ld failover in progress -- " ++ "returning busy.\n", ++ __func__, ha->host_no, ha->instance);) ++ pext->Status = EXT_STATUS_BUSY; ++ return (ret); ++ } ++ + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi3_pass, + sizeof(EXT_FC_SCSI_PASSTHRU))) { + /* not enough memory */ +@@ -5260,15 +4928,6 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + /* clear ioctl_mem to be used */ + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size); + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- sizeof(EXT_FC_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ " +- "req buf.\n", __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + if (pext->ResponseLen > ha->ioctl_mem_size) { + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) != + QL_STATUS_SUCCESS) { +@@ -5317,13 +4976,15 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + return (ret); + } + +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { ++ found = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { + if (memcmp(fcport->port_name, + pscsi3_pass->FCScsiAddr.DestAddr.WWPN, 8) == 0) { ++ found++; + break; + } + } +- if (fcport == NULL) { ++ if (!found) { + pext->Status = EXT_STATUS_DEV_NOT_FOUND; + + DEBUG9_10(printk("%s(%ld): inst=%ld DID NOT FIND Port for WWPN " +@@ -5346,7 +5007,6 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + fclun->fcport = fcport; + fclun->lun = pscsi3_pass->FCScsiAddr.Lun; + fclun->flags = 0; +- fclun->next = NULL; + + /* set target coordinates */ + pscsi3_cmd->target = 0xff; /* not used. just put something there. */ +@@ -5390,24 +5050,21 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + } else { + pscsi3_cmd->sc_data_direction = SCSI_DATA_READ; + } ++ if (pscsi3_pass->Timeout) ++ pscsi3_cmd->timeout_per_command = pscsi3_pass->Timeout * HZ; + + /* send command to adapter */ + DEBUG9(printk("%s(%ld): inst=%ld queuing command.\n", + __func__, ha->host_no, ha->instance);) + +- if ((ret = qla2x00_ioctl_scsi_queuecommand(ha, pext, pscsi3_cmd, +- pscsi3_device, fcport, fclun, pmore_cdb))) { ++ if (qla2x00_ioctl_scsi_queuecommand(ha, pext, pscsi3_cmd, ++ pscsi3_device, fcport, fclun, pmore_cdb)) { + return (ret); + } + +- /* Wait for comletion */ +- ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ; +- add_timer(&ha->ioctl->cmpl_timer); +- ++ /* Wait for completion */ + down(&ha->ioctl->cmpl_sem); + +- del_timer(&ha->ioctl->cmpl_timer); +- + if (ha->ioctl->SCSIPT_InProgress == 1) { + + printk(KERN_WARNING +@@ -5488,16 +5145,6 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + pscsi3_cmd->sense_buffer[i]; + } + +- ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr, +- sizeof(EXT_FC_SCSI_PASSTHRU)); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE " +- "RequestAdr.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + usr_temp = (uint8_t *)pext->RequestAdr; + kernel_tmp = (uint8_t *)pscsi3_pass; + ret = copy_to_user(usr_temp, kernel_tmp, +@@ -5516,19 +5163,6 @@ qla2x00_sc_scsi3_passthru(scsi_qla_host_ + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n", + __func__, ha->host_no, ha->instance);) + +- /* getting device data and putting in pext->ResponseAdr */ +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- pext->ResponseLen); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write " +- "ResponseAdr.\n", +- __func__, ha->host_no, ha->instance);) +- +- return (ret); +- } +- + /* now copy up the READ data to user */ + if ((CMD_COMPL_STATUS(pscsi3_cmd) == CS_DATA_UNDERRUN) && + (CMD_RESID_LEN(pscsi3_cmd))) { +@@ -5587,14 +5221,11 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + + EXT_RNID_REQ *tmp_rnid; + int ret = 0; +- uint8_t dev_found = 0; +- uint16_t dev_loop_id = 0; + uint16_t mb[MAILBOX_REGISTER_COUNT]; + uint32_t copy_len; +- fc_port_t *fcport; + int found; +- struct list_head *fcil; +- fc_initiator_t *fcinitiator; ++ uint16_t next_loop_id; ++ fc_port_t *fcport; + + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) +@@ -5621,17 +5252,6 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + return (ret); + } + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- pext->RequestLen); +- +- if (ret != 0) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld req buf verify READ FAILED\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + DEBUG9(printk("%s(%ld): inst=%ld req buf verified. Copying req data.\n", + __func__, ha->host_no, ha->instance);) + +@@ -5657,159 +5277,80 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + } + + /* Find loop ID of the device */ +- fcinitiator = NULL; ++ found = 0; ++ fcport = NULL; + switch (tmp_rnid->Addr.Type) { + case EXT_DEF_TYPE_WWNN: + + DEBUG9(printk("%s(%ld): inst=%ld got node name.\n", + __func__, ha->host_no, ha->instance);) + +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { +- /* if removed or missing */ +- if (atomic_read(&fcport->state) == FC_ONLINE && +- memcmp((void *)tmp_rnid->Addr.FcAddr.WWNN, +- (void *)fcport->node_name, +- EXT_DEF_WWN_NAME_SIZE) == 0) { +- break; +- } +- } +- if (fcport != NULL) { +- DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcport->loop_id);) +- +- dev_found = TGT_DEV; +- dev_loop_id = fcport->loop_id; +- break; +- } +- +- found = 0; +- fcinitiator = NULL; +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_INITIATOR || ++ fcport->port_type != FCT_TARGET) ++ continue; + + if (memcmp(tmp_rnid->Addr.FcAddr.WWNN, +- fcinitiator->node_name, +- EXT_DEF_WWN_NAME_SIZE) == 0 && +- fcinitiator->d_id.b24 != 0) { ++ fcport->node_name, EXT_DEF_WWN_NAME_SIZE)) ++ continue; + +- found++; +- break; ++ if (fcport->port_type == FCT_TARGET) { ++ if (atomic_read(&fcport->state) != FC_ONLINE) ++ continue; ++ } else { /* FCT_INITIATOR */ ++ if (!fcport->d_id.b24) ++ continue; + } +- } +- if (found) { +- DEBUG9(printk("%s(%ld): inst=%ld found host device; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcinitiator->loop_id);) + +- dev_found = HOST_DEV; +- dev_loop_id = fcinitiator->loop_id; +- break; ++ found++; + } +- + break; + +- + case EXT_DEF_TYPE_WWPN: + DEBUG9(printk("%s(%ld): inst=%ld got port name.\n", + __func__, ha->host_no, ha->instance);) + +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { +- /* if removed or missing */ +- if (atomic_read(&fcport->state) == FC_ONLINE && +- memcmp((void *)tmp_rnid->Addr.FcAddr.WWPN, +- (void *)fcport->port_name, +- EXT_DEF_WWN_NAME_SIZE) == 0) { +- break; +- } +- } +- if (fcport != NULL) { +- DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcport->loop_id);) +- +- dev_found = TGT_DEV; /* target device */ +- dev_loop_id = fcport->loop_id; +- break; +- } +- +- found = 0; +- fcinitiator = NULL; +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_INITIATOR || ++ fcport->port_type != FCT_TARGET) ++ continue; + + if (memcmp(tmp_rnid->Addr.FcAddr.WWPN, +- fcinitiator->port_name, +- EXT_DEF_WWN_NAME_SIZE) == 0 && +- fcinitiator->d_id.b24 != 0) { ++ fcport->port_name, EXT_DEF_WWN_NAME_SIZE)) ++ continue; + +- found++; +- break; ++ if (fcport->port_type == FCT_TARGET) { ++ if (atomic_read(&fcport->state) != FC_ONLINE) ++ continue; ++ } else { /* FCT_INITIATOR */ ++ if (!fcport->d_id.b24) ++ continue; + } +- } +- if (found) { +- DEBUG9(printk("%s(%ld): inst=%ld found host device; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcinitiator->loop_id);) + +- dev_found = HOST_DEV; +- dev_loop_id = fcinitiator->loop_id; +- break; ++ found++; + } +- + break; + + case EXT_DEF_TYPE_PORTID: + DEBUG9(printk("%s(%ld): inst=%ld got port ID.\n", + __func__, ha->host_no, ha->instance);) + +- /* PORTID bytes entered must already be big endian */ +- for (fcport = ha->fcport; (fcport); fcport = fcport->next) { +- /* if removed or missing */ +- if (atomic_read(&fcport->state) == FC_ONLINE && +- memcmp((void *)&tmp_rnid->Addr.FcAddr.Id[1], +- (void *)(fcport->d_id.r.d_id), +- EXT_DEF_PORTID_SIZE_ACTUAL) == 0) { +- break; +- } +- } +- if (fcport != NULL) { +- DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcport->loop_id);) +- +- dev_found = TGT_DEV; /* target device */ +- dev_loop_id = fcport->loop_id; +- break; +- } +- +- found = 0; +- fcinitiator = NULL; +- list_for_each(fcil, &ha->fcinitiators) { +- fcinitiator = list_entry(fcil, fc_initiator_t, list); ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_INITIATOR || ++ fcport->port_type != FCT_TARGET) ++ continue; + ++ /* PORTID bytes entered must already be big endian */ + if (memcmp(&tmp_rnid->Addr.FcAddr.Id[1], +- &fcinitiator->d_id, +- EXT_DEF_PORTID_SIZE_ACTUAL) == 0) { ++ &fcport->d_id, EXT_DEF_PORTID_SIZE_ACTUAL)) ++ continue; + +- found++; +- break; ++ if (fcport->port_type == FCT_TARGET) { ++ if (atomic_read(&fcport->state) != FC_ONLINE) ++ continue; + } +- } +- if (found) { +- DEBUG9(printk("%s(%ld): inst=%ld found host device; " +- "loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- fcinitiator->loop_id);) + +- dev_found = HOST_DEV; +- dev_loop_id = fcinitiator->loop_id; +- break; ++ found++; + } + + break; +@@ -5822,23 +5363,18 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + return (ret); + } + +- if (!dev_found || +- (dev_found == TGT_DEV && dev_loop_id > LAST_SNS_LOOP_ID)) { ++ if (!found || (fcport->port_type == FCT_TARGET && ++ fcport->loop_id > SNS_LAST_LOOP_ID)) { + /* No matching device or the target device is not + * configured; just return error. + */ + pext->Status = EXT_STATUS_DEV_NOT_FOUND; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld device not found. dev_found=%d " +- "dev_loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, dev_found, +- dev_loop_id);) + qla2x00_free_ioctl_scrap_mem(ha); + return (ret); + } + + /* check on loop down */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || ha->dpc_active) { +@@ -5851,109 +5387,21 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + return (ret); + } + +- /* Check whether we need to login first. */ +- if (dev_found == HOST_DEV && dev_loop_id > LAST_SNS_LOOP_ID) { +- /* +- * Search for a usable loop ID before try to login to it. +- */ +- if ((dev_loop_id &= ~PORT_LOST_ID) > LAST_SNS_LOOP_ID) { +- /* Just start searching from first possible ID. */ +- dev_loop_id = ha->min_external_loopid; +- } +- for (;;) { +- if (ha->fabricid[dev_loop_id].in_use == TRUE) { +- dev_loop_id++; +- } else { +- ha->fabricid[dev_loop_id].in_use = TRUE; +- break; +- } +- } +- +- DEBUG9(printk("%s(%ld): inst=%ld try relogin to host dev; " +- "dev_loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, dev_loop_id);) +- +- for (;;) { +- if (dev_loop_id > LAST_SNS_LOOP_ID) { +- /* error */ +- DEBUG10(printk("%s(%ld): inst=%ld " +- "no valid loop_id for login.\n", +- __func__, ha->host_no, ha->instance);) +- +- break; +- } +- +- qla2x00_login_fabric(ha, +- dev_loop_id, +- fcinitiator->d_id.b.domain, +- fcinitiator->d_id.b.area, +- fcinitiator->d_id.b.al_pa, +- &mb[0], 0); +- +- if (mb[0] != MBS_CMD_CMP && +- mb[0] != MBS_PORT_ID_IN_USE && +- mb[0] != MBS_LOOP_ID_IN_USE) { +- +- DEBUG10(printk("%s(%ld): inst=%ld " +- "ERROR login mb[0]=%x mb[1]=%x.\n", +- __func__, ha->host_no, ha->instance, +- mb[0], mb[1]);) +- break; +- } +- +- if (mb[0] == MBS_CMD_CMP) { +- DEBUG9(printk("%s(%ld): inst=%ld host login " +- "success; loop_id=%x.\n", +- __func__, ha->host_no, ha->instance, +- dev_loop_id);) +- +- fcinitiator->loop_id = dev_loop_id; +- break; +- } else if (mb[0] == MBS_PORT_ID_IN_USE) { +- ha->fabricid[dev_loop_id].in_use = FALSE; +- dev_loop_id = mb[1]; +- +- DEBUG9(printk("%s(%ld): inst=%ld port %06x " +- "using loop id=0x%04x.\n", +- __func__, ha->host_no, ha->instance, +- fcinitiator->d_id.b24, +- dev_loop_id);) +- +- if (dev_loop_id <= LAST_SNS_LOOP_ID) +- ha->fabricid[dev_loop_id].in_use = TRUE; +- else +- /* Error */ +- break; +- +- } else if (mb[0] == MBS_LOOP_ID_IN_USE) { +- /* Search for another usable loop_id */ +- dev_loop_id++; +- while (ha->fabricid[dev_loop_id].in_use) { +- if (dev_loop_id++ > LAST_SNS_LOOP_ID) { +- /* Error */ +- break; +- } +- } +- +- if (dev_loop_id <= LAST_SNS_LOOP_ID) { +- DEBUG9(printk( +- "%s(%ld): inst=%ld previous loop " +- "id in use. Retry with 0x%04x.\n", +- __func__, ha->host_no, ha->instance, +- dev_loop_id);) +- +- ha->fabricid[dev_loop_id].in_use = TRUE; +- } else { +- /* Error */ +- break; +- } +- } +- } ++ /* If this is for a host device, check if we need to perform login */ ++ if (fcport->port_type == FCT_INITIATOR && ++ fcport->loop_id >= SNS_LAST_LOOP_ID) { ++ next_loop_id = 0; ++ ret = qla2x00_fabric_login(ha, fcport, &next_loop_id); ++ if (ret != QL_STATUS_SUCCESS) { ++ /* login failed. */ ++ pext->Status = EXT_STATUS_DEV_NOT_FOUND; + +- if (mb[0] != MBS_CMD_CMP) { +- pext->Status = EXT_STATUS_ERR; +- DEBUG9_10(printk( "%s(%ld): inst=%ld login failed.\n", +- __func__, ha->host_no, ha->instance);) ++ DEBUG9_10(printk("%s(%ld): inst=%ld ERROR login to " ++ "host port failed. loop_id=%02x pid=%02x%02x%02x " ++ "ret=%d.\n", ++ __func__, ha->host_no, ha->instance, ++ fcport->loop_id, fcport->d_id.b.domain, ++ fcport->d_id.b.area, fcport->d_id.b.al_pa, ret);) + + qla2x00_free_ioctl_scrap_mem(ha); + return (ret); +@@ -5964,7 +5412,7 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + DEBUG9(printk("%s(%ld): inst=%ld sending rnid cmd.\n", + __func__, ha->host_no, ha->instance);) + +- ret = qla2x00_send_rnid_mbx(ha, dev_loop_id, ++ ret = qla2x00_send_rnid_mbx(ha, fcport->loop_id, + (uint8_t)tmp_rnid->DataFormat, ha->ioctl_mem_phys, + SEND_RNID_RSP_SIZE, &mb[0]); + +@@ -5985,38 +5433,27 @@ qla2x00_send_els_rnid(scsi_qla_host_t *h + copy_len = (pext->ResponseLen > SEND_RNID_RSP_SIZE) ? + SEND_RNID_RSP_SIZE : pext->ResponseLen; + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- copy_len); +- +- if (ret != 0) { ++ ret = copy_to_user(pext->ResponseAdr, ha->ioctl_mem, copy_len); ++ if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk( +- "%s(%ld): inst=%ld rsp buf verify WRITE error\n", ++ "%s(%ld): inst=%ld ERROR copy rsp buf\n", + __func__, ha->host_no, ha->instance);) +- } else { +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, +- (uint8_t *)ha->ioctl_mem, copy_len); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk( +- "%s(%ld): inst=%ld ERROR copy rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- qla2x00_free_ioctl_scrap_mem(ha); +- return (ret); +- } ++ qla2x00_free_ioctl_scrap_mem(ha); ++ return (ret); ++ } + +- if (SEND_RNID_RSP_SIZE > pext->ResponseLen) { +- pext->Status = EXT_STATUS_DATA_OVERRUN; +- DEBUG9(printk("%s(%ld): inst=%ld data overrun. " +- "exiting normally.\n", +- __func__, ha->host_no, ha->instance);) +- } else { +- pext->Status = EXT_STATUS_OK; +- DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n", +- __func__, ha->host_no, ha->instance);) +- } +- pext->ResponseLen = copy_len; ++ if (SEND_RNID_RSP_SIZE > pext->ResponseLen) { ++ pext->Status = EXT_STATUS_DATA_OVERRUN; ++ DEBUG9(printk("%s(%ld): inst=%ld data overrun. exiting " ++ "normally.\n", ++ __func__, ha->host_no, ha->instance);) ++ } else { ++ pext->Status = EXT_STATUS_OK; ++ DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n", ++ __func__, ha->host_no, ha->instance);) + } ++ pext->ResponseLen = copy_len; + + qla2x00_free_ioctl_scrap_mem(ha); + return (ret); +@@ -6050,7 +5487,7 @@ qla2x00_get_rnid_params(scsi_qla_host_t + __func__, ha->host_no, ha->instance);) + + /* check on loop down */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || ha->dpc_active) { +@@ -6078,39 +5515,30 @@ qla2x00_get_rnid_params(scsi_qla_host_t + /* Copy the response */ + copy_len = (pext->ResponseLen > sizeof(EXT_RNID_DATA)) ? + (uint32_t)sizeof(EXT_RNID_DATA) : pext->ResponseLen; +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- copy_len); + +- if (ret != 0) { ++ ret = copy_to_user(pext->ResponseAdr, ha->ioctl_mem, copy_len); ++ if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld verify WRITE rsp buf error\n", ++ DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf\n", + __func__, ha->host_no, ha->instance);) +- } else { +- ret = copy_to_user((void *)pext->ResponseAdr, +- (void *)ha->ioctl_mem, copy_len); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } ++ return (ret); ++ } + +- pext->ResponseLen = copy_len; +- if (copy_len < sizeof(EXT_RNID_DATA)) { +- pext->Status = EXT_STATUS_DATA_OVERRUN; +- DEBUG9_10(printk("%s(%ld): inst=%ld data overrun. " +- "exiting normally.\n", +- __func__, ha->host_no, ha->instance);) +- } else if (pext->ResponseLen > sizeof(EXT_RNID_DATA)) { +- pext->Status = EXT_STATUS_DATA_UNDERRUN; +- DEBUG9_10(printk("%s(%ld): inst=%ld data underrun. " +- "exiting normally.\n", +- __func__, ha->host_no, ha->instance);) +- } else { +- pext->Status = EXT_STATUS_OK; +- DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n", +- __func__, ha->host_no, ha->instance);) +- } ++ pext->ResponseLen = copy_len; ++ if (copy_len < sizeof(EXT_RNID_DATA)) { ++ pext->Status = EXT_STATUS_DATA_OVERRUN; ++ DEBUG9_10(printk("%s(%ld): inst=%ld data overrun. " ++ "exiting normally.\n", ++ __func__, ha->host_no, ha->instance);) ++ } else if (pext->ResponseLen > sizeof(EXT_RNID_DATA)) { ++ pext->Status = EXT_STATUS_DATA_UNDERRUN; ++ DEBUG9_10(printk("%s(%ld): inst=%ld data underrun. " ++ "exiting normally.\n", ++ __func__, ha->host_no, ha->instance);) ++ } else { ++ pext->Status = EXT_STATUS_OK; ++ DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n", ++ __func__, ha->host_no, ha->instance);) + } + + return (ret); +@@ -6142,17 +5570,6 @@ qla2x00_get_led_state(scsi_qla_host_t *h + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- sizeof(EXT_BEACON_CONTROL)); +- +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE " +- "EXT_HBA_PORT_STAT.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + if (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) { + pext->Status = EXT_STATUS_BUSY; + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n", +@@ -6262,7 +5679,7 @@ qla2x00_set_rnid_params(scsi_qla_host_t + __func__, ha->host_no, ha->instance);) + + /* check on loop down */ +- if (ha->loop_state != LOOP_READY || ++ if (atomic_read(&ha->loop_state) != LOOP_READY || + test_bit(CFG_ACTIVE, &ha->cfg_flags) || + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || + ABORTS_ACTIVE || ha->dpc_active) { +@@ -6283,16 +5700,6 @@ qla2x00_set_rnid_params(scsi_qla_host_t + return(ret); + } + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- pext->RequestLen); +- +- if (ret != 0) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld verify READ request buf.\n", +- __func__, ha->host_no, ha->instance);) +- return(ret); +- } +- + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&tmp_set, + sizeof(EXT_SET_RNID_REQ))) { + /* not enough memory */ +@@ -6379,17 +5786,6 @@ qla2x00_set_led_state(scsi_qla_host_t *h + DEBUG9(printk("%s(%ld): inst=%ld entered.\n", + __func__, ha->host_no, ha->instance);) + +- ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- sizeof(EXT_BEACON_CONTROL)); +- +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE " +- "EXT_HBA_PORT_STAT.\n", +- __func__, ha->host_no, ha->instance);) +- return (ret); +- } +- + if (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) { + pext->Status = EXT_STATUS_BUSY; + DEBUG9_10(printk("%s(%ld): inst=%ld abort isp active.\n", +@@ -6397,8 +5793,8 @@ qla2x00_set_led_state(scsi_qla_host_t *h + return (ret); + } + +- ret = copy_from_user(&ptmp_led_state, +- pext->RequestAdr, pext->RequestLen); ++ ret = copy_from_user(&ptmp_led_state, pext->RequestAdr, ++ pext->RequestLen); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy req buf.\n", +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfg.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfg.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfg.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfg.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -21,7 +21,6 @@ + * QLogic ISP2x00 Multi-path LUN Support Driver + * + */ +- + #include "qlfo.h" + #include "qla_cfg.h" + #include "qla_gbl.h" +@@ -32,12 +31,12 @@ + #include "qla_cfgln.c" + #endif + +- ++extern int qla2x00_lun_reset(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun); + /* + * Local Function Prototypes. + */ + +-static uint32_t qla2x00_add_portname_to_mp_dev(mp_device_t *, uint8_t *); ++static uint32_t qla2x00_add_portname_to_mp_dev(mp_device_t *, uint8_t *, uint8_t *); + + static mp_device_t * qla2x00_allocate_mp_dev(uint8_t *, uint8_t *); + static mp_path_t * qla2x00_allocate_path(mp_host_t *, uint16_t, fc_port_t *, +@@ -57,16 +56,16 @@ static uint32_t qla2x00_cfg_register_fai + static uint32_t qla2x00_send_failover_notify(mp_device_t *, uint8_t, + mp_path_t *, mp_path_t *); + static mp_path_t * qla2x00_select_next_path(mp_host_t *, mp_device_t *, +- uint8_t); ++ uint8_t, srb_t *); + + static BOOL qla2x00_update_mp_host(mp_host_t *); + static uint32_t qla2x00_update_mp_tree (void); + +-static fc_lun_t *qla2x00_find_matching_lun(uint8_t , mp_path_t *); ++static fc_lun_t *qla2x00_find_matching_lun(uint8_t , mp_device_t *, mp_path_t *); + static mp_path_t *qla2x00_find_path_by_id(mp_device_t *, uint8_t); + static mp_device_t *qla2x00_find_mp_dev_by_id(mp_host_t *, uint8_t); + static mp_device_t *qla2x00_find_mp_dev_by_nodename(mp_host_t *, uint8_t *); +-static mp_device_t *qla2x00_find_mp_dev_by_portname(mp_host_t *, uint8_t *, ++mp_device_t *qla2x00_find_mp_dev_by_portname(mp_host_t *, uint8_t *, + uint16_t *); + static mp_device_t *qla2x00_find_dp_by_pn_from_all_hosts(uint8_t *, uint16_t *); + +@@ -80,7 +79,36 @@ static void qla2x00_add_path(mp_path_lis + static BOOL qla2x00_is_portname_in_device(mp_device_t *, uint8_t *); + static void qla2x00_failback_single_lun(mp_device_t *, uint8_t, uint8_t); + static void qla2x00_failback_luns(mp_host_t *); +-static void qla2x00_setup_new_path(mp_device_t *, mp_path_t *); ++static void qla2x00_setup_new_path(mp_device_t *, mp_path_t *, fc_port_t *); ++static int qla2x00_get_wwuln_from_device(mp_host_t *, fc_lun_t *, char *, int); ++#if 0 ++static mp_device_t * qla2x00_is_nn_and_pn_in_device(mp_device_t *, ++ uint8_t *, uint8_t *); ++static mp_device_t * qla2x00_find_mp_dev_by_nn_and_pn(mp_host_t *, uint8_t *, uint8_t *); ++#endif ++static mp_lun_t * qla2x00_find_matching_lunid(char *); ++static fc_lun_t * qla2x00_find_matching_lun_by_num(uint16_t , mp_device_t *, ++ mp_path_t *); ++static int qla2x00_configure_cfg_device(fc_port_t *); ++static mp_lun_t * ++qla2x00_find_or_allocate_lun(mp_host_t *, uint16_t , ++ fc_port_t *, fc_lun_t *); ++static void qla2x00_add_lun( mp_device_t *, mp_lun_t *); ++#if 0 ++static BOOL qla2x00_is_nodename_in_device(mp_device_t *, uint8_t *); ++#endif ++static mp_port_t * ++qla2x00_find_or_allocate_port(mp_host_t *, mp_lun_t *, ++ mp_path_t *); ++static mp_port_t * ++qla2x00_find_port_by_name(mp_lun_t *, mp_path_t *); ++static struct _mp_path * ++qla2x00_find_first_active_path(mp_device_t *, mp_lun_t *); ++#if 0 ++static BOOL ++qla2x00_is_pathid_in_port(mp_port_t *, uint8_t ); ++#endif ++int qla2x00_export_target( void *, uint16_t , fc_port_t *, uint16_t ); + + /* + * Global data items +@@ -90,11 +118,66 @@ BOOL mp_config_required = FALSE; + static int mp_num_hosts = 0; + static BOOL mp_initialized = FALSE; + +- + /* + * ENTRY ROUTINES + */ + ++ /* ++ * Borrowed from scsi_scan.c ++ */ ++int16_t qla2x00_cfg_lookup_device(unsigned char *response_data) ++{ ++ int i = 0; ++ unsigned char *pnt; ++ DEBUG3(printk(KERN_INFO "Entering %s\n", __func__);) ++ for (i = 0; 1; i++) { ++ if (cfg_device_list[i].vendor == NULL) ++ return -1; ++ pnt = &response_data[8]; ++ while (*pnt && *pnt == ' ') ++ pnt++; ++ if (memcmp(cfg_device_list[i].vendor, pnt, ++ strlen(cfg_device_list[i].vendor))) ++ continue; ++ pnt = &response_data[16]; ++ while (*pnt && *pnt == ' ') ++ pnt++; ++ if (memcmp(cfg_device_list[i].model, pnt, ++ strlen(cfg_device_list[i].model))) ++ continue; ++ return i; ++ } ++ return -1; ++} ++ ++ ++static int qla2x00_configure_cfg_device(fc_port_t *fcport) ++{ ++ int id = fcport->cfg_id; ++ ++ DEBUG3(printk("Entering %s - id= %d\n", __func__, fcport->cfg_id);) ++ ++ if( fcport->cfg_id == (int16_t) -1 ) ++ return 0; ++ ++ /* Set any notify options */ ++ if( cfg_device_list[id].notify_type != FO_NOTIFY_TYPE_NONE ){ ++ fcport->notify_type = cfg_device_list[id].notify_type; ++ } ++ ++ DEBUG3(printk("%s - Configuring device \n", __func__);) ++ /* Disable failover capability if needed and return */ ++ ++ fcport->fo_combine = cfg_device_list[id].fo_combine; ++#if 0 ++ fcport->fo_detect = cfg_device_list[id].fo_detect; ++ fcport->fo_notify = cfg_device_list[id].fo_notify; ++ fcport->fo_select = cfg_device_list[id].fo_select; ++#endif ++ DEBUG3(printk("Exiting %s - id= %d\n", __func__, fcport->cfg_id); ) ++ return 1; ++} ++ + /* + * qla2x00_cfg_init + * Initialize configuration structures to handle an instance of +@@ -116,17 +199,16 @@ qla2x00_cfg_init(scsi_qla_host_t *ha) + + ENTER("qla2x00_cfg_init"); + set_bit(CFG_ACTIVE, &ha->cfg_flags); +- if (!mp_initialized) { +- /* First HBA, initialize the failover global properties */ +- qla2x00_fo_init_params(ha); +- +- /* If the user specified a device configuration then +- * it is use as the configuration. Otherwise, we wait +- * for path discovery. +- */ +- if ( mp_config_required ) +- qla2x00_cfg_build_path_tree(ha); +- } ++ mp_initialized = TRUE; ++ /* First HBA, initialize the failover global properties */ ++ qla2x00_fo_init_params(ha); ++ ++ /* If the user specified a device configuration then ++ * it is use as the configuration. Otherwise, we wait ++ * for path discovery. ++ */ ++ if (mp_config_required) ++ qla2x00_cfg_build_path_tree(ha); + rval = qla2x00_cfg_path_discovery(ha); + clear_bit(CFG_ACTIVE, &ha->cfg_flags); + LEAVE("qla2x00_cfg_init"); +@@ -191,10 +273,10 @@ qla2x00_cfg_path_discovery(scsi_qla_host + } + + /* Fill in information about host */ +- if (host != NULL ) { ++ if (host != NULL) { + host->flags |= MP_HOST_FLAG_NEEDS_UPDATE; + host->flags |= MP_HOST_FLAG_LUN_FO_ENABLED; +- host->fcport = ha->fcport; ++ host->fcports = &ha->fcports; + + /* Check if multipath is enabled */ + DEBUG3(printk("%s: updating mp host for ha inst %ld.\n", +@@ -261,8 +343,10 @@ qla2x00_cfg_event_notify(scsi_qla_host_t + /* Adapter is back up with new configuration */ + if ((host = qla2x00_cfg_find_host(ha)) != NULL) { + host->flags |= MP_HOST_FLAG_NEEDS_UPDATE; +- host->fcport = ha->fcport; ++ host->fcports = &ha->fcports; ++ set_bit(CFG_FAILOVER, &ha->cfg_flags); + qla2x00_update_mp_tree(); ++ clear_bit(CFG_FAILOVER, &ha->cfg_flags); + } + break; + case MP_NOTIFY_LOOP_DOWN: +@@ -282,6 +366,248 @@ qla2x00_cfg_event_notify(scsi_qla_host_t + return QLA2X00_SUCCESS; + } + ++int qla2x00_cfg_remap(scsi_qla_host_t *halist) ++{ ++ scsi_qla_host_t *ha; ++ ++ DEBUG2(printk("Entering %s ...\n",__func__);) ++ /* Find the host that was specified */ ++ mp_initialized = TRUE; ++ for (ha=halist; (ha != NULL); ha=ha->next) { ++ set_bit(CFG_FAILOVER, &ha->cfg_flags); ++ qla2x00_cfg_path_discovery(ha); ++ clear_bit(CFG_FAILOVER, &ha->cfg_flags); ++ } ++ mp_initialized = FALSE; ++ DEBUG2(printk("Exiting %s ...\n",__func__);) ++ ++ return QLA2X00_SUCCESS; ++} ++ ++/* ++ * qla2x00_allocate_mp_port ++ * Allocate an fc_mp_port, clear the memory, and log a system ++ * error if the allocation fails. After fc_mp_port is allocated ++ * ++ */ ++static mp_port_t * ++qla2x00_allocate_mp_port(uint8_t *portname) ++{ ++ mp_port_t *port; ++ int i; ++ ++ DEBUG3(printk("%s: entered.\n", __func__);) ++ ++ port = (mp_port_t *)KMEM_ZALLOC(sizeof(mp_port_t), 3); ++ ++ if (port != NULL) { ++ DEBUG(printk("%s: mp_port_t allocated at %p\n", ++ __func__, port);) ++ ++ /* ++ * Since this is the first port, it goes at ++ * index zero. ++ */ ++ if (portname) ++ { ++ DEBUG3(printk("%s: copying port name %02x%02x%02x" ++ "%02x%02x%02x%02x%02x.\n", ++ __func__, portname[0], portname[1], ++ portname[2], portname[3], portname[4], ++ portname[5], portname[6], portname[7]);) ++ memcpy(&port->portname[0], portname, PORT_NAME_SIZE); ++ } ++ for ( i = 0 ;i < MAX_HOSTS; i++ ) { ++ port->path_list[i] = PATH_INDEX_INVALID; ++ } ++ port->fo_cnt = 0; ++ ++ } ++ ++ DEBUG3(printk("%s: exiting.\n", __func__);) ++ ++ return port; ++} ++ ++static mp_port_t * ++qla2x00_find_port_by_name(mp_lun_t *mplun, ++ mp_path_t *path) ++{ ++ mp_port_t *port = NULL; ++ mp_port_t *temp_port; ++ struct list_head *list, *temp; ++ ++ list_for_each_safe(list, temp, &mplun->ports_list) { ++ temp_port = list_entry(list, mp_port_t, list); ++ if ( memcmp(temp_port->portname, path->portname, WWN_SIZE) == 0 ) { ++ port = temp_port; ++ break; ++ } ++ } ++ return port; ++} ++ ++ ++static mp_port_t * ++qla2x00_find_or_allocate_port(mp_host_t *host, mp_lun_t *mplun, ++ mp_path_t *path) ++{ ++ mp_port_t *port = NULL; ++ struct list_head *list, *temp; ++ unsigned long instance = host->instance; ++ ++ if( instance == MAX_HOSTS - 1) { ++ printk(KERN_INFO "%s: Fail no room\n", __func__); ++ return NULL; ++ } ++ ++ if ( mplun == NULL ) { ++ return NULL; ++ } ++ ++ list_for_each_safe(list, temp, &mplun->ports_list) { ++ port = list_entry(list, mp_port_t, list); ++ if ( memcmp(port->portname, path->portname, WWN_SIZE) == 0 ) { ++ if ( port->path_list[instance] == PATH_INDEX_INVALID ) { ++ DEBUG(printk("scsi%ld %s: Found matching mp port %02x%02x%02x" ++ "%02x%02x%02x%02x%02x.\n", ++ instance, __func__, port->portname[0], port->portname[1], ++ port->portname[2], port->portname[3], ++ port->portname[4], port->portname[5], ++ port->portname[6], port->portname[7]);) ++ port->path_list[instance] = path->id; ++ port->hba_list[instance] = host->ha; ++ port->cnt++; ++ DEBUG(printk("%s: adding portname - port[%d] = " ++ "%p at index = %d with path id %d\n", ++ __func__, (int)instance ,port, ++ (int)instance, path->id);) ++ } ++ return port; ++ } ++ } ++ port = qla2x00_allocate_mp_port(path->portname); ++ if( port ) { ++ port->cnt++; ++ DEBUG(printk("%s: allocate and adding portname - port[%d] = " ++ "%p at index = %d with path id %d\n", ++ __func__, (int)instance, port, ++ (int)instance, path->id);) ++ port->path_list[instance] = path->id; ++ port->hba_list[instance] = host->ha; ++ /* add port to list */ ++ list_add_tail(&port->list,&mplun->ports_list ); ++ } ++ return port; ++} ++ ++ ++/* ++ * qla2x00_cfg_failover_port ++ * Failover all the luns on the specified target to ++ * the new path. ++ * ++ * Inputs: ++ * ha = pointer to host adapter ++ * fp - pointer to new fc_lun (failover lun) ++ * tgt - pointer to target ++ * ++ * Returns: ++ * ++ */ ++static fc_lun_t * ++qla2x00_cfg_failover_port( mp_host_t *host, mp_device_t *dp, ++ mp_path_t *new_path, fc_port_t *old_fcport, srb_t *sp) ++{ ++ uint8_t l; ++ fc_port_t *fcport; ++ fc_lun_t *fclun; ++ fc_lun_t *new_fclun = NULL; ++ os_lun_t *up; ++ mp_path_t *vis_path; ++ mp_host_t *vis_host; ++ ++ fcport = new_path->port; ++ if( !qla2x00_test_active_port(fcport) ) { ++ DEBUG2(printk("%s(%ld): %s - port not ACTIVE " ++ "to failover: port = %p, loop id= 0x%x\n", ++ __func__, ++ host->ha->host_no, __func__, fcport, fcport->loop_id);) ++ return new_fclun; ++ } ++ ++ /* Log the failover to console */ ++ printk(KERN_INFO ++ "qla2x00%d: FAILOVER all LUNS on device %d to WWPN " ++ "%02x%02x%02x%02x%02x%02x%02x%02x -> " ++ "%02x%02x%02x%02x%02x%02x%02x%02x, reason=0x%x\n", ++ (int) host->instance, ++ (int) dp->dev_id, ++ old_fcport->port_name[0], old_fcport->port_name[1], ++ old_fcport->port_name[2], old_fcport->port_name[3], ++ old_fcport->port_name[4], old_fcport->port_name[5], ++ old_fcport->port_name[6], old_fcport->port_name[7], ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7], sp->err_id ); ++ printk(KERN_INFO ++ "qla2x00: FROM HBA %d to HBA %d\n", ++ (int)old_fcport->ha->instance, ++ (int)fcport->ha->instance); ++ ++ /* we failover all the luns on this port */ ++ list_for_each_entry(fclun, &fcport->fcluns, list) { ++ l = fclun->lun; ++ if( (fclun->flags & FC_VISIBLE_LUN) ) { ++ continue; ++ } ++ dp->path_list->current_path[l] = new_path->id; ++ if ((vis_path = ++ qla2x00_get_visible_path(dp)) == NULL ) { ++ printk(KERN_INFO ++ "qla2x00(%d): No visible " ++ "path for target %d, " ++ "dp = %p\n", ++ (int)host->instance, ++ dp->dev_id, dp); ++ continue; ++ } ++ ++ vis_host = vis_path->host; ++ up = (os_lun_t *) GET_LU_Q(vis_host->ha, ++ dp->dev_id, l); ++ if (up == NULL ) { ++ DEBUG2(printk("%s: instance %d: No lun queue" ++ "for target %d, lun %d.. \n", ++ __func__,(int)vis_host->instance,dp->dev_id,l);) ++ continue; ++ } ++ ++ up->fclun = fclun; ++ fclun->fcport->cur_path = new_path->id; ++ ++ DEBUG2(printk("%s: instance %d: Mapping target %d:0x%x," ++ "lun %d to path id %d\n", ++ __func__,(int)vis_host->instance,dp->dev_id, ++ fclun->fcport->loop_id, l, ++ fclun->fcport->cur_path);) ++ ++ /* issue reset to data luns only */ ++ if( fclun->inq0 == 0 ) { ++ new_fclun = fclun; ++ /* send a reset lun command as well */ ++ printk(KERN_INFO ++ "scsi(%ld:0x%x:%d) sending reset lun \n", ++ fcport->ha->host_no, ++ fcport->loop_id, l); ++ qla2x00_lun_reset(fcport->ha, ++ fcport->loop_id, l); ++ } ++ } ++ return new_fclun; ++} ++ + /* + * qla2x00_cfg_failover + * A problem has been detected with the current path for this +@@ -304,8 +630,11 @@ qla2x00_cfg_failover(scsi_qla_host_t *ha + mp_device_t *dp; /* virtual device pointer */ + mp_path_t *new_path; /* new path pointer */ + fc_lun_t *new_fp = NULL; ++ fc_port_t *fcport, *new_fcport; + + ENTER("qla2x00_cfg_failover"); ++ DEBUG2(printk("%s entered\n",__func__);) ++ + set_bit(CFG_ACTIVE, &ha->cfg_flags); + if ((host = qla2x00_cfg_find_host(ha)) != NULL) { + if ((dp = qla2x00_find_mp_dev_by_nodename( +@@ -318,21 +647,71 @@ qla2x00_cfg_failover(scsi_qla_host_t *ha + * another I/O. If there is only one path continuer + * to point at it. + */ +- new_path = qla2x00_select_next_path(host, dp, fp->lun); +- DEBUG3(printk("cfg_failover: new path @ %p\n", +- new_path);) +- new_fp = qla2x00_find_matching_lun(fp->lun, new_path); +- DEBUG3(printk("cfg_failover: new fp lun @ %p\n", +- new_fp);) ++ new_path = qla2x00_select_next_path(host, dp, ++ fp->lun, sp); ++ if( new_path == NULL ) ++ goto cfg_failover_done; ++ new_fp = qla2x00_find_matching_lun(fp->lun, ++ dp, new_path); ++ if( new_fp == NULL ) ++ goto cfg_failover_done; ++ DEBUG2(printk("cfg_failover: new path=%p, new pathid=%d" ++ " new fp lun= %p\n", ++ new_path, new_path->id, new_fp);) ++ ++ fcport = fp->fcport; ++ if( (fcport->flags & FC_MSA_DEVICE) ) { ++ /* ++ * "select next path" has already ++ * send out the switch path notify ++ * command, so inactive old path ++ */ ++ fcport->flags &= ~(FC_MSA_PORT_ACTIVE); ++ if( qla2x00_cfg_failover_port( host, dp, ++ new_path, fcport, sp) == NULL ) { ++ printk(KERN_INFO ++ "scsi(%ld): Fail to failover device " ++ " - fcport = %p\n", ++ host->ha->host_no, fcport); ++ goto cfg_failover_done; ++ } ++ } else if( (fcport->flags & FC_EVA_DEVICE) ) { ++ new_fcport = new_path->port; ++ if ( qla2x00_test_active_lun( ++ new_fcport, new_fp ) ) { ++ qla2x00_cfg_register_failover_lun(dp, ++ sp, new_fp); ++ /* send a reset lun command as well */ ++ printk(KERN_INFO ++ "scsi(%ld:0x%x:%d) sending" ++ " reset lun \n", ++ new_fcport->ha->host_no, ++ new_fcport->loop_id, new_fp->lun); ++ qla2x00_lun_reset(new_fcport->ha, ++ new_fcport->loop_id, new_fp->lun); ++ } else { ++ DEBUG2(printk( ++ "scsi(%ld): %s Fail to failover lun " ++ "old fclun= %p, new fclun= %p\n", ++ host->ha->host_no, ++ __func__,fp, new_fp);) ++ goto cfg_failover_done; ++ } ++ } else { /*default */ ++ new_fp = qla2x00_find_matching_lun(fp->lun, ++ dp, new_path); ++ qla2x00_cfg_register_failover_lun(dp, sp, new_fp); ++ } + +- qla2x00_cfg_register_failover_lun(dp, sp, new_fp); + } else { + printk(KERN_INFO + "qla2x00(%d): Couldn't find device " +- "to failover\n", +- host->instance); ++ "to failover: dp = %p\n", ++ host->instance, dp); + } + } ++ ++cfg_failover_done: + clear_bit(CFG_ACTIVE, &ha->cfg_flags); + + LEAVE("qla2x00_cfg_failover"); +@@ -426,7 +805,8 @@ qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO + mp_path_list_t *ptmp_plist; + #define STD_MAX_PATH_CNT 1 + #define STD_VISIBLE_INDEX 0 +- fc_port_t *pfcport = NULL; ++ int found; ++ fc_port_t *fcport = NULL; + + DEBUG9(printk("%s: non-fo case.\n", __func__);) + +@@ -443,16 +823,16 @@ qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO + return -ENOMEM; + } + +- for (pfcport = ha->fcport; pfcport != NULL; +- pfcport = pfcport->next) { +- +- if (memcmp(pfcport->node_name, sap->DestAddr.WWNN, ++ found = 0; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (memcmp(fcport->node_name, sap->DestAddr.WWNN, + EXT_DEF_WWN_NAME_SIZE) == 0) { ++ found++; + break; + } + } + +- if (pfcport) { ++ if (found) { + DEBUG9(printk("%s: found fcport:" + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.", + __func__, +@@ -475,18 +855,9 @@ qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO + entry->Visible = TRUE; + entry->HbaInstance = bp->HbaInstance; + +- memcpy(entry->PortName, pfcport->port_name, ++ memcpy(entry->PortName, fcport->port_name, + EXT_DEF_WWP_NAME_SIZE); + +- rval = verify_area(VERIFY_WRITE, (void *)u_paths, +- cmd->ResponseLen); +- if (rval) { +- /* error */ +- DEBUG9_10(printk("%s: u_paths %p verify write" +- " error. paths->PathCount=%d.\n", +- __func__, u_paths, paths->PathCount);) +- } +- + /* Copy data to user */ + if (rval == 0) + rval = copy_to_user(&u_paths->PathCount, +@@ -605,14 +976,6 @@ qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO + DEBUG9(printk("%s: path cnt=%d, visible path=%d.\n", + __func__, path_list->path_cnt, path_list->visible);) + +- rval = verify_area(VERIFY_WRITE, (void *)u_paths, +- cmd->ResponseLen); +- if (rval) { +- /* error */ +- DEBUG9_10(printk("%s: u_paths %p verify write" +- " error. paths->PathCount=%d.\n", +- __func__, u_paths, paths->PathCount);) +- } + DEBUG9(printk("%s: path cnt=%d, visible path=%d.\n", + __func__, path_list->path_cnt, path_list->visible);) + +@@ -956,6 +1319,7 @@ qla2x00_alloc_host(scsi_qla_host_t *ha) + * Input: + * dp = pointer ti virtual device + * portname = Port name to add to device ++ * nodename = Node name to add to device + * + * Returns: + * qla2x00 local function return status code. +@@ -964,7 +1328,7 @@ qla2x00_alloc_host(scsi_qla_host_t *ha) + * Kernel context. + */ + static uint32_t +-qla2x00_add_portname_to_mp_dev(mp_device_t *dp, uint8_t *portname) ++qla2x00_add_portname_to_mp_dev(mp_device_t *dp, uint8_t *portname, uint8_t *nodename) + { + uint8_t index; + uint32_t rval = QLA2X00_SUCCESS; +@@ -1029,7 +1393,7 @@ qla2x00_allocate_mp_dev(uint8_t *nodena + */ + if (nodename) + { +- DEBUG3(printk("%s: copying node name %02x%02x%02x" ++ DEBUG(printk("%s: copying node name %02x%02x%02x" + "%02x%02x%02x%02x%02x.\n", + __func__, nodename[0], nodename[1], + nodename[2], nodename[3], nodename[4], +@@ -1305,137 +1669,1135 @@ qla2x00_found_hidden_path(mp_device_t *d + } + + /* +- * qla2x00_default_bind_mpdev ++ * qla2x00_get_wwuln_from_device ++ * Issue SCSI inquiry page code 0x83 command for LUN WWLUN_NAME. + * + * Input: +- * host = mp_host of current adapter +- * port = fc_port of current port ++ * ha = adapter block pointer. ++ * fcport = FC port structure pointer. + * +- * Returns: +- * mp_device pointer +- * NULL - not found. ++ * Return: ++ * 0 - Failed to get the lun_wwlun_name ++ * Otherwise : wwlun_size + * + * Context: + * Kernel context. + */ +-static inline mp_device_t * +-qla2x00_default_bind_mpdev(mp_host_t *host, fc_port_t *port) ++ ++static int ++qla2x00_get_wwuln_from_device(mp_host_t *host, fc_lun_t *fclun, ++ char *evpd_buf, int wwlun_size) + { +- /* Default search case */ +- int devid = 0; +- mp_device_t *temp_dp = NULL; /* temporary pointer */ +- mp_host_t *temp_host; /* temporary pointer */ + +- DEBUG3(printk("%s: entered.\n", __func__);) ++ evpd_inq_cmd_rsp_t *pkt; ++ int rval = 0 ; ++ dma_addr_t phys_address = 0; ++ int retry; ++ uint16_t comp_status; ++ uint16_t scsi_status; ++ scsi_qla_host_t *ha; ++ uint16_t next_loopid; + +- for (temp_host = mp_hosts_base; (temp_host); +- temp_host = temp_host->next) { +- for (devid = 0; devid < MAX_MP_DEVICES; devid++) { +- temp_dp = temp_host->mp_devs[devid]; ++ ENTER(__func__); ++ //printk("%s entered\n",__func__); + +- if (temp_dp == NULL) +- continue; + +- if (qla2x00_is_nodename_equal(temp_dp->nodename, +- port->node_name)) { +- DEBUG3(printk( +- "%s: Found matching dp @ host %p id %d:\n", +- __func__, temp_host, devid);) ++ if (atomic_read(&fclun->fcport->state) == FC_DEVICE_DEAD){ ++ DEBUG(printk("%s leaving: Port is marked DEAD\n",__func__);) ++ return rval; ++ } ++ ++ memset(evpd_buf, 0 ,wwlun_size); ++ ha = host->ha; ++ pkt = pci_alloc_consistent(ha->pdev, ++ sizeof(evpd_inq_cmd_rsp_t), &phys_address); ++ ++ if (pkt == NULL) { ++ printk(KERN_WARNING ++ "scsi(%ld): Memory Allocation failed - INQ\n", ++ ha->host_no); ++ ha->mem_err++; ++ return rval; ++ } ++ ++ retry = 2; ++ do { ++ memset(pkt, 0, sizeof(evpd_inq_cmd_rsp_t)); ++ pkt->p.cmd.entry_type = COMMAND_A64_TYPE; ++ pkt->p.cmd.entry_count = 1; ++ pkt->p.cmd.lun = cpu_to_le16(fclun->lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fclun->fcport->loop_id); ++#else ++ pkt->p.cmd.target = (uint8_t)fclun->fcport->loop_id; ++#endif ++ pkt->p.cmd.control_flags = ++ __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG); ++ pkt->p.cmd.scsi_cdb[0] = INQ_SCSI_OPCODE; ++ pkt->p.cmd.scsi_cdb[1] = INQ_EVPD_SET; ++ pkt->p.cmd.scsi_cdb[2] = INQ_DEV_IDEN_PAGE; ++ pkt->p.cmd.scsi_cdb[4] = VITAL_PRODUCT_DATA_SIZE; ++ pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1); ++ pkt->p.cmd.timeout = __constant_cpu_to_le16(10); ++ pkt->p.cmd.byte_count = ++ __constant_cpu_to_le32(VITAL_PRODUCT_DATA_SIZE); ++ pkt->p.cmd.dseg_0_address[0] = cpu_to_le32( ++ LSD(phys_address + sizeof(sts_entry_t))); ++ pkt->p.cmd.dseg_0_address[1] = cpu_to_le32( ++ MSD(phys_address + sizeof(sts_entry_t))); ++ pkt->p.cmd.dseg_0_length = ++ __constant_cpu_to_le32(VITAL_PRODUCT_DATA_SIZE); ++ ++ ++ rval = qla2x00_issue_iocb(ha, pkt, ++ phys_address, sizeof(evpd_inq_cmd_rsp_t)); ++ ++ comp_status = le16_to_cpu(pkt->p.rsp.comp_status); ++ scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status); ++ ++ DEBUG5(printk("%s: lun (%d) inquiry page 0x83- " ++ " comp status 0x%x, " ++ "scsi status 0x%x, rval=%d\n",__func__, ++ fclun->lun, comp_status, scsi_status, rval);) ++ ++ /* if port not logged in then try and login */ ++ if (fclun->lun == 0 && comp_status == CS_PORT_LOGGED_OUT && ++ atomic_read(&fclun->fcport->state) != FC_DEVICE_DEAD) { ++ if (fclun->fcport->flags & FC_FABRIC_DEVICE) { ++ /* login and update database */ ++ next_loopid = 0; ++ qla2x00_fabric_login(ha, fclun->fcport, ++ &next_loopid); ++ } else { ++ /* Loop device gone but no LIP... */ ++ rval = QL_STATUS_ERROR; + break; + } + } +- if (temp_dp != NULL) { +- /* found a match. */ +- break; ++ } while ((rval != QLA2X00_SUCCESS || ++ comp_status != CS_COMPLETE) && ++ retry--); ++ ++ if (rval == QLA2X00_SUCCESS && ++ pkt->inq[1] == INQ_DEV_IDEN_PAGE ) { ++ ++ if( pkt->inq[7] <= WWLUN_SIZE ){ ++ memcpy(evpd_buf,&pkt->inq[8], pkt->inq[7]); ++ DEBUG(printk("%s : Lun(%d) WWLUN size %d\n",__func__, ++ fclun->lun,pkt->inq[7]);) ++ } else { ++ memcpy(evpd_buf,&pkt->inq[8], WWLUN_SIZE); ++ printk(KERN_INFO "%s : Lun(%d) WWLUN may " ++ "not be complete, Buffer too small" ++ " need: %d provided: %d\n",__func__, ++ fclun->lun,pkt->inq[7],WWLUN_SIZE); + } +- } ++ rval = pkt->inq[7] ; /* lun wwlun_size */ ++ DEBUG3(qla2x00_dump_buffer(evpd_buf, rval);) + +- if (temp_dp) { +- DEBUG3(printk("%s(%ld): update mpdev " +- "on Matching node at dp %p. " +- "dev_id %d adding new port %p-%02x" +- "%02x%02x%02x%02x%02x%02x%02x\n", +- __func__, host->ha->host_no, +- temp_dp, devid, port, +- port->port_name[0], port->port_name[1], +- port->port_name[2], port->port_name[3], +- port->port_name[4], port->port_name[5], +- port->port_name[6], port->port_name[7]);) ++ } else { ++ if (scsi_status & SS_CHECK_CONDITION) { ++ /* ++ * ILLEGAL REQUEST - 0x05 ++ * INVALID FIELD IN CDB - 24 : 00 ++ */ ++ if(pkt->p.rsp.req_sense_data[2] == 0x05 && ++ pkt->p.rsp.req_sense_data[12] == 0x24 && ++ pkt->p.rsp.req_sense_data[13] == 0x00 ) { ++ ++ DEBUG(printk(KERN_INFO "%s Lun(%d) does not" ++ " support Inquiry Page Code-0x83\n", ++ __func__,fclun->lun);) ++ } else { ++ DEBUG(printk(KERN_INFO "%s Lun(%d) does not" ++ " support Inquiry Page Code-0x83\n", ++ __func__,fclun->lun);) ++ DEBUG(printk( KERN_INFO "Unhandled check " ++ "condition sense_data[2]=0x%x" ++ " sense_data[12]=0x%x " ++ "sense_data[13]=0x%x\n", ++ pkt->p.rsp.req_sense_data[2], ++ pkt->p.rsp.req_sense_data[12], ++ pkt->p.rsp.req_sense_data[13]);) ++ } + +- qla2x00_add_portname_to_mp_dev(temp_dp, +- port->port_name); ++ } else { ++ /* Unable to issue Inquiry Page 0x83 */ ++ DEBUG2(printk(KERN_INFO ++ "%s Failed to issue Inquiry Page 0x83 -- lun (%d) " ++ "cs=0x%x ss=0x%x, rval=%d\n", ++ __func__, fclun->lun, comp_status, scsi_status, ++ rval);) ++ } ++ rval = 0 ; ++ } + +- /* +- * Set the flag that we have +- * found the device. +- */ +- host->mp_devs[devid] = temp_dp; +- temp_dp->use_cnt++; ++ pci_free_consistent(ha->pdev, sizeof(evpd_inq_cmd_rsp_t), ++ pkt, phys_address); + +- /* Fixme(dg) +- * Copy the LUN info into +- * the mp_device_t +- */ +- } ++ //printk("%s exit\n",__func__); ++ LEAVE(__func__); + +- return (temp_dp); ++ return rval; + } + + /* +- * qla2x00_find_or_allocate_mp_dev +- * Look through the existing multipath control tree, and find +- * an mp_device_t with the supplied world-wide node name. If +- * one cannot be found, allocate one. +- * +- * Input: +- * host Adapter to add device to. +- * dev_id Index of device on adapter. +- * port port database information. ++ * qla2x00_find_matching_lunid ++ * Find the lun in the lun list that matches the ++ * specified wwu lun number. + * +- * Returns: +- * Pointer to new mp_device_t, or NULL if the allocation fails. ++ * Input: ++ * buf = buffer that contains the wwuln ++ * host = host to search for lun + * +- * Side Effects: +- * If the MP HOST does not already point to the mp_device_t, +- * a pointer is added at the proper port offset. ++ * Returns: ++ * NULL or pointer to lun + * + * Context: + * Kernel context. ++ * (dg) + */ +-static mp_device_t * +-qla2x00_find_or_allocate_mp_dev(mp_host_t *host, uint16_t dev_id, +- fc_port_t *port) ++static mp_lun_t * ++qla2x00_find_matching_lunid(char *buf) + { +- mp_device_t *dp = NULL; /* pointer to multi-path device */ +- BOOL node_found; /* Found matching node name. */ +- BOOL port_found; /* Found matching port name. */ +- BOOL names_valid; /* Node name and port name are not zero */ +- mp_host_t *temp_host; /* pointer to temporary host */ ++ int devid = 0; ++ mp_host_t *temp_host; /* temporary pointer */ ++ mp_device_t *temp_dp; /* temporary pointer */ ++ mp_lun_t *lun; + +- uint16_t j; +- mp_device_t *temp_dp; ++ //printk("%s: entered.\n", __func__); + +- ENTER("qla2x00_find_or_allocate_mp_dev"); ++ for (temp_host = mp_hosts_base; (temp_host); ++ temp_host = temp_host->next) { ++ for (devid = 0; devid < MAX_MP_DEVICES; devid++) { ++ temp_dp = temp_host->mp_devs[devid]; + +- DEBUG3(printk("%s(%ld): entered. host=%p, port =%p, dev_id = %d\n", +- __func__, host->ha->host_no, host, port, dev_id);) ++ if (temp_dp == NULL) ++ continue; + +- temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id); ++ for( lun = temp_dp->luns; lun != NULL ; ++ lun = lun->next ) { + +- DEBUG3(printk("%s: temp dp =%p\n", __func__, temp_dp);) +- /* if Device already known at this port. */ +- if (temp_dp != NULL) { +- node_found = qla2x00_is_nodename_equal(temp_dp->nodename, +- port->node_name); +- port_found = qla2x00_is_portname_in_device(temp_dp, +- port->port_name); ++ if (lun->siz > WWULN_SIZE ) ++ lun->siz = WWULN_SIZE; + +- if (node_found && port_found) { +- DEBUG3(printk("%s: mp dev %02x%02x%02x%02x%02x%02x" +- "%02x%02x exists on %p. dev id %d. path cnt=%d.\n", +- __func__, +- port->port_name[0], port->port_name[1], +- port->port_name[2], port->port_name[3], ++ if (memcmp(lun->wwuln, buf, lun->siz) == 0) ++ return lun; ++ } ++ } ++ } ++ return NULL; ++ ++} ++ ++#if 0 ++/* ++ * qla2x00_find_mp_dev_by_nn_and_pn ++ * Find the mp_dev for the specified target name. ++ * ++ * Input: ++ * host = host adapter pointer. ++ * name = Target name ++ * ++ * Returns: ++ * ++ * Context: ++ * Kernel context. ++ */ ++static mp_device_t * ++qla2x00_find_mp_dev_by_nn_and_pn(mp_host_t *host, ++ uint8_t *portname, uint8_t *nodename) ++{ ++ int id; ++ int idx; ++ mp_device_t *dp; ++ ++ for (id= 0; id < MAX_MP_DEVICES; id++) { ++ if ((dp = host->mp_devs[id] ) == NULL) ++ continue; ++ ++ for (idx = 0; idx < MAX_PATHS_PER_DEVICE; idx++) { ++ if (memcmp(&dp->nodenames[idx][0], nodename, WWN_SIZE) == 0 && ++ memcmp(&dp->portnames[idx][0], portname, WWN_SIZE) == 0 ) { ++ DEBUG3(printk("%s: Found matching device @ index %d:\n", ++ __func__, id);) ++ return dp; ++ } ++ } ++ } ++ ++ return NULL; ++} ++ ++/* ++ * qla2x00_is_nn_and_pn_in_device ++ * Find the mp_dev for the specified target name. ++ * ++ * Input: ++ * host = host adapter pointer. ++ * name = Target name ++ * ++ * Returns: ++ * ++ * Context: ++ * Kernel context. ++ */ ++static mp_device_t * ++qla2x00_is_nn_and_pn_in_device(mp_device_t *dp, ++ uint8_t *portname, uint8_t *nodename) ++{ ++ int idx; ++ ++ for (idx = 0; idx < MAX_PATHS_PER_DEVICE; idx++) { ++ if (memcmp(&dp->nodenames[idx][0], nodename, WWN_SIZE) == 0 && ++ memcmp(&dp->portnames[idx][0], portname, WWN_SIZE) == 0 ) { ++ DEBUG3(printk("%s: Found matching device @ index %d:\n", ++ __func__, id);) ++ return dp; ++ } ++ } ++ ++ return NULL; ++} ++#endif ++ ++/* ++ * qla2x00_export_target ++ * Look through the existing multipath control tree, and find ++ * an mp_lun_t with the supplied world-wide lun number. If ++ * one cannot be found, allocate one. ++ * ++ * Input: ++ * host Adapter to add device to. ++ * dev_id Index of device on adapter. ++ * port port database information. ++ * ++ * Returns: ++ * Pointer to new mp_device_t, or NULL if the allocation fails. ++ * ++ * Side Effects: ++ * If the MP HOST does not already point to the mp_device_t, ++ * a pointer is added at the proper port offset. ++ * ++ * Context: ++ * Kernel context. ++ */ ++int ++qla2x00_export_target( void *vhost, uint16_t dev_id, ++ fc_port_t *fcport, uint16_t pathid) ++{ ++ mp_host_t *host = (mp_host_t *) vhost; ++ mp_path_t *path; ++ mp_device_t *dp = NULL; ++ BOOL names_valid; /* Node name and port name are not zero */ ++ BOOL node_found; /* Found matching node name. */ ++ BOOL port_found; /* Found matching port name. */ ++ mp_device_t *temp_dp; ++ int i; ++ uint16_t new_id = dev_id; ++ uint16_t idx; ++ ++ DEBUG3(printk("%s(%ld): Entered. host=%p, fcport =%p, dev_id = %d\n", ++ __func__, host->ha->host_no, host, fcport, dev_id)); ++ ++ temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id); ++ ++ /* if Device already known at this port. */ ++ if (temp_dp != NULL) { ++ node_found = qla2x00_is_nodename_equal(temp_dp->nodename, ++ fcport->node_name); ++ port_found = qla2x00_is_portname_in_device(temp_dp, ++ fcport->port_name); ++ /* found */ ++ if (node_found && port_found) ++ dp = temp_dp; ++ ++ } ++ ++ ++ /* Sanity check the port information */ ++ names_valid = (!qla2x00_is_ww_name_zero(fcport->node_name) && ++ !qla2x00_is_ww_name_zero(fcport->port_name)); ++ ++ /* ++ * If the optimized check failed, loop through each known ++ * device on this known adapter looking for the node name. ++ */ ++ if (dp == NULL && names_valid) { ++ if( (temp_dp = qla2x00_find_mp_dev_by_portname(host, ++ fcport->port_name, &idx)) == NULL ) { ++ /* find a good index */ ++ for( i = dev_id; i < MAX_MP_DEVICES; i++ ) ++ if(host->mp_devs[i] == NULL ) { ++ new_id = i; ++ break; ++ } ++ } else if( temp_dp != NULL ) { /* found dp */ ++ if( qla2x00_is_nodename_equal(temp_dp->nodename, ++ fcport->node_name) ) { ++ new_id = temp_dp->dev_id; ++ dp = temp_dp; ++ } ++ } ++ } ++ ++ /* If we couldn't find one, allocate one. */ ++ if (dp == NULL && ++ ((fcport->flags & FC_CONFIG) || !mp_config_required)) { ++ ++ DEBUG2(printk("%s(%d): No match for WWPN. Creating new mpdev \n" ++ "node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->instance, ++ fcport->node_name[0], fcport->node_name[1], ++ fcport->node_name[2], fcport->node_name[3], ++ fcport->node_name[4], fcport->node_name[5], ++ fcport->node_name[6], fcport->node_name[7], ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7]);) ++ dp = qla2x00_allocate_mp_dev(fcport->node_name, ++ fcport->port_name); ++ ++ DEBUG2(printk("%s(%ld): (2) mp_dev[%d] update" ++ " with dp %p\n ", ++ __func__, host->ha->host_no, new_id, dp);) ++ host->mp_devs[new_id] = dp; ++ dp->dev_id = new_id; ++ dp->use_cnt++; ++ } ++ ++ /* ++ * We either have found or created a path list. Find this ++ * host's path in the path list or allocate a new one ++ * and add it to the list. ++ */ ++ if (dp == NULL) { ++ /* We did not create a mp_dev for this port. */ ++ fcport->mp_byte |= MP_MASK_UNCONFIGURED; ++ DEBUG2(printk("%s: Device NOT found or created at " ++ " dev_id=%d.\n", ++ __func__, dev_id);) ++ return FALSE; ++ } ++ ++ path = qla2x00_find_or_allocate_path(host, dp, dev_id, ++ pathid, fcport); ++ if (path == NULL) { ++ DEBUG2(printk("%s:Path NOT found or created.\n", ++ __func__);) ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++ ++/* ++ * qla2x00_combine_by_lunid ++ * Look through the existing multipath control tree, and find ++ * an mp_lun_t with the supplied world-wide lun number. If ++ * one cannot be found, allocate one. ++ * ++ * Input: ++ * host Adapter to add device to. ++ * dev_id Index of device on adapter. ++ * port port database information. ++ * ++ * Returns: ++ * Pointer to new mp_device_t, or NULL if the allocation fails. ++ * ++ * Side Effects: ++ * If the MP HOST does not already point to the mp_device_t, ++ * a pointer is added at the proper port offset. ++ * ++ * Context: ++ * Kernel context. ++ */ ++int ++qla2x00_combine_by_lunid( void *vhost, uint16_t dev_id, ++ fc_port_t *fcport, uint16_t pathid) ++{ ++ mp_host_t *host = (mp_host_t *) vhost; ++ int fail = 0; ++ mp_path_t *path; ++ mp_device_t *dp = NULL; ++ fc_lun_t *fclun; ++ mp_lun_t *lun; ++ BOOL names_valid; /* Node name and port name are not zero */ ++ mp_host_t *temp_host; /* pointer to temporary host */ ++ mp_device_t *temp_dp; ++ mp_port_t *port; ++ int l; ++ ++ ENTER("qla2x00_combine_by_lunid"); ++ //printk("Entering %s\n", __func__); ++ ++ /* ++ * Currently, not use because we create common nodename for ++ * the gui, so we can use the normal common namename processing. ++ */ ++ if (fcport->flags & FC_CONFIG) { ++ /* Search for device if not found create one */ ++ ++ temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id); ++ ++ /* if Device already known at this port. */ ++ if (temp_dp != NULL) { ++ DEBUG(printk("%s: Found an existing " ++ "dp %p- host %p inst=%d, fcport =%p, path id = %d\n", ++ __func__, temp_dp, host, host->instance, fcport, ++ pathid);) ++ if( qla2x00_is_portname_in_device(temp_dp, ++ fcport->port_name) ) { ++ ++ DEBUG2(printk("%s: mp dev %02x%02x%02x%02x%02x%02x" ++ "%02x%02x exists on %p. dev id %d. path cnt=%d.\n", ++ __func__, ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7], ++ temp_dp, dev_id, temp_dp->path_list->path_cnt);) ++ dp = temp_dp; ++ } ++ ++ } ++ ++ /* ++ * If the optimized check failed, loop through each known ++ * device on each known adapter looking for the node name ++ * and port name. ++ */ ++ if (dp == NULL) { ++ /* ++ * Loop through each potential adapter for the ++ * specified target (dev_id). If a device is ++ * found then add this port or use it. ++ */ ++ for (temp_host = mp_hosts_base; (temp_host); ++ temp_host = temp_host->next) { ++ /* user specifies the target via dev_id */ ++ temp_dp = temp_host->mp_devs[dev_id]; ++ if (temp_dp == NULL) { ++ continue; ++ } ++ if( qla2x00_is_portname_in_device(temp_dp, ++ fcport->port_name) ) { ++ dp = temp_dp; ++ } else { ++ qla2x00_add_portname_to_mp_dev( ++ temp_dp, fcport->port_name, ++ fcport->node_name); ++ dp = temp_dp; ++ host->mp_devs[dev_id] = dp; ++ dp->use_cnt++; ++ } ++ break; ++ } ++ } ++ ++ /* Sanity check the port information */ ++ names_valid = (!qla2x00_is_ww_name_zero(fcport->node_name) && ++ !qla2x00_is_ww_name_zero(fcport->port_name)); ++ ++ if (dp == NULL && names_valid && ++ ((fcport->flags & FC_CONFIG) || !mp_config_required) ) { ++ ++ DEBUG2(printk("%s(%ld): No match. adding new mpdev on " ++ "dev_id %d. node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, dev_id, ++ fcport->node_name[0], fcport->node_name[1], ++ fcport->node_name[2], fcport->node_name[3], ++ fcport->node_name[4], fcport->node_name[5], ++ fcport->node_name[6], fcport->node_name[7], ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7]);) ++ dp = qla2x00_allocate_mp_dev(fcport->node_name, ++ fcport->port_name); ++ ++ host->mp_devs[dev_id] = dp; ++ dp->dev_id = dev_id; ++ dp->use_cnt++; ++ } ++ ++ /* ++ * We either have found or created a path list. Find this ++ * host's path in the path list or allocate a new one ++ * and add it to the list. ++ */ ++ if (dp == NULL) { ++ /* We did not create a mp_dev for this port. */ ++ fcport->mp_byte |= MP_MASK_UNCONFIGURED; ++ DEBUG2(printk("%s: Device NOT found or created at " ++ " dev_id=%d.\n", ++ __func__, dev_id);) ++ return FALSE; ++ } ++ ++ /* ++ * Find the path in the current path list, or allocate ++ * a new one and put it in the list if it doesn't exist. ++ * Note that we do NOT set bSuccess to FALSE in the case ++ * of failure here. We must tolerate the situation where ++ * the customer has more paths to a device than he can ++ * get into a PATH_LIST. ++ */ ++ path = qla2x00_find_or_allocate_path(host, dp, dev_id, ++ pathid, fcport); ++ if (path == NULL) { ++ DEBUG2(printk("%s:Path NOT found or created.\n", ++ __func__);) ++ return FALSE; ++ } ++ ++ ++ /* Set the PATH flag to match the device flag ++ * of whether this device needs a relogin. If any ++ * device needs relogin, set the relogin countdown. ++ */ ++ path->config = TRUE; ++ ++ ++ } else { ++ if (mp_initialized && ++ (fcport->flags & FC_MSA_DEVICE) ){ ++ qla2x00_test_active_port(fcport); ++ } ++ list_for_each_entry(fclun, &fcport->fcluns, list) { ++ lun = qla2x00_find_or_allocate_lun(host, dev_id, ++ fcport, fclun); ++ if( lun == NULL ) { ++ fail++; ++ continue; ++ } ++ /* ++ * Find the path in the current path list, or allocate ++ * a new one and put it in the list if it doesn't exist. ++ */ ++ dp = lun->dp; ++ if( fclun->mplun == NULL ) ++ fclun->mplun = lun; ++ path = qla2x00_find_or_allocate_path(host, dp, ++ dp->dev_id, pathid, fcport); ++ if (path == NULL || dp == NULL) { ++ fail++; ++ continue; ++ } ++ ++ /* set the lun active flag */ ++ if (mp_initialized && ++ (fcport->flags & FC_EVA_DEVICE) ) { ++ qla2x00_test_active_lun( ++ path->port, fclun ); ++ } ++ ++ /* Add fclun to path list */ ++ if (lun->paths[path->id] == NULL) { ++ lun->paths[path->id] = fclun; ++ DEBUG2(printk("Updated path[%d]= %p for lun %p\n", ++ path->id, fclun, lun);) ++ lun->path_cnt++; ++ } ++ ++ /* ++ * if we have a visible lun then make ++ * the target visible as well ++ */ ++ l = lun->number; ++ if( (fclun->flags & FC_VISIBLE_LUN) ) { ++ if (dp->path_list->visible == ++ PATH_INDEX_INVALID) { ++ dp->path_list->visible = path->id; ++ DEBUG2(printk("%s: dp %p setting " ++ "visible id to %d\n", ++ __func__,dp,path->id );) ++ } ++ dp->path_list->current_path[l] = path->id; ++ path->lun_data.data[l] |= LUN_DATA_PREFERRED_PATH; ++ DEBUG2(printk("%s: Found a controller path 0x%x " ++ "- lun %d\n", __func__, path->id,l);) ++ } else if (mp_initialized) { ++ /* ++ * Whenever a port or lun is "active" ++ * then force it to be a preferred path. ++ */ ++ if (qla2x00_find_first_active_path(dp, lun) ++ == path ){ ++ dp->path_list->current_path[l] = ++ path->id; ++ path->lun_data.data[l] |= ++ LUN_DATA_PREFERRED_PATH; ++ DEBUG2(printk( ++ "%s: Found preferred lun at loopid=0x%02x, lun=%d, pathid=%d\n", ++ __func__, fcport->loop_id, l, path->id);) ++ } ++ } ++ ++ /* if (port->flags & FC_CONFIG) ++ path->config = TRUE; */ ++ ++ port = qla2x00_find_or_allocate_port(host, lun, path); ++ if (port == NULL) { ++ fail++; ++ continue; ++ } ++ } ++ } ++ ++ if (fail) ++ return FALSE; ++ return TRUE; ++} ++ ++#if 0 ++/* ++ * qla2x00_find_or_allocate_mp_dev ++ * Look through the existing multipath control tree, and find ++ * an mp_device_t with the supplied world-wide node name. If ++ * one cannot be found, allocate one. ++ * ++ * Input: ++ * host Adapter to add device to. ++ * dev_id Index of device on adapter. ++ * port port database information. ++ * ++ * Returns: ++ * Pointer to new mp_device_t, or NULL if the allocation fails. ++ * ++ * Side Effects: ++ * If the MP HOST does not already point to the mp_device_t, ++ * a pointer is added at the proper port offset. ++ * ++ * Context: ++ * Kernel context. ++ */ ++static mp_device_t * ++qla2x00_find_or_allocate_mp_dev(mp_host_t *host, uint16_t dev_id, ++ fc_port_t *port) ++{ ++ mp_device_t *dp = NULL; /* pointer to multi-path device */ ++ BOOL node_found; /* Found matching node name. */ ++ BOOL port_found; /* Found matching port name. */ ++ BOOL names_valid; /* Node name and port name are not zero */ ++ mp_host_t *temp_host; /* pointer to temporary host */ ++ ++ uint16_t j; ++ mp_device_t *temp_dp; ++ ++ ENTER("qla2x00_find_or_allocate_mp_dev"); ++ ++ DEBUG3(printk("%s(%ld): entered. host=%p, port =%p, dev_id = %d\n", ++ __func__, host->ha->host_no, host, port, dev_id);) ++ ++ temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id); ++ ++ DEBUG3(printk("%s: temp dp =%p\n", __func__, temp_dp);) ++ /* if Device already known at this port. */ ++ if (temp_dp != NULL) { ++ node_found = qla2x00_is_nodename_equal(temp_dp->nodename, ++ port->node_name); ++ port_found = qla2x00_is_portname_in_device(temp_dp, ++ port->port_name); ++ ++ if (node_found && port_found) { ++ DEBUG3(printk("%s: mp dev %02x%02x%02x%02x%02x%02x" ++ "%02x%02x exists on %p. dev id %d. path cnt=%d.\n", ++ __func__, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7], ++ temp_dp, dev_id, temp_dp->path_list->path_cnt);) ++ dp = temp_dp; ++ ++ /* ++ * Copy the LUN configuration data ++ * into the mp_device_t. ++ */ ++ } ++ } ++ ++ ++ /* Sanity check the port information */ ++ names_valid = (!qla2x00_is_ww_name_zero(port->node_name) && ++ !qla2x00_is_ww_name_zero(port->port_name)); ++ ++ /* ++ * If the optimized check failed, loop through each known ++ * device on each known adapter looking for the node name. ++ */ ++ if (dp == NULL && names_valid) { ++ DEBUG3(printk("%s: Searching each adapter for the device...\n", ++ __func__);) ++ ++ /* Check for special cases. */ ++ if (port->flags & FC_CONFIG) { ++ /* Here the search is done only for ports that ++ * are found in config file, so we can count on ++ * mp_byte value when binding the paths. ++ */ ++ DEBUG3(printk("%s(%ld): mpbyte=%02x process configured " ++ "portname=%02x%02x%02x%02x%02x%02x%02x%02x.\n", ++ __func__, host->ha->host_no, port->mp_byte, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ DEBUG3(printk("%s(%ld): nodename %02x%02x%02x%02x%02x" ++ "%02x%02x%02x.\n", ++ __func__, host->ha->host_no, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7]);) ++ ++ if (port->mp_byte == 0) { ++ DEBUG3(printk("%s(%ld): port visible.\n", ++ __func__, host->ha->host_no);) ++ ++ /* This device in conf file is set to visible */ ++ for (temp_host = mp_hosts_base; (temp_host); ++ temp_host = temp_host->next) { ++ /* Search all hosts with given tgt id ++ * for any previously created dp with ++ * matching node name. ++ */ ++ temp_dp = temp_host->mp_devs[dev_id]; ++ if (temp_dp == NULL) { ++ continue; ++ } ++ ++ node_found = ++ qla2x00_is_nodename_equal( ++ temp_dp->nodename, port->node_name); ++ ++ if (node_found && ++ qla2x00_found_hidden_path( ++ temp_dp)) { ++ DEBUG3(printk( ++ "%s(%ld): found " ++ "mpdev of matching " ++ "node %02x%02x%02x" ++ "%02x%02x%02x%02x" ++ "%02x w/ hidden " ++ "paths. dp=%p " ++ "dev_id=%d.\n", ++ __func__, ++ host->ha->host_no, ++ port->port_name[0], ++ port->port_name[1], ++ port->port_name[2], ++ port->port_name[3], ++ port->port_name[4], ++ port->port_name[5], ++ port->port_name[6], ++ port->port_name[7], ++ temp_dp, dev_id);) ++ /* ++ * Found the mpdev. ++ * Treat this same as default ++ * case by adding this port ++ * to this mpdev which has same ++ * nodename. ++ */ ++ qla2x00_add_portname_to_mp_dev( ++ temp_dp, port->port_name, port->node_name); ++ dp = temp_dp; ++ host->mp_devs[dev_id] = dp; ++ dp->use_cnt++; ++ ++ break; ++ } ++ } ++ ++ } else if (port->mp_byte & MP_MASK_OVERRIDE) { ++ /* Bind on port name */ ++ DEBUG3(printk( ++ "%s(%ld): port has override bit.\n", ++ __func__, host->ha->host_no);) ++ ++ temp_dp = qla2x00_find_dp_by_pn_from_all_hosts( ++ port->port_name, &j); ++ ++ if (temp_dp) { ++ /* Found match */ ++ DEBUG3(printk("%s(%ld): update mpdev " ++ "on Matching port %02x%02x%02x" ++ "%02x%02x%02x%02x%02x " ++ "dp %p dev_id %d\n", ++ __func__, host->ha->host_no, ++ port->port_name[0], ++ port->port_name[1], ++ port->port_name[2], ++ port->port_name[3], ++ port->port_name[4], ++ port->port_name[5], ++ port->port_name[6], ++ port->port_name[7], ++ temp_dp, j);) ++ /* ++ * Bind this port to this mpdev of the ++ * matching port name. ++ */ ++ dp = temp_dp; ++ host->mp_devs[j] = dp; ++ dp->use_cnt++; ++ } ++ } else { ++ DEBUG3(printk("%s(%ld): default case.\n", ++ __func__, host->ha->host_no);) ++ /* Default case. Search and bind/add this ++ * port to the mp_dev with matching node name ++ * if it is found. ++ */ ++ dp = qla2x00_default_bind_mpdev(host, port); ++ } ++ ++ } else { ++ DEBUG3(printk("%s(%ld): process discovered port " ++ "%02x%02x%02x%02x%02x%02x%02x%02x.\n", ++ __func__, host->ha->host_no, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ DEBUG3(printk("%s(%ld): nodename %02x%02x%02x%02x%02x" ++ "%02x%02x%02x.\n", ++ __func__, host->ha->host_no, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7]);) ++ ++ /* Here we try to find the mp_dev pointer for the ++ * current port in the current host, which would ++ * have been created if the port was specified in ++ * the config file. To be sure the mp_dev we found ++ * really is for the current port, we check the ++ * node name to make sure it matches also. ++ * When we find a previously created mp_dev pointer ++ * for the current port, just return the pointer. ++ * We proceed to add this port to an mp_dev of ++ * the matching node name only if it is not found in ++ * the mp_dev list already created and ConfigRequired ++ * is not set. ++ */ ++ temp_dp = qla2x00_find_mp_dev_by_portname(host, ++ port->port_name, &j); ++ ++ if (temp_dp && qla2x00_is_nodename_equal( ++ temp_dp->nodename, port->node_name)) { ++ /* Found match. This mpdev port was created ++ * from config file entry. ++ */ ++ DEBUG3(printk("%s(%ld): update mpdev " ++ "on Matching port %02x%02x%02x" ++ "%02x%02x%02x%02x%02x " ++ "dp %p dev_id %d\n", ++ __func__, host->ha->host_no, ++ port->port_name[0], ++ port->port_name[1], ++ port->port_name[2], ++ port->port_name[3], ++ port->port_name[4], ++ port->port_name[5], ++ port->port_name[6], ++ port->port_name[7], ++ temp_dp, j);) ++ ++ dp = temp_dp; ++ } else if (!mp_config_required) { ++ ++ DEBUG3(printk("%s(%ld): default case.\n", ++ __func__, host->ha->host_no);) ++ /* Default case. Search and bind/add this ++ * port to the mp_dev with matching node name ++ * if it is found. ++ */ ++ dp = qla2x00_default_bind_mpdev(host, port); ++ } ++ } ++ } ++ ++ /* If we couldn't find one, allocate one. */ ++ if (dp == NULL && ++ ((port->flags & FC_CONFIG) || !mp_config_required)) { ++ ++ DEBUG3(printk("%s(%ld): No match. adding new mpdev on " ++ "dev_id %d. node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, dev_id, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7], ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ dp = qla2x00_allocate_mp_dev(port->node_name, port->port_name); ++ ++#ifdef QL_DEBUG_LEVEL_2 ++ if (host->mp_devs[dev_id] != NULL) { ++ printk(KERN_WARNING ++ "qla2x00: invalid/unsupported configuration found. " ++ "overwriting target id %d.\n", ++ dev_id); ++ } ++#endif ++ host->mp_devs[dev_id] = dp; ++ dp->dev_id = dev_id; ++ dp->use_cnt++; ++ } ++ ++ DEBUG3(printk("%s(%ld): exiting. return dp=%p.\n", ++ __func__, host->ha->host_no, dp);) ++ LEAVE("qla2x00_find_or_allocate_mp_dev"); ++ ++ return dp; ++} ++#endif ++ ++/* ++ * qla2x00_default_bind_mpdev ++ * ++ * Input: ++ * host = mp_host of current adapter ++ * port = fc_port of current port ++ * ++ * Returns: ++ * mp_device pointer ++ * NULL - not found. ++ * ++ * Context: ++ * Kernel context. ++ */ ++static inline mp_device_t * ++qla2x00_default_bind_mpdev(mp_host_t *host, fc_port_t *port) ++{ ++ /* Default search case */ ++ int devid = 0; ++ mp_device_t *temp_dp = NULL; /* temporary pointer */ ++ mp_host_t *temp_host; /* temporary pointer */ ++ ++ DEBUG3(printk("%s: entered.\n", __func__);) ++ ++ for (temp_host = mp_hosts_base; (temp_host); ++ temp_host = temp_host->next) { ++ for (devid = 0; devid < MAX_MP_DEVICES; devid++) { ++ temp_dp = temp_host->mp_devs[devid]; ++ ++ if (temp_dp == NULL) ++ continue; ++ ++ if (qla2x00_is_nodename_equal(temp_dp->nodename, ++ port->node_name)) { ++ DEBUG3(printk( ++ "%s: Found matching dp @ host %p id %d:\n", ++ __func__, temp_host, devid);) ++ break; ++ } ++ } ++ if (temp_dp != NULL) { ++ /* found a match. */ ++ break; ++ } ++ } ++ ++ if (temp_dp) { ++ DEBUG3(printk("%s(%ld): update mpdev " ++ "on Matching node at dp %p. " ++ "dev_id %d adding new port %p-%02x" ++ "%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, ++ temp_dp, devid, port, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ ++ if (!qla2x00_is_portname_in_device(temp_dp, ++ port->port_name)) { ++ qla2x00_add_portname_to_mp_dev(temp_dp, ++ port->port_name, port->node_name); ++ } ++ ++ /* ++ * Set the flag that we have ++ * found the device. ++ */ ++ host->mp_devs[devid] = temp_dp; ++ temp_dp->use_cnt++; ++ ++ /* Fixme(dg) ++ * Copy the LUN info into ++ * the mp_device_t ++ */ ++ } ++ ++ return (temp_dp); ++} ++ ++/* ++ * qla2x00_find_or_allocate_mp_dev ++ * Look through the existing multipath control tree, and find ++ * an mp_device_t with the supplied world-wide node name. If ++ * one cannot be found, allocate one. ++ * ++ * Input: ++ * host Adapter to add device to. ++ * dev_id Index of device on adapter. ++ * port port database information. ++ * ++ * Returns: ++ * Pointer to new mp_device_t, or NULL if the allocation fails. ++ * ++ * Side Effects: ++ * If the MP HOST does not already point to the mp_device_t, ++ * a pointer is added at the proper port offset. ++ * ++ * Context: ++ * Kernel context. ++ */ ++static mp_device_t * ++qla2x00_find_or_allocate_mp_dev(mp_host_t *host, uint16_t dev_id, ++ fc_port_t *port) ++{ ++ mp_device_t *dp = NULL; /* pointer to multi-path device */ ++ BOOL node_found; /* Found matching node name. */ ++ BOOL port_found; /* Found matching port name. */ ++ BOOL names_valid; /* Node name and port name are not zero */ ++ mp_host_t *temp_host; /* pointer to temporary host */ ++ ++ uint16_t j; ++ mp_device_t *temp_dp; ++ ++ ENTER("qla2x00_find_or_allocate_mp_dev"); ++ ++ DEBUG3(printk("%s(%ld): entered. host=%p, port =%p, dev_id = %d\n", ++ __func__, host->ha->host_no, host, port, dev_id);) ++ ++ temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id); ++ ++ DEBUG3(printk("%s: temp dp =%p\n", __func__, temp_dp);) ++ /* if Device already known at this port. */ ++ if (temp_dp != NULL) { ++ node_found = qla2x00_is_nodename_equal(temp_dp->nodename, ++ port->node_name); ++ port_found = qla2x00_is_portname_in_device(temp_dp, ++ port->port_name); ++ ++ if (node_found && port_found) { ++ DEBUG3(printk("%s: mp dev %02x%02x%02x%02x%02x%02x" ++ "%02x%02x exists on %p. dev id %d. path cnt=%d.\n", ++ __func__, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], + port->port_name[4], port->port_name[5], + port->port_name[6], port->port_name[7], + temp_dp, dev_id, temp_dp->path_list->path_cnt);) +@@ -1448,7 +2810,6 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + } + } + +- + /* Sanity check the port information */ + names_valid = (!qla2x00_is_ww_name_zero(port->node_name) && + !qla2x00_is_ww_name_zero(port->port_name)); +@@ -1526,11 +2887,17 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + temp_dp, dev_id);) + /* + * Found the mpdev. +- * Treat this same as +- * default case. ++ * Treat this same as default ++ * case by adding this port ++ * to this mpdev which has same ++ * nodename. + */ ++ if (!qla2x00_is_portname_in_device( ++ temp_dp, port->port_name)) { + qla2x00_add_portname_to_mp_dev( +- temp_dp, port->port_name); ++ temp_dp, port->port_name, port->node_name); ++ } ++ + dp = temp_dp; + host->mp_devs[dev_id] = dp; + dp->use_cnt++; +@@ -1565,8 +2932,8 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + port->port_name[7], + temp_dp, j);) + /* +- * Set the flag that we have +- * found the device. ++ * Bind this port to this mpdev of the ++ * matching port name. + */ + dp = temp_dp; + host->mp_devs[j] = dp; +@@ -1575,8 +2942,9 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + } else { + DEBUG3(printk("%s(%ld): default case.\n", + __func__, host->ha->host_no);) +- /* Default case. Search and bind mp_dev with +- * matching node name. ++ /* Default case. Search and bind/add this ++ * port to the mp_dev with matching node name ++ * if it is found. + */ + dp = qla2x00_default_bind_mpdev(host, port); + } +@@ -1597,22 +2965,29 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + port->node_name[4], port->node_name[5], + port->node_name[6], port->node_name[7]);) + +- /* Here we try to match ports found to any previously +- * built mp_dev list. mp_byte value is not valid yet. +- * First search for matching port name in current +- * host. This is necessary in case the port name was +- * specified in the config file with the override +- * bit and saved in our mpdev tree already. ++ /* Here we try to find the mp_dev pointer for the ++ * current port in the current host, which would ++ * have been created if the port was specified in ++ * the config file. To be sure the mp_dev we found ++ * really is for the current port, we check the ++ * node name to make sure it matches also. ++ * When we find a previously created mp_dev pointer ++ * for the current port, just return the pointer. ++ * We proceed to add this port to an mp_dev of ++ * the matching node name only if it is not found in ++ * the mp_dev list already created and ConfigRequired ++ * is not set. + */ + temp_dp = qla2x00_find_mp_dev_by_portname(host, + port->port_name, &j); + +- if (temp_dp) { ++ if (temp_dp && qla2x00_is_nodename_equal( ++ temp_dp->nodename, port->node_name)) { + /* Found match. This mpdev port was created +- * from config file. ++ * from config file entry. + */ +- DEBUG3(printk("%s(%ld): update mpdev " +- "on Matching port %02x%02x%02x" ++ DEBUG3(printk("%s(%ld): found mpdev " ++ "created for current port %02x%02x%02x" + "%02x%02x%02x%02x%02x " + "dp %p dev_id %d\n", + __func__, host->ha->host_no, +@@ -1631,8 +3006,9 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + + DEBUG3(printk("%s(%ld): default case.\n", + __func__, host->ha->host_no);) +- /* Default case. Search and bind mp_dev with +- * matching node name. ++ /* Default case. Search and bind/add this ++ * port to the mp_dev with matching node name ++ * if it is found. + */ + dp = qla2x00_default_bind_mpdev(host, port); + } +@@ -1678,6 +3054,7 @@ qla2x00_find_or_allocate_mp_dev(mp_host_ + } + + ++ + /* + * qla2x00_find_or_allocate_path + * Look through the path list for the supplied device, and either +@@ -1796,21 +3173,32 @@ qla2x00_find_or_allocate_path(mp_host_t + + /* Update port with bitmask info */ + path = qla2x00_allocate_path(host, id, port, dev_id); +- DEBUG3(printk("%s: allocated new path %p, adding " +- "path id %d, mp_byte=0x%x " +- "port=%p-%02x%02x%02x%02x%02x%02x%02x%02x\n", +- __func__, path, id, +- path->mp_byte, +- path->port, +- path->port->port_name[0], path->port->port_name[1], +- path->port->port_name[2], path->port->port_name[3], +- path->port->port_name[4], path->port->port_name[5], +- path->port->port_name[6], path->port->port_name[7] +- );) +- qla2x00_add_path(path_list, path); ++ if (path) { ++#if defined(QL_DEBUG_LEVEL_3) ++ printk("%s: allocated new path %p, adding path " ++ "id %d, mp_byte=0x%x\n", __func__, path, id, ++ path->mp_byte); ++ if (path->port) ++ printk( "port=%p-" ++ "%02x%02x%02x%02x%02x%02x%02x%02x\n" ++ , path->port, ++ path->port->port_name[0], ++ path->port->port_name[1], ++ path->port->port_name[2], ++ path->port->port_name[3], ++ path->port->port_name[4], ++ path->port->port_name[5], ++ path->port->port_name[6], ++ path->port->port_name[7]); ++#endif ++ qla2x00_add_path(path_list, path); + +- /* Reconcile the new path against the existing ones. */ +- qla2x00_setup_new_path(dp, path); ++ /* ++ * Reconcile the new path against the ++ * existing ones. ++ */ ++ qla2x00_setup_new_path(dp, path, port); ++ } + } else { + /* EMPTY */ + DEBUG4(printk("%s: Err exit, no space to add path.\n", +@@ -1824,6 +3212,264 @@ qla2x00_find_or_allocate_path(mp_host_t + return path; + } + ++/* ++ * qla2x00_find_or_allocate_lun ++ * Look through the existing multipath control tree, and find ++ * an mp_lun_t with the supplied world-wide lun number. If ++ * one cannot be found, allocate one. ++ * ++ * Input: ++ * host Adapter (lun) for the device. ++ * fclun Lun data from port database. ++ * ++ * Returns: ++ * Pointer to new LUN, or NULL if the allocation fails. ++ * ++ * Side Effects: ++ * 1. If the LUN_LIST does not already point to the LUN, ++ * a new LUN is added to the LUN_LIST. ++ * 2. If the DEVICE_LIST does not already point to the DEVICE, ++ * a new DEVICE is added to the DEVICE_LIST. ++ * ++ * Context: ++ * Kernel context. ++ */ ++/* ARGSUSED */ ++static mp_lun_t * ++qla2x00_find_or_allocate_lun(mp_host_t *host, uint16_t dev_id, ++ fc_port_t *port, fc_lun_t *fclun) ++{ ++ mp_lun_t *lun = NULL; ++ mp_device_t *dp = NULL; ++#if 0 ++ mp_device_t *temp_dp = NULL; ++#endif ++ uint16_t len; ++ uint16_t idx; ++ uint16_t new_id = dev_id; ++ char wwulnbuf[WWULN_SIZE]; ++ int new_dev = 0; ++ int i; ++ ++ ++ ENTER("qla2x00_find_or_allocate_lun"); ++ DEBUG(printk("Entering %s\n", __func__);) ++ ++ if( fclun == NULL ) ++ return NULL; ++ ++ DEBUG2(printk("%s: " ++ " lun num=%d fclun %p mplun %p hba inst=%d, port =%p, dev id = %d\n", ++ __func__, fclun->lun, fclun, fclun->mplun, host->instance, port, ++ dev_id);) ++ /* ++ * Perform inquiry page 83 to get the wwuln or ++ * use what was specified by the user. ++ */ ++ if ( (port->flags & FC_CONFIG) ) { ++ if( (len = fclun->mplen) != 0 ) ++ memcpy(wwulnbuf, fclun->mpbuf, len); ++ } else { ++ len = qla2x00_get_wwuln_from_device(host, fclun, ++ &wwulnbuf[0], WWULN_SIZE); ++ /* if fail to do the inq then exit */ ++ if( len == 0 ) { ++ return lun; ++ } ++ } ++ ++ if( len != 0 ) ++ lun = qla2x00_find_matching_lunid(wwulnbuf); ++ ++ /* ++ * If this is a visible "controller" lun and ++ * it is already exists on somewhere world wide ++ * then allocate a new device, so it can be ++ * exported it to the OS. ++ */ ++ if( (fclun->flags & FC_VISIBLE_LUN) && ++ lun != NULL ) { ++ if( fclun->mplun == NULL ) { ++ lun = NULL; ++ new_dev++; ++ DEBUG2(printk("%s: Creating visible lun " ++ "lun %p num %d fclun %p mplun %p inst=%d, port =%p, dev id = %d\n", ++ __func__, lun, fclun->lun, fclun, fclun->mplun, host->instance, port, ++ dev_id);) ++ } else { ++ lun = fclun->mplun; ++ return lun; ++ } ++ } ++ ++ if (lun != NULL ) { ++ DEBUG(printk("%s: Found an existing " ++ "lun %p num %d fclun %p host %p inst=%d, port =%p, dev id = %d\n", ++ __func__, lun, fclun->lun, fclun, host, host->instance, port, ++ dev_id);) ++ if( (dp = lun->dp ) == NULL ) { ++ printk("NO dp pointer in alloacted lun\n"); ++ return NULL; ++ } ++ DEBUG(printk("%s(%ld): lookup portname for lun->dp = " ++ "dev_id %d. dp=%p node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, dp->dev_id, dp, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7], ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ ++#if 1 ++ if( qla2x00_is_portname_in_device(dp, ++ port->port_name) ) { ++ ++ DEBUG(printk("%s: Found portname %02x%02x%02x%02x%02x%02x" ++ "%02x%02x match in mp_dev[%d] = %p\n", ++ __func__, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7], ++ dp->dev_id, dp);) ++ if(host->mp_devs[dp->dev_id] == NULL ) { ++ host->mp_devs[dp->dev_id] = dp; ++ dp->use_cnt++; ++ } ++ } else { ++ DEBUG(printk("%s(%ld): MP_DEV no-match on portname. adding new port - " ++ "dev_id %d. node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, dev_id, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7], ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ ++ qla2x00_add_portname_to_mp_dev(dp, ++ port->port_name, port->node_name); ++ ++ DEBUG2(printk("%s(%ld): (1) Added portname and mp_dev[%d] update" ++ " with dp %p\n ", ++ __func__, host->ha->host_no, dp->dev_id, dp);) ++ if(host->mp_devs[dp->dev_id] == NULL ) { ++ host->mp_devs[dp->dev_id] = dp; ++ dp->use_cnt++; ++ } ++ } ++#else ++ if( (temp_dp = qla2x00_find_mp_dev_by_portname(host, ++ port->port_name, &idx)) == NULL ) { ++ DEBUG(printk("%s(%ld): MP_DEV no-match on portname. adding new port on " ++ "dev_id %d. node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, dev_id, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7], ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ ++ qla2x00_add_portname_to_mp_dev(dp, ++ port->port_name, port->node_name); ++ ++ DEBUG(printk("%s(%ld): (1) Added portname and mp_dev[%d] update" ++ " with dp %p\n ", ++ __func__, host->ha->host_no, dp->dev_id, dp);) ++ if(host->mp_devs[dp->dev_id] == NULL ) { ++ host->mp_devs[dp->dev_id] = dp; ++ dp->use_cnt++; ++ } ++ } else if( dp == temp_dp ){ ++ DEBUG3(printk("%s(%ld): MP_DEV %p match with portname @ " ++ " mp_dev[%d]. " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, temp_dp, idx, ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ ++ host->mp_devs[idx] = temp_dp; ++ dp->use_cnt++; ++ } ++#endif ++ } else { ++ DEBUG(printk("%s: MP_lun %d not found " ++ "for fclun %p inst=%d, port =%p, dev id = %d\n", ++ __func__, fclun->lun, fclun, host->instance, port, ++ dev_id);) ++ ++ if( (dp = qla2x00_find_mp_dev_by_portname(host, ++ port->port_name, &idx)) == NULL || new_dev ) { ++ DEBUG2(printk("%s(%ld): No match for WWPN. Creating new mpdev \n" ++ "node %02x%02x%02x%02x%02x%02x%02x%02x " ++ "port %02x%02x%02x%02x%02x%02x%02x%02x\n", ++ __func__, host->ha->host_no, ++ port->node_name[0], port->node_name[1], ++ port->node_name[2], port->node_name[3], ++ port->node_name[4], port->node_name[5], ++ port->node_name[6], port->node_name[7], ++ port->port_name[0], port->port_name[1], ++ port->port_name[2], port->port_name[3], ++ port->port_name[4], port->port_name[5], ++ port->port_name[6], port->port_name[7]);) ++ dp = qla2x00_allocate_mp_dev(port->node_name, ++ port->port_name); ++ /* find a good index */ ++ for( i = dev_id; i < MAX_MP_DEVICES; i++ ) ++ if(host->mp_devs[i] == NULL ) { ++ new_id = i; ++ break; ++ } ++ } else if( dp != NULL ) { /* found dp */ ++ new_id = dp->dev_id; ++ } ++ ++ if( dp != NULL ) { ++ DEBUG2(printk("%s(%ld): (2) mp_dev[%d] update" ++ " with dp %p\n ", ++ __func__, host->ha->host_no, new_id, dp);) ++ host->mp_devs[new_id] = dp; ++ dp->dev_id = new_id; ++ dp->use_cnt++; ++ ++ lun = (mp_lun_t *) KMEM_ZALLOC(sizeof(mp_lun_t), 24); ++ if (lun != NULL) { ++ DEBUG(printk("Added lun %p to dp %p lun number %d\n", ++ lun, dp, fclun->lun);) ++ DEBUG(qla2x00_dump_buffer(wwulnbuf, len);) ++ memcpy(lun->wwuln, wwulnbuf, len); ++ lun->siz = len; ++ lun->number = fclun->lun; ++ lun->dp = dp; ++ qla2x00_add_lun(dp, lun); ++ INIT_LIST_HEAD(&lun->ports_list); ++ } ++ } ++ else ++ printk(KERN_WARNING ++ "qla2x00: Couldn't get memory for dp. \n"); ++ } ++ ++ DEBUG(printk("Exiting %s\n", __func__);) ++ LEAVE("qla2x00_find_or_allocate_lun"); ++ ++ return lun; ++} ++ ++ + static uint32_t + qla2x00_cfg_register_failover_lun(mp_device_t *dp, srb_t *sp, fc_lun_t *new_lp) + { +@@ -1832,7 +3478,7 @@ qla2x00_cfg_register_failover_lun(mp_dev + os_lun_t *lq; + fc_lun_t *old_lp; + +- DEBUG2(printk(KERN_INFO "%s: NEW fclun = %p, sp = %p\n", ++ DEBUG(printk(KERN_INFO "%s: NEW fclun = %p, sp = %p\n", + __func__, new_lp, sp);) + + /* +@@ -1919,8 +3565,16 @@ qla2x00_send_failover_notify(mp_device_t + + ENTER("qla2x00_send_failover_notify"); + +- old_lp = qla2x00_find_matching_lun(lun, oldpath); +- new_lp = qla2x00_find_matching_lun(lun, newpath); ++ if( (old_lp = qla2x00_find_matching_lun(lun, dp, oldpath)) == NULL ) { ++ DEBUG2(printk(KERN_INFO "%s: Failed to get old lun %p, %d\n", ++ __func__, old_lp,lun);) ++ return QLA2X00_FUNCTION_FAILED; ++ } ++ if( (new_lp = qla2x00_find_matching_lun(lun, dp, newpath)) == NULL ) { ++ DEBUG2(printk(KERN_INFO "%s: Failed to get new lun %p,%d\n", ++ __func__, new_lp,lun);) ++ return QLA2X00_FUNCTION_FAILED; ++ } + + /* + * If the target is the same target, but a new HBA has been selected, +@@ -1981,27 +3635,240 @@ qla2x00_send_failover_notify(mp_device_t + "lun=(%d).\n", __func__, lun);) + } + } +- } else if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_SPINUP ){ ++ } else if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_SPINUP || ++ old_lp->fcport->notify_type == FO_NOTIFY_TYPE_SPINUP ){ ++ ++ status = qla2x00_send_fo_notification(old_lp, new_lp); ++ if (status == QLA2X00_SUCCESS) { ++ /* EMPTY */ ++ DEBUG(printk("%s: Send CDB succeeded.\n", ++ __func__);) ++ } else { ++ /* EMPTY */ ++ DEBUG(printk("%s: Send CDB Error " ++ "lun=(%d).\n", __func__, lun);) ++ } ++ } else { ++ /* EMPTY */ ++ DEBUG4(printk("%s: failover disabled or no notify routine " ++ "defined.\n", __func__);) ++ } ++ ++ return status; ++} ++ ++static mp_path_t * ++qla2x00_find_host_from_port(mp_device_t *dp, ++ mp_host_t *host, ++ mp_port_t *port ) ++{ ++ unsigned long instance; ++ uint8_t id; ++ int i; ++ mp_path_t *path = NULL; ++ ++ /* get next host instance */ ++ instance = host->instance; ++ for(i = 0 ; i < port->cnt ; i++ ) { ++ instance = instance + 1; ++ DEBUG3(printk("%s: Finding new instance %d, max %d, cnt %d\n", ++ __func__, (int)instance, port->cnt, i);) ++ /* Handle wrap-around */ ++ if( instance == port->cnt ) ++ instance = 0; ++ if( port->hba_list[instance] == NULL ) ++ continue; ++ if( port->hba_list[instance] != host->ha ) ++ break; ++ } ++ /* Found a different hba then return the path to it */ ++ if ( i != port->cnt ) { ++ id = port->path_list[instance]; ++ DEBUG2(printk("%s: Changing to new host - pathid=%d\n", ++ __func__, id);) ++ path = qla2x00_find_path_by_id(dp, id); ++ } ++ return( path ); ++} ++ ++/* ++ * Find_best_port ++ * This routine tries to locate the best port to the target that ++ * doesn't require issuing a target notify command. ++ */ ++/* ARGSUSED */ ++static mp_path_t * ++qla2x00_find_best_port(mp_device_t *dp, ++ mp_path_t *orig_path, ++ mp_port_t *port, ++ fc_lun_t *fclun ) ++{ ++ mp_path_t *path = NULL; ++ mp_path_t *new_path; ++ mp_port_t *temp_port; ++ int i, found; ++ fc_lun_t *new_fp; ++ struct list_head *list, *temp; ++ mp_lun_t *mplun = (mp_lun_t *)fclun->mplun; ++ unsigned long instance; ++ uint16_t id; ++ ++ found = 0; ++ list_for_each_safe(list, temp, &mplun->ports_list) { ++ temp_port = list_entry(list, mp_port_t, list); ++ if ( port == temp_port ) { ++ continue; ++ } ++ /* Search for an active matching lun on any HBA, ++ but starting with the orig HBA */ ++ instance = orig_path->host->instance; ++ for(i = 0 ; i < temp_port->cnt ; instance++) { ++ if( instance == MAX_HOSTS ) ++ instance = 0; ++ id = temp_port->path_list[instance]; ++ DEBUG(printk( ++ "qla%d %s: i=%d, Checking temp port=%p, pathid=%d\n", ++ (int)instance,__func__, i, temp_port, id);) ++ if (id == PATH_INDEX_INVALID) ++ continue; ++ i++; /* found a valid hba entry */ ++ new_fp = mplun->paths[id]; ++ DEBUG(printk( ++ "qla%d %s: Checking fclun %p, for pathid=%d\n", ++ (int)instance,__func__, new_fp, id);) ++ if( new_fp == NULL ) ++ continue; ++ new_path = qla2x00_find_path_by_id(dp, id); ++ if( new_path != NULL ) { ++ DEBUG(printk( ++ "qla%d %s: Found new path new_fp=%p, " ++ "path=%p, flags=0x%x\n", ++ (int)new_path->host->instance,__func__, new_fp, ++ new_path, new_path->port->flags);) ++ ++ ++ if (atomic_read(&new_path->port->state) ++ == FC_DEVICE_DEAD){ ++ DEBUG2(printk("qla(%d) %s - Port (0x%04x) DEAD.\n", ++ (int)new_path->host->instance, __func__, ++ new_path->port->loop_id);) ++ continue; ++ } ++ ++ /* Is this path on an active controller? */ ++ if( (new_path->port->flags & FC_EVA_DEVICE) && ++ !(new_fp->flags & FC_ACTIVE_LUN) ){ ++ DEBUG2(printk("qla(%d) %s - EVA Port (0x%04x) INACTIVE.\n", ++ (int)new_path->host->instance, __func__, ++ new_path->port->loop_id);) ++ continue; ++ } ++ ++ if( (new_path->port->flags & FC_MSA_DEVICE) && ++ !(new_path->port->flags & FC_MSA_PORT_ACTIVE) ) { ++ DEBUG2(printk("qla(%d) %s - MSA Port (0x%04x) INACTIVE.\n", ++ (int)new_path->host->instance, __func__, ++ new_path->port->loop_id);) ++ continue; ++ } ++ ++ /* found a good path */ ++ DEBUG2(printk( ++ "qla%d %s: *** Changing from port %p to new port %p - pathid=%d\n", ++ (int)instance,__func__, port, temp_port, new_path->id); ) ++ return( new_path ); ++ } ++ } ++ } ++ ++ return( path ); ++} ++ ++/* ++ * qla2x00_smart_failover ++ * This routine tries to be smart about how it selects the ++ * next path. It selects the next path base on whether the ++ * loop went down or the port went down. If the loop went ++ * down it will select the next HBA. Otherwise, it will select ++ * the next port. ++ * ++ * Inputs: ++ * device Device being failed over. ++ * sp Request that initiated failover. ++ * orig_path path that was failed over from. ++ * ++ * Return: ++ * next path next path to use. ++ * flag 1 - Don't send notify command ++ * 0 - Send notify command ++ * ++ * Context: ++ * Kernel context. ++ */ ++/* ARGSUSED */ ++static mp_path_t * ++qla2x00_smart_path(mp_device_t *dp, ++ mp_path_t *orig_path, srb_t *sp, int *flag ) ++{ ++ mp_path_t *path = NULL; ++ fc_lun_t *fclun; ++ mp_port_t *port; ++ mp_host_t *host= orig_path->host; ++ ++ DEBUG2(printk("Entering %s - sp err = %d, instance =%d\n", ++ __func__, sp->err_id, (int)host->instance);) + +- if (newpath->lun_data.data[lun] & LUN_DATA_ENABLED) { +- status = qla2x00_send_fo_notification(old_lp, new_lp); +- if (status == QLA2X00_SUCCESS) { +- /* EMPTY */ +- DEBUG(printk("%s: Send CDB succeeded.\n", +- __func__);) +- } else { +- /* EMPTY */ +- DEBUG(printk("%s: Send CDB Error " +- "lun=(%d).\n", __func__, lun);) ++ ++ qla2x00_find_all_active_ports(sp); ++ if( sp != NULL ) { ++ fclun = sp->lun_queue->fclun; ++ if( fclun == NULL ) { ++ printk( KERN_INFO ++ "scsi%d %s: couldn't find fclun %p pathid=%d\n", ++ (int)host->instance,__func__, fclun, orig_path->id); ++ return( orig_path->next ); ++ } ++ port = qla2x00_find_port_by_name( ++ (mp_lun_t *)fclun->mplun, orig_path); ++ if( port == NULL ) { ++ printk( KERN_INFO ++ "scsi%d %s: couldn't find MP port %p pathid=%d\n", ++ (int)host->instance,__func__, port, orig_path->id); ++ return( orig_path->next ); ++ } ++ ++ /* Change to next HOST if loop went down */ ++ if( sp->err_id == SRB_ERR_LOOP ) { ++ path = qla2x00_find_host_from_port(dp, ++ host, port ); ++ if( path != NULL ) { ++ port->fo_cnt++; ++ *flag = 1; ++ /* if we used all the hbas then ++ try and get another port */ ++ if( port->fo_cnt > port->cnt ) { ++ port->fo_cnt = 0; ++ *flag = 0; ++ path = ++ qla2x00_find_best_port(dp, ++ orig_path, port, fclun ); ++ if( path ) ++ *flag = 1; ++ } + } ++ } else { ++ path = qla2x00_find_best_port(dp, ++ orig_path, port, fclun ); ++ if( path ) ++ *flag = 1; + } +- } else { +- /* EMPTY */ +- DEBUG4(printk("%s: failover disabled or no notify routine " +- "defined.\n", __func__);) + } ++ /* Default path is next path*/ ++ if (path == NULL) ++ path = orig_path->next; + +- return status; ++ DEBUG3(printk("Exiting %s\n", __func__);) ++ return path; + } + + /* +@@ -2022,7 +3889,8 @@ qla2x00_send_failover_notify(mp_device_t + * Kernel context. + */ + static mp_path_t * +-qla2x00_select_next_path(mp_host_t *host, mp_device_t *dp, uint8_t lun) ++qla2x00_select_next_path(mp_host_t *host, mp_device_t *dp, uint8_t lun, ++ srb_t *sp) + { + mp_path_t *path = NULL; + mp_path_list_t *path_list; +@@ -2030,6 +3898,11 @@ qla2x00_select_next_path(mp_host_t *host + int id; + uint32_t status; + mp_host_t *new_host; ++ int skip_notify= 0; ++#if 0 ++ fc_lun_t *new_fp = NULL; ++#endif ++ + + ENTER("qla2x00_select_next_path:"); + +@@ -2044,20 +3917,25 @@ qla2x00_select_next_path(mp_host_t *host + if ((orig_path = qla2x00_find_path_by_id(dp, id)) != NULL) { + + /* select next path */ +- path = orig_path->next; ++ if ( orig_path->port && ++ (orig_path->port->flags & (FC_MSA_DEVICE|FC_EVA_DEVICE)) ) { ++ path = qla2x00_smart_path( dp, orig_path, ++ sp, &skip_notify ); ++ } else ++ path = orig_path->next; + new_host = path->host; + + /* FIXME may need to check for HBA being reset */ +- DEBUG3(printk("%s: orig path = %p new path = %p " ++ DEBUG2(printk("%s: orig path = %p new path = %p " + "curr idx = %d, new idx = %d\n", + __func__, orig_path, path, orig_path->id, path->id);) +- DEBUG3(printk(" FAILOVER: device nodename: " ++ DEBUG(printk(" FAILOVER: device nodename: " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + dp->nodename[0], dp->nodename[1], + dp->nodename[2], dp->nodename[3], + dp->nodename[4], dp->nodename[5], + dp->nodename[6], dp->nodename[7]);) +- DEBUG3(printk(" Original - host nodename: " ++ DEBUG(printk(" Original - host nodename: " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + orig_path->host->nodename[0], + orig_path->host->nodename[1], +@@ -2067,7 +3945,7 @@ qla2x00_select_next_path(mp_host_t *host + orig_path->host->nodename[5], + orig_path->host->nodename[6], + orig_path->host->nodename[7]);) +- DEBUG3(printk(" portname: " ++ DEBUG(printk(" portname: " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + orig_path->port->port_name[0], + orig_path->port->port_name[1], +@@ -2077,13 +3955,13 @@ qla2x00_select_next_path(mp_host_t *host + orig_path->port->port_name[5], + orig_path->port->port_name[6], + orig_path->port->port_name[7]);) +- DEBUG3(printk(" New - host nodename: " ++ DEBUG(printk(" New - host nodename: " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + new_host->nodename[0], new_host->nodename[1], + new_host->nodename[2], new_host->nodename[3], + new_host->nodename[4], new_host->nodename[5], + new_host->nodename[6], new_host->nodename[7]);) +- DEBUG3(printk(" portname: " ++ DEBUG(printk(" portname: " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", + path->port->port_name[0], + path->port->port_name[1], +@@ -2095,9 +3973,8 @@ qla2x00_select_next_path(mp_host_t *host + path->port->port_name[7]);) + + path_list->current_path[lun] = path->id; +- + /* If we selected a new path, do failover notification. */ +- if (path != orig_path) { ++ if ( (path != orig_path) && !skip_notify ) { + status = qla2x00_send_failover_notify( + dp, lun, path, orig_path); + +@@ -2133,7 +4010,7 @@ qla2x00_update_mp_host(mp_host_t *host) + { + BOOL success = TRUE; + uint16_t dev_id; +- fc_port_t *port; ++ fc_port_t *fcport; + scsi_qla_host_t *ha = host->ha; + + ENTER("qla2x00_update_mp_host"); +@@ -2142,20 +4019,26 @@ qla2x00_update_mp_host(mp_host_t *host) + /* + * We make sure each port is attached to some virtual device. + */ +- for (dev_id = 0, port = ha->fcport; (port); +- port = port->next, dev_id++) { ++ dev_id = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if(fcport->port_type != FCT_TARGET) ++ continue; + + DEBUG3(printk("%s(%ld): checking fcport list. update port " + "%p-%02x%02x%02x%02x%02x%02x%02x%02x dev_id %d " + "to ha inst %ld.\n", + __func__, ha->host_no, +- port, +- port->port_name[0], port->port_name[1], +- port->port_name[2], port->port_name[3], +- port->port_name[4], port->port_name[5], +- port->port_name[6], port->port_name[7], ++ fcport, ++ fcport->port_name[0], fcport->port_name[1], ++ fcport->port_name[2], fcport->port_name[3], ++ fcport->port_name[4], fcport->port_name[5], ++ fcport->port_name[6], fcport->port_name[7], + dev_id, ha->instance);) +- success |= qla2x00_update_mp_device(host, port, dev_id, 0); ++ ++ qla2x00_configure_cfg_device(fcport); ++ success |= qla2x00_update_mp_device(host, fcport, dev_id, 0); ++ dev_id++; + } + if (success) { + DEBUG2(printk(KERN_INFO "%s: Exit OK\n", __func__);) +@@ -2165,7 +4048,7 @@ qla2x00_update_mp_host(mp_host_t *host) + DEBUG2(printk(KERN_INFO "%s: Exit FAILED\n", __func__);) + } + +- DEBUG3(printk("%s: inst %ld exiting.\n", __func__, ha->instance);) ++ DEBUG2(printk("%s: inst %ld exiting.\n", __func__, ha->instance);) + LEAVE("qla2x00_update_mp_host"); + + return success; +@@ -2209,48 +4092,51 @@ qla2x00_update_mp_device(mp_host_t *host + dev_id);) + + if (!qla2x00_is_ww_name_zero(port->port_name)) { +- ++ if( port->fo_combine ) { ++ return( port->fo_combine(host, dev_id, port, pathid) ); ++ } + /* +- * Search for a device with a matching node name, +- * or create one. +- */ ++ * Search for a device with a matching node name, ++ * portname or create one. ++ */ + dp = qla2x00_find_or_allocate_mp_dev(host, dev_id, port); + + /* +- * We either have found or created a path list. Find this +- * host's path in the path list or allocate a new one +- * and add it to the list. +- */ ++ * We either have found or created a path list. Find this ++ * host's path in the path list or allocate a new one ++ * and add it to the list. ++ */ + if (dp == NULL) { + /* We did not create a mp_dev for this port. */ + port->mp_byte |= MP_MASK_UNCONFIGURED; + DEBUG4(printk("%s: Device NOT found or created at " +- " dev_id=%d.\n", +- __func__, dev_id);) ++ " dev_id=%d.\n", ++ __func__, dev_id);) + return FALSE; + } + + /* +- * Find the path in the current path list, or allocate +- * a new one and put it in the list if it doesn't exist. +- * Note that we do NOT set bSuccess to FALSE in the case +- * of failure here. We must tolerate the situation where +- * the customer has more paths to a device than he can +- * get into a PATH_LIST. +- */ +- ++ * Find the path in the current path list, or allocate ++ * a new one and put it in the list if it doesn't exist. ++ * Note that we do NOT set bSuccess to FALSE in the case ++ * of failure here. We must tolerate the situation where ++ * the customer has more paths to a device than he can ++ * get into a PATH_LIST. ++ */ ++ + path = qla2x00_find_or_allocate_path(host, dp, dev_id, + pathid, port); + if (path == NULL) { + DEBUG4(printk("%s:Path NOT found or created.\n", +- __func__);) ++ __func__);) + return FALSE; + } + ++ + /* Set the PATH flag to match the device flag +- * of whether this device needs a relogin. If any +- * device needs relogin, set the relogin countdown. +- */ ++ * of whether this device needs a relogin. If any ++ * device needs relogin, set the relogin countdown. ++ */ + if (port->flags & FC_CONFIG) + path->config = TRUE; + +@@ -2261,7 +4147,6 @@ qla2x00_update_mp_device(mp_host_t *host + } else { + path->relogin = FALSE; + } +- + } else { + /* EMPTY */ + DEBUG4(printk("%s: Failed portname empty.\n", +@@ -2306,7 +4191,7 @@ qla2x00_update_mp_tree(void) + + /* Override the NEEDS_UPDATE flag if disabled. */ + if (host->flags & MP_HOST_FLAG_DISABLE || +- host->fcport == NULL) ++ list_empty(host->fcports)) + host->flags &= ~MP_HOST_FLAG_NEEDS_UPDATE; + + if (host->flags & MP_HOST_FLAG_NEEDS_UPDATE) { +@@ -2344,7 +4229,7 @@ qla2x00_update_mp_tree(void) + + + /* +- * qla2x00_find_matching_lun ++ * qla2x00_find_matching_lun_by_num + * Find the lun in the path that matches the + * specified lun number. + * +@@ -2360,23 +4245,49 @@ qla2x00_update_mp_tree(void) + * (dg) + */ + static fc_lun_t * +-qla2x00_find_matching_lun(uint8_t lun, mp_path_t *newpath) ++qla2x00_find_matching_lun_by_num(uint16_t lun_no, mp_device_t *dp, ++ mp_path_t *newpath) + { +- fc_lun_t *lp = NULL; /* lun ptr */ +- fc_lun_t *nlp; /* Next lun ptr */ +- fc_port_t *port; /* port ptr */ +- +- if ((port = newpath->port) != NULL) { +- for (nlp = port->fclun; (nlp); nlp = nlp->next) { +- if (lun == nlp->lun) { +- lp = nlp; ++ int found; ++ fc_lun_t *lp = NULL; /* lun ptr */ ++ fc_port_t *fcport; /* port ptr */ ++ mp_lun_t *lun; ++ ++ /* Use the lun list if we have one */ ++ if( dp->luns ) { ++ for (lun = dp->luns; lun != NULL ; lun = lun->next) { ++ if( lun_no == lun->number ) { ++ lp = lun->paths[newpath->id]; + break; + } + } ++ } else { ++ if ((fcport = newpath->port) != NULL) { ++ found = 0; ++ list_for_each_entry(lp, &fcport->fcluns, list) { ++ if (lun_no == lp->lun) { ++ found++; ++ break; ++ } ++ } ++ if (!found) ++ lp = NULL; ++ } + } + return lp; + } + ++static fc_lun_t * ++qla2x00_find_matching_lun(uint8_t lun, mp_device_t *dp, ++ mp_path_t *newpath) ++{ ++ fc_lun_t *lp; ++ ++ lp = qla2x00_find_matching_lun_by_num(lun, dp, newpath); ++ ++ return lp; ++} ++ + /* + * qla2x00_find_path_by_name + * Find the path specified portname from the pathlist +@@ -2401,7 +4312,7 @@ qla2x00_find_path_by_name(mp_host_t *hos + int cnt; + + if ((tmp_path = plp->last) != NULL) { +- for (cnt = 0; cnt < plp->path_cnt; cnt++) { ++ for (cnt = 0; (tmp_path) && cnt < plp->path_cnt; cnt++) { + if (tmp_path->host == host && + qla2x00_is_portname_equal( + tmp_path->portname, portname)) { +@@ -2496,12 +4407,22 @@ qla2x00_find_mp_dev_by_nodename(mp_host_ + if ((dp = host->mp_devs[id] ) == NULL) + continue; + ++#if 0 ++ if (qla2x00_is_nodename_in_device(dp, name)) { ++ DEBUG(printk("%s: Found matching device @ index %d:\n", ++ __func__, id);) ++ return dp; ++ } ++#else ++DEBUG(printk("%s mpdev_nodename=%0x nodename_from_gui=%0x",__func__,dp->nodename[7],name[7]);) + if (qla2x00_is_nodename_equal(dp->nodename, name)) { + DEBUG3(printk("%s: Found matching device @ index %d:\n", + __func__, id);) + return dp; + } ++#endif + } ++printk("%s could not find the node name\n",__func__); + + LEAVE("qla2x00_find_mp_dev_by_name"); + +@@ -2521,11 +4442,11 @@ qla2x00_find_mp_dev_by_nodename(mp_host_ + * Context: + * Kernel context. + */ +-static mp_device_t * ++mp_device_t * + qla2x00_find_mp_dev_by_portname(mp_host_t *host, uint8_t *name, uint16_t *pidx) + { + int id; +- mp_device_t *dp; ++ mp_device_t *dp = NULL; + + DEBUG3(printk("%s: entered.\n", __func__);) + +@@ -2661,10 +4582,10 @@ qla2x00_map_os_targets(mp_host_t *host) + __func__, t, dp, host,ha);) + + if ((path = qla2x00_get_visible_path(dp)) == NULL) { +- printk(KERN_INFO ++ DEBUG( printk(KERN_INFO + "qla_cfg(%d): No visible path " + "for target %d, dp = %p\n", +- host->instance, t, dp); ++ host->instance, t, dp); ) + continue; + } + +@@ -2677,19 +4598,20 @@ qla2x00_map_os_targets(mp_host_t *host) + WWN_SIZE); + tgt->vis_port = path->port; + } +- DEBUG3(printk("%s(%ld): host=%d, " +- "device= %p has VISIBLE " +- "path=%p, path id=%d\n", ++ DEBUG3(printk("%s(%ld): host instance =%d, " ++ "device= %p, tgt=%d has VISIBLE path," ++ "path id=%d\n", + __func__, ha->host_no, + host->instance, +- dp, path, path->id);) ++ dp, t, path->id);) + } else { +- /* EMPTY */ +- DEBUG3(printk("%s(%ld): host=%d, " +- "device= %p has HIDDEN " +- "path=%p, path id=%d\n", ++ DEBUG3(printk("%s(%ld): host instance =%d, " ++ "device= %p, tgt=%d has HIDDEN " ++ "path, path id=%d\n", + __func__, ha->host_no, +- host->instance, dp, path,path->id);) ++ host->instance, dp, t, ++ path->id); ) ++ continue; + } + qla2x00_map_os_luns(host, dp, t); + } else { +@@ -2702,6 +4624,28 @@ qla2x00_map_os_targets(mp_host_t *host) + LEAVE("qla2x00_map_os_targets "); + } + ++static void ++qla2x00_map_or_failover_oslun(mp_host_t *host, mp_device_t *dp, ++ uint16_t t, uint16_t lun_no) ++{ ++ int i; ++ ++ /* ++ * if this is initization time and we couldn't map the ++ * lun then try and find a usable path. ++ */ ++ if ( qla2x00_map_a_oslun(host, dp, t, lun_no) && ++ (host->flags & MP_HOST_FLAG_LUN_FO_ENABLED) ){ ++ /* find a path for us to use */ ++ for ( i = 0; i < dp->path_list->path_cnt; i++ ){ ++ qla2x00_select_next_path(host, dp, lun_no, NULL); ++ if( !qla2x00_map_a_oslun(host, dp, t, lun_no)) ++ break; ++ } ++ } ++} ++ ++ + /* + * qla2x00_map_os_luns + * Allocate the luns for the OS target. +@@ -2719,20 +4663,37 @@ qla2x00_map_os_targets(mp_host_t *host) + static void + qla2x00_map_os_luns(mp_host_t *host, mp_device_t *dp, uint16_t t) + { +- uint16_t lun; +- int i; +- +- for (lun = 0; lun < MAX_LUNS; lun++ ) { +- if ( qla2x00_map_a_oslun(host, dp, t, lun) && +- (host->flags & MP_HOST_FLAG_LUN_FO_ENABLED) ){ +- /* find a path for us to use */ +- for ( i = 0; i < dp->path_list->path_cnt; i++ ){ +- qla2x00_select_next_path(host, dp, lun); +- if( !qla2x00_map_a_oslun(host, dp, t, lun)) +- break; ++ uint16_t lun_no; ++ mp_lun_t *lun; ++ os_lun_t *up; ++ ++ DEBUG3(printk("Entering %s..\n",__func__);) ++ ++ /* if we are using lun binding then scan for the discovered luns */ ++ if( dp->luns ) { ++ for (lun = dp->luns; lun != NULL ; lun = lun->next) { ++ lun_no = lun->number; ++ DEBUG2(printk("%s: instance %d: Mapping target %d, lun %d..\n", ++ __func__,host->instance,t,lun->number);) ++ qla2x00_map_or_failover_oslun(host, dp, ++ t, lun_no); ++ up = (os_lun_t *) GET_LU_Q(host->ha, t, lun_no); ++ if (up == NULL || up->fclun == NULL) { ++ DEBUG2(printk("%s: instance %d: No FCLUN for target %d, lun %d.. \n", ++ __func__,host->instance,t,lun->number);) ++ continue; + } ++ DEBUG2(printk("%s: instance %d: Mapping target %d, lun %d.. to path id %d\n", ++ __func__,host->instance,t,lun->number, ++ up->fclun->fcport->cur_path);) ++ } ++ } else { ++ for (lun_no = 0; lun_no < MAX_LUNS; lun_no++ ) { ++ qla2x00_map_or_failover_oslun(host, dp, ++ t, lun_no); + } + } ++ DEBUG3(printk("Exiting %s..\n",__func__);) + } + + /* +@@ -2763,18 +4724,23 @@ qla2x00_map_a_oslun(mp_host_t *host, mp_ + BOOL status = FALSE; + + if ((id = dp->path_list->current_path[lun]) != PATH_INDEX_INVALID) { ++ DEBUG(printk( "qla2x00(%d): Current path for lun %d is path id %d\n", ++ host->instance, ++ lun, id);) + path = qla2x00_find_path_by_id(dp,id); + if (path) { + fcport = path->port; + if (fcport) { +- /* dg 04/26/02 */ ++ + fcport->cur_path = id; +- fclun = qla2x00_find_matching_lun(lun,path); ++ fclun = qla2x00_find_matching_lun(lun,dp,path); ++ DEBUG2(printk( "qla2x00(%d): found fclun %p, path id = %d\n", host->instance,fclun,id);) + + /* Always map all luns if they are enabled */ + if (fclun && + (path->lun_data.data[lun] & + LUN_DATA_ENABLED) ) { ++ DEBUG(printk( "qla2x00(%d): Lun is enable \n", host->instance);) + + /* + * Mapped lun on the visible path +@@ -2791,10 +4757,10 @@ qla2x00_map_a_oslun(mp_host_t *host, mp_ + t, dp); + + return FALSE; +- } +- ++ } + vis_host = vis_path->host; + ++ + /* ra 11/30/01 */ + /* + * Always alloc LUN 0 so kernel +@@ -2814,6 +4780,8 @@ qla2x00_map_a_oslun(mp_host_t *host, mp_ + + lq->fclun = fclun; + } ++ DEBUG(printk( "qla2x00(%d): lun allocated %p for lun %d\n", ++ host->instance,lq,lun);) + } + } + else +@@ -2892,6 +4860,28 @@ qla2x00_add_path( mp_path_list_t *pathli + LEAVE("qla2x00_add_path"); + } + ++static void ++qla2x00_add_lun( mp_device_t *dp, mp_lun_t *lun) ++{ ++ mp_lun_t *cur_lun; ++ ++ ENTER("qla2x00_add_lun"); ++ ++ /* Insert new entry into the list of luns */ ++ lun->next = NULL; ++ ++ cur_lun = dp->luns; ++ if( cur_lun == NULL ) { ++ dp->luns = lun; ++ } else { ++ /* add to tail of list */ ++ while( cur_lun->next != NULL ) ++ cur_lun = cur_lun->next; ++ ++ cur_lun->next = lun; ++ } ++ LEAVE("qla2x00_add_lun"); ++} + + /* + * qla2x00_is_portname_in_device +@@ -2919,6 +4909,49 @@ qla2x00_is_portname_in_device(mp_device_ + return FALSE; + } + ++#if 0 ++static BOOL ++qla2x00_is_pathid_in_port(mp_port_t *port, uint8_t pathid) ++{ ++ int i; ++ uint8_t id; ++ ++ for(i = 0 ; i < port->cnt ; i++ ) { ++ id = port->path_list[i]; ++ if( id == pathid ) ++ return TRUE; ++ } ++ return FALSE; ++} ++#endif ++ ++#if 0 ++/* ++ * qla2x00_is_nodename_in_device ++ * Search for the specified "nodename" in the device list. ++ * ++ * Input: ++ * dp = device pointer ++ * nodename = nodename to searched for in device ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++static BOOL ++qla2x00_is_nodename_in_device(mp_device_t *dp, uint8_t *nodename) ++{ ++ int idx; ++ ++ for (idx = 0; idx < MAX_PATHS_PER_DEVICE; idx++) { ++ if (memcmp(&dp->nodenames[idx][0], nodename, WWN_SIZE) == 0) ++ return TRUE; ++ } ++ return FALSE; ++} ++#endif + + /* + * qla2x00_set_lun_data_from_bitmask +@@ -2979,9 +5012,9 @@ qla2x00_failback_single_lun(mp_device_t + return; + + /* An fclun should exist for the failbacked lun */ +- if (qla2x00_find_matching_lun(lun, new_path) == NULL) ++ if (qla2x00_find_matching_lun(lun, dp, new_path) == NULL) + return; +- if (qla2x00_find_matching_lun(lun, old_path) == NULL) ++ if (qla2x00_find_matching_lun(lun, dp, old_path) == NULL) + return; + + /* Log to console and to event log. */ +@@ -3029,6 +5062,91 @@ qla2x00_failback_single_lun(mp_device_t + } + } + ++#if 0 ++static void ++qla2x00_failback_single_lun(mp_device_t *dp, uint8_t lun, uint8_t new) ++{ ++ mp_path_list_t *pathlist; ++ mp_path_t *new_path, *old_path; ++ uint8_t old; ++ mp_host_t *new_host; ++ os_lun_t *lq; ++ mp_path_t *vis_path; ++ mp_host_t *vis_host; ++ int status; ++ ++ /* Failback and update statistics. */ ++ if ((pathlist = dp->path_list) == NULL) ++ return; ++ ++ old = pathlist->current_path[lun]; ++ /* pathlist->current_path[lun] = new; */ ++ ++ if ((new_path = qla2x00_find_path_by_id(dp, new)) == NULL) ++ return; ++ if ((old_path = qla2x00_find_path_by_id(dp, old)) == NULL) ++ return; ++ ++ /* An fclun should exist for the failbacked lun */ ++ if (qla2x00_find_matching_lun(lun, dp, new_path) == NULL) ++ return; ++ if (qla2x00_find_matching_lun(lun, dp, old_path) == NULL) ++ return; ++ ++ if ((vis_path = qla2x00_get_visible_path(dp)) == NULL) { ++ printk(KERN_INFO ++ "No visible path for " ++ "target %d, dp = %p\n", ++ dp->dev_id, dp); ++ return; ++ } ++ vis_host = vis_path->host; ++ /* Schedule the recovery before we move the luns */ ++ if( (lq = (os_lun_t *) ++ LUN_Q(vis_host->ha, dp->dev_id, lun)) == NULL ) { ++ printk(KERN_INFO ++ "qla2x00(%d): No visible lun for " ++ "target %d, dp = %p, lun=%d\n", ++ vis_host->instance, ++ dp->dev_id, dp, lun); ++ return; ++ } ++ ++ qla2x00_delay_lun(vis_host->ha, lq, recoveryTime); ++ ++ /* Log to console and to event log. */ ++ printk(KERN_INFO ++ "qla2x00: FAILBACK device %d -> " ++ "%02x%02x%02x%02x%02x%02x%02x%02x LUN %02x\n", ++ dp->dev_id, ++ dp->nodename[0], dp->nodename[1], ++ dp->nodename[2], dp->nodename[3], ++ dp->nodename[4], dp->nodename[5], ++ dp->nodename[6], dp->nodename[7], ++ lun); ++ ++ printk(KERN_INFO ++ "qla2x00: FROM HBA %d to HBA %d \n", ++ old_path->host->instance, ++ new_path->host->instance); ++ ++ ++ /* Send a failover notification. */ ++ status = qla2x00_send_failover_notify(dp, lun, ++ new_path, old_path); ++ ++ new_host = new_path->host; ++ ++ /* remap the lun */ ++ if (status == QLA2X00_SUCCESS ) { ++ pathlist->current_path[lun] = new; ++ qla2x00_map_a_oslun(new_host, dp, dp->dev_id, lun); ++ qla2x00_flush_failover_q(vis_host->ha, lq); ++ qla2x00_reset_lun_fo_counts(vis_host->ha, lq); ++ } ++} ++#endif ++ + /* + * qla2x00_failback_luns + * This routine looks through the devices on an adapter, and +@@ -3077,6 +5195,9 @@ qla2x00_failback_luns( mp_host_t *host) + if (atomic_read(&path->port->state) == FC_DEVICE_DEAD) + continue; + ++ if ( (path->port->flags & FC_FAILBACK_DISABLE) ) ++ continue; ++ + /* + * Failback all the paths for this host, + * the luns could be preferred across all paths +@@ -3112,7 +5233,7 @@ qla2x00_failback_luns( mp_host_t *host) + /* No point in failing back a + disconnected lun */ + new_fp = qla2x00_find_matching_lun( +- l, path); ++ l, dp, path); + + if (new_fp == NULL) + continue; +@@ -3132,6 +5253,41 @@ qla2x00_failback_luns( mp_host_t *host) + return; + } + ++static struct _mp_path * ++qla2x00_find_first_active_path( mp_device_t *dp, mp_lun_t *lun) ++{ ++ mp_path_t *path= NULL; ++ mp_path_list_t *plp = dp->path_list; ++ mp_path_t *tmp_path; ++ fc_port_t *fcport; ++ fc_lun_t *fclun; ++ int cnt; ++ ++ if ((tmp_path = plp->last) != NULL) { ++ tmp_path = tmp_path->next; ++ for (cnt = 0; (tmp_path) && cnt < plp->path_cnt; ++ tmp_path = tmp_path->next, cnt++) { ++ fcport = tmp_path->port; ++ if ( fcport != NULL ) { ++ if( (fcport->flags & FC_EVA_DEVICE) ) { ++ fclun = lun->paths[tmp_path->id]; ++ if ( fclun == NULL ) ++ continue; ++ if (fclun->flags & FC_ACTIVE_LUN ){ ++ path = tmp_path; ++ break; ++ } ++ } else ++ if ( (fcport->flags & FC_MSA_PORT_ACTIVE) ){ ++ path = tmp_path; ++ break; ++ } ++ } ++ } ++ } ++ return path; ++} ++ + /* + * qla2x00_setup_new_path + * Checks the path against the existing paths to see if there +@@ -3146,7 +5302,7 @@ qla2x00_failback_luns( mp_host_t *host) + * None + */ + static void +-qla2x00_setup_new_path( mp_device_t *dp, mp_path_t *path) ++qla2x00_setup_new_path( mp_device_t *dp, mp_path_t *path, fc_port_t *fcport) + { + mp_path_list_t *path_list = dp->path_list; + mp_path_t *tmp_path, *first_path; +@@ -3158,6 +5314,12 @@ qla2x00_setup_new_path( mp_device_t *dp, + int i; + + ENTER("qla2x00_setup_new_path"); ++ DEBUG(printk("qla2x00_setup_new_path: path %p path id %d\n", ++ path, path->id);) ++ if( path->port ){ ++ DEBUG(printk("qla2x00_setup_new_path: port %p loop id 0x%x\n", ++ path->port, path->port->loop_id);) ++ } + + /* If this is a visible path, and there is not already a + * visible path, save it as the visible path. If there +@@ -3215,30 +5377,35 @@ qla2x00_setup_new_path( mp_device_t *dp, + } + } + +- /* +- * For each LUN, evaluate whether the new path that is added +- * is better than the existing path. If it is, make it the +- * current path for the LUN. +- */ +- for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) { +- l = (uint8_t)(lun & 0xFF); +- +- /* If this is the first path added, it is the only +- * available path, so make it the current path. ++ if( !(fcport->flags & (FC_MSA_DEVICE|FC_EVA_DEVICE)) ) { ++ /* ++ * For each LUN, evaluate whether the new path that is added is ++ * better than the existing path. If it is, make it the ++ * current path for the LUN. + */ ++ for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) { ++ l = (uint8_t)(lun & 0xFF); + +- DEBUG4(printk("%s: lun_data 0x%x, LUN %d\n", +- __func__, path->lun_data.data[l], lun);) +- +- if (first_path == path) { +- path_list->current_path[l] = 0; +- path->lun_data.data[l] |= LUN_DATA_PREFERRED_PATH; +- } else if (path->lun_data.data[l] & LUN_DATA_PREFERRED_PATH) { + /* +- * If this is not the first path added, if this is +- * the preferred path, make it the current path. ++ * If this is the first path added, it is the only ++ * available path, so make it the current path. + */ +- path_list->current_path[l] = path->id; ++ DEBUG4(printk("%s: lun_data 0x%x, LUN %d\n", ++ __func__, path->lun_data.data[l], lun);) ++ ++ if (first_path == path) { ++ path_list->current_path[l] = 0; ++ path->lun_data.data[l] |= ++ LUN_DATA_PREFERRED_PATH; ++ } else if (path->lun_data.data[l] & ++ LUN_DATA_PREFERRED_PATH) { ++ /* ++ * If this is not the first path added, if this ++ * is the preferred path, so make it the ++ * current path. ++ */ ++ path_list->current_path[l] = path->id; ++ } + } + } + +@@ -3260,10 +5427,14 @@ qla2x00_setup_new_path( mp_device_t *dp, + void + qla2x00_cfg_mem_free(scsi_qla_host_t *ha) + { ++ mp_lun_t *cur_lun; ++ mp_lun_t *tmp_lun; + mp_device_t *dp; + mp_path_list_t *path_list; + mp_path_t *tmp_path, *path; + mp_host_t *host, *temp; ++ mp_port_t *temp_port; ++ struct list_head *list, *temp_list; + int id, cnt; + + if ((host = qla2x00_cfg_find_host(ha)) != NULL) { +@@ -3300,6 +5471,31 @@ qla2x00_cfg_mem_free(scsi_qla_host_t *ha + temp->mp_devs[id] = NULL; + } + } ++ /* Free all the lun struc's attached ++ * to this mp_device */ ++ for ( cur_lun = dp->luns; (cur_lun); ++ cur_lun = cur_lun->next) { ++ DEBUG(printk(KERN_INFO ++ "host%d - Removing lun:%p " ++ "attached to device:%p\n", ++ host->instance, ++ cur_lun,dp);) ++ list_for_each_safe(list, temp_list, ++ &cur_lun->ports_list) { ++ ++ temp_port = list_entry(list, mp_port_t, list); ++ list_del_init(&temp_port->list); ++ ++ DEBUG(printk(KERN_INFO ++ "host%d - Removing port:%p " ++ "attached to lun:%p\n", ++ host->instance, temp_port, ++ cur_lun);) ++ ++ } ++ tmp_lun = cur_lun; ++ KMEM_FREE(tmp_lun,sizeof(mp_lun_t)); ++ } + KMEM_FREE(dp, sizeof(mp_device_t)); + } + +@@ -3331,68 +5527,43 @@ qla2x00_cfg_mem_free(scsi_qla_host_t *ha + } + + UINT8 +-qla2x00_is_fcport_in_config(scsi_qla_host_t *ha, fc_port_t *fcport) ++qla2x00_is_fcport_in_foconfig(scsi_qla_host_t *ha, fc_port_t *fcport) + { +- if (ha->flags.failover_enabled) { +- +- mp_device_t *dp; +- mp_host_t *host; +- mp_path_t *path; +- mp_path_list_t *pathlist; +- uint16_t dev_no; +- +- if ((host = qla2x00_cfg_find_host(ha)) == NULL) { +- /* no configured devices */ +- return (FALSE); +- } +- +- for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) { +- dp = host->mp_devs[dev_no]; +- +- if (dp == NULL) +- continue; +- +- /* Sanity check */ +- if (qla2x00_is_wwn_zero(dp->nodename)) +- continue; ++ mp_device_t *dp; ++ mp_host_t *host; ++ mp_path_t *path; ++ mp_path_list_t *pathlist; ++ uint16_t dev_no; + +- if ((pathlist = dp->path_list) == NULL) +- continue; ++ if ((host = qla2x00_cfg_find_host(ha)) == NULL) { ++ /* no configured devices */ ++ return (FALSE); ++ } + +- path = qla2x00_find_path_by_name(host, dp->path_list, +- fcport->port_name); +- if (path != NULL) { +- /* found path for port */ +- if (path->config == TRUE) { +- return (TRUE); +- } else { +- break; +- } +- } +- } ++ for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) { ++ dp = host->mp_devs[dev_no]; + +- } else { +- uint16_t idx; +- fcdev_t *pdev; ++ if (dp == NULL) ++ continue; + +- for (idx = 0; idx < MAX_FIBRE_DEVICES; idx++) { +- pdev = &ha->fc_db[idx]; ++ /* Sanity check */ ++ if (qla2x00_is_wwn_zero(dp->nodename)) ++ continue; + +- if (pdev->loop_id == PORT_UNUSED) +- continue; ++ if ((pathlist = dp->path_list) == NULL) ++ continue; + +- if (memcmp(fcport->port_name, pdev->wwn, +- EXT_DEF_WWN_NAME_SIZE) == 0) { +- if (pdev->flag & DEV_CONFIGURED) { +- /* found port in user config */ +- return(TRUE); +- } else { +- break; +- } ++ path = qla2x00_find_path_by_name(host, dp->path_list, ++ fcport->port_name); ++ if (path != NULL) { ++ /* found path for port */ ++ if (path->config == TRUE) { ++ return (TRUE); ++ } else { ++ break; + } + } + } + + return (FALSE); + } +- +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfg.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfg.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfg.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfg.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -78,7 +78,7 @@ extern "C" + */ + typedef struct _mp_lun_data { + uint8_t data[MAX_LUNS]; +-#define LUN_DATA_ENABLED BIT_7 ++#define LUN_DATA_ENABLED BIT_7 /* Lun Masking */ + #define LUN_DATA_PREFERRED_PATH BIT_6 + } + mp_lun_data_t; +@@ -112,14 +112,42 @@ typedef struct _failover_notify_srb { + } + failover_notify_srb_t; + ++#define WWULN_SIZE 32 ++typedef struct _mp_lun { ++ struct _mp_lun *next; ++ struct _mp_device *dp; /* Multipath device */ ++ int number; /* actual lun number */ ++ fc_lun_t *paths[MAX_PATHS_PER_DEVICE]; /* list of fcluns */ ++ struct list_head ports_list; ++ int path_cnt; /* Must be > 1 for fo device */ ++ int siz; /* Size of wwuln */ ++ uint8_t wwuln[WWULN_SIZE];/* lun id from inquiry page 83. */ ++} ++mp_lun_t; ++ ++typedef struct _mp_port { ++ struct list_head list; ++ uint8_t portname[WWN_SIZE]; ++ uint8_t path_list[ MAX_HOSTS ]; /* path index for a given HBA */ ++ scsi_qla_host_t *hba_list[ MAX_HOSTS ]; ++ int cnt; ++ int fo_cnt; ++ ulong total_blks; /* blocks transferred on this port */ ++} ++mp_port_t; ++ + /* + * Per-device multipath control data. + */ + typedef struct _mp_device { + mp_path_list_t *path_list; /* Path list for device. */ +- int dev_id; +- int use_cnt; /* number of users */ +- uint8_t nodename[WWN_SIZE]; /* World-wide node name. */ ++ int dev_id; ++ int use_cnt; /* number of users */ ++ struct _mp_lun *luns; /* list of luns */ ++ uint8_t nodename[WWN_SIZE]; /* World-wide node name for device. */ ++ ++ /* World-wide node names. */ ++ uint8_t nodenames[MAX_PATHS_PER_DEVICE][WWN_SIZE]; + /* World-wide port names. */ + uint8_t portnames[MAX_PATHS_PER_DEVICE][WWN_SIZE]; + } +@@ -132,7 +160,7 @@ typedef struct _mp_host { + struct _mp_host *next; /* ptr to next host adapter in list */ + scsi_qla_host_t *ha; /* ptr to lower-level driver adapter struct */ + int instance; /* OS instance number */ +- fc_port_t *fcport; /* Port chain for this adapter */ ++ struct list_head *fcports; /* Port chain for this adapter */ + mp_device_t *mp_devs[MAX_MP_DEVICES]; /* Multipath devices */ + + uint32_t flags; +@@ -157,6 +185,7 @@ typedef struct _mp_path { + struct _mp_host *host; /* Pointer to adapter */ + fc_port_t *port; /* FC port info */ + uint16_t id; /* Path id (index) */ ++ uint16_t flags; + uint8_t mp_byte; /* Multipath control byte */ + #define MP_MASK_HIDDEN 0x80 + #define MP_MASK_UNCONFIGURED 0x40 +@@ -179,4 +208,7 @@ typedef struct failover_notify_entry { + } + failover_notify_t; + ++extern mp_device_t *qla2x00_find_mp_dev_by_portname(mp_host_t *, uint8_t *, ++ uint16_t *); ++extern mp_host_t * qla2x00_cfg_find_host(scsi_qla_host_t *); + #endif /* _QLA_CFG_H */ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfgln.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfgln.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_cfgln.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_cfgln.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -19,7 +19,7 @@ + + /* + * QLogic ISP2x00 Multi-path LUN Support Driver +- * Solaris specific functions ++ * Linux specific functions + * + */ + +@@ -333,7 +333,6 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + * number + */ + PERSIST_STRING("scsi-qla%ld-tgt-%d-di-%d-node", "%ld-%d-%d-n"); +- DEBUG(printk("build_tree: %s\n",propbuf);) + + rval = qla2x00_get_prop_xstr(ha, propbuf, + node_name, WWN_SIZE); +@@ -343,6 +342,7 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + */ + continue; + ++ DEBUG(printk("build_tree: %s\n",propbuf);) + memcpy(port->node_name, node_name, WWN_SIZE); + + /* +@@ -350,13 +350,13 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + * number + */ + PERSIST_STRING("scsi-qla%ld-tgt-%d-di-%d-port", "%ld-%d-%d-p"); +- DEBUG(printk("build_tree: %s\n",propbuf);) + + rval = qla2x00_get_prop_xstr(ha, propbuf, + port_name, WWN_SIZE); + if (rval != WWN_SIZE) + continue; + ++ DEBUG(printk("build_tree: %s\n",propbuf);) + memcpy(port->node_name, node_name, WWN_SIZE); + memcpy(port->port_name, port_name, WWN_SIZE); + port->flags |= FC_CONFIG; +@@ -366,8 +366,6 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + * is present then all luns are visible. + */ + PERSIST_STRING("scsi-qla%ld-tgt-%d-di-%d-control", "%ld-%d-%d-c"); +- DEBUG3(printk("build_tree: %s\n",propbuf);) +- + rval = qla2x00_get_prop_xstr(ha, propbuf, + (uint8_t *)(&control_byte), + sizeof(control_byte)); +@@ -379,6 +377,8 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + continue; + } + ++ DEBUG3(printk("build_tree: %s\n",propbuf);) ++ + DEBUG(printk("build_tree: control byte 0x%x\n", + control_byte);) + +@@ -392,9 +392,36 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + port->port_name[4], port->port_name[5], + port->port_name[6], port->port_name[7], + tgt, port->mp_byte);) ++#if 0 /* not supported */ ++ /* To do the lun binding: Create a fclun for each ++ * lun the user has specified, so a mp_lun can be ++ * created for each. ++ */ ++ for (lun = 0; lun < MAX_LUNS_PER_DEVICE && ; lun++) { ++ if( !ql2xdevflag ) ++ sprintf(propbuf, "scsi-qla%ld-tgt-%d-lun-%d-lunid", ++ ha->instance, tgt, lun); ++ else ++ sprintf(propbuf, "%ld-%d-%d-l", ha->instance, ++ tgt, lun); ++ ++ DEBUG(printk("build_tree: %s\n",propbuf);) ++ ++ /* allocate space for mp_lun and fclun */ ++ ++ rval = qla2x00_get_prop_xstr(ha, propbuf, ++ mplun->wwuln, 32); ++ if (rval != 32) ++ continue; ++ ++ } ++#endif + + qla2x00_update_mp_device(host, port, tgt, + dev_no); ++ ++ /* free any mplun info */ ++ + qla2x00_set_lun_data_from_config(host, + port, tgt, dev_no); + } +@@ -418,7 +445,7 @@ qla2x00_cfg_build_path_tree(scsi_qla_hos + * Returns: + * None. + */ +-void qla2x00_cfg_display_devices(void) ++void qla2x00_cfg_display_devices( int flag ) + { + mp_host_t *host; + int id; +@@ -430,8 +457,9 @@ void qla2x00_cfg_display_devices(void) + lun_bit_mask_t lun_mask; + int mask_set; + uint8_t l; ++ mp_lun_t *lun; ++ unsigned char tmp_buf[32]; + +- printk("qla2x00_cfg_display_devices\n"); + for (host = mp_hosts_base; (host); host = host->next) { + + instance = (int) host->instance; +@@ -552,6 +580,21 @@ void qla2x00_cfg_display_devices(void) + *((uint32_t *) &lun_mask.mask[4]), + *((uint32_t *) &lun_mask.mask[0]) ); + } ++ /* display lun wwuln */ ++ if( flag ) ++ for (lun = dp->luns; lun != NULL ; lun = lun->next) { ++ printk(KERN_INFO ++ "scsi-qla%d-tgt-%d-di-%d-lun-%d-lunid=", ++ instance, id, path->id, lun->number); ++ for (i = 0 ; i < lun->siz ; ++ i++) { ++ sprintf(tmp_buf+i, ++ "%02x", ++ lun->wwuln[i]); ++ } ++ printk(KERN_INFO "%s:%02d;\n", ++ tmp_buf,lun->siz); ++ } + dev_no++; + } + +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_debug.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_debug.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_debug.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_debug.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -57,11 +57,13 @@ + #define DEBUG2_3_11(x) if (extended_error_logging != 0) { do {x;} while (0); } + #define DEBUG2_9_10(x) if (extended_error_logging != 0) { do {x;} while (0); } + #define DEBUG2_11(x) if (extended_error_logging != 0) { do {x;} while (0); } ++#define DEBUG2_13(x) if (extended_error_logging != 0) { do {x;} while (0); } + #else + #define DEBUG2(x) do {} while (0); + #define DEBUG2_3(x) do {} while (0); + #define DEBUG2_3_11(x) do {} while (0); + #define DEBUG2_9_10(x) do {} while (0); ++#define DEBUG2_13(x) do {} while (0); + #endif + + #if defined(QL_DEBUG_LEVEL_3) +@@ -123,3 +125,16 @@ + #else + #define DEBUG12(x) do {} while (0); + #endif ++ ++#if defined(QL_DEBUG_LEVEL_13) ++#define DEBUG13(x) do {x;} while (0); ++ #if !defined(DEBUG2_13) ++ #define DEBUG2_13(x) do {x;} while (0); ++ #endif ++#else ++#define DEBUG13(x) do {} while (0); ++ #if !defined(DEBUG2_13) ++ #define DEBUG2_13(x) do {} while (0); ++ #endif ++#endif ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_devtbl.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_devtbl.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_devtbl.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_devtbl.h 2004-04-22 19:42:21.000000000 -0700 +@@ -1,4 +1,4 @@ +-#define QLA_MODEL_NAMES 0x19 ++#define QLA_MODEL_NAMES 0x1B + + /* + * Adapter model names. +@@ -7,9 +7,9 @@ char *qla2x00_model_name[QLA_MODEL_NAMES + "QLA2340", /* 0x100 */ + "QLA2342", /* 0x101 */ + "QLA2344", /* 0x102 */ +- "QLA2342", /* 0x103 */ +- "QLA2340", /* 0x104 */ +- "QLA2342", /* 0x105 */ ++ "QCP2342", /* 0x103 */ ++ "QSB2340", /* 0x104 */ ++ "QSB2342", /* 0x105 */ + "QLA2310", /* 0x106 */ + "QLA2332", /* 0x107 */ + "QCP2332", /* 0x108 */ +@@ -23,11 +23,294 @@ char *qla2x00_model_name[QLA_MODEL_NAMES + "HPQSVS ", /* 0x110 */ + "QLA4010", /* 0x111 */ + "QLA4010", /* 0x112 */ +- "QLA4010", /* 0x113 */ +- "QLA4010", /* 0x114 */ ++ "QLA4010C", /* 0x113 */ ++ "QLA4010C", /* 0x114 */ + "QLA2360", /* 0x115 */ + "QLA2362", /* 0x116 */ +- "QLA2350", /* 0x117 */ +- "QLA2352" /* 0x118 */ ++ " ", /* 0x117 */ ++ " ", /* 0x118 */ ++ "QLA200", /* 0x119 */ ++ "QLA200C" /* 0x11A */ + }; + ++char *qla2x00_model_desc[QLA_MODEL_NAMES] = { ++ "133MHz PCI-X to 2Gb FC, Single Channel", /* 0x100 */ ++ "133MHz PCI-X to 2Gb FC, Dual Channel", /* 0x101 */ ++ "133MHz PCI-X to 2Gb FC, Quad Channel", /* 0x102 */ ++ " ", /* 0x103 */ ++ " ", /* 0x104 */ ++ " ", /* 0x105 */ ++ " ", /* 0x106 */ ++ " ", /* 0x107 */ ++ " ", /* 0x108 */ ++ " ", /* 0x109 */ ++ " ", /* 0x10a */ ++ " ", /* 0x10b */ ++ "133MHz PCI-X to 2Gb FC, Single Channel", /* 0x10c */ ++ "133MHz PCI-X to 2Gb FC, Dual Channel", /* 0x10d */ ++ " ", /* 0x10e */ ++ "HPQ SVS HBA- Initiator device", /* 0x10f */ ++ "HPQ SVS HBA- Target device", /* 0x110 */ ++ "Optical- 133MHz to 1Gb iSCSI- networking", /* 0x111 */ ++ "Optical- 133MHz to 1Gb iSCSI- storage", /* 0x112 */ ++ "Copper- 133MHz to 1Gb iSCSI- networking", /* 0x113 */ ++ "Copper- 133MHz to 1Gb iSCSI- storage", /* 0x114 */ ++ "133MHz PCI-X to 2Gb FC Single Channel", /* 0x115 */ ++ "133MHz PCI-X to 2Gb FC Dual Channel", /* 0x116 */ ++ " ", /* 0x117 */ ++ " ", /* 0x118 */ ++ "133MHz PCI-X to 2Gb FC Optical", /* 0x119 */ ++ "133MHz PCI-X to 2Gb FC Copper" /* 0x11A */ ++}; ++ ++ ++struct cfg_device_info { ++ const char *vendor; ++ const char *model; ++ const int flags; /* bit 0 (0x1) -- This bit will translate the real ++ WWNN to the common WWNN for the target AND ++ XP_DEVICE */ ++ /* bit 1 (0x2) -- MSA 1000 */ ++ /* bit 2 (0x4) -- EVA */ ++ /* bit 3 (0x8) -- DISABLE FAILOVER */ ++ const int notify_type; /* support the different types: 1 - 4 */ ++ int ( *fo_combine)(void *, ++ uint16_t, fc_port_t *, uint16_t ); ++ int ( *fo_detect)(void); ++ int ( *fo_notify)(void); ++ int ( *fo_select)(void); ++}; ++ ++ ++static struct cfg_device_info cfg_device_list[] = { ++ ++ {"COMPAQ", "MSA1000", 2, FO_NOTIFY_TYPE_SPINUP, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++ ++/* For testing only ++ {"SEAGATE", "ST318453FC", 0, FO_NOTIFY_TYPE_NONE, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++*/ ++ ++ {"HITACHI", "OPEN-", 1, FO_NOTIFY_TYPE_NONE, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++ {"HP", "OPEN-", 1, FO_NOTIFY_TYPE_NONE, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++ {"COMPAQ", "HSV110 (C)COMPAQ", 4, FO_NOTIFY_TYPE_SPINUP, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++ {"HP", "HSV100", 4, FO_NOTIFY_TYPE_SPINUP, ++ qla2x00_combine_by_lunid, NULL, NULL, NULL }, ++ {"DEC", "HSG80", 8, FO_NOTIFY_TYPE_NONE, ++ qla2x00_export_target, NULL, NULL, NULL }, ++ ++ /* ++ * Must be at end of list... ++ */ ++ {NULL, NULL } ++}; ++ ++/*****************************************/ ++/* ISP Boards supported by this driver */ ++/*****************************************/ ++#define QLA2X00_VENDOR_ID 0x1077 ++#define QLA2100_DEVICE_ID 0x2100 ++#define QLA2200_DEVICE_ID 0x2200 ++#define QLA2200A_DEVICE_ID 0x2200A ++#define QLA2300_DEVICE_ID 0x2300 ++#define QLA2312_DEVICE_ID 0x2312 ++#define QLA2322_DEVICE_ID 0x2322 ++#define QLA6312_DEVICE_ID 0x6312 ++#define QLA6322_DEVICE_ID 0x6322 ++//#define QLAFBLITE_DEVICE_ID /* Not Known yet */ ++#define QLA2200A_RISC_ROM_VER 4 ++#define FPM_2300 6 ++#define FPM_2310 7 ++ ++#if defined(ISP2100) ++#define NUM_OF_ISP_DEVICES 2 ++static struct pci_device_id qla2100_pci_tbl[] = ++{ ++ {QLA2X00_VENDOR_ID, QLA2100_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {0,} ++}; ++MODULE_DEVICE_TABLE(pci, qla2100_pci_tbl); ++#endif ++#if defined(ISP2200) ++#define NUM_OF_ISP_DEVICES 2 ++static struct pci_device_id qla2200_pci_tbl[] = ++{ ++ {QLA2X00_VENDOR_ID, QLA2200_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {0,} ++}; ++MODULE_DEVICE_TABLE(pci, qla2200_pci_tbl); ++#endif ++ ++#if defined(ISP2300) ++#define NUM_OF_ISP_DEVICES 6 ++static struct pci_device_id qla2300_pci_tbl[] = ++{ ++ {QLA2X00_VENDOR_ID, QLA2300_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {QLA2X00_VENDOR_ID, QLA2312_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {QLA2X00_VENDOR_ID, QLA2322_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {QLA2X00_VENDOR_ID, QLA6312_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {QLA2X00_VENDOR_ID, QLA6322_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID,}, ++ {0,} ++}; ++MODULE_DEVICE_TABLE(pci, qla2300_pci_tbl); ++#endif ++ ++struct qla_fw_info { ++ unsigned short addressing; /* addressing method used to load fw */ ++#define FW_INFO_ADDR_NORMAL 0 ++#define FW_INFO_ADDR_EXTENDED 1 ++#define FW_INFO_ADDR_NOMORE 0xffff ++ unsigned short *fwcode; /* pointer to FW array */ ++ unsigned short *fwlen; /* number of words in array */ ++ unsigned short *fwstart; /* start address for F/W */ ++ unsigned long *lfwstart; /* start address (long) for ++ * extended F/W Load */ ++}; ++ ++/* ++ * PCI driver interface definitions ++ */ ++#define ISP21XX_FW_INDEX 0 ++#define ISP22XX_FW_INDEX 0 ++#define ISP23XX_FW_INDEX 0 ++#define ISP232X_FW_INDEX 2 ++#define ISP63XX_FW_INDEX 6 ++#define ISP632X_FW_INDEX 8 ++ ++typedef struct _qlaboards ++{ ++ unsigned char bdName[9]; /* Board ID String */ ++ unsigned long device_id; /* Device ID */ ++ int numPorts; /* number of loops on adapter */ ++ unsigned char *fwver; /* Ptr to F/W version array */ ++ struct qla_fw_info *fwinfo; ++} qla_boards_t; ++ ++ ++static struct qla_fw_info qla_fw_tbl[] = { ++#if defined(ISP2100) ++ /* Start of 21xx firmware list */ ++ { ++ FW_INFO_ADDR_NORMAL, &fw2100tp_code01[0], ++ &fw2100tp_length01, &fw2100tp_addr01, ++ }, ++ { FW_INFO_ADDR_NOMORE, }, ++#endif ++ ++#if defined(ISP2200) ++ /* Start of 22xx firmware list */ ++#if defined(FC_IP_SUPPORT) ++ { ++ FW_INFO_ADDR_NORMAL, &fw2200ip_code01[0], ++ &fw2200ip_length01, &fw2200ip_addr01, ++ }, ++#else ++ { ++ FW_INFO_ADDR_NORMAL, &fw2200tp_code01[0], ++ &fw2200tp_length01, &fw2200tp_addr01, ++ }, ++#endif ++ { FW_INFO_ADDR_NOMORE, }, ++#endif ++ ++#if defined(ISP2300) ++ /* 0 - Start of 23xx firmware list */ ++ { ++ FW_INFO_ADDR_NORMAL, &fw2300ipx_code01[0], ++ &fw2300ipx_length01, &fw2300ipx_addr01, ++ }, ++ ++ /* End of 23xx firmware list */ ++ { FW_INFO_ADDR_NOMORE, }, ++ ++ /* 2 - Start of 232x firmware list */ ++ { ++ FW_INFO_ADDR_NORMAL, &fw2322ipx_code01[0], ++ &fw2322ipx_length01, &fw2322ipx_addr01, ++ }, ++ { ++ FW_INFO_ADDR_EXTENDED, &rseqipx_code01[0], ++ &rseqipx_code_length01, 0, &rseqipx_code_addr01, ++ }, ++ { ++ FW_INFO_ADDR_EXTENDED, &xseqipx_code01[0], ++ &xseqipx_code_length01, 0, &xseqipx_code_addr01, ++ }, ++ { FW_INFO_ADDR_NOMORE, }, ++ /* 6 - Start of 63xx firmware list */ ++ { ++ FW_INFO_ADDR_NORMAL, &fw2300flx_code01[0], ++ &fw2300flx_length01, &fw2300flx_addr01, ++ }, ++ { FW_INFO_ADDR_NOMORE, }, ++ /* End of 63xx firmware list */ ++ ++ /* 8 - Start of 632x firmware list */ ++ { ++ FW_INFO_ADDR_NORMAL, &fw2322flx_code01[0], ++ &fw2322flx_length01, &fw2322flx_addr01, ++ }, ++ { ++ FW_INFO_ADDR_EXTENDED, &rseqflx_code01[0], ++ &rseqflx_code_length01, 0, &rseqflx_code_addr01, ++ }, ++ { ++ FW_INFO_ADDR_EXTENDED, &xseqflx_code01[0], ++ &xseqflx_code_length01, 0, &xseqflx_code_addr01, ++ }, ++ { FW_INFO_ADDR_NOMORE, }, ++ /* End of firmware list */ ++#endif ++}; ++ ++static struct _qlaboards QLBoardTbl_fc[NUM_OF_ISP_DEVICES] = ++{ ++ /* Name , Board PCI Device ID, Number of ports */ ++#if defined(ISP2300) ++ {"QLA2322 ", QLA2322_DEVICE_ID, MAX_BUSES, ++ &fw2322ipx_version_str[0] , &qla_fw_tbl[ISP232X_FW_INDEX] ++ }, ++ ++ {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES, ++ &fw2300ipx_version_str[0] , &qla_fw_tbl[ISP23XX_FW_INDEX] ++ }, ++ ++ {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES, ++ &fw2300ipx_version_str[0] , &qla_fw_tbl[ISP23XX_FW_INDEX] ++ }, ++ ++ {"QLA6312 ", QLA6312_DEVICE_ID, MAX_BUSES, ++ &fw2300flx_version_str[0] , &qla_fw_tbl[ISP63XX_FW_INDEX] ++ }, ++ ++ {"QLA6322 ", QLA6322_DEVICE_ID, MAX_BUSES, ++ &fw2322flx_version_str[0] , &qla_fw_tbl[ISP632X_FW_INDEX] ++ }, ++#endif ++ ++#if defined(ISP2200) ++ {"QLA2200 ", QLA2200_DEVICE_ID, MAX_BUSES, ++#if defined(FC_IP_SUPPORT) ++ &fw2200ip_version_str[0] , ++ }, ++#else ++ &fw2200tp_version_str[0] , &qla_fw_tbl[ISP22XX_FW_INDEX] ++ }, ++#endif ++#endif ++ ++#if defined(ISP2100) ++ {"QLA2100 ", QLA2100_DEVICE_ID, MAX_BUSES, ++ &fw2100tp_version_str[0] , &qla_fw_tbl[ISP21XX_FW_INDEX] ++ }, ++#endif ++ ++ {" ", 0, 0} ++}; ++ ++ ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +-* Copyright (C) 2003 Qlogic Corporation ++* Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -186,6 +186,7 @@ static int + qla2x00_fo_get_lun_data(EXT_IOCTL *pext, FO_LUN_DATA_INPUT *bp, int mode) + { + scsi_qla_host_t *ha; ++ struct list_head *fcports; + fc_port_t *fcport; + int ret = 0; + mp_host_t *host = NULL; +@@ -220,9 +221,9 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + + if (ha->flags.failover_enabled) { + if ((host = qla2x00_cfg_find_host(ha)) == NULL) { +- if (ha->fcport) { +- +- /* Since all ports are unconfigured, return ++ if (!list_empty(&ha->fcports)) { ++ /* ++ * Since all ports are unconfigured, return + * a dummy entry for each of them. + */ + if ((list = (FO_LUN_DATA_LIST *)kmem_zalloc( +@@ -241,9 +242,11 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + u_list = (FO_LUN_DATA_LIST *)pext->ResponseAdr; + u_entry = &u_list->DataEntry[0]; + +- for (fcport = ha->fcport; (fcport); +- fcport = fcport->next) { +- ++ list_for_each_entry(fcport, &ha->fcports, ++ list) { ++ if (fcport->port_type != FCT_TARGET) ++ continue; ++ + memcpy(entry->NodeName, + fcport->node_name, + EXT_DEF_WWN_NAME_SIZE); +@@ -275,21 +278,6 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + + list->EntryCount++; + +- ret = verify_area(VERIFY_WRITE, +- (void *)u_entry, +- sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk( +- "%s: u_entry %p verify " +- "wrt err. EntryCount=%d.\n", +- __func__, u_entry, +- list->EntryCount);) +- pext->Status = +- EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); + if (ret) { +@@ -335,12 +323,15 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + + /* find the correct fcport list */ + if (!ha->flags.failover_enabled) +- fcport = ha->fcport; ++ fcports = &ha->fcports; + else +- fcport = host->fcport; ++ fcports = host->fcports; + + /* Check thru this adapter's fcport list */ +- for ( ; (fcport); fcport = fcport->next) { ++ fcport = NULL; ++ list_for_each_entry(fcport, fcports, list) { ++ if (fcport->port_type != FCT_TARGET) ++ continue; + + if ((atomic_read(&fcport->state) != FC_ONLINE) && + !qla2x00_is_fcport_in_config(ha, fcport)) { +@@ -357,8 +348,6 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + continue; + } + +- memcpy(entry->NodeName, +- fcport->node_name, EXT_DEF_WWN_NAME_SIZE); + memcpy(entry->PortName, + fcport->port_name, EXT_DEF_WWN_NAME_SIZE); + +@@ -383,17 +372,6 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + + list->EntryCount++; + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_entry %p " +- "verify wrt err. EntryCount=%d.\n", +- __func__, u_entry, list->EntryCount);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); + if (ret) { +@@ -415,7 +393,10 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + * Failover disabled. Just return LUN mask info + * in lun data entry of this port. + */ ++ memcpy(entry->NodeName, ++ fcport->node_name, EXT_DEF_WWN_NAME_SIZE); + entry->TargetId = 0; ++ + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { + if (!(ostgt = ha->otgt[cnt])) { + continue; +@@ -465,17 +446,6 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + DEBUG9(qla2x00_dump_buffer((char *)&(fcport->lun_mask), + sizeof(lun_bit_mask_t));) + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); +- if (ret) { +- /* error */ +- DEBUG9_10(printk("%s: u_entry %p verify write" +- " error. list->EntryCount=%d.\n", +- __func__, u_entry, list->EntryCount);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); + +@@ -522,6 +492,16 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + continue; + + /* Got an entry */ ++ if (fcport->flags & FC_XP_DEVICE) { ++ memcpy(entry->NodeName, ++ dp->nodename, ++ EXT_DEF_WWN_NAME_SIZE); ++ } else { ++ memcpy(entry->NodeName, ++ fcport->node_name, ++ EXT_DEF_WWN_NAME_SIZE); ++ } ++ + entry->TargetId = dp->dev_id; + entry->Dev_No = path->id; + list->EntryCount++; +@@ -538,24 +518,14 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + path->lun_data.data[lun]; + } + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_entry %p " +- "verify wrt err. EntryCount=%d.\n", +- __func__, u_entry, list->EntryCount);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); + if (ret) { + /* error */ + DEBUG2_9_10(printk("%s: u_entry %p " + "copy out err. EntryCount=%d.\n", +- __func__, u_entry, list->EntryCount);) ++ __func__, u_entry, ++ list->EntryCount);) + pext->Status = EXT_STATUS_COPY_ERR; + break; + } +@@ -587,20 +557,10 @@ qla2x00_fo_get_lun_data(EXT_IOCTL *pext, + __func__, list->EntryCount);) + + if (ret == 0) { +- ret = verify_area(VERIFY_WRITE, (void *)&u_list->EntryCount, ++ /* copy number of entries */ ++ ret = copy_to_user(&u_list->EntryCount, &list->EntryCount, + sizeof(list->EntryCount)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_list->EntryCount %p verify " +- " write error. list->EntryCount=%d.\n", +- __func__, u_entry, list->EntryCount);) +- pext->Status = EXT_STATUS_COPY_ERR; +- } else { +- /* copy number of entries */ +- ret = copy_to_user(&u_list->EntryCount, &list->EntryCount, +- sizeof(list->EntryCount)); +- pext->ResponseLen = FO_LUN_DATA_LIST_MAX_SIZE; +- } ++ pext->ResponseLen = FO_LUN_DATA_LIST_MAX_SIZE; + } + + KMEM_FREE(list, sizeof(FO_LUN_DATA_LIST)); +@@ -690,17 +650,6 @@ qla2x00_fo_set_lun_data(EXT_IOCTL *pext, + u_list = &(com_iter->foLunDataList); + u_entry = &u_list->DataEntry[0]; + +- ret = verify_area(VERIFY_READ, (void *)u_list, +- sizeof(FO_LUN_DATA_LIST)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_list %p verify read error.\n", +- __func__, u_list);) +- pext->Status = EXT_STATUS_COPY_ERR; +- KMEM_FREE(list, FO_LUN_DATA_LIST); +- return (ret); +- } +- + ret = copy_from_user(list, u_list, sizeof(FO_LUN_DATA_LIST)); + if (ret) { + /* error */ +@@ -719,16 +668,6 @@ qla2x00_fo_set_lun_data(EXT_IOCTL *pext, + + for (i = 0; i < list->EntryCount; i++, u_entry++) { + +- ret = verify_area(VERIFY_READ, (void *)u_entry, +- sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_entry %p verify " +- " read error.\n", +- __func__, u_entry);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } + ret = copy_from_user(entry, u_entry, + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY)); + if (ret) { +@@ -860,7 +799,7 @@ qla2x00_fo_get_target_data(EXT_IOCTL *pe + + if (ha->flags.failover_enabled) + if ((host = qla2x00_cfg_find_host(ha)) == NULL && +- ha->fcport == NULL) { ++ list_empty(&ha->fcports)) { + DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n", + __func__, ha->instance);) + pext->Status = EXT_STATUS_DEV_NOT_FOUND; +@@ -900,7 +839,6 @@ qla2x00_std_get_tgt(scsi_qla_host_t *ha, + uint16_t i, cnt; + uint32_t b; + +- fcdev_t *pdev; + fc_port_t *fcport; + os_tgt_t *ostgt; + +@@ -909,8 +847,6 @@ qla2x00_std_get_tgt(scsi_qla_host_t *ha, + DEBUG9(printk("%s(%ld): entered.\n", __func__, ha->host_no);) + + u_entry = (FO_DEVICE_DATA *) pext->ResponseAdr; +- /* Failover disabled. Check thru this adapter's fcport list */ +- fcport = ha->fcport; + + if (pext->ResponseLen < sizeof(FO_DEVICE_DATA)) { + pext->Status = EXT_STATUS_BUFFER_TOO_SMALL; +@@ -924,7 +860,15 @@ qla2x00_std_get_tgt(scsi_qla_host_t *ha, + __func__, ha->host_no, pext->ResponseLen);) + + /* Loop through and return ports found. */ +- for (i = 0; fcport && i < MAX_TARGETS; i++, fcport = fcport->next) { ++ /* Check thru this adapter's fcport list */ ++ i = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_TARGET) ++ continue; ++ ++ if (i >= MAX_TARGETS) ++ break; + + /* clear for a new entry */ + memset(entry, 0, sizeof(FO_DEVICE_DATA)); +@@ -992,19 +936,7 @@ qla2x00_std_get_tgt(scsi_qla_host_t *ha, + entry->MultipathControl = 0; /* always configured */ + } + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p verify " +- " wrt err. tgt id=%d.\n", +- __func__, ha->host_no, u_entry, cnt);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- +- ret = copy_to_user(u_entry, entry, +- sizeof(FO_DEVICE_DATA)); ++ ret = copy_to_user(u_entry, entry, sizeof(FO_DEVICE_DATA)); + if (ret) { + /* error */ + DEBUG2_9_10(printk("%s(%ld): u_entry %p copy " +@@ -1015,75 +947,11 @@ qla2x00_std_get_tgt(scsi_qla_host_t *ha, + } + + u_entry++; +- +- continue; + } + + DEBUG9(printk("%s(%ld): done copying fcport list entries.\n", + __func__, ha->host_no);) + +- /* For ports not found but were in config file, return unconfigured +- * status so agent will try to issue commands to it and GUI will display +- * them as missing. +- */ +- for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) { +- pdev = &ha->fc_db[cnt]; +- +- if (pdev->loop_id == PORT_UNUSED) +- continue; +- +- DEBUG9(printk("%s(%ld): found valid loop id %d for tgt %d.\n", +- __func__, ha->host_no, pdev->loop_id, cnt);) +- +- if (pdev->loop_id == PORT_AVAILABLE) { +- DEBUG9(printk( +- "%s(%ld): returning tgt %d as unconfigured.\n", +- __func__, ha->host_no, cnt);) +- +- /* clear for a new entry */ +- memset(entry, 0, sizeof(FO_DEVICE_DATA)); +- +- /* Return unconfigured */ +- memcpy(entry->WorldWideName, +- pdev->name, EXT_DEF_WWN_NAME_SIZE); +- memcpy(entry->PortName, +- pdev->wwn, EXT_DEF_WWN_NAME_SIZE); +- +- for (b = 0; b < 3 ; b++) +- entry->PortId[b] = pdev->d_id.r.d_id[2-b]; +- +- entry->TargetId = cnt; +- entry->MultipathControl = MP_MASK_UNCONFIGURED; +- +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p verify " +- " wrt err. tgt id=%d.\n", +- __func__, ha->host_no, u_entry, cnt);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- +- ret = copy_to_user(u_entry, entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p copy " +- "out err. tgt id=%d.\n", +- __func__, ha->host_no, u_entry, cnt);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- +- u_entry++; +- } +- } +- +- DEBUG9(printk("%s(%ld): done copying unconfigured dev entries.\n", +- __func__, ha->host_no);) +- + DEBUG9(printk("%s(%ld): exiting. ret = %d.\n", + __func__, ha->host_no, ret);) + +@@ -1095,7 +963,6 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + EXT_IOCTL *pext, FO_DEVICE_DATA *entry) + { + int ret = 0; +- uint8_t i; + uint8_t path_id; + uint16_t dev_no; + uint32_t b; +@@ -1116,14 +983,14 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + * ha as unconfigured devices. ha should never be NULL. + */ + if (host == NULL) { +- fcport = ha->fcport; +- +- /* Check thru fcport list and return Unconfigured on all +- * ports found. +- */ +- for (i = 0; fcport && i < MAX_TARGETS; +- i++, fcport = fcport->next, cnt++) { +- ++ /* Loop through and return ports found. */ ++ /* Check thru this adapter's fcport list */ ++ cnt = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, &ha->fcports, list) { ++ if (fcport->port_type != FCT_TARGET) ++ continue; ++ + if (atomic_read(&fcport->state) != FC_ONLINE) { + /* no need to report */ + DEBUG2_9_10(printk("%s(%ld): not reporting " +@@ -1139,6 +1006,10 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + continue; + } + ++ cnt++; ++ if (cnt >= MAX_TARGETS) ++ break; ++ + /* clear for a new entry */ + memset(entry, 0, sizeof(FO_DEVICE_DATA)); + +@@ -1175,17 +1046,6 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + entry->TargetId, entry->Dev_No, + entry->MultipathControl);) + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p " +- "verify wrt err. no tgt id.\n", +- __func__, host->ha->host_no, u_entry);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_DEVICE_DATA)); + if (ret) { +@@ -1208,12 +1068,14 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + } + + /* Check thru fcport list on host */ +- fcport = host->fcport; +- +- /* Check thru fcport list and return data on online ports found. */ +- for (i = 0; fcport && i < MAX_TARGETS; i++, fcport = fcport->next, +- cnt++) { +- ++ /* Loop through and return online ports found. */ ++ /* Check thru this adapter's fcport list */ ++ cnt = 0; ++ fcport = NULL; ++ list_for_each_entry(fcport, host->fcports, list) { ++ if (fcport->port_type != FCT_TARGET) ++ continue; ++ + if ((atomic_read(&fcport->state) != FC_ONLINE) && + !qla2x00_is_fcport_in_config(ha, fcport)) { + /* no need to report */ +@@ -1230,11 +1092,13 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + continue; + } + ++ cnt++; ++ if (cnt >= MAX_TARGETS) ++ break; ++ + /* clear for a new entry */ + memset(entry, 0, sizeof(FO_DEVICE_DATA)); + +- memcpy(entry->WorldWideName, +- fcport->node_name, EXT_DEF_WWN_NAME_SIZE); + memcpy(entry->PortName, + fcport->port_name, EXT_DEF_WWN_NAME_SIZE); + +@@ -1258,6 +1122,12 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + DEBUG9_10(printk("%s(%ld): fcport mpbyte=%02x. " + "return unconfigured. ", + __func__, host->ha->host_no, fcport->mp_byte);) ++ printk(KERN_INFO "%s(%ld): fcport mpbyte=%02x. " ++ "return unconfigured. ", ++ __func__, host->ha->host_no, fcport->mp_byte); ++ ++ memcpy(entry->WorldWideName, ++ fcport->node_name, EXT_DEF_WWN_NAME_SIZE); + + entry->TargetId = fcport->dev_id; + entry->Dev_No = 0; +@@ -1267,18 +1137,6 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + entry->TargetId, entry->Dev_No, + entry->MultipathControl);) + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p " +- "verify wrt err. tgt id=%d.\n", +- __func__, host->ha->host_no, u_entry, +- fcport->dev_id);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_DEVICE_DATA)); + if (ret) { +@@ -1323,6 +1181,18 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + entry->PortName)) + continue; + ++ if (fcport->flags & FC_XP_DEVICE) { ++ memcpy(entry->WorldWideName, ++ dp->nodename, ++ EXT_DEF_WWN_NAME_SIZE); ++DEBUG4(printk(KERN_INFO "%s XP device:copy the node name from mp_dev:%0x\n",__func__,dp->nodename[7]);) ++ } else { ++ memcpy(entry->WorldWideName, ++ fcport->node_name, ++ EXT_DEF_WWN_NAME_SIZE); ++DEBUG4(printk(KERN_INFO "%s :copy the node name from fcport:%0x\n",__func__,dp->nodename[7]);) ++ } ++ + entry->TargetId = dp->dev_id; + entry->Dev_No = path->id; + +@@ -1339,18 +1209,6 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + __func__, host->ha->host_no, + path->id, entry->MultipathControl);) + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s(%ld): u_entry %p" +- " verify wrt err. tgt id=%d.\n", +- __func__, host->ha->host_no, +- u_entry, dp->dev_id);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_DEVICE_DATA)); + if (ret) { +@@ -1441,17 +1299,6 @@ qla2x00_fo_get_tgt(mp_host_t *host, scsi + path->portname[4], path->portname[5], + path->portname[6], path->portname[7]);) + +- ret = verify_area(VERIFY_WRITE, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_entry %p " +- "verify wrt err. tgt id=%d.\n", +- __func__, u_entry, dp->dev_id);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_to_user(u_entry, entry, + sizeof(FO_DEVICE_DATA)); + if (ret) { +@@ -1544,18 +1391,7 @@ qla2x00_fo_set_target_data(EXT_IOCTL *pe + sizeof(FO_TARGET_DATA_INPUT)); + + for (i = 0; i < MAX_TARGETS; i++, u_entry++) { +- ret = verify_area(VERIFY_READ, (void *)u_entry, +- sizeof(FO_DEVICE_DATA)); +- if (ret) { +- /* error */ +- DEBUG2_9_10(printk("%s: u_entry %p verify read err.\n", +- __func__, u_entry);) +- pext->Status = EXT_STATUS_COPY_ERR; +- break; +- } +- + ret = copy_from_user(entry, u_entry, sizeof(FO_DEVICE_DATA)); +- + if (ret) { + /* error */ + DEBUG2_9_10(printk("%s: u_entry %p copy error.\n", +@@ -1699,19 +1535,7 @@ qla2x00_fo_ioctl(scsi_qla_host_t *ha, in + __func__, pext->RequestLen);) + + } else { +- +- rval = verify_area(VERIFY_READ, +- (void *)pext->RequestAdr, in_size); +- if (rval) { +- /* error */ +- DEBUG2_9_10(printk("%s: req buf verify read " +- "error. size=%ld.\n", +- __func__, (ulong)in_size);) +- pext->Status = EXT_STATUS_COPY_ERR; +- } +- rval = copy_from_user(&buff, +- (void *)pext->RequestAdr, in_size); +- ++ rval = copy_from_user(&buff, pext->RequestAdr, in_size); + if (rval) { + DEBUG2_9_10(printk("%s: req buf copy error. " + "size=%ld.\n", +@@ -1738,25 +1562,31 @@ qla2x00_fo_ioctl(scsi_qla_host_t *ha, in + + switch (ioctl_code) { + case FO_CC_GET_PARAMS: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_get_param\n");) + rval = qla2x00_fo_get_params(&buff.params); + break; + case FO_CC_SET_PARAMS: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_set_param\n");) + rval = qla2x00_fo_set_params(&buff.params); + break; + case FO_CC_GET_PATHS: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_get_paths\n");) + rval = qla2x00_cfg_get_paths(pext, + &buff.path,mode); + if (rval != 0) + out_size = 0; + break; + case FO_CC_SET_CURRENT_PATH: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_set_paths\n");) + rval = qla2x00_cfg_set_current_path(pext, + &buff.set_path,mode); + break; + case FO_CC_RESET_HBA_STAT: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_reset_hba_stat\n");) + rval = qla2x00_fo_stats(&buff.stat, TRUE); + break; + case FO_CC_GET_HBA_STAT: ++ DEBUG4(printk(KERN_INFO "calling qla2x00_fo_get_hba_stat\n");) + rval = qla2x00_fo_stats(&buff.stat, FALSE); + break; + case FO_CC_GET_LUN_DATA: +@@ -1802,21 +1632,9 @@ qla2x00_fo_ioctl(scsi_qla_host_t *ha, in + + } + +- if (rval == 0 && (pext->ResponseLen = out_size) != 0) { +- rval = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- out_size); +- if (rval != 0) { +- DEBUG10(printk("%s: resp buf very write error.\n", +- __func__);) +- pext->Status = EXT_STATUS_COPY_ERR; +- } +- } +- + if (rval == 0) { +- rval = copy_to_user((void *)pext->ResponseAdr, +- &buff, out_size); +- +- if (rval != 0) { ++ rval = copy_to_user(pext->ResponseAdr, &buff, out_size); ++ if (rval) { + DEBUG10(printk("%s: resp buf copy error. size=%ld.\n", + __func__, (ulong)out_size);) + pext->Status = EXT_STATUS_COPY_ERR; +@@ -1858,6 +1676,7 @@ qla2x00_fo_count_retries(scsi_qla_host_t + BOOL retry = TRUE; + os_lun_t *lq; + os_tgt_t *tq; ++ scsi_qla_host_t *vis_ha; + + DEBUG9(printk("%s: entered.\n", __func__);) + +@@ -1897,7 +1716,9 @@ qla2x00_fo_count_retries(scsi_qla_host_t + sp->f_start=jiffies;/*ra 10/29/01*/ + /* Now queue it on to be failover */ + sp->ha = ha; +- add_to_failover_queue(ha,sp); ++ /* we can only failover using the visible HA */ ++ vis_ha = (scsi_qla_host_t *) sp->cmd->host->hostdata; ++ add_to_failover_queue(vis_ha,sp); + } + } + +@@ -1906,6 +1727,53 @@ qla2x00_fo_count_retries(scsi_qla_host_t + return retry ; + } + ++BOOL ++qla2x00_fo_check_device(scsi_qla_host_t *ha, srb_t *sp) ++{ ++ ++ BOOL retry = FALSE; ++ os_lun_t *lq; ++ Scsi_Cmnd *cp; ++ fc_port_t *fcport; ++ ++ if ( !(sp->flags & SRB_GOT_SENSE) ) ++ return retry; ++ ++ cp = sp->cmd; ++ lq = sp->lun_queue; ++ fcport = lq->fclun->fcport; ++ switch (cp->sense_buffer[2] & 0xf) { ++ ++ case NOT_READY: ++ if ( (fcport->flags & (FC_MSA_DEVICE|FC_EVA_DEVICE)) ) { ++ /* ++ * if we can't access port ++ */ ++ if ((cp->sense_buffer[12] == 0x4 && ++ cp->sense_buffer[13] == 0x0)) { ++ sp->err_id = SRB_ERR_DEVICE; ++ return (TRUE); ++ } ++ } ++ break; ++ ++ case UNIT_ATTENTION: ++ if ( (fcport->flags & FC_EVA_DEVICE) ) { ++ if ((cp->sense_buffer[12] == 0xa && ++ cp->sense_buffer[13] == 0x8)) { ++ sp->err_id = SRB_ERR_DEVICE; ++ return (TRUE); ++ } ++ if ((cp->sense_buffer[12] == 0xa && ++ cp->sense_buffer[13] == 0x9)) { ++ /* failback lun */ ++ } ++ } ++ break; ++ ++ } /* end of switch */ ++ return (retry); ++} + + /* + * qla2x00_fo_check +@@ -1953,7 +1821,9 @@ qla2x00_fo_check(scsi_qla_host_t *ha, sr + + /* we failover on selction timeouts only */ + host_status = CMD_RESULT(sp->cmd) >>16; +- if( host_status == DID_NO_CONNECT) { ++ if( host_status == DID_NO_CONNECT || ++ qla2x00_fo_check_device(ha, sp) ) { ++ + if( qla2x00_fo_count_retries(ha,sp) ) { + /* Force a retry on this request, it will + * cause the LINUX timer to get reset, while we +@@ -1968,6 +1838,12 @@ qla2x00_fo_check(scsi_qla_host_t *ha, sr + sp->cmd->serial_number, + sp, sp->fo_retry_cnt, + retry, reason[host_status]);) ++ DEBUG(printk("qla2x00_fo_check: pid= %ld sp %p " ++ "retry count=%d, retry flag = %d, " ++ "host status=%d\n\r", ++ sp->cmd->serial_number, ++ sp, sp->fo_retry_cnt, ++ retry, host_status);) + } + + DEBUG9(printk("%s: exiting. retry = %d.\n", __func__, retry);) +@@ -2135,10 +2011,11 @@ static int + qla2x00_spinup(scsi_qla_host_t *ha, fc_port_t *fcport, uint16_t lun) + { + inq_cmd_rsp_t *pkt; +- int rval, count, retry; ++ int rval = QLA2X00_SUCCESS; ++ int count, retry; + dma_addr_t phys_address = 0; +- uint16_t comp_status; +- uint16_t scsi_status; ++ uint16_t comp_status = CS_COMPLETE; ++ uint16_t scsi_status = 0; + + ENTER(__func__); + +@@ -2149,24 +2026,34 @@ qla2x00_spinup(scsi_qla_host_t *ha, fc_p + printk(KERN_WARNING + "scsi(%ld): Memory Allocation failed - INQ\n", + ha->host_no); ++ return( QLA2X00_FAILED); + } + +- count = 100; +- retry = 10; +- do { ++ count = 5; ++ retry = 5; ++ if (atomic_read(&fcport->state) != FC_ONLINE){ ++ DEBUG2(printk("scsi(%ld) %s leaving: Port 0x%02x is not ONLINE\n", ++ ha->host_no,__func__,fcport->loop_id);) ++ rval = QLA2X00_FAILED; ++ } ++ else do { + /* issue spinup */ + memset(pkt, 0, sizeof(inq_cmd_rsp_t)); + pkt->p.cmd.entry_type = COMMAND_A64_TYPE; + pkt->p.cmd.entry_count = 1; + pkt->p.cmd.lun = cpu_to_le16(lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(fcport->loop_id); ++#else + pkt->p.cmd.target = (uint8_t)fcport->loop_id; ++#endif + /* no direction for this command */ + pkt->p.cmd.control_flags = + __constant_cpu_to_le16(CF_SIMPLE_TAG); + pkt->p.cmd.scsi_cdb[0] = START_STOP; + pkt->p.cmd.scsi_cdb[4] = 1; /* start spin cycle */ + pkt->p.cmd.dseg_count = __constant_cpu_to_le16(0); +- pkt->p.cmd.timeout = __constant_cpu_to_le16(10); ++ pkt->p.cmd.timeout = __constant_cpu_to_le16(20); + pkt->p.cmd.byte_count = __constant_cpu_to_le32(0); + + rval = qla2x00_issue_iocb(ha, pkt, +@@ -2175,6 +2062,15 @@ qla2x00_spinup(scsi_qla_host_t *ha, fc_p + comp_status = le16_to_cpu(pkt->p.rsp.comp_status); + scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status); + ++ /* Port Logged Out, so don't retry */ ++ if( comp_status == CS_PORT_LOGGED_OUT || ++ comp_status == CS_PORT_CONFIG_CHG || ++ comp_status == CS_PORT_BUSY || ++ comp_status == CS_INCOMPLETE || ++ comp_status == CS_PORT_UNAVAILABLE ) { ++ break; ++ } ++ + if ( (scsi_status & SS_CHECK_CONDITION) ) { + DEBUG2(printk("%s(%ld): SS_CHECK_CONDITION " + "Sense Data " +@@ -2203,9 +2099,11 @@ qla2x00_spinup(scsi_qla_host_t *ha, fc_p + retry--; + } + +- printk("qla_fo: Sending Start - count %d, retry=%d" +- "comp status 0x%x, " ++ printk(KERN_INFO ++ "qla_fo(%ld): Sending Start - count %d, retry=%d" ++ " comp status 0x%x, " + "scsi status 0x%x, rval=%d\n", ++ ha->host_no, + count, + retry, + comp_status, +@@ -2226,15 +2124,17 @@ qla2x00_spinup(scsi_qla_host_t *ha, fc_p + comp_status != CS_COMPLETE || + (scsi_status & SS_CHECK_CONDITION)) { + +- DEBUG(printk("qla_fo: Failed spinup - " ++ DEBUG(printk("qla_fo(%ld): Failed spinup - " + "comp status 0x%x, " + "scsi status 0x%x. loop_id=%d\n", ++ ha->host_no, + comp_status, + scsi_status, + fcport->loop_id);) ++ rval = QLA2X00_FAILED; + } + +- pci_free_consistent(ha->pdev, sizeof(rpt_lun_cmd_rsp_t), ++ pci_free_consistent(ha->pdev, sizeof(inq_cmd_rsp_t), + pkt, phys_address); + + +@@ -2272,6 +2172,11 @@ qla2x00_send_fo_notification(fc_lun_t *o + ENTER("qla2x00_send_fo_notification"); + DEBUG3(printk("%s: entered.\n", __func__);) + ++ if( new_lp->fcport == NULL ){ ++ DEBUG2(printk("qla2x00_send_fo_notification: No " ++ "new fcport for lun pointer\n");) ++ return QLA2X00_FAILED; ++ } + loop_id = new_lp->fcport->loop_id; + lun = new_lp->lun; + +@@ -2302,8 +2207,10 @@ qla2x00_send_fo_notification(fc_lun_t *o + + } + +- if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_SPINUP) { +- qla2x00_spinup(new_lp->fcport->ha, new_lp->fcport, new_lp->lun); ++ if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_SPINUP || ++ new_lp->fcport->notify_type == FO_NOTIFY_TYPE_SPINUP ) { ++ rval = qla2x00_spinup(new_lp->fcport->ha, new_lp->fcport, ++ new_lp->lun); + } + + if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_CDB) { +@@ -2320,7 +2227,11 @@ qla2x00_send_fo_notification(fc_lun_t *o + pkt->p.cmd.entry_type = COMMAND_A64_TYPE; + pkt->p.cmd.entry_count = 1; + pkt->p.cmd.lun = cpu_to_le16(lun); ++#if defined(EXTENDED_IDS) ++ pkt->p.cmd.target = cpu_to_le16(loop_id); ++#else + pkt->p.cmd.target = (uint8_t)loop_id; ++#endif + /* FIXME: How do you know the direction ???? */ + /* This has same issues as passthur commands - you + * need more than just the CDB. +@@ -2332,9 +2243,9 @@ qla2x00_send_fo_notification(fc_lun_t *o + pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1); + pkt->p.cmd.byte_count = __constant_cpu_to_le32(0); + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32( +- pci_dma_lo32(phys_address + sizeof(sts_entry_t))); ++ LSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32( +- pci_dma_hi32(phys_address + sizeof(sts_entry_t))); ++ MSD(phys_address + sizeof(sts_entry_t))); + pkt->p.cmd.dseg_0_length = __constant_cpu_to_le32(0); + + rval = qla2x00_issue_iocb(old_ha, pkt, phys_address, +@@ -2536,19 +2447,6 @@ qla2x00_fo_missing_port_summary(scsi_qla + sizeof(EXT_DEVICEDATAENTRY); + + transfer_size = sizeof(EXT_DEVICEDATAENTRY); +- ret = verify_area(VERIFY_WRITE, +- (void *)(pstart_of_entry_list + +- current_offset), transfer_size); +- +- if (ret) { +- *ret_status = EXT_STATUS_COPY_ERR; +- DEBUG10(printk("%s(%ld): inst=%ld " +- "ERROR verify wrt rsp bufaddr=%p\n", +- __func__, ha->host_no, ha->instance, +- (void *)(pstart_of_entry_list + +- current_offset));) +- break; +- } + + /* now copy up this dd_entry to user */ + usr_temp = (uint8_t *)pstart_of_entry_list + +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.cfg linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.cfg +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.cfg 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.cfg 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -20,10 +20,10 @@ + /* + * QLogic ISP2x00 Multi-path LUN Support Driver + */ +-static int MaxPathsPerDevice = 0; +-static int MaxRetriesPerPath = 0; +-static int MaxRetriesPerIo = 0; +-static int qlFailoverNotifyType = 0; ++int MaxPathsPerDevice = 0; ++int MaxRetriesPerPath = 0; ++int MaxRetriesPerIo = 0; ++int qlFailoverNotifyType = 0; + #if defined(MODULE) + /* insmod qla2100 ql2xopts= */ + MODULE_PARM(MaxPathsPerDevice, "i"); +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_fo.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_fo.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gbl.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gbl.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gbl.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gbl.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +-* Copyright (C) 2003 Qlogic Corporation ++* Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -29,20 +29,26 @@ extern "C" + #endif + + #include "exioct.h" ++ ++#if !defined(ISP200) ++ + #include "qla_fo.h" + + /* + * Global Data in qla_fo.c source file. + */ + extern SysFoParams_t qla_fo_params; ++#endif + /* + * Global Function Prototypes in qla2x00.c source file. + */ +-static int qla2x00_get_prop_xstr(scsi_qla_host_t *, char *, uint8_t *, int); ++extern int qla2x00_get_prop_xstr(scsi_qla_host_t *, char *, uint8_t *, int); + + extern void qla2x00_formatted_print(char *, uint64_t , uint8_t, uint8_t); + extern void qla2x00_formatted_dump_buffer(char *, uint8_t *, uint8_t , + uint32_t ); ++extern inline void *kmem_zalloc( int siz, int code, int id); ++#if !defined(ISP200) + extern uint32_t qla2x00_fo_path_change(uint32_t , + fc_lun_t *, fc_lun_t *); + extern scsi_qla_host_t *qla2x00_get_hba(int); +@@ -65,6 +71,7 @@ extern BOOL mp_config_required; + extern int qla2x00_cfg_init (scsi_qla_host_t *ha); + extern int qla2x00_cfg_path_discovery(scsi_qla_host_t *ha); + extern int qla2x00_cfg_event_notify(scsi_qla_host_t *ha, uint32_t i_type); ++extern int qla2x00_cfg_remap(scsi_qla_host_t *); + extern fc_lun_t *qla2x00_cfg_failover(scsi_qla_host_t *ha, fc_lun_t *fp, + os_tgt_t *tgt, srb_t *sp); + extern int qla2x00_cfg_get_paths( EXT_IOCTL *, FO_GET_PATHS *, int); +@@ -77,15 +84,19 @@ extern mp_host_t * qla2x00_alloc_host(sc + extern BOOL qla2x00_fo_check(scsi_qla_host_t *ha, srb_t *sp); + extern mp_path_t *qla2x00_find_path_by_name(mp_host_t *, mp_path_list_t *, + uint8_t *name); ++extern int16_t qla2x00_cfg_lookup_device(unsigned char *response_data); ++extern int qla2x00_combine_by_lunid( void *host, uint16_t dev_id, ++ fc_port_t *port, uint16_t pathid); ++extern int qla2x00_export_target( void *host, uint16_t dev_id, ++ fc_port_t *port, uint16_t pathid); + + /* + * Global Function Prototypes in qla_cfgln.c source file. + */ +-extern inline void *kmem_zalloc( int siz, int code, int id); + extern void qla2x00_cfg_build_path_tree( scsi_qla_host_t *ha); + extern BOOL qla2x00_update_mp_device(mp_host_t *, fc_port_t *, uint16_t, + uint16_t); +-extern void qla2x00_cfg_display_devices(void); ++extern void qla2x00_cfg_display_devices( int flag ); + + /* + * Global Function Prototypes in qla_ioctl.c source file. +@@ -95,6 +106,26 @@ extern int qla2x00_fo_missing_port_summa + EXT_DEVICEDATAENTRY *, void *, uint32_t, uint32_t *, uint32_t *); + extern UINT8 + qla2x00_is_fcport_in_config(scsi_qla_host_t *ha, fc_port_t *fcport); ++extern UINT8 ++qla2x00_is_fcport_in_foconfig(scsi_qla_host_t *ha, fc_port_t *fcport); ++#endif ++ ++/* ++ * Global Function Prototypes for qla_gs.c functions ++ */ ++extern int ++qla2x00_mgmt_svr_login(scsi_qla_host_t *); ++extern void ++qla2x00_fdmi_srb_tmpmem_free(srb_t *); ++extern void ++qla2x00_fdmi_register(scsi_qla_host_t *); ++extern void ++qla2x00_fdmi_register_intr(scsi_qla_host_t *); ++ ++#if defined(QLA_CONFIG_COMPAT) ++extern int qla2x00_ioctl32(unsigned int, unsigned int, unsigned long, ++ struct file *); ++#endif + + #if defined(__cplusplus) + } +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gs.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gs.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gs.c 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gs.c 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,1647 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 Qlogic Corporation ++ * (www.qlogic.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, or (at your option) any ++ * later version. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ ******************************************************************************/ ++ ++#define QLA_INIT_FDMI_CTIU_HDR(ha, ct_hdr) \ ++ ct_hdr.revision = GS4_REVISION; \ ++ ct_hdr.gs_type = GS_TYPE_MGMT_SERVER; \ ++ ct_hdr.gs_subtype = GS_SUBTYPE_FDMI_HBA; ++ ++struct ct_info { ++ uint16_t ct_cmd; ++ void *pct_buf; ++ dma_addr_t ct_buf_dma_addr; ++}; ++ ++ ++/* Local functions */ ++static __inline__ void ++qla2x00_init_ms_mbx_iocb(scsi_qla_host_t *, uint32_t, uint32_t, uint16_t, ++ uint16_t, uint16_t); ++ ++static __inline__ ms_iocb_entry_t * ++qla2x00_alloc_ms_mbx_iocb(scsi_qla_host_t *); ++ ++static __inline__ void ++qla2x00_free_ms_mbx_iocb(scsi_qla_host_t *); ++ ++static __inline__ int ++qla2x00_fdmi_ctiu_mem_alloc(scsi_qla_host_t *, size_t); ++ ++static __inline__ void ++qla2x00_fdmi_ctiu_mem_free(scsi_qla_host_t *, size_t); ++ ++static __inline__ void ++qla2x00_fdmi_setup_hbaattr(scsi_qla_host_t *, hba_attr_t *); ++ ++static __inline__ void ++qla2x00_fdmi_setup_rhbainfo(scsi_qla_host_t *, ct_iu_rhba_t *); ++ ++static __inline__ void ++qla2x00_fdmi_setup_rhatinfo(scsi_qla_host_t *, ct_iu_rhat_t *); ++ ++static __inline__ void ++qla2x00_fdmi_setup_rpainfo(scsi_qla_host_t *, ct_iu_rpa_t *); ++ ++static __inline__ void ++qla2x00_fdmi_srb_init(scsi_qla_host_t *, srb_t *, uint16_t, uint16_t); ++ ++static __inline__ void ++qla2x00_init_req_q_ms_iocb(scsi_qla_host_t *, ms_iocb_entry_t *, ++ dma_addr_t, size_t, size_t, uint8_t, uint16_t, uint16_t); ++ ++static __inline__ int ++qla2x00_fdmi_srb_tmpmem_alloc(scsi_qla_host_t *ha, srb_t *sp); ++ ++static __inline__ int ++qla2x00_fdmi_sc_request_dev_bufs_alloc(scsi_qla_host_t *, Scsi_Cmnd *); ++ ++static __inline__ void ++qla2x00_fdmi_sc_request_dev_bufs_free(Scsi_Cmnd *); ++ ++STATIC int ++qla2x00_fdmi_cmnd_srb_alloc(scsi_qla_host_t *, srb_t **); ++ ++STATIC void ++qla2x00_fdmi_cmnd_srb_free(scsi_qla_host_t *, srb_t *); ++ ++STATIC int ++qla2x00_fdmi_rhba(scsi_qla_host_t *, uint8_t *); ++ ++STATIC int ++qla2x00_fdmi_ghat(scsi_qla_host_t *, ct_iu_ghat_rsp_t *, uint8_t *); ++ ++STATIC int ++qla2x00_fdmi_rpa(scsi_qla_host_t *, uint8_t *); ++ ++STATIC int ++qla2x00_fdmi_dhba(scsi_qla_host_t *, uint8_t *); ++ ++STATIC int ++qla2x00_fdmi_rhba_intr(scsi_qla_host_t *); ++ ++STATIC int ++qla2x00_fdmi_rhat_intr(scsi_qla_host_t *, Scsi_Cmnd *, void *, dma_addr_t); ++ ++STATIC int ++qla2x00_fdmi_rpa_intr(scsi_qla_host_t *, Scsi_Cmnd *, void *, dma_addr_t); ++ ++STATIC void ++qla2x00_fdmi_done(Scsi_Cmnd *); ++ ++/* functions to export */ ++int ++qla2x00_mgmt_svr_login(scsi_qla_host_t *ha); ++ ++void ++qla2x00_fdmi_srb_tmpmem_free(srb_t *sp); ++ ++void ++qla2x00_fdmi_register(scsi_qla_host_t *); ++ ++void ++qla2x00_fdmi_register_intr(scsi_qla_host_t *); ++ ++ ++/* ++ * qla2x00_mgmt_svr_login ++ * Login management server. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++int ++qla2x00_mgmt_svr_login(scsi_qla_host_t *ha) ++{ ++ int tmp_rval = 0; ++ uint16_t mb[MAILBOX_REGISTER_COUNT]; ++ ++ DEBUG13(printk("%s(%ld): entered\n", ++ __func__, ha->host_no);) ++ ++ /* check on management server login status */ ++ if (ha->flags.management_server_logged_in == 0) { ++ /* login to management server device */ ++ ++ tmp_rval = qla2x00_login_fabric(ha, MANAGEMENT_SERVER, ++ 0xff, 0xff, 0xfa, &mb[0], BIT_1); ++ ++ if (tmp_rval != 0 || mb[0] != 0x4000) { ++ ++ DEBUG2_13(printk( ++ "%s(%ld): inst=%ld ERROR login to MS.\n", ++ __func__, ha->host_no, ha->instance);) ++ ++ return (QL_STATUS_ERROR); ++ } ++ ++ ha->flags.management_server_logged_in = 1; ++ DEBUG13(printk("%s(%ld): success login to MS.\n", ++ __func__, ha->host_no);) ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", ++ __func__, ha->host_no);) ++ ++ return (QL_STATUS_SUCCESS); ++} ++ ++/* ++ * qla2x00_fdmi_register ++ * Uses execute iocb mbx command to perform fdmi registration ++ * functions. If functions cannot be performed or returned ++ * error, just return without error, since this is not a critical ++ * function that must succeed. ++ * It is assumed the driver has already login to management svr. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * ++ * Returns: ++ * void ++ * ++ * Context: ++ * Kernel context. ++ */ ++void ++qla2x00_fdmi_register(scsi_qla_host_t *ha) ++{ ++ int rval; ++ uint8_t fdmi_stat = FDMI_STAT_OK; ++ ms_iocb_entry_t *ms_pkt; ++ ct_iu_ghat_rsp_t tmp_hat_buf; ++ ct_iu_rhba_t hba_buf; ++ ++ DEBUG13(printk("%s(%ld): entered.\n", __func__, ha->host_no);) ++ ++ /* allocate MSIOCB */ ++ ms_pkt = qla2x00_alloc_ms_mbx_iocb(ha); ++ ++ if (ms_pkt == NULL) { ++ /* error cannot perform register functions */ ++ DEBUG2_13(printk("%s(%ld): MSIOCB alloc failed.\n", ++ __func__, ha->host_no);) ++ return; ++ } ++ ++ /* register HBA */ ++ rval = qla2x00_fdmi_rhba(ha, &fdmi_stat); ++ ++ /* if already registered, get and compare HBA attributes */ ++ if (rval != QL_STATUS_SUCCESS) { ++ if (fdmi_stat == FDMI_STAT_ALREADY_REGISTERED) { ++ DEBUG2_13(printk("%s(%ld): HBA already registered. " ++ "Get/compare attributes.\n", ++ __func__, ha->host_no);) ++ ++ if (qla2x00_fdmi_ghat(ha, &tmp_hat_buf, &fdmi_stat)) { ++ /* error */ ++ DEBUG2_13(printk("%s(%ld): GHAT failed. " ++ "De-registering.\n", ++ __func__, ha->host_no);) ++ /* deregister and return */ ++ qla2x00_fdmi_dhba(ha, &fdmi_stat); ++ return; ++ } ++ } else { ++ /* error */ ++ DEBUG2_13(printk("%s(%ld): RHBA failed. exiting.\n", ++ __func__, ha->host_no);) ++ return; ++ } ++ ++ DEBUG13(printk("%s(%ld): ghat rsp buf dump:\n", ++ __func__, ha->host_no);) ++ DEBUG13(qla2x00_dump_buffer((uint8_t*)&tmp_hat_buf.plist, ++ sizeof(reg_port_list_t) + sizeof(hba_attr_t));) ++ ++ /* rebuild hba values locally and compare; if different ++ * attribute values, de-register and register the hba. ++ */ ++ memset(&hba_buf, 0, sizeof(ct_iu_rhba_t)); ++ qla2x00_fdmi_setup_rhbainfo(ha, &hba_buf); ++ ++ DEBUG13(printk("%s(%ld): compare hba buf dump:\n", ++ __func__, ha->host_no);) ++ DEBUG13(qla2x00_dump_buffer((uint8_t*)&hba_buf.plist, ++ sizeof(reg_port_list_t) + sizeof(hba_attr_t));) ++ ++ if (memcmp(&hba_buf.plist, &tmp_hat_buf.plist, ++ sizeof(reg_port_list_t) + sizeof(hba_attr_t)) != 0) { ++ /* deregister and re-register */ ++ DEBUG13(printk("%s(%ld): different attributes already " ++ "registered. deregistering...\n", ++ __func__, ha->host_no);) ++ ++ rval = qla2x00_fdmi_dhba(ha, &fdmi_stat); ++ if (rval != QL_STATUS_SUCCESS) { ++ /* error */ ++ DEBUG2_13(printk("%s(%ld): DHBA failed.\n", ++ __func__, ha->host_no);) ++ return; ++ } ++ ++ DEBUG13(printk("%s(%ld): deregister HBA success. " ++ "re-registering...\n", ++ __func__, ha->host_no);) ++ ++ /* try again */ ++ rval = qla2x00_fdmi_rhba(ha, &fdmi_stat); ++ if (rval != QL_STATUS_SUCCESS || ++ fdmi_stat != FDMI_STAT_OK) { ++ /* error */ ++ DEBUG2_13(printk( ++ "%s(%ld): RHBA failed again-exiting.\n", ++ __func__, ha->host_no);) ++ return; ++ } ++ } ++ } ++ ++ /* register port attributes. This call should always succeed ++ * if the command is supported. ++ */ ++ qla2x00_fdmi_rpa(ha, &fdmi_stat); ++ ++ /* free MSIOCB */ ++ qla2x00_free_ms_mbx_iocb(ha); ++ ++ DEBUG13(printk("%s(%ld): exiting\n", __func__, ha->host_no);) ++} ++ ++static __inline__ int ++qla2x00_fdmi_srb_tmpmem_alloc(scsi_qla_host_t *ha, srb_t *sp) ++{ ++ if (sp == NULL) { ++ return (QL_STATUS_ERROR); ++ } ++ ++ /* initialize for proper handling of error case */ ++ sp->tgt_queue = NULL; ++ sp->lun_queue = NULL; ++ sp->fclun = NULL; ++ ++ sp->tgt_queue = KMEM_ZALLOC(sizeof(os_tgt_t), 60); ++ if (sp->tgt_queue == NULL) { ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in tmp tgt queue allocation.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ sp->lun_queue = KMEM_ZALLOC(sizeof(os_lun_t), 61); ++ if (sp->lun_queue == NULL) { ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in tmp lun queue allocation.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ sp->fclun = KMEM_ZALLOC(sizeof(fc_lun_t), 62); ++ if (sp->fclun == NULL) { ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in tmp fclun queue allocation.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ sp->fclun->fcport = KMEM_ZALLOC(sizeof(fc_port_t), 63); ++ if (sp->fclun->fcport == NULL) { ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in tmp fcport queue allocation.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ return (QL_STATUS_SUCCESS); ++} ++ ++void ++qla2x00_fdmi_srb_tmpmem_free(srb_t *sp) ++{ ++ if (sp->fclun != NULL) { ++ if (sp->fclun->fcport != NULL) { ++ KMEM_FREE(sp->fclun->fcport, sizeof(fc_port_t)); ++ } ++ ++ KMEM_FREE(sp->fclun, sizeof(fc_lun_t)); ++ } ++ ++ if (sp->lun_queue != NULL) { ++ KMEM_FREE(sp->lun_queue, sizeof(os_lun_t)); ++ } ++ ++ if (sp->tgt_queue != NULL) { ++ KMEM_FREE(sp->tgt_queue, sizeof(os_tgt_t)); ++ } ++ ++} ++ ++static __inline__ int ++qla2x00_fdmi_sc_request_dev_bufs_alloc(scsi_qla_host_t *ha, Scsi_Cmnd *pcmd) ++{ ++ ++ pcmd->device = KMEM_ZALLOC(sizeof(Scsi_Device), 66); ++ if (pcmd->device == NULL) { ++ /* error */ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ pcmd->sc_request = KMEM_ZALLOC(sizeof(Scsi_Request), 67); ++ if (pcmd->sc_request == NULL) { ++ /* error */ ++ qla2x00_fdmi_sc_request_dev_bufs_free(pcmd); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ pcmd->sc_request->sr_buffer = KMEM_ZALLOC(sizeof(struct ct_info), 68); ++ if (pcmd->sc_request->sr_buffer == NULL) { ++ /* error */ ++ qla2x00_fdmi_sc_request_dev_bufs_free(pcmd); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ return (QL_STATUS_SUCCESS); ++} ++ ++static __inline__ void ++qla2x00_fdmi_sc_request_dev_bufs_free(Scsi_Cmnd *pcmd) ++{ ++ if (pcmd->sc_request != NULL) { ++ if (pcmd->sc_request->sr_buffer != NULL) { ++ KMEM_FREE(pcmd->sc_request->sr_buffer, ++ sizeof(struct ct_info)); ++ pcmd->sc_request->sr_buffer = NULL; ++ } ++ ++ KMEM_FREE(pcmd->sc_request, sizeof(Scsi_Request)); ++ pcmd->sc_request = NULL; ++ } ++ ++ if (pcmd->device != NULL) { ++ KMEM_FREE(pcmd->device, sizeof(Scsi_Device)); ++ pcmd->device = NULL; ++ } ++} ++ ++STATIC int ++qla2x00_fdmi_cmnd_srb_alloc(scsi_qla_host_t *ha, srb_t **sp) ++{ ++ struct ct_info *pdata; ++ void *pctbuf; ++ dma_addr_t ctbuf_dma_addr; ++ ++ /* Allocate SRB block. */ ++ if ((*sp = qla2x00_get_new_sp(ha)) == NULL) { ++ ++ DEBUG2_13(printk("%s(%ld): ERROR cannot alloc sp.\n", ++ __func__, ha->host_no);) ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ if (qla2x00_fdmi_srb_tmpmem_alloc(ha, *sp)) { ++ /* error */ ++ atomic_set(&(*sp)->ref_count, 0); ++ add_to_free_queue(ha, *sp); ++ *sp = NULL; ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ (*sp)->cmd = KMEM_ZALLOC(sizeof(Scsi_Cmnd), 64); ++ if ((*sp)->cmd == NULL) { ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in scsi_cmnd mem allocation.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_srb_tmpmem_free(*sp); ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ /* These buffers are used and freed during callback time */ ++ if (qla2x00_fdmi_sc_request_dev_bufs_alloc(ha, (*sp)->cmd)) { ++ /* error */ ++ ++ qla2x00_fdmi_srb_tmpmem_free(*sp); ++ KMEM_FREE((*sp)->cmd, sizeof(Scsi_Cmnd)); ++ (*sp)->cmd = NULL; ++ atomic_set(&(*sp)->ref_count, 0); ++ add_to_free_queue(ha, *sp); ++ *sp = NULL; ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ pctbuf = pci_alloc_consistent(ha->pdev, sizeof(ct_fdmi_pkt_t), ++ &ctbuf_dma_addr); ++ if (pctbuf == NULL) { ++ /* error */ ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ERROR in ctiu mem allocation.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_fdmi_sc_request_dev_bufs_free((*sp)->cmd); ++ qla2x00_fdmi_srb_tmpmem_free(*sp); ++ KMEM_FREE((*sp)->cmd, sizeof(Scsi_Cmnd)); ++ (*sp)->cmd = NULL; ++ atomic_set(&(*sp)->ref_count, 0); ++ add_to_free_queue(ha, *sp); ++ *sp = NULL; ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ /* sr_buffer is used to save some data for callback time */ ++ pdata = (*sp)->cmd->sc_request->sr_buffer; ++ pdata->pct_buf = pctbuf; ++ pdata->ct_buf_dma_addr = ctbuf_dma_addr; ++ ++ return (QL_STATUS_SUCCESS); ++} ++ ++STATIC void ++qla2x00_fdmi_cmnd_srb_free(scsi_qla_host_t *ha, srb_t *sp) ++{ ++ struct ct_info *pdata; ++ ++ if (sp == NULL) ++ return; ++ ++ if (sp->cmd->sc_request != NULL && ++ (pdata = sp->cmd->sc_request->sr_buffer) != NULL) { ++ if (pdata->pct_buf != NULL) { ++ pci_free_consistent(ha->pdev, sizeof(ct_fdmi_pkt_t), ++ pdata->pct_buf, pdata->ct_buf_dma_addr); ++ } ++ } ++ ++ qla2x00_fdmi_sc_request_dev_bufs_free(sp->cmd); ++ ++ if (sp->cmd != NULL) { ++ KMEM_FREE(sp->cmd, sizeof(Scsi_Cmnd)); ++ sp->cmd = NULL; ++ } ++ ++ qla2x00_fdmi_srb_tmpmem_free(sp); ++ ++ atomic_set(&sp->ref_count, 0); ++ add_to_free_queue(ha, sp); ++} ++ ++STATIC void ++qla2x00_fdmi_done(Scsi_Cmnd *pscsi_cmd) ++{ ++ uint8_t free_mem = TRUE; ++ uint16_t cmd_code; ++ struct Scsi_Host *host; ++ scsi_qla_host_t *ha; ++ struct ct_info *pdata; ++ ct_iu_preamble_t *pct; ++ ++ host = pscsi_cmd->host; ++ if (host == NULL) { ++ /* error */ ++ DEBUG2_13(printk("%s: entered. no host found.\n", __func__);) ++ return; ++ } ++ ++ ha = (scsi_qla_host_t *) host->hostdata; ++ ++ DEBUG13(printk("%s(%ld): entered.\n", __func__ ,ha->host_no);) ++ ++ /* read data and free memory */ ++ if (pscsi_cmd->sc_request == NULL) { ++ /* error */ ++ return; ++ } ++ if ((pdata = (struct ct_info *)pscsi_cmd->sc_request->sr_buffer) == ++ NULL) { ++ /* error */ ++ return; ++ } ++ ++ pct = pdata->pct_buf; ++ ++ cmd_code = be16_to_cpu(pdata->ct_cmd); ++ DEBUG13(printk("%s(%ld): got cmd %x, result=%x. rsp dump:\n", ++ __func__ ,ha->host_no, cmd_code, CMD_RESULT(pscsi_cmd));) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)pct, sizeof(ct_iu_preamble_t));) ++ ++ switch (cmd_code) { ++ case RHBA: ++ if (pct->cmd_rsp_code != ++ __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) { ++ DEBUG2_13(printk("%s(%ld): RHBA failed, rejected " ++ "request, rhba_rsp:\n", __func__, ha->host_no);) ++ DEBUG2_13(qla2x00_dump_buffer((uint8_t *)pct, ++ sizeof(ct_iu_preamble_t));) ++ ++ if ((pct->reason == FDMI_REASON_CANNOT_PERFORM) && ++ (pct->explanation == ++ FDMI_EXPL_HBA_ALREADY_REGISTERED)) { ++ ++ DEBUG13(printk( ++ "%s(%ld): RHBA already registered. " ++ "calling RHAT.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_fdmi_rhat_intr(ha, pscsi_cmd, ++ pdata->pct_buf, pdata->ct_buf_dma_addr); ++ free_mem = FALSE; ++ } else { ++ /* error. just free mem and exit */ ++ DEBUG2_13(printk("%s(%ld): RHBA failed. " ++ "going to free memory.\n", ++ __func__, ha->host_no);) ++ } ++ } else { ++ /* command completed. */ ++ DEBUG13(printk( ++ "%s(%ld): RHBA finished ok. going to call RPA.\n", ++ __func__, ha->host_no);) ++ qla2x00_fdmi_rpa_intr(ha, pscsi_cmd, pdata->pct_buf, ++ pdata->ct_buf_dma_addr); ++ free_mem = FALSE; ++ } ++ ++ break; ++ ++ case RHAT: ++ /* Just go ahead and issue next command */ ++ DEBUG13(printk("%s(%ld): RHAT rspcode=%x. going to call RPA.\n", ++ __func__, ha->host_no, be16_to_cpu(pct->cmd_rsp_code));) ++ qla2x00_fdmi_rpa_intr(ha, pscsi_cmd, pdata->pct_buf, ++ pdata->ct_buf_dma_addr); ++ free_mem = FALSE; ++ break; ++ ++ case RPA: ++ DEBUG13(printk("%s(%ld): got RPA rspcode=%x.\n", ++ __func__ ,ha->host_no, be16_to_cpu(pct->cmd_rsp_code));) ++ ++ /* This is assumed to be last command issued in this ++ * chain. Proceed to free memory. ++ */ ++ break; ++ ++ default: ++ DEBUG13(printk("%s(%ld): cmd_code=%x not processed.\n", ++ __func__ ,ha->host_no, cmd_code);) ++ break; ++ } ++ ++ if (free_mem) { ++ DEBUG13(printk("%s(%ld): going to free mem.\n", ++ __func__ ,ha->host_no);) ++ if (pdata->pct_buf != NULL) { ++ pci_free_consistent(ha->pdev, sizeof(ct_fdmi_pkt_t), ++ pdata->pct_buf, pdata->ct_buf_dma_addr); ++ } ++ qla2x00_fdmi_sc_request_dev_bufs_free(pscsi_cmd); ++ KMEM_FREE(pscsi_cmd, sizeof(Scsi_Cmnd)); ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", __func__ ,ha->host_no);) ++} ++ ++static __inline__ void ++qla2x00_fdmi_srb_init(scsi_qla_host_t *ha, srb_t *sp, uint16_t tov, ++ uint16_t ct_cmd_code) ++{ ++ struct ct_info *pdata; ++ ++ /* setup sp for this command */ ++ sp->ha = ha; ++ sp->flags = SRB_FDMI_CMD; ++ sp->fclun->lun = 0; ++ sp->fclun->flags = 0; ++ sp->lun_queue->fclun = sp->fclun; ++ sp->lun_queue->fclun->fcport->ha = ha; ++ sp->lun_queue->q_state = LUN_STATE_READY; ++ sp->lun_queue->q_lock = SPIN_LOCK_UNLOCKED; ++ sp->tgt_queue->ha = ha; ++ sp->tgt_queue->vis_port = sp->fclun->fcport; ++ ++ /* init scsi_cmd */ ++ CMD_SP(sp->cmd) = (void *)sp; ++ sp->cmd->host = ha->host; ++ sp->cmd->scsi_done = qla2x00_fdmi_done; ++ CMD_TIMEOUT(sp->cmd) = tov; ++ /* sr_buffer is used to save some data for callback time */ ++ pdata = (struct ct_info *)sp->cmd->sc_request->sr_buffer; ++ pdata->ct_cmd = ct_cmd_code; ++} ++ ++static __inline__ void ++qla2x00_init_req_q_ms_iocb(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt, ++ dma_addr_t ct_buf_dma, size_t req_buf_size, size_t rsp_buf_size, ++ uint8_t loop_id, uint16_t ctrl_flags, uint16_t tov) ++{ ++ ms_pkt->entry_type = MS_IOCB_TYPE; ++ ms_pkt->entry_count = 1; ++ ++ ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ct_buf_dma)); ++ ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ct_buf_dma)); ++ ++ ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ct_buf_dma)); ++ ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ct_buf_dma)); ++ ++#if defined(EXTENDED_IDS) ++ ms_pkt->loop_id = __constant_cpu_to_le16(loop_id); ++#else ++ ms_pkt->loop_id = loop_id; ++#endif ++ ms_pkt->control_flags = __constant_cpu_to_le16(ctrl_flags); ++ ms_pkt->timeout = __constant_cpu_to_le16(tov); ++ ms_pkt->cmd_dsd_count = __constant_cpu_to_le16(1); ++ ms_pkt->total_dsd_count = __constant_cpu_to_le16(2); ++ ms_pkt->rsp_bytecount = cpu_to_le32(rsp_buf_size); ++ ms_pkt->req_bytecount = cpu_to_le32(req_buf_size); ++ ms_pkt->dseg_req_length = ms_pkt->req_bytecount; ++ ms_pkt->dseg_rsp_length = ms_pkt->rsp_bytecount; ++} ++ ++/* ++ * qla2x00_fdmi_register_intr ++ * Uses request queue iocb to perform fdmi registration ++ * functions. If functions cannot be performed or returned ++ * error, just return without error, since this is not a critical ++ * function that must succeed. ++ * It is assumed the driver has already login to management svr. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * ++ * Returns: ++ * void ++ * ++ * Context: ++ * Kernel context. ++ */ ++void ++qla2x00_fdmi_register_intr(scsi_qla_host_t *ha) ++{ ++ DEBUG13(printk("%s(%ld): entered.\n", __func__, ha->host_no);) ++ ++ /* start the chain of fdmi calls with RHBA */ ++ qla2x00_fdmi_rhba_intr(ha); ++ ++ DEBUG13(printk("%s(%ld): exiting\n", __func__, ha->host_no);) ++} ++ ++static __inline__ int ++qla2x00_fdmi_ctiu_mem_alloc(scsi_qla_host_t *ha, size_t buf_size) ++{ ++ int rval = QL_STATUS_SUCCESS; ++ ++ /* Get consistent memory allocated for CT commands */ ++ if (ha->ct_iu == NULL) { ++ ha->ct_iu = pci_alloc_consistent(ha->pdev, ++ buf_size, &ha->ct_iu_dma); ++ } ++ ++ if (ha->ct_iu == NULL) { ++ /* error */ ++ DEBUG2_13(printk(KERN_WARNING ++ "%s(%ld): ct_iu Memory Allocation failed.\n", ++ __func__, ha->host_no);) ++ return (QL_STATUS_ERROR); ++ } ++ ++ memset(ha->ct_iu, 0, buf_size); ++ ++ return (rval); ++} ++ ++static __inline__ void ++qla2x00_fdmi_ctiu_mem_free(scsi_qla_host_t *ha, size_t buf_size) ++{ ++ if (ha->ct_iu != NULL) { ++ pci_free_consistent(ha->pdev, ++ buf_size, ha->ct_iu, ha->ct_iu_dma); ++ ha->ct_iu = NULL; ++ } ++} ++ ++static __inline__ ms_iocb_entry_t * ++qla2x00_alloc_ms_mbx_iocb(scsi_qla_host_t *ha) ++{ ++ ms_iocb_entry_t *ms_pkt; ++ ++ if (ha->ms_iocb == NULL){ ++ ha->ms_iocb = pci_alloc_consistent(ha->pdev, ++ sizeof(ms_iocb_entry_t), &ha->ms_iocb_dma); ++ } ++ ++ if (ha->ms_iocb == NULL){ ++ /* error */ ++ printk(KERN_WARNING ++ "%s(%ld): msiocb Memory Allocation failed.\n", ++ __func__, ha->host_no); ++ return (NULL); ++ } ++ memset(ha->ms_iocb, 0, sizeof(ms_iocb_entry_t)); ++ ++ /* Get consistent memory allocated for CT commands */ ++ if (qla2x00_fdmi_ctiu_mem_alloc(ha, sizeof(ct_fdmi_pkt_t)) != ++ QL_STATUS_SUCCESS) { ++ printk(KERN_WARNING ++ "%s(%ld): ct_iu Memory Allocation failed.\n", ++ __func__, ha->host_no); ++ qla2x00_free_ms_mbx_iocb(ha); ++ return (NULL); ++ } ++ ++ /* Initialize some common fields */ ++ ms_pkt = ha->ms_iocb; ++ ++ ms_pkt->entry_type = MS_IOCB_TYPE; ++ ms_pkt->entry_count = 1; ++ ++ ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ct_iu_dma)); ++ ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ct_iu_dma)); ++ ++ ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ct_iu_dma)); ++ ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ct_iu_dma)); ++ ++ return (ms_pkt); ++} ++ ++static __inline__ void ++qla2x00_free_ms_mbx_iocb(scsi_qla_host_t *ha) ++{ ++ if (ha->ms_iocb != NULL){ ++ pci_free_consistent(ha->pdev, ++ sizeof(ms_iocb_entry_t), ha->ms_iocb, ha->ms_iocb_dma); ++ ha->ms_iocb = NULL; ++ } ++ ++ qla2x00_fdmi_ctiu_mem_free(ha, sizeof(ct_fdmi_pkt_t)); ++ ++} ++ ++static __inline__ void ++qla2x00_init_ms_mbx_iocb(scsi_qla_host_t *ha, uint32_t req_size, ++ uint32_t rsp_size, uint16_t loop_id, uint16_t ctrl_flags, uint16_t tov) ++{ ++ ms_iocb_entry_t *ms_pkt; ++ ++ ms_pkt = ha->ms_iocb; ++ ++#if defined(EXTENDED_IDS) ++ ms_pkt->loop_id = __constant_cpu_to_le16(loop_id); ++#else ++ ms_pkt->loop_id = loop_id; ++#endif ++ ms_pkt->control_flags = __constant_cpu_to_le16(ctrl_flags); ++ ms_pkt->timeout = __constant_cpu_to_le16(tov); ++ ms_pkt->cmd_dsd_count = __constant_cpu_to_le16(1); ++ ms_pkt->total_dsd_count = __constant_cpu_to_le16(2); ++ ms_pkt->rsp_bytecount = cpu_to_le32(rsp_size); ++ ms_pkt->req_bytecount = cpu_to_le32(req_size); ++ ms_pkt->dseg_req_length = ms_pkt->req_bytecount; ++ ms_pkt->dseg_rsp_length = ms_pkt->rsp_bytecount; ++ ++} ++ ++static __inline__ void ++qla2x00_fdmi_setup_hbaattr(scsi_qla_host_t *ha, hba_attr_t *attr) ++{ ++ char tmp_str[80]; ++ uint32_t tmp_sn; ++ qla_boards_t *bdp; ++ ++ attr->count = __constant_cpu_to_be32(HBA_ATTR_COUNT); ++ ++ /* node name */ ++ attr->nn.type = __constant_cpu_to_be16(T_NODE_NAME); ++ attr->nn.len = cpu_to_be16(sizeof(hba_nn_attr_t)); ++ memcpy(attr->nn.value, ha->init_cb->node_name, WWN_SIZE); ++ ++ DEBUG13(printk("%s(%ld): NODENAME=%02x%02x%02x%02x%02x" ++ "%02x%02x%02x.\n", ++ __func__, ha->host_no, attr->nn.value[0], ++ attr->nn.value[1], attr->nn.value[2], attr->nn.value[3], ++ attr->nn.value[4], attr->nn.value[5], attr->nn.value[6], ++ attr->nn.value[7]);) ++ ++ /* company name */ ++ attr->man.type = __constant_cpu_to_be16(T_MANUFACTURER); ++ attr->man.len = cpu_to_be16(sizeof(hba_man_attr_t)); ++ sprintf((char *)attr->man.value, QLOGIC_COMPANY_NAME); ++ ++ DEBUG13(printk("%s(%ld): MANUFACTURER=%s.\n", ++ __func__, ha->host_no, attr->man.value);) ++ ++ /* serial number */ ++ attr->sn.type = __constant_cpu_to_be16(T_SERIAL_NUMBER); ++ attr->sn.len = cpu_to_be16(sizeof(hba_sn_attr_t)); ++ tmp_sn = ((ha->serial0 & 0x1f) << 16) | (ha->serial2 << 8) | ++ ha->serial1; ++ sprintf((char *)attr->sn.value, "%c%05d", ++ ('A' + tmp_sn/100000), (tmp_sn%100000)); ++ ++ DEBUG13(printk("%s(%ld): SERIALNO=%s.\n", ++ __func__, ha->host_no, attr->sn.value);) ++ ++ /* model name */ ++ attr->mod.type = __constant_cpu_to_be16(T_MODEL); ++ attr->mod.len = cpu_to_be16(sizeof(hba_mod_attr_t)); ++ strncpy((char *)attr->mod.value, ha->model_number, NVRAM_MODEL_SIZE); ++ ++ DEBUG13(printk("%s(%ld): MODEL_NAME=%s.\n", ++ __func__, ha->host_no, attr->mod.value);) ++ ++ /* model description */ ++ attr->mod_desc.type = __constant_cpu_to_be16(T_MODEL_DESCRIPTION); ++ attr->mod_desc.len = cpu_to_be16(sizeof(hba_mod_desc_attr_t)); ++ strncpy((char *)attr->mod_desc.value, ha->model_desc, 80); ++ ++ DEBUG13(printk("%s(%ld): MODEL_DESC=%s.\n", ++ __func__, ha->host_no, attr->mod_desc.value);) ++ ++ /* hardware version */ ++ attr->hv.type = __constant_cpu_to_be16(T_HARDWARE_VERSION); ++ attr->hv.len = cpu_to_be16(sizeof(hba_hv_attr_t)); ++ /* hw_id_version contains either valid hw_id for 2312 and later NVRAM ++ * or NULLs. ++ */ ++ strncpy((char *)attr->hv.value, ha->hw_id_version, NVRAM_HW_ID_SIZE); ++ ++ DEBUG13(printk("%s(%ld): HARDWAREVER=%s.\n", ++ __func__, ha->host_no, attr->hv.value);) ++ ++ /* driver version */ ++ attr->dv.type = __constant_cpu_to_be16(T_DRIVER_VERSION); ++ attr->dv.len = cpu_to_be16(sizeof(hba_dv_attr_t)); ++ strncpy((char *)attr->dv.value, qla2x00_version_str, ++ QLA_DRVR_VERSION_LEN); ++ ++ DEBUG13(printk("%s(%ld): DRIVERVER=%s.\n", ++ __func__, ha->host_no, qla2x00_version_str);) ++ ++ /* opt rom version */ ++ attr->or.type = __constant_cpu_to_be16(T_OPTION_ROM_VERSION); ++ attr->or.len = cpu_to_be16(sizeof(hba_or_attr_t)); ++ sprintf((char *)attr->or.value, "%d.%d", ha->bios_revision[1], ++ ha->bios_revision[0]); ++ ++ DEBUG13(printk("%s(%ld): OPTROMVER=%s.\n", ++ __func__, ha->host_no, attr->or.value);) ++ ++ /* firmware version */ ++ attr->fw.type = __constant_cpu_to_be16(T_FIRMWARE_VERSION); ++ attr->fw.len = cpu_to_be16(sizeof(hba_fw_attr_t)); ++ bdp = &QLBoardTbl_fc[ha->devnum]; ++ sprintf((char *)attr->fw.value, "%2d.%02d.%02d", bdp->fwver[0], ++ bdp->fwver[1], bdp->fwver[2]); ++ ++ DEBUG13(printk("%s(%ld): FIRMWAREVER=%s.\n", ++ __func__, ha->host_no, attr->fw.value);) ++ ++ /* OS name/version */ ++ attr->os.type = __constant_cpu_to_be16(T_OS_NAME_AND_VERSION); ++ attr->os.len = cpu_to_be16(sizeof(hba_os_attr_t)); ++ sprintf(tmp_str, "%s %s", system_utsname.sysname, ++ system_utsname.release); ++ strncpy((char *)attr->os.value, tmp_str, 16); ++ ++ DEBUG13(printk("%s(%ld): OSNAME=%s.\n", ++ __func__, ha->host_no, tmp_str);) ++} ++ ++static __inline__ void ++qla2x00_fdmi_setup_rhbainfo(scsi_qla_host_t *ha, ct_iu_rhba_t *ct) ++{ ++ memcpy(ct->hba_identifier, ha->init_cb->port_name, WWN_SIZE); ++ ct->plist.num_ports = __constant_cpu_to_be32(1); ++ memcpy(ct->plist.port_entry, ha->init_cb->port_name, WWN_SIZE); ++ ++ DEBUG13(printk("%s(%ld): RHBA identifier=%02x%02x%02x%02x%02x" ++ "%02x%02x%02x.\n", ++ __func__, ha->host_no, ct->hba_identifier[0], ++ ct->hba_identifier[1], ct->hba_identifier[2], ct->hba_identifier[3], ++ ct->hba_identifier[4], ct->hba_identifier[5], ct->hba_identifier[6], ++ ct->hba_identifier[7]);) ++ ++ qla2x00_fdmi_setup_hbaattr(ha, &ct->attr); ++} ++ ++static __inline__ void ++qla2x00_fdmi_setup_rhatinfo(scsi_qla_host_t *ha, ct_iu_rhat_t *ct) ++{ ++ memcpy(ct->hba_identifier, ha->init_cb->port_name, WWN_SIZE); ++ ++ DEBUG13(printk("%s(%ld): RHAT identifier=%02x%02x%02x%02x%02x" ++ "%02x%02x%02x.\n", ++ __func__, ha->host_no, ct->hba_identifier[0], ++ ct->hba_identifier[1], ct->hba_identifier[2], ct->hba_identifier[3], ++ ct->hba_identifier[4], ct->hba_identifier[5], ct->hba_identifier[6], ++ ct->hba_identifier[7]);) ++ ++ qla2x00_fdmi_setup_hbaattr(ha, &ct->attr); ++} ++ ++/* ++ * qla2x00_fdmi_rhba ++ * FDMI register HBA via execute IOCB mbx cmd. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * pret_stat: local fdmi return status pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++STATIC int ++qla2x00_fdmi_rhba(scsi_qla_host_t *ha, uint8_t *pret_stat) ++{ ++ int rval; ++ ct_iu_rhba_t *ct; ++ ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* init */ ++ *pret_stat = FDMI_STAT_OK; ++ ++ /* Prepare common MS IOCB- Request/Response size adjusted. tov same ++ * as mailbox tov. ++ */ ++ qla2x00_init_ms_mbx_iocb(ha, sizeof(ct_iu_rhba_t), ++ sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ (CF_READ | CF_HEAD_TAG), 60 - 1); ++ ++ DEBUG13(printk("%s(%ld): done msiocb init.\n", __func__, ha->host_no);) ++ ++ /* Prepare CT request */ ++ memset(ha->ct_iu, 0, sizeof(ct_fdmi_pkt_t)); ++ ct = (ct_iu_rhba_t *)ha->ct_iu; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ct->hdr); ++ ct->hdr.cmd_rsp_code = __constant_cpu_to_be16(RHBA); ++ ++ /* Setup register hba payload. */ ++ qla2x00_fdmi_setup_rhbainfo(ha, ct); ++ ++ DEBUG13(printk("%s(%ld): done ct init. ct buf dump:\n", ++ __func__, ha->host_no);) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ct, ++ sizeof(ct_iu_rhba_t));) ++ DEBUG13(printk("msiocb buf dump:.\n");) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ha->ms_iocb, ++ sizeof(ms_iocb_entry_t));) ++ ++ /* Go issue command and wait for completion. */ ++ /* Execute MS IOCB */ ++ rval = qla2x00_issue_iocb(ha, ha->ms_iocb, ha->ms_iocb_dma, ++ sizeof(ms_iocb_entry_t)); ++ if (rval != QL_STATUS_SUCCESS) { ++ /*EMPTY*/ ++ DEBUG2_13(printk("%s(%ld): RHBA issue IOCB failed (%d).\n", ++ __func__, ha->host_no, rval);) ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } else if (ct->hdr.cmd_rsp_code != ++ __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) { ++ DEBUG2_13(printk("%s(%ld): RHBA failed, rejected " ++ "request, rhba_rsp:\n", __func__, ha->host_no);) ++ DEBUG2_13(qla2x00_dump_buffer((uint8_t *)&ct->hdr, ++ sizeof(ct_iu_preamble_t));) ++ ++ if ((ct->hdr.reason == FDMI_REASON_CANNOT_PERFORM) && ++ (ct->hdr.explanation == FDMI_EXPL_HBA_ALREADY_REGISTERED)) { ++ *pret_stat = FDMI_STAT_ALREADY_REGISTERED; ++ DEBUG2_13(printk("%s(%ld): HBA already registered.\n", ++ __func__, ha->host_no);) ++ } ++ ++ rval = QL_STATUS_ERROR; ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", __func__ ,ha->host_no);) ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_fdmi_ghat ++ * FDMI get HBA attributes via execute IOCB mbx cmd. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * prsp_buf: local ghat response buffer pointer. ++ * pret_stat: local fdmi return status pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++STATIC int ++qla2x00_fdmi_ghat(scsi_qla_host_t *ha, ct_iu_ghat_rsp_t *prsp_buf, ++ uint8_t *pret_stat) ++{ ++ int rval; ++ ct_iu_ghat_req_t *ct_req; ++ ct_iu_ghat_rsp_t *ct_rsp; ++ ct_fdmi_pkt_t *ctbuf; ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* init */ ++ *pret_stat = FDMI_STAT_OK; ++ ++ /* Prepare common MS IOCB- Request/Response size adjusted. tov ++ * same as mailbox tov. ++ */ ++ qla2x00_init_ms_mbx_iocb(ha, sizeof(ct_iu_ghat_req_t), ++ sizeof(ct_iu_ghat_rsp_t), MANAGEMENT_SERVER, ++ (CF_READ | CF_HEAD_TAG), 60 - 1); ++ ++ DEBUG13(printk("%s(%ld): done msiocb init.\n", __func__, ha->host_no);) ++ ++ /* Prepare CT request */ ++ memset(ha->ct_iu, 0, sizeof(ct_fdmi_pkt_t)); ++ ctbuf = (ct_fdmi_pkt_t *)ha->ct_iu; ++ ct_req = (ct_iu_ghat_req_t *)ha->ct_iu; ++ ct_rsp = (ct_iu_ghat_rsp_t *)ha->ct_iu; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ct_req->hdr); ++ ct_req->hdr.cmd_rsp_code = __constant_cpu_to_be16(GHAT); ++ ++ /* Setup get hba attrib payload. */ ++ memcpy(ct_req->hba_identifier, ha->init_cb->port_name, WWN_SIZE); ++ ++ DEBUG13(printk("%s(%ld): done ct init. ct buf dump:\n", ++ __func__, ha->host_no);) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ct_req, ++ sizeof(ct_fdmi_pkt_t));) ++ DEBUG13(printk("msiocb buf dump:.\n");) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ha->ms_iocb, ++ sizeof(ms_iocb_entry_t));) ++ ++ /* Go issue command and wait for completion. */ ++ /* Execute MS IOCB */ ++ rval = qla2x00_issue_iocb(ha, ha->ms_iocb, ha->ms_iocb_dma, ++ sizeof(ms_iocb_entry_t)); ++ if (rval != QL_STATUS_SUCCESS || ct_rsp->hdr.cmd_rsp_code != ++ __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) { ++ DEBUG2_13(printk("%s(%ld): GHAT IOCB failed=%d. rspcode=%x, " ++ "ct rspbuf:\n", ++ __func__, ha->host_no, rval, ++ be16_to_cpu(ct_rsp->hdr.cmd_rsp_code));) ++ DEBUG2_13(qla2x00_dump_buffer((uint8_t *)ct_rsp, ++ sizeof(ct_iu_ghat_rsp_t));) ++ ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } else { ++ /* copy response */ ++ memcpy(prsp_buf, ct_rsp, sizeof(ct_iu_ghat_rsp_t)); ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", __func__ ,ha->host_no);) ++ ++ return (rval); ++} ++ ++static __inline__ void ++qla2x00_fdmi_setup_rpainfo(scsi_qla_host_t *ha, ct_iu_rpa_t *ct) ++{ ++ /* Setup register port payload. */ ++ memcpy(ct->portname, ha->init_cb->port_name, WWN_SIZE); ++ ++ ct->attr.count = __constant_cpu_to_be32(PORT_ATTR_COUNT); ++ ++ /* FC4 types */ ++ ct->attr.fc4_types.type = __constant_cpu_to_be16(T_FC4_TYPES); ++ ct->attr.fc4_types.len = cpu_to_be16(sizeof(port_fc4_attr_t)); ++#if defined(FC_IP_SUPPORT) ++ if (ha->flags.enable_ip) ++ ct->attr.fc4_types.value[3] = 0x20; /* type 5 for IP */ ++#endif ++ ct->attr.fc4_types.value[2] = 0x01; /* SCSI - FCP */ ++ ++ DEBUG13(printk("%s(%ld): register fc4types=%02x %02x.\n", ++ __func__, ha->host_no, ct->attr.fc4_types.value[3], ++ ct->attr.fc4_types.value[2]);) ++ ++ /* Supported speed */ ++ ct->attr.sup_speed.type = __constant_cpu_to_be16(T_SUPPORT_SPEED); ++ ct->attr.sup_speed.len = cpu_to_be16(sizeof(port_speed_attr_t)); ++#if defined(ISP2100) || defined (ISP2200) ++ ct->attr.sup_speed.value = __constant_cpu_to_be32(1); /* 1 Gig */ ++#elif defined(ISP2300) ++ ct->attr.sup_speed.value = __constant_cpu_to_be32(2); /* 2 Gig */ ++#endif ++ ++ DEBUG13(printk("%s(%ld): register SUPPSPEED=%x.\n", ++ __func__, ha->host_no, ct->attr.sup_speed.value);) ++ ++ /* Current speed */ ++ ct->attr.cur_speed.type = __constant_cpu_to_be16(T_CURRENT_SPEED); ++ ct->attr.cur_speed.len = cpu_to_be16(sizeof(port_speed_attr_t)); ++ switch (ha->current_speed) { ++ case EXT_DEF_PORTSPEED_1GBIT: ++ ct->attr.cur_speed.value = __constant_cpu_to_be32(1); ++ break; ++ case EXT_DEF_PORTSPEED_2GBIT: ++ ct->attr.cur_speed.value = __constant_cpu_to_be32(2); ++ break; ++ } ++ ++ DEBUG13(printk("%s(%ld): register CURRSPEED=%x.\n", ++ __func__, ha->host_no, ct->attr.cur_speed.value);) ++ ++ /* Max frame size */ ++ ct->attr.max_fsize.type = __constant_cpu_to_be16(T_MAX_FRAME_SIZE); ++ ct->attr.max_fsize.len = cpu_to_be16(sizeof(port_frame_attr_t)); ++ ct->attr.max_fsize.value = ++ cpu_to_be32((uint32_t)ha->init_cb->frame_length); ++ ++ DEBUG13(printk("%s(%ld): register MAXFSIZE=%d.\n", ++ __func__, ha->host_no, ct->attr.max_fsize.value);) ++ ++ /* OS device name */ ++ ct->attr.os_dev_name.type = __constant_cpu_to_be16(T_OS_DEVICE_NAME); ++ ct->attr.os_dev_name.len = cpu_to_be16(sizeof(port_os_attr_t)); ++ /* register same string used/returned by SNIA HBA API */ ++#if defined(ISP2100) ++ sprintf((char *)ct->attr.os_dev_name.value, "/proc/scsi/qla2100/%ld", ++ ha->host_no); ++#elif defined(ISP2200) ++ sprintf((char *)ct->attr.os_dev_name.value, "/proc/scsi/qla2200/%ld", ++ ha->host_no); ++#elif defined(ISP2300) ++ sprintf((char *)ct->attr.os_dev_name.value, "/proc/scsi/qla2300/%ld", ++ ha->host_no); ++#endif ++ DEBUG13(printk("%s(%ld): register OSDEVNAME=%s.\n", ++ __func__, ha->host_no, ct->attr.os_dev_name.value);) ++ ++ /* Host name */ ++ ct->attr.host_name.type = __constant_cpu_to_be16(T_HOST_NAME); ++ ct->attr.host_name.len = cpu_to_be16(sizeof(port_host_name_attr_t)); ++ strcpy((char *)ct->attr.host_name.value, system_utsname.nodename); ++ ++ DEBUG13(printk("%s(%ld): register HOSTNAME=%s.\n", ++ __func__, ha->host_no, ct->attr.host_name.value);) ++} ++ ++/* ++ * qla2x00_fdmi_rpa ++ * FDMI register port attributes via execute IOCB mbx cmd. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * pret_stat: local fdmi return status pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++STATIC int ++qla2x00_fdmi_rpa(scsi_qla_host_t *ha, uint8_t *pret_stat) ++{ ++ int rval; ++ ct_iu_rpa_t *ct; ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* init */ ++ *pret_stat = FDMI_STAT_OK; ++ ++ /* Prepare common MS IOCB- Request/Response size adjusted */ ++ /* tov same as mbx tov */ ++ qla2x00_init_ms_mbx_iocb(ha, sizeof(ct_iu_rpa_t), ++ sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ (CF_READ | CF_HEAD_TAG), 60 - 1); ++ ++ DEBUG13(printk("%s(%ld): done msiocb init.\n", __func__, ha->host_no);) ++ ++ /* Prepare CT request */ ++ memset(ha->ct_iu, 0, sizeof(ct_fdmi_pkt_t)); ++ ct = (ct_iu_rpa_t *)ha->ct_iu; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ct->hdr); ++ ct->hdr.cmd_rsp_code = __constant_cpu_to_be16(RPA); ++ ++ /* Setup register port attribute payload. */ ++ qla2x00_fdmi_setup_rpainfo(ha, ct); ++ ++ DEBUG13(printk("%s(%ld): done ct init. ct buf dump:\n", ++ __func__, ha->host_no);) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ct, ++ sizeof(ct_iu_rpa_t));) ++ DEBUG13(printk("msiocb buf dump:.\n");) ++ DEBUG13(qla2x00_dump_buffer((uint8_t *)ha->ms_iocb, ++ sizeof(ms_iocb_entry_t));) ++ ++ /* Go issue command and wait for completion. */ ++ /* Execute MS IOCB */ ++ rval = qla2x00_issue_iocb(ha, ha->ms_iocb, ha->ms_iocb_dma, ++ sizeof(ms_iocb_entry_t)); ++ if (rval != QL_STATUS_SUCCESS) { ++ DEBUG2_13(printk("%s(%ld): RPA issue IOCB failed (%d).\n", ++ __func__, ha->host_no, rval);) ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } else if (ct->hdr.cmd_rsp_code != ++ __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) { ++ ++ DEBUG2_13(printk("%s(%ld): RPA failed, rejected " ++ "request, rhba_rsp:\n", __func__, ha->host_no);) ++ DEBUG2_13(qla2x00_dump_buffer((uint8_t *)&ct->hdr, ++ sizeof(ct_iu_preamble_t));) ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", __func__ ,ha->host_no);) ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_fdmi_dhba ++ * FDMI de-register HBA. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++STATIC int ++qla2x00_fdmi_dhba(scsi_qla_host_t *ha, uint8_t *pret_stat) ++{ ++ int rval; ++ ct_iu_dhba_t *ct; ++ ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* init */ ++ *pret_stat = FDMI_STAT_OK; ++ ++ /* Prepare common MS IOCB- Request/Response size adjusted. tov ++ * same as mbx tov. ++ */ ++ qla2x00_init_ms_mbx_iocb(ha, sizeof(ct_iu_dhba_t), ++ sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ (CF_HEAD_TAG), 60 - 1); ++ ++ DEBUG13(printk("%s(%ld): done msiocb init.\n", __func__, ha->host_no);) ++ ++ /* Prepare CT request */ ++ memset(ha->ct_iu, 0, sizeof(ct_fdmi_pkt_t)); ++ ct = (ct_iu_dhba_t *)ha->ct_iu; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ct->hdr); ++ ct->hdr.cmd_rsp_code = __constant_cpu_to_be16(DHBA); ++ ++ /* Setup deregister hba payload. */ ++ memcpy(ct->hba_portname, ha->init_cb->port_name, WWN_SIZE); ++ ++ DEBUG13(printk("%s(%ld): done ct init.\n", __func__, ha->host_no);) ++ ++ /* Go issue command and wait for completion. */ ++ /* Execute MS IOCB */ ++ rval = qla2x00_issue_iocb(ha, ha->ms_iocb, ha->ms_iocb_dma, ++ sizeof(ms_iocb_entry_t)); ++ if (rval != QL_STATUS_SUCCESS) { ++ DEBUG2_13(printk("%s(%ld): DHBA issue IOCB failed (%d).\n", ++ __func__, ha->host_no, rval);) ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } else if (ct->hdr.cmd_rsp_code != ++ __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) { ++ ++ DEBUG2_13(printk("%s(%ld): DHBA failed, rejected " ++ "request, dhba_rsp:\n", __func__, ha->host_no);) ++ DEBUG2_13(qla2x00_dump_buffer((uint8_t *)&ct->hdr, ++ sizeof(ct_iu_preamble_t));) ++ *pret_stat = FDMI_STAT_ERR; ++ rval = QL_STATUS_ERROR; ++ } ++ ++ DEBUG13(printk("%s(%ld): exiting.\n", __func__ ,ha->host_no);) ++ ++ return (rval); ++} ++ ++/* ++ * qla2x00_fdmi_rhba_intr ++ * FDMI register HBA sent via regular request queue. ++ * ++ * Input: ++ * ha: adapter state pointer. ++ * fcport: device context pointer. ++ * ++ * Returns: ++ * qla2x00 local function return status code. ++ * ++ * Context: ++ * Kernel context. ++ */ ++STATIC int ++qla2x00_fdmi_rhba_intr(scsi_qla_host_t *ha) ++{ ++ int rval = QL_STATUS_SUCCESS; ++ uint16_t tov; ++ unsigned long cpu_flags = 0; ++ struct ct_info *pdata; ++ ct_iu_rhba_t *ct; ++ ms_iocb_entry_t *pkt; ++ srb_t *sp; ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ if ((rval = qla2x00_fdmi_cmnd_srb_alloc(ha, &sp))){ ++ DEBUG2_13(printk("%s(%ld): cmd_srb_alloc failed.\n", ++ __func__, ha->host_no);) ++ return (rval); ++ } ++ ++ tov = ha->login_timeout*2; ++ ++ DEBUG13(printk("%s(%ld): going to srb_init\n", __func__, ha->host_no);) ++ ++ qla2x00_fdmi_srb_init(ha, sp, tov, __constant_cpu_to_be16(RHBA)); ++ ++ DEBUG13(printk("%s(%ld): done srb_init\n", __func__, ha->host_no);) ++ ++ pdata = (struct ct_info *)sp->cmd->sc_request->sr_buffer; ++ ct = (ct_iu_rhba_t *)pdata->pct_buf; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ct->hdr); ++ ct->hdr.cmd_rsp_code = pdata->ct_cmd; ++ ++ /* Setup register hba payload. */ ++ qla2x00_fdmi_setup_rhbainfo(ha, ct); ++ ++ DEBUG13(printk("%s(%ld): done setup_rhbainfo\n", __func__, ha->host_no);) ++ ++ /* get spin lock for this operation */ ++ spin_lock_irqsave(&ha->hardware_lock, cpu_flags); ++ ++ /* Get MS request IOCB from request queue. */ ++ pkt = (ms_iocb_entry_t *)qla2x00_ms_req_pkt(ha, sp); ++ if (pkt == NULL) { ++ /* release spin lock and return error. */ ++ DEBUG2_13(printk("%s(%ld): no pkt. going to unlock " ++ "and free mem.\n", __func__, ha->host_no);) ++ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ qla2x00_fdmi_cmnd_srb_free(ha, sp); ++ ++ DEBUG2_13(printk("%s(%ld): MSIOCB - could not get " ++ "Request Packet.\n", __func__, ha->host_no);) ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ DEBUG13(printk(KERN_INFO "%s(%ld): going to init_req_q_msiocb\n", ++ __func__, ha->host_no);) ++ qla2x00_init_req_q_ms_iocb(ha, pkt, pdata->ct_buf_dma_addr, ++ sizeof(ct_iu_rhba_t), sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ 0, tov); ++ ++ /* Issue command to ISP */ ++ DEBUG13(printk("%s(%ld): going to call isp_cmd.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_isp_cmd(ha); ++ ++ DEBUG13(printk("%s(%ld): going to add timer.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_add_timer_to_cmd(sp, tov + 2); ++ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ DEBUG13(printk("%s(%ld): exiting\n", __func__, ha->host_no);) ++ ++ return (rval); ++} ++ ++STATIC int ++qla2x00_fdmi_rhat_intr(scsi_qla_host_t *ha, Scsi_Cmnd *pscsi_cmd, void *pct_buf, ++ dma_addr_t ct_buf_dma_addr) ++{ ++ int rval = QL_STATUS_SUCCESS; ++ uint16_t tov; ++ unsigned long cpu_flags = 0; ++ struct ct_info *pdata; ++ ct_iu_rhat_t *cth; ++ ms_iocb_entry_t *pkt; ++ srb_t *sp; ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* Allocate SRB block. */ ++ if ((sp = qla2x00_get_new_sp(ha)) == NULL) { ++ ++ DEBUG2_13(printk("%s(%ld): ERROR cannot alloc sp.\n", ++ __func__, ha->host_no);) ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ DEBUG13(printk("%s(%ld): got sp\n", __func__, ha->host_no);) ++ ++ if (qla2x00_fdmi_srb_tmpmem_alloc(ha, sp)) { ++ /* error */ ++ atomic_set(&(sp)->ref_count, 0); ++ add_to_free_queue(ha, sp); ++ sp = NULL; ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ sp->cmd = pscsi_cmd; ++ ++ tov = ha->login_timeout*2; ++ qla2x00_fdmi_srb_init(ha, sp, tov, __constant_cpu_to_be16(RHAT)); ++ ++ DEBUG13(printk("%s(%ld): done srb_init\n", __func__, ha->host_no);) ++ ++ pdata = (struct ct_info *)sp->cmd->sc_request->sr_buffer; ++ cth = (ct_iu_rhat_t *)pdata->pct_buf; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, cth->hdr); ++ cth->hdr.cmd_rsp_code = pdata->ct_cmd; ++ ++ /* Setup register hba payload. */ ++ qla2x00_fdmi_setup_rhatinfo(ha, cth); ++ ++ DEBUG13(printk("%s(%ld): done setup_rhatinfo\n", __func__, ha->host_no);) ++ ++ /* get spin lock for this operation */ ++ spin_lock_irqsave(&ha->hardware_lock, cpu_flags); ++ ++ /* Get MS request IOCB from request queue. */ ++ pkt = (ms_iocb_entry_t *)qla2x00_ms_req_pkt(ha, sp); ++ if (pkt == NULL) { ++ /* release spin lock and return error. */ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ qla2x00_fdmi_cmnd_srb_free(ha, sp); ++ ++ DEBUG2_13(printk("%s(%ld): inst=%ld MSIOCB - could not get " ++ "Request Packet.\n", __func__, ha->host_no, ha->instance);) ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ qla2x00_init_req_q_ms_iocb(ha, pkt, pdata->ct_buf_dma_addr, ++ sizeof(ct_iu_rhat_t), sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ 0, tov); ++ ++ DEBUG13(printk("%s(%ld): call isp_cmd.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_isp_cmd(ha); ++ ++ DEBUG13(printk("%s(%ld): going to add timer.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_add_timer_to_cmd(sp, tov + 2); ++ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ DEBUG13(printk("%s(%ld): exiting\n", __func__, ha->host_no);) ++ ++ return (rval); ++} ++ ++STATIC int ++qla2x00_fdmi_rpa_intr(scsi_qla_host_t *ha, Scsi_Cmnd *pscsi_cmd, void *pct_buf, ++ dma_addr_t ct_buf_dma_addr) ++{ ++ int rval = QL_STATUS_SUCCESS; ++ uint16_t tov; ++ unsigned long cpu_flags = 0; ++ struct ct_info *pdata; ++ ct_iu_rpa_t *ctp; ++ ms_iocb_entry_t *pkt; ++ srb_t *sp; ++ ++ DEBUG13(printk("%s(%ld): entered\n", __func__, ha->host_no);) ++ ++ /* Allocate SRB block. */ ++ if ((sp = qla2x00_get_new_sp(ha)) == NULL) { ++ ++ DEBUG2_13(printk("%s(%ld): ERROR cannot alloc sp.\n", ++ __func__, ha->host_no);) ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ DEBUG13(printk("%s(%ld): got sp\n", __func__, ha->host_no);) ++ ++ if (qla2x00_fdmi_srb_tmpmem_alloc(ha, sp)) { ++ /* error */ ++ atomic_set(&(sp)->ref_count, 0); ++ add_to_free_queue(ha, sp); ++ sp = NULL; ++ ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ sp->cmd = pscsi_cmd; ++ ++ tov = ha->login_timeout*2; ++ qla2x00_fdmi_srb_init(ha, sp, tov, __constant_cpu_to_be16(RPA)); ++ ++ DEBUG13(printk("%s(%ld): done srb_init\n", __func__, ha->host_no);) ++ ++ pdata = (struct ct_info *)sp->cmd->sc_request->sr_buffer; ++ ctp = (ct_iu_rpa_t *)pdata->pct_buf; ++ ++ /* Setup CT-IU Basic preamble. */ ++ QLA_INIT_FDMI_CTIU_HDR(ha, ctp->hdr); ++ ctp->hdr.cmd_rsp_code = pdata->ct_cmd; ++ ++ /* Setup register port attribute payload. */ ++ qla2x00_fdmi_setup_rpainfo(ha, ctp); ++ ++ DEBUG13(printk("%s(%ld): done setup_rpainfo\n", __func__, ha->host_no);) ++ ++ /* get spin lock for this operation */ ++ spin_lock_irqsave(&ha->hardware_lock, cpu_flags); ++ ++ /* Get MS request IOCB from request queue. */ ++ pkt = (ms_iocb_entry_t *)qla2x00_ms_req_pkt(ha, sp); ++ if (pkt == NULL) { ++ /* release spin lock and return error. */ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ qla2x00_fdmi_cmnd_srb_free(ha, sp); ++ ++ DEBUG2_13(printk("%s(%ld): inst=%ld MSIOCB - could not get " ++ "Request Packet.\n", __func__, ha->host_no, ha->instance);) ++ return (QL_STATUS_RESOURCE_ERROR); ++ } ++ ++ qla2x00_init_req_q_ms_iocb(ha, pkt, pdata->ct_buf_dma_addr, ++ sizeof(ct_iu_rpa_t), sizeof(ct_iu_preamble_t), MANAGEMENT_SERVER, ++ 0, tov); ++ DEBUG13(printk("%s(%ld): calling isp_cmd.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_isp_cmd(ha); ++ ++ DEBUG13(printk("%s(%ld): going to add timer.\n", ++ __func__, ha->host_no);) ++ ++ qla2x00_add_timer_to_cmd(sp, tov + 2); ++ ++ spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags); ++ ++ DEBUG13(printk("%s(%ld): exiting\n", __func__, ha->host_no);) ++ ++ return (rval); ++} ++ ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gs.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gs.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_gs.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_gs.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,369 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, or (at your option) any ++ * later version. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ ******************************************************************************/ ++ ++#ifndef _QLA_GS_H ++#define _QLA_GS_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* ++ * FC-GS-4 definitions. ++ */ ++#define GS4_REVISION 0x01 ++#define GS_TYPE_MGMT_SERVER 0xFA ++#define GS_TYPE_DIR_SERVER 0xFC ++#define GS_SUBTYPE_FDMI_HBA 0x10 ++ ++/* FDMI Command Codes. */ ++#define GRHL 0x100 ++#define GHAT 0x101 ++#define GRPL 0x102 ++#define GPAT 0x110 ++#define RHBA 0x200 ++#define RHAT 0x201 ++#define RPRT 0x210 ++#define RPA 0x211 ++#define DHBA 0x300 ++#define DHAT 0x301 ++#define DPRT 0x310 ++#define DPA 0x311 ++ ++/* ++ * CT information unit basic preamble. ++ */ ++typedef struct { ++ uint8_t revision; ++ uint8_t in_id[3]; ++ uint8_t gs_type; ++ uint8_t gs_subtype; ++ uint8_t options; ++ uint8_t reserved; ++ uint16_t cmd_rsp_code; ++ uint16_t max_resid_size; ++ uint8_t fragment_id; ++ uint8_t reason; ++ uint8_t explanation; ++ uint8_t vendor_unique; ++} ct_iu_preamble_t; ++ ++#define FDMI_STAT_OK 0 ++#define FDMI_STAT_ERR 1 ++#define FDMI_STAT_ALREADY_REGISTERED 2 ++ ++#define FDMI_REASON_INVALID_CMD 0x01 ++#define FDMI_REASON_INVALID_VERSION 0x02 ++#define FDMI_REASON_LOGICAL_ERR 0x03 ++#define FDMI_REASON_INVALID_CTIU_SIZE 0x04 ++#define FDMI_REASON_LOGICAL_BUSY 0x05 ++#define FDMI_REASON_PROTOCOL_ERR 0x07 ++#define FDMI_REASON_CANNOT_PERFORM 0x09 ++#define FDMI_REASON_NOT_SUPPORTED 0x0B ++#define FDMI_REASON_HARD_ENF_FAILED 0x0C ++ ++#define FDMI_EXPL_NO_ADDITIONAL_EXPLANATION 0x00 ++#define FDMI_EXPL_HBA_ALREADY_REGISTERED 0x10 ++#define FDMI_EXPL_HBA_ATTR_NOT_REGISTERED 0x11 ++#define FDMI_EXPL_HBA_ATTR_MULTI_SAME_TYPE 0x12 ++#define FDMI_EXPL_INVALID_HBA_ATTR_LEN 0x13 ++#define FDMI_EXPL_HBA_ATTR_NOT_PRESENT 0x14 ++#define FDMI_EXPL_PORT_NOT_IN_PORT_LIST 0x15 ++#define FDMI_EXPL_HBA_ID_NOT_IN_PORT_LIST 0x16 ++#define FDMI_EXPL_PORT_ATTR_NOT_REGISTERED 0x20 ++#define FDMI_EXPL_PORT_NOT_REGISTERED 0x21 ++#define FDMI_EXPL_PORT_ATTR_MULTI_SAME_TYPE 0x22 ++#define FDMI_EXPL_INVALID_PORT_ATTR_LEN 0x23 ++ ++/* ++ * HBA attribute types. ++ */ ++#define T_NODE_NAME 1 ++#define T_MANUFACTURER 2 ++#define T_SERIAL_NUMBER 3 ++#define T_MODEL 4 ++#define T_MODEL_DESCRIPTION 5 ++#define T_HARDWARE_VERSION 6 ++#define T_DRIVER_VERSION 7 ++#define T_OPTION_ROM_VERSION 8 ++#define T_FIRMWARE_VERSION 9 ++#define T_OS_NAME_AND_VERSION 0xa ++#define T_MAXIMUM_CT_PAYLOAD_LENGTH 0xb ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[WWN_SIZE]; ++} hba_nn_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[20]; ++} hba_man_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[8]; ++} hba_sn_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[16]; ++} hba_mod_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[80]; ++} hba_mod_desc_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[16]; ++} hba_hv_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[28]; ++} hba_dv_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[16]; ++} hba_or_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[16]; ++} hba_fw_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[16]; ++} hba_os_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[4]; ++} hba_maxctlen_attr_t; ++ ++/* ++ * HBA Attribute Block. ++ */ ++#define HBA_ATTR_COUNT 10 ++typedef struct { ++ uint32_t count; ++ hba_nn_attr_t nn; ++ hba_man_attr_t man; ++ hba_sn_attr_t sn; ++ hba_mod_attr_t mod; ++ hba_mod_desc_attr_t mod_desc; ++ hba_hv_attr_t hv; ++ hba_dv_attr_t dv; ++ hba_or_attr_t or; ++ hba_fw_attr_t fw; ++ hba_os_attr_t os; ++#if 0 ++ hba_maxctlen_attr_t max_ctlen; ++#endif ++} hba_attr_t; ++ ++/* ++ * Port attribute types. ++ */ ++#define T_FC4_TYPES 1 ++#define T_SUPPORT_SPEED 2 ++#define T_CURRENT_SPEED 3 ++#define T_MAX_FRAME_SIZE 4 ++#define T_OS_DEVICE_NAME 5 ++#define T_HOST_NAME 6 ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[32]; ++} port_fc4_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint32_t value; ++} port_speed_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint32_t value; ++} port_frame_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[24]; ++} port_os_attr_t; ++ ++typedef struct { ++ uint16_t type; ++ uint16_t len; ++ uint8_t value[80]; ++} port_host_name_attr_t; ++ ++/* ++ * Port Attribute Block. ++ */ ++#define PORT_ATTR_COUNT 6 ++typedef struct { ++ uint32_t count; ++ port_fc4_attr_t fc4_types; ++ port_speed_attr_t sup_speed; ++ port_speed_attr_t cur_speed; ++ port_frame_attr_t max_fsize; ++ port_os_attr_t os_dev_name; ++ port_host_name_attr_t host_name; ++} port_attr_t; ++ ++/* ++ * Registered Port List ++ */ ++typedef struct { ++ uint32_t num_ports; ++ uint8_t port_entry[WWN_SIZE]; ++} reg_port_list_t; ++ ++/* ++ * Get HBA Attributes. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_identifier[WWN_SIZE]; ++} ct_iu_ghat_req_t; ++ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ reg_port_list_t plist; ++ hba_attr_t attr; ++} ct_iu_ghat_rsp_t; ++ ++/* ++ * Register HBA. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_identifier[WWN_SIZE]; ++ reg_port_list_t plist; ++ hba_attr_t attr; ++} ct_iu_rhba_t; ++ ++/* ++ * Register HBA Attributes. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_identifier[WWN_SIZE]; ++ hba_attr_t attr; ++} ct_iu_rhat_t; ++ ++/* ++ * Register Port. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_portname[WWN_SIZE]; ++ uint8_t portname[WWN_SIZE]; ++ port_attr_t attr; ++} ct_iu_rprt_t; ++ ++/* ++ * Register Port Attributes. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t portname[WWN_SIZE]; ++ port_attr_t attr; ++} ct_iu_rpa_t; ++ ++/* ++ * Deregister HBA. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_portname[WWN_SIZE]; ++} ct_iu_dhba_t; ++ ++/* ++ * Deregister HBA Attributes. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t hba_portname[WWN_SIZE]; ++} ct_iu_dhat_t; ++ ++/* ++ * Deregister Port. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t portname[WWN_SIZE]; ++} ct_iu_dprt_t; ++ ++/* ++ * Deregister Port Attributes. ++ */ ++typedef struct { ++ ct_iu_preamble_t hdr; ++ uint8_t portname[WWN_SIZE]; ++} ct_iu_dpa_t; ++ ++typedef struct { ++ uint16_t loop_id; ++ uint32_t response_byte_count; ++ uint32_t command_byte_count; ++} ct_iocb_t; ++ ++ ++typedef struct ct_fdmi_pkt { ++ union { ++ ct_iu_ghat_req_t ghat_req; ++ ct_iu_ghat_rsp_t ghat_rsp; ++ ct_iu_rhba_t rhba; ++ ct_iu_rhat_t rhat; ++ ct_iu_rprt_t rprt; ++ ct_iu_rpa_t rpa; ++ ct_iu_dhba_t dhba; ++ ct_iu_dhat_t dhat; ++ ct_iu_dprt_t dprt; ++ ct_iu_dpa_t dpa; ++ } t; ++} ct_fdmi_pkt_t; ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _QLA_GS_H */ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_inioct.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_inioct.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_inioct.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_inioct.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -19,17 +19,17 @@ + + #include "inioct.h" + +-static int qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req, ++extern int qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req, + uint16_t *ret_mb); + +-static int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t); +-static int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); +-static int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); ++int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); ++int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int); ++int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t); ++int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int); ++int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); ++int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int); + +-static int ++int + qla2x00_read_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode) + { + char *ptmp_buf; +@@ -68,7 +68,15 @@ qla2x00_read_nvram(scsi_qla_host_t *ha, + + /* Dump NVRAM. */ + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if ( ++ #if defined(ISP200) ++ (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ #else ++ (ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID) ++ #endif ++ ) { + data = RD_REG_WORD(®->ctrl_status); + if ((data >> 14) == 1) + base = 0x80; +@@ -106,15 +114,22 @@ qla2x00_read_nvram(scsi_qla_host_t *ha, + wptr++; + } + +-#if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++#if defined(ISP2300) ++ if ( ++ #if defined(ISP200) ++ (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ #else ++ (ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID) ++ #endif ++ ) { + /* Unlock resource */ + WRT_REG_WORD(®->host_semaphore, 0); + } + #endif + +- ret = copy_to_user((uint8_t *)pext->ResponseAdr, ptmp_buf, +- transfer_size * 2); ++ ret = copy_to_user(pext->ResponseAdr, ptmp_buf, transfer_size * 2); + if (ret) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n", +@@ -146,10 +161,10 @@ qla2x00_read_nvram(scsi_qla_host_t *ha, + * Context: + * Kernel context. + */ +-static int ++int + qla2x00_update_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode) + { +-#if defined(ISP2300) ++#if defined(ISP2300) + device_reg_t *reg = ha->iobase; + #endif + #if defined(ISP2100) +@@ -190,17 +205,15 @@ qla2x00_update_nvram(scsi_qla_host_t *ha + kernel_tmp = (uint8_t *)pnew_nv; + usr_tmp = (uint8_t *)pext->RequestAdr; + +- ret = verify_area(VERIFY_READ, (void *)usr_tmp, transfer_size); ++ ret = copy_from_user(kernel_tmp, usr_tmp, transfer_size); + if (ret) { + DEBUG9_10(printk( +- "qla2x00_update_nvram: ERROR in buffer verify READ. " ++ "qla2x00_update_nvram: ERROR in buffer copy READ. " + "RequestAdr=%p\n", pext->RequestAdr);) + qla2x00_free_ioctl_scrap_mem(ha); + return ret; + } + +- copy_from_user(kernel_tmp, usr_tmp, transfer_size); +- + kernel_tmp = (uint8_t *)pnew_nv; + + /* we need to checksum the nvram */ +@@ -215,7 +228,15 @@ qla2x00_update_nvram(scsi_qla_host_t *ha + + /* Write to NVRAM */ + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if ( ++ #if defined(ISP200) ++ (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ #else ++ (ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID) ++ #endif ++ ) { + data = RD_REG_WORD(®->ctrl_status); + if ((data >> 14) == 1) + base = 0x80; +@@ -254,7 +275,15 @@ qla2x00_update_nvram(scsi_qla_host_t *ha + } + + #if defined(ISP2300) +- if (ha->device_id == QLA2312_DEVICE_ID) { ++ if ( ++ #if defined(ISP200) ++ (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ #else ++ (ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID) ++ #endif ++ ) { + /* Unlock resource */ + WRT_REG_WORD(®->host_semaphore, 0); + } +@@ -270,7 +299,7 @@ qla2x00_update_nvram(scsi_qla_host_t *ha + return 0; + } + +-static int ++int + qla2x00_write_nvram_word(scsi_qla_host_t *ha, uint8_t addr, uint16_t data) + { + int count; +@@ -346,7 +375,7 @@ qla2x00_write_nvram_word(scsi_qla_host_t + return 0; + } + +-static int ++int + qla2x00_send_loopback(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode) + { + int status; +@@ -373,20 +402,15 @@ qla2x00_send_loopback(scsi_qla_host_t *h + return pext->Status; + } + +- status = verify_area(VERIFY_READ, (void *)pext->RequestAdr, +- pext->RequestLen); ++ status = copy_from_user(&req, pext->RequestAdr, pext->RequestLen); + if (status) { + pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of " ++ DEBUG9_10(printk("qla2x00_send_loopback: ERROR copy read of " + "request buffer.\n");) + return pext->Status; + } + +- copy_from_user((uint8_t *)&req, (uint8_t *)pext->RequestAdr, +- pext->RequestLen); +- +- status = verify_area(VERIFY_READ, (void *)pext->ResponseAdr, +- pext->ResponseLen); ++ status = copy_from_user(&rsp, pext->ResponseAdr, pext->ResponseLen); + if (status) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of " +@@ -394,9 +418,6 @@ qla2x00_send_loopback(scsi_qla_host_t *h + return pext->Status; + } + +- copy_from_user((uint8_t *)&rsp, (uint8_t *)pext->ResponseAdr, +- pext->ResponseLen); +- + if (req.TransferCount > req.BufferLength || + req.TransferCount > rsp.BufferLength) { + +@@ -411,18 +432,15 @@ qla2x00_send_loopback(scsi_qla_host_t *h + return pext->Status; + } + +- status = verify_area(VERIFY_READ, (void *)req.BufferAddress, ++ status = copy_from_user(ha->ioctl_mem, req.BufferAddress, + req.TransferCount); + if (status) { + pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of " ++ DEBUG9_10(printk("qla2x00_send_loopback: ERROR copy read of " + "user loopback data buffer.\n");) + return pext->Status; + } + +- copy_from_user((uint8_t *)ha->ioctl_mem, (uint8_t *)req.BufferAddress, +- req.TransferCount); +- + DEBUG9(printk("qla2x00_send_loopback: req -- bufadr=%p, buflen=%x, " + "xfrcnt=%x, rsp -- bufadr=%p, buflen=%x.\n", + req.BufferAddress, req.BufferLength, req.TransferCount, +@@ -473,22 +491,19 @@ qla2x00_send_loopback(scsi_qla_host_t *h + } + } + +- status = verify_area(VERIFY_WRITE, (void *)rsp.BufferAddress, ++ DEBUG9(printk("qla2x00_send_loopback: loopback mbx cmd ok. " ++ "copying data.\n");) ++ ++ /* put loopback return data in user buffer */ ++ status = copy_to_user(rsp.BufferAddress, ha->ioctl_mem, + req.TransferCount); + if (status) { + pext->Status = EXT_STATUS_COPY_ERR; + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify " + "write of return data buffer.\n");) +- return status ; ++ return (status); + } + +- DEBUG9(printk("qla2x00_send_loopback: loopback mbx cmd ok. " +- "copying data.\n");) +- +- /* put loopback return data in user buffer */ +- copy_to_user((uint8_t *)rsp.BufferAddress, +- (uint8_t *)ha->ioctl_mem, req.TransferCount); +- + rsp.CompletionStatus = ret_mb[0]; + + if (ha->current_topology == ISP_CFG_F) { +@@ -504,18 +519,14 @@ qla2x00_send_loopback(scsi_qla_host_t *h + } + } + +- status = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr, +- pext->ResponseLen); ++ status = copy_to_user(pext->ResponseAdr, &rsp, pext->ResponseLen); + if (status) { + pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify " ++ DEBUG9_10(printk("qla2x00_send_loopback: ERROR copy " + "write of response buffer.\n");) + return pext->Status; + } + +- copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)&rsp, +- pext->ResponseLen); +- + pext->Status = EXT_STATUS_OK; + pext->DetailStatus = EXT_STATUS_OK; + +@@ -590,14 +601,6 @@ int qla2x00_update_option_rom(scsi_qla_h + + /* Read from user buffer */ + usr_tmp = (uint8_t *)pext->RequestAdr; +- ret = verify_area(VERIFY_READ, (void *)usr_tmp, FLASH_IMAGE_SIZE); +- if (ret) { +- pext->Status = EXT_STATUS_COPY_ERR; +- DEBUG9_10(printk("%s: ERROR in buffer verify READ. " +- "RequestAdr=%p\n", +- __func__, pext->RequestAdr);) +- return (ret); +- } + + kern_tmp = (uint8_t *)KMEM_ZALLOC(FLASH_IMAGE_SIZE, 30); + if (kern_tmp == NULL) { +@@ -606,7 +609,15 @@ int qla2x00_update_option_rom(scsi_qla_h + "%s: ERROR in flash allocation.\n", __func__); + return (1); + } +- copy_from_user(kern_tmp, usr_tmp, FLASH_IMAGE_SIZE); ++ ret = copy_from_user(kern_tmp, usr_tmp, FLASH_IMAGE_SIZE); ++ if (ret) { ++ KMEM_FREE(kern_tmp, FLASH_IMAGE_SIZE); ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s: ERROR in buffer copy READ. " ++ "RequestAdr=%p\n", ++ __func__, pext->RequestAdr);) ++ return (ret); ++ } + + /* Go with update */ + spin_lock_irqsave(&ha->hardware_lock, cpu_flags); +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_inline.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_inline.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_inline.h 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_inline.h 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,49 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISPFBLITE device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, 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. ++ * ++ ******************************************************************************/ ++ ++/* ++ * This file includes a set of defines that are required to compile the ++ * source code for qla2xxx module ++ */ ++ ++static inline int ++check_device_id(scsi_qla_host_t *ha) ++{ ++ return (ha->device_id == QLA6322_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID); ++} ++ ++static inline int ++check_all_device_ids(scsi_qla_host_t *ha) ++{ ++ return (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID || ++ ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID); ++} ++ ++static inline void ++set_model_number(scsi_qla_host_t *ha) ++{ ++ if (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ sprintf(ha->model_number, "QLA63xx"); ++ else ++ sprintf(ha->model_number, "QLA23xx"); ++} +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ip.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ip.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ip.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ip.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ip.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ip.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ip.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ip.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 IP network driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_mbx.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_mbx.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_mbx.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_mbx.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -54,14 +54,6 @@ qla2x00_load_ram(scsi_qla_host_t *, dma_ + STATIC int + qla2x00_execute_fw(scsi_qla_host_t *); + +-#if defined(WORD_FW_LOAD) +-STATIC int +-qla2x00_write_ram_word(scsi_qla_host_t *, uint16_t, uint16_t); +- +-STATIC int +-qla2x00_read_ram_word(scsi_qla_host_t *, uint16_t, uint16_t *); +-#endif +- + STATIC int + qla2x00_mbx_reg_test(scsi_qla_host_t *); + +@@ -93,7 +85,7 @@ STATIC int + qla2x00_get_retry_cnt(scsi_qla_host_t *, uint8_t *, uint8_t *); + + #if defined(INTAPI) +-static int ++int + qla2x00_loopback_test(scsi_qla_host_t *, INT_LOOPBACK_REQ *, uint16_t *); + int + qla2x00_echo_test(scsi_qla_host_t *, INT_LOOPBACK_REQ *, uint16_t *); +@@ -103,7 +95,7 @@ STATIC int + qla2x00_init_firmware(scsi_qla_host_t *, uint16_t); + + STATIC int +-qla2x00_get_port_database(scsi_qla_host_t *, fcdev_t *, uint8_t); ++qla2x00_get_port_database(scsi_qla_host_t *, fc_port_t *, uint8_t); + + STATIC int + qla2x00_get_firmware_state(scsi_qla_host_t *, uint16_t *); +@@ -121,7 +113,7 @@ STATIC int + qla2x00_get_port_name(scsi_qla_host_t *, uint16_t, uint8_t *, uint8_t); + + STATIC uint8_t +-qla2x00_get_link_status(scsi_qla_host_t *, uint8_t, void *, uint16_t *); ++qla2x00_get_link_status(scsi_qla_host_t *, uint16_t, link_stat_t *, uint16_t *); + + STATIC int + qla2x00_lip_reset(scsi_qla_host_t *); +@@ -143,15 +135,14 @@ STATIC int + qla2x00_full_login_lip(scsi_qla_host_t *ha); + + STATIC int +-qla2x00_get_port_list(scsi_qla_host_t *, port_list_entry_t *, dma_addr_t, +- uint16_t, uint16_t *); ++qla2x00_get_id_list(scsi_qla_host_t *, void *, dma_addr_t, uint16_t *); + + #if 0 /* not yet needed */ + STATIC int + qla2x00_dump_ram(scsi_qla_host_t *, uint32_t, dma_addr_t, uint32_t); + #endif + +-STATIC int ++int + qla2x00_lun_reset(scsi_qla_host_t *, uint16_t, uint16_t); + + STATIC int +@@ -650,14 +641,22 @@ qla2x00_mailbox_command(scsi_qla_host_t + + spin_lock_irqsave(&ha->hardware_lock, flags); + /* Check for pending interrupts. */ +-#if defined(ISP2300) +- +- if (ha->device_id == QLA2312_DEVICE_ID) { +- ++#if defined(ISP2300) ++ if ( ++ #if defined(ISP200) ++ (ha->device_id == QLA6312_DEVICE_ID || ++ ha->device_id == QLA6322_DEVICE_ID) ++ #else ++ (ha->device_id == QLA2312_DEVICE_ID || ++ ha->device_id == QLA2322_DEVICE_ID) ++ #endif ++ ) { + while ((data =RD_REG_WORD( + ®->istatus)) & RISC_INT) { + + data =RD_REG_WORD(®->host_status_lo); ++ if((data & HOST_STATUS_INT ) == 0) ++ break; + qla2x00_isr(ha, data, &discard); + } + +@@ -684,6 +683,33 @@ qla2x00_mailbox_command(scsi_qla_host_t + if (!abort_active) + QLA_MBX_REG_LOCK(ha); + ++ if (!abort_active) { ++ DEBUG11(printk("qla2x00_mailbox_cmd: checking for additional " ++ "resp interrupt.\n");) ++ ++ /* polling mode for non isp_abort commands. */ ++ /* Go check for any more response interrupts pending. */ ++ spin_lock_irqsave(&ha->hardware_lock, flags); ++#if defined(ISP2300) ++ ++ while (!(ha->flags.in_isr) && ++ ((data = qla2x00_debounce_register(®->host_status_lo)) & ++ HOST_STATUS_INT)) ++ qla2x00_isr(ha, data, &discard); ++#else ++ ++ while (!(ha->flags.in_isr) && ++ ((data = qla2x00_debounce_register(®->istatus)) & ++ RISC_INT)) ++ qla2x00_isr(ha, data,&discard); ++#endif ++ ++ spin_unlock_irqrestore(&ha->hardware_lock, flags); ++ } ++ /* Clean up */ ++ ha->mcp = NULL; ++ ++ + /* Check whether we timed out */ + if (ha->flags.mbox_int) { + +@@ -715,7 +741,13 @@ qla2x00_mailbox_command(scsi_qla_host_t + } else { + + #if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) || \ +- defined(QL_DEBUG_LEVEL_11) ++ defined(QL_DEBUG_LEVEL_11) ++ printk(KERN_INFO "qla2x00_mailbox_command(%ld): **** MB" ++ " Command Timeout for cmd %x ****\n", ha->host_no, command); ++ printk(KERN_INFO "qla2x00_mailbox_command: icontrol=%x " ++ "jiffies=%lx\n", RD_REG_WORD(®->ictrl), jiffies); ++ printk(KERN_INFO "qla2x00_mailbox_command: *** mailbox[0] " ++ "= 0x%x ***\n", RD_REG_WORD(optr)); + printk("qla2x00_mailbox_command(%ld): **** MB Command Timeout " + "for cmd %x ****\n", ha->host_no, command); + printk("qla2x00_mailbox_command: icontrol=%x jiffies=%lx\n", +@@ -735,32 +767,6 @@ qla2x00_mailbox_command(scsi_qla_host_t + + ha->flags.mbox_busy = FALSE; + +- /* Clean up */ +- ha->mcp = NULL; +- +- if (!abort_active) { +- DEBUG11(printk("qla2x00_mailbox_cmd: checking for additional " +- "resp interrupt.\n");) +- +- /* polling mode for non isp_abort commands. */ +- /* Go check for any more response interrupts pending. */ +- spin_lock_irqsave(&ha->hardware_lock, flags); +-#if defined(ISP2300) +- +- while (!(ha->flags.in_isr) && +- ((data = qla2x00_debounce_register(®->host_status_lo)) & +- HOST_STATUS_INT)) +- qla2x00_isr(ha, data, &discard); +-#else +- +- while (!(ha->flags.in_isr) && +- ((data = qla2x00_debounce_register(®->istatus)) & +- RISC_INT)) +- qla2x00_isr(ha, data,&discard); +-#endif +- +- spin_unlock_irqrestore(&ha->hardware_lock, flags); +- } + + if (status == QL_STATUS_TIMEOUT ) { + if (!io_lock_on || (mcp->flags & IOCTL_CMD)) { +@@ -865,12 +871,12 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dm + mcp->mb[2] = MSW(req_dma); + mcp->mb[3] = LSW(req_dma); + mcp->mb[4] = (uint16_t)req_len; +- mcp->mb[6] = QL21_64BITS_4THWD(req_dma); +- mcp->mb[7] = QL21_64BITS_3RDWD(req_dma); ++ mcp->mb[6] = MSW(MSD(req_dma)); ++ mcp->mb[7] = LSW(MSD(req_dma)); + + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -881,12 +887,12 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dm + mcp->mb[2] = MSW(nml_dma); + mcp->mb[3] = LSW(nml_dma); + mcp->mb[4] = (uint16_t)nml_len; +- mcp->mb[6] = QL21_64BITS_4THWD(nml_dma); +- mcp->mb[7] = QL21_64BITS_3RDWD(nml_dma); ++ mcp->mb[6] = MSW(MSD(nml_dma)); ++ mcp->mb[7] = LSW(MSD(nml_dma)); + + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + } +@@ -905,13 +911,11 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dm + } + + /* +- * qla2x00_execute_fw +- * Start adapter firmware. ++ * qla2x00_load_ram_ext ++ * Load adapter extended RAM using DMA. + * + * Input: + * ha = adapter block pointer. +- * TARGET_QUEUE_LOCK must be released. +- * ADAPTER_STATE_LOCK must be released. + * + * Returns: + * qla2x00 local function return status code. +@@ -919,82 +923,81 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dm + * Context: + * Kernel context. + */ +-STATIC int +-qla2x00_execute_fw(scsi_qla_host_t *ha) ++int ++qla2x00_load_ram_ext(scsi_qla_host_t *ha, dma_addr_t req_dma, ++ uint32_t risc_addr, uint16_t risc_code_size) + { + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; ++ uint32_t req_len; ++ dma_addr_t nml_dma; ++ uint32_t nml_len; ++ uint32_t normalized; + +- DEBUG11(printk("qla2x00_execute_fw(%ld): entered.\n", +- ha->host_no);) +- +- mcp->mb[0] = MBC_EXECUTE_FIRMWARE; +- mcp->mb[1] = *QLBoardTbl_fc[ha->devnum].fwstart; +- mcp->out_mb = MBX_1|MBX_0; +- mcp->in_mb = MBX_0; +- mcp->tov = 30; +- mcp->flags = 0; +- rval = qla2x00_mailbox_command(ha, mcp); +- +- DEBUG11(printk("qla2x00_execute_fw(%ld): done.\n", +- ha->host_no);) +- +- return rval; +-} +- ++ DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); + +-#if defined(WORD_FW_LOAD) +-/* +- * qla2x00_write_ram_word +- * +- * Input: +- * ha = adapter block pointer. +- * +- * Returns: +- * qla2x00 local function return status code. +- * +- * Context: +- * Kernel context. +- */ +-STATIC int +-qla2x00_write_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t data) +-{ +- int rval; +- mbx_cmd_t mc; +- mbx_cmd_t *mcp = &mc; ++ req_len = risc_code_size; ++ nml_dma = 0; ++ nml_len = 0; + +- DEBUG11(printk("qla2x00_write_ram_word(%ld): entered.\n", +- ha->host_no);) ++ normalized = qla2x00_normalize_dma_addr(&req_dma, &req_len, &nml_dma, ++ &nml_len); + +- mcp->mb[0] = MBC_WRITE_RAM_WORD; +- mcp->mb[1] = addr; +- mcp->mb[2] = data; +- mcp->out_mb = MBX_2|MBX_1|MBX_0; ++ /* Load first segment */ ++ mcp->mb[0] = MBC_LOAD_RAM_EXTENDED; ++ mcp->mb[1] = LSW(risc_addr); ++ mcp->mb[2] = MSW(req_dma); ++ mcp->mb[3] = LSW(req_dma); ++ mcp->mb[4] = (uint16_t)req_len; ++ mcp->mb[6] = MSW(MSD(req_dma)); ++ mcp->mb[7] = LSW(MSD(req_dma)); ++ mcp->mb[8] = MSW(risc_addr); ++ mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; + mcp->tov = 30; + mcp->flags = 0; ++ rval = qla2x00_mailbox_command(ha, mcp); + +- rval = (int)qla2x00_mailbox_command(ha, mcp); ++ /* Load second segment - if necessary */ ++ if (normalized && (rval == QL_STATUS_SUCCESS)) { ++ risc_addr += req_len; ++ mcp->mb[0] = MBC_LOAD_RAM_EXTENDED; ++ mcp->mb[1] = LSW(risc_addr); ++ mcp->mb[2] = MSW(nml_dma); ++ mcp->mb[3] = LSW(nml_dma); ++ mcp->mb[4] = (uint16_t)nml_len; ++ mcp->mb[6] = MSW(MSD(nml_dma)); ++ mcp->mb[7] = LSW(MSD(nml_dma)); ++ mcp->mb[8] = MSW(risc_addr); ++ mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; ++ mcp->in_mb = MBX_0; ++ mcp->tov = 30; ++ mcp->flags = 0; ++ rval = qla2x00_mailbox_command(ha, mcp); ++ } + + if (rval != QL_STATUS_SUCCESS) { + /*EMPTY*/ +- DEBUG2_3_11(printk("qla2x00_write_ram_word(%ld): failed=%x.\n", +- ha->host_no, rval);) ++ DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", ++ __func__, ha->host_no, rval, mcp->mb[0])); + } else { + /*EMPTY*/ +- DEBUG11(printk("qla2x00_write_ram_word(%ld): done.\n", +- ha->host_no);) ++ DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); + } + + return rval; + } + ++ + /* +- * qla2x00_read_ram_word ++ * qla2x00_execute_fw ++ * Start adapter firmware. + * + * Input: + * ha = adapter block pointer. ++ * TARGET_QUEUE_LOCK must be released. ++ * ADAPTER_STATE_LOCK must be released. + * + * Returns: + * qla2x00 local function return status code. +@@ -1003,38 +1006,42 @@ qla2x00_write_ram_word(scsi_qla_host_t * + * Kernel context. + */ + STATIC int +-qla2x00_read_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t *data) ++qla2x00_execute_fw(scsi_qla_host_t *ha) + { + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + +- DEBUG11(printk("qla2x00_read_ram_word(%ld): entered.\n", ++ DEBUG11(printk("qla2x00_execute_fw(%ld): entered.\n", + ha->host_no);) + +- mcp->mb[0] = MBC_READ_RAM_WORD; +- mcp->mb[1] = addr; +- ++ mcp->mb[0] = MBC_EXECUTE_FIRMWARE; ++ mcp->mb[1] = *QLBoardTbl_fc[ha->devnum].fwinfo->fwstart; + mcp->out_mb = MBX_1|MBX_0; +- mcp->in_mb = MBX_0|MBX_2; +- mcp->tov = 30; +- mcp->flags = 0; ++#if defined(ISP2300) ++ if ( ++ #if defined(ISP200) ++ ha->pdev->device == QLA6322_DEVICE_ID ++ #else ++ ha->pdev->device == QLA2322_DEVICE_ID ++ #endif ++ ) { ++ mcp->mb[2] = 0; /* FW image has been loaded into memory */ ++ mcp->out_mb |= MBX_2; ++ DEBUG11(printk("%s fwstart=%x \n",__func__,mcp->mb[1]);) ++ } ++#endif + +- rval = (int)qla2x00_mailbox_command(ha, mcp); ++ mcp->in_mb = MBX_0; ++ mcp->tov = 60; ++ mcp->flags = 0; ++ rval = qla2x00_mailbox_command(ha, mcp); + +- if (rval != QL_STATUS_SUCCESS) { +- /*EMPTY*/ +- DEBUG2_3_11(printk("qla2x00_read_ram_word(%ld): failed=%x.\n", +- ha->host_no, rval);) +- } else { +- *data = mcp->mb[2]; +- DEBUG11(printk("qla2x00_read_ram_word(%ld): done.\n", +- ha->host_no);) +- } ++ DEBUG11(printk("qla2x00_execute_fw(%ld): done.\n", ++ ha->host_no);) + + return rval; + } +-#endif + + /* + * qla2x00_mbx_reg_test +@@ -1071,7 +1078,7 @@ qla2x00_mbx_reg_test(scsi_qla_host_t *ha + mcp->mb[7] = 0x2525; + mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1123,10 +1130,10 @@ qla2x00_verify_checksum(scsi_qla_host_t + ha->host_no);) + + mcp->mb[0] = MBC_VERIFY_CHECKSUM; +- mcp->mb[1] = *QLBoardTbl_fc[ha->devnum].fwstart; ++ mcp->mb[1] = *QLBoardTbl_fc[ha->devnum].fwinfo->fwstart; + mcp->out_mb = MBX_1|MBX_0; + mcp->in_mb = MBX_2|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1175,11 +1182,11 @@ qla2x00_issue_iocb(scsi_qla_host_t *ha, + mcp->mb[1] = 0; + mcp->mb[2] = MSW(phys_addr); + mcp->mb[3] = LSW(phys_addr); +- mcp->mb[6] = QL21_64BITS_4THWD(phys_addr); +- mcp->mb[7] = QL21_64BITS_3RDWD(phys_addr); ++ mcp->mb[6] = MSW(MSD(phys_addr)); ++ mcp->mb[7] = LSW(MSD(phys_addr)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_2|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1228,12 +1235,12 @@ qla2x00_abort_command(scsi_qla_host_t *h + fcport = sp->fclun->fcport; + + t = SCSI_TCN_32(sp->cmd); +- if (ha->loop_state == LOOP_DOWN || ++ ++ if (atomic_read(&ha->loop_state) == LOOP_DOWN || + atomic_read(&fcport->state) == FC_DEVICE_LOST) { + /* v2.19.8 Ignore abort request if port is down */ + return 1; + } +- + spin_lock_irqsave(&ha->hardware_lock, flags); + for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) { + if (ha->outstanding_cmds[handle] == sp) +@@ -1247,13 +1254,17 @@ qla2x00_abort_command(scsi_qla_host_t *h + } + + mcp->mb[0] = MBC_ABORT_COMMAND; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = fcport->loop_id; ++#else + mcp->mb[1] = fcport->loop_id << 8; ++#endif + mcp->mb[2] = (uint16_t)handle; + mcp->mb[3] = (uint16_t)(handle >> 16); + mcp->mb[6] = (uint16_t)sp->fclun->lun; + mcp->out_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + + rval = (int)qla2x00_mailbox_command(ha, mcp); +@@ -1295,11 +1306,15 @@ qla2x00_abort_device(scsi_qla_host_t *ha + ha->host_no);) + + mcp->mb[0] = MBC_ABORT_DEVICE; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else + mcp->mb[1] = loop_id << 8; ++#endif + mcp->mb[2] = lun; + mcp->out_mb = MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1358,11 +1373,19 @@ qla2x00_abort_target(fc_port_t *fcport) + loop_id = fcport->loop_id; + + mcp->mb[0] = MBC_ABORT_TARGET; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = fcport->loop_id; ++#else + mcp->mb[1] = loop_id << 8; ++#endif + mcp->mb[2] = fcport->ha->loop_reset_delay; + mcp->out_mb = MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = 0; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(fcport->ha, mcp); + +@@ -1425,11 +1448,15 @@ qla2x00_target_reset(scsi_qla_host_t *ha + ha->host_no, tgt->vis_port->loop_id);) + + mcp->mb[0] = MBC_TARGET_RESET; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = tgt->vis_port->loop_id; ++#else + mcp->mb[1] = tgt->vis_port->loop_id << 8; ++#endif + mcp->mb[2] = ha->loop_reset_delay; + mcp->out_mb = MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1480,7 +1507,7 @@ qla2x00_get_adapter_id(scsi_qla_host_t * + mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID; + mcp->out_mb = MBX_0; + mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1533,7 +1560,7 @@ qla2x00_get_retry_cnt(scsi_qla_host_t *h + mcp->mb[0] = MBC_GET_RETRY_COUNT; + mcp->out_mb = MBX_0; + mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1592,13 +1619,13 @@ qla2x00_loopback_test(scsi_qla_host_t *h + + mcp->mb[14] = LSW(ha->ioctl_mem_phys); /* send data address */ + mcp->mb[15] = MSW(ha->ioctl_mem_phys); +- mcp->mb[20] = QL21_64BITS_3RDWD(ha->ioctl_mem_phys); +- mcp->mb[21] = QL21_64BITS_4THWD(ha->ioctl_mem_phys); ++ mcp->mb[20] = LSW(MSD(ha->ioctl_mem_phys)); ++ mcp->mb[21] = MSW(MSD(ha->ioctl_mem_phys)); + + mcp->mb[16] = LSW(ha->ioctl_mem_phys); /* rcv data address */ + mcp->mb[17] = MSW(ha->ioctl_mem_phys); +- mcp->mb[6] = QL21_64BITS_3RDWD(ha->ioctl_mem_phys); +- mcp->mb[7] = QL21_64BITS_4THWD(ha->ioctl_mem_phys); ++ mcp->mb[6] = LSW(MSD(ha->ioctl_mem_phys)); ++ mcp->mb[7] = MSW(MSD(ha->ioctl_mem_phys)); + + mcp->mb[18] = LSW(req->IterationCount); /* iteration count lsb */ + mcp->mb[19] = MSW(req->IterationCount); /* iteration count msb */ +@@ -1608,7 +1635,7 @@ qla2x00_loopback_test(scsi_qla_host_t *h + mcp->in_mb = MBX_19|MBX_18|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->buf_size = req->TransferCount; + mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD; +- mcp->tov = 30; ++ mcp->tov = 60; + + DEBUG11(printk("qla2x00_send_loopback: req.Options=%x iterations=%x " + "MAILBOX_CNT=%d.\n", req->Options, req->IterationCount, +@@ -1668,20 +1695,20 @@ qla2x00_echo_test(scsi_qla_host_t *ha, I + + mcp->mb[14] = LSW(ha->ioctl_mem_phys); /* send data address */ + mcp->mb[15] = MSW(ha->ioctl_mem_phys); +- mcp->mb[20] = QL21_64BITS_3RDWD(ha->ioctl_mem_phys); +- mcp->mb[21] = QL21_64BITS_4THWD(ha->ioctl_mem_phys); ++ mcp->mb[20] = LSW(MSD(ha->ioctl_mem_phys)); ++ mcp->mb[21] = MSW(MSD(ha->ioctl_mem_phys)); + + mcp->mb[16] = LSW(ha->ioctl_mem_phys); /* rcv data address */ + mcp->mb[17] = MSW(ha->ioctl_mem_phys); +- mcp->mb[6] = QL21_64BITS_3RDWD(ha->ioctl_mem_phys); +- mcp->mb[7] = QL21_64BITS_4THWD(ha->ioctl_mem_phys); ++ mcp->mb[6] = LSW(MSD(ha->ioctl_mem_phys)); ++ mcp->mb[7] = MSW(MSD(ha->ioctl_mem_phys)); + + mcp->out_mb = MBX_21|MBX_20|MBX_17|MBX_16|MBX_15| + MBX_14|MBX_10|MBX_7|MBX_6|MBX_1|MBX_0; + mcp->in_mb = MBX_0; + mcp->buf_size = tran_cnt; + mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD; +- mcp->tov = 30; ++ mcp->tov = 60; + + rval = qla2x00_mailbox_command(ha, mcp); + +@@ -1735,13 +1762,13 @@ qla2x00_init_firmware(scsi_qla_host_t *h + mcp->mb[3] = LSW(ha->init_cb_dma); + mcp->mb[4] = 0; + mcp->mb[5] = 0; +- mcp->mb[6] = QL21_64BITS_4THWD(ha->init_cb_dma); +- mcp->mb[7] = QL21_64BITS_3RDWD(ha->init_cb_dma); ++ mcp->mb[6] = MSW(MSD(ha->init_cb_dma)); ++ mcp->mb[7] = LSW(MSD(ha->init_cb_dma)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0; + mcp->in_mb = MBX_5|MBX_4|MBX_0; + mcp->buf_size = size; + mcp->flags = MBX_DMA_OUT; +- mcp->tov = 30; ++ mcp->tov = 60; + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval != QL_STATUS_SUCCESS) { +@@ -1775,7 +1802,7 @@ qla2x00_init_firmware(scsi_qla_host_t *h + * Kernel context. + */ + STATIC int +-qla2x00_get_port_database(scsi_qla_host_t *ha, fcdev_t *dev, uint8_t opt) ++qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt) + { + int rval; + mbx_cmd_t mc; +@@ -1800,43 +1827,50 @@ qla2x00_get_port_database(scsi_qla_host_ + mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE; + else + mcp->mb[0] = MBC_GET_PORT_DATABASE; +- +- mcp->mb[1] = dev->loop_id << 8 | opt; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = fcport->loop_id; ++#else ++ mcp->mb[1] = fcport->loop_id << 8 | opt; ++#endif + mcp->mb[2] = MSW(phys_address); + mcp->mb[3] = LSW(phys_address); +- mcp->mb[6] = QL21_64BITS_4THWD(phys_address); +- mcp->mb[7] = QL21_64BITS_3RDWD(phys_address); ++ mcp->mb[6] = MSW(MSD(phys_address)); ++ mcp->mb[7] = LSW(MSD(phys_address)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = opt; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_0; + mcp->buf_size = PORT_DATABASE_SIZE; + mcp->flags = MBX_DMA_IN; + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/ +- mcp->tov = ha->login_timeout * 2; ++ /* mcp->tov = ha->login_timeout * 2; */ ++ mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout/2); + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval == QL_STATUS_SUCCESS) { + /* Save some data */ + /* Names are big endian. */ +- memcpy((void *)&dev->name[0],(void *)&pd->node_name[0], 8); +- memcpy((void *)&dev->wwn[0], (void *)&pd->port_name[0], 8); ++ memcpy(fcport->node_name, pd->node_name, WWN_SIZE); ++ memcpy(fcport->port_name, pd->port_name, WWN_SIZE); + + /* Get port_id of device. */ +- dev->d_id.b.al_pa = pd->port_id[2]; +- dev->d_id.b.area = pd->port_id[3]; +- dev->d_id.b.domain = pd->port_id[0]; +- dev->d_id.b.rsvd_1 = 0; +- +- /* Get initiator status of device. */ +- pd->prli_svc_param_word_3[0] & BIT_5 ? +- (dev->flag = dev->flag | DEV_INITIATOR) : +- (dev->flag = dev->flag & ~DEV_INITIATOR); +- +- /* Check for logged in and whether target device. */ +- if (pd->master_state != PD_STATE_PORT_LOGGED_IN && +- pd->slave_state != PD_STATE_PORT_LOGGED_IN) { +- rval = QL_STATUS_ERROR; +- } else if (pd->master_state == PD_STATE_PORT_UNAVAILABLE) { +- rval = QL_STATUS_ERROR; ++ fcport->d_id.b.al_pa = pd->port_id[2]; ++ fcport->d_id.b.area = pd->port_id[3]; ++ fcport->d_id.b.domain = pd->port_id[0]; ++ fcport->d_id.b.rsvd_1 = 0; ++ ++ /* If not target must be initiator or unknown type. */ ++ if ((pd->prli_svc_param_word_3[0] & BIT_4) == 0) { ++ fcport->port_type = FCT_INITIATOR; ++ } else { ++ fcport->port_type = FCT_TARGET; ++ ++ /* Check for logged in. */ ++ if (pd->master_state != PD_STATE_PORT_LOGGED_IN && ++ pd->slave_state != PD_STATE_PORT_LOGGED_IN) ++ rval = QL_STATUS_ERROR; + } + } + +@@ -1883,7 +1917,7 @@ qla2x00_get_firmware_state(scsi_qla_host + mcp->mb[0] = MBC_GET_FIRMWARE_STATE; + mcp->out_mb = MBX_0; + mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1930,7 +1964,7 @@ qla2x00_get_firmware_options(scsi_qla_ho + mcp->mb[0] = MBC_GET_FIRMWARE_OPTIONS; + mcp->out_mb = MBX_0; + mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -1984,7 +2018,7 @@ qla2x00_set_firmware_options(scsi_qla_ho + mcp->mb[12] = 0; /* Undocumented, but used */ + mcp->out_mb = MBX_12|MBX_11|MBX_10|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + + rval = (int)qla2x00_mailbox_command(ha, mcp); +@@ -2031,10 +2065,18 @@ qla2x00_get_port_name(scsi_qla_host_t *h + ha->host_no);) + + mcp->mb[0] = MBC_GET_PORT_NAME; +- mcp->mb[1] = loop_id << 8 | opt; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = loop_id << 8 | opt; ++#endif + mcp->out_mb = MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = opt; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2076,8 +2118,8 @@ qla2x00_get_port_name(scsi_qla_host_t *h + * BIT_1 = mailbox error. + */ + STATIC uint8_t +-qla2x00_get_link_status(scsi_qla_host_t *ha, uint8_t loop_id, void *ret_buf, +- uint16_t *status) ++qla2x00_get_link_status(scsi_qla_host_t *ha, uint16_t loop_id, ++ link_stat_t *ret_buf, uint16_t *status) + { + int rval; + mbx_cmd_t mc; +@@ -2100,14 +2142,22 @@ qla2x00_get_link_status(scsi_qla_host_t + memset(stat_buf, 0, sizeof(link_stat_t)); + + mcp->mb[0] = MBC_GET_LINK_STATUS; +- mcp->mb[1] = loop_id << 8; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = loop_id << 8; ++#endif + mcp->mb[2] = MSW(phys_address); + mcp->mb[3] = LSW(phys_address); +- mcp->mb[6] = QL21_64BITS_4THWD(phys_address); +- mcp->mb[7] = QL21_64BITS_3RDWD(phys_address); ++ mcp->mb[6] = MSW(MSD(phys_address)); ++ mcp->mb[7] = LSW(MSD(phys_address)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = 0; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = IOCTL_CMD; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2119,24 +2169,36 @@ qla2x00_get_link_status(scsi_qla_host_t + status[0] = mcp->mb[0]; + rval = BIT_1; + } else { +- /* copy over data */ +- memcpy(ret_buf, stat_buf,sizeof(link_stat_t)); ++ /* copy over data -- firmware data is LE. */ ++ ret_buf->link_fail_cnt = ++ le32_to_cpu(stat_buf->link_fail_cnt); ++ ret_buf->loss_sync_cnt = ++ le32_to_cpu(stat_buf->loss_sync_cnt); ++ ret_buf->loss_sig_cnt = ++ le32_to_cpu(stat_buf->loss_sig_cnt); ++ ret_buf->prim_seq_err_cnt = ++ le32_to_cpu(stat_buf->prim_seq_err_cnt); ++ ret_buf->inval_xmit_word_cnt = ++ le32_to_cpu(stat_buf->inval_xmit_word_cnt); ++ ret_buf->inval_crc_cnt = ++ le32_to_cpu(stat_buf->inval_crc_cnt); ++ + DEBUG(printk("qla2x00_get_link_status(%ld): stat dump: " + "fail_cnt=%d loss_sync=%d loss_sig=%d seq_err=%d " + "inval_xmt_word=%d inval_crc=%d.\n", +- ha->host_no, +- stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt, +- stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt, +- stat_buf->inval_xmit_word_cnt, +- stat_buf->inval_crc_cnt);) ++ ha->host_no, ret_buf->link_fail_cnt, ++ ret_buf->loss_sync_cnt, ret_buf->loss_sig_cnt, ++ ret_buf->prim_seq_err_cnt, ++ ret_buf->inval_xmit_word_cnt, ++ ret_buf->inval_crc_cnt);) + DEBUG11(printk("qla2x00_get_link_status(%ld): stat " + "dump: fail_cnt=%d loss_sync=%d loss_sig=%d " + "seq_err=%d inval_xmt_word=%d inval_crc=%d.\n", +- ha->host_no, +- stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt, +- stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt, +- stat_buf->inval_xmit_word_cnt, +- stat_buf->inval_crc_cnt);) ++ ha->host_no, ret_buf->link_fail_cnt, ++ ret_buf->loss_sync_cnt, ret_buf->loss_sig_cnt, ++ ret_buf->prim_seq_err_cnt, ++ ret_buf->inval_xmit_word_cnt, ++ ret_buf->inval_crc_cnt);) + } + } else { + /* Failed. */ +@@ -2145,8 +2207,8 @@ qla2x00_get_link_status(scsi_qla_host_t + rval = BIT_1; + } + +- pci_free_consistent(ha->pdev, sizeof(link_stat_t), +- stat_buf, phys_address); ++ pci_free_consistent(ha->pdev, sizeof(link_stat_t), stat_buf, ++ phys_address); + + return rval; + } +@@ -2177,12 +2239,21 @@ qla2x00_lip_reset(scsi_qla_host_t *ha) + ha->host_no);) + + mcp->mb[0] = MBC_LIP_RESET; +- mcp->mb[1] = 0xff00; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = 0x00ff; ++#else ++ mcp->mb[1] = 0xff00; ++#endif + mcp->mb[2] = ha->loop_reset_delay; + mcp->mb[3] = 0; + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = 0; ++ mcp->out_mb |= MBX_10; ++#endif ++ mcp->mb[1] = 0xff00; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2230,14 +2301,15 @@ qla2x00_send_sns(scsi_qla_host_t *ha, dm + mcp->mb[1] = cmd_size; + mcp->mb[2] = MSW(sns_phys_address); + mcp->mb[3] = LSW(sns_phys_address); +- mcp->mb[6] = QL21_64BITS_4THWD(sns_phys_address); +- mcp->mb[7] = QL21_64BITS_3RDWD(sns_phys_address); ++ mcp->mb[6] = MSW(MSD(sns_phys_address)); ++ mcp->mb[7] = LSW(MSD(sns_phys_address)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0|MBX_1; + mcp->buf_size = buf_size; + mcp->flags = MBX_DMA_OUT|MBX_DMA_IN; + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/ +- mcp->tov = ha->login_timeout * 2; ++ /* mcp->tov = ha->login_timeout * 2; */ ++ mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout/2); + + DEBUG11(printk("qla2x00_send_sns: retry cnt=%d ratov=%d total " + "tov=%d.\n", ha->retry_count, ha->login_timeout, mcp->tov);) +@@ -2294,13 +2366,22 @@ qla2x00_login_fabric(scsi_qla_host_t *ha + ha->host_no);) + + mcp->mb[0] = MBC_LOGIN_FABRIC_PORT; +- mcp->mb[1] = (loop_id << 8) | opt; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = (loop_id << 8) | opt; ++#endif + mcp->mb[2] = domain; + mcp->mb[3] = area << 8 | al_pa; + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = opt; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_2|MBX_1|MBX_0; + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/ +- mcp->tov = ha->login_timeout * 2; ++ /* mcp->tov = ha->login_timeout * 2; */ ++ mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout/2); + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2363,11 +2444,16 @@ qla2x00_login_local_device(scsi_qla_host + DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);) + + mcp->mb[0] = MBC_LOGIN_LOOP_PORT; +- mcp->mb[1] = (loop_id << 8) ; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = (loop_id << 8); ++#endif + mcp->mb[2] = opt; + mcp->out_mb = MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0; +- mcp->tov = ha->login_timeout * 2; ++ /* mcp->tov = ha->login_timeout * 2; */ ++ mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout/2); + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2432,10 +2518,19 @@ qla2x00_fabric_logout(scsi_qla_host_t *h + ha->host_no);) + + mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT; +- mcp->mb[1] = loop_id << 8; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = loop_id << 8; ++#endif + mcp->out_mb = MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = 0; ++ mcp->out_mb |= MBX_10; ++#endif ++ + mcp->in_mb = MBX_1|MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2484,7 +2579,7 @@ qla2x00_full_login_lip(scsi_qla_host_t * + mcp->mb[3] = 0; + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = (int)qla2x00_mailbox_command(ha, mcp); + +@@ -2502,12 +2597,10 @@ qla2x00_full_login_lip(scsi_qla_host_t * + } + + /* +- * qla2x00_get_port_list ++ * qla2x00_get_id_list + * + * Input: + * ha = adapter block pointer. +- * TARGET_QUEUE_LOCK must be released. +- * ADAPTER_STATE_LOCK must be released. + * + * Returns: + * qla2x00 local function return status code. +@@ -2516,40 +2609,37 @@ qla2x00_full_login_lip(scsi_qla_host_t * + * Kernel context. + */ + STATIC int +-qla2x00_get_port_list(scsi_qla_host_t *ha, port_list_entry_t *gp_list, +- dma_addr_t gpl_phys_address, uint16_t opt, uint16_t *size) ++qla2x00_get_id_list(scsi_qla_host_t *ha, void *id_list, dma_addr_t id_list_dma, ++ uint16_t *entries) + { + int rval; + mbx_cmd_t mc; + mbx_cmd_t *mcp = &mc; + +- DEBUG11(printk("qla2x00_get_port_list(%ld): entered.\n", ++ DEBUG11(printk("qla2x00_get_id_list(%ld): entered.\n", + ha->host_no);) + +- if( gp_list == NULL ) { ++ if (id_list == NULL) + return QL_STATUS_ERROR; +- } + +- mcp->mb[0] = MBC_GET_PORT_LIST; +- mcp->mb[1] = opt; +- mcp->mb[2] = MSW(gpl_phys_address); +- mcp->mb[3] = LSW(gpl_phys_address); +- mcp->mb[6] = QL21_64BITS_4THWD(gpl_phys_address); +- mcp->mb[7] = QL21_64BITS_3RDWD(gpl_phys_address); +- +- mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; ++ mcp->mb[0] = MBC_GET_ID_LIST; ++ mcp->mb[1] = MSW(id_list_dma); ++ mcp->mb[2] = LSW(id_list_dma); ++ mcp->mb[3] = MSW(MSD(id_list_dma)); ++ mcp->mb[6] = LSW(MSD(id_list_dma)); ++ mcp->out_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_1|MBX_0; + mcp->tov = 30; + mcp->flags = 0; +- rval = (int)qla2x00_mailbox_command(ha, mcp); ++ rval = qla2x00_mailbox_command(ha, mcp); + + if (rval != QL_STATUS_SUCCESS) { + /*EMPTY*/ +- DEBUG2_3_11(printk("qla2x00_get_port_list(%ld): failed=%x.\n", ++ DEBUG2_3_11(printk("qla2x00_get_id_list(%ld): failed=%x.\n", + ha->host_no, rval);) + } else { +- *size = mcp->mb[1]; +- DEBUG11(printk("qla2x00_get_port_list(%ld): done.\n", ++ *entries = mcp->mb[1]; ++ DEBUG11(printk("qla2x00_get_id_list(%ld): done.\n", + ha->host_no);) + } + +@@ -2569,12 +2659,12 @@ qla2x00_dump_ram(scsi_qla_host_t *ha, ui + mcp->mb[1] = risc_address & 0xffff; + mcp->mb[3] = LSW(ispdump_dma); + mcp->mb[2] = MSW(ispdump_dma); +- mcp->mb[4] = QL21_64BITS_4THWD(ispdump_dma); +- mcp->mb[6] = QL21_64BITS_3RDWD(ispdump_dma); ++ mcp->mb[4] = MSW(MSD(ispdump_dma)); ++ mcp->mb[6] = LSW(MSD(ispdump_dma)); + mcp->mb[7] = 0; + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = qla2x00_mailbox_command(ha, mcp); + +@@ -2599,7 +2689,7 @@ qla2x00_dump_ram(scsi_qla_host_t *ha, ui + * Context: + * Kernel context. + */ +-static int ++int + qla2x00_lun_reset(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun) + { + int rval; +@@ -2609,11 +2699,15 @@ qla2x00_lun_reset(scsi_qla_host_t *ha, u + ENTER("qla2x00_lun_reset"); + + mcp->mb[0] = MBC_LUN_RESET; +- mcp->mb[1] = loop_id << 8; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = loop_id << 8; ++#endif + mcp->mb[2] = lun; + mcp->out_mb = MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_0; +- mcp->tov = 30; ++ mcp->tov = 60; + mcp->flags = 0; + rval = qla2x00_mailbox_command(ha, mcp); + +@@ -2659,16 +2753,24 @@ qla2x00_send_rnid_mbx(scsi_qla_host_t *h + ha->host_no);) + + mcp->mb[0] = MBC_SEND_RNID_ELS; +- mcp->mb[1] = (loop_id << 8 ) | data_fmt; ++#if defined(EXTENDED_IDS) ++ mcp->mb[1] = loop_id; ++#else ++ mcp->mb[1] = (loop_id << 8) | data_fmt; ++#endif + mcp->mb[2] = MSW(buf_phys_addr); + mcp->mb[3] = LSW(buf_phys_addr); +- mcp->mb[6] = QL21_64BITS_4THWD(buf_phys_addr); +- mcp->mb[7] = QL21_64BITS_3RDWD(buf_phys_addr); ++ mcp->mb[6] = MSW(MSD(buf_phys_addr)); ++ mcp->mb[7] = LSW(MSD(buf_phys_addr)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; ++#if defined(EXTENDED_IDS) ++ mcp->mb[10] = data_fmt; ++ mcp->out_mb |= MBX_10; ++#endif + mcp->in_mb = MBX_1|MBX_0; + mcp->buf_size = buf_size; + mcp->flags = MBX_DMA_IN; +- mcp->tov = 30; ++ mcp->tov = 60; + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval != QL_STATUS_SUCCESS) { +@@ -2717,13 +2819,13 @@ qla2x00_set_rnid_params_mbx(scsi_qla_hos + mcp->mb[1] = 0; + mcp->mb[2] = MSW(buf_phys_addr); + mcp->mb[3] = LSW(buf_phys_addr); +- mcp->mb[6] = QL21_64BITS_4THWD(buf_phys_addr); +- mcp->mb[7] = QL21_64BITS_3RDWD(buf_phys_addr); ++ mcp->mb[6] = MSW(MSD(buf_phys_addr)); ++ mcp->mb[7] = LSW(MSD(buf_phys_addr)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_1|MBX_0; + mcp->buf_size = buf_size; + mcp->flags = MBX_DMA_OUT; +- mcp->tov = 30; ++ mcp->tov = 60; + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval != QLA2X00_SUCCESS) { +@@ -2772,13 +2874,13 @@ qla2x00_get_rnid_params_mbx(scsi_qla_hos + mcp->mb[1] = 0; + mcp->mb[2] = MSW(buf_phys_addr); + mcp->mb[3] = LSW(buf_phys_addr); +- mcp->mb[6] = QL21_64BITS_4THWD(buf_phys_addr); +- mcp->mb[7] = QL21_64BITS_3RDWD(buf_phys_addr); ++ mcp->mb[6] = MSW(MSD(buf_phys_addr)); ++ mcp->mb[7] = LSW(MSD(buf_phys_addr)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; + mcp->in_mb = MBX_1|MBX_0; + mcp->buf_size = buf_size; + mcp->flags = MBX_DMA_IN; +- mcp->tov = 30; ++ mcp->tov = 60; + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval != QLA2X00_SUCCESS) { +@@ -2832,13 +2934,14 @@ qla2x00_get_fcal_position_map(scsi_qla_h + mcp->mb[0] = MBC_GET_FCAL_MAP; + mcp->mb[2] = MSW(pmap_dma); + mcp->mb[3] = LSW(pmap_dma); +- mcp->mb[6] = QL21_64BITS_4THWD(pmap_dma); +- mcp->mb[7] = QL21_64BITS_3RDWD(pmap_dma); ++ mcp->mb[6] = MSW(MSD(pmap_dma)); ++ mcp->mb[7] = LSW(MSD(pmap_dma)); + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0; + mcp->in_mb = MBX_1|MBX_0; + mcp->buf_size = FCAL_MAP_SIZE; + mcp->flags = MBX_DMA_IN; +- mcp->tov = ha->login_timeout * 2; ++ /* mcp->tov = ha->login_timeout * 2; */ ++ mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout/2); + rval = (int)qla2x00_mailbox_command(ha, mcp); + + if (rval == QL_STATUS_SUCCESS) { +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_mbx.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_mbx.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_mbx.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_mbx.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_opts.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_opts.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_opts.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_opts.c 2004-04-22 19:42:21.000000000 -0700 +@@ -146,7 +146,8 @@ static const char * usageText[] = + " -w, --write", + " write option data to a module", + "", +- " MODULE must be 'qla2100_conf', 'qla2200_conf', or 'qla2300_conf'.", ++ " MODULE must be 'qla2100_conf', 'qla2200_conf', 'qla2300_conf'.", ++ " or 'qla200_conf'.", + "", + "Option Data:", + " Option data is read from one of the following files depending on the", +@@ -157,6 +158,7 @@ static const char * usageText[] = + " /etc/qla2100.conf qla2100_conf", + " /etc/qla2200.conf qla2200_conf", + " /etc/qla2300.conf qla2300_conf", ++ " /etc/qla200.conf qla20_conf", + "", + " By default, the following directory is used to specify the location of", + " the modules to update:", +@@ -193,6 +195,7 @@ static const char * usageText[] = + #define MODULE_QLA2100 1 + #define MODULE_QLA2200_CONF 2 + #define MODULE_QLA2300_CONF 3 ++#define MODULE_QLA200_CONF 4 + struct module_info { + + char *name; +@@ -205,6 +208,7 @@ static struct module_info modules[] = { + /* qla2100 not supported */ + { "qla2200_conf", MODULE_QLA2200_CONF, "/etc/qla2200.conf" }, + { "qla2300_conf", MODULE_QLA2300_CONF, "/etc/qla2300.conf" }, ++ { "qla200_conf", MODULE_QLA200_CONF, "/etc/qla200.conf" }, + { NULL, 0, NULL } + }; + struct module_info *module = NULL; +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ppc64.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ppc64.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_ppc64.c 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_ppc64.c 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,475 @@ ++/****************************************************************************** ++ * QLOGIC LINUX SOFTWARE ++ * ++ * QLogic ISP2x00 device driver for Linux 2.4.x ++ * Copyright (C) 2003 QLogic Corporation ++ * (www.qlogic.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, 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. ++ * ++ ******************************************************************************/ ++/* fs/ioctl.c */ ++extern asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, void *); ++ ++extern int register_ioctl32_conversion(unsigned int cmd, ++ int (*handler)(unsigned int, unsigned int, unsigned long, struct file *)); ++extern int unregister_ioctl32_conversion(unsigned int cmd); ++ ++#if 0 ++static char qla2200_drvr_loaded_str[] = "qla2200_driver_loaded"; ++static char qla2300_drvr_loaded_str[] = "qla2300_driver_loaded"; ++#if defined(ISP2200) ++static uint8_t qla2200_driver_loaded = 1; ++#elif defined(ISP2300) ++static uint8_t qla2300_driver_loaded = 1; ++#endif ++#endif ++ ++typedef struct _INT_LOOPBACK_REQ_32 ++{ ++ UINT16 Options; /* 2 */ ++ UINT32 TransferCount; /* 4 */ ++ UINT32 IterationCount; /* 4 */ ++ u32 BufferAddress; /* 4 */ ++ UINT32 BufferLength; /* 4 */ ++ UINT16 Reserved[9]; /* 18 */ ++} INT_LOOPBACK_REQ_32, *PINT_LOOPBACK_REQ_32; /* 36 */ ++ ++typedef struct _INT_LOOPBACK_RSP_32 ++{ ++ u32 BufferAddress; /* 4 */ ++ UINT32 BufferLength; /* 4 */ ++ UINT16 CompletionStatus; /* 2 */ ++ UINT16 CrcErrorCount; /* 2 */ ++ UINT16 DisparityErrorCount; /* 2 */ ++ UINT16 FrameLengthErrorCount; /* 2 */ ++ UINT32 IterationCountLastError; /* 4 */ ++ UINT8 CommandSent; /* 1 */ ++ UINT8 Reserved1; /* 1 */ ++ UINT16 Reserved2[7]; /* 14 */ ++} INT_LOOPBACK_RSP_32, *PINT_LOOPBACK_RSP_32; /* 36 */ ++ ++typedef struct { ++ u32 Signature; /* 4 chars string */ ++ UINT16 AddrMode; /* 2 */ ++ UINT16 Version; /* 2 */ ++ UINT16 SubCode; /* 2 */ ++ UINT16 Instance; /* 2 */ ++ UINT32 Status; /* 4 */ ++ UINT32 DetailStatus; /* 4 */ ++ UINT32 Reserved1; /* 4 */ ++ UINT32 RequestLen; /* 4 */ ++ UINT32 ResponseLen; /* 4 */ ++ u32 RequestAdr; /* 4 */ ++ u32 ResponseAdr; /* 4 */ ++ UINT16 HbaSelect; /* 2 */ ++ UINT16 VendorSpecificStatus[11]; /* 22 */ ++ u32 VendorSpecificData; /* 4 */ ++} EXT_IOCTL_32, *PEXT_IOCTL_32; /* 68 / 0x44 */ ++ ++int ++qla2x00_xfr_to_64loopback(EXT_IOCTL *pext, void **preq_32, void **prsp_32); ++int ++qla2x00_xfr_from_64loopback(EXT_IOCTL *pext, void **preq_32, void **prsp_32); ++ ++ ++/************************************/ ++/* Start of function implementation */ ++/************************************/ ++int ++qla2x00_ioctl32(unsigned int fd, unsigned int cmd, unsigned long arg, ++ struct file *pfile) ++{ ++ EXT_IOCTL_32 ext32; ++ EXT_IOCTL_32 *pext32 = &ext32; ++ EXT_IOCTL ext; ++ EXT_IOCTL *pext = &ext; ++ void *preq_32 = NULL; /* request pointer */ ++ void *prsp_32 = NULL; /* response pointer */ ++ ++ mm_segment_t old_fs; ++ int ret; ++ int tmp_rval; ++ ++ /* Catch any non-exioct ioctls */ ++ if (_IOC_TYPE(cmd) != QLMULTIPATH_MAGIC) { ++ return (-EINVAL); ++ } ++ ++ if (copy_from_user(pext32, (char *)arg, sizeof(EXT_IOCTL_32))) { ++ KMEM_FREE(pext32, sizeof(EXT_IOCTL_32)); ++ return (-EFAULT); ++ } ++ ++ DEBUG9(printk("%s: got hba instance %d.\n", ++ __func__, pext32->HbaSelect);) ++ ++ /* transfer values to EXT_IOCTL */ ++ memcpy(&pext->Signature, &pext32->Signature, sizeof(pext32->Signature)); ++ pext->AddrMode = pext32->AddrMode; ++ pext->Version = pext32->Version; ++ pext->SubCode = pext32->SubCode; ++ pext->Instance = pext32->Instance; ++ pext->Status = pext32->Status; ++ pext->DetailStatus = pext32->DetailStatus; ++ pext->Reserved1 = pext32->Reserved1; ++ pext->RequestLen = pext32->RequestLen; ++ pext->ResponseLen = pext32->ResponseLen; ++ pext->RequestAdr = (UINT64)(u64)pext32->RequestAdr; ++ pext->ResponseAdr = (UINT64)(u64)pext32->ResponseAdr; ++ pext->HbaSelect = pext32->HbaSelect; ++ memcpy(pext->VendorSpecificStatus, pext32->VendorSpecificStatus, ++ sizeof(pext32->VendorSpecificStatus)); ++ pext->VendorSpecificData = (UINT64)(u64)pext32->VendorSpecificData; ++ ++ /* transfer values for each individual command as necessary */ ++ switch (cmd) { /* switch on EXT IOCTL COMMAND CODE */ ++ case INT_CC_LOOPBACK: ++ qla2x00_xfr_to_64loopback(pext, &preq_32, &prsp_32); ++ break; ++ } ++ ++ old_fs = get_fs(); ++ set_fs(KERNEL_DS); /* tell kernel to accept arg in kernel space */ ++ ++ ret = sys_ioctl(fd, cmd, pext); ++ ++ set_fs(old_fs); ++ ++ /* transfer values back for each individual command as necessary */ ++ switch (cmd) { /* switch on EXT IOCTL COMMAND CODE */ ++ case INT_CC_LOOPBACK: ++ qla2x00_xfr_from_64loopback(pext, &preq_32, &prsp_32); ++ break; ++ } ++ ++ /* transfer values back to EXT_IOCTL_32 */ ++ pext32->Instance = pext->Instance; ++ pext32->Status = pext->Status; ++ pext32->DetailStatus = pext->DetailStatus; ++ pext32->Reserved1 = pext->Reserved1; ++ pext32->RequestLen = pext->RequestLen; ++ pext32->ResponseLen = pext->ResponseLen; ++ pext32->HbaSelect = pext->HbaSelect; ++ memcpy(pext32->VendorSpecificStatus, pext->VendorSpecificStatus, ++ sizeof(pext32->VendorSpecificStatus)); ++ pext32->VendorSpecificData = (u32)(u64)pext->VendorSpecificData; ++ ++ /* Always try to copy values back regardless what happened before. */ ++ tmp_rval = copy_to_user((char *)arg, pext32, sizeof(EXT_IOCTL_32)); ++ if (ret == 0) ++ ret = tmp_rval; ++ ++ return (ret); ++} ++ ++static inline int ++apidev_reg_increasing_idx(uint16_t low_idx, uint16_t high_idx) ++{ ++ int err = 0; ++ int i; ++ unsigned int cmd; ++ ++ for (i = low_idx; i <= high_idx; i++) { ++ cmd = (unsigned int)QL_IOCTL_CMD(i); ++ err = register_ioctl32_conversion(cmd, qla2x00_ioctl32); ++ if (err) { ++ DEBUG9(printk( ++ "%s: error registering cmd %x. err=%d.\n", ++ __func__, cmd, err);) ++ break; ++ } ++ DEBUG9(printk("%s: registered cmd %x.\n", __func__, cmd);) ++ } ++ ++ return (err); ++} ++ ++static inline int ++apidev_unreg_increasing_idx(uint16_t low_idx, uint16_t high_idx) ++{ ++ int err = 0; ++ int i; ++ unsigned int cmd; ++ ++ for (i = low_idx; i <= high_idx; i++) { ++ cmd = (unsigned int)QL_IOCTL_CMD(i); ++ err = unregister_ioctl32_conversion(cmd); ++ if (err) { ++ DEBUG9(printk( ++ "%s: error unregistering cmd %x. err=%d.\n", ++ __func__, cmd, err);) ++ break; ++ } ++ DEBUG9(printk("%s: unregistered cmd %x.\n", __func__, cmd);) ++ } ++ ++ return (err); ++} ++ ++#if 0 ++static inline int ++apidev_other_qla_drvr_loaded(void) ++{ ++#if defined(ISP2200) ++ if (inter_module_get(qla2300_drvr_loaded_str)) { ++ /* 2300 is already loaded */ ++ /* decrement usage count */ ++ inter_module_put(qla2300_drvr_loaded_str); ++ DEBUG9(printk("%s: found 2300 already loaded.\n", __func__);) ++ return TRUE; ++ } ++#elif defined(ISP2300) ++ if (inter_module_get(qla2200_drvr_loaded_str)) { ++ /* 2200 is already loaded */ ++ /* decrement usage count */ ++ inter_module_put(qla2200_drvr_loaded_str); ++ DEBUG9(printk("%s: found 2200 already loaded.\n", __func__);) ++ return TRUE; ++ } ++#endif ++ return FALSE; ++} ++#endif ++ ++static inline void ++apidev_init_ppc64(void) ++{ ++ int err; ++ ++#if 0 ++#if defined(ISP2200) ++ inter_module_register(qla2200_drvr_loaded_str, THIS_MODULE, ++ &qla2200_driver_loaded); ++#elif defined(ISP2300) ++ inter_module_register(qla2300_drvr_loaded_str, THIS_MODULE, ++ &qla2300_driver_loaded); ++#endif ++ ++ if (apidev_other_qla_drvr_loaded()) { ++ /* ioctl registered before */ ++ return; ++ } ++#endif ++ ++ DEBUG9(printk("qla2x00: going to register ioctl32 cmds.\n");) ++ err = apidev_reg_increasing_idx(EXT_DEF_LN_REG_CC_START_IDX, ++ EXT_DEF_LN_REG_CC_END_IDX); ++ if (!err) { ++ err = apidev_reg_increasing_idx(EXT_DEF_LN_INT_CC_START_IDX, ++ EXT_DEF_LN_INT_CC_END_IDX); ++ } ++ if (!err) { ++ err = apidev_reg_increasing_idx(EXT_DEF_LN_ADD_CC_START_IDX, ++ EXT_DEF_LN_ADD_CC_END_IDX); ++ } ++ if (!err) { ++ err = apidev_reg_increasing_idx(FO_CC_START_IDX, FO_CC_END_IDX); ++ } ++ if (!err) { ++ /* Linux specific cmd codes are defined in decreasing order. */ ++ err = apidev_reg_increasing_idx(EXT_DEF_LN_SPC_CC_END_IDX, ++ EXT_DEF_LN_SPC_CC_START_IDX); ++ } ++} ++ ++static inline void ++apidev_cleanup_ppc64(void) ++{ ++ int err; ++ ++#if 0 ++#if defined(ISP2200) ++ inter_module_unregister(qla2200_drvr_loaded_str); ++#elif defined(ISP2300) ++ inter_module_unregister(qla2300_drvr_loaded_str); ++#endif ++ ++ if (apidev_other_qla_drvr_loaded()) { ++ /* don't unregister yet */ ++ return; ++ } ++#endif ++ ++ DEBUG9(printk("qla2x00: going to unregister ioctl32 cmds.\n");) ++ err = apidev_unreg_increasing_idx(EXT_DEF_LN_REG_CC_START_IDX, ++ EXT_DEF_LN_REG_CC_END_IDX); ++ if (!err) { ++ err = apidev_unreg_increasing_idx(EXT_DEF_LN_INT_CC_START_IDX, ++ EXT_DEF_LN_INT_CC_END_IDX); ++ } ++ if (!err) { ++ err = apidev_unreg_increasing_idx(EXT_DEF_LN_ADD_CC_START_IDX, ++ EXT_DEF_LN_ADD_CC_END_IDX); ++ } ++ if (!err) { ++ err = apidev_unreg_increasing_idx(FO_CC_START_IDX, ++ FO_CC_END_IDX); ++ } ++ if (!err) { ++ /* Linux specific cmd codes are defined in decreasing order. */ ++ err = apidev_unreg_increasing_idx(EXT_DEF_LN_SPC_CC_END_IDX, ++ EXT_DEF_LN_SPC_CC_START_IDX); ++ } ++} ++ ++int ++qla2x00_xfr_to_64loopback(EXT_IOCTL *pext, void **preq_32, void **prsp_32) ++{ ++ int status; ++ ++ INT_LOOPBACK_REQ_32 lb_req_32; ++ INT_LOOPBACK_REQ_32 *plb_req_32 = &lb_req_32; ++ INT_LOOPBACK_REQ *plb_req; ++ INT_LOOPBACK_RSP_32 lb_rsp_32; ++ INT_LOOPBACK_RSP_32 *plb_rsp_32 = &lb_rsp_32; ++ INT_LOOPBACK_RSP *plb_rsp; ++ ++ plb_req = (UINT64)KMEM_ZALLOC(sizeof(INT_LOOPBACK_REQ), 50); ++ if (plb_req == NULL) { ++ /* error */ ++ pext->Status = EXT_STATUS_NO_MEMORY; ++ printk(KERN_WARNING ++ "qla2x00: ERROR in ioctl loopback request conversion " ++ "allocation.\n"); ++ return QL_STATUS_ERROR; ++ } ++ plb_rsp = (UINT64)KMEM_ZALLOC(sizeof(INT_LOOPBACK_RSP), 51); ++ if (plb_rsp == NULL) { ++ /* error */ ++ pext->Status = EXT_STATUS_NO_MEMORY; ++ printk(KERN_WARNING ++ "qla2x00: ERROR in ioctl loopback response conversion " ++ "allocation.\n"); ++ return QL_STATUS_ERROR; ++ } ++ ++ if (pext->RequestLen != sizeof(INT_LOOPBACK_REQ_32)) { ++ pext->Status = EXT_STATUS_INVALID_PARAM; ++ DEBUG9_10(printk( ++ "%s: invalid RequestLen =%d.\n", ++ __func__, pext->RequestLen);) ++ return QL_STATUS_ERROR; ++ } ++ ++ if (pext->ResponseLen != sizeof(INT_LOOPBACK_RSP_32)) { ++ pext->Status = EXT_STATUS_INVALID_PARAM; ++ DEBUG9_10(printk( ++ "%s: invalid ResponseLen =%d.\n", ++ __func__, pext->ResponseLen);) ++ return QL_STATUS_ERROR; ++ } ++ ++ status = copy_from_user(plb_req_32, pext->RequestAdr, ++ pext->RequestLen); ++ if (status) { ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s: ERROR copy " ++ "request buffer.\n", __func__);) ++ return QL_STATUS_ERROR; ++ } ++ ++ status = copy_from_user(plb_rsp_32, pext->ResponseAdr, ++ pext->ResponseLen); ++ if (status) { ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s: ERROR copy " ++ "response buffer.\n", __func__);) ++ return QL_STATUS_ERROR; ++ } ++ ++ /* Save for later */ ++ *preq_32 = pext->RequestAdr; ++ *prsp_32 = pext->ResponseAdr; ++ ++ /* Transfer over values */ ++ plb_req->Options = plb_req_32->Options; ++ plb_req->TransferCount = plb_req_32->TransferCount; ++ plb_req->IterationCount = plb_req_32->IterationCount; ++ plb_req->BufferAddress = (UINT64)(u64)plb_req_32->BufferAddress; ++ plb_req->BufferLength = plb_req_32->BufferLength; ++ ++ plb_rsp->BufferAddress = (UINT64)(u64)plb_rsp_32->BufferAddress; ++ plb_rsp->BufferLength = plb_rsp_32->BufferLength; ++ plb_rsp->CompletionStatus = plb_rsp_32->CompletionStatus; ++ plb_rsp->CrcErrorCount = plb_rsp_32->CrcErrorCount; ++ plb_rsp->DisparityErrorCount = plb_rsp_32->DisparityErrorCount; ++ plb_rsp->FrameLengthErrorCount = plb_rsp_32->FrameLengthErrorCount; ++ plb_rsp->IterationCountLastError = plb_rsp_32->IterationCountLastError; ++ plb_rsp->CommandSent = plb_rsp_32->CommandSent; ++ ++ /* Assign new values */ ++ pext->RequestAdr = plb_req; ++ pext->ResponseAdr = plb_rsp; ++ pext->RequestLen = sizeof(INT_LOOPBACK_REQ); ++ pext->ResponseLen = sizeof(INT_LOOPBACK_RSP); ++ ++ return 0; ++} ++ ++int ++qla2x00_xfr_from_64loopback(EXT_IOCTL *pext, void **preq_32, void **prsp_32) ++{ ++ int status; ++ ++ INT_LOOPBACK_REQ_32 lb_req_32; ++ INT_LOOPBACK_REQ_32 *plb_req_32 = &lb_req_32; ++ INT_LOOPBACK_REQ *plb_req; ++ INT_LOOPBACK_RSP_32 lb_rsp_32; ++ INT_LOOPBACK_RSP_32 *plb_rsp_32 = &lb_rsp_32; ++ INT_LOOPBACK_RSP *plb_rsp; ++ ++ plb_req = (INT_LOOPBACK_REQ *)pext->RequestAdr; ++ plb_rsp = (INT_LOOPBACK_RSP *)pext->ResponseAdr; ++ ++ plb_req_32->Options = plb_req->Options; ++ plb_req_32->TransferCount = plb_req->TransferCount; ++ plb_req_32->IterationCount = plb_req->IterationCount; ++ plb_req_32->BufferAddress = (u32)(u64)plb_req->BufferAddress; ++ plb_req_32->BufferLength = plb_req->BufferLength; ++ ++ plb_rsp_32->BufferAddress = (u32)(u64)plb_rsp->BufferAddress; ++ plb_rsp_32->BufferLength = plb_rsp->BufferLength; ++ plb_rsp_32->CompletionStatus = plb_rsp->CompletionStatus; ++ plb_rsp_32->CrcErrorCount = plb_rsp->CrcErrorCount; ++ plb_rsp_32->DisparityErrorCount = plb_rsp->DisparityErrorCount; ++ plb_rsp_32->FrameLengthErrorCount = plb_rsp->FrameLengthErrorCount; ++ plb_rsp_32->IterationCountLastError = plb_rsp->IterationCountLastError; ++ plb_rsp_32->CommandSent = plb_rsp->CommandSent; ++ ++ KMEM_FREE(plb_req, sizeof(INT_LOOPBACK_REQ)); ++ KMEM_FREE(plb_rsp, sizeof(INT_LOOPBACK_RSP)); ++ ++ pext->RequestAdr = *preq_32; ++ pext->ResponseAdr = *prsp_32; ++ pext->RequestLen = sizeof(INT_LOOPBACK_REQ_32); ++ pext->ResponseLen = sizeof(INT_LOOPBACK_RSP_32); ++ ++ status = copy_to_user(pext->RequestAdr, plb_rsp_32, pext->RequestLen); ++ if (status) { ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s: ERROR " ++ "write of request data buffer.\n", __func__);) ++ return QL_STATUS_ERROR; ++ } ++ ++ /* put loopback return data in user buffer */ ++ status = copy_to_user(pext->ResponseAdr, plb_rsp_32, pext->ResponseLen); ++ if (status) { ++ pext->Status = EXT_STATUS_COPY_ERR; ++ DEBUG9_10(printk("%s: ERROR " ++ "write of response data buffer.\n", __func__);) ++ return QL_STATUS_ERROR; ++ } ++ ++ return 0; ++} ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_settings.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_settings.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_settings.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_settings.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -21,7 +21,7 @@ + * 0 - Disable and 1 - Enable + */ + #define LOOP_ID_FROM_ONE 0 /* loop ID start from 1 when P2P */ +-#define MEMORY_MAPPED_IO 0 ++#define MEMORY_MAPPED_IO 1 + #define DEBUG_QLA2100_INTR 0 + #define USE_NVRAM_DEFAULTS 0 + #define DEBUG_PRINT_NVRAM 0 +@@ -35,16 +35,17 @@ + #define WATCH_THREADS_SIZ 0 /* watch size of pending queue */ + #define USE_PORTNAME 1 /* option to use port names for targets */ + #define LUN_MASKING 0 +-#define USE_FLASH_DATABASE 0 /* Save persistent data to flash */ + #define QLA_SCSI_VENDOR_DIR 0 /* Decode vendor specific opcodes for direction */ + #define QLA2100_LIPTEST 0 + #define REQ_TRACE 1 + #define USE_ABORT_TGT 1 /* Use Abort Target mbx cmd */ + +-#if defined(FC_IP_SUPPORT) + #define REG_FC4_ENABLED 1 /* Enable register_fc4 call */ ++ ++#if defined(ISP200) ++#define REG_FDMI_ENABLED 0 /* Support FDMI registration */ + #else +-#define REG_FC4_ENABLED 0 /* Enable register_fc4 call */ ++#define REG_FDMI_ENABLED 1 /* Support FDMI registration */ + #endif + + #undef TRACECODE /* include tracing code in watchdog routines */ +@@ -57,23 +58,11 @@ + #define NO_LONG_DELAYS 0 + #define QL_TRACE_MEMORY 0 + +-/* +- * This enables some performance code which is not enabled +- * normally: +- * +- * - a tasklet to process the done queue and send requests back to +- * the OS. +- */ +-#define QLA2X_PERFORMANCE 1 +- +-/* The following WORD_FW_LOAD is defined in Makefile for ia-64 builds +- and can also be decommented here for Word by Word confirmation of +- RISC code download operation */ +-/* #define WORD_FW_LOAD 0 */ +- + #define MPIO_SUPPORT 0 + #define VSA 0 /* Volume Set Addressing */ + ++#define QLA2XXX_LOOP_RETRY_COUNT 10 ++ + #define PERF_CODE 0 /* enable performance code */ + #define EH_DEBUG 0 /* enable new error handling debug */ + /* +@@ -133,6 +122,10 @@ + + /* Max time to wait for the loop to be in LOOP_READY state */ + #define MAX_LOOP_TIMEOUT ( 60 * 5) ++ ++/* Default: IOCTL pass-thru command timeout in seconds. */ ++#define QLA_PT_CMD_TOV (66) ++ + #define EH_ACTIVE 1 /* Error handler active */ + + #include "qla_version.h" +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_vendor.c linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_vendor.c +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_vendor.c 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_vendor.c 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_version.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_version.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qla_version.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qla_version.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -19,9 +19,9 @@ + /* + * Driver version + */ +-#define QLA2100_VERSION "6.06.00" ++#define QLA2100_VERSION "7.00.00b22" + +-#define QLA_DRIVER_MAJOR_VER 6 +-#define QLA_DRIVER_MINOR_VER 6 ++#define QLA_DRIVER_MAJOR_VER 7 ++#define QLA_DRIVER_MINOR_VER 0 + #define QLA_DRIVER_PATCH_VER 0 +-#define QLA_DRIVER_BETA_VER 0 ++#define QLA_DRIVER_BETA_VER 22 +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfo.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfo.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfo.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfo.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfolimits.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfolimits.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfolimits.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfolimits.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfoln.h linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfoln.h +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/qlfoln.h 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/qlfoln.h 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + * QLOGIC LINUX SOFTWARE + * + * QLogic ISP2x00 device driver for Linux 2.4.x +- * Copyright (C) 2003 Qlogic Corporation ++ * Copyright (C) 2003 QLogic Corporation + * (www.qlogic.com) + * + * This program is free software; you can redistribute it and/or modify it +@@ -19,33 +19,46 @@ + + + #define QLMULTIPATH_MAGIC 'y' +-/********************************************************/ +-/* Failover ioctl command codes range from 0xc0 to 0xdf */ +-/********************************************************/ ++#define QL_IOCTL_BASE(idx) \ ++ _IOWR(QLMULTIPATH_MAGIC, idx, sizeof(EXT_IOCTL)) + ++#if defined(QLA_CONFIG_COMPAT) ++#define QL_IOCTL_CMD(idx) (QL_IOCTL_BASE(idx) - 0x40000) ++#else ++#define QL_IOCTL_CMD(idx) QL_IOCTL_BASE(idx) ++#endif ++ ++/************************************************************* ++ * Failover ioctl command codes range from 0xc0 to 0xdf. ++ * The foioctl command code end index must be updated whenever ++ * adding new commands. ++ *************************************************************/ ++#define FO_CC_START_IDX 0xc8 /* foioctl cmd start index */ + + #define FO_CC_GET_PARAMS_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 200, sizeof(EXT_IOCTL)) /* 0xc8 */ ++ QL_IOCTL_CMD(0xc8) + #define FO_CC_SET_PARAMS_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 201, sizeof(EXT_IOCTL)) /* 0xc9 */ ++ QL_IOCTL_CMD(0xc9) + #define FO_CC_GET_PATHS_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 202, sizeof(EXT_IOCTL)) /* 0xca */ ++ QL_IOCTL_CMD(0xca) + #define FO_CC_SET_CURRENT_PATH_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 203, sizeof(EXT_IOCTL)) /* 0xcb */ ++ QL_IOCTL_CMD(0xcb) + #define FO_CC_GET_HBA_STAT_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 204, sizeof(EXT_IOCTL)) /* 0xcc */ ++ QL_IOCTL_CMD(0xcc) + #define FO_CC_RESET_HBA_STAT_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 205, sizeof(EXT_IOCTL)) /* 0xcd */ ++ QL_IOCTL_CMD(0xcd) + #define FO_CC_GET_LUN_DATA_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 206, sizeof(EXT_IOCTL)) /* 0xce */ ++ QL_IOCTL_CMD(0xce) + #define FO_CC_SET_LUN_DATA_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 207, sizeof(EXT_IOCTL)) /* 0xcf */ ++ QL_IOCTL_CMD(0xcf) + #define FO_CC_GET_TARGET_DATA_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 208, sizeof(EXT_IOCTL)) /* 0xd0 */ ++ QL_IOCTL_CMD(0xd0) + #define FO_CC_SET_TARGET_DATA_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 209, sizeof(EXT_IOCTL)) /* 0xd1 */ ++ QL_IOCTL_CMD(0xd1) + #define FO_CC_GET_FO_DRIVER_VERSION_OS \ +- _IOWR(QLMULTIPATH_MAGIC, 210, sizeof(EXT_IOCTL)) /* 0xd2 */ ++ QL_IOCTL_CMD(0xd2) ++ ++#define FO_CC_END_IDX 0xd2 /* foioctl cmd end index */ + + + #define BOOLEAN uint8_t +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/README.qla2x00 linux-2.4.21-x86_64/drivers/scsi/qla2xxx/README.qla2x00 +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/README.qla2x00 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/README.qla2x00 2004-04-22 19:42:21.000000000 -0700 +@@ -2,7 +2,7 @@ + + Products supported: QLA22XX, QLA23XX + +-08/07/2003 ++03/23/2004 + + Contents + -------- +@@ -16,12 +16,14 @@ Contents + 4. Saving the Driver Source to Diskette + + 5. Installing the Driver +- +- 5.1 Building the driver from the Source +- 5.1.1. Building a Uni-Processor (UP) version of the driver +- 5.1.2. Building a Symmetric Multi-Processor(SMP) version of the ++ 5.1 Building the driver using the Source RPM package ++ 5.1.1 Installing the QLogic Driver Source RPM ++ 5.1.2 Uinstalling the QLogic Driver Source RPM ++ 5.2 Building the driver from the Source ++ 5.2.1. Building a Uni-Processor (UP) version of the driver ++ 5.2.2. Building a Symmetric Multi-Processor(SMP) version of the + Driver +- 5.2 Load the Driver Manually using INSMOD or MODPROBE ++ 5.3 Load the Driver Manually using INSMOD or MODPROBE + 5.3 Making a RAMDISK Image to Load the Driver + + 6. Driver Parameters +@@ -99,7 +101,7 @@ Please refer to Release Notes (release.t + 4. Saving the Driver Distribution / Source file to Diskette + ----------------------------------------------------------- + +-1. Download the failover or non-failover distribution file ++1. Download the driver distribution file + - qla2x00-vx.yy.zz-dist.tgz or the driver source file + - qla2x00-vx.yy.zz.tgz from QLogic's website. + +@@ -118,7 +120,39 @@ Please refer to Release Notes (release.t + 5. Installing the Driver + ------------------------ + +-5.1 Building a Driver from the Source Code ++5.1 Building the Driver using the source RPM package ++------------------------------------------------------ ++The easiliest way to install and build the QLogic Linux driver is to ++use the source RPM package. The only requirement for the rpm is the ++kernel-sources which is normally installed when the kernel is installed ++on the system. The following distributions are supported: ++ ++1. Red Hat Advanced Server 2.1 ++2. Red Hat Enterprise Linux 3.0 ++3. SUSE Linux Enterprise Server 8 (SLES 8) ++ ++5.1.1 Installng the QLogic Driver Source RPM ++ ++ Install the Source RPM by executing the following command : ++ ++ # rpm -i qla2x00-vX.XX.XXbXX-Y.ZZZZ.rpm ++ ++5.1.2 Uinstalling the QLogic Driver Source RPM ++ ++ Uninstall the Source RPM by executing the following command : ++ ++ # rpm -e qla2x00-vX.XX.XXbXX-Y ++ ++5.1.3 Installing only the Driver Source from Source RPM ++ ++ Install only the Driver Source from Source RPM by executing the following command : ++ ++ # rpm -i --noscripts qla2x00-vX.XX.XXbXX-Y.ZZZZ.rpm ++ ++ ++Note : Driver source is installed in - /usr/src/qla2x00 path upon installation of the Source RPM. ++ ++5.2 Building a Driver from the Source Code + ------------------------------------------- + + From the source code, you can build a qla2200.o or qla2300.o for +@@ -126,7 +160,7 @@ your UP or SMP system, and load the driv + using a RAMDISK image during system boot time. + + +-5.1.1 Building a Uni-Processor (UP) Version of the Driver ++5.2.1 Building a Uni-Processor (UP) Version of the Driver + --------------------------------------------------------- + + For RedHat Distribution: +@@ -166,8 +200,8 @@ For SuSE Distribution: + 1. Install the kernel-source from the SuSE distribution CD-ROM + by typing: + +- # yast or +- # yast2 ++ # yast -i kernel-source or ++ # yast2 -i kernel-source + + 2. Create a soft link ( /usr/src/linux) to the kernel source + (/usr/src/) by typing: +@@ -177,7 +211,7 @@ For SuSE Distribution: + 3. To ensure kernel version synchronization between the driver and + running kernel, type the following: + +- # cd /usr/src/linux ++ # cd /usr/src/linux + # make mrproper (completely clean the kernel tree) + # cp /boot/vmlinuz.config .config (copy the new config) + # make oldconfig (update configuration using .config) +@@ -208,11 +242,11 @@ For SuSE Distribution: + # make all OSVER=linux + + +-NOTE: To load the driver manually, see section 5.2. To make a RAMDISK +- image to load the driver during system boot time, see section 5.3. ++NOTE: To load the driver manually, see section 5.3. To make a RAMDISK ++ image to load the driver during system boot time, see section 5.4. + + +-5.1.2. Building a Symmetric Multi-Processor (SMP) Version of the Driver ++5.2.2. Building a Symmetric Multi-Processor (SMP) Version of the Driver + ----------------------------------------------------------------------- + + For RedHat Distribution: +@@ -252,8 +286,8 @@ For SuSE Distribution: + 1. Install the kernel-source from the SuSE distribution CD-ROM + by typing: + +- # yast or +- # yast2 ++ # yast -i kernel-source or ++ # yast2 -i kernel-source + + 2. Create a soft link ( /usr/src/linux) to the kernel source + (/usr/src/) by typing: +@@ -294,16 +328,16 @@ For SuSE Distribution: + # make all SMP=1 OSVER=linux + + +-NOTE: To load the driver manually, see section 5.2. To make a RAMDISK +- image to load the driver during system boot time, see section 5.3. ++NOTE: To load the driver manually, see section 5.3. To make a RAMDISK ++ image to load the driver during system boot time, see section 5.4. + + + +-5.2 Load the Driver Manually using INSMOD or MODPROBE ++5.3 Load the Driver Manually using INSMOD or MODPROBE + ------------------------------------------------------ + +-Before loading the driver manually, first build the driver binary from +-the driver source files as described in sections 5.1.1 and 5.1.2. ++Before loading the driver manually, build the driver binary by installing Source RPM as described ++in sections 5.1.1 or from the driver source files as described in sections 5.2.1 and 5.2.2. + + - To load the driver directly from the local build directory, type + the following: +@@ -321,7 +355,7 @@ the driver source files as described in + + For SuSE Distribution: + +- # make all OSVER=linux install (build the driver and copy to the right location) ++# make all OSVER=linux install (build the driver and copy to the right location) + + 2. Type the following to load the Driver: + +@@ -330,22 +364,20 @@ the driver source files as described in + # modprobe qla2300 + + +-5.3 Making a RAMDISK Image to Load the Driver ++5.4 Making a RAMDISK Image to Load the Driver + ---------------------------------------------- + +-1. Build the Driver binary files (see 5.1.1 and 5.1.2). ++1. Build the Driver binary files (see 5.2.1 and 5.2.2). + +-2. Copy the files to: ++2. Install the driver : + +- /lib/modules//kernel/drivers/scsi/ ++ For RedHat Distribuion: + +- NOTE: To ensure that the older Driver binary included in the original +- distribution does not interfere with the updated version, +- please rename the old Driver binary as follows: +- +- # cd /lib/modules//kernel/drivers/addon/qla2200 +- # mv qla2200.o qla2200_rh.o +- # mv qla2300.o qla2300_rh.o ++ # make all install ++ ++ For SuSE Distribution: ++ ++ # make all OSVER=linux install + + 3. Add the following line to /etc/modules.conf. + +@@ -366,7 +398,7 @@ the driver source files as described in + For SuSE Distribution: + + You will need to modify the /etc/sysconfig/kernel file to specify +- while modules will be added during initrd creation. ++ which modules will be added during ram disk creation. + + NOTE: Please ensure the conf module is listed before the actual + driver module. For example: +@@ -471,10 +503,6 @@ the driver source files as described in + 6. Driver Parameters + -------------------- + +-The Driver parameters are divided into System Parameters and NVRAM +-Parameters sections. +- +- + 6.1 System Parameters + ---------------------- + +@@ -571,29 +599,100 @@ None. + + 6.3 Driver Command Line Parameters + ----------------------------------- ++The driver gets its parameters from the command line itself or from ++modprobe 'option' directive found in the modules.conf file or qla2[2,3]00_conf ++module. The parameters are in simple keyword=value format, i.e. ql2xfailover=1. ++Where keyword is one of the following option parameters: + +-The available command line options can be viewed using one +-or all of the three Linux commands depending on board type: ++ Usage: insmod qla2300 = ++ ++* ql2xfailover - Enables/Disables Driver failover support. ++ 0 to disable; 1 to enable. ++ ++ Default behaviour based on compile-time option MPIO_SUPPORT ++ in qla_settings.h. + +- # modinfo -p qla2300 +- # modinfo -p qla2200 +- # modinfo -p qla2100 ++* ql2xmaxqdepth - Maximum queue depth reported to scsi mid-level for ++ each OS device. This specifies the number of outstanding requests ++ per lun. + +-The option "ql2xopts=" has additional sub-options as follows: ++* ql2xlogintimeout - Defines the Login timeout value in seconds ++ once initial login. + +- verbose - Verbose detail debug information - on by default ++* qlport_down_retry - Defines the command retries to a port that returns" ++ "a PORT-DOWN status."); + +- quiet - Driver does not display normal messages to console: +- Waiting for LIP to complete.... +- scsi%d: Topology - %s, Host Loop address 0x%x +- scsi(%d): LIP occurred +- scsi(%d): LIP reset occurred ++* ql2xretrycount, ++ "Maximum number of mid-layer retries allowed for a command. " ++ "Default value in non-failover mode is 20, " ++ "in failover mode, 30."); ++ ++* max_srbs - This parameter specifies the Maximum number of simultaneous ++ commands that can be accepted from the mid-level per HBA. Default: 4096. ++ ++* displayConfig - this parameter will display the current configuration. ++ 1 - display the configuration; 0 - don't display the configuration. ++ Default - 1 ++ ++* ConfigRequired - "If 1, then only configured devices passed in through the" ++ "ql2xopts parameter will be presented to the OS"); ++ ++* recoveryTime - "Recovery time in seconds before a target device is sent I/O " ++ "after a failback is performed."); ++ ++* failbackTime - Defines the delay in seconds before a failback is performed. ++ Default - 3 ++ ++* Binding method - Defines what target persistent binding method to use: ++ 0 - bind by Portname and 1 - bind by PortID. ++ Default - 0 (portname binding) ++ ++* extended_error_logging - Defines whether to enable (1) or Disable (0) writing ++ the debug information to /var/log/messages. ++ Default - 0 (disable) ++ ++* MaxPathsPerDevice - maximum number of paths to a device ++ Default - 8 (compile time only) ++ ++* MaxRetriesPerPath - Defines how many retries to perform on the current ++ path before failing over to the next path in the path list. ++ Default - 3 ++ ++* MaxRetriesPerIo - Defines total retries to do before failing the command ++ and returning to the OS with selection timeout (DID_NO_CONNECT). ++ Default - (MaxRetriesPerPath * MaxPathsPerDevice ) + 1 ++ ++* QlFailoverNotifyType - Defines type of failover notification mechanism ++ to use when a failover or failback occurs. Certain storage systems require ++ special CDB's to be issued to do failover or failback. ++ Default - 0 (none) ++ ++* ConfigRequired - Defines how to bind the devices. ++ 0 - Present all the devices discovered to the OS. ++ 1 - Present only the configured devices (i.e. the device defined in ++ /etc/qla2300_conf ) to the OS. ++ Default - 0 ++ ++* FailbackTime - Defines the delay in seconds before a failback is performed ++ to ensure all paths are available. ++ Default - 5 seconds ++ ++* RecoveryTime - Defines the recovery time in seconds required before commands ++ can be sent down the restored path. ++ Default - 10 seconds ++ ++ ++ All the available parameters can be viewed using one ++ of the following commands: ++ ++ # modinfo -p qla2300 ++ # modinfo -p qla2200 ++ # modinfo -p qla2100 + + Usage examples: + +- # insmod qla2200.o ql2xfailover=1 +- # insmod qla2200.o qlport_down_retry=60 +- # insmod qla2300.o ql2xopts="quiet" ++ # insmod qla2300.o ql2xfailover=1 ++ # insmod qla2300.o qlport_down_retry=60 + + + ********************************************************************** +@@ -790,14 +889,14 @@ a string overflow error from modprobe. + 8.4 Persistent Binding + ---------------------- + +-The Persistent Binding information consists of some adapter parameter +-entries along with some target entries. However, the Linux entries +-have been shorten to save space on the command line. Currently, there +-is no limit on the size of the command line when using modprobe. But, +-if you embedded the driver in the kernel you are using lilo that has +-a string size limitation. ++The Persistent Binding information consists of some adapter configuration ++entries along with some target entries. The entries are specified in ++two formats: verbose and shorten. The shorten format allows a bigger ++configuration to fix in the limited space on the command line. An ++alternate to command line is the configuration file. See section ++8.5. + +-Persistent Binding can be specified in two ways. Manually or using ++Persistent Binding can be specified in two ways. Manually or via + SANsurfer. We recommend using SANsurfer for ease of use. Reference + section 8.3.3 for additonal information about SANsurfer. The + following is the procedure to manually add persistent binding +@@ -811,7 +910,7 @@ The best way to extract configuration me + direct the output to a file. You need to remove the Linux timestamp at + the beginning of each message and combine them together on single line. + For example +- #insmod qla2200 displayConfig=1 ++ #insmod qla2300 displayConfig=1 + #grep "scsi-qla" /var/log/messages > /tmp/info.cfg + + The format of the persistent binding commands is as follows: +@@ -885,79 +984,33 @@ This mask specification is heavily type + 8.5 Configuration Data + ---------------------- + +-To pass the configuration data to the driver, load it using "modprobe" +-instead of "insmod". +- +-8.5.1 Limitations With /etc/modules.conf +----------------------------------------- +- +-Due to size constraints inherent in the user-space applications which load +-kernel modules, the total amount of configuration data that could be passed via +-modules.conf by the modprobe application was around 4096 bytes of information +-(with minor tuning of the modutil package). Of course, as densities of SANs +-increase, larger configuration spaces are needed to accommodate the +-information. +- +-In general, the following formula can be used to compute an approximate size in +-bytes of the configuration data needed to store information pertaining to 'M' +-HBAs and 'N' targets/device paths: +- +- 75 + 42*M + 381*N +- +-Plugging in values for common configurations returns some sample results: +- +- 2 same type HBAs - (75 + 2*42 == 159) +- ---------------- +- 1 target - 75+2*42+381*1 = 540 bytes +- 2 targets - 75+2*42+381*2 = 921 bytes +- 3 targets - 75+2*42+381*3 = 1302 bytes +- 4 targets - 75+2*42+381*4 = 1683 bytes +- 5 targets - 75+2*42+381*5 = 2064 bytes +- ... +- +- 3 same type HBAs (75 + 3*42 == 201) +- ---------------- +- 1 target - 75+3*42+381*1 = 582 bytes +- 2 targets - 75+3*42+381*2 = 963 bytes +- 3 targets - 75+3*42+381*3 = 1344 bytes +- 4 targets - 75+3*42+381*4 = 1725 bytes +- 5 targets - 75+3*42+381*5 = 2086 bytes +- ... +- +-Please note, a target in this case does not always indicate a distinct piece of +-storage -- it could represent 'n' paths to the same storage, as is the case +-with failover in a true-cloud configuration. As an example, the configuration +-data size needed for two storage devices with four paths (via two HBAs) to each +-storage (4*2 paths) would need approximately 3200 bytes (75 + 42*2 + 381*8) of +-configuration space. +- +-8.5.2 QLA_OPTS As An Alternative +--------------------------------- +- +-Modutil (namely modprobe) loads 'option' data present in the modules.conf file +-by first loading the module, parsing the 'options' directive of the newly +-loaded module for parameters (parameters are simple key=value directives, i.e. +-ql2xfailover=1), for each key, scan the memory area where the module was loaded +-for the location of the 'key' parameter, and finally, writing the key's 'value' +-directly into the pre-defined memory space. This basic mechanism is similar in +-nature to the mechanism employed by the QLA_OPTS application, but does not +-suffer from the relatively small size constraints within the modutil package. +- +-There are two important differences between the modutil and QLA_OPTS mechanism: +- +- 1) Configuration data is read from a configuration file in /etc/ with a +- name based on the ISP type: ++Configuration data and persistent data is loaded in the driver when the ++"modprobe" is use. It is normally passed to the driver via the commandline, ++but due to the constraints inherent in using the commandline we have ++provide an alternate method to loading configuration data. The configuration ++data is passed to the driver from another module /etc/qla2300_conf. The utility ++qla_opts builds this module from the configuration data. Whenever the ++configuration changes, a new module should be built. ++ ++ ++8.5.1 QLA_OPTS ++--------------- ++QLA_OPTS reads the configuration from /etc/qla2[2,3]00.conf and creates the ++module qla2[2,3]00_conf. The driver automatically tries to load the conf ++module at init time and once it is loaded then it is passes the information ++directly into the pre-defined memory space commuicated to each module by the ++kernel. Configuration data is read from a configuration file in /etc/ with a ++name based on the ISP type: + + Configuration File Module name + ------------------ ----------- + /etc/qla2200.conf qla2200_conf + /etc/qla2300.conf qla2300_conf + +- 2) Option values are written directly (branded) to the corresponding +- configuration module file. + +-Approximately 300K of configuration space has been pre-allocated within the +-qla2200_conf/qla2300_conf module. ++Note: Approximately 300K of configuration space has been pre-allocated within the ++qla2200_conf/qla2300_conf module for configuration/persistent data. ++ + + 8.5.3 Compatibility With SMS (SANsufer Management Suite) + -------------------------------------------------------- +@@ -967,7 +1020,8 @@ an SMS application would save a configur + written to the 'options' section of the modules.conf file in a form similar to + the following: + +- ql2xopts=scsi-qla0-adapter-port=210000e08b000000\;scsi-qla0-tgt-1-di-0-node=20000020371682e7\;scsi-qla0-tgt-1-di-0-port=21000020371682e7\;scsi-qla0-tgt-1-di-0-pid=0000e2\;scsi-qla0-tgt-1-di-0-control=00\; ++ ql2xopts=scsi-qla0-adapter-port=210000e08b000000\;scsi-qla0-tgt-1-di-0-node=20000020371682e7\; ++ scsi-qla0-tgt-1-di-0-port=21000020371682e7\;scsi-qla0-tgt-1-di-0-pid=0000e2\;scsi-qla0-tgt-1-di-0-control=00\; + + Now, the information is written to the appropriate qla2[2|3]00.conf file in + /etc and then branded to the binary file of the corresponding configuration +@@ -1166,6 +1220,7 @@ distribution package can be extracted in + qla_fo.c + qla_fo.cfg + qla_inioct.c ++ qla_inline.h + qla_ip.c + qla_mbx.c + qla_mbx.h +@@ -1205,3 +1260,4 @@ assistance if needed. + Copyright (c) 2003 QLogic Corporation. All rights reserved + worldwide. + ++ +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/release.txt linux-2.4.21-x86_64/drivers/scsi/qla2xxx/release.txt +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/release.txt 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/release.txt 2004-04-22 19:42:21.000000000 -0700 +@@ -1,36 +1,50 @@ ++ Release Notes + +- QLogic QLA2200 and QLA2300 Linux Driver ++Driver Name : QLogic QLA22xx/QLA23xx PCI Fibre Channel Linux Driver ++Version : 7.00.00b22 ++OS platform : Red Hat AS2.1 (IA32 & IA64), SuSE SLES8 (IA32 & IA64) ++HBA Support : QLA22xx, QLA23xx ++FW version : QLA22xx : 2.02.06(tp/ip), QLA23xx: 3.02.28(ipx/flx) + +- Release Notes +- ============= ++ ++Table of Contents ++I. Overview ++II. Enhancements ++III. Bug Fixes ++IV. Known Issues ++V. Additional Information + +-Version 6.06.00 August 08, 2003 + +-+**********************************************+ +-* Features supported by this version of driver * +-+**********************************************+ +-o FCAL - direct attach +-o Point-to-point +-o Fabric support +-o Initiator mode only +-o Fault recovery on down loops +-o Persistent binding - HBA node name valid +-o Linux 2.4.x Kernel Support +-o IPFC support +-o Firmware versions: +- ql2100 - 1.19.24 +- ql2200 - 2.02.04 +- ql2300 - 3.02.13 (tp) +- 3.01.18 (ip) +- +-+********************************+ +-* Changes From Previous Releases * +-+********************************+ +-o Please view revision.notes file +- +-+**************+ +-* Known Issues * +-+**************+ +-o This driver must be used with API library v2.00Beta4 + in order +- to handle re-entrant API/ioctl commands correctly. ++I. Overview ++ ++This document describes the changes between versions 6.06.10 and 7.00.00b15 ++of the QLogic Fibre Channel driver for Linux. ++ ++ ++II. Enhancements ++ ++ - Eliminate checking initiators while processing fcport list. ++ - Added logic to honor "ConfigRequired=1" in mon-failover mode. ++ - Added support for ISP2322 chips. ++ - Added EVA support ++ - Added support for enhance ++ + ++III. Bug Fixes ++ ++ - PortID binding was broken. ++ - 2100/2200 panic during firmware load ++ - Fixed handling of tape commands during LIPs ++ - Fixed flushing logic for START_STOP commands ++ - Back-out PLUG-TIMER and scsi-affine 'performace patches' ++ - Fixed DMA double allocation bug on retries. ++ ++IV. Known Issues ++ ++There are no known issues at this time. ++ ++ ++V. Additional Information ++ ++- This driver must be used with API library v2.00Beta4 + ++ to handle re-entrant API/ioctl commands correctly. +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/revision.notes linux-2.4.21-x86_64/drivers/scsi/qla2xxx/revision.notes +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/revision.notes 2003-10-28 10:33:55.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/revision.notes 2004-04-22 19:42:21.000000000 -0700 +@@ -5,1136 +5,154 @@ + * + * Revision History + * +- * Rev 6.06.00 August 08, 2003 RA +- * - Formal release. +- * +- * Rev 6.06.00b15 August 07, 2003 AV/RA +- * - Backs-out some changes made in 6.06.00b12 with respect +- * to the operating semantics of qla2x00_eh_device_reset(). +- * The code fails to operate when the backdoor 'device +- * reset' occurs. +- * - Updated Readme.qla2x00 and SUPPORTED_KERNEL_VERSION.txt. +- * +- * Rev 6.06.00b14 August 01, 2003 RL +- * - Added return of dummy lun data entries for unconfigured +- * devices, so the number and order of entries returned would +- * match that are returned from port summary list and target +- * data list. +- * - Added checking of target online state and whether it is +- * specified in persistent binding before deciding whether +- * to return a target/lun data entry for it. +- * - Added return of target online and persistent binding +- * state in the Status field of the query_disc_tgt ioctl. +- * - Updated README file. +- * +- * Rev 6.06.00b13 July 18, 2003 RA/AV/RL +- * - Added support for new qla2xxx addon directory in RedHat AS. +- * - Added pause between successive flash reads. +- * - Don't modify a command's 'allowed' count (in queuecommand) +- * if the device is found to be a tape device. +- * - Fixed a compile problem when DEBUG option is enabled. +- * Also fixed a compile problem for 2100. +- * - Updated README file. +- * +- * Rev 6.06.00b12 July 11, 2003 RA/AV/DG +- * - Return a more correct status while determining a port's +- * state (qla2x00_check_port_status()). +- * - Ensure a completed command is returned to the mid-layer +- * before returning from qla2x00_eh_wait_on_command(). +- * - Use proper fcport during SRB referencing: +- * - Fix qla2x00_abort_command(). +- * - Fix qla2x00_eh_device_reset(). +- * - Modify qla2x00_device_reset() to take an explicit +- * fcport rather than indirect determination via a +- * possibly incorrect Target/Lun key. +- * - Properly schedule DPC routine if a port relogin is +- * required (qla2x00_timer()). +- * - Process the response queue regardless of state of mailbox +- * command execution (qla2x00_isr()). +- * - Process a response entry before declaring it processed. +- * - Return a proper BUSY status during an FC IOCTL passthru. +- * - Fixed direction in spinup CDB and uncomment target notify call +- * in FAILBACK. +- * - Added option to send a spinup to port as a notify type. +- * - Added the cmdline parameter- qlFailoverNotifyType. +- * - Added the check for PORT_SCAN_NEEDED in timer-To wakeup the dpc +- * thread to do probing for luns added after the OS scan. +- * - Added the code to issue big hammer after the flash memory is updated. +- * +- * Rev 6.06.00b11 June 24, 2003 RL/AV +- * - Removed chip version check for recognition of any +- * version of 2312 chip. +- * - Updated 2300 firmware to 3.02.13. +- * +- * Rev 6.06.00b10 June 17, 2003 RL/RA/DG/AV +- * - Fixed endian issue with update_nvram function. +- * - Fixed problem of not adding target ports when using +- * gnn_ft to scan due to incorrect reporting of new device +- * list count. +- * - Fixed panic in qla2x00_mem_free when kernel is unable +- * to allocate ioctl memory. The code tried to deallocate +- * memory from sp pool, but the list was never initialized +- * until later. +- * - Fixed scsi_lock deadlock when unable to allocate +- * ioctl memory +- * - Modified read_nvram code to always return buffer in +- * little endian format. +- * - Modified scsi passthru code to return data underrun +- * status only if the target device indicated it. Error +- * is returned if only the firmware sees the condition. +- * +- * Rev 6.06.00b9 June 12, 2003 RL/RA +- * - Added non-fo device support on fo driver (selective +- * failover configuration). +- * - Added code to return zero lun_data entry when mp_host +- * was not created for the specified HA. +- * - Modified persistent binding table structure definitions +- * and other related changes to work on ppc-64 bit platforms. +- * - Fixed problem of not getting out of loop when LIP happened +- * while we were discovering devices. +- * +- * Rev 6.06.00b8 June 05, 2003 RL/AV/RA +- * - Setup the flash before reading the option_rom in internal ioct. +- * - Dont turnoff the Config required flag if no configuration +- * is found. +- * - Fixed the path mp_byte getting over-written when no config +- * data specified. +- * - Initliaize all the list heads before calling mem_alloc during init. +- * - Append "post-remove" stuff during install in modules.conf for +- * automatic removal of conf modules whenever driver is loaded. +- * +- * Rev 6.06.00b7 June 04, 2003 DG +- * - Fixed panic in qla2x00_mem_free if unable to allocate +- * ioctl memory. ha->fcinitiators was not initialized. +- * +- * Rev 6.06.00b6 June 02, 2003 RL/AV/RA +- * - Modified configure_fabric code so after the GNN_FT call +- * the non-target devices are ignored. +- * - Added code to return all fcports of an ha as Unconfigured +- * if there is no mp_host struct associated with it. +- * +- * Rev 6.06.00b5 May 30, 2003 DG/RL/AV/RA +- * - Added the support for link_down_timeout NVRAM parameter. +- * - Added the support in the driver to allow the user to +- * enable a rescan of the luns attached to ports already configured. +- * The Command "scsi-qla-scan" issue to /proc/scsi/qla2300/x invokes +- * this function. +- * - Fixed a typo for Model Name in the driver +- * - Added the support to enable extended error logging for DEBUG_QLA2100 +- * if enabled . +- * - Added issuing of diag "ECHO" command only for QLA23xx. +- * - Return the Model Name for ioctl calls old way as of now. +- * - Fixed the panic in qla2x00_mem_alloc() caused as a result of fcport +- * memory pointer in "ha" being freed twice. +- * +- * Rev 6.06.00b4 May 29, 2003 DG/RL/AV/RA +- * - Update qla2300 firmware to v3.02.12. +- * - properly configures PCI I/O space (PIO and/or MMIO) on +- * both 32 and 64bit platforms. +- * - Fixed a problem where scsi_unregister() would not get +- * called if qla2x00_mem_alloc() failed. +- * - Added handling for QUEUE FULL from the target. We will +- * suspend I/O traffic for qfull_retry_delay (2 secs) up +- * to qfull_retry_count times (16); +- * - Added extended_error_logging. +- * - Fixed request reordering in qla2x00_retry_command(). +- * - Fixed incorrect conversion of endianess used in +- * IOCB command type 2/3 patch. +- * - Added issuing of diag. Echo command for F port topology. +- * - Added support for reporting Unconfigured Devices +- * in get_port_summary and get_target_data ioctl commands. +- * - Fixed NVRAM ioctl problem on 2312 chips. +- * - Added logic to get the model number of the HBA. +- * - Created "qla_devtbl.h" file which contains the Model +- * Number of 2312 devices and forthcoming one's. +- * +- * Rev 6.06.00b3 May 19, 2003 DG/RL/RA +- * - Added support for abbreviated persistent binding +- * configuration statements. +- * - Replaced use of IOCB command type 2 with type 3 to enable +- * handling for possible 64bit DMA addresses. +- * - Cast all size_t to ulong in print arguments to eliminate +- * compile warnings on PPC64 platform. +- * - Consolidated ioctl passthru commands to use a separate +- * queue_command function so it won't be confused with +- * normal IOs. +- * - Removed the static EXT_IOCTL struct used in qla2x00_fo_ioctl. +- * - Corrected request buffer address used in start_ms_cmd. +- * - Updated searching of device ports for all applicable +- * ioctl commands. +- * - Added support for MP_MASK_OVERRIDE bit in mp_byte of +- * target ports. This includes new case for get/set path +- * function to handle. +- * - Fixed problem with alloc_path saving temporary port ptr +- * to the path. +- * - More consolidation of driver version string define. +- * - Update qla2200 firmware to v2.02.04. +- * +- * Rev 6.06.00b2 May 16, 2003 DG +- * - Fixed the issue that cause the error message "Failed to +- * initialize adapter" which can occur in a Loop environment +- * when multiple nodes start powering up in 30 secs increments. +- * This issue was cause by Lip resets occurring in the middle +- * of port discovery. +- * +- * Rev 6.06.00b1 May 12, 2003 DG/RL/RA +- * - Update qla2300 firmware to v3.02.10. +- * - Updated README.qla2x00. +- * - Added MODULE_DESCRIPTION. +- * - Register with Linux for 16 byte CDBs. +- * - Wait for MAX_LOOP_TIMEOUT for loop to be ready before +- * issuing device/bus reset in the respective driver error handler +- * routines. +- * - Added logic to handle concurrent processing of big hammer +- * and scsi mid layer error recovery or resets issued through backdoor. +- * - Check for loop_state etc for individual qla2x00_set_host_data() +- * operation in ioctl path. +- * - Sync up the exioct.h file with the one checked in VSS for the led +- * change. +- * - Added the ZIO support +- * - Added the beacon change(blink green LED on/off every sec apart) +- * - Added the GNNFT and GPN_ID change and incorporated the retry logic. +- * - Fixed the potential problem of new_dev_list getting corrupted +- * for different HBA in qla2x00_configure_fabric() by allocating +- * the new_dev_list dynamically (instead of static). +- * - Wait for the max_time for firmware to be ready if the firm_state is +- * < FW_STATE_READY ie trying to login,waiting for al_pa etc +- * - Clear the device flag -DFLG_NO_CABLE during fw_ready if firm_state +- * is < FSTATE_LOSS_OF_SYNC indicating cable is there. +- * +- * +- * Rev 6.05.00 April 30, 2003 DG +- * - Fixed issue ER25748 with SG_ALL in sg_tablesize. We +- * now calculated sg_tablesize based on the number of +- * request queues. +- * - Fixed qla2x00_get_retry_cnt() logic to get the ELS +- * timeout value from mbox3 - qla_mbx.c. +- * - Change min time we wait for F/W to become ready +- * before declaring the Cable unplug from 20secs to +- * 60 secs. +- * +- * Rev 6.05.00b10 April 25, 2003 AV/RL +- * - Added support of new persistent binding configuration +- * mechanism for large configurations which would exceed +- * the max string limit of modutil. This includes the +- * qla_opts utility. +- * +- * Rev 6.05.00b9 March 31, 2003 RA/AV/DG/RL +- * - Process the port database update (async event-0x8014) +- * for login and logout only if its "Global"-any async +- * prevent recieved prior to 8014 indicating loop is down +- * like LIP_RESET,LIP_OCCURED etc. +- * - Honor previous firmware option settings before updating +- * swing and emphasis. +- * - Display *all* scanned luns via the /proc interface. +- * - If the device does not support the SCSI Report Luns +- * command, the driver will now only scan from 0 to the +- * max#-luns as defined in the NVRAM (BIOS), rather than +- * blindly scanning from 0 to 255 -- which could result in +- * an increase in initialization time when running against slow +- * (JBOD) devices. +- * - Fixed the FC-4 feature registration code. +- * - Fixed the driver version string by building a static string +- * during driver load, then change all references of driver version +- * to use that static string. +- * - Wait for half a second instead of a tick before trying again +- * to get fw_state. +- * +- * Rev 6.05.00b8 March 20, 2003 AV/DG +- * - Corrected issuing FC4 feature for hba. +- * - Added support for serial link controls: swing and emphasis. +- * +- * Rev 6.05.00b7 March 13, 2003 RA/DG/AV +- * - Corrected compile problem of can_do_varyio and can_dma_32 +- * on different kernel versions. +- * - Reduced ioctl context structure size. +- * +- * Rev 6.05.00b6 March 6, 2003 DG/AV +- * - Added support for can_do_varyio. +- * - Change sg_talesize to SG_ALL +- * - Fixed logic to properly set highmem_io or can_dma_32. +- * - increase queue_depth to 32. +- * - Increase max_sectors to 8192. +- * - Add module parameter ql2xsuspendcount. +- * - Always enable fc4 regsiter device and features. +- * +- * Rev 6.05.00b5 February 28, 2003 RL/AV +- * - Added check for a paused RISC in ISR -- dump HCCR for reason +- * - Fix improper nodename/portname construction in +- * qla2x00_nvram_config() by honoring the node_name_option +- * bit in NVRAM. +- * - Correct parity check enables for 23xx ISPs. +- * - Add helper function qla2x00_local_device_login() to mimic +- * fabric login logic. +- * - Reschedule a local-loop update if a loop-resync needed +- * in qla2x00_local_loop_update() -- this will fix a small +- * windows where a target-device state would become out-of- +- * sync. +- * - Add debug function qla2x00_get_fcal_position_map() to +- * return from the firmware the current negotiated LILP map. +- * - Fix endianess issues in direct connect environment +- * (Mark Bellon mbellon@mvista.com): +- * - Add endian-safe bitmap structures for nvram +- * and init_cb_t usage. +- * - Fix endianess problem in qla2x00_configure_local_loop(). +- * - Add special_options structure for data rate and +- * termination settings. +- * - Fixed data corruption problem when issuing ioctl commands +- * concurrently to multiple HBAs by using a per ha scrap buf. +- * - Added new ioctl command for returning driver specific data. +- * This is used to allow API implementation to be backward +- * compatible with driver. +- * - Reset adapter current_speed when loop is down. +- * +- * Rev 6.05.00b4 February 06, 2003 RL/AV +- * - Fixed the checking of DEV_PUBLIC flag before setting +- * the FC_FABRIC_DEVICE flag. The flag is now checked +- * using bitwise AND everywhere. This fixes problem +- * with devices that are both initiator and target. +- * - Added checking of tape device so we don't logout from +- * tape devices. +- * - Fixed the driver hang in get_target_data of non-fo driver +- * by correctly store fcport value to target queue in +- * fcport_bind. +- * - Fixed invalid configuration problem when displaying +- * target LUNs via non-fo driver by correctly assign +- * the only path as preferred path. +- * - Added ioctl support for non-fo driver to return path and +- * system parameters information. +- * - Corrected the return values of fo ioctl functions +- * and added checking of return value of copy_to/from_user +- * calls. +- * - Fixed debug prints, some of which access invalid pointer. +- * +- * Rev 6.05.00b3 January 27, 2003 RA/DG +- * - Added support for can_dma_32 and highmem_io. +- * +- * Rev 6.05.00b2 January 24, 2003 RL/RA/AV/DG +- * - Added the use of HbaSelect to determine the ha context +- * of each ioctl command. +- * - Corrected ioctl wait_q handling when timeout happened. +- * - Dynamically allocate EXT_IOCTL structure in order to +- * make the main ioctl function reentrant. +- * - Corrected the return values of all non-fo ioctl functions +- * and added checking of return value of copy_to/from_user +- * calls in places that matter. +- * - Made proc_info reentrant by directly writing to the +- * buffer supplied by the caller. +- * +- * Rev 6.05.00b1 December 20, 2002 RL +- * - Added send_els_passthru function and modified start_ms_cmd +- * to be used by both send_fcct and send_els_passthru. +- * - Modified ms_iocb definition to comply with latest 2300 spec. +- * +- * Rev 6.04.00b8 January 16, 2003 RA/DG/AV +- * - Use proper compiler flags when built with later GCC +- * versions (3.x). +- * - Rewrite initiator handling code: +- * - Use linked lists rather than a fixed-size array. +- * - Properly logout of intiator devices if found to be lost. +- * - Changes in qla2x00.c and qla2x00_ioctl.c. +- * - Fix lun suspension logic: +- * - Remove code in qla2x00_lun_alloc() which incorrectly +- * trashes a lun queue's q_count and q_max members. +- * - Properly move from a lun_queue NOT-ready state to a +- * ready state when a command successfully completes in +- * qla2x00_callback(). +- * - Add 'delay' logic to handle throttling scenario required +- * during a failback operation. +- * - Return a byte statistical quantity not mega-bytes in +- * qla2x00_get_(fc_)statistics() -- this change did not go +- * into 6.03.00b6 as indicated by the release notes. +- * - Handle a SCSI_DATA_NONE data direction for a SCSI command. +- * +- * Rev 6.04.00b7 Jan. 10 2003 DG/RA +- * - Added VMWARE support. +- * - fixed the bus reset and host reset when issued through +- * the backdoor by not waiting for commands which we dont own. +- * +- * Rev 6.04.00b6 Jan. 8 2003 DG/RA +- * - Fixed hardware_lock hierarchy in qla2x00_cmd_timeout +- * routine to fix deadlock with interrupt handler. +- * +- * Rev 6.04.00b5 Jan. 8 2003 DG/AV +- * - Fix incorrect sizing of mbx_cmd_flags in structure +- * scsi_qla_host since bit-operators function on unsigned +- * long variables - in qla2x00.c. +- * +- * Rev 6.04.00b4 December 19, 2002 RL/RA/DG/AV +- * - Increase IOCTL-passthru command timeout value (30->60). +- * - Update local definition of pci_set_dma_mask() to take an +- * u64 type rather than an dma_addr_t. +- * - Fix qla2100_nvram_config() to set the high-water IOCB limit +- * while configuring an QLA2100 HBA. +- * - Fixed potential panic in qla2x00_failback_luns() routine - +- * dereference a NULL fclun. +- * +- * Rev 6.04.00b3 December 06, 2002 AV +- * - Fix binding algorithm in qla2x00_cfg_build_path_tree() to +- * support sparse targetIDs. +- * - Extend maximum number of failover paths to eight. +- * +- * Rev 6.04.00b2 November 27, 2002 DG/RA/AV +- * - Pass portID information up to FO_CC_GET_TARGET_DATA ioctl +- * callers. +- * - Add support for PortID persistent binding: +- * - Module parameter name: Bind +- * o 0 by Portname (default) +- * o 1 by PortID +- * o 2 by Nodename +- * - Default behaviour is to bind by Portname. +- * - Update qla2x00_display_fc_names() to support new binding +- * methods -- varies by Bind type. +- * - Large #defing usage cleanup to more flexible module +- * parameter. +- * - Use various PCI/SCSI/endianess macros defined by the kernel +- * to reduce duplication. +- * - Streamline qla2x00_response_packet(): +- * - Reduce multiple Register I/O writes to just one after +- * ring processing. +- * - Cleanup qla2x00_status_entry(): +- * - Move common cases to the top of the switch statement +- * (CS_COMPLETE and CS_DATA_UNDERRUN). +- * - Refine data underrun handling, since it appears the +- * mid-layer underflow structure member for SCSI commands is +- * not consistently populated by the various upper-layers. +- * - Cleanup qla2x00_error_entry() to use pre-defined +- * descriptive values while interrogating a packet's +- * entry_status rather than raw BIT_* defines. +- * - Maintain 'RLC supported' state for an fcport, to limit +- * extraneous RLC commands. +- * - Initial qla2x00_isr() sanitization -- formating and +- * readability. +- * - In qla2x00_queuecommand(), return a command immediately, if +- * the port is found to be DEAD. +- * - Fix a dead-lock (logic) problem in +- * qla2x00_mailbox_command() where the code would attempt to +- * acquire a lock which had never been released. +- * - Add support for status continuation IOCB entries (extended +- * sense data). +- * - During loop transition, report back successfully completed +- * commands rather than blindly retry -- +- * qla2x00_status_entry(). +- * - Export ql2xretrycount as a module parameter. Default value +- * in non-failover mode is 20, in failover mode, 30. +- * - Update Makefile to use 'install' rather than 'cp' as to +- * preserve uid/gid (Austin Gonyou). +- * - Consolidate duplicate code to set DMA mask -- +- * qla2x00_config_dma_mask(). +- * - Fix copy-error in qla2x00_send_fo_notification() where the +- * SCSI CDB would not be populated with the proper +- * notification CDB. +- * - In qla2x00_proc_info(), do not clear our buffer in case +- * another application is using it. +- * - Export a MODULE parameter, ql2xfailover, to allow failover +- * to be configured in at load time. +- * +- * NOTE: Default behaviour is still based on the +- * compile-time option MPIO_SUPPORT. +- * +- * - Add additional checks to ensure that the DPC routine has +- * already been created before trying to 'wake' it up. +- * - Add new 2300 IP/TP firmware (3.01.18). +- * +- * Rev 6.04.00b1 November 4, 2002 DG +- * - Fixed ISP abort retry logic to retry the abort_ISP(). +- * - Fixed port login logic to retry the login on ports that are +- * marked DEAD. +- * - Fixed issue of not loging in after loop is down for more than +- * 4 mins. +- * +- * Rev 6.03.00b10 October 31, 2002 DG +- * - Fixed the logic in qla2x00_mark_device_lost to not change the +- * state of the port if it is mark DEAD, but still schedule port +- * login retries. +- * +- * Rev 6.03.00b9 October 30, 2002 DG +- * - Change LOOP DOWN timer to 4 mins and do a ISP abort if the f/w +- * never indicated that the cable is unplug and the timer expire. +- * +- * Rev 6.03.00 November 1, 2002 RA +- * - Changed the message for SYS_ERR(0x8002) to log to message file +- * instead on the console. +- * - Formal release. +- * +- * Rev 6.03.00b8 October 28, 2002 RA/DG/AV +- * - Correct qla2x00_loopback_test() to return the proper mailbox +- * register values, additionally, the statistical values returned +- * are only valid upon a good loopback execution. +- * - Perform the INT_CC_READ_OPTION_ROM ioctl, only if the response +- * length is specified correctly -- as to limit reading partial +- * data. +- * - Move backdoor RESET handling to qla2x00_done() for proper +- * processing. +- * - Given the two variants pci_set_dma_mask(), allow the +- * compiler to assist in setting the proper dma mask. +- * - Complete re-write of qla2x00_32bit_start_scsi(): +- * - Provide similiar benefits as in 6.03.00b3-pre3. +- * - Add additional kernel 2.5 support (resync with 2.5.44): +- * - Header file cleanup. +- * - SCSI host template updates. +- * - Queue depth interface updates. +- * - Fix computation of normalized segment length in +- * qla2x00_normalize_dma_addr(). +- * - Fix incorrect usage of head tag queueing while issuing an +- * RLC command during driver scan. +- * - Fix incorrect assignment of an fcport as LOST when it is +- * already in a DEAD state. +- * - Revert to OLD command data-direction determination (large, +- * and ineffiecient switch statement of recognized commands, +- * else check data-direction specified by command), since it +- * appears that a lldd cannot depend on the upper-layers to set +- * it correctly. +- * +- * NOTE: This will *NOT* be the default behavior in the formal +- * release of the 6.03.00 driver. From then on, the lldd +- * *will* depend on the upper-layers to specify the proper +- * data-direction in the SCSI command. +- * +- * Rev 6.03.00b7 October 14, 2002 AV +- * - Enable flash operations before attempting read flash memory. +- * - Correct qla2x00_update_option_rom() to properly verify flash +- * buffer length. +- * - Correct additional little-endian assumptions in FC/IP driver +- * paths. +- * +- * Rev 6.03.60 November 08, 2002 AV +- * - Special OEM release based on 6.03.00b6. +- * +- * Rev 6.03.00b6 October 11, 2002 AV/DG +- * - Fix incorrect sizing of mbx_cmd_flags in structure +- * scsi_qla_host since bit-operators function on unsigned +- * long variables. +- * - Correct little-endian assumptions (across the board): +- * - ISP detection and intialization. +- * - SCSI I/O posting, receiving, and processing. +- * - IP command processing. +- * - Add support for PowerPC64 platform. +- * - Add flash image retrieval support: +- * - Flash manipulation code. +- * - Internal IOCTL support routine for application callers. +- * - Return a byte statistical quantity not mega-bytes in +- * qla2x00_get_(fc_)statistics(). +- * - Fix failover during initialization limitation. In +- * qla2x00_map_os_luns(), try any alternate paths if the +- * preferred path is unavailable. +- * - Remove extraneous logic that attempted to failback luns that +- * were found to be disconnected. +- * +- * Rev 6.03.00b6-pre1 October 05, 2002 AV +- * - Fix qla2xxx_eh_device_reset() misuse of cmd->sp, since +- * there is no guarantee the command followed our standard +- * queuing path. +- * - Add flash update support: +- * - Retool flash read/write routines to work with +- * different flash manufacturers. +- * - Add additional kernel 2.5 support: +- * - no reparent_to_init() (Mike Anderson). +- * - Fix assignment bug in qla2x00_mbx_q_add() (Rick Cooper). +- * (ER20982) +- * +- * Rev 6.03.00b5 October 02 2002 RA +- * - Added the logic to try to login in non fabric enviornment +- * (Direct Connect) by issuing login loop port mbx cmd. For +- * targets which silently go away and firmware has no way to +- * log back. +- * +- * Rev 6.03.00b4 October 02 2002 AV +- * - Fix qla2x00_abort_command() to not issue an ISP abort if +- * the command abort fails. +- * +- * Rev 6.03.00b3 October 02 2002 AV +- * - Formal beta release. +- * - Remove debug codes from EH and callback routines. +- * - The LOGOUT_AFTER_DEVICE_RESET function is still a work +- * in progress. +- * +- * Rev 6.03.00b3-pre3 September 29 2002 AV +- * - Correct endian-ness issues while preparing an IOCB in +- * qla2x00_send_packet() -- should now work on +- * non little-endian machines. +- * - Cleanup definitions for ??_64BITS() macros. +- * - Complete re-write of qla2x00_64bit_start_scsi(): +- * - Correct endian-ness issues while preparing IOCBs. +- * - Add fix to correct data segment 32bit page boundary +- * (hardware) limitations. +- * - Correct inefficiencies in IOCB preparation. +- * - Update firmware command timeout calculation. +- * - Makefile update -- during an install, the makefile will +- * now rename any qla2200 'addon' binaries to "*_rh.o" +- * - Update qla2x00_load_ram() to always use MBC_LOAD_RAM_A64 +- * since previous code was needlessly ISP specific and +- * could potentially truncate a valid highmem address. +- * - Add additional kernel 2.5 support: +- * - MKDEV() -> mk_kdev() (Mike Anderson). +- * - MAJOR/MINOR() -> major/minor() (Mike Anderson). +- * - Remove emulated member from host template (Lincoln Dale). +- * - Fix qla2x00_status_entry() to not retry IOCTL generated +- * commands. +- * - Update qla2x00_issue_iocb() to use MBC_IOCB_EXECUTE_A64 +- * as to not truncate a valid highmem address. +- * - Fix pci_set_dma_mask() invocations as to not downcast +- * 64-bit literals to a potential 32-bit type (dma_addr_t). +- * - In qla2x00_rpt_lun_discovery() do not retry the command if +- * the target does not support the REPORT LUNS cdb. +- * - In qla2x00_lun_discovery() clear fc_lun_t structure upon +- * allocation (incorrect stale data in fields). +- * - Update display of luns in /proc to not show 'disconnected' +- * (non-existent) luns. +- * - The check for 'ready' state in +- * qla2x00_check_for_devices_online() is too strict. Loosen +- * restriction to allow a failback on all ONLINE ports. +- * - In qla2x00_failback_luns() do not try to failback to a DEAD +- * port. +- * - Add option (LOGOUT_AFTER_DEVICE_RESET) to explicitly logout +- * of a device after a device reset has been successfully +- * issued -- a login will occur shortly after. This is need +- * for some storage subsystems. +- * +- * Rev 6.03b2 Sept 24, 2002 RA +- * - Fixed the compilation warnings on RedHat Dist. +- * - Added check not to wait for the commands to be returned by +- * the firmware if device_reset etc is issued through the backdoor. +- * - Do relogin for non-public devices also when firmware reports +- * command timeout along with logo(compl status=0x6 and logout(0x2000)) +- * +- * Rev 6.01/6.02b2/6.03b1 Sept 16, 2002 AV +- * - Corrected wrong setting in qla_setting.h file to +- * fix compile error with RH-AV. +- * +- * Rev 6.01/6.02b1 Sept 11, 2002 AV +- * - Fixed issue 225984 - Fixed reset logic to flush done queue +- * before returning to OS and retry an ABORT ISP call if it fails. +- * Serialized the done processing when not using a tasklet. +- * - Fixed 2200 performance issue using fastposting. +- * - Fix target reset logic to use the correct mailbox command. +- * +- * Rev 6.01 August 29, 2002 AV +- * - Formal release. +- * - Update README to reflect support of later Redhat releases. +- * +- * Rev 6.1b5 August 20, 2002 AV/DG +- * - Fix mis-use of stale SP after re-addition to the free +- * queue -- qla2x00_callback(). +- * - Fix mis-use of invalid loop id during a LIP caused by +- * an initiator device -- qla2x00_device_resync(). +- * - Update IOCTL passthru code to fully support CBD lengths +- * of 16 bytes with later kernels. Earlier kernels supported +- * CDB sizes of 12 bytes only -- thus the workaround. +- * - Add initial kernel 2.5 support: +- * - Removal of io_request_lock in favor of host->host_lock +- * (Mike Anderson). +- * - Return -EINVAL for all non-EXIOCT ioctls (Mike Anderson). +- * - Remove extra 'continue' statement in qla2x00_proc_info() +- * which effectively disabled the display of luns. +- * - Remove dead-code from qla_ip.c. +- * +- * Rev 6.1b4 August 09, 2002 AV/DG +- * - Remove qla_dbg.h and qla_def.h files from driver +- * distribution. +- * - Remove all virt_to_* calls in both SCSI/IP driver sources. +- * - 64bit DMA addressing through dma_addr_t. +- * - Cleanup structure names/member variables from IP sources. +- * - Add QL_DEBUG_LEVEL_12 for IP debugging. +- * - Add transmission timeout callback for IP driver. +- * - Enable SRAM, Instruction RAM and GP RAM parity checks on +- * ISP2300s. +- * - Display all luns recognized by driver in /proc, not just +- * SCSI mid-layer scanned luns. Luns not scanned by the mid- +- * layer are marked with an asterisk (*). +- * - Add FC_SUPPORT_RPT_LUNS flag to the struct fc_port.flags. +- * Set, if the device supported the report luns command. +- * - Increase Inquiry request buffer to 36 rather than 4. Some +- * target devices have problems with the small transfer. +- * - Fix assignment of current_speed during an asyncronous event +- * MBA_LOOP_UP. Improper connection speed was being reported +- * to EXIOCTs and IP driver. +- * - Add ISP2100 support: +- * - QLogic provides no support for the ISP2100. +- * - compiled binary name qla2100.o. +- * - Forward-port chip support from 5.[2|3]x series driver. +- * - Update Makefile.kernel and Config.in. +- * - add new 2100 TP firmware (1.19.24). +- * - Fix copy-error in qla2x00_fo_get_params() where the +- * qla_fo_params notification CDB would be zero'd-out. +- * - Fix kernel-oops when DEBUG level 5 is enabled and a command +- * is sent to a non-existent lun. +- * - Fix in-kernel compilation problem (Veritas). +- * - Remove superfluous KMALLOC*/KMFREE/BZERO/BCOPY/ +- * BCMP/qla_bcopy defines and functions. +- * - Remove unused ql_list_link structures and functions. +- * - Consistent use of copy_to/from_user() functions (RH). +- * - Consistent use of struct scsi_qla_host instead of +- * several aliases (RH). +- * - Remove illegal usage of caddr_t (RH). +- * - Remove Target-Mode support from driver. +- * - Cleanup qla_fo.c file: +- * - Remove old debugging code. +- * - General sanitizing. +- * - Modify SCSI template name (QLogic) +- * - Cleanup compiler warnings during debug builds. +- * - Add new 2300 IP/TP firmware (3.01.13). +- * +- * Rev 6.1b3 June 12, 2002 RA +- * - Non-released driver - version number skipped due to Combo +- * package release to OEM. +- * +- * Rev 6.1b2 June 08, 2002 AV/DG +- * - Fix issue where the report-luns logic would interpret +- * data on an incorrect status from the device. +- * - Fix issue where a loopback request was not being issued +- * if the HBA loop status was not ready -- Callers of the +- * IOCTL expect the FW to handle this condition and return +- * the proper status. +- * - Clean-up IP support callback mechanism -- explicit +- * export of a single *_ip_inquiry() call that returns +- * specific interface function pointers. Each ISP driver +- * now has its own *_ip_inquiry() function +- * (qla2200_ip_inquiry() and qla2300_ip_inquiry()). +- * - Remove inter-dependencies between 2200/2300 compiled +- * drivers. +- * - Fix issue where del_timer()/add_timer() combination in +- * RESTART_TIMER macro would cause a race condition during +- * module unloading -- use mod_timer(). +- * - Cleanup spinlock initialisation -- spin_lock_init() +- * macro (FalconStor). +- * - Add CONFIG_MD_MULTIHOST support (FalconStor). +- * - Add SCSI add-single-device support (FalconStor). +- * - Added new 2300 IP/TP firmware (3.01.11). +- * - Added new 2200 IP/TP firmware (2.02.03). +- * +- * Rev 6.1b1 June 14, 2002 AV/DG +- * - Integrate IP backdoor updates. +- * - Add CACHE_LINE flush before updating request-ring +- * indexes to address spurious hardware hangs. +- * - Add hardware_lock'ed qla2x00_marker() function for +- * IP integration layer. +- * - Remove busy-wait during qla2x00_fw_ready(). +- * - Remove extraneous display of adapter node/port +- * information. +- * - Fix issue with the register_fc4 function not sending +- * the appropriate amount of data to the firmware. +- * - Ip_inquiry should query off the ha's instance number, +- * not host_no during IP capable scan of HBAs. +- * - Add 'hardware locked' logic to IP integration functions: +- * qla2x00_add_buffers(), qla2x00_ip_send_login_port_iocb(), +- * and qla2x00_ip_send_logout_port_iocb() functions. +- * - Add IP /proc file information text. +- * - Indentation and debug-level cleanup. ++ * Rev 7.00.00b22 Apr 2, 2004 RA,DG,AV ++ * - Remove TASK_INTERRUPTIBLE to TASK_UNINTERRUPTIBLE ++ * - Remove incorrect assignment of ha->retry_count to ++ * login retry count; ++ * - RHEL/SLES8 differences when compiling the driver ++ * on x86_64 and PPC64 ++ * - Fixed boundary check for queuedepth value. ++ * - ER36592:Fixed the query_hba_port() ioctl call to check ++ * for LOOP_DEAD state to report correct hba port state ++ * when link down timeout is non zero. ++ * ++ * Rev 7.00.00b21 Mar 30, 2004 RA ++ * - Updated the QLA23XX Firmware to v3.02.27 ++ * ++ * Rev 7.00.00b21test Mar 17, 2004 DG,RA,AV ++ * - Add feature to initiate a LIP via /proc interface. ++ * Similiar to rescan. ++ * - DEBUG3 fixes when qla2x00_allocate_path() fails. I ++ * hope RA is ok with this version :) ++ * - Revert to old method of returning BIOS version until ++ * some concensus has been formed on where the driver ++ * should return the information. ++ * - Fixed target information in proc info rouitne, so it displays ++ * the correct target. ++ * ++ * Rev 7.00.00b20 Mar 9, 2004 DG ++ * - PortID binding ++ * - 2100/2200 panic during firmware load ++ * - qla2x00_get_link_status() loop_id fix ++ * - INQ fix to not assume a fabric device when fw ++ * - returns CS_PORT_LOGGED_OUT ++ * - Return true nodename for XP device during ++ * get_port_summary. ++ * - Tape command handling forward-ported from 6.06.64 ++ * - Dereference a NULL pointer after allocate_path(). ++ * - Perform proper check of START_STOP command in ++ * - qla2x00_queuecommand(), dereference a command's cmnd[] ++ * array, not its sc_data_direction. ++ * - Response ring check refinement in qla2x00_queuecommand(). ++ * - As per RH comments, back-out PLUG-TIMER and scsi-affine ++ * 'performace patches' ++ * ++ * Rev 7.00.00b19 Mar 9, 2004 DG ++ * Rev 7.00.00b19-test1 Mar 9, 2004 DG ++ * - Added logic to detect "NOT READY" when a different host failover a ++ * shared port on the EVA. ++ * ++ * Rev 7.00.00b18 Mar 4, 2004 DG ++ * - Skip trying to failover a controller lun this causes the no matching ++ * lun error. ++ * - Eliminate the temporary failover queue. ++ * - Enhance the logic for finding active paths to speed up failover. ++ * ++ * Rev 7.00.00b17 Feb 24, 2004 RA ++ * - Fixed Oops with multiple FO targets when we can't find ++ * a matching lun. ++ * - Fixed issue cause by LOOP going DEAD before port. + * +- * Rev 6.0 June 13, 2002 DG +- * - Released ++ * Rev 7.00.00b16 Feb 20, 2004 RA ++ * - Updated the QLA23XX FW to v3.02.24 ++ * ++ * Rev 7.00.00b15 Feb 11, 2004 DG/RA/AV ++ * - Fix endianess issues while preparing command IOCBs. ++ * - Only perform lun discovery on target-type fcports. ++ * - Build qla_opts with proper host CC. ++ * ++ * Rev 7.00.00b14 Feb 10, 2004 DG ++ * - Added logic to detect and failover the port when a shared ++ * port on the MSA1000 is switched to the standby port by a ++ * different host. ++ * - Always export HSG80 ports in failover mode. ++ * - Added support to reset luns on EVA after failover. ++ * - qla2x00_configure_loop() fix when an RSCN occurs ++ * during the configure_loop routine. ++ * - FCP protocol error check during qla2x00_status_entry() ++ * - Added code review changes (RH) ++ * ++ * Rev 7.00.00b13 Feb 4, 2004 DG ++ * - RIO fix for big endian platforms. ++ * - Eliminate checking initiators while processing fcport list. ++ * - New 23xx ip/flx firmware version 3.02.22 ++ * - Increase driver timeout value to (2.5 * RATOV) for RATOV events. ++ * - Honoring "ConfigRequired=1" in mon-failover mode. ++ * - Added logic to block i/o during failoer mapping. ++ * ++ * Rev 7.00.00b12 January 30, 2004 DG ++ * Fixed issue in port scan logic with adding luns dynamically. ++ * ++ * Rev 7.00.00b11 January 26, 2004 DG ++ * Updated to Firmware Version 3.21.04 (16:56 Jan 23, 2004) (flx) ++ * ++ * Rev 7.00.00b10 January 20, 2004 DG ++ * - Updated f/w to v3.02.21 ++ * ++ * Rev 7.00.00b9 January 13, 2004 DG ++ * - Fixed panic in select_next_path() ++ * ++ * Rev 7.00.00b7,b8 January 5, 2004 DG ++ * - Added EVA support to failover code. ++ * - Improve smart failover to know when port ++ * has run-out-of HBAs paths. ++ * ++ * Rev 7.00.00b6 January 5, 2004 AV ++ * - Add backed-out changes from beta 3 to 5. ++ * - Remove unused 63xx functions (check_topology()). ++ * ++ * Rev 7.00.00b5 December 22, 2003 DG ++ * - merge 63xx ++ * ++ * Rev 7.00.00b3 December 10, 2003 DG/AG ++ * - Resync with 6.07.00b14. ++ * - PCI Posting fixes. ++ * - Configure DMA addressing before issuing any allocations. ++ * - Add support for RHEL3 specific Scsi_Host members. ++ * - Remove unused HOTSWAP/GAMAP/FLASH_DATABASE functions. ++ * - Fix for infinite loop in qla2x00_wait_for _hba_online() ++ * - Fix to purge all requests for a given target from retry_q ++ * on eh_resets. ++ * - Changes for common qla2x00.c for qla200 ++ * - Merge several patches from Mark Bellon ++ * [mbellon@mvista.com]: ++ * - Interrupt latency rework. ++ * - Add extended information to /proc (Ohm Terminations and ++ * Data Rate). ++ * - Convert little-endian firmware data from Get Link ++ * Statistics mailbox call to appropriate host endianess. ++ * - Add support for FDMI 'Host Name' port attribute. ++ * ++ * Rev 7.00.00b2 Nov14, 2003 RA ++ * - Fixed the issue where port id was overwritten when ++ * switched to gan ++ * - Zero out the swl buffer when doing fabric discovery ++ * - Removed the leftover fabricid array causing buffer ++ * overflow ++ * - Consolidated the code to compile acroos v7.x and v1.x ++ * driver. ++ * - Added the support for qla200 in qla_opts. ++ * - Wait for 60 sec during F/W ready during init time only. ++ * - Added the support for ISP200. ++ * ++ * Rev 7.00.00b1 Oct 28, 2003 AV/RA ++ * - Consolidated the fabric device list ++ * - Added the 16 bit loop id support ++ * - Added the support for 2300/2322 Extended F/w interface. ++ * - Added the support to compile without failover module as ++ * source pkg. ++ * - Fixed bug in configure_loop where it will loop forever. ++ * - Separated the Port state used for routing of I/O's from ++ * - port mgmt-login retry etc. ++ * - Based on 6.07.00b9plus + * +- * Rev 6.0b26-PLUS/b27 May 23, 2002 ??/??/?? +- * - Correct IOCTL return code when an invalid signature is +- * passed in the EXT_IOCTL request. +- * - Remove unused defines KERNEL_SEM_BUG and NEW_EH_CODE. +- * - Added new 2300 IP/TP firmware (3.01.09). +- * +- * Rev 6.0b26 May 23, 2002 RA/DG/AV +- * - Fixed issue with device_reset so it uses the +- * correct adapter in failover mode. +- * - Add logic to track usage of the iocb and prevent +- * the firmware from running short. +- * - Increase suspend time for LUN "Not Ready" conditions +- * from 18 secs to a max of 30 secs. +- * - Added option to display the configuraation info in +- * failover mode. +- * - Fix FC passthru IOCTL interface to only return the +- * low-order byte of the scsi status. +- * +- * Rev 6.0b25 May 20, 2002 RA/DG/AV/RL +- * - Issue RLC command immediately to determine lun list. +- * - Remove extraneous logic that removes commands from the +- * pending queue when the loop is down or a destination device +- * is found to be off-line. +- * - In failover mode, add an extra second to the command timeout +- * for additional internal processing. +- * - Add descriptions for module options. +- * - Simplify locking in qla2x00_cmd_timeout(). +- * - Fix memory-mapped I/O usage. +- * - Fix the potential panic during error recovery when a command +- * is not returned during an abort resulting in dual instances +- * of a command's SRB. +- * - Clean-up processing of interrupts during error-recovery +- * mode. +- * - Changed back get_disc_port IOCTL behaviour so now it returns +- * next available device instance info when a port/target +- * device is disconnected. The change was added and now +- * removed by customer request. This is now pre-b13 behaviour. +- * - Added new 2300 IP/TP firmware (3.01.08). +- * +- * Rev 6.0b24-test1 May 07, 2002 TWT +- * - Added IPFC support. +- * +- * Rev 6.0b24 May 06, 2002 DG +- * - Fix potential panic when configuration data exists for a device +- * that is off-line. +- * +- * Rev 6.0b23 May 06, 2002 RA/RL +- * - Added the new setup() routine for lk>=2.4 and above to handle the +- * kernel command line parameter. +- * - Set BIT_1 when issuing login_fabric() from the ioctl to take +- * care of McData issue. +- * +- * Rev 6.0b22-test2 April 30, 2002 DG +- * - Made tasklet a compile time option. +- * - Fixed mailbox timeouts on first mailbox command after polling. +- * - Fixed MPIO issue of requests setting in pending queue after +- * resync of second adapter. +- * +- * Rev 6.0b22-test1 April 29, 2002 RA/AV +- * - Updated makefile to add the support for all the arch-i386/i486/i586 +- * /i686 -especially to address the skipjack issue. +- * - Set the right host status when device returns queue full. +- * +- * Rev 6.0b22 April 26, 2002 RL/AV +- * - Corrected usage of pci info by directly getting it from ha->pdev. +- * This fixes problem with referencing the now uninitialized +- * fields of ha->pci_bus and ha->pci_device_fn from various +- * places including ioctl calls. +- * - Corrected HBA port state value returned in ioctl call. +- * - Corrected saving of failover path ID. +- * - Added passing of SRB_IOCTL flag via the CMD_RESID_LEN(cmd) field +- * from scsi passthru ioctl so the passthru IO won't get retried. +- * - Added checking of SRB_IOCTL in regular IO path so we do not +- * retry these IOs. +- * - Enabled ABORT_TARGET mailbox command to clear reservation. +- * - Replaced set_cache_line function with RedHat implementation. +- * - Cleaned up variable names in cmd_timeout. +- * +- * Rev 6.0b21-test2 April 24, 2002 DG +- * - Fixed Oops in qla2x00_next() when starting new command +- * after a resync. +- * - Fixed issues in failover code. +- * - Added back suspend lun support. +- * +- * Rev 6.0b21-test1 April 18, 2002 AV +- * - Remove per-lun pending queues in favor of a simplified +- * single adapter pending queue for all queued commands +- * issued to the adapter. +- * - Cleanup global detect semaphore name usage. +- * - Simplify the queue command process by postponing expensive +- * backend checks to the qla2x00_next() function. +- * - Remove all NOP *_LOCK/UNLOCK macros. These macros are no +- * longer needed with the 6.x series drivers. +- * - Removed all OLD error-handling code. +- * - Simplify the SCSI host template -- remove references to +- * OLD error-handling routines. +- * +- * Rev 6.0b21 April 17, 2002 RL +- * - Added more error handling code for send_fcct ioctl command, +- * and fixed a panic problem by using dummy tgt/lun q structures. +- * - Added get/set RNID related mailbox commands and ioctl support. +- * - Fixed compile warning by defining pci_set_dma_mask function +- * for kernel version < 2.4.3. +- * - Moved sp_get and sp_put back to qla2x00.c. +- * - Some indentation clean up and ioctl debug level clean up. +- * +- * Rev 6.0b20 April 15, 2002 RA +- * - Added HSG80 flag in makefile to define COMPAQ(-DCOMPAQ) compilation +- * flag. +- * - Added HSG80_PORT_RETRY_COUNT macro for COMPAQ-HSG80. +- * +- * Rev 6.0b19 April 10, 2002 RA +- * - Use pci_set_dma_mask() to set up 64bit/32bit instead of +- * CONFIG_HIGHMEM. +- * - Renamed RETRY_FOR_NOT_READY back to COMPAQ-By default disabled. +- * +- * Rev 6.0b18 April 10, 2002 AV/RA +- * - With Indent-8 tabs formatted all of the driver files. +- * - Removed the left over serial console support. +- * - Changed the debug routines to linux style. +- * - Change places where we use SYS_DELAY to udelay/barrier() +- * - Fix bugs wwrt to >> 32 of 32 bit variables. +- * - Cleaned up the support for lk < 2.4 kernel. +- * - Fixed missing wakeups of the dpc thread +- * - Added barrier() between subsequent reads in +- * qla2x00_debounce_register(); +- * +- * Rev 6.0b17 April 09, 2002 AV/RL/RA +- * - Deleted all direct references to qla2x00_callback outside +- * of sp_put and __sp_put functions, so the sp->ref_count +- * is decremented correctly before going back to free pool. +- * This fixed IO timeout/hang after some direct qla2x00_callback +- * calls are invoked. +- * - Fixed panic from ioctl passthru command which makes separate call +- * to allocate new sp by deleting the zeroing out of sp content after +- * calling get_new_sp. We should not overwrite sp content +- * because get_new_sp initializes some fields to non-zero. +- * - Moved the call to rpt_lun_discovery to later so that LUN 0 will +- * always be allocated regardless of the actual LUN list +- * returned. This allows kernel to continue scanning past +- * a non-existent LUN 0. +- * - Added output of the following to proc_info per customer +- * request: +- * 'Number of reqs in scsi_retry_q', 'Number of reqs in failover_q', +- * 'Device queue depth'. +- * - Added qlport_down_retry as a new driver parameter per customer +- * request. +- * - Changed ioctl busy polling interval to 1 second instead of +- * 1 tick. 1 tick is unrealistic. +- * - Added more ioctl function description headers. +- * +- * Rev 6.0b16 April 08, 2002 RA/AV/RL +- * - Added the support to recognise medium changer type +- * as Tape devive(inq[0] == 8). +- * - For Not Ready case suspend the lun only for Hard Disk Device +- * type. +- * - Nuked the support for FC_VI. +- * - Before examining the scsi status Mask of the reserved bits 12-15. +- * - Added the CONFIG_HIGHMEM support for 64bit dma addresing on 32bit +- * platform. +- * - Renamed file- settings.h as qla_settings.h +- * - Debug macros moved from qla2x00.c to qla_debug.h and made +- * statement like. +- * - Removed serial console code. +- * - Added the missing hardware lock in eh_abort when searching the "sp" +- * in the active array. +- * - Added loop state and number of free srb's in the /proc +- * - Changed to use kernel interface or routines(ex-readb()) +- * for Memory Mapped I/O. +- * - Cleaned up qla2x00_pci_config() routine. +- * - Renamed COMPAQ flag to G80. +- * - Set the port_down_retry_count to 30 if in the nvram its configured +- * less than 30.Need enough time to try and get the port back +- * - Get rid of the lun_list field in the inq_cmd_rsp structure. +- * - Check for abort_active/reconfiguration/recovery active state +- * before issuing get_link_status mbx cmd. +- * - Renamed qla2200_nvram_config() to qla2x00_nvram_config() +- * - Need to get rid of caddr_t as its illegal in the kernel-???? +- * - Add ref_count to the "sp" structure, needed to keep locking sane +- * over functions that sleep.Added sp_get() and sp_put() . +- * - Use Report Luns (RLC) for lun discovery process. +- * - Use a consistent set of command structures during SNS queries -- +- * add sns_cmd_rsp_t structure. +- * - Fix issue where SNS query would return too much data for +- * the firmware to handle -- explicitely define the maximum amount +- * of double-words in the SNS request. +- * - Changed VIRT_TO_BUS/KMALLOC to pci_alloc_consistent() in qla_fo.c +- * - Updated README.qla2x00 +- * +- * Rev 6.0b15 April 05, 2002 DG/RA/RL +- * - Corrected more local dpc flag checking in configure_loop. +- * This fixed problem not calling correct functions based +- * on correct flags. +- * - Deleted hardcoded port_down_retry_count. +- * - Corrected macros used to split up dma physical address +- * for use by registers. Now the macros work on both 32bit +- * and 64 bit platforms. +- * - More dma_addr_t function parameter type correction. +- * - Added update of port_id in build_fcport_list function +- * when updating a pre-existed port. This fixed problem +- * of not able to login after the port location has been +- * changed. +- * - Return a different status for 4006 error from login fabric +- * mbx cmd so we don't retry anymore. +- * +- * Rev 6.0b14 April 04, 2002 DG/RA/RL/AV +- * - Fixed query_disc_port ioctl not returning correct port +- * state. +- * - Changed port_down_retry_count to 32. +- * - Corrected local dpc flag variable checking in configure_loop +- * to use bit manipulation functions instead of C style bit +- * checking. This results in correctly log out lost +- * fabric ports. +- * - Corrected qla2x00_send_sns function parameter type for +- * physical address to use dma_addr_t. +- * - Added PCI module device table. +- * - Updated README file with Suse ramdisk info. +- * +- * Rev 6.0b13 April 03, 2002 DG/RA/RL/AV +- * - Fixed the makefile issue: corrected documentation, +- * and makefile syntax problem (making both drivers when +- * only one is asked for). +- * - Reduced stack size in functions using over 0x200 bytes +- * stack space: qla2x00_set_lun_data_from_config, +- * qla2x00_cfg_build_path_tree, qla2x00_aen_get, +- * qla2x00_query_hba_node, qla2x00_get_port_summary, +- * qla2x00_send_fcct. +- * - Changed get_disc_port ioctl behavior which returns next +- * available device instance info when a port/target is +- * disconnected. Now return error when query for lost port. +- * - Moved the allocation of host database to outside of the adapter +- * structure allocation to avoid the allocation size limitation in +- * the scsi_register function. +- * - Changed qla2100_ function names to qla2x00_ prefix. +- * - Changed previous qla2100_print calls to use printk. +- * - Cleaned up compile warnings. +- * - Added the support in README.qla2x00 to build the driver as part of the +- * kernel. +- +- * +- * Rev 6.0b12 April 01, 2002 DG/RA QLogic +- * - Fixed the port login stuff-not trying to login even the port was +- * marked as lost unless RSCN happens and we do a loop resync. +- * - Copy the done queue into local queue in qla2x00_done() such that we +- * do not wind up calling done queue takslet for the same IOs from DPC +- * or any other place. +- * +- * Rev 6.0b11 April 01, 2002 RL/RA QLogic +- * - Added initialization of the new lun q lock for ioctl_lq. +- * This fixes passthru ioctl hanging problem. +- * - Added the missing hardware lock in qla2x00_process_risc_intrs() +- * when we call qla2100_isr(). +- * +- * Rev 6.0b10 March 29, 2002 DG QLogic +- * - Added new support for suspending the lun on "not ready" +- * conditions. +- * - Deleted extra usage of io_request lock in fc_scsi and +- * scsi3 passthru ioctl functions. +- * - Updated README file. +- * +- * Rev 6.0b9 March 28, 2002 RA/DG/RL/JJ QLogic +- * - Added use of additional fields in Scsi_Cmnd to save IO +- * status related values for ioctl SCSI/FCCT passthru cmd +- * processing. +- * - Added scsi3_passthru function to process 16 byte CDBs +- * whose fclun value can be in either VSA or PDA format. +- * - Added device and bus reset new error handling functions. +- * - Added option and code to handle register_fc4. +- * +- * Rev 6.0b8 March 27,2002 RA/DG/RL QLogic +- * - Set the host_byte status correctly in process_completed_request(). +- * - Fixed the stack overflow in configure_fabric() qla2x00_ioctl() +- * and qla2x00_fo_ioctl() routine. +- * - Cover the case in eh_host_reset() where abort_isp is already active. +- * - Release the hardware lock before we return in reset_chip() routine. +- * - Added the support to grab the io_request_lock back in the queuecommand +- * after adding the request to scsi_retry_queue. +- * - Fixed the issue in the detect routine where we dont hang around for +- * the devices to come online. +- * -Implemented scsi_retry_queue stuff. +- * -Added the function headers for qla2x00_process_risc_intrs +- * and qla2x00_process_completed_requests +- * -Got rid of abort_q_put() ,abort_q_get() cmd_wait(), +- * qla2100_return_status() routines and ABORT lock. +- * -Added the support for 2.5.7>lk>=2.4.8 in Scsi Host TEMPLATE. +- +- * Rev 6.0b7 March 20, 2002 JJ QLogic +- * - Change not to use the first slot (0) of the outstanding_cmd +- * array, since we will put NULL handle for a completed cmd. +- * - Implement new hardware lock in place of io_request_lock +- * in order to improve performance. +- * - Save ha in srb_t when being inserted into the failover +- * queue so we know which ha to look for when that cmd is +- * timed out. +- * - Add aborting isp if abort command failed. +- * - Fix cmd_timeout routine to get the valid ha for the +- * fail-over driver. +- * +- * Rev 6.0b6 March 20, 2002 RL QLogic +- * - New PCI device registration and API support for 2.4.0 and +- * above only. +- * - Template change (previously done). +- * - Remove explicit virt_to_* calls in foavor of +- * *_alloc_consistent. +- * - Only allow compilation on 2.4.0 machines and above. +- * - Corrected ioctl hang due to SETINSTANCE command. +- * - Added io_request lock in FCCT passthru function when issuing +- * login_fabric mbx cmd. +- * - Corrected issue_iocb parameter as referenced in qla_fo.c. +- * +- * Rev 6.0b5 March 14, 2002 RL QLogic +- * - Added qla2200.c and qla2300.c files to enable separate +- * driver make in RedHat kernel source directory. +- * - Added/enabled two new error handling functions: eh_abort and +- * eh_host_reset. +- * - Changed issue_iocb prototype to pass in the buffer physical address +- * value. +- * - Changed request_region function (in register_with_Linux) to use +- * correct driver name string. +- * - Added release_region if request_irq function failed (in +- * register_with_Linux). +- * - Moved the enabling of host interrupt (in mbx cmd issuing) to just +- * before going to sleep waiting for completion. +- * +- * Rev 6.0b4 March 11, 2002 RA QLogic +- * - Fixed the panic in the loop reset routine where we trying to +- * derefernce tgt queue even if its NULL. +- * - Changed the MAX_SRBS count to 4096. +- * - Changed to dma_addr_t instead of depending on BITS_PER_LONG +- * macro in get_port_database. +- * - Changed README.qla2x00-Support for 2.4.x only. +- * +- * Rev 6.0b3 March 08,2002 RA QLogic +- * - Fixed the panic in abort routine- where we try to dereference +- * "sp" even its NULL causing to panic. +- * - Partially cleaned up compiler warning. +- * +- * Rev 6.0b2 March 07,2002 RA QLogic +- * - Update 2200(v2.02.01) and 2300(v3.1.02) firmware. +- * - Instead of depending on BITS_PER_LONG macro to +- * figure out whether address will be 64 bit or 32 bit +- * ,changed it to dma_addr_t data type .Even on 32bit system +- * if there is high memory support it will be 64bit instead of 32bit. +- * - Earlier we used to call qla2100_callback directly in qla2x00_ms_entry +- * routine.But now its dangerous to do so.As we zero out the +- * sp pointer in the cmd just before calling scsi_done().So we just +- * the "sp" in done_queue and let the tasklet process it later. +- * Rev 6.0b1 March 06,2002 RA,DG QLogic +- * - Started with Driver Version-5.38b16 as the base. +- * - Initial release of the 6 series driver, with all the +- * changes ported from the 4.x series driver(mentioned below). +- * - Now we keep track of the loop_id, so that we can log +- * into that port successfully when it comes back. +- * - All the options setting has been moved from qla2x00.c to settings.h +- * file. +- * -Added the support from NEW Error Handling Code perspective. +- * Right now the macro(NEW_EH_CODE) is turned off till we +- * completely fix all the issue related to NEW_EH_CODE in the driver. +- +-/**************************************************************************** +- * Changes Ported from 4.x Driver: +- +- -Changed malloc.h to use slab.h to get rid of the compiler warning +- message. +- -Use del_timer_sync to delete qla2100_timer for lk > 2.4.0 +- -Send marker only at one place ie when we are about to send out +- the commands to the ISP except during initialize_adapter(). +- -Added the marker support for 64bit_start_scsi. +- -Initialized the different queues. +- PENDING QUEUE:-Initialized in lun_alloc() +- RETRY QUEUE:- "" in detect() +- DONE QUEUE :- "" in detect() +- ACTIVE QUEUE : +- FAILOVER QUEUE : "" in detect() +- FREE QUEUE:- Initialised in allocate_sp_pool() +- -Got rid of udelay in mem_alloc() routine. +- -Got rid of support for lk<2.4 in mem_alloc() and mem_free() routines. +- -Allocating sp during initialisation instead of on the fly. +- -Added the timer for each command. +- +- -Modified the different queues to use kernel list macro for +- queue management.Using one lock ie "list_lock" to protect +- different queues. +- -Added qla2x00_free_sp_pool() routine to release the sp_pool memory +- when we unload the driver. +- - Modified the qla2x00_next() prototype to pass vis_ha except in done. +- -Introduced Port state:DEAD,LOST and ONLINE . +- -Fixed the QLA2X00_FAILURE macro. +- -Fixed the abort routine-retry queue or failoever queue will be on the +- real HBA. +- -Added the ql2xlogintimeout stuff-Instead of 4sec,firmware will be using +- 20 secs initially(2*ratov value) to login into the switch for ED1032. +- -Added the retry logic to login into the switch. +- -Added the code to kick off port_down_retry timer when we get 28-29 +- compl status but the firmware is not quick enough to report +- that the device is missing. +- -Now using macros to fix the wraparound situation for jiffies. +- -Fixed the qla2x00_abort_queue().Instead of calling callback directly, +- all the requests after being deleted from the lun_queue will be put +- in the done_queue(). +- -Fixed port logic in dpc to restore loop id in the fcport structure. +- -Changed fcport->state to atomic. +- -Changed the status_entry rotuine to check for completion first and then +- scsi status. +- - Change state of "sp" to ACTIVE STATE when we issue it to RISC. +- +-******************************************************************************/ +- +- +- +- +- +- +diff -uprN linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/SUPPORTED_KERNEL_VERSION.txt linux-2.4.21-x86_64/drivers/scsi/qla2xxx/SUPPORTED_KERNEL_VERSION.txt +--- linux-2.4.21-x86_64.orig/drivers/scsi/qla2xxx/SUPPORTED_KERNEL_VERSION.txt 1969-12-31 16:00:00.000000000 -0800 ++++ linux-2.4.21-x86_64/drivers/scsi/qla2xxx/SUPPORTED_KERNEL_VERSION.txt 2004-04-22 19:42:21.000000000 -0700 +@@ -0,0 +1,23 @@ ++ QLogic Fibre Channel Driver ++ for Red Hat Linux 8.0, 9.0, Advanced Server 2.1, and RHEL 3 ++ and SLES 8 ++ ++ ++The following distributions and versions of Linux kernels have been tested ++with this release driver: ++ ++IA-32: ++------ ++ - Red Hat Linux 8.0 (kernel 2.4.20-18.8) ++ - Red Hat Linux 9.0 (kernel 2.4.20-18.9) ++ - Red Hat Linux Advanced Server 2.1 (kernel 2.4.9.e-8) ++ - Red Hat Enterprise Linux 3 ++ - SuSE Linux Enterprise Server 8 (kernel 2.4.19-64GB) ++ ++IA-64 (For Itanium 2 processor) ++----- ++ - Red Hat Linux Advanced Server 2.1 (kernel 2.4.9.e-8) ++ - SuSE Linux Enterprise Server 8 (kernel 2.4.19-64GB) ++ ++ ++Earlier or later versions of Linux kernels may be supported. diff --git a/lustre/kernel_patches/patches/removepage-2.6-suse.patch b/lustre/kernel_patches/patches/removepage-2.6-suse.patch deleted file mode 100644 index 147816f..0000000 --- a/lustre/kernel_patches/patches/removepage-2.6-suse.patch +++ /dev/null @@ -1,30 +0,0 @@ - include/linux/fs.h | 1 + - mm/filemap.c | 3 +++ - 2 files changed, 4 insertions(+) - -Index: linux-2.6.4-30.1/include/linux/fs.h -=================================================================== ---- linux-2.6.4-30.1.orig/include/linux/fs.h 2004-04-02 03:20:19.000000000 -0500 -+++ linux-2.6.4-30.1/include/linux/fs.h 2004-04-02 03:20:19.000000000 -0500 -@@ -320,6 +320,7 @@ - int (*releasepage) (struct page *, int); - int (*direct_IO)(int, struct kiocb *, const struct iovec *iov, - loff_t offset, unsigned long nr_segs); -+ void (*removepage)(struct page *); /* called when page gets removed from the inode */ - }; - - struct backing_dev_info; -Index: linux-2.6.4-30.1/mm/filemap.c -=================================================================== ---- linux-2.6.4-30.1.orig/mm/filemap.c 2004-04-02 03:19:42.000000000 -0500 -+++ linux-2.6.4-30.1/mm/filemap.c 2004-04-02 03:23:10.000000000 -0500 -@@ -102,6 +102,9 @@ - { - struct address_space *mapping = page_mapping(page); - -+ if (mapping->a_ops->removepage) -+ mapping->a_ops->removepage(page); -+ - if (likely(!PageSwapCache(page))) { - BUG_ON(PageAnon(page)); - radix_tree_delete(&mapping->page_tree, page->index); diff --git a/lustre/kernel_patches/patches/removepage-2.6-vanilla.patch b/lustre/kernel_patches/patches/removepage-2.6-vanilla.patch deleted file mode 100644 index 0c7b035..0000000 --- a/lustre/kernel_patches/patches/removepage-2.6-vanilla.patch +++ /dev/null @@ -1,30 +0,0 @@ - include/linux/fs.h | 1 + - mm/filemap.c | 3 +++ - 2 files changed, 4 insertions(+) - -Index: linux-2.6.6/include/linux/fs.h -=================================================================== ---- linux-2.6.6.orig/include/linux/fs.h 2004-06-22 20:21:38.000000000 -0400 -+++ linux-2.6.6/include/linux/fs.h 2004-06-22 20:22:35.000000000 -0400 -@@ -321,6 +321,7 @@ - int (*releasepage) (struct page *, int); - ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, - loff_t offset, unsigned long nr_segs); -+ void (*removepage)(struct page *); /* called when page gets removed from the inode */ - }; - - struct backing_dev_info; -Index: linux-2.6.6/mm/filemap.c -=================================================================== ---- linux-2.6.6.orig/mm/filemap.c 2004-05-09 22:32:27.000000000 -0400 -+++ linux-2.6.6/mm/filemap.c 2004-06-22 20:23:54.000000000 -0400 -@@ -112,6 +112,9 @@ - if (unlikely(!PageLocked(page))) - PAGE_BUG(page); - -+ if (mapping->a_ops->removepage) -+ mapping->a_ops->removepage(page); -+ - spin_lock_irq(&mapping->tree_lock); - __remove_from_page_cache(page); - spin_unlock_irq(&mapping->tree_lock); diff --git a/lustre/kernel_patches/patches/uml-vanilla-2.6.6-p1.patch b/lustre/kernel_patches/patches/uml-2.6.7-01-bb2.patch similarity index 85% rename from lustre/kernel_patches/patches/uml-vanilla-2.6.6-p1.patch rename to lustre/kernel_patches/patches/uml-2.6.7-01-bb2.patch index 55d4a7f..f10484d 100644 --- a/lustre/kernel_patches/patches/uml-vanilla-2.6.6-p1.patch +++ b/lustre/kernel_patches/patches/uml-2.6.7-01-bb2.patch @@ -1,473 +1,231 @@ -diff -Naur a/arch/um/config.release b/arch/um/config.release ---- a/arch/um/config.release 2004-03-10 08:23:12.000000000 -0500 -+++ b/arch/um/config.release 2004-03-10 08:44:32.000000000 -0500 -@@ -228,7 +228,6 @@ - CONFIG_EXT2_FS=y - CONFIG_SYSV_FS=m - CONFIG_UDF_FS=m --# CONFIG_UDF_RW is not set - CONFIG_UFS_FS=m - # CONFIG_UFS_FS_WRITE is not set +Index: uml-2.6.7/arch/um/kernel/skas/trap_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/trap_user.c 2004-07-16 19:36:33.534048512 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/trap_user.c 2004-07-16 19:47:23.734203064 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ -diff -Naur a/arch/um/defconfig b/arch/um/defconfig ---- a/arch/um/defconfig 2004-03-10 08:21:56.000000000 -0500 -+++ b/arch/um/defconfig 2004-03-10 08:41:02.000000000 -0500 -@@ -3,29 +3,19 @@ - # - CONFIG_USERMODE=y - CONFIG_MMU=y --CONFIG_SWAP=y - CONFIG_UID16=y - CONFIG_RWSEM_GENERIC_SPINLOCK=y --CONFIG_CONFIG_LOG_BUF_SHIFT=14 +@@ -35,14 +35,10 @@ + errno = save_errno; + } - # --# Code maturity level options --# --CONFIG_EXPERIMENTAL=y +-extern int missed_ticks[]; - --# --# General Setup -+# UML-specific options - # - CONFIG_MODE_TT=y - CONFIG_MODE_SKAS=y - CONFIG_NET=y --CONFIG_SYSVIPC=y --CONFIG_BSD_PROCESS_ACCT=y --CONFIG_SYSCTL=y --CONFIG_BINFMT_AOUT=y - CONFIG_BINFMT_ELF=y - CONFIG_BINFMT_MISC=y - CONFIG_HOSTFS=y -+CONFIG_HPPFS=y - CONFIG_MCONSOLE=y - CONFIG_MAGIC_SYSRQ=y - # CONFIG_HOST_2G_2G is not set -@@ -36,12 +26,43 @@ - # CONFIG_HIGHMEM is not set - CONFIG_PROC_MM=y - CONFIG_KERNEL_STACK_ORDER=2 -+CONFIG_UML_REAL_TIME_CLOCK=y -+ -+# -+# Code maturity level options -+# -+CONFIG_EXPERIMENTAL=y -+CONFIG_CLEAN_COMPILE=y -+CONFIG_STANDALONE=y -+CONFIG_BROKEN_ON_SMP=y -+ -+# -+# General setup -+# -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_SYSCTL=y -+CONFIG_LOG_BUF_SHIFT=14 -+# CONFIG_HOTPLUG is not set -+# CONFIG_IKCONFIG is not set -+# CONFIG_EMBEDDED is not set -+CONFIG_KALLSYMS=y -+CONFIG_FUTEX=y -+CONFIG_EPOLL=y -+CONFIG_IOSCHED_NOOP=y -+CONFIG_IOSCHED_AS=y -+CONFIG_IOSCHED_DEADLINE=y -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set - - # - # Loadable module support - # --CONFIG_MODULES=y --# CONFIG_KMOD is not set -+# CONFIG_MODULES is not set -+ -+# -+# Generic Driver Options -+# - - # - # Character Devices -@@ -69,6 +90,7 @@ - # - CONFIG_BLK_DEV_UBD=y - # CONFIG_BLK_DEV_UBD_SYNC is not set -+CONFIG_BLK_DEV_COW_COMMON=y - CONFIG_BLK_DEV_LOOP=y - CONFIG_BLK_DEV_NBD=y - CONFIG_BLK_DEV_RAM=y -@@ -78,7 +100,7 @@ - CONFIG_NETDEVICES=y - - # --# Network Devices -+# UML Network Devices - # - CONFIG_UML_NET=y - CONFIG_UML_NET_ETHERTAP=y -@@ -88,22 +110,6 @@ - CONFIG_UML_NET_MCAST=y - # CONFIG_UML_NET_PCAP is not set - CONFIG_UML_NET_SLIRP=y --CONFIG_DUMMY=y --# CONFIG_BONDING is not set --# CONFIG_EQUALIZER is not set --CONFIG_TUN=y --# CONFIG_ETHERTAP is not set --CONFIG_PPP=y --# CONFIG_PPP_MULTILINK is not set --# CONFIG_PPP_ASYNC is not set --# CONFIG_PPP_SYNC_TTY is not set --# CONFIG_PPP_DEFLATE is not set --# CONFIG_PPP_BSDCOMP is not set --# CONFIG_PPPOE is not set --CONFIG_SLIP=y --# CONFIG_SLIP_COMPRESSED is not set --# CONFIG_SLIP_SMART is not set --# CONFIG_SLIP_MODE_SLIP6 is not set + void user_signal(int sig, union uml_pt_regs *regs) + { + struct signal_info *info; - # - # Networking support -@@ -115,8 +121,6 @@ - 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_NET_KEY is not set - CONFIG_INET=y -@@ -130,8 +134,11 @@ - # CONFIG_SYN_COOKIES is not set - # CONFIG_INET_AH is not set - # CONFIG_INET_ESP is not set --# CONFIG_XFRM_USER is not set -+# CONFIG_INET_IPCOMP is not set - # CONFIG_IPV6 is not set -+# CONFIG_DECNET is not set -+# CONFIG_BRIDGE is not set -+# CONFIG_NETFILTER is not set +- if(sig == SIGVTALRM) +- missed_ticks[cpu()]++; + regs->skas.is_user = 1; + regs->skas.fault_addr = 0; + regs->skas.fault_type = 0; +Index: uml-2.6.7/arch/um/kernel/irq.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/irq.c 2004-07-16 19:37:20.013982488 +0300 ++++ uml-2.6.7/arch/um/kernel/irq.c 2004-07-16 19:47:23.717205648 +0300 +@@ -29,6 +29,7 @@ + #include "user_util.h" + #include "kern_util.h" + #include "irq_user.h" ++#include "irq_kern.h" - # - # SCTP Configuration (EXPERIMENTAL) -@@ -140,9 +147,9 @@ - # CONFIG_IP_SCTP is not set - # CONFIG_ATM is not set - # CONFIG_VLAN_8021Q is not set --# CONFIG_LLC is not set --# CONFIG_DECNET is not set --# CONFIG_BRIDGE is not set -+# CONFIG_LLC2 is not set -+# CONFIG_IPX is not set -+# CONFIG_ATALK is not set - # CONFIG_X25 is not set - # CONFIG_LAPB is not set - # CONFIG_NET_DIVERT is not set -@@ -160,6 +167,10 @@ - # Network testing - # - # CONFIG_NET_PKTGEN is not set -+CONFIG_DUMMY=y -+# CONFIG_BONDING is not set -+# CONFIG_EQUALIZER is not set -+CONFIG_TUN=y + static void register_irq_proc (unsigned int irq); - # - # Ethernet (10 or 100Mbit) -@@ -171,12 +182,28 @@ - # +@@ -83,65 +84,55 @@ + end_none + }; - # -+# Ethernet (10000 Mbit) -+# -+CONFIG_PPP=y -+# CONFIG_PPP_MULTILINK is not set -+# CONFIG_PPP_FILTER is not set -+# CONFIG_PPP_ASYNC is not set -+# CONFIG_PPP_SYNC_TTY is not set -+# CONFIG_PPP_DEFLATE is not set -+# CONFIG_PPP_BSDCOMP is not set -+# CONFIG_PPPOE is not set -+CONFIG_SLIP=y -+# CONFIG_SLIP_COMPRESSED is not set -+# CONFIG_SLIP_SMART is not set -+# CONFIG_SLIP_MODE_SLIP6 is not set -+ -+# - # Wireless LAN (non-hamradio) - # - # CONFIG_NET_RADIO is not set +-/* Not changed */ +-volatile unsigned long irq_err_count; +- + /* + * Generic, controller-independent functions: + */ - # --# Token Ring devices (depends on LLC=y) -+# Token Ring devices - # - # CONFIG_SHAPER is not set +-int get_irq_list(char *buf) ++int show_interrupts(struct seq_file *p, void *v) + { +- int i, j; +- unsigned long flags; ++ int i = *(loff_t *) v, j; + struct irqaction * action; +- char *p = buf; ++ unsigned long flags; -@@ -186,68 +213,100 @@ - # CONFIG_WAN is not set +- p += sprintf(p, " "); +- for (j=0; jtypename); +- p += sprintf(p, " %s", action->name); ++ seq_printf(p, " %14s", irq_desc[i].handler->typename); ++ seq_printf(p, " %s", action->name); - # - # Native Language Support - # -+CONFIG_NLS=y - CONFIG_NLS_DEFAULT="iso8859-1" - # CONFIG_NLS_CODEPAGE_437 is not set - # CONFIG_NLS_CODEPAGE_737 is not set -@@ -317,28 +376,7 @@ - # - # SCSI support - # --CONFIG_SCSI=y --CONFIG_GENERIC_ISA_DMA=y -- --# --# SCSI support type (disk, tape, CD-ROM) --# --CONFIG_BLK_DEV_SD=y --CONFIG_SD_EXTRA_DEVS=40 --CONFIG_CHR_DEV_ST=y --CONFIG_BLK_DEV_SR=y --CONFIG_BLK_DEV_SR_VENDOR=y --CONFIG_SR_EXTRA_DEVS=2 --CONFIG_CHR_DEV_SG=y + for (action=action->next; action; action = action->next) +- p += sprintf(p, ", %s", action->name); +- *p++ = '\n'; +- end: ++ seq_printf(p, ", %s", action->name); ++ ++ seq_putc(p, '\n'); ++skip: + spin_unlock_irqrestore(&irq_desc[i].lock, flags); ++ } else if (i == NR_IRQS) { ++ seq_printf(p, "NMI: "); ++ for (j = 0; j < NR_CPUS; j++) ++ if (cpu_online(j)) ++ seq_printf(p, "%10u ", nmi_count(j)); ++ seq_putc(p, '\n'); + } +- p += sprintf(p, "\n"); +-#ifdef notdef +-#ifdef CONFIG_SMP +- p += sprintf(p, "LOC: "); +- for (j = 0; j < num_online_cpus(); j++) +- p += sprintf(p, "%10u ", +- apic_timer_irqs[cpu_logical_map(j)]); +- p += sprintf(p, "\n"); +-#endif +-#endif +- p += sprintf(p, "ERR: %10lu\n", irq_err_count); +- return p - buf; +-} - --# --# Some SCSI devices (e.g. CD jukebox) support multiple LUNs --# --CONFIG_SCSI_DEBUG_QUEUES=y --CONFIG_SCSI_MULTI_LUN=y --CONFIG_SCSI_CONSTANTS=y --CONFIG_SCSI_LOGGING=y --CONFIG_SCSI_DEBUG=y -+# CONFIG_SCSI is not set - - # - # Multi-device support (RAID and LVM) -@@ -360,6 +398,7 @@ - CONFIG_MTD_BLOCK=y - # CONFIG_FTL is not set - # CONFIG_NFTL is not set -+# CONFIG_INFTL is not set - # - # RAM/ROM/Flash chip drivers -@@ -374,20 +413,21 @@ - # - # Mapping drivers for chip access - # -+# CONFIG_MTD_COMPLEX_MAPPINGS is not set +-int show_interrupts(struct seq_file *p, void *v) +-{ +- return(0); ++ return 0; + } - # - # Self-contained MTD device drivers - # - # CONFIG_MTD_SLRAM is not set - # CONFIG_MTD_MTDRAM is not set --CONFIG_MTD_BLKMTD=m -+CONFIG_MTD_BLKMTD=y + /* +@@ -282,13 +273,12 @@ + * 0 return value means that this irq is already being + * handled by some other CPU. (or is disabled) + */ +- int cpu = smp_processor_id(); + irq_desc_t *desc = irq_desc + irq; + struct irqaction * action; + unsigned int status; - # - # 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_DOC2001PLUS is not set + irq_enter(); +- kstat_cpu(cpu).irqs[irq]++; ++ kstat_this_cpu.irqs[irq]++; + spin_lock(&desc->lock); + desc->handler->ack(irq); + /* +@@ -385,7 +375,7 @@ + */ + + int request_irq(unsigned int irq, +- void (*handler)(int, void *, struct pt_regs *), ++ irqreturn_t (*handler)(int, void *, struct pt_regs *), + unsigned long irqflags, + const char * devname, + void *dev_id) +@@ -433,15 +423,19 @@ + EXPORT_SYMBOL(request_irq); - # - # NAND Flash Device Drivers -diff -Naur a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c ---- a/arch/um/drivers/chan_kern.c 2004-03-10 08:23:15.000000000 -0500 -+++ b/arch/um/drivers/chan_kern.c 2004-03-10 08:44:41.000000000 -0500 -@@ -8,6 +8,7 @@ - #include - #include - #include -+#include - #include - #include - #include "chan_kern.h" -@@ -265,6 +266,11 @@ + int um_request_irq(unsigned int irq, int fd, int type, +- void (*handler)(int, void *, struct pt_regs *), ++ irqreturn_t (*handler)(int, void *, struct pt_regs *), + unsigned long irqflags, const char * devname, + void *dev_id) { - int n = 0; +- int retval; ++ int err; -+ if(chan == NULL){ -+ CONFIG_CHUNK(str, size, n, "none", 1); -+ return(n); -+ } +- retval = request_irq(irq, handler, irqflags, devname, dev_id); +- if(retval) return(retval); +- return(activate_fd(irq, fd, type, dev_id)); ++ err = request_irq(irq, handler, irqflags, devname, dev_id); ++ if(err) ++ return(err); + - CONFIG_CHUNK(str, size, n, chan->ops->type, 0); ++ if(fd != -1) ++ err = activate_fd(irq, fd, type, dev_id); ++ return(err); + } - if(chan->dev == NULL){ -@@ -420,7 +426,8 @@ - INIT_LIST_HEAD(chans); - } + /* this was setup_x86_irq but it seems pretty generic */ +@@ -474,7 +468,8 @@ + */ + spin_lock_irqsave(&desc->lock,flags); + p = &desc->action; +- if ((old = *p) != NULL) { ++ old = *p; ++ if (old != NULL) { + /* Can't share interrupts unless both agree to */ + if (!(old->flags & new->flags & SA_SHIRQ)) { + spin_unlock_irqrestore(&desc->lock,flags); +@@ -586,12 +581,14 @@ + unsigned long count, void *data) + { + int irq = (long) data, full_count = count, err; +- cpumask_t new_value, tmp; ++ cpumask_t new_value; -- if((out = strchr(str, ',')) != NULL){ -+ out = strchr(str, ','); -+ if(out != NULL){ - in = str; - *out = '\0'; - out++; -@@ -475,12 +482,15 @@ - goto out; - } - err = chan->ops->read(chan->fd, &c, chan->data); -- if(err > 0) tty_receive_char(tty, c); -+ if(err > 0) -+ tty_receive_char(tty, c); - } while(err > 0); -+ - if(err == 0) reactivate_fd(chan->fd, irq); - if(err == -EIO){ - if(chan->primary){ -- if(tty != NULL) tty_hangup(tty); -+ if(tty != NULL) -+ tty_hangup(tty); - line_disable(dev, irq); - close_chan(chans); - free_chan(chans); -diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c ---- a/arch/um/drivers/chan_user.c 2004-03-10 08:20:14.000000000 -0500 -+++ b/arch/um/drivers/chan_user.c 2004-03-10 08:33:55.000000000 -0500 + if (!irq_desc[irq].handler->set_affinity) + return -EIO; + + err = cpumask_parse(buffer, count, new_value); ++ if(err) ++ return(err); + + #ifdef CONFIG_SMP + /* +@@ -599,9 +596,11 @@ + * way to make the system unusable accidentally :-) At least + * one online CPU still has to be targeted. + */ +- cpus_and(tmp, new_value, cpu_online_map); +- if (cpus_empty(tmp)) +- return -EINVAL; ++ { cpumask_t tmp; ++ cpus_and(tmp, new_value, cpu_online_map); ++ if (cpus_empty(tmp)) ++ return -EINVAL; ++ } + #endif + + irq_affinity[irq] = new_value; +Index: uml-2.6.7/arch/um/drivers/chan_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/chan_user.c 2004-07-16 19:35:52.587273368 +0300 ++++ uml-2.6.7/arch/um/drivers/chan_user.c 2004-07-16 19:47:24.392103048 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) @@ -483,18 +241,19 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c #include #include #include -@@ -24,29 +23,27 @@ +@@ -22,33 +21,6 @@ + #include "choose-mode.h" + #include "mode.h" - void generic_close(int fd, void *unused) - { +-void generic_close(int fd, void *unused) +-{ - close(fd); -+ os_close_file(fd); - } - - int generic_read(int fd, char *c_out, void *unused) - { - int n; - +-} +- +-int generic_read(int fd, char *c_out, void *unused) +-{ +- int n; +- - n = read(fd, c_out, sizeof(*c_out)); - if(n < 0){ - if(errno == EAGAIN) return(0); @@ -502,56 +261,48 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c - } - else if(n == 0) return(-EIO); - return(1); -+ n = os_read_file(fd, c_out, sizeof(*c_out)); -+ -+ if(n == -EAGAIN) -+ return(0); -+ else if(n == 0) -+ return(-EIO); -+ return(n); - } - -+/* XXX Trivial wrapper around os_write_file */ -+ - int generic_write(int fd, const char *buf, int n, void *unused) - { +-} +- +-int generic_write(int fd, const char *buf, int n, void *unused) +-{ - int count; - - count = write(fd, buf, n); - if(count < 0) return(-errno); - return(count); -+ return(os_write_file(fd, buf, n)); - } - +-} +- int generic_console_write(int fd, const char *buf, int n, void *unused) -@@ -68,15 +65,18 @@ - int generic_window_size(int fd, void *unused, unsigned short *rows_out, - unsigned short *cols_out) { + struct termios save, new; +@@ -65,26 +37,6 @@ + return(err); + } + +-int generic_window_size(int fd, void *unused, unsigned short *rows_out, +- unsigned short *cols_out) +-{ - struct winsize size; - int ret = 0; -+ int rows, cols; -+ int ret; -+ -+ ret = os_window_size(fd, &rows, &cols); -+ if(ret < 0) -+ return(ret); -+ -+ ret = ((*rows_out != rows) || (*cols_out != cols)); -+ -+ *rows_out = rows; -+ *cols_out = cols; - +- - if(ioctl(fd, TIOCGWINSZ, &size) == 0){ - ret = ((*rows_out != size.ws_row) || - (*cols_out != size.ws_col)); - *rows_out = size.ws_row; - *cols_out = size.ws_col; - } - return(ret); +- return(ret); +-} +- +-void generic_free(void *data) +-{ +- kfree(data); +-} +- + static void winch_handler(int sig) + { } - -@@ -100,14 +100,16 @@ +@@ -100,14 +52,16 @@ struct winch_data *data = arg; sigset_t sigs; int pty_fd, pipe_fd; @@ -571,7 +322,7 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c signal(SIGWINCH, winch_handler); sigfillset(&sigs); -@@ -123,26 +125,24 @@ +@@ -123,26 +77,24 @@ exit(1); } @@ -608,7 +359,7 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c } } -@@ -154,8 +154,8 @@ +@@ -154,8 +106,8 @@ char c; err = os_pipe(fds, 1, 1); @@ -619,7 +370,7 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c return(err); } -@@ -168,12 +168,12 @@ +@@ -168,12 +120,12 @@ return(pid); } @@ -635,7 +386,7 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c printk("fd %d will not support SIGWINCH\n", fd); *fd_out = -1; } -@@ -183,20 +183,24 @@ +@@ -183,20 +135,24 @@ void register_winch(int fd, void *device_data) { int pid, thread, thread_fd; @@ -665,1725 +416,1529 @@ diff -Naur a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c } } } -diff -Naur a/arch/um/drivers/cow.h b/arch/um/drivers/cow.h ---- a/arch/um/drivers/cow.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/drivers/cow.h 2004-03-10 08:35:19.000000000 -0500 -@@ -0,0 +1,41 @@ -+#ifndef __COW_H__ -+#define __COW_H__ -+ -+#include +Index: uml-2.6.7/arch/um/drivers/cow_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/cow_user.c 2004-07-16 19:47:23.608222216 +0300 ++++ uml-2.6.7/arch/um/drivers/cow_user.c 2004-07-16 19:47:23.680211272 +0300 +@@ -0,0 +1,375 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + -+#if __BYTE_ORDER == __BIG_ENDIAN -+# define ntohll(x) (x) -+# define htonll(x) (x) -+#elif __BYTE_ORDER == __LITTLE_ENDIAN -+# define ntohll(x) bswap_64(x) -+# define htonll(x) bswap_64(x) -+#else -+#error "__BYTE_ORDER not defined" -+#endif ++#include "os.h" + -+extern int init_cow_file(int fd, char *cow_file, char *backing_file, -+ int sectorsize, int alignment, int *bitmap_offset_out, -+ unsigned long *bitmap_len_out, int *data_offset_out); ++#include "cow.h" ++#include "cow_sys.h" + -+extern int file_reader(__u64 offset, char *buf, int len, void *arg); -+extern int read_cow_header(int (*reader)(__u64, char *, int, void *), -+ void *arg, __u32 *version_out, -+ char **backing_file_out, time_t *mtime_out, -+ __u64 *size_out, int *sectorsize_out, -+ __u32 *align_out, int *bitmap_offset_out); ++#define PATH_LEN_V1 256 + -+extern int write_cow_header(char *cow_file, int fd, char *backing_file, -+ int sectorsize, int alignment, long long *size); ++struct cow_header_v1 { ++ int magic; ++ int version; ++ char backing_file[PATH_LEN_V1]; ++ time_t mtime; ++ __u64 size; ++ int sectorsize; ++}; + -+extern void cow_sizes(int version, __u64 size, int sectorsize, int align, -+ int bitmap_offset, unsigned long *bitmap_len_out, -+ int *data_offset_out); ++#define PATH_LEN_V2 MAXPATHLEN + -+#endif ++struct cow_header_v2 { ++ unsigned long magic; ++ unsigned long version; ++ char backing_file[PATH_LEN_V2]; ++ time_t mtime; ++ __u64 size; ++ int sectorsize; ++}; + -+/* -+ * --------------------------------------------------------------------------- -+ * Local variables: -+ * c-file-style: "linux" -+ * End: ++/* Define PATH_LEN_V3 as the usual value of MAXPATHLEN, just hard-code it in ++ * case other systems have different values for MAXPATHLEN + */ -diff -Naur a/arch/um/drivers/cow_kern.c b/arch/um/drivers/cow_kern.c ---- a/arch/um/drivers/cow_kern.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/drivers/cow_kern.c 2004-03-10 08:44:41.000000000 -0500 -@@ -0,0 +1,630 @@ -+#define COW_MAJOR 60 -+#define MAJOR_NR COW_MAJOR ++#define PATH_LEN_V3 4096 + -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "2_5compat.h" -+#include "cow.h" -+#include "ubd_user.h" -+ -+#define COW_SHIFT 4 ++/* Changes from V2 - ++ * PATH_LEN_V3 as described above ++ * Explicitly specify field bit lengths for systems with different ++ * lengths for the usual C types. Not sure whether char or ++ * time_t should be changed, this can be changed later without ++ * breaking compatibility ++ * Add alignment field so that different alignments can be used for the ++ * bitmap and data ++ * Add cow_format field to allow for the possibility of different ways ++ * of specifying the COW blocks. For now, the only value is 0, ++ * for the traditional COW bitmap. ++ * Move the backing_file field to the end of the header. This allows ++ * for the possibility of expanding it into the padding required ++ * by the bitmap alignment. ++ * The bitmap and data portions of the file will be aligned as specified ++ * by the alignment field. This is to allow COW files to be ++ * put on devices with restrictions on access alignments, such as ++ * /dev/raw, with a 512 byte alignment restriction. This also ++ * allows the data to be more aligned more strictly than on ++ * sector boundaries. This is needed for ubd-mmap, which needs ++ * the data to be page aligned. ++ * Fixed (finally!) the rounding bug ++ */ + -+struct cow { -+ int count; -+ char *cow_path; -+ dev_t cow_dev; -+ struct block_device *cow_bdev; -+ char *backing_path; -+ dev_t backing_dev; -+ struct block_device *backing_bdev; -+ int sectorsize; -+ unsigned long *bitmap; -+ unsigned long bitmap_len; -+ int bitmap_offset; -+ int data_offset; -+ devfs_handle_t devfs; -+ struct semaphore sem; -+ struct semaphore io_sem; -+ atomic_t working; -+ spinlock_t io_lock; -+ struct buffer_head *bh; -+ struct buffer_head *bhtail; -+ void *end_io; ++struct cow_header_v3 { ++ __u32 magic; ++ __u32 version; ++ time_t mtime; ++ __u64 size; ++ __u32 sectorsize; ++ __u32 alignment; ++ __u32 cow_format; ++ char backing_file[PATH_LEN_V3]; +}; + -+#define DEFAULT_COW { \ -+ .count = 0, \ -+ .cow_path = NULL, \ -+ .cow_dev = 0, \ -+ .backing_path = NULL, \ -+ .backing_dev = 0, \ -+ .bitmap = NULL, \ -+ .bitmap_len = 0, \ -+ .bitmap_offset = 0, \ -+ .data_offset = 0, \ -+ .devfs = NULL, \ -+ .working = ATOMIC_INIT(0), \ -+ .io_lock = SPIN_LOCK_UNLOCKED, \ -+} -+ -+#define MAX_DEV (8) -+#define MAX_MINOR (MAX_DEV << COW_SHIFT) -+ -+struct cow cow_dev[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_COW }; -+ -+/* Not modified by this driver */ -+static int blk_sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = BLOCK_SIZE }; -+static int hardsect_sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = 512 }; -+ -+/* Protected by cow_lock */ -+static int sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = 0 }; -+ -+static struct hd_struct cow_part[MAX_MINOR] = -+ { [ 0 ... MAX_MINOR - 1 ] = { 0, 0, 0 } }; -+ -+/* Protected by io_request_lock */ -+static request_queue_t *cow_queue; -+ -+static int cow_open(struct inode *inode, struct file *filp); -+static int cow_release(struct inode * inode, struct file * file); -+static int cow_ioctl(struct inode * inode, struct file * file, -+ unsigned int cmd, unsigned long arg); -+static int cow_revalidate(kdev_t rdev); ++/* COW format definitions - for now, we have only the usual COW bitmap */ ++#define COW_BITMAP 0 + -+static struct block_device_operations cow_blops = { -+ .open = cow_open, -+ .release = cow_release, -+ .ioctl = cow_ioctl, -+ .revalidate = cow_revalidate, ++union cow_header { ++ struct cow_header_v1 v1; ++ struct cow_header_v2 v2; ++ struct cow_header_v3 v3; +}; + -+/* Initialized in an initcall, and unchanged thereafter */ -+devfs_handle_t cow_dir_handle; -+ -+#define INIT_GENDISK(maj, name, parts, shift, bsizes, max, blops) \ -+{ \ -+ .major = maj, \ -+ .major_name = name, \ -+ .minor_shift = shift, \ -+ .max_p = 1 << shift, \ -+ .part = parts, \ -+ .sizes = bsizes, \ -+ .nr_real = max, \ -+ .real_devices = NULL, \ -+ .next = NULL, \ -+ .fops = blops, \ -+ .de_arr = NULL, \ -+ .flags = 0 \ -+} -+ -+static spinlock_t cow_lock = SPIN_LOCK_UNLOCKED; ++#define COW_MAGIC 0x4f4f4f4d /* MOOO */ ++#define COW_VERSION 3 + -+static struct gendisk cow_gendisk = INIT_GENDISK(MAJOR_NR, "cow", cow_part, -+ COW_SHIFT, sizes, MAX_DEV, -+ &cow_blops); ++#define DIV_ROUND(x, len) (((x) + (len) - 1) / (len)) ++#define ROUND_UP(x, align) DIV_ROUND(x, align) * (align) + -+static int cow_add(int n) ++void cow_sizes(int version, __u64 size, int sectorsize, int align, ++ int bitmap_offset, unsigned long *bitmap_len_out, ++ int *data_offset_out) +{ -+ struct cow *dev = &cow_dev[n]; -+ char name[sizeof("nnnnnn\0")]; -+ int err = -ENODEV; -+ -+ if(dev->cow_path == NULL) -+ goto out; -+ -+ sprintf(name, "%d", n); -+ dev->devfs = devfs_register(cow_dir_handle, name, DEVFS_FL_REMOVABLE, -+ MAJOR_NR, n << COW_SHIFT, S_IFBLK | -+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, -+ &cow_blops, NULL); -+ -+ init_MUTEX_LOCKED(&dev->sem); -+ init_MUTEX(&dev->io_sem); ++ if(version < 3){ ++ *bitmap_len_out = (size + sectorsize - 1) / (8 * sectorsize); + -+ return(0); ++ *data_offset_out = bitmap_offset + *bitmap_len_out; ++ *data_offset_out = (*data_offset_out + sectorsize - 1) / ++ sectorsize; ++ *data_offset_out *= sectorsize; ++ } ++ else { ++ *bitmap_len_out = DIV_ROUND(size, sectorsize); ++ *bitmap_len_out = DIV_ROUND(*bitmap_len_out, 8); + -+ out: -+ return(err); ++ *data_offset_out = bitmap_offset + *bitmap_len_out; ++ *data_offset_out = ROUND_UP(*data_offset_out, align); ++ } +} + -+/* -+ * Add buffer_head to back of pending list -+ */ -+static void cow_add_bh(struct cow *cow, struct buffer_head *bh) ++static int absolutize(char *to, int size, char *from) +{ -+ unsigned long flags; ++ char save_cwd[256], *slash; ++ int remaining; + -+ spin_lock_irqsave(&cow->io_lock, flags); -+ if(cow->bhtail != NULL){ -+ cow->bhtail->b_reqnext = bh; -+ cow->bhtail = bh; ++ if(getcwd(save_cwd, sizeof(save_cwd)) == NULL) { ++ cow_printf("absolutize : unable to get cwd - errno = %d\n", ++ errno); ++ return(-1); ++ } ++ slash = strrchr(from, '/'); ++ if(slash != NULL){ ++ *slash = '\0'; ++ if(chdir(from)){ ++ *slash = '/'; ++ cow_printf("absolutize : Can't cd to '%s' - " ++ "errno = %d\n", from, errno); ++ return(-1); ++ } ++ *slash = '/'; ++ if(getcwd(to, size) == NULL){ ++ cow_printf("absolutize : unable to get cwd of '%s' - " ++ "errno = %d\n", from, errno); ++ return(-1); ++ } ++ remaining = size - strlen(to); ++ if(strlen(slash) + 1 > remaining){ ++ cow_printf("absolutize : unable to fit '%s' into %d " ++ "chars\n", from, size); ++ return(-1); ++ } ++ strcat(to, slash); + } + else { -+ cow->bh = bh; -+ cow->bhtail = bh; ++ if(strlen(save_cwd) + 1 + strlen(from) + 1 > size){ ++ cow_printf("absolutize : unable to fit '%s' into %d " ++ "chars\n", from, size); ++ return(-1); ++ } ++ strcpy(to, save_cwd); ++ strcat(to, "/"); ++ strcat(to, from); + } -+ spin_unlock_irqrestore(&cow->io_lock, flags); ++ chdir(save_cwd); ++ return(0); +} + -+/* -+* Grab first pending buffer -+*/ -+static struct buffer_head *cow_get_bh(struct cow *cow) ++int write_cow_header(char *cow_file, int fd, char *backing_file, ++ int sectorsize, int alignment, long long *size) +{ -+ struct buffer_head *bh; ++ struct cow_header_v3 *header; ++ unsigned long modtime; ++ int err; + -+ spin_lock_irq(&cow->io_lock); -+ bh = cow->bh; -+ if(bh != NULL){ -+ if(bh == cow->bhtail) -+ cow->bhtail = NULL; -+ cow->bh = bh->b_reqnext; -+ bh->b_reqnext = NULL; ++ err = cow_seek_file(fd, 0); ++ if(err < 0){ ++ cow_printf("write_cow_header - lseek failed, err = %d\n", -err); ++ goto out; + } -+ spin_unlock_irq(&cow->io_lock); + -+ return(bh); -+} ++ err = -ENOMEM; ++ header = cow_malloc(sizeof(*header)); ++ if(header == NULL){ ++ cow_printf("Failed to allocate COW V3 header\n"); ++ goto out; ++ } ++ header->magic = htonl(COW_MAGIC); ++ header->version = htonl(COW_VERSION); + -+static void cow_handle_bh(struct cow *cow, struct buffer_head *bh, -+ struct buffer_head **cow_bh, int ncow_bh) -+{ -+ int i; ++ err = -EINVAL; ++ if(strlen(backing_file) > sizeof(header->backing_file) - 1){ ++ cow_printf("Backing file name \"%s\" is too long - names are " ++ "limited to %d characters\n", backing_file, ++ sizeof(header->backing_file) - 1); ++ goto out_free; ++ } + -+ if(ncow_bh > 0) -+ ll_rw_block(WRITE, ncow_bh, cow_bh); ++ if(absolutize(header->backing_file, sizeof(header->backing_file), ++ backing_file)) ++ goto out_free; + -+ for(i = 0; i < ncow_bh ; i++){ -+ wait_on_buffer(cow_bh[i]); -+ brelse(cow_bh[i]); ++ err = os_file_modtime(header->backing_file, &modtime); ++ if(err < 0){ ++ cow_printf("Backing file '%s' mtime request failed, " ++ "err = %d\n", header->backing_file, -err); ++ goto out_free; + } + -+ ll_rw_block(WRITE, 1, &bh); -+ brelse(bh); -+} ++ err = cow_file_size(header->backing_file, size); ++ if(err < 0){ ++ cow_printf("Couldn't get size of backing file '%s', " ++ "err = %d\n", header->backing_file, -err); ++ goto out_free; ++ } + -+static struct buffer_head *cow_new_bh(struct cow *dev, int sector) -+{ -+ struct buffer_head *bh; ++ header->mtime = htonl(modtime); ++ header->size = htonll(*size); ++ header->sectorsize = htonl(sectorsize); ++ header->alignment = htonl(alignment); ++ header->cow_format = COW_BITMAP; + -+ sector = (dev->bitmap_offset + sector / 8) / dev->sectorsize; -+ bh = getblk(dev->cow_dev, sector, dev->sectorsize); -+ memcpy(bh->b_data, dev->bitmap + sector / (8 * sizeof(dev->bitmap[0])), -+ dev->sectorsize); -+ return(bh); ++ err = os_write_file(fd, header, sizeof(*header)); ++ if(err != sizeof(*header)){ ++ cow_printf("Write of header to new COW file '%s' failed, " ++ "err = %d\n", cow_file, -err); ++ goto out_free; ++ } ++ err = 0; ++ out_free: ++ cow_free(header); ++ out: ++ return(err); +} + -+/* Copied from loop.c, needed to avoid deadlocking in make_request. */ -+ -+static int cow_thread(void *data) ++int file_reader(__u64 offset, char *buf, int len, void *arg) +{ -+ struct cow *dev = data; -+ struct buffer_head *bh; -+ -+ daemonize(); -+ exit_files(current); -+ -+ sprintf(current->comm, "cow%d", dev - cow_dev); -+ -+ spin_lock_irq(¤t->sigmask_lock); -+ sigfillset(¤t->blocked); -+ flush_signals(current); -+ spin_unlock_irq(¤t->sigmask_lock); ++ int fd = *((int *) arg); + -+ atomic_inc(&dev->working); ++ return(pread(fd, buf, len, offset)); ++} + -+ current->policy = SCHED_OTHER; -+ current->nice = -20; ++/* XXX Need to sanity-check the values read from the header */ + -+ current->flags |= PF_NOIO; ++int read_cow_header(int (*reader)(__u64, char *, int, void *), void *arg, ++ __u32 *version_out, char **backing_file_out, ++ time_t *mtime_out, __u64 *size_out, ++ int *sectorsize_out, __u32 *align_out, ++ int *bitmap_offset_out) ++{ ++ union cow_header *header; ++ char *file; ++ int err, n; ++ unsigned long version, magic; + -+ /* -+ * up sem, we are running -+ */ -+ up(&dev->sem); ++ header = cow_malloc(sizeof(*header)); ++ if(header == NULL){ ++ cow_printf("read_cow_header - Failed to allocate header\n"); ++ return(-ENOMEM); ++ } ++ err = -EINVAL; ++ n = (*reader)(0, (char *) header, sizeof(*header), arg); ++ if(n < offsetof(typeof(header->v1), backing_file)){ ++ cow_printf("read_cow_header - short header\n"); ++ goto out; ++ } + -+ for(;;){ -+ int start, len, nbh, i, update_bitmap = 0; -+ struct buffer_head *cow_bh[2]; ++ magic = header->v1.magic; ++ if(magic == COW_MAGIC) { ++ version = header->v1.version; ++ } ++ else if(magic == ntohl(COW_MAGIC)){ ++ version = ntohl(header->v1.version); ++ } ++ /* No error printed because the non-COW case comes through here */ ++ else goto out; + -+ down_interruptible(&dev->io_sem); -+ /* -+ * could be upped because of tear-down, not because of -+ * pending work -+ */ -+ if(!atomic_read(&dev->working)) -+ break; ++ *version_out = version; + -+ bh = cow_get_bh(dev); -+ if(bh == NULL){ -+ printk(KERN_ERR "cow: missing bh\n"); -+ continue; ++ if(version == 1){ ++ if(n < sizeof(header->v1)){ ++ cow_printf("read_cow_header - failed to read V1 " ++ "header\n"); ++ goto out; + } -+ -+ start = bh->b_blocknr * bh->b_size / dev->sectorsize; -+ len = bh->b_size / dev->sectorsize; -+ for(i = 0; i < len ; i++){ -+ if(ubd_test_bit(start + i, -+ (unsigned char *) dev->bitmap)) -+ continue; -+ -+ update_bitmap = 1; -+ ubd_set_bit(start + i, (unsigned char *) dev->bitmap); ++ *mtime_out = header->v1.mtime; ++ *size_out = header->v1.size; ++ *sectorsize_out = header->v1.sectorsize; ++ *bitmap_offset_out = sizeof(header->v1); ++ *align_out = *sectorsize_out; ++ file = header->v1.backing_file; ++ } ++ else if(version == 2){ ++ if(n < sizeof(header->v2)){ ++ cow_printf("read_cow_header - failed to read V2 " ++ "header\n"); ++ goto out; + } -+ -+ cow_bh[0] = NULL; -+ cow_bh[1] = NULL; -+ nbh = 0; -+ if(update_bitmap){ -+ cow_bh[0] = cow_new_bh(dev, start); -+ nbh++; -+ if(start / dev->sectorsize != -+ (start + len) / dev->sectorsize){ -+ cow_bh[1] = cow_new_bh(dev, start + len); -+ nbh++; -+ } ++ *mtime_out = ntohl(header->v2.mtime); ++ *size_out = ntohll(header->v2.size); ++ *sectorsize_out = ntohl(header->v2.sectorsize); ++ *bitmap_offset_out = sizeof(header->v2); ++ *align_out = *sectorsize_out; ++ file = header->v2.backing_file; ++ } ++ else if(version == 3){ ++ if(n < sizeof(header->v3)){ ++ cow_printf("read_cow_header - failed to read V2 " ++ "header\n"); ++ goto out; + } -+ -+ bh->b_dev = dev->cow_dev; -+ bh->b_blocknr += dev->data_offset / dev->sectorsize; -+ -+ cow_handle_bh(dev, bh, cow_bh, nbh); -+ -+ /* -+ * upped both for pending work and tear-down, lo_pending -+ * will hit zero then -+ */ -+ if(atomic_dec_and_test(&dev->working)) -+ break; ++ *mtime_out = ntohl(header->v3.mtime); ++ *size_out = ntohll(header->v3.size); ++ *sectorsize_out = ntohl(header->v3.sectorsize); ++ *align_out = ntohl(header->v3.alignment); ++ *bitmap_offset_out = ROUND_UP(sizeof(header->v3), *align_out); ++ file = header->v3.backing_file; + } -+ -+ up(&dev->sem); -+ return(0); ++ else { ++ cow_printf("read_cow_header - invalid COW version\n"); ++ goto out; ++ } ++ err = -ENOMEM; ++ *backing_file_out = cow_strdup(file); ++ if(*backing_file_out == NULL){ ++ cow_printf("read_cow_header - failed to allocate backing " ++ "file\n"); ++ goto out; ++ } ++ err = 0; ++ out: ++ cow_free(header); ++ return(err); +} + -+static int cow_make_request(request_queue_t *q, int rw, struct buffer_head *bh) ++int init_cow_file(int fd, char *cow_file, char *backing_file, int sectorsize, ++ int alignment, int *bitmap_offset_out, ++ unsigned long *bitmap_len_out, int *data_offset_out) +{ -+ struct cow *dev; -+ int n, minor; ++ __u64 size, offset; ++ char zero = 0; ++ int err; + -+ minor = MINOR(bh->b_rdev); -+ n = minor >> COW_SHIFT; -+ dev = &cow_dev[n]; ++ err = write_cow_header(cow_file, fd, backing_file, sectorsize, ++ alignment, &size); ++ if(err) ++ goto out; ++ ++ *bitmap_offset_out = ROUND_UP(sizeof(struct cow_header_v3), alignment); ++ cow_sizes(COW_VERSION, size, sectorsize, alignment, *bitmap_offset_out, ++ bitmap_len_out, data_offset_out); + -+ dev->end_io = NULL; -+ if(ubd_test_bit(bh->b_rsector, (unsigned char *) dev->bitmap)){ -+ bh->b_rdev = dev->cow_dev; -+ bh->b_rsector += dev->data_offset / dev->sectorsize; ++ offset = *data_offset_out + size - sizeof(zero); ++ err = cow_seek_file(fd, offset); ++ if(err < 0){ ++ cow_printf("cow bitmap lseek failed : err = %d\n", -err); ++ goto out; + } -+ else if(rw == WRITE){ -+ bh->b_dev = dev->cow_dev; -+ bh->b_blocknr += dev->data_offset / dev->sectorsize; + -+ cow_add_bh(dev, bh); -+ up(&dev->io_sem); -+ return(0); -+ } -+ else { -+ bh->b_rdev = dev->backing_dev; -+ } ++ /* does not really matter how much we write it is just to set EOF ++ * this also sets the entire COW bitmap ++ * to zero without having to allocate it ++ */ ++ err = cow_write_file(fd, &zero, sizeof(zero)); ++ if(err != sizeof(zero)){ ++ cow_printf("Write of bitmap to new COW file '%s' failed, " ++ "err = %d\n", cow_file, -err); ++ err = -EINVAL; ++ goto out; ++ } + -+ return(1); ++ return(0); ++ ++ out: ++ return(err); +} + -+int cow_init(void) ++/* ++ * --------------------------------------------------------------------------- ++ * Local variables: ++ * c-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/drivers/chan_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/chan_kern.c 2004-07-16 19:37:43.028483752 +0300 ++++ uml-2.6.7/arch/um/drivers/chan_kern.c 2004-07-16 19:47:24.392103048 +0300 +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + #include "chan_kern.h" +@@ -16,6 +17,7 @@ + #include "irq_user.h" + #include "sigio.h" + #include "line.h" ++#include "os.h" + + static void *not_configged_init(char *str, int device, struct chan_opts *opts) + { +@@ -86,6 +88,52 @@ + .winch = 0, + }; + ++void generic_close(int fd, void *unused) +{ -+ int i; -+ -+ cow_dir_handle = devfs_mk_dir (NULL, "cow", NULL); -+ if (devfs_register_blkdev(MAJOR_NR, "cow", &cow_blops)) { -+ printk(KERN_ERR "cow: unable to get major %d\n", MAJOR_NR); -+ return -1; -+ } -+ read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read-ahead */ -+ blksize_size[MAJOR_NR] = blk_sizes; -+ blk_size[MAJOR_NR] = sizes; -+ INIT_HARDSECT(hardsect_size, MAJOR_NR, hardsect_sizes); -+ -+ cow_queue = BLK_DEFAULT_QUEUE(MAJOR_NR); -+ blk_init_queue(cow_queue, NULL); -+ INIT_ELV(cow_queue, &cow_queue->elevator); -+ blk_queue_make_request(cow_queue, cow_make_request); ++ os_close_file(fd); ++} + -+ add_gendisk(&cow_gendisk); ++int generic_read(int fd, char *c_out, void *unused) ++{ ++ int n; + -+ for(i=0;i 0){ -+ n = (left > blocksize) ? blocksize : left; ++ ret = os_window_size(fd, &rows, &cols); ++ if(ret < 0) ++ return(ret); + -+ bh = bread(dev, block, (n < 512) ? 512 : n); -+ if(bh == NULL) -+ return(-EIO); ++ ret = ((*rows_out != rows) || (*cols_out != cols)); + -+ n -= offset; -+ memcpy(&buf[cur], bh->b_data + offset, n); -+ block++; -+ left -= n; -+ cur += n; -+ offset = 0; -+ brelse(bh); -+ } ++ *rows_out = rows; ++ *cols_out = cols; + -+ return(count); ++ return(ret); +} + -+static int cow_open(struct inode *inode, struct file *filp) ++void generic_free(void *data) +{ -+ int (*dev_ioctl)(struct inode *, struct file *, unsigned int, -+ unsigned long); -+ mm_segment_t fs; -+ struct cow *dev; -+ __u64 size; -+ __u32 version, align; -+ time_t mtime; -+ char *backing_file; -+ int n, offset, err = 0; ++ kfree(data); ++} + -+ n = DEVICE_NR(inode->i_rdev); -+ if(n >= MAX_DEV) -+ return(-ENODEV); -+ dev = &cow_dev[n]; -+ offset = n << COW_SHIFT; + static void tty_receive_char(struct tty_struct *tty, char ch) + { + if(tty == NULL) return; +@@ -265,6 +313,11 @@ + { + int n = 0; + ++ if(chan == NULL){ ++ CONFIG_CHUNK(str, size, n, "none", 1); ++ return(n); ++ } + -+ spin_lock(&cow_lock); + CONFIG_CHUNK(str, size, n, chan->ops->type, 0); + + if(chan->dev == NULL){ +@@ -420,7 +473,8 @@ + INIT_LIST_HEAD(chans); + } + +- if((out = strchr(str, ',')) != NULL){ ++ out = strchr(str, ','); ++ if(out != NULL){ + in = str; + *out = '\0'; + out++; +@@ -475,12 +529,15 @@ + goto out; + } + err = chan->ops->read(chan->fd, &c, chan->data); +- if(err > 0) tty_receive_char(tty, c); ++ if(err > 0) ++ tty_receive_char(tty, c); + } while(err > 0); + -+ if(dev->count == 0){ -+ dev->cow_dev = name_to_kdev_t(dev->cow_path); -+ if(dev->cow_dev == 0){ -+ printk(KERN_ERR "cow_open - name_to_kdev_t(\"%s\") " -+ "failed\n", dev->cow_path); -+ err = -ENODEV; -+ } + if(err == 0) reactivate_fd(chan->fd, irq); + if(err == -EIO){ + if(chan->primary){ +- if(tty != NULL) tty_hangup(tty); ++ if(tty != NULL) ++ tty_hangup(tty); + line_disable(dev, irq); + close_chan(chans); + free_chan(chans); +Index: uml-2.6.7/arch/um/drivers/cow_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/cow_kern.c 2004-07-16 19:47:23.608222216 +0300 ++++ uml-2.6.7/arch/um/drivers/cow_kern.c 2004-07-16 19:47:23.679211424 +0300 +@@ -0,0 +1,630 @@ ++#define COW_MAJOR 60 ++#define MAJOR_NR COW_MAJOR + -+ dev->backing_dev = name_to_kdev_t(dev->backing_path); -+ if(dev->backing_dev == 0){ -+ printk(KERN_ERR "cow_open - name_to_kdev_t(\"%s\") " -+ "failed\n", dev->backing_path); -+ err = -ENODEV; -+ } ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "2_5compat.h" ++#include "cow.h" ++#include "ubd_user.h" + -+ if(err) -+ goto out; ++#define COW_SHIFT 4 + -+ dev->cow_bdev = bdget(dev->cow_dev); -+ if(dev->cow_bdev == NULL){ -+ printk(KERN_ERR "cow_open - bdget(\"%s\") failed\n", -+ dev->cow_path); -+ err = -ENOMEM; -+ } -+ dev->backing_bdev = bdget(dev->backing_dev); -+ if(dev->backing_bdev == NULL){ -+ printk(KERN_ERR "cow_open - bdget(\"%s\") failed\n", -+ dev->backing_path); -+ err = -ENOMEM; -+ } ++struct cow { ++ int count; ++ char *cow_path; ++ dev_t cow_dev; ++ struct block_device *cow_bdev; ++ char *backing_path; ++ dev_t backing_dev; ++ struct block_device *backing_bdev; ++ int sectorsize; ++ unsigned long *bitmap; ++ unsigned long bitmap_len; ++ int bitmap_offset; ++ int data_offset; ++ devfs_handle_t devfs; ++ struct semaphore sem; ++ struct semaphore io_sem; ++ atomic_t working; ++ spinlock_t io_lock; ++ struct buffer_head *bh; ++ struct buffer_head *bhtail; ++ void *end_io; ++}; + -+ if(err) -+ goto out; ++#define DEFAULT_COW { \ ++ .count = 0, \ ++ .cow_path = NULL, \ ++ .cow_dev = 0, \ ++ .backing_path = NULL, \ ++ .backing_dev = 0, \ ++ .bitmap = NULL, \ ++ .bitmap_len = 0, \ ++ .bitmap_offset = 0, \ ++ .data_offset = 0, \ ++ .devfs = NULL, \ ++ .working = ATOMIC_INIT(0), \ ++ .io_lock = SPIN_LOCK_UNLOCKED, \ ++} + -+ err = blkdev_get(dev->cow_bdev, FMODE_READ|FMODE_WRITE, 0, -+ BDEV_RAW); -+ if(err){ -+ printk("cow_open - blkdev_get of COW device failed, " -+ "error = %d\n", err); -+ goto out; -+ } -+ -+ err = blkdev_get(dev->backing_bdev, FMODE_READ, 0, BDEV_RAW); -+ if(err){ -+ printk("cow_open - blkdev_get of backing device " -+ "failed, error = %d\n", err); -+ goto out; -+ } -+ -+ err = read_cow_header(reader, &dev->cow_dev, &version, -+ &backing_file, &mtime, &size, -+ &dev->sectorsize, &align, -+ &dev->bitmap_offset); -+ if(err){ -+ printk(KERN_ERR "cow_open - read_cow_header failed, " -+ "err = %d\n", err); -+ goto out; -+ } -+ -+ cow_sizes(version, size, dev->sectorsize, align, -+ dev->bitmap_offset, &dev->bitmap_len, -+ &dev->data_offset); -+ dev->bitmap = (void *) vmalloc(dev->bitmap_len); -+ if(dev->bitmap == NULL){ -+ err = -ENOMEM; -+ printk(KERN_ERR "Failed to vmalloc COW bitmap\n"); -+ goto out; -+ } -+ flush_tlb_kernel_vm(); -+ -+ err = reader(dev->bitmap_offset, (char *) dev->bitmap, -+ dev->bitmap_len, &dev->cow_dev); -+ if(err < 0){ -+ printk(KERN_ERR "Failed to read COW bitmap\n"); -+ vfree(dev->bitmap); -+ goto out; -+ } ++#define MAX_DEV (8) ++#define MAX_MINOR (MAX_DEV << COW_SHIFT) + -+ dev_ioctl = dev->backing_bdev->bd_op->ioctl; -+ fs = get_fs(); -+ set_fs(KERNEL_DS); -+ err = (*dev_ioctl)(inode, filp, BLKGETSIZE, -+ (unsigned long) &sizes[offset]); -+ set_fs(fs); -+ if(err){ -+ printk(KERN_ERR "cow_open - BLKGETSIZE failed, " -+ "error = %d\n", err); -+ goto out; -+ } ++struct cow cow_dev[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_COW }; + -+ kernel_thread(cow_thread, dev, -+ CLONE_FS | CLONE_FILES | CLONE_SIGHAND); -+ down(&dev->sem); -+ } -+ dev->count++; -+ out: -+ spin_unlock(&cow_lock); -+ return(err); -+} ++/* Not modified by this driver */ ++static int blk_sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = BLOCK_SIZE }; ++static int hardsect_sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = 512 }; + -+static int cow_release(struct inode * inode, struct file * file) -+{ -+ struct cow *dev; -+ int n, err; ++/* Protected by cow_lock */ ++static int sizes[MAX_MINOR] = { [ 0 ... MAX_MINOR - 1 ] = 0 }; + -+ n = DEVICE_NR(inode->i_rdev); -+ if(n >= MAX_DEV) -+ return(-ENODEV); -+ dev = &cow_dev[n]; ++static struct hd_struct cow_part[MAX_MINOR] = ++ { [ 0 ... MAX_MINOR - 1 ] = { 0, 0, 0 } }; + -+ spin_lock(&cow_lock); ++/* Protected by io_request_lock */ ++static request_queue_t *cow_queue; + -+ if(--dev->count > 0) -+ goto out; ++static int cow_open(struct inode *inode, struct file *filp); ++static int cow_release(struct inode * inode, struct file * file); ++static int cow_ioctl(struct inode * inode, struct file * file, ++ unsigned int cmd, unsigned long arg); ++static int cow_revalidate(kdev_t rdev); + -+ err = blkdev_put(dev->cow_bdev, BDEV_RAW); -+ if(err) -+ printk("cow_release - blkdev_put of cow device failed, " -+ "error = %d\n", err); -+ bdput(dev->cow_bdev); -+ dev->cow_bdev = 0; ++static struct block_device_operations cow_blops = { ++ .open = cow_open, ++ .release = cow_release, ++ .ioctl = cow_ioctl, ++ .revalidate = cow_revalidate, ++}; + -+ err = blkdev_put(dev->backing_bdev, BDEV_RAW); -+ if(err) -+ printk("cow_release - blkdev_put of backing device failed, " -+ "error = %d\n", err); -+ bdput(dev->backing_bdev); -+ dev->backing_bdev = 0; ++/* Initialized in an initcall, and unchanged thereafter */ ++devfs_handle_t cow_dir_handle; + -+ out: -+ spin_unlock(&cow_lock); -+ return(0); ++#define INIT_GENDISK(maj, name, parts, shift, bsizes, max, blops) \ ++{ \ ++ .major = maj, \ ++ .major_name = name, \ ++ .minor_shift = shift, \ ++ .max_p = 1 << shift, \ ++ .part = parts, \ ++ .sizes = bsizes, \ ++ .nr_real = max, \ ++ .real_devices = NULL, \ ++ .next = NULL, \ ++ .fops = blops, \ ++ .de_arr = NULL, \ ++ .flags = 0 \ +} + -+static int cow_ioctl(struct inode * inode, struct file * file, -+ unsigned int cmd, unsigned long arg) ++static spinlock_t cow_lock = SPIN_LOCK_UNLOCKED; ++ ++static struct gendisk cow_gendisk = INIT_GENDISK(MAJOR_NR, "cow", cow_part, ++ COW_SHIFT, sizes, MAX_DEV, ++ &cow_blops); ++ ++static int cow_add(int n) +{ -+ struct cow *dev; -+ int (*dev_ioctl)(struct inode *, struct file *, unsigned int, -+ unsigned long); -+ int n; ++ struct cow *dev = &cow_dev[n]; ++ char name[sizeof("nnnnnn\0")]; ++ int err = -ENODEV; + -+ n = DEVICE_NR(inode->i_rdev); -+ if(n >= MAX_DEV) -+ return(-ENODEV); -+ dev = &cow_dev[n]; ++ if(dev->cow_path == NULL) ++ goto out; + -+ dev_ioctl = dev->backing_bdev->bd_op->ioctl; -+ return((*dev_ioctl)(inode, file, cmd, arg)); -+} ++ sprintf(name, "%d", n); ++ dev->devfs = devfs_register(cow_dir_handle, name, DEVFS_FL_REMOVABLE, ++ MAJOR_NR, n << COW_SHIFT, S_IFBLK | ++ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, ++ &cow_blops, NULL); ++ ++ init_MUTEX_LOCKED(&dev->sem); ++ init_MUTEX(&dev->io_sem); + -+static int cow_revalidate(kdev_t rdev) -+{ -+ printk(KERN_ERR "Need to implement cow_revalidate\n"); + return(0); ++ ++ out: ++ return(err); +} + -+static int parse_unit(char **ptr) ++/* ++ * Add buffer_head to back of pending list ++ */ ++static void cow_add_bh(struct cow *cow, struct buffer_head *bh) +{ -+ char *str = *ptr, *end; -+ int n = -1; ++ unsigned long flags; + -+ if(isdigit(*str)) { -+ n = simple_strtoul(str, &end, 0); -+ if(end == str) -+ return(-1); -+ *ptr = end; ++ spin_lock_irqsave(&cow->io_lock, flags); ++ if(cow->bhtail != NULL){ ++ cow->bhtail->b_reqnext = bh; ++ cow->bhtail = bh; + } -+ else if (('a' <= *str) && (*str <= 'h')) { -+ n = *str - 'a'; -+ str++; -+ *ptr = str; ++ else { ++ cow->bh = bh; ++ cow->bhtail = bh; + } -+ return(n); ++ spin_unlock_irqrestore(&cow->io_lock, flags); +} + -+static int cow_setup(char *str) ++/* ++* Grab first pending buffer ++*/ ++static struct buffer_head *cow_get_bh(struct cow *cow) +{ -+ struct cow *dev; -+ char *cow_name, *backing_name; -+ int unit; ++ struct buffer_head *bh; + -+ unit = parse_unit(&str); -+ if(unit < 0){ -+ printk(KERN_ERR "cow_setup - Couldn't parse unit number\n"); -+ return(1); ++ spin_lock_irq(&cow->io_lock); ++ bh = cow->bh; ++ if(bh != NULL){ ++ if(bh == cow->bhtail) ++ cow->bhtail = NULL; ++ cow->bh = bh->b_reqnext; ++ bh->b_reqnext = NULL; + } ++ spin_unlock_irq(&cow->io_lock); + -+ if(*str != '='){ -+ printk(KERN_ERR "cow_setup - Missing '=' after unit " -+ "number\n"); -+ return(1); -+ } -+ str++; ++ return(bh); ++} + -+ cow_name = str; -+ backing_name = strchr(str, ','); -+ if(backing_name == NULL){ -+ printk(KERN_ERR "cow_setup - missing backing device name\n"); -+ return(0); ++static void cow_handle_bh(struct cow *cow, struct buffer_head *bh, ++ struct buffer_head **cow_bh, int ncow_bh) ++{ ++ int i; ++ ++ if(ncow_bh > 0) ++ ll_rw_block(WRITE, ncow_bh, cow_bh); ++ ++ for(i = 0; i < ncow_bh ; i++){ ++ wait_on_buffer(cow_bh[i]); ++ brelse(cow_bh[i]); + } -+ *backing_name = '\0'; -+ backing_name++; + -+ spin_lock(&cow_lock); ++ ll_rw_block(WRITE, 1, &bh); ++ brelse(bh); ++} + -+ dev = &cow_dev[unit]; -+ dev->cow_path = cow_name; -+ dev->backing_path = backing_name; -+ -+ spin_unlock(&cow_lock); -+ return(0); ++static struct buffer_head *cow_new_bh(struct cow *dev, int sector) ++{ ++ struct buffer_head *bh; ++ ++ sector = (dev->bitmap_offset + sector / 8) / dev->sectorsize; ++ bh = getblk(dev->cow_dev, sector, dev->sectorsize); ++ memcpy(bh->b_data, dev->bitmap + sector / (8 * sizeof(dev->bitmap[0])), ++ dev->sectorsize); ++ return(bh); +} + -+__setup("cow", cow_setup); ++/* Copied from loop.c, needed to avoid deadlocking in make_request. */ + -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/drivers/cow_sys.h b/arch/um/drivers/cow_sys.h ---- a/arch/um/drivers/cow_sys.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/drivers/cow_sys.h 2004-03-10 08:39:54.000000000 -0500 -@@ -0,0 +1,48 @@ -+#ifndef __COW_SYS_H__ -+#define __COW_SYS_H__ -+ -+#include "kern_util.h" -+#include "user_util.h" -+#include "os.h" -+#include "user.h" -+ -+static inline void *cow_malloc(int size) ++static int cow_thread(void *data) +{ -+ return(um_kmalloc(size)); -+} ++ struct cow *dev = data; ++ struct buffer_head *bh; + -+static inline void cow_free(void *ptr) -+{ -+ kfree(ptr); -+} ++ daemonize(); ++ exit_files(current); + -+#define cow_printf printk ++ sprintf(current->comm, "cow%d", dev - cow_dev); + -+static inline char *cow_strdup(char *str) -+{ -+ return(uml_strdup(str)); -+} ++ spin_lock_irq(¤t->sigmask_lock); ++ sigfillset(¤t->blocked); ++ flush_signals(current); ++ spin_unlock_irq(¤t->sigmask_lock); + -+static inline int cow_seek_file(int fd, __u64 offset) -+{ -+ return(os_seek_file(fd, offset)); -+} ++ atomic_inc(&dev->working); + -+static inline int cow_file_size(char *file, __u64 *size_out) -+{ -+ return(os_file_size(file, size_out)); -+} ++ current->policy = SCHED_OTHER; ++ current->nice = -20; + -+static inline int cow_write_file(int fd, char *buf, int size) -+{ -+ return(os_write_file(fd, buf, size)); -+} ++ current->flags |= PF_NOIO; + -+#endif ++ /* ++ * up sem, we are running ++ */ ++ up(&dev->sem); + -+/* -+ * --------------------------------------------------------------------------- -+ * Local variables: -+ * c-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/drivers/cow_user.c b/arch/um/drivers/cow_user.c ---- a/arch/um/drivers/cow_user.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/drivers/cow_user.c 2004-03-10 08:39:35.000000000 -0500 -@@ -0,0 +1,375 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include ++ for(;;){ ++ int start, len, nbh, i, update_bitmap = 0; ++ struct buffer_head *cow_bh[2]; + -+#include "os.h" ++ down_interruptible(&dev->io_sem); ++ /* ++ * could be upped because of tear-down, not because of ++ * pending work ++ */ ++ if(!atomic_read(&dev->working)) ++ break; + -+#include "cow.h" -+#include "cow_sys.h" ++ bh = cow_get_bh(dev); ++ if(bh == NULL){ ++ printk(KERN_ERR "cow: missing bh\n"); ++ continue; ++ } + -+#define PATH_LEN_V1 256 ++ start = bh->b_blocknr * bh->b_size / dev->sectorsize; ++ len = bh->b_size / dev->sectorsize; ++ for(i = 0; i < len ; i++){ ++ if(ubd_test_bit(start + i, ++ (unsigned char *) dev->bitmap)) ++ continue; + -+struct cow_header_v1 { -+ int magic; -+ int version; -+ char backing_file[PATH_LEN_V1]; -+ time_t mtime; -+ __u64 size; -+ int sectorsize; -+}; ++ update_bitmap = 1; ++ ubd_set_bit(start + i, (unsigned char *) dev->bitmap); ++ } + -+#define PATH_LEN_V2 MAXPATHLEN ++ cow_bh[0] = NULL; ++ cow_bh[1] = NULL; ++ nbh = 0; ++ if(update_bitmap){ ++ cow_bh[0] = cow_new_bh(dev, start); ++ nbh++; ++ if(start / dev->sectorsize != ++ (start + len) / dev->sectorsize){ ++ cow_bh[1] = cow_new_bh(dev, start + len); ++ nbh++; ++ } ++ } ++ ++ bh->b_dev = dev->cow_dev; ++ bh->b_blocknr += dev->data_offset / dev->sectorsize; + -+struct cow_header_v2 { -+ unsigned long magic; -+ unsigned long version; -+ char backing_file[PATH_LEN_V2]; -+ time_t mtime; -+ __u64 size; -+ int sectorsize; -+}; ++ cow_handle_bh(dev, bh, cow_bh, nbh); + -+/* Define PATH_LEN_V3 as the usual value of MAXPATHLEN, just hard-code it in -+ * case other systems have different values for MAXPATHLEN -+ */ -+#define PATH_LEN_V3 4096 ++ /* ++ * upped both for pending work and tear-down, lo_pending ++ * will hit zero then ++ */ ++ if(atomic_dec_and_test(&dev->working)) ++ break; ++ } + -+/* Changes from V2 - -+ * PATH_LEN_V3 as described above -+ * Explicitly specify field bit lengths for systems with different -+ * lengths for the usual C types. Not sure whether char or -+ * time_t should be changed, this can be changed later without -+ * breaking compatibility -+ * Add alignment field so that different alignments can be used for the -+ * bitmap and data -+ * Add cow_format field to allow for the possibility of different ways -+ * of specifying the COW blocks. For now, the only value is 0, -+ * for the traditional COW bitmap. -+ * Move the backing_file field to the end of the header. This allows -+ * for the possibility of expanding it into the padding required -+ * by the bitmap alignment. -+ * The bitmap and data portions of the file will be aligned as specified -+ * by the alignment field. This is to allow COW files to be -+ * put on devices with restrictions on access alignments, such as -+ * /dev/raw, with a 512 byte alignment restriction. This also -+ * allows the data to be more aligned more strictly than on -+ * sector boundaries. This is needed for ubd-mmap, which needs -+ * the data to be page aligned. -+ * Fixed (finally!) the rounding bug -+ */ ++ up(&dev->sem); ++ return(0); ++} + -+struct cow_header_v3 { -+ __u32 magic; -+ __u32 version; -+ time_t mtime; -+ __u64 size; -+ __u32 sectorsize; -+ __u32 alignment; -+ __u32 cow_format; -+ char backing_file[PATH_LEN_V3]; -+}; ++static int cow_make_request(request_queue_t *q, int rw, struct buffer_head *bh) ++{ ++ struct cow *dev; ++ int n, minor; + -+/* COW format definitions - for now, we have only the usual COW bitmap */ -+#define COW_BITMAP 0 ++ minor = MINOR(bh->b_rdev); ++ n = minor >> COW_SHIFT; ++ dev = &cow_dev[n]; + -+union cow_header { -+ struct cow_header_v1 v1; -+ struct cow_header_v2 v2; -+ struct cow_header_v3 v3; -+}; ++ dev->end_io = NULL; ++ if(ubd_test_bit(bh->b_rsector, (unsigned char *) dev->bitmap)){ ++ bh->b_rdev = dev->cow_dev; ++ bh->b_rsector += dev->data_offset / dev->sectorsize; ++ } ++ else if(rw == WRITE){ ++ bh->b_dev = dev->cow_dev; ++ bh->b_blocknr += dev->data_offset / dev->sectorsize; + -+#define COW_MAGIC 0x4f4f4f4d /* MOOO */ -+#define COW_VERSION 3 ++ cow_add_bh(dev, bh); ++ up(&dev->io_sem); ++ return(0); ++ } ++ else { ++ bh->b_rdev = dev->backing_dev; ++ } + -+#define DIV_ROUND(x, len) (((x) + (len) - 1) / (len)) -+#define ROUND_UP(x, align) DIV_ROUND(x, align) * (align) ++ return(1); ++} + -+void cow_sizes(int version, __u64 size, int sectorsize, int align, -+ int bitmap_offset, unsigned long *bitmap_len_out, -+ int *data_offset_out) ++int cow_init(void) +{ -+ if(version < 3){ -+ *bitmap_len_out = (size + sectorsize - 1) / (8 * sectorsize); ++ int i; + -+ *data_offset_out = bitmap_offset + *bitmap_len_out; -+ *data_offset_out = (*data_offset_out + sectorsize - 1) / -+ sectorsize; -+ *data_offset_out *= sectorsize; ++ cow_dir_handle = devfs_mk_dir (NULL, "cow", NULL); ++ if (devfs_register_blkdev(MAJOR_NR, "cow", &cow_blops)) { ++ printk(KERN_ERR "cow: unable to get major %d\n", MAJOR_NR); ++ return -1; + } -+ else { -+ *bitmap_len_out = DIV_ROUND(size, sectorsize); -+ *bitmap_len_out = DIV_ROUND(*bitmap_len_out, 8); ++ read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read-ahead */ ++ blksize_size[MAJOR_NR] = blk_sizes; ++ blk_size[MAJOR_NR] = sizes; ++ INIT_HARDSECT(hardsect_size, MAJOR_NR, hardsect_sizes); + -+ *data_offset_out = bitmap_offset + *bitmap_len_out; -+ *data_offset_out = ROUND_UP(*data_offset_out, align); -+ } ++ cow_queue = BLK_DEFAULT_QUEUE(MAJOR_NR); ++ blk_init_queue(cow_queue, NULL); ++ INIT_ELV(cow_queue, &cow_queue->elevator); ++ blk_queue_make_request(cow_queue, cow_make_request); ++ ++ add_gendisk(&cow_gendisk); ++ ++ for(i=0;i remaining){ -+ cow_printf("absolutize : unable to fit '%s' into %d " -+ "chars\n", from, size); -+ return(-1); -+ } -+ strcat(to, slash); -+ } -+ else { -+ if(strlen(save_cwd) + 1 + strlen(from) + 1 > size){ -+ cow_printf("absolutize : unable to fit '%s' into %d " -+ "chars\n", from, size); -+ return(-1); -+ } -+ strcpy(to, save_cwd); -+ strcat(to, "/"); -+ strcat(to, from); -+ } -+ chdir(save_cwd); -+ return(0); -+} -+ -+int write_cow_header(char *cow_file, int fd, char *backing_file, -+ int sectorsize, int alignment, long long *size) ++static int reader(__u64 start, char *buf, int count, void *arg) +{ -+ struct cow_header_v3 *header; -+ unsigned long modtime; -+ int err; -+ -+ err = cow_seek_file(fd, 0); -+ if(err < 0){ -+ cow_printf("write_cow_header - lseek failed, err = %d\n", -err); -+ goto out; -+ } -+ -+ err = -ENOMEM; -+ header = cow_malloc(sizeof(*header)); -+ if(header == NULL){ -+ cow_printf("Failed to allocate COW V3 header\n"); -+ goto out; -+ } -+ header->magic = htonl(COW_MAGIC); -+ header->version = htonl(COW_VERSION); ++ dev_t dev = *((dev_t *) arg); ++ struct buffer_head *bh; ++ __u64 block; ++ int cur, offset, left, n, blocksize = get_hardsect_size(dev); + -+ err = -EINVAL; -+ if(strlen(backing_file) > sizeof(header->backing_file) - 1){ -+ cow_printf("Backing file name \"%s\" is too long - names are " -+ "limited to %d characters\n", backing_file, -+ sizeof(header->backing_file) - 1); -+ goto out_free; -+ } ++ if(blocksize == 0) ++ panic("Zero blocksize"); + -+ if(absolutize(header->backing_file, sizeof(header->backing_file), -+ backing_file)) -+ goto out_free; ++ block = start / blocksize; ++ offset = start % blocksize; ++ left = count; ++ cur = 0; ++ while(left > 0){ ++ n = (left > blocksize) ? blocksize : left; + -+ err = os_file_modtime(header->backing_file, &modtime); -+ if(err < 0){ -+ cow_printf("Backing file '%s' mtime request failed, " -+ "err = %d\n", header->backing_file, -err); -+ goto out_free; -+ } ++ bh = bread(dev, block, (n < 512) ? 512 : n); ++ if(bh == NULL) ++ return(-EIO); + -+ err = cow_file_size(header->backing_file, size); -+ if(err < 0){ -+ cow_printf("Couldn't get size of backing file '%s', " -+ "err = %d\n", header->backing_file, -err); -+ goto out_free; ++ n -= offset; ++ memcpy(&buf[cur], bh->b_data + offset, n); ++ block++; ++ left -= n; ++ cur += n; ++ offset = 0; ++ brelse(bh); + } + -+ header->mtime = htonl(modtime); -+ header->size = htonll(*size); -+ header->sectorsize = htonl(sectorsize); -+ header->alignment = htonl(alignment); -+ header->cow_format = COW_BITMAP; -+ -+ err = os_write_file(fd, header, sizeof(*header)); -+ if(err != sizeof(*header)){ -+ cow_printf("Write of header to new COW file '%s' failed, " -+ "err = %d\n", cow_file, -err); -+ goto out_free; -+ } -+ err = 0; -+ out_free: -+ cow_free(header); -+ out: -+ return(err); ++ return(count); +} + -+int file_reader(__u64 offset, char *buf, int len, void *arg) ++static int cow_open(struct inode *inode, struct file *filp) +{ -+ int fd = *((int *) arg); ++ int (*dev_ioctl)(struct inode *, struct file *, unsigned int, ++ unsigned long); ++ mm_segment_t fs; ++ struct cow *dev; ++ __u64 size; ++ __u32 version, align; ++ time_t mtime; ++ char *backing_file; ++ int n, offset, err = 0; + -+ return(pread(fd, buf, len, offset)); -+} ++ n = DEVICE_NR(inode->i_rdev); ++ if(n >= MAX_DEV) ++ return(-ENODEV); ++ dev = &cow_dev[n]; ++ offset = n << COW_SHIFT; + -+/* XXX Need to sanity-check the values read from the header */ ++ spin_lock(&cow_lock); + -+int read_cow_header(int (*reader)(__u64, char *, int, void *), void *arg, -+ __u32 *version_out, char **backing_file_out, -+ time_t *mtime_out, __u64 *size_out, -+ int *sectorsize_out, __u32 *align_out, -+ int *bitmap_offset_out) -+{ -+ union cow_header *header; -+ char *file; -+ int err, n; -+ unsigned long version, magic; ++ if(dev->count == 0){ ++ dev->cow_dev = name_to_kdev_t(dev->cow_path); ++ if(dev->cow_dev == 0){ ++ printk(KERN_ERR "cow_open - name_to_kdev_t(\"%s\") " ++ "failed\n", dev->cow_path); ++ err = -ENODEV; ++ } + -+ header = cow_malloc(sizeof(*header)); -+ if(header == NULL){ -+ cow_printf("read_cow_header - Failed to allocate header\n"); -+ return(-ENOMEM); -+ } -+ err = -EINVAL; -+ n = (*reader)(0, (char *) header, sizeof(*header), arg); -+ if(n < offsetof(typeof(header->v1), backing_file)){ -+ cow_printf("read_cow_header - short header\n"); -+ goto out; -+ } ++ dev->backing_dev = name_to_kdev_t(dev->backing_path); ++ if(dev->backing_dev == 0){ ++ printk(KERN_ERR "cow_open - name_to_kdev_t(\"%s\") " ++ "failed\n", dev->backing_path); ++ err = -ENODEV; ++ } + -+ magic = header->v1.magic; -+ if(magic == COW_MAGIC) { -+ version = header->v1.version; -+ } -+ else if(magic == ntohl(COW_MAGIC)){ -+ version = ntohl(header->v1.version); -+ } -+ /* No error printed because the non-COW case comes through here */ -+ else goto out; ++ if(err) ++ goto out; + -+ *version_out = version; ++ dev->cow_bdev = bdget(dev->cow_dev); ++ if(dev->cow_bdev == NULL){ ++ printk(KERN_ERR "cow_open - bdget(\"%s\") failed\n", ++ dev->cow_path); ++ err = -ENOMEM; ++ } ++ dev->backing_bdev = bdget(dev->backing_dev); ++ if(dev->backing_bdev == NULL){ ++ printk(KERN_ERR "cow_open - bdget(\"%s\") failed\n", ++ dev->backing_path); ++ err = -ENOMEM; ++ } + -+ if(version == 1){ -+ if(n < sizeof(header->v1)){ -+ cow_printf("read_cow_header - failed to read V1 " -+ "header\n"); ++ if(err) ++ goto out; ++ ++ err = blkdev_get(dev->cow_bdev, FMODE_READ|FMODE_WRITE, 0, ++ BDEV_RAW); ++ if(err){ ++ printk("cow_open - blkdev_get of COW device failed, " ++ "error = %d\n", err); + goto out; + } -+ *mtime_out = header->v1.mtime; -+ *size_out = header->v1.size; -+ *sectorsize_out = header->v1.sectorsize; -+ *bitmap_offset_out = sizeof(header->v1); -+ *align_out = *sectorsize_out; -+ file = header->v1.backing_file; -+ } -+ else if(version == 2){ -+ if(n < sizeof(header->v2)){ -+ cow_printf("read_cow_header - failed to read V2 " -+ "header\n"); ++ ++ err = blkdev_get(dev->backing_bdev, FMODE_READ, 0, BDEV_RAW); ++ if(err){ ++ printk("cow_open - blkdev_get of backing device " ++ "failed, error = %d\n", err); + goto out; + } -+ *mtime_out = ntohl(header->v2.mtime); -+ *size_out = ntohll(header->v2.size); -+ *sectorsize_out = ntohl(header->v2.sectorsize); -+ *bitmap_offset_out = sizeof(header->v2); -+ *align_out = *sectorsize_out; -+ file = header->v2.backing_file; -+ } -+ else if(version == 3){ -+ if(n < sizeof(header->v3)){ -+ cow_printf("read_cow_header - failed to read V2 " -+ "header\n"); ++ ++ err = read_cow_header(reader, &dev->cow_dev, &version, ++ &backing_file, &mtime, &size, ++ &dev->sectorsize, &align, ++ &dev->bitmap_offset); ++ if(err){ ++ printk(KERN_ERR "cow_open - read_cow_header failed, " ++ "err = %d\n", err); + goto out; + } -+ *mtime_out = ntohl(header->v3.mtime); -+ *size_out = ntohll(header->v3.size); -+ *sectorsize_out = ntohl(header->v3.sectorsize); -+ *align_out = ntohl(header->v3.alignment); -+ *bitmap_offset_out = ROUND_UP(sizeof(header->v3), *align_out); -+ file = header->v3.backing_file; -+ } -+ else { -+ cow_printf("read_cow_header - invalid COW version\n"); -+ goto out; -+ } -+ err = -ENOMEM; -+ *backing_file_out = cow_strdup(file); -+ if(*backing_file_out == NULL){ -+ cow_printf("read_cow_header - failed to allocate backing " -+ "file\n"); -+ goto out; ++ ++ cow_sizes(version, size, dev->sectorsize, align, ++ dev->bitmap_offset, &dev->bitmap_len, ++ &dev->data_offset); ++ dev->bitmap = (void *) vmalloc(dev->bitmap_len); ++ if(dev->bitmap == NULL){ ++ err = -ENOMEM; ++ printk(KERN_ERR "Failed to vmalloc COW bitmap\n"); ++ goto out; ++ } ++ flush_tlb_kernel_vm(); ++ ++ err = reader(dev->bitmap_offset, (char *) dev->bitmap, ++ dev->bitmap_len, &dev->cow_dev); ++ if(err < 0){ ++ printk(KERN_ERR "Failed to read COW bitmap\n"); ++ vfree(dev->bitmap); ++ goto out; ++ } ++ ++ dev_ioctl = dev->backing_bdev->bd_op->ioctl; ++ fs = get_fs(); ++ set_fs(KERNEL_DS); ++ err = (*dev_ioctl)(inode, filp, BLKGETSIZE, ++ (unsigned long) &sizes[offset]); ++ set_fs(fs); ++ if(err){ ++ printk(KERN_ERR "cow_open - BLKGETSIZE failed, " ++ "error = %d\n", err); ++ goto out; ++ } ++ ++ kernel_thread(cow_thread, dev, ++ CLONE_FS | CLONE_FILES | CLONE_SIGHAND); ++ down(&dev->sem); + } -+ err = 0; ++ dev->count++; + out: -+ cow_free(header); ++ spin_unlock(&cow_lock); + return(err); +} + -+int init_cow_file(int fd, char *cow_file, char *backing_file, int sectorsize, -+ int alignment, int *bitmap_offset_out, -+ unsigned long *bitmap_len_out, int *data_offset_out) ++static int cow_release(struct inode * inode, struct file * file) +{ -+ __u64 size, offset; -+ char zero = 0; -+ int err; ++ struct cow *dev; ++ int n, err; + -+ err = write_cow_header(cow_file, fd, backing_file, sectorsize, -+ alignment, &size); -+ if(err) -+ goto out; -+ -+ *bitmap_offset_out = ROUND_UP(sizeof(struct cow_header_v3), alignment); -+ cow_sizes(COW_VERSION, size, sectorsize, alignment, *bitmap_offset_out, -+ bitmap_len_out, data_offset_out); ++ n = DEVICE_NR(inode->i_rdev); ++ if(n >= MAX_DEV) ++ return(-ENODEV); ++ dev = &cow_dev[n]; + -+ offset = *data_offset_out + size - sizeof(zero); -+ err = cow_seek_file(fd, offset); -+ if(err < 0){ -+ cow_printf("cow bitmap lseek failed : err = %d\n", -err); ++ spin_lock(&cow_lock); ++ ++ if(--dev->count > 0) + goto out; ++ ++ err = blkdev_put(dev->cow_bdev, BDEV_RAW); ++ if(err) ++ printk("cow_release - blkdev_put of cow device failed, " ++ "error = %d\n", err); ++ bdput(dev->cow_bdev); ++ dev->cow_bdev = 0; ++ ++ err = blkdev_put(dev->backing_bdev, BDEV_RAW); ++ if(err) ++ printk("cow_release - blkdev_put of backing device failed, " ++ "error = %d\n", err); ++ bdput(dev->backing_bdev); ++ dev->backing_bdev = 0; ++ ++ out: ++ spin_unlock(&cow_lock); ++ return(0); ++} ++ ++static int cow_ioctl(struct inode * inode, struct file * file, ++ unsigned int cmd, unsigned long arg) ++{ ++ struct cow *dev; ++ int (*dev_ioctl)(struct inode *, struct file *, unsigned int, ++ unsigned long); ++ int n; ++ ++ n = DEVICE_NR(inode->i_rdev); ++ if(n >= MAX_DEV) ++ return(-ENODEV); ++ dev = &cow_dev[n]; ++ ++ dev_ioctl = dev->backing_bdev->bd_op->ioctl; ++ return((*dev_ioctl)(inode, file, cmd, arg)); ++} ++ ++static int cow_revalidate(kdev_t rdev) ++{ ++ printk(KERN_ERR "Need to implement cow_revalidate\n"); ++ return(0); ++} ++ ++static int parse_unit(char **ptr) ++{ ++ char *str = *ptr, *end; ++ int n = -1; ++ ++ if(isdigit(*str)) { ++ n = simple_strtoul(str, &end, 0); ++ if(end == str) ++ return(-1); ++ *ptr = end; ++ } ++ else if (('a' <= *str) && (*str <= 'h')) { ++ n = *str - 'a'; ++ str++; ++ *ptr = str; + } ++ return(n); ++} + -+ /* does not really matter how much we write it is just to set EOF -+ * this also sets the entire COW bitmap -+ * to zero without having to allocate it -+ */ -+ err = cow_write_file(fd, &zero, sizeof(zero)); -+ if(err != sizeof(zero)){ -+ cow_printf("Write of bitmap to new COW file '%s' failed, " -+ "err = %d\n", cow_file, -err); -+ err = -EINVAL; -+ goto out; ++static int cow_setup(char *str) ++{ ++ struct cow *dev; ++ char *cow_name, *backing_name; ++ int unit; ++ ++ unit = parse_unit(&str); ++ if(unit < 0){ ++ printk(KERN_ERR "cow_setup - Couldn't parse unit number\n"); ++ return(1); + } + -+ return(0); ++ if(*str != '='){ ++ printk(KERN_ERR "cow_setup - Missing '=' after unit " ++ "number\n"); ++ return(1); ++ } ++ str++; + -+ out: -+ return(err); ++ cow_name = str; ++ backing_name = strchr(str, ','); ++ if(backing_name == NULL){ ++ printk(KERN_ERR "cow_setup - missing backing device name\n"); ++ return(0); ++ } ++ *backing_name = '\0'; ++ backing_name++; ++ ++ spin_lock(&cow_lock); ++ ++ dev = &cow_dev[unit]; ++ dev->cow_path = cow_name; ++ dev->backing_path = backing_name; ++ ++ spin_unlock(&cow_lock); ++ return(0); +} + ++__setup("cow", cow_setup); ++ +/* ++ * 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-file-style: "linux" + * End: + */ -diff -Naur a/arch/um/drivers/daemon_user.c b/arch/um/drivers/daemon_user.c ---- a/arch/um/drivers/daemon_user.c 2004-03-10 08:21:01.000000000 -0500 -+++ b/arch/um/drivers/daemon_user.c 2004-03-10 08:37:44.000000000 -0500 -@@ -53,7 +53,8 @@ - struct request_v3 req; - int fd, n, err; +Index: uml-2.6.7/arch/um/main.c +=================================================================== +--- uml-2.6.7.orig/arch/um/main.c 2004-07-16 19:37:17.425376016 +0300 ++++ uml-2.6.7/arch/um/main.c 2004-07-16 19:47:23.762198808 +0300 +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -123,12 +124,14 @@ -- if((pri->control = socket(AF_UNIX, SOCK_STREAM, 0)) < 0){ -+ pri->control = socket(AF_UNIX, SOCK_STREAM, 0); -+ if(pri->control < 0){ - printk("daemon_open : control socket failed, errno = %d\n", - errno); - return(-errno); -@@ -67,7 +68,8 @@ - goto out; - } + set_stklim(); -- if((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){ -+ fd = socket(AF_UNIX, SOCK_DGRAM, 0); -+ if(fd < 0){ - printk("daemon_open : data socket failed, errno = %d\n", - errno); - err = -errno; -@@ -91,18 +93,18 @@ - req.version = SWITCH_VERSION; - req.type = REQ_NEW_CONTROL; - req.sock = *local_addr; -- n = write(pri->control, &req, sizeof(req)); -+ n = os_write_file(pri->control, &req, sizeof(req)); - if(n != sizeof(req)){ -- printk("daemon_open : control setup request returned %d, " -- "errno = %d\n", n, errno); -+ printk("daemon_open : control setup request failed, err = %d\n", -+ -n); - err = -ENOTCONN; - goto out; +- if((new_argv = malloc((argc + 1) * sizeof(char *))) == NULL){ ++ new_argv = malloc((argc + 1) * sizeof(char *)); ++ if(new_argv == NULL){ + perror("Mallocing argv"); + exit(1); } + for(i=0;i + #include "user_util.h" + #include "uml_uaccess.h" ++#include "task.h" ++#include "kern_util.h" -- n = read(pri->control, sun, sizeof(*sun)); -+ n = os_read_file(pri->control, sun, sizeof(*sun)); - if(n != sizeof(*sun)){ -- printk("daemon_open : read of data socket returned %d, " -- "errno = %d\n", n, errno); -+ printk("daemon_open : read of data socket failed, err = %d\n", -+ -n); - err = -ENOTCONN; - goto out_close; - } -@@ -111,9 +113,9 @@ - return(fd); + int __do_copy_from_user(void *to, const void *from, int n, + void **fault_addr, void **fault_catcher) + { ++ struct tt_regs save = TASK_REGS(get_current())->tt; + unsigned long fault; + int faulted; - out_close: -- close(fd); -+ os_close_file(fd); - out: -- close(pri->control); -+ os_close_file(pri->control); - return(err); + fault = __do_user_copy(to, from, n, fault_addr, fault_catcher, + __do_copy, &faulted); ++ TASK_REGS(get_current())->tt = save; ++ + if(!faulted) return(0); + else return(n - (fault - (unsigned long) from)); } - -@@ -153,8 +155,8 @@ +@@ -29,11 +34,14 @@ + int __do_strncpy_from_user(char *dst, const char *src, unsigned long count, + void **fault_addr, void **fault_catcher) { - struct daemon_data *pri = data; ++ struct tt_regs save = TASK_REGS(get_current())->tt; + unsigned long fault; + int faulted; -- close(pri->fd); -- close(pri->control); -+ os_close_file(pri->fd); -+ os_close_file(pri->control); - if(pri->data_addr != NULL) kfree(pri->data_addr); - if(pri->ctl_addr != NULL) kfree(pri->ctl_addr); - if(pri->local_addr != NULL) kfree(pri->local_addr); -diff -Naur a/arch/um/drivers/fd.c b/arch/um/drivers/fd.c ---- a/arch/um/drivers/fd.c 2004-03-10 08:23:10.000000000 -0500 -+++ b/arch/um/drivers/fd.c 2004-03-10 08:44:21.000000000 -0500 -@@ -35,7 +35,8 @@ - printk("fd_init : couldn't parse file descriptor '%s'\n", str); - return(NULL); - } -- if((data = um_kmalloc(sizeof(*data))) == NULL) return(NULL); -+ data = um_kmalloc(sizeof(*data)); -+ if(data == NULL) return(NULL); - *data = ((struct fd_chan) { .fd = n, - .raw = opts->raw }); - return(data); -diff -Naur a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c ---- a/arch/um/drivers/harddog_user.c 2004-03-10 08:20:54.000000000 -0500 -+++ b/arch/um/drivers/harddog_user.c 2004-03-10 08:36:46.000000000 -0500 -@@ -27,10 +27,10 @@ - dup2(data->stdin, 0); - dup2(data->stdout, 1); - dup2(data->stdout, 2); -- close(data->stdin); -- close(data->stdout); -- close(data->close_me[0]); -- close(data->close_me[1]); -+ os_close_file(data->stdin); -+ os_close_file(data->stdout); -+ os_close_file(data->close_me[0]); -+ os_close_file(data->close_me[1]); + fault = __do_user_copy(dst, src, count, fault_addr, fault_catcher, + __do_strncpy, &faulted); ++ TASK_REGS(get_current())->tt = save; ++ + if(!faulted) return(strlen(dst)); + else return(-1); } +@@ -46,11 +54,14 @@ + int __do_clear_user(void *mem, unsigned long len, + void **fault_addr, void **fault_catcher) + { ++ struct tt_regs save = TASK_REGS(get_current())->tt; + unsigned long fault; + int faulted; - int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) -@@ -44,15 +44,15 @@ - char **args = NULL; + fault = __do_user_copy(mem, NULL, len, fault_addr, fault_catcher, + __do_clear, &faulted); ++ TASK_REGS(get_current())->tt = save; ++ + if(!faulted) return(0); + else return(len - (fault - (unsigned long) mem)); + } +@@ -58,19 +69,20 @@ + int __do_strnlen_user(const char *str, unsigned long n, + void **fault_addr, void **fault_catcher) + { ++ struct tt_regs save = TASK_REGS(get_current())->tt; + int ret; + unsigned long *faddrp = (unsigned long *)fault_addr; + jmp_buf jbuf; - err = os_pipe(in_fds, 1, 0); -- if(err){ -- printk("harddog_open - os_pipe failed, errno = %d\n", -err); -- return(err); -+ if(err < 0){ -+ printk("harddog_open - os_pipe failed, err = %d\n", -err); -+ goto out; - } + *fault_catcher = &jbuf; +- if(setjmp(jbuf) == 0){ ++ if(sigsetjmp(jbuf, 1) == 0) + ret = strlen(str) + 1; +- } +- else { +- ret = *faddrp - (unsigned long) str; +- } ++ else ret = *faddrp - (unsigned long) str; ++ + *fault_addr = NULL; + *fault_catcher = NULL; ++ ++ TASK_REGS(get_current())->tt = save; + return ret; + } - err = os_pipe(out_fds, 1, 0); -- if(err){ -- printk("harddog_open - os_pipe failed, errno = %d\n", -err); -- return(err); -+ if(err < 0){ -+ printk("harddog_open - os_pipe failed, err = %d\n", -err); -+ goto out_close_in; - } +Index: uml-2.6.7/arch/um/kernel/syscall_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/syscall_kern.c 2004-07-16 19:37:08.748695072 +0300 ++++ uml-2.6.7/arch/um/kernel/syscall_kern.c 2004-07-16 19:47:23.737202608 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ - data.stdin = out_fds[0]; -@@ -72,42 +72,47 @@ +@@ -36,32 +36,34 @@ - pid = run_helper(pre_exec, &data, args, NULL); + long sys_fork(void) + { +- struct task_struct *p; ++ long ret; -- close(out_fds[0]); -- close(in_fds[1]); -+ os_close_file(out_fds[0]); -+ os_close_file(in_fds[1]); + current->thread.forking = 1; +- p = do_fork(SIGCHLD, 0, NULL, 0, NULL, NULL); ++ ret = do_fork(SIGCHLD, 0, NULL, 0, NULL, NULL); + current->thread.forking = 0; +- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); ++ return(ret); + } - if(pid < 0){ - err = -pid; -- printk("harddog_open - run_helper failed, errno = %d\n", err); -- goto out; -+ printk("harddog_open - run_helper failed, errno = %d\n", -err); -+ goto out_close_out; - } +-long sys_clone(unsigned long clone_flags, unsigned long newsp) ++long sys_clone(unsigned long clone_flags, unsigned long newsp, ++ int *parent_tid, int *child_tid) + { +- struct task_struct *p; ++ long ret; -- n = read(in_fds[0], &c, sizeof(c)); -+ n = os_read_file(in_fds[0], &c, sizeof(c)); - if(n == 0){ - printk("harddog_open - EOF on watchdog pipe\n"); - helper_wait(pid); - err = -EIO; -- goto out; -+ goto out_close_out; - } - else if(n < 0){ - printk("harddog_open - read of watchdog pipe failed, " -- "errno = %d\n", errno); -+ "err = %d\n", -n); - helper_wait(pid); -- err = -errno; -- goto out; -+ err = n; -+ goto out_close_out; - } - *in_fd_ret = in_fds[0]; - *out_fd_ret = out_fds[1]; - return(0); -+ -+ out_close_in: -+ os_close_file(in_fds[0]); -+ os_close_file(in_fds[1]); -+ out_close_out: -+ os_close_file(out_fds[0]); -+ os_close_file(out_fds[1]); - out: -- close(out_fds[1]); -- close(in_fds[0]); - return(err); + current->thread.forking = 1; +- p = do_fork(clone_flags, newsp, NULL, 0, NULL, NULL); ++ ret = do_fork(clone_flags, newsp, NULL, 0, parent_tid, child_tid); + current->thread.forking = 0; +- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); ++ return(ret); } - void stop_watchdog(int in_fd, int out_fd) + long sys_vfork(void) { -- close(in_fd); -- close(out_fd); -+ os_close_file(in_fd); -+ os_close_file(out_fd); - } +- struct task_struct *p; ++ long ret; - int ping_watchdog(int fd) -@@ -115,11 +120,12 @@ - int n; - char c = '\n'; + current->thread.forking = 1; +- p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL, NULL); ++ ret = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL, ++ NULL); + current->thread.forking = 0; +- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); ++ return(ret); + } -- n = write(fd, &c, sizeof(c)); -- if(n < sizeof(c)){ -- printk("ping_watchdog - write failed, errno = %d\n", -- errno); -- return(-errno); -+ n = os_write_file(fd, &c, sizeof(c)); -+ if(n != sizeof(c)){ -+ printk("ping_watchdog - write failed, err = %d\n", -n); -+ if(n < 0) -+ return(n); -+ return(-EIO); - } - return 1; + /* common code for old and new mmaps */ +@@ -136,43 +138,12 @@ -diff -Naur a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c ---- a/arch/um/drivers/hostaudio_kern.c 2004-03-10 08:23:12.000000000 -0500 -+++ b/arch/um/drivers/hostaudio_kern.c 2004-03-10 08:44:32.000000000 -0500 -@@ -5,12 +5,12 @@ + error = do_pipe(fd); + if (!error) { +- if (copy_to_user(fildes, fd, 2*sizeof(int))) ++ if (copy_to_user(fildes, fd, sizeof(fd))) + error = -EFAULT; + } + return error; + } - #include "linux/config.h" - #include "linux/module.h" --#include "linux/version.h" - #include "linux/init.h" - #include "linux/slab.h" - #include "linux/fs.h" - #include "linux/sound.h" - #include "linux/soundcard.h" -+#include "asm/uaccess.h" - #include "kern_util.h" - #include "init.h" - #include "hostaudio.h" -@@ -19,30 +19,39 @@ - char *dsp = HOSTAUDIO_DEV_DSP; - char *mixer = HOSTAUDIO_DEV_MIXER; - -+#define DSP_HELP \ -+" This is used to specify the host dsp device to the hostaudio driver.\n" \ -+" The default is \"" HOSTAUDIO_DEV_DSP "\".\n\n" -+ -+#define MIXER_HELP \ -+" This is used to specify the host mixer device to the hostaudio driver.\n" \ -+" The default is \"" HOSTAUDIO_DEV_MIXER "\".\n\n" -+ - #ifndef MODULE - static int set_dsp(char *name, int *add) - { -- dsp = uml_strdup(name); -+ dsp = name; - return(0); +-int sys_sigaction(int sig, const struct old_sigaction *act, +- struct old_sigaction *oact) +-{ +- struct k_sigaction new_ka, old_ka; +- int ret; +- +- if (act) { +- old_sigset_t mask; +- if (verify_area(VERIFY_READ, act, sizeof(*act)) || +- __get_user(new_ka.sa.sa_handler, &act->sa_handler) || +- __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) +- return -EFAULT; +- __get_user(new_ka.sa.sa_flags, &act->sa_flags); +- __get_user(mask, &act->sa_mask); +- siginitset(&new_ka.sa.sa_mask, mask); +- } +- +- ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); +- +- if (!ret && oact) { +- if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || +- __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || +- __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) +- return -EFAULT; +- __put_user(old_ka.sa.sa_flags, &oact->sa_flags); +- __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); +- } +- +- return ret; +-} +- + /* + * sys_ipc() is the de-multiplexer for the SysV IPC calls.. + * +@@ -254,7 +225,7 @@ + return sys_shmctl (first, second, + (struct shmid_ds *) ptr); + default: +- return -EINVAL; ++ return -ENOSYS; + } } --__uml_setup("dsp=", set_dsp, --"dsp=\n" --" This is used to specify the host dsp device to the hostaudio driver.\n" --" The default is \"" HOSTAUDIO_DEV_DSP "\".\n\n" --); -+__uml_setup("dsp=", set_dsp, "dsp=\n" DSP_HELP); +@@ -303,11 +274,6 @@ + return error; + } - static int set_mixer(char *name, int *add) +-int sys_sigaltstack(const stack_t *uss, stack_t *uoss) +-{ +- return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs))); +-} +- + long execute_syscall(void *r) { -- mixer = uml_strdup(name); -+ mixer = name; - return(0); - } + return(CHOOSE_MODE_PROC(execute_syscall_tt, execute_syscall_skas, r)); +Index: uml-2.6.7/arch/um/kernel/skas/util/mk_ptregs.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/util/mk_ptregs.c 2004-07-16 19:36:30.635489160 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/util/mk_ptregs.c 2004-07-16 19:47:23.736202760 +0300 +@@ -1,3 +1,4 @@ ++#include + #include + #include --__uml_setup("mixer=", set_mixer, --"mixer=\n" --" This is used to specify the host mixer device to the hostaudio driver.\n" --" The default is \"" HOSTAUDIO_DEV_MIXER "\".\n\n" --); -+__uml_setup("mixer=", set_mixer, "mixer=\n" MIXER_HELP); -+ -+#else /*MODULE*/ -+ -+MODULE_PARM(dsp, "s"); -+MODULE_PARM_DESC(dsp, DSP_HELP); -+ -+MODULE_PARM(mixer, "s"); -+MODULE_PARM_DESC(mixer, MIXER_HELP); +Index: uml-2.6.7/arch/um/kernel/skas/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/Makefile 2004-07-16 19:36:22.285758512 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/Makefile 2004-07-16 19:47:23.729203824 +0300 +@@ -5,20 +5,24 @@ + + obj-y = exec_kern.o exec_user.o mem.o mem_user.o mmu.o process.o \ + process_kern.o syscall_kern.o syscall_user.o time.o tlb.o trap_user.o \ +- sys-$(SUBARCH)/ ++ uaccess.o sys-$(SUBARCH)/ + - #endif ++host-progs := util/mk_ptregs ++clean-files := include/skas_ptregs.h - /* /dev/dsp file operations */ -@@ -51,23 +60,55 @@ - loff_t *ppos) - { - struct hostaudio_state *state = file->private_data; -+ void *kbuf; -+ int err; + USER_OBJS = $(filter %_user.o,$(obj-y)) process.o time.o + USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) - #ifdef DEBUG - printk("hostaudio: read called, count = %d\n", count); +-include/skas_ptregs.h : util/mk_ptregs +- util/mk_ptregs > $@ +- +-util/mk_ptregs : +- $(MAKE) -C util ++$(TOPDIR)/arch/um/include/skas_ptregs.h : $(src)/util/mk_ptregs ++ @echo -n ' Generating $@' ++ @$< > $@.tmp ++ @if [ -r $@ ] && cmp -s $@ $@.tmp; then \ ++ echo ' (unchanged)'; \ ++ rm -f $@.tmp; \ ++ else \ ++ echo ' (updated)'; \ ++ mv -f $@.tmp $@; \ ++ fi + + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +- +-clean : +- $(MAKE) -C util clean +- $(RM) -f include/skas_ptregs.h +Index: uml-2.6.7/include/asm-um/irq.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/irq.h 2004-07-16 19:37:43.396427816 +0300 ++++ uml-2.6.7/include/asm-um/irq.h 2004-07-16 19:47:23.790194552 +0300 +@@ -1,15 +1,6 @@ + #ifndef __UM_IRQ_H + #define __UM_IRQ_H + +-/* The i386 irq.h has a struct task_struct in a prototype without including +- * sched.h. This forward declaration kills the resulting warning. +- */ +-struct task_struct; +- +-#include "asm/ptrace.h" +- +-#undef NR_IRQS +- + #define TIMER_IRQ 0 + #define UMN_IRQ 1 + #define CONSOLE_IRQ 2 +@@ -28,13 +19,4 @@ + #define LAST_IRQ XTERM_IRQ + #define NR_IRQS (LAST_IRQ + 1) + +-extern int um_request_irq(unsigned int irq, int fd, int type, +- void (*handler)(int, void *, struct pt_regs *), +- unsigned long irqflags, const char * devname, +- void *dev_id); +- +-struct irqaction; +-struct pt_regs; +-int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *); +- #endif +Index: uml-2.6.7/arch/um/drivers/line.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/line.c 2004-07-16 19:37:26.186044192 +0300 ++++ uml-2.6.7/arch/um/drivers/line.c 2004-07-16 19:47:23.685210512 +0300 +@@ -6,8 +6,8 @@ + #include "linux/sched.h" + #include "linux/slab.h" + #include "linux/list.h" ++#include "linux/interrupt.h" + #include "linux/devfs_fs_kernel.h" +-#include "asm/irq.h" + #include "asm/uaccess.h" + #include "chan_kern.h" + #include "irq_user.h" +@@ -16,38 +16,55 @@ + #include "user_util.h" + #include "kern_util.h" + #include "os.h" ++#include "irq_kern.h" -- return(hostaudio_read_user(state, buffer, count, ppos)); -+ kbuf = kmalloc(count, GFP_KERNEL); -+ if(kbuf == NULL) -+ return(-ENOMEM); -+ -+ err = hostaudio_read_user(state, kbuf, count, ppos); -+ if(err < 0) -+ goto out; -+ -+ if(copy_to_user(buffer, kbuf, err)) -+ err = -EFAULT; -+ -+ out: -+ kfree(kbuf); -+ return(err); + #define LINE_BUFSIZE 4096 + +-void line_interrupt(int irq, void *data, struct pt_regs *unused) ++static irqreturn_t line_interrupt(int irq, void *data, struct pt_regs *unused) + { + struct line *dev = data; + + if(dev->count > 0) + chan_interrupt(&dev->chan_list, &dev->task, dev->tty, irq, + dev); ++ return IRQ_HANDLED; } - static ssize_t hostaudio_write(struct file *file, const char *buffer, - size_t count, loff_t *ppos) +-void line_timer_cb(void *arg) ++static void line_timer_cb(void *arg) { - struct hostaudio_state *state = file->private_data; -+ void *kbuf; -+ int err; + struct line *dev = arg; - #ifdef DEBUG - printk("hostaudio: write called, count = %d\n", count); - #endif -- return(hostaudio_write_user(state, buffer, count, ppos)); + line_interrupt(dev->driver->read_irq, dev, NULL); + } + +-static void buffer_data(struct line *line, const char *buf, int len) ++static int write_room(struct line *dev) + { +- int end; ++ int n; + -+ kbuf = kmalloc(count, GFP_KERNEL); -+ if(kbuf == NULL) -+ return(-ENOMEM); ++ if(dev->buffer == NULL) return(LINE_BUFSIZE - 1); + -+ err = -EFAULT; -+ if(copy_from_user(kbuf, buffer, count)) -+ goto out; ++ n = dev->head - dev->tail; ++ if(n <= 0) n = LINE_BUFSIZE + n; ++ return(n - 1); ++} + -+ err = hostaudio_write_user(state, kbuf, count, ppos); -+ if(err < 0) -+ goto out; ++static int buffer_data(struct line *line, const char *buf, int len) ++{ ++ int end, room; + + if(line->buffer == NULL){ + line->buffer = kmalloc(LINE_BUFSIZE, GFP_ATOMIC); + if(line->buffer == NULL){ + printk("buffer_data - atomic allocation failed\n"); +- return; ++ return(0); + } + line->head = line->buffer; + line->tail = line->buffer; + } + -+ out: -+ kfree(kbuf); -+ return(err); - } - - static unsigned int hostaudio_poll(struct file *file, -@@ -86,12 +127,43 @@ - unsigned int cmd, unsigned long arg) - { - struct hostaudio_state *state = file->private_data; -+ unsigned long data = 0; -+ int err; - - #ifdef DEBUG - printk("hostaudio: ioctl called, cmd = %u\n", cmd); - #endif -+ switch(cmd){ -+ case SNDCTL_DSP_SPEED: -+ case SNDCTL_DSP_STEREO: -+ case SNDCTL_DSP_GETBLKSIZE: -+ case SNDCTL_DSP_CHANNELS: -+ case SNDCTL_DSP_SUBDIVIDE: -+ case SNDCTL_DSP_SETFRAGMENT: -+ if(get_user(data, (int *) arg)) -+ return(-EFAULT); -+ break; -+ default: -+ break; -+ } -+ -+ err = hostaudio_ioctl_user(state, cmd, (unsigned long) &data); -+ -+ switch(cmd){ -+ case SNDCTL_DSP_SPEED: -+ case SNDCTL_DSP_STEREO: -+ case SNDCTL_DSP_GETBLKSIZE: -+ case SNDCTL_DSP_CHANNELS: -+ case SNDCTL_DSP_SUBDIVIDE: -+ case SNDCTL_DSP_SETFRAGMENT: -+ if(put_user(data, (int *) arg)) -+ return(-EFAULT); -+ break; -+ default: -+ break; -+ } - -- return(hostaudio_ioctl_user(state, cmd, arg)); -+ return(err); - } - - static int hostaudio_open(struct inode *inode, struct file *file) -@@ -225,7 +297,8 @@ - - static int __init hostaudio_init_module(void) - { -- printk(KERN_INFO "UML Audio Relay\n"); -+ printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", -+ dsp, mixer); - - module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); - if(module_data.dev_audio < 0){ -diff -Naur a/arch/um/drivers/hostaudio_user.c b/arch/um/drivers/hostaudio_user.c ---- a/arch/um/drivers/hostaudio_user.c 2004-03-10 08:22:23.000000000 -0500 -+++ b/arch/um/drivers/hostaudio_user.c 2004-03-10 08:41:30.000000000 -0500 -@@ -4,9 +4,6 @@ - */ - - #include --#include --#include --#include - #include - #include - #include "hostaudio.h" -@@ -20,45 +17,31 @@ - ssize_t hostaudio_read_user(struct hostaudio_state *state, char *buffer, - size_t count, loff_t *ppos) - { -- ssize_t ret; -- - #ifdef DEBUG - printk("hostaudio: read_user called, count = %d\n", count); - #endif - -- ret = read(state->fd, buffer, count); -- -- if(ret < 0) return(-errno); -- return(ret); -+ return(os_read_file(state->fd, buffer, count)); - } - - ssize_t hostaudio_write_user(struct hostaudio_state *state, const char *buffer, - size_t count, loff_t *ppos) - { -- ssize_t ret; -- - #ifdef DEBUG - printk("hostaudio: write_user called, count = %d\n", count); - #endif - -- ret = write(state->fd, buffer, count); -- -- if(ret < 0) return(-errno); -- return(ret); -+ return(os_write_file(state->fd, buffer, count)); - } - - int hostaudio_ioctl_user(struct hostaudio_state *state, unsigned int cmd, - unsigned long arg) - { -- int ret; - #ifdef DEBUG - printk("hostaudio: ioctl_user called, cmd = %u\n", cmd); - #endif - -- ret = ioctl(state->fd, cmd, arg); -- -- if(ret < 0) return(-errno); -- return(ret); -+ return(os_ioctl_generic(state->fd, cmd, arg)); - } - - int hostaudio_open_user(struct hostaudio_state *state, int r, int w, char *dsp) -@@ -67,14 +50,15 @@ - printk("hostaudio: open_user called\n"); - #endif - -- state->fd = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); -- -- if(state->fd >= 0) return(0); -+ state->fd = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); - -- printk("hostaudio_open_user failed to open '%s', errno = %d\n", -- dsp, errno); -+ if(state->fd < 0) { -+ printk("hostaudio_open_user failed to open '%s', err = %d\n", -+ dsp, -state->fd); -+ return(state->fd); -+ } - -- return(-errno); -+ return(0); - } - - int hostaudio_release_user(struct hostaudio_state *state) -@@ -82,10 +66,10 @@ - #ifdef DEBUG - printk("hostaudio: release called\n"); - #endif -- if(state->fd >= 0){ -- close(state->fd); -- state->fd=-1; -- } -+ if(state->fd >= 0){ -+ os_close_file(state->fd); -+ state->fd = -1; -+ } - - return(0); - } -@@ -95,15 +79,11 @@ - int hostmixer_ioctl_mixdev_user(struct hostmixer_state *state, - unsigned int cmd, unsigned long arg) - { -- int ret; - #ifdef DEBUG - printk("hostmixer: ioctl_user called cmd = %u\n",cmd); - #endif - -- ret = ioctl(state->fd, cmd, arg); -- if(ret < 0) -- return(-errno); -- return(ret); -+ return(os_ioctl_generic(state->fd, cmd, arg)); - } - - int hostmixer_open_mixdev_user(struct hostmixer_state *state, int r, int w, -@@ -115,12 +95,13 @@ - - state->fd = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); - -- if(state->fd >= 0) return(0); -- -- printk("hostaudio_open_mixdev_user failed to open '%s', errno = %d\n", -- mixer, errno); -+ if(state->fd < 0) { -+ printk("hostaudio_open_mixdev_user failed to open '%s', " -+ "err = %d\n", mixer, state->fd); -+ return(state->fd); -+ } - -- return(-errno); -+ return(0); - } - - int hostmixer_release_mixdev_user(struct hostmixer_state *state) -@@ -130,7 +111,7 @@ - #endif - - if(state->fd >= 0){ -- close(state->fd); -+ os_close_file(state->fd); - state->fd = -1; - } - -diff -Naur a/arch/um/drivers/line.c b/arch/um/drivers/line.c ---- a/arch/um/drivers/line.c 2004-03-10 08:22:46.000000000 -0500 -+++ b/arch/um/drivers/line.c 2004-03-10 08:43:26.000000000 -0500 -@@ -6,8 +6,8 @@ - #include "linux/sched.h" - #include "linux/slab.h" - #include "linux/list.h" -+#include "linux/interrupt.h" - #include "linux/devfs_fs_kernel.h" --#include "asm/irq.h" - #include "asm/uaccess.h" - #include "chan_kern.h" - #include "irq_user.h" -@@ -16,38 +16,55 @@ - #include "user_util.h" - #include "kern_util.h" - #include "os.h" -+#include "irq_kern.h" - - #define LINE_BUFSIZE 4096 - --void line_interrupt(int irq, void *data, struct pt_regs *unused) -+static irqreturn_t line_interrupt(int irq, void *data, struct pt_regs *unused) - { - struct line *dev = data; - - if(dev->count > 0) - chan_interrupt(&dev->chan_list, &dev->task, dev->tty, irq, - dev); -+ return IRQ_HANDLED; - } - --void line_timer_cb(void *arg) -+static void line_timer_cb(void *arg) - { - struct line *dev = arg; - - line_interrupt(dev->driver->read_irq, dev, NULL); - } - --static void buffer_data(struct line *line, const char *buf, int len) -+static int write_room(struct line *dev) - { -- int end; -+ int n; -+ -+ if(dev->buffer == NULL) return(LINE_BUFSIZE - 1); -+ -+ n = dev->head - dev->tail; -+ if(n <= 0) n = LINE_BUFSIZE + n; -+ return(n - 1); -+} -+ -+static int buffer_data(struct line *line, const char *buf, int len) -+{ -+ int end, room; - - if(line->buffer == NULL){ - line->buffer = kmalloc(LINE_BUFSIZE, GFP_ATOMIC); - if(line->buffer == NULL){ - printk("buffer_data - atomic allocation failed\n"); -- return; -+ return(0); - } - line->head = line->buffer; - line->tail = line->buffer; - } -+ -+ room = write_room(line); -+ len = (len > room) ? room : len; -+ - end = line->buffer + LINE_BUFSIZE - line->tail; - if(len < end){ - memcpy(line->tail, buf, len); -@@ -60,6 +77,8 @@ - memcpy(line->buffer, buf, len); - line->tail = line->buffer + len; - } -+ -+ return(len); ++ room = write_room(line); ++ len = (len > room) ? room : len; ++ + end = line->buffer + LINE_BUFSIZE - line->tail; + if(len < end){ + memcpy(line->tail, buf, len); +@@ -60,6 +77,8 @@ + memcpy(line->buffer, buf, len); + line->tail = line->buffer + len; + } ++ ++ return(len); } static int flush_buffer(struct line *line) @@ -2671,1237 +2226,1527 @@ diff -Naur a/arch/um/drivers/line.c b/arch/um/drivers/line.c if(winch->pid != -1) os_kill_process(winch->pid, 1); } -diff -Naur a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile ---- a/arch/um/drivers/Makefile 2004-03-10 08:21:31.000000000 -0500 -+++ b/arch/um/drivers/Makefile 2004-03-10 08:40:04.000000000 -0500 -@@ -1,5 +1,5 @@ - # --# Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com) -+# Copyright (C) 2000, 2002, 2003 Jeff Dike (jdike@karaya.com) - # Licensed under the GPL - # - -@@ -39,6 +39,8 @@ - obj-$(CONFIG_TTY_CHAN) += tty.o - obj-$(CONFIG_XTERM_CHAN) += xterm.o xterm_kern.o - obj-$(CONFIG_UML_WATCHDOG) += harddog.o -+obj-$(CONFIG_BLK_DEV_COW) += cow_kern.o -+obj-$(CONFIG_BLK_DEV_COW_COMMON) += cow_user.o +Index: uml-2.6.7/arch/um/kernel/tt/process_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/process_kern.c 2004-07-16 19:37:20.233949048 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/process_kern.c 2004-07-16 19:47:23.746201240 +0300 +@@ -62,7 +62,7 @@ + reading = 0; + err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); + if(err != sizeof(c)) +- panic("write of switch_pipe failed, errno = %d", -err); ++ panic("write of switch_pipe failed, err = %d", -err); - obj-y += stdio_console.o $(CHAN_OBJS) + reading = 1; + if((from->state == TASK_ZOMBIE) || (from->state == TASK_DEAD)) +@@ -104,48 +104,72 @@ -@@ -46,18 +48,7 @@ - - USER_OBJS := $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) fd.o \ - null.o pty.o tty.o xterm.o --USER_OBJS := $(foreach file,$(USER_OBJS),arch/um/drivers/$(file)) -+USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) + void release_thread_tt(struct task_struct *task) + { +- os_kill_process(task->thread.mode.tt.extern_pid, 0); ++ int pid = task->thread.mode.tt.extern_pid; ++ ++ if(os_getpid() != pid) ++ os_kill_process(pid, 0); + } - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean: -- --modules: -- --fastdep: -- --dep: -- --archmrproper: clean -- -diff -Naur a/arch/um/drivers/mcast_user.c b/arch/um/drivers/mcast_user.c ---- a/arch/um/drivers/mcast_user.c 2004-03-10 08:21:29.000000000 -0500 -+++ b/arch/um/drivers/mcast_user.c 2004-03-10 08:39:39.000000000 -0500 -@@ -23,6 +23,7 @@ - #include "kern_util.h" - #include "user_util.h" - #include "user.h" -+#include "os.h" + void exit_thread_tt(void) + { +- close(current->thread.mode.tt.switch_pipe[0]); +- close(current->thread.mode.tt.switch_pipe[1]); ++ os_close_file(current->thread.mode.tt.switch_pipe[0]); ++ os_close_file(current->thread.mode.tt.switch_pipe[1]); + } - #define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER) + void schedule_tail(task_t *prev); -@@ -62,7 +63,8 @@ - goto out; - } + static void new_thread_handler(int sig) + { ++ unsigned long disable; + int (*fn)(void *); + void *arg; -- if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){ -+ fd = socket(AF_INET, SOCK_DGRAM, 0); -+ if (fd < 0){ - printk("mcast_open : data socket failed, errno = %d\n", - errno); - fd = -ENOMEM; -@@ -72,7 +74,7 @@ - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0) { - printk("mcast_open: SO_REUSEADDR failed, errno = %d\n", - errno); -- close(fd); -+ os_close_file(fd); - fd = -EINVAL; - goto out; - } -@@ -82,7 +84,7 @@ - sizeof(pri->ttl)) < 0) { - printk("mcast_open: IP_MULTICAST_TTL failed, error = %d\n", - errno); -- close(fd); -+ os_close_file(fd); - fd = -EINVAL; - goto out; - } -@@ -91,7 +93,7 @@ - if (setsockopt(fd, SOL_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes)) < 0) { - printk("mcast_open: IP_MULTICAST_LOOP failed, error = %d\n", - errno); -- close(fd); -+ os_close_file(fd); - fd = -EINVAL; - goto out; - } -@@ -99,7 +101,7 @@ - /* bind socket to mcast address */ - if (bind(fd, (struct sockaddr *) sin, sizeof(*sin)) < 0) { - printk("mcast_open : data bind failed, errno = %d\n", errno); -- close(fd); -+ os_close_file(fd); - fd = -EINVAL; - goto out; - } -@@ -115,7 +117,7 @@ - "interface on the host.\n"); - printk("eth0 should be configured in order to use the " - "multicast transport.\n"); -- close(fd); -+ os_close_file(fd); - fd = -EINVAL; - } + fn = current->thread.request.u.thread.proc; + arg = current->thread.request.u.thread.arg; ++ + UPT_SC(¤t->thread.regs.regs) = (void *) (&sig + 1); ++ disable = (1 << (SIGVTALRM - 1)) | (1 << (SIGALRM - 1)) | ++ (1 << (SIGIO - 1)) | (1 << (SIGPROF - 1)); ++ SC_SIGMASK(UPT_SC(¤t->thread.regs.regs)) &= ~disable; ++ + suspend_new_thread(current->thread.mode.tt.switch_pipe[0]); -@@ -137,7 +139,7 @@ - errno); - } +- block_signals(); ++ force_flush_all(); ++ if(current->thread.prev_sched != NULL) ++ schedule_tail(current->thread.prev_sched); ++ current->thread.prev_sched = NULL; ++ + init_new_thread_signals(1); +-#ifdef CONFIG_SMP +- schedule_tail(current->thread.prev_sched); +-#endif + enable_timer(); + free_page(current->thread.temp_stack); + set_cmdline("(kernel thread)"); +- force_flush_all(); -- close(fd); -+ os_close_file(fd); +- current->thread.prev_sched = NULL; + change_sig(SIGUSR1, 1); + change_sig(SIGVTALRM, 1); + change_sig(SIGPROF, 1); +- unblock_signals(); ++ local_irq_enable(); + if(!run_kernel_thread(fn, arg, ¤t->thread.exec_buf)) + do_exit(0); } - int mcast_user_write(int fd, void *buf, int len, struct mcast_data *pri) -diff -Naur a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c ---- a/arch/um/drivers/mconsole_kern.c 2004-03-10 08:20:15.000000000 -0500 -+++ b/arch/um/drivers/mconsole_kern.c 2004-03-10 08:33:56.000000000 -0500 -@@ -1,6 +1,6 @@ - /* - * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) -- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL + static int new_thread_proc(void *stack) + { ++ /* local_irq_disable is needed to block out signals until this thread is ++ * properly scheduled. Otherwise, the tracing thread will get mighty ++ * upset about any signals that arrive before that. ++ * This has the complication that it sets the saved signal mask in ++ * the sigcontext to block signals. This gets restored when this ++ * thread (or a descendant, since they get a copy of this sigcontext) ++ * returns to userspace. ++ * So, this is compensated for elsewhere. ++ * XXX There is still a small window until local_irq_disable() actually ++ * finishes where signals are possible - shouldn't be a problem in ++ * practice since SIGIO hasn't been forwarded here yet, and the ++ * local_irq_disable should finish before a SIGVTALRM has time to be ++ * delivered. ++ */ ++ ++ local_irq_disable(); + init_new_thread_stack(stack, new_thread_handler); + os_usr1_process(os_getpid()); + return(0); +@@ -156,7 +180,7 @@ + * itself with a SIGUSR1. set_user_mode has to be run with SIGUSR1 off, + * so it is blocked before it's called. They are re-enabled on sigreturn + * despite the fact that they were blocked when the SIGUSR1 was issued because +- * copy_thread copies the parent's signcontext, including the signal mask ++ * copy_thread copies the parent's sigcontext, including the signal mask + * onto the signal frame. */ -@@ -15,6 +15,9 @@ - #include "linux/sysrq.h" - #include "linux/workqueue.h" - #include "linux/module.h" -+#include "linux/file.h" -+#include "linux/fs.h" -+#include "linux/namei.h" - #include "linux/proc_fs.h" - #include "asm/irq.h" - #include "asm/uaccess.h" -@@ -27,6 +30,7 @@ - #include "init.h" - #include "os.h" - #include "umid.h" -+#include "irq_kern.h" +@@ -165,35 +189,32 @@ + UPT_SC(¤t->thread.regs.regs) = (void *) (&sig + 1); + suspend_new_thread(current->thread.mode.tt.switch_pipe[0]); - static int do_unlink_socket(struct notifier_block *notifier, - unsigned long what, void *data) -@@ -67,7 +71,7 @@ +-#ifdef CONFIG_SMP +- schedule_tail(NULL); +-#endif ++ force_flush_all(); ++ if(current->thread.prev_sched != NULL) ++ schedule_tail(current->thread.prev_sched); ++ current->thread.prev_sched = NULL; ++ + enable_timer(); + change_sig(SIGVTALRM, 1); + local_irq_enable(); +- force_flush_all(); + if(current->mm != current->parent->mm) + protect_memory(uml_reserved, high_physmem - uml_reserved, 1, + 1, 0, 1); +- task_protections((unsigned long) current->thread_info); +- +- current->thread.prev_sched = NULL; ++ task_protections((unsigned long) current_thread); - DECLARE_WORK(mconsole_work, mc_work_proc, NULL); + free_page(current->thread.temp_stack); ++ local_irq_disable(); + change_sig(SIGUSR1, 0); + set_user_mode(current); + } --void mconsole_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+irqreturn_t mconsole_interrupt(int irq, void *dev_id, struct pt_regs *regs) +-static int sigusr1 = SIGUSR1; +- + int fork_tramp(void *stack) { - int fd; - struct mconsole_entry *new; -@@ -75,9 +79,10 @@ +- int sig = sigusr1; +- + local_irq_disable(); ++ arch_init_thread(); + init_new_thread_stack(stack, finish_fork_handler); - fd = (int) dev_id; - while (mconsole_get_request(fd, &req)){ -- if(req.cmd->as_interrupt) (*req.cmd->handler)(&req); -+ if(req.cmd->context == MCONSOLE_INTR) -+ (*req.cmd->handler)(&req); - else { -- new = kmalloc(sizeof(req), GFP_ATOMIC); -+ new = kmalloc(sizeof(*new), GFP_ATOMIC); - if(new == NULL) - mconsole_reply(&req, "Out of memory", 1, 0); - else { -@@ -88,6 +93,7 @@ - } - if(!list_empty(&mc_requests)) schedule_work(&mconsole_work); - reactivate_fd(fd, MCONSOLE_IRQ); -+ return(IRQ_HANDLED); +- kill(os_getpid(), sig); ++ os_usr1_process(os_getpid()); + return(0); } - void mconsole_version(struct mc_request *req) -@@ -100,20 +106,109 @@ - mconsole_reply(req, version, 0, 0); - } +@@ -213,8 +234,8 @@ + } -+void mconsole_log(struct mc_request *req) -+{ -+ int len; -+ char *ptr = req->request.data; -+ -+ ptr += strlen("log "); -+ -+ len = req->len - (ptr - req->request.data); -+ printk("%.*s", len, ptr); -+ mconsole_reply(req, "", 0, 0); -+} -+ -+void mconsole_proc(struct mc_request *req) -+{ -+ struct nameidata nd; -+ struct file_system_type *proc; -+ struct super_block *super; -+ struct file *file; -+ int n, err; -+ char *ptr = req->request.data, *buf; -+ -+ ptr += strlen("proc"); -+ while(isspace(*ptr)) ptr++; -+ -+ proc = get_fs_type("proc"); -+ if(proc == NULL){ -+ mconsole_reply(req, "procfs not registered", 1, 0); -+ goto out; -+ } + err = os_pipe(p->thread.mode.tt.switch_pipe, 1, 1); +- if(err){ +- printk("copy_thread : pipe failed, errno = %d\n", -err); ++ if(err < 0){ ++ printk("copy_thread : pipe failed, err = %d\n", -err); + return(err); + } + +@@ -377,8 +398,8 @@ + + pages = (1 << CONFIG_KERNEL_STACK_ORDER); + +- start = (unsigned long) current->thread_info + PAGE_SIZE; +- end = (unsigned long) current + PAGE_SIZE * pages; ++ start = (unsigned long) current_thread + PAGE_SIZE; ++ end = (unsigned long) current_thread + PAGE_SIZE * pages; + protect_memory(uml_reserved, start - uml_reserved, 1, w, 1, 1); + protect_memory(end, high_physmem - end, 1, w, 1, 1); + +@@ -454,8 +475,9 @@ + + init_task.thread.mode.tt.extern_pid = pid; + err = os_pipe(init_task.thread.mode.tt.switch_pipe, 1, 1); +- if(err) panic("Can't create switch pipe for init_task, errno = %d", +- err); ++ if(err) ++ panic("Can't create switch pipe for init_task, errno = %d", ++ -err); + } + + int singlestepping_tt(void *t) +Index: uml-2.6.7/arch/um/include/2_5compat.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/2_5compat.h 2004-07-16 19:36:37.163496752 +0300 ++++ uml-2.6.7/arch/um/include/2_5compat.h 2004-07-16 19:47:23.700208232 +0300 +@@ -6,20 +6,6 @@ + #ifndef __2_5_COMPAT_H__ + #define __2_5_COMPAT_H__ + +-#include "linux/version.h" +- +-#define INIT_CONSOLE(dev_name, write_proc, device_proc, setup_proc, f) { \ +- name : dev_name, \ +- write : write_proc, \ +- read : NULL, \ +- device : device_proc, \ +- setup : setup_proc, \ +- flags : f, \ +- index : -1, \ +- cflag : 0, \ +- next : NULL \ +-} +- + #define INIT_HARDSECT(arr, maj, sizes) + + #define SET_PRI(task) do ; while(0) +Index: uml-2.6.7/fs/hostfs/Makefile +=================================================================== +--- uml-2.6.7.orig/fs/hostfs/Makefile 2004-07-16 19:47:23.631218720 +0300 ++++ uml-2.6.7/fs/hostfs/Makefile 2004-07-16 19:47:23.784195464 +0300 +@@ -0,0 +1,26 @@ ++# ++# Copyright (C) 2000 Jeff Dike (jdike@karaya.com) ++# Licensed under the GPL ++# + -+ super = (*proc->get_sb)(proc, 0, NULL, NULL); -+ put_filesystem(proc); -+ if(super == NULL){ -+ mconsole_reply(req, "Failed to get procfs superblock", 1, 0); -+ goto out; -+ } -+ up_write(&super->s_umount); ++# struct stat64 changed the inode field name between 2.2 and 2.4 from st_ino ++# to __st_ino. It stayed in the same place, so as long as the correct name ++# is used, hostfs compiled on 2.2 should work on 2.4 and vice versa. + -+ nd.dentry = super->s_root; -+ nd.mnt = NULL; -+ nd.flags = O_RDONLY + 1; -+ nd.last_type = LAST_ROOT; ++STAT64_INO_FIELD := $(shell grep -q __st_ino /usr/include/bits/stat.h && \ ++ echo __)st_ino + -+ err = link_path_walk(ptr, &nd); -+ if(err){ -+ mconsole_reply(req, "Failed to look up file", 1, 0); -+ goto out_kill; -+ } ++hostfs-objs := hostfs_kern.o hostfs_user.o + -+ file = dentry_open(nd.dentry, nd.mnt, O_RDONLY); -+ if(IS_ERR(file)){ -+ mconsole_reply(req, "Failed to open file", 1, 0); -+ goto out_kill; -+ } ++obj-y = ++obj-$(CONFIG_HOSTFS) += hostfs.o + -+ buf = kmalloc(PAGE_SIZE, GFP_KERNEL); -+ if(buf == NULL){ -+ mconsole_reply(req, "Failed to allocate buffer", 1, 0); -+ goto out_fput; -+ } ++SINGLE_OBJS = $(foreach f,$(patsubst %.o,%,$(obj-y) $(obj-m)),$($(f)-objs)) + -+ if((file->f_op != NULL) && (file->f_op->read != NULL)){ -+ do { -+ n = (*file->f_op->read)(file, buf, PAGE_SIZE - 1, -+ &file->f_pos); -+ if(n >= 0){ -+ buf[n] = '\0'; -+ mconsole_reply(req, buf, 0, (n > 0)); -+ } -+ else { -+ mconsole_reply(req, "Read of file failed", -+ 1, 0); -+ goto out_free; -+ } -+ } while(n > 0); -+ } -+ else mconsole_reply(req, "", 0, 0); ++USER_OBJS := $(filter %_user.o,$(obj-y) $(obj-m) $(SINGLE_OBJS)) ++USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) + -+ out_free: -+ kfree(buf); -+ out_fput: -+ fput(file); -+ out_kill: -+ deactivate_super(super); -+ out: ; -+} ++USER_CFLAGS += -DSTAT64_INO_FIELD=$(STAT64_INO_FIELD) + - #define UML_MCONSOLE_HELPTEXT \ --"Commands: -- version - Get kernel version -- help - Print this message -- halt - Halt UML -- reboot - Reboot UML -- config = - Add a new device to UML; -- same syntax as command line -- config - Query the configuration of a device -- remove - Remove a device from UML -- sysrq - Performs the SysRq action controlled by the letter -- cad - invoke the Ctl-Alt-Del handler -- stop - pause the UML; it will do nothing until it receives a 'go' -- go - continue the UML after a 'stop' -+"Commands: \n\ -+ version - Get kernel version \n\ -+ help - Print this message \n\ -+ halt - Halt UML \n\ -+ reboot - Reboot UML \n\ -+ config = - Add a new device to UML; \n\ -+ same syntax as command line \n\ -+ config - Query the configuration of a device \n\ -+ remove - Remove a device from UML \n\ -+ sysrq - Performs the SysRq action controlled by the letter \n\ -+ cad - invoke the Ctl-Alt-Del handler \n\ -+ stop - pause the UML; it will do nothing until it receives a 'go' \n\ -+ go - continue the UML after a 'stop' \n\ -+ log - make UML enter into the kernel log\n\ -+ proc - returns the contents of the UML's /proc/\n\ - " - - void mconsole_help(struct mc_request *req) -@@ -302,7 +397,7 @@ - if(umid_file_name("mconsole", file, sizeof(file))) return(-1); - snprintf(mconsole_socket_name, sizeof(file), "%s", file); - -- sock = create_unix_socket(file, sizeof(file)); -+ sock = os_create_unix_socket(file, sizeof(file), 1); - if (sock < 0){ - printk("Failed to initialize management console\n"); - return(1); -@@ -344,11 +439,16 @@ - if(buf == NULL) - return(-ENOMEM); ++$(USER_OBJS) : %.o: %.c ++ $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +Index: uml-2.6.7/arch/um/kernel/skas/mmu.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/mmu.c 2004-07-16 19:37:51.994120768 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/mmu.c 2004-07-16 19:47:23.730203672 +0300 +@@ -22,9 +22,11 @@ + else from = -1; -- if(copy_from_user(buf, buffer, count)) -- return(-EFAULT); -+ if(copy_from_user(buf, buffer, count)){ -+ count = -EFAULT; -+ goto out; + mm->context.skas.mm_fd = new_mm(from); +- if(mm->context.skas.mm_fd < 0) +- panic("init_new_context_skas - new_mm failed, errno = %d\n", +- mm->context.skas.mm_fd); ++ if(mm->context.skas.mm_fd < 0){ ++ printk("init_new_context_skas - new_mm failed, errno = %d\n", ++ mm->context.skas.mm_fd); ++ return(mm->context.skas.mm_fd); + } -+ - buf[count] = '\0'; - mconsole_notify(notify_socket, MCONSOLE_USER_NOTIFY, buf, count); -+ out: -+ kfree(buf); - return(count); + return(0); } +Index: uml-2.6.7/arch/um/kernel/skas/sys-i386/sigcontext.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/sys-i386/sigcontext.c 2004-07-16 19:35:56.079742432 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/sys-i386/sigcontext.c 2004-07-16 19:47:23.733203216 +0300 +@@ -12,10 +12,9 @@ + #include "kern_util.h" + #include "user.h" + #include "sigcontext.h" ++#include "mode.h" -diff -Naur a/arch/um/drivers/mconsole_user.c b/arch/um/drivers/mconsole_user.c ---- a/arch/um/drivers/mconsole_user.c 2004-03-10 08:20:26.000000000 -0500 -+++ b/arch/um/drivers/mconsole_user.c 2004-03-10 08:35:23.000000000 -0500 -@@ -1,6 +1,6 @@ - /* - * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) -- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ +-extern int userspace_pid; +- +-int copy_sc_from_user_skas(union uml_pt_regs *regs, void *from_ptr) ++int copy_sc_from_user_skas(int pid, union uml_pt_regs *regs, void *from_ptr) + { + struct sigcontext sc, *from = from_ptr; + unsigned long fpregs[FP_FRAME_SIZE]; +@@ -41,13 +40,12 @@ + regs->skas.regs[EIP] = sc.eip; + regs->skas.regs[CS] = sc.cs; + regs->skas.regs[EFL] = sc.eflags; +- regs->skas.regs[UESP] = sc.esp_at_signal; + regs->skas.regs[SS] = sc.ss; + regs->skas.fault_addr = sc.cr2; + regs->skas.fault_type = FAULT_WRITE(sc.err); + regs->skas.trap_type = sc.trapno; -@@ -18,16 +18,18 @@ - #include "umid.h" +- err = ptrace(PTRACE_SETFPREGS, userspace_pid, 0, fpregs); ++ err = ptrace(PTRACE_SETFPREGS, pid, 0, fpregs); + if(err < 0){ + printk("copy_sc_to_user - PTRACE_SETFPREGS failed, " + "errno = %d\n", errno); +@@ -57,8 +55,9 @@ + return(0); + } - static struct mconsole_command commands[] = { -- { "version", mconsole_version, 1 }, -- { "halt", mconsole_halt, 0 }, -- { "reboot", mconsole_reboot, 0 }, -- { "config", mconsole_config, 0 }, -- { "remove", mconsole_remove, 0 }, -- { "sysrq", mconsole_sysrq, 1 }, -- { "help", mconsole_help, 1 }, -- { "cad", mconsole_cad, 1 }, -- { "stop", mconsole_stop, 0 }, -- { "go", mconsole_go, 1 }, -+ { "version", mconsole_version, MCONSOLE_INTR }, -+ { "halt", mconsole_halt, MCONSOLE_PROC }, -+ { "reboot", mconsole_reboot, MCONSOLE_PROC }, -+ { "config", mconsole_config, MCONSOLE_PROC }, -+ { "remove", mconsole_remove, MCONSOLE_PROC }, -+ { "sysrq", mconsole_sysrq, MCONSOLE_INTR }, -+ { "help", mconsole_help, MCONSOLE_INTR }, -+ { "cad", mconsole_cad, MCONSOLE_INTR }, -+ { "stop", mconsole_stop, MCONSOLE_PROC }, -+ { "go", mconsole_go, MCONSOLE_INTR }, -+ { "log", mconsole_log, MCONSOLE_INTR }, -+ { "proc", mconsole_proc, MCONSOLE_PROC }, - }; - - /* Initialized in mconsole_init, which is an initcall */ -@@ -139,6 +141,7 @@ - memcpy(reply.data, str, len); - reply.data[len] = '\0'; - total -= len; -+ str += len; - reply.len = len + 1; +-int copy_sc_to_user_skas(void *to_ptr, void *fp, union uml_pt_regs *regs, +- unsigned long fault_addr, int fault_type) ++int copy_sc_to_user_skas(int pid, void *to_ptr, void *fp, ++ union uml_pt_regs *regs, unsigned long fault_addr, ++ int fault_type) + { + struct sigcontext sc, *to = to_ptr; + struct _fpstate *to_fp; +@@ -86,7 +85,7 @@ + sc.err = TO_SC_ERR(fault_type); + sc.trapno = regs->skas.trap_type; - len = sizeof(reply) + reply.len - sizeof(reply.data); -diff -Naur a/arch/um/drivers/mmapper_kern.c b/arch/um/drivers/mmapper_kern.c ---- a/arch/um/drivers/mmapper_kern.c 2004-03-10 08:20:25.000000000 -0500 -+++ b/arch/um/drivers/mmapper_kern.c 2004-03-10 08:35:08.000000000 -0500 -@@ -120,7 +120,10 @@ - printk(KERN_INFO "Mapper v0.1\n"); +- err = ptrace(PTRACE_GETFPREGS, userspace_pid, 0, fpregs); ++ err = ptrace(PTRACE_GETFPREGS, pid, 0, fpregs); + if(err < 0){ + printk("copy_sc_to_user - PTRACE_GETFPREGS failed, " + "errno = %d\n", errno); +Index: uml-2.6.7/arch/um/kernel/skas/process.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/process.c 2004-07-16 19:37:38.120229920 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/process.c 2004-07-16 19:47:24.793042096 +0300 +@@ -4,6 +4,7 @@ + */ - v_buf = (char *) find_iomem("mmapper", &mmapper_size); -- if(mmapper_size == 0) return(0); -+ if(mmapper_size == 0){ -+ printk(KERN_ERR "mmapper_init - find_iomem failed\n"); + #include ++#include + #include + #include + #include +@@ -24,6 +25,19 @@ + #include "os.h" + #include "proc_mm.h" + #include "skas_ptrace.h" ++#include "chan_user.h" ++#include "signal_user.h" ++ ++int is_skas_winch(int pid, int fd, void *data) ++{ ++ if(pid != getpid()) + return(0); -+ } - - p_buf = __pa(v_buf); ++ ++ register_winch_irq(-1, fd, -1, data); ++ return(1); ++} ++ ++/* These are set once at boot time and not changed thereafter */ -diff -Naur a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c ---- a/arch/um/drivers/net_kern.c 2004-03-10 08:21:07.000000000 -0500 -+++ b/arch/um/drivers/net_kern.c 2004-03-10 08:38:42.000000000 -0500 -@@ -26,6 +26,7 @@ - #include "mconsole_kern.h" - #include "init.h" - #include "irq_user.h" -+#include "irq_kern.h" + unsigned long exec_regs[FRAME_SIZE]; + unsigned long exec_fp_regs[HOST_FP_SIZE]; +@@ -43,37 +57,39 @@ + segv(fault.addr, 0, FAULT_WRITE(fault.is_write), 1, NULL); + } - static spinlock_t opened_lock = SPIN_LOCK_UNLOCKED; - LIST_HEAD(opened); -@@ -37,7 +38,8 @@ - struct sk_buff *skb; +-static void handle_trap(int pid, union uml_pt_regs *regs) ++/*To use the same value of using_sysemu as the caller, ask it that value (in local_using_sysemu)*/ ++static void handle_trap(int pid, union uml_pt_regs *regs, int local_using_sysemu) + { + int err, syscall_nr, status; - /* If we can't allocate memory, try again next round. */ -- if ((skb = dev_alloc_skb(dev->mtu)) == NULL) { -+ skb = dev_alloc_skb(dev->mtu); -+ if (skb == NULL) { - lp->stats.rx_dropped++; - return 0; + syscall_nr = PT_SYSCALL_NR(regs->skas.regs); ++ UPT_SYSCALL_NR(regs) = syscall_nr; + if(syscall_nr < 1){ + relay_signal(SIGTRAP, regs); + return; } -@@ -61,14 +63,14 @@ - return pkt_len; - } +- UPT_SYSCALL_NR(regs) = syscall_nr; --void uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+irqreturn_t uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) - { - struct net_device *dev = dev_id; - struct uml_net_private *lp = dev->priv; - int err; +- err = ptrace(PTRACE_POKEUSER, pid, PT_SYSCALL_NR_OFFSET, __NR_getpid); +- if(err < 0) +- panic("handle_trap - nullifying syscall failed errno = %d\n", +- errno); ++ if (!local_using_sysemu) ++ { ++ err = ptrace(PTRACE_POKEUSER, pid, PT_SYSCALL_NR_OFFSET, __NR_getpid); ++ if(err < 0) ++ panic("handle_trap - nullifying syscall failed errno = %d\n", ++ errno); - if(!netif_running(dev)) -- return; -+ return(IRQ_NONE); +- err = ptrace(PTRACE_SYSCALL, pid, 0, 0); +- if(err < 0) +- panic("handle_trap - continuing to end of syscall failed, " +- "errno = %d\n", errno); +- +- err = waitpid(pid, &status, WUNTRACED); +- if((err < 0) || !WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) +- panic("handle_trap - failed to wait at end of syscall, " +- "errno = %d, status = %d\n", errno, status); ++ err = ptrace(PTRACE_SYSCALL, pid, 0, 0); ++ if(err < 0) ++ panic("handle_trap - continuing to end of syscall failed, " ++ "errno = %d\n", errno); ++ ++ CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED)); ++ if((err < 0) || !WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) ++ panic("handle_trap - failed to wait at end of syscall, " ++ "errno = %d, status = %d\n", errno, status); ++ } - spin_lock(&lp->lock); - while((err = uml_net_rx(dev)) > 0) ; -@@ -83,6 +85,7 @@ + handle_syscall(regs); + } - out: - spin_unlock(&lp->lock); -+ return(IRQ_HANDLED); +-int userspace_pid; +- + static int userspace_tramp(void *arg) + { + init_new_thread_signals(0); +@@ -83,7 +99,11 @@ + return(0); } - static int uml_net_open(struct net_device *dev) -@@ -252,37 +255,6 @@ - #endif +-void start_userspace(void) ++/* Each element set once, and only accessed by a single processor anyway */ ++#define NR_CPUS 1 ++int userspace_pid[NR_CPUS]; ++ ++void start_userspace(int cpu) + { + void *stack; + unsigned long sp; +@@ -101,7 +121,7 @@ + panic("start_userspace : clone failed, errno = %d", errno); + + do { +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0) + panic("start_userspace : wait failed, errno = %d", + errno); +@@ -114,21 +134,27 @@ + if(munmap(stack, PAGE_SIZE) < 0) + panic("start_userspace : munmap failed, errno = %d\n", errno); + +- userspace_pid = pid; ++ userspace_pid[cpu] = pid; } --/* -- * default do nothing hard header packet routines for struct net_device init. -- * real ethernet transports will overwrite with real routines. -- */ --static int uml_net_hard_header(struct sk_buff *skb, struct net_device *dev, -- unsigned short type, void *daddr, void *saddr, unsigned len) --{ -- return(0); /* no change */ --} -- --static int uml_net_rebuild_header(struct sk_buff *skb) --{ -- return(0); /* ignore */ --} -- --static int uml_net_header_cache(struct neighbour *neigh, struct hh_cache *hh) --{ -- return(-1); /* fail */ --} -- --static void uml_net_header_cache_update(struct hh_cache *hh, -- struct net_device *dev, unsigned char * haddr) --{ -- /* ignore */ --} -- --static int uml_net_header_parse(struct sk_buff *skb, unsigned char *haddr) --{ -- return(0); /* nothing */ --} -- - static spinlock_t devices_lock = SPIN_LOCK_UNLOCKED; - static struct list_head devices = LIST_HEAD_INIT(devices); + void userspace(union uml_pt_regs *regs) + { +- int err, status, op; ++ int err, status, op, pid = userspace_pid[0]; ++ int local_using_sysemu; /*To prevent races if using_sysemu changes under us.*/ -@@ -292,7 +264,7 @@ - struct uml_net *device; - struct net_device *dev; - struct uml_net_private *lp; -- int err, size; -+ int save, err, size; + restore_registers(regs); + +- err = ptrace(PTRACE_SYSCALL, userspace_pid, 0, 0); ++ local_using_sysemu = get_using_sysemu(); ++ ++ if (local_using_sysemu) ++ err = ptrace(PTRACE_SYSEMU, pid, 0, 0); ++ else ++ err = ptrace(PTRACE_SYSCALL, pid, 0, 0); + if(err) + panic("userspace - PTRACE_SYSCALL failed, errno = %d\n", + errno); + while(1){ +- err = waitpid(userspace_pid, &status, WUNTRACED); ++ CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED)); + if(err < 0) + panic("userspace - waitpid failed, errno = %d\n", + errno); +@@ -139,16 +165,17 @@ + if(WIFSTOPPED(status)){ + switch(WSTOPSIG(status)){ + case SIGSEGV: +- handle_segv(userspace_pid); ++ handle_segv(pid); + break; + case SIGTRAP: +- handle_trap(userspace_pid, regs); ++ handle_trap(pid, regs, local_using_sysemu); + break; + case SIGIO: + case SIGVTALRM: + case SIGILL: + case SIGBUS: + case SIGFPE: ++ case SIGWINCH: + user_signal(WSTOPSIG(status), regs); + break; + default: +@@ -160,9 +187,17 @@ - size = transport->private_size + sizeof(struct uml_net_private) + - sizeof(((struct uml_net_private *) 0)->user); -@@ -334,12 +306,6 @@ - snprintf(dev->name, sizeof(dev->name), "eth%d", n); - device->dev = dev; + restore_registers(regs); -- dev->hard_header = uml_net_hard_header; -- dev->rebuild_header = uml_net_rebuild_header; -- dev->hard_header_cache = uml_net_header_cache; -- dev->header_cache_update= uml_net_header_cache_update; -- dev->hard_header_parse = uml_net_header_parse; -- - (*transport->kern->init)(dev, init); +- op = singlestepping_skas() ? PTRACE_SINGLESTEP : +- PTRACE_SYSCALL; +- err = ptrace(op, userspace_pid, 0, 0); ++ /*Now we ended the syscall, so re-read local_using_sysemu.*/ ++ local_using_sysemu = get_using_sysemu(); ++ ++ if (local_using_sysemu) ++ op = singlestepping_skas() ? PTRACE_SINGLESTEP : ++ PTRACE_SYSEMU; ++ else ++ op = singlestepping_skas() ? PTRACE_SINGLESTEP : ++ PTRACE_SYSCALL; ++ ++ err = ptrace(op, pid, 0, 0); + if(err) + panic("userspace - PTRACE_SYSCALL failed, " + "errno = %d\n", errno); +@@ -172,13 +207,25 @@ + void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr, + void (*handler)(int)) + { ++ unsigned long flags; + jmp_buf switch_buf, fork_buf; - dev->mtu = transport->user->max_packet; -@@ -366,21 +332,29 @@ - } - lp = dev->priv; + *switch_buf_ptr = &switch_buf; + *fork_buf_ptr = &fork_buf; -- INIT_LIST_HEAD(&lp->list); -- spin_lock_init(&lp->lock); -- lp->dev = dev; -- lp->fd = -1; -- lp->mac = { 0xfe, 0xfd, 0x0, 0x0, 0x0, 0x0 }; -- lp->have_mac = device->have_mac; -- lp->protocol = transport->kern->protocol; -- lp->open = transport->user->open; -- lp->close = transport->user->close; -- lp->remove = transport->user->remove; -- lp->read = transport->kern->read; -- lp->write = transport->kern->write; -- lp->add_address = transport->user->add_address; -- lp->delete_address = transport->user->delete_address; -- lp->set_mtu = transport->user->set_mtu; -+ /* lp.user is the first four bytes of the transport data, which -+ * has already been initialized. This structure assignment will -+ * overwrite that, so we make sure that .user gets overwritten with -+ * what it already has. +- if(setjmp(fork_buf) == 0) ++ /* Somewhat subtle - siglongjmp restores the signal mask before doing ++ * the longjmp. This means that when jumping from one stack to another ++ * when the target stack has interrupts enabled, an interrupt may occur ++ * on the source stack. This is bad when starting up a process because ++ * it's not supposed to get timer ticks until it has been scheduled. ++ * So, we disable interrupts around the sigsetjmp to ensure that ++ * they can't happen until we get back here where they are safe. + */ -+ save = lp->user[0]; -+ *lp = ((struct uml_net_private) -+ { .list = LIST_HEAD_INIT(lp->list), -+ .lock = SPIN_LOCK_UNLOCKED, -+ .dev = dev, -+ .fd = -1, -+ .mac = { 0xfe, 0xfd, 0x0, 0x0, 0x0, 0x0}, -+ .have_mac = device->have_mac, -+ .protocol = transport->kern->protocol, -+ .open = transport->user->open, -+ .close = transport->user->close, -+ .remove = transport->user->remove, -+ .read = transport->kern->read, -+ .write = transport->kern->write, -+ .add_address = transport->user->add_address, -+ .delete_address = transport->user->delete_address, -+ .set_mtu = transport->user->set_mtu, -+ .user = { save } }); ++ flags = get_signals(); ++ block_signals(); ++ if(sigsetjmp(fork_buf, 1) == 0) + new_thread_proc(stack, handler); ++ set_signals(flags); - init_timer(&lp->tl); - lp->tl.function = uml_net_user_timer_expire; -@@ -613,7 +587,8 @@ - unregister_netdev(dev); + remove_sigstack(); + } +@@ -189,16 +236,16 @@ - list_del(&device->list); -- free_netdev(device); -+ kfree(device); -+ free_netdev(dev); - return(0); + *switch_buf = &buf; + fork_buf = fb; +- if(setjmp(buf) == 0) +- longjmp(*fork_buf, 1); ++ if(sigsetjmp(buf, 1) == 0) ++ siglongjmp(*fork_buf, 1); } -diff -Naur a/arch/um/drivers/net_user.c b/arch/um/drivers/net_user.c ---- a/arch/um/drivers/net_user.c 2004-03-10 08:20:29.000000000 -0500 -+++ b/arch/um/drivers/net_user.c 2004-03-10 08:35:36.000000000 -0500 -@@ -26,8 +26,7 @@ - if(gate_addr == NULL) return(0); - if(sscanf(gate_addr, "%d.%d.%d.%d", &tap_addr[0], - &tap_addr[1], &tap_addr[2], &tap_addr[3]) != 4){ -- printk("Invalid tap IP address - '%s'\n", -- gate_addr); -+ printk("Invalid tap IP address - '%s'\n", gate_addr); - return(-EINVAL); - } +-static int move_registers(int int_op, int fp_op, union uml_pt_regs *regs, +- unsigned long *fp_regs) ++static int move_registers(int pid, int int_op, int fp_op, ++ union uml_pt_regs *regs, unsigned long *fp_regs) + { +- if(ptrace(int_op, userspace_pid, 0, regs->skas.regs) < 0) ++ if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) + return(-errno); +- if(ptrace(fp_op, userspace_pid, 0, fp_regs) < 0) ++ if(ptrace(fp_op, pid, 0, fp_regs) < 0) + return(-errno); return(0); -@@ -60,18 +59,18 @@ + } +@@ -217,10 +264,11 @@ + fp_regs = regs->skas.fp; } - - *output = '\0'; -- if(read(fd, &remain, sizeof(remain)) != sizeof(remain)){ -- printk("read_output - read of length failed, errno = %d\n", -- errno); -+ n = os_read_file(fd, &remain, sizeof(remain)); -+ if(n != sizeof(remain)){ -+ printk("read_output - read of length failed, err = %d\n", -n); - return; + +- err = move_registers(PTRACE_GETREGS, fp_op, regs, fp_regs); ++ err = move_registers(userspace_pid[0], PTRACE_GETREGS, fp_op, regs, ++ fp_regs); + if(err) + panic("save_registers - saving registers failed, errno = %d\n", +- err); ++ -err); + } + + void restore_registers(union uml_pt_regs *regs) +@@ -237,10 +285,11 @@ + fp_regs = regs->skas.fp; } - while(remain != 0){ - n = (remain < len) ? remain : len; -- actual = read(fd, output, n); -+ actual = os_read_file(fd, output, n); - if(actual != n){ - printk("read_output - read of data failed, " -- "errno = %d\n", errno); -+ "err = %d\n", -actual); - return; - } - remain -= actual; -@@ -83,13 +82,12 @@ - { +- err = move_registers(PTRACE_SETREGS, fp_op, regs, fp_regs); ++ err = move_registers(userspace_pid[0], PTRACE_SETREGS, fp_op, regs, ++ fp_regs); + if(err) + panic("restore_registers - saving registers failed, " +- "errno = %d\n", err); ++ "errno = %d\n", -err); + } + + void switch_threads(void *me, void *next) +@@ -248,8 +297,8 @@ + jmp_buf my_buf, **me_ptr = me, *next_buf = next; + + *me_ptr = &my_buf; +- if(setjmp(my_buf) == 0) +- longjmp(*next_buf, 1); ++ if(sigsetjmp(my_buf, 1) == 0) ++ siglongjmp(*next_buf, 1); + } + + static jmp_buf initial_jmpbuf; +@@ -265,14 +314,14 @@ int n; -- while(((n = read(fd, buf, len)) < 0) && (errno == EINTR)) ; -+ n = os_read_file(fd, buf, len); + *fork_buf_ptr = &initial_jmpbuf; +- n = setjmp(initial_jmpbuf); ++ n = sigsetjmp(initial_jmpbuf, 1); + if(n == 0) + new_thread_proc((void *) stack, new_thread_handler); + else if(n == 1) + remove_sigstack(); + else if(n == 2){ + (*cb_proc)(cb_arg); +- longjmp(*cb_back, 1); ++ siglongjmp(*cb_back, 1); + } + else if(n == 3){ + kmalloc_ok = 0; +@@ -282,7 +331,7 @@ + kmalloc_ok = 0; + return(1); + } +- longjmp(**switch_buf, 1); ++ siglongjmp(**switch_buf, 1); + } -- if(n < 0){ -- if(errno == EAGAIN) return(0); -- return(-errno); -- } -- else if(n == 0) return(-ENOTCONN); -+ if(n == -EAGAIN) -+ return(0); -+ else if(n == 0) -+ return(-ENOTCONN); - return(n); + void remove_sigstack(void) +@@ -304,8 +353,8 @@ + cb_back = &here; + + block_signals(); +- if(setjmp(here) == 0) +- longjmp(initial_jmpbuf, 2); ++ if(sigsetjmp(here, 1) == 0) ++ siglongjmp(initial_jmpbuf, 2); + unblock_signals(); + + cb_proc = NULL; +@@ -316,22 +365,23 @@ + void halt_skas(void) + { + block_signals(); +- longjmp(initial_jmpbuf, 3); ++ siglongjmp(initial_jmpbuf, 3); } -@@ -112,13 +110,13 @@ + void reboot_skas(void) { - int n; + block_signals(); +- longjmp(initial_jmpbuf, 4); ++ siglongjmp(initial_jmpbuf, 4); + } -- while(((n = write(fd, buf, len)) < 0) && (errno == EINTR)) ; -- if(n < 0){ -- if(errno == EAGAIN) return(0); + int new_mm(int from) + { + struct proc_mm_op copy; +- int n, fd = os_open_file("/proc/mm", of_write(OPENFLAGS()), 0); ++ int n, fd = os_open_file("/proc/mm", ++ of_cloexec(of_write(OPENFLAGS())), 0); + + if(fd < 0) - return(-errno); -- } -- else if(n == 0) return(-ENOTCONN); -- return(n); -+ n = os_write_file(fd, buf, len); ++ return(fd); + + if(from != -1){ + copy = ((struct proc_mm_op) { .op = MM_COPY_SEGMENTS, +@@ -340,8 +390,9 @@ + n = os_write_file(fd, ©, sizeof(copy)); + if(n != sizeof(copy)) + printk("new_mm : /proc/mm copy_segments failed, " +- "errno = %d\n", errno); ++ "err = %d\n", -n); + } + -+ if(n == -EAGAIN) -+ return(0); -+ else if(n == 0) -+ return(-ENOTCONN); -+ return(n); + return(fd); } - int net_send(int fd, void *buf, int len) -@@ -157,7 +155,7 @@ +@@ -349,7 +400,8 @@ { - struct change_pre_exec_data *data = arg; + int err; -- close(data->close_me); -+ os_close_file(data->close_me); - dup2(data->stdout, 1); +- err = ptrace(PTRACE_SWITCH_MM, userspace_pid, 0, mm_fd); ++#warning need cpu pid in switch_mm_skas ++ err = ptrace(PTRACE_SWITCH_MM, userspace_pid[0], 0, mm_fd); + if(err) + panic("switch_mm_skas - PTRACE_SWITCH_MM failed, errno = %d\n", + errno); +@@ -357,7 +409,8 @@ + + void kill_off_processes_skas(void) + { +- os_kill_process(userspace_pid, 1); ++#warning need to loop over userspace_pids in kill_off_processes_skas ++ os_kill_process(userspace_pid[0], 1); } -@@ -167,15 +165,15 @@ - struct change_pre_exec_data pe_data; + void init_registers(int pid) +Index: uml-2.6.7/arch/um/os-Linux/tty.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/tty.c 2004-07-16 19:36:54.138916096 +0300 ++++ uml-2.6.7/arch/um/os-Linux/tty.c 2004-07-16 19:47:23.769197744 +0300 +@@ -28,10 +28,10 @@ + struct grantpt_info info; + int fd; - err = os_pipe(fds, 1, 0); -- if(err){ -- printk("change_tramp - pipe failed, errno = %d\n", -err); -+ if(err < 0){ -+ printk("change_tramp - pipe failed, err = %d\n", -err); - return(err); +- if((fd = os_open_file("/dev/ptmx", of_rdwr(OPENFLAGS()), 0)) < 0){ +- printk("get_pty : Couldn't open /dev/ptmx - errno = %d\n", +- errno); +- return(-1); ++ fd = os_open_file("/dev/ptmx", of_rdwr(OPENFLAGS()), 0); ++ if(fd < 0){ ++ printk("get_pty : Couldn't open /dev/ptmx - err = %d\n", -fd); ++ return(fd); } - pe_data.close_me = fds[0]; - pe_data.stdout = fds[1]; - pid = run_helper(change_pre_exec, &pe_data, argv, NULL); -- close(fds[1]); -+ os_close_file(fds[1]); - read_output(fds[0], output, output_len); - waitpid(pid, NULL, 0); - return(pid); -diff -Naur a/arch/um/drivers/null.c b/arch/um/drivers/null.c ---- a/arch/um/drivers/null.c 2004-03-10 08:20:23.000000000 -0500 -+++ b/arch/um/drivers/null.c 2004-03-10 08:34:50.000000000 -0500 -@@ -5,7 +5,6 @@ + info.fd = fd; +@@ -39,7 +39,7 @@ - #include - #include --#include - #include "chan_user.h" - #include "os.h" + if(info.res < 0){ + printk("get_pty : Couldn't grant pty - errno = %d\n", +- info.err); ++ -info.err); + return(-1); + } + if(unlockpt(fd) < 0){ +Index: uml-2.6.7/arch/um/sys-ia64/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-ia64/Makefile 2004-07-16 19:35:55.505829680 +0300 ++++ uml-2.6.7/arch/um/sys-ia64/Makefile 2004-07-16 19:47:23.778196376 +0300 +@@ -7,18 +7,5 @@ + $(OBJ): $(OBJS) + rm -f $@ + $(LD) $(LINKFLAGS) --start-group $^ --end-group -o $@ +-clean: +- rm -f $(OBJS) -diff -Naur a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c ---- a/arch/um/drivers/port_kern.c 2004-03-10 08:20:18.000000000 -0500 -+++ b/arch/um/drivers/port_kern.c 2004-03-10 08:34:16.000000000 -0500 -@@ -6,6 +6,7 @@ - #include "linux/list.h" - #include "linux/sched.h" - #include "linux/slab.h" -+#include "linux/interrupt.h" - #include "linux/irq.h" - #include "linux/spinlock.h" - #include "linux/errno.h" -@@ -14,6 +15,7 @@ - #include "kern_util.h" - #include "kern.h" - #include "irq_user.h" -+#include "irq_kern.h" - #include "port.h" - #include "init.h" - #include "os.h" -@@ -38,21 +40,21 @@ - struct connection { - struct list_head list; - int fd; -- int helper_pid; -+ int helper_pid; - int socket[2]; - int telnetd_pid; - struct port_list *port; - }; +-fastdep: +- +-archmrproper: +- +-archclean: +- rm -f link.ld +- @$(MAKEBOOT) clean +- +-archdep: +- @$(MAKEBOOT) dep +- +-modules: ++clean-files := $(OBJS) link.ld +Index: uml-2.6.7/arch/um/sys-i386/util/mk_sc.c +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/util/mk_sc.c 2004-07-16 19:37:26.086059392 +0300 ++++ uml-2.6.7/arch/um/sys-i386/util/mk_sc.c 2004-07-16 19:47:23.778196376 +0300 +@@ -38,6 +38,7 @@ + SC_OFFSET("SC_ERR", err); + SC_OFFSET("SC_CR2", cr2); + SC_OFFSET("SC_FPSTATE", fpstate); ++ SC_OFFSET("SC_SIGMASK", oldmask); + SC_FP_OFFSET("SC_FP_CW", cw); + SC_FP_OFFSET("SC_FP_SW", sw); + SC_FP_OFFSET("SC_FP_TAG", tag); +Index: uml-2.6.7/arch/um/sys-i386/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/Makefile 2004-07-16 19:36:05.106370176 +0300 ++++ uml-2.6.7/arch/um/sys-i386/Makefile 2004-07-16 19:47:23.772197288 +0300 +@@ -1,7 +1,8 @@ +-obj-y = bugs.o checksum.o extable.o fault.o ksyms.o ldt.o module.o \ +- ptrace.o ptrace_user.o semaphore.o sigcontext.o syscalls.o sysrq.o ++obj-y = bugs.o checksum.o fault.o ksyms.o ldt.o ptrace.o ptrace_user.o \ ++ semaphore.o sigcontext.o syscalls.o sysrq.o time.o --static void pipe_interrupt(int irq, void *data, struct pt_regs *regs) -+static irqreturn_t pipe_interrupt(int irq, void *data, struct pt_regs *regs) - { - struct connection *conn = data; - int fd; + obj-$(CONFIG_HIGHMEM) += highmem.o ++obj-$(CONFIG_MODULES) += module.o -- fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); -+ fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); - if(fd < 0){ - if(fd == -EAGAIN) -- return; -+ return(IRQ_NONE); + USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o + USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) +@@ -9,6 +10,8 @@ + SYMLINKS = semaphore.c highmem.c module.c + SYMLINKS := $(foreach f,$(SYMLINKS),$(src)/$f) - printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n", - -fd); -@@ -65,6 +67,7 @@ - list_add(&conn->list, &conn->port->connections); ++clean-files := $(SYMLINKS) ++ + semaphore.c-dir = kernel + highmem.c-dir = mm + module.c-dir = kernel +@@ -24,19 +27,4 @@ + $(SYMLINKS): + $(call make_link,$@) - up(&conn->port->sem); -+ return(IRQ_HANDLED); - } +-clean: +- $(MAKE) -C util clean +- +-fastdep: +- +-dep: +- +-archmrproper: +- rm -f $(SYMLINKS) +- +-archclean: +- +-archdep: +- +-modules: +- ++subdir- := util +Index: uml-2.6.7/arch/um/kernel/signal_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/signal_kern.c 2004-07-16 19:36:51.321344432 +0300 ++++ uml-2.6.7/arch/um/kernel/signal_kern.c 2004-07-16 19:47:23.726204280 +0300 +@@ -36,7 +36,7 @@ + if(sig == SIGSEGV){ + struct k_sigaction *ka; - static int port_accept(struct port_list *port) -@@ -102,8 +105,7 @@ +- ka = ¤t->sig->action[SIGSEGV - 1]; ++ ka = ¤t->sighand->action[SIGSEGV - 1]; + ka->sa.sa_handler = SIG_DFL; } + force_sig(SIGSEGV, current); +@@ -60,10 +60,10 @@ + int err, ret; - list_add(&conn->list, &port->pending); -- ret = 1; -- goto out; -+ return(1); + ret = 0; ++ /* Always make any pending restarted system calls return -EINTR */ ++ current_thread_info()->restart_block.fn = do_no_restart_syscall; + switch(error){ + case -ERESTART_RESTARTBLOCK: +- current_thread_info()->restart_block.fn = +- do_no_restart_syscall; + case -ERESTARTNOHAND: + ret = -EINTR; + break; +@@ -142,7 +142,7 @@ + return(0); - out_free: - kfree(conn); -@@ -138,12 +140,13 @@ + /* Whee! Actually deliver the signal. */ +- ka = ¤t->sig->action[sig -1 ]; ++ ka = ¤t->sighand->action[sig -1 ]; + err = handle_signal(regs, sig, ka, &info, oldset, error); + if(!err) return(1); - DECLARE_WORK(port_work, port_work_proc, NULL); +@@ -201,7 +201,7 @@ + } + } --static void port_interrupt(int irq, void *data, struct pt_regs *regs) -+static irqreturn_t port_interrupt(int irq, void *data, struct pt_regs *regs) +-int sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize) ++int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) { - struct port_list *port = data; - - port->has_connection = 1; - schedule_work(&port_work); -+ return(IRQ_HANDLED); - } + sigset_t saveset, newset; - void *port_data(int port_num) -diff -Naur a/arch/um/drivers/port_user.c b/arch/um/drivers/port_user.c ---- a/arch/um/drivers/port_user.c 2004-03-10 08:21:50.000000000 -0500 -+++ b/arch/um/drivers/port_user.c 2004-03-10 08:40:48.000000000 -0500 -@@ -47,10 +47,12 @@ - return(NULL); +@@ -227,20 +227,59 @@ } - -- if((kern_data = port_data(port)) == NULL) -+ kern_data = port_data(port); -+ if(kern_data == NULL) - return(NULL); - -- if((data = um_kmalloc(sizeof(*data))) == NULL) -+ data = um_kmalloc(sizeof(*data)); -+ if(data == NULL) - goto err; - - *data = ((struct port_chan) { .raw = opts->raw, -@@ -90,7 +92,7 @@ - struct port_chan *data = d; - - port_remove_dev(data->kernel_data); -- close(fd); -+ os_close_file(fd); } - int port_console_write(int fd, const char *buf, int n, void *d) -@@ -130,11 +132,15 @@ - goto out; - } - -- if((listen(fd, 1) < 0) || (os_set_fd_block(fd, 0))){ -+ if(listen(fd, 1) < 0){ - err = -errno; - goto out; - } - -+ err = os_set_fd_block(fd, 0); -+ if(err < 0) -+ goto out; ++int sys_sigaction(int sig, const struct old_sigaction __user *act, ++ struct old_sigaction __user *oact) ++{ ++ struct k_sigaction new_ka, old_ka; ++ int ret; + - return(fd); - out: - os_close_file(fd); -@@ -153,10 +159,10 @@ - dup2(data->sock_fd, 0); - dup2(data->sock_fd, 1); - dup2(data->sock_fd, 2); -- close(data->sock_fd); -+ os_close_file(data->sock_fd); - dup2(data->pipe_fd, 3); - os_shutdown_socket(3, 1, 0); -- close(data->pipe_fd); -+ os_close_file(data->pipe_fd); - } - - int port_connection(int fd, int *socket, int *pid_out) -@@ -166,11 +172,12 @@ - "/usr/lib/uml/port-helper", NULL }; - struct port_pre_exec_data data; - -- if((new = os_accept_connection(fd)) < 0) -- return(-errno); -+ new = os_accept_connection(fd); -+ if(new < 0) -+ return(new); - - err = os_pipe(socket, 0, 0); -- if(err) -+ if(err < 0) - goto out_close; - - data = ((struct port_pre_exec_data) -@@ -186,11 +193,11 @@ - - out_shutdown: - os_shutdown_socket(socket[0], 1, 1); -- close(socket[0]); -+ os_close_file(socket[0]); - os_shutdown_socket(socket[1], 1, 1); -- close(socket[1]); -+ os_close_file(socket[1]); - out_close: -- close(new); -+ os_close_file(new); - return(err); - } - -diff -Naur a/arch/um/drivers/pty.c b/arch/um/drivers/pty.c ---- a/arch/um/drivers/pty.c 2004-03-10 08:22:45.000000000 -0500 -+++ b/arch/um/drivers/pty.c 2004-03-10 08:43:23.000000000 -0500 -@@ -7,12 +7,12 @@ - #include - #include - #include --#include - #include - #include "chan_user.h" - #include "user.h" - #include "user_util.h" - #include "kern_util.h" -+#include "os.h" - - struct pty_chan { - void (*announce)(char *dev_name, int dev); -@@ -26,7 +26,8 @@ ++ if (act) { ++ old_sigset_t mask; ++ if (verify_area(VERIFY_READ, act, sizeof(*act)) || ++ __get_user(new_ka.sa.sa_handler, &act->sa_handler) || ++ __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) ++ return -EFAULT; ++ __get_user(new_ka.sa.sa_flags, &act->sa_flags); ++ __get_user(mask, &act->sa_mask); ++ siginitset(&new_ka.sa.sa_mask, mask); ++ } ++ ++ ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); ++ ++ if (!ret && oact) { ++ if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || ++ __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || ++ __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) ++ return -EFAULT; ++ __put_user(old_ka.sa.sa_flags, &oact->sa_flags); ++ __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); ++ } ++ ++ return ret; ++} ++ ++int sys_sigaltstack(const stack_t *uss, stack_t *uoss) ++{ ++ return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs))); ++} ++ ++extern int userspace_pid[]; ++ + static int copy_sc_from_user(struct pt_regs *to, void *from, + struct arch_frame_data *arch) { - struct pty_chan *data; - -- if((data = um_kmalloc(sizeof(*data))) == NULL) return(NULL); -+ data = um_kmalloc(sizeof(*data)); -+ if(data == NULL) return(NULL); - *data = ((struct pty_chan) { .announce = opts->announce, - .dev = device, - .raw = opts->raw }); -@@ -39,7 +40,8 @@ - char *dev; - int fd; + int ret; -- if((fd = get_pty()) < 0){ -+ fd = get_pty(); -+ if(fd < 0){ - printk("open_pts : Failed to open pts\n"); - return(-errno); - } -@@ -57,29 +59,27 @@ + ret = CHOOSE_MODE(copy_sc_from_user_tt(UPT_SC(&to->regs), from, arch), +- copy_sc_from_user_skas(&to->regs, from)); ++ copy_sc_from_user_skas(userspace_pid[0], ++ &to->regs, from)); + return(ret); + } - int getmaster(char *line) + int sys_sigreturn(struct pt_regs regs) { -- struct stat stb; - char *pty, *bank, *cp; -- int master; -+ int master, err; +- void *sc = sp_to_sc(PT_REGS_SP(¤t->thread.regs)); +- void *mask = sp_to_mask(PT_REGS_SP(¤t->thread.regs)); ++ void __user *sc = sp_to_sc(PT_REGS_SP(¤t->thread.regs)); ++ void __user *mask = sp_to_mask(PT_REGS_SP(¤t->thread.regs)); + int sig_size = (_NSIG_WORDS - 1) * sizeof(unsigned long); - pty = &line[strlen("/dev/ptyp")]; - for (bank = "pqrs"; *bank; bank++) { - line[strlen("/dev/pty")] = *bank; - *pty = '0'; -- if (stat(line, &stb) < 0) -+ if (os_stat_file(line, NULL) < 0) - break; - for (cp = "0123456789abcdef"; *cp; cp++) { - *pty = *cp; -- master = open(line, O_RDWR); -+ master = os_open_file(line, of_rdwr(OPENFLAGS()), 0); - if (master >= 0) { - char *tp = &line[strlen("/dev/")]; -- int ok; + spin_lock_irq(¤t->sighand->siglock); +@@ -257,8 +296,8 @@ - /* verify slave side is usable */ - *tp = 't'; -- ok = access(line, R_OK|W_OK) == 0; -+ err = os_access(line, OS_ACC_RW_OK); - *tp = 'p'; -- if (ok) return(master); -- (void) close(master); -+ if(err == 0) return(master); -+ (void) os_close_file(master); - } - } - } -diff -Naur a/arch/um/drivers/slip_user.c b/arch/um/drivers/slip_user.c ---- a/arch/um/drivers/slip_user.c 2004-03-10 08:22:45.000000000 -0500 -+++ b/arch/um/drivers/slip_user.c 2004-03-10 08:43:23.000000000 -0500 -@@ -4,11 +4,9 @@ - #include - #include - #include --#include - #include - #include - #include --#include - #include - #include "user_util.h" - #include "kern_util.h" -@@ -65,9 +63,9 @@ + int sys_rt_sigreturn(struct pt_regs regs) { - struct slip_pre_exec_data *data = arg; +- struct ucontext *uc = sp_to_uc(PT_REGS_SP(¤t->thread.regs)); +- void *fp; ++ unsigned long sp = PT_REGS_SP(¤t->thread.regs); ++ struct ucontext __user *uc = sp_to_uc(sp); + int sig_size = _NSIG_WORDS * sizeof(unsigned long); -- if(data->stdin != -1) dup2(data->stdin, 0); -+ if(data->stdin >= 0) dup2(data->stdin, 0); - dup2(data->stdout, 1); -- if(data->close_me != -1) close(data->close_me); -+ if(data->close_me >= 0) os_close_file(data->close_me); + spin_lock_irq(¤t->sighand->siglock); +@@ -266,7 +305,6 @@ + sigdelsetmask(¤t->blocked, ~_BLOCKABLE); + recalc_sigpending(); + spin_unlock_irq(¤t->sighand->siglock); +- fp = (void *) (((unsigned long) uc) + sizeof(struct ucontext)); + copy_sc_from_user(¤t->thread.regs, &uc->uc_mcontext, + &signal_frame_si.common.arch); + return(PT_REGS_SYSCALL_RET(¤t->thread.regs)); +Index: uml-2.6.7/arch/um/kernel/sysrq.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/sysrq.c 2004-07-16 19:36:24.697391888 +0300 ++++ uml-2.6.7/arch/um/kernel/sysrq.c 2004-07-16 19:47:23.739202304 +0300 +@@ -44,6 +44,11 @@ } + EXPORT_SYMBOL(dump_stack); - static int slip_tramp(char **argv, int fd) -@@ -77,8 +75,8 @@ - int status, pid, fds[2], err, output_len; - - err = os_pipe(fds, 1, 0); -- if(err){ -- printk("slip_tramp : pipe failed, errno = %d\n", -err); -+ if(err < 0){ -+ printk("slip_tramp : pipe failed, err = %d\n", -err); - return(err); - } ++void show_stack(struct task_struct *task, unsigned long *sp) ++{ ++ show_trace(sp); ++} ++ + /* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically +Index: uml-2.6.7/arch/um/include/sysdep-i386/syscalls.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/sysdep-i386/syscalls.h 2004-07-16 19:36:04.873405592 +0300 ++++ uml-2.6.7/arch/um/include/sysdep-i386/syscalls.h 2004-07-16 19:47:23.708207016 +0300 +@@ -11,39 +11,34 @@ + #define EXECUTE_SYSCALL(syscall, regs) \ + ((long (*)(struct syscall_args)) (*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs)) -@@ -96,7 +94,7 @@ - printk("slip_tramp : failed to allocate output " - "buffer\n"); +-extern syscall_handler_t sys_modify_ldt; +-extern syscall_handler_t old_mmap_i386; +-extern syscall_handler_t old_select; +-extern syscall_handler_t sys_ni_syscall; +- + #define ARCH_SYSCALLS \ +- [ __NR_mmap ] = old_mmap_i386, \ +- [ __NR_select ] = old_select, \ +- [ __NR_vm86old ] = sys_ni_syscall, \ +- [ __NR_modify_ldt ] = sys_modify_ldt, \ +- [ __NR_lchown32 ] = sys_lchown, \ +- [ __NR_getuid32 ] = sys_getuid, \ +- [ __NR_getgid32 ] = sys_getgid, \ +- [ __NR_geteuid32 ] = sys_geteuid, \ +- [ __NR_getegid32 ] = sys_getegid, \ +- [ __NR_setreuid32 ] = sys_setreuid, \ +- [ __NR_setregid32 ] = sys_setregid, \ +- [ __NR_getgroups32 ] = sys_getgroups, \ +- [ __NR_setgroups32 ] = sys_setgroups, \ +- [ __NR_fchown32 ] = sys_fchown, \ +- [ __NR_setresuid32 ] = sys_setresuid, \ +- [ __NR_getresuid32 ] = sys_getresuid, \ +- [ __NR_setresgid32 ] = sys_setresgid, \ +- [ __NR_getresgid32 ] = sys_getresgid, \ +- [ __NR_chown32 ] = sys_chown, \ +- [ __NR_setuid32 ] = sys_setuid, \ +- [ __NR_setgid32 ] = sys_setgid, \ +- [ __NR_setfsuid32 ] = sys_setfsuid, \ +- [ __NR_setfsgid32 ] = sys_setfsgid, \ +- [ __NR_pivot_root ] = sys_pivot_root, \ +- [ __NR_mincore ] = sys_mincore, \ +- [ __NR_madvise ] = sys_madvise, \ +- [ 222 ] = sys_ni_syscall, ++ [ __NR_mmap ] = (syscall_handler_t *) old_mmap_i386, \ ++ [ __NR_select ] = (syscall_handler_t *) old_select, \ ++ [ __NR_vm86old ] = (syscall_handler_t *) sys_ni_syscall, \ ++ [ __NR_modify_ldt ] = (syscall_handler_t *) sys_modify_ldt, \ ++ [ __NR_lchown32 ] = (syscall_handler_t *) sys_lchown, \ ++ [ __NR_getuid32 ] = (syscall_handler_t *) sys_getuid, \ ++ [ __NR_getgid32 ] = (syscall_handler_t *) sys_getgid, \ ++ [ __NR_geteuid32 ] = (syscall_handler_t *) sys_geteuid, \ ++ [ __NR_getegid32 ] = (syscall_handler_t *) sys_getegid, \ ++ [ __NR_setreuid32 ] = (syscall_handler_t *) sys_setreuid, \ ++ [ __NR_setregid32 ] = (syscall_handler_t *) sys_setregid, \ ++ [ __NR_getgroups32 ] = (syscall_handler_t *) sys_getgroups, \ ++ [ __NR_setgroups32 ] = (syscall_handler_t *) sys_setgroups, \ ++ [ __NR_fchown32 ] = (syscall_handler_t *) sys_fchown, \ ++ [ __NR_setresuid32 ] = (syscall_handler_t *) sys_setresuid, \ ++ [ __NR_getresuid32 ] = (syscall_handler_t *) sys_getresuid, \ ++ [ __NR_setresgid32 ] = (syscall_handler_t *) sys_setresgid, \ ++ [ __NR_getresgid32 ] = (syscall_handler_t *) sys_getresgid, \ ++ [ __NR_chown32 ] = (syscall_handler_t *) sys_chown, \ ++ [ __NR_setuid32 ] = (syscall_handler_t *) sys_setuid, \ ++ [ __NR_setgid32 ] = (syscall_handler_t *) sys_setgid, \ ++ [ __NR_setfsuid32 ] = (syscall_handler_t *) sys_setfsuid, \ ++ [ __NR_setfsgid32 ] = (syscall_handler_t *) sys_setfsgid, \ ++ [ __NR_pivot_root ] = (syscall_handler_t *) sys_pivot_root, \ ++ [ __NR_mincore ] = (syscall_handler_t *) sys_mincore, \ ++ [ __NR_madvise ] = (syscall_handler_t *) sys_madvise, \ ++ [ 222 ] = (syscall_handler_t *) sys_ni_syscall, + + /* 222 doesn't yet have a name in include/asm-i386/unistd.h */ -- close(fds[1]); -+ os_close_file(fds[1]); - read_output(fds[0], output, output_len); - if(output != NULL){ - printk("%s", output); -@@ -105,7 +103,7 @@ - if(waitpid(pid, &status, 0) < 0) err = errno; - else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){ - printk("'%s' didn't exit with status 0\n", argv[0]); -- err = EINVAL; -+ err = -EINVAL; - } - } - return(err); -@@ -118,15 +116,17 @@ - char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; - char *argv[] = { "uml_net", version_buf, "slip", "up", gate_buf, - NULL }; -- int sfd, mfd, disc, sencap, err; -+ int sfd, mfd, err; +Index: uml-2.6.7/include/linux/time.h +=================================================================== +--- uml-2.6.7.orig/include/linux/time.h 2004-07-16 19:36:57.136460400 +0300 ++++ uml-2.6.7/include/linux/time.h 2004-07-16 19:47:23.805192272 +0300 +@@ -41,7 +41,7 @@ + * Have the 32 bit jiffies value wrap 5 minutes after boot + * so jiffies wrap bugs show up earlier. + */ +-#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ)) ++#define INITIAL_JIFFIES ((unsigned long)(0)) -- if((mfd = get_pty()) < 0){ -- printk("umn : Failed to open pty\n"); -- return(-1); -+ mfd = get_pty(); -+ if(mfd < 0){ -+ printk("umn : Failed to open pty, err = %d\n", -mfd); -+ return(mfd); - } -- if((sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0)) < 0){ -- printk("Couldn't open tty for slip line\n"); -- return(-1); -+ sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0); -+ if(sfd < 0){ -+ printk("Couldn't open tty for slip line, err = %d\n", -sfd); -+ return(sfd); - } - if(set_up_tty(sfd)) return(-1); - pri->slave = sfd; -@@ -138,28 +138,23 @@ + /* + * Change timeval to jiffies, trying to avoid the +Index: uml-2.6.7/include/asm-um/page.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/page.h 2004-07-16 19:36:51.390333944 +0300 ++++ uml-2.6.7/include/asm-um/page.h 2004-07-16 19:47:23.792194248 +0300 +@@ -1,10 +1,14 @@ ++/* ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) ++ * Licensed under the GPL ++ */ ++ + #ifndef __UM_PAGE_H + #define __UM_PAGE_H - err = slip_tramp(argv, sfd); + struct page; -- if(err != 0){ -- printk("slip_tramp failed - errno = %d\n", err); -- return(-err); -+ if(err < 0){ -+ printk("slip_tramp failed - err = %d\n", -err); -+ return(err); - } -- if(ioctl(pri->slave, SIOCGIFNAME, pri->name) < 0){ -- printk("SIOCGIFNAME failed, errno = %d\n", errno); -- return(-errno); -+ err = os_get_ifname(pri->slave, pri->name); -+ if(err < 0){ -+ printk("get_ifname failed, err = %d\n", -err); -+ return(err); - } - iter_addresses(pri->dev, open_addr, pri->name); - } - else { -- disc = N_SLIP; -- if(ioctl(sfd, TIOCSETD, &disc) < 0){ -- printk("Failed to set slip line discipline - " -- "errno = %d\n", errno); -- return(-errno); -- } -- sencap = 0; -- if(ioctl(sfd, SIOCSIFENCAP, &sencap) < 0){ -- printk("Failed to set slip encapsulation - " -- "errno = %d\n", errno); -- return(-errno); -+ err = os_set_slip(sfd); -+ if(err < 0){ -+ printk("Failed to set slip discipline encapsulation - " -+ "err = %d\n", -err); -+ return(err); - } - } - return(mfd); -@@ -181,9 +176,9 @@ - err = slip_tramp(argv, -1); + #include "asm/arch/page.h" +-#include "asm/bug.h" - if(err != 0) -- printk("slip_tramp failed - errno = %d\n", err); -- close(fd); -- close(pri->slave); -+ printk("slip_tramp failed - errno = %d\n", -err); -+ os_close_file(fd); -+ os_close_file(pri->slave); - pri->slave = -1; - } + #undef __pa + #undef __va +@@ -24,25 +28,36 @@ -@@ -243,7 +238,7 @@ - { - struct slip_data *pri = data; + #define __va_space (8*1024*1024) -- if(pri->slave == -1) return; -+ if(pri->slave < 0) return; - open_addr(addr, netmask, pri->name); - } +-extern unsigned long region_pa(void *virt); +-extern void *region_va(unsigned long phys); +- +-#define __pa(virt) region_pa((void *) (virt)) +-#define __va(phys) region_va((unsigned long) (phys)) +- +-extern unsigned long page_to_pfn(struct page *page); +-extern struct page *pfn_to_page(unsigned long pfn); ++extern unsigned long to_phys(void *virt); ++extern void *to_virt(unsigned long phys); -@@ -252,7 +247,7 @@ - { - struct slip_data *pri = data; +-extern struct page *phys_to_page(unsigned long phys); ++#define __pa(virt) to_phys((void *) virt) ++#define __va(phys) to_virt((unsigned long) phys) -- if(pri->slave == -1) return; -+ if(pri->slave < 0) return; - close_addr(addr, netmask, pri->name); - } +-#define virt_to_page(v) (phys_to_page(__pa(v))) ++#define page_to_pfn(page) ((page) - mem_map) ++#define pfn_to_page(pfn) (mem_map + (pfn)) -diff -Naur a/arch/um/drivers/slirp_user.c b/arch/um/drivers/slirp_user.c ---- a/arch/um/drivers/slirp_user.c 2004-03-10 08:21:59.000000000 -0500 -+++ b/arch/um/drivers/slirp_user.c 2004-03-10 08:41:08.000000000 -0500 -@@ -4,7 +4,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -48,15 +47,15 @@ +-extern struct page *page_mem_map(struct page *page); ++#define phys_to_pfn(p) ((p) >> PAGE_SHIFT) ++#define pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) - return(pid); - } -- +-#define pfn_valid(pfn) (page_mem_map(pfn_to_page(pfn)) != NULL) +-#define virt_addr_valid(v) pfn_valid(__pa(v) >> PAGE_SHIFT) ++#define pfn_valid(pfn) ((pfn) < max_mapnr) ++#define virt_addr_valid(v) pfn_valid(phys_to_pfn(__pa(v))) + + extern struct page *arch_validate(struct page *page, int mask, int order); + #define HAVE_ARCH_VALIDATE + ++extern void arch_free_page(struct page *page, int order); ++#define HAVE_ARCH_FREE_PAGE + -+/* XXX This is just a trivial wrapper around os_pipe */ - static int slirp_datachan(int *mfd, int *sfd) - { - int fds[2], err; + #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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/include/signal_user.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/signal_user.h 2004-07-16 19:35:55.511828768 +0300 ++++ uml-2.6.7/arch/um/include/signal_user.h 2004-07-16 19:47:23.705207472 +0300 +@@ -11,6 +11,8 @@ + extern int change_sig(int signal, int on); + extern void set_sigstack(void *stack, int size); + extern void set_handler(int sig, void (*handler)(int), int flags, ...); ++extern int set_signals(int enable); ++extern int get_signals(void); - err = os_pipe(fds, 1, 1); -- if(err){ -- printk("slirp_datachan: Failed to open pipe, errno = %d\n", -- -err); -+ if(err < 0){ -+ printk("slirp_datachan: Failed to open pipe, err = %d\n", -err); - return(err); - } + #endif -@@ -77,7 +76,7 @@ - pid = slirp_tramp(pri->argw.argv, sfd); +Index: uml-2.6.7/include/asm-um/local.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/local.h 2004-07-16 19:47:23.633218416 +0300 ++++ uml-2.6.7/include/asm-um/local.h 2004-07-16 19:47:23.791194400 +0300 +@@ -0,0 +1,6 @@ ++#ifndef __UM_LOCAL_H ++#define __UM_LOCAL_H ++ ++#include "asm/arch/local.h" ++ ++#endif +Index: uml-2.6.7/include/asm-um/thread_info.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/thread_info.h 2004-07-16 19:36:22.451733280 +0300 ++++ uml-2.6.7/include/asm-um/thread_info.h 2004-07-16 19:47:23.803192576 +0300 +@@ -9,6 +9,7 @@ + #ifndef __ASSEMBLY__ - if(pid < 0){ -- printk("slirp_tramp failed - errno = %d\n", pid); -+ printk("slirp_tramp failed - errno = %d\n", -pid); - os_close_file(sfd); - os_close_file(mfd); - return(pid); -@@ -97,8 +96,8 @@ - struct slirp_data *pri = data; - int status,err; + #include ++#include -- close(fd); -- close(pri->slave); -+ os_close_file(fd); -+ os_close_file(pri->slave); + struct thread_info { + struct task_struct *task; /* main task structure */ +@@ -43,15 +44,18 @@ + static inline struct thread_info *current_thread_info(void) + { + struct thread_info *ti; +- __asm__("andl %%esp,%0; ":"=r" (ti) : "0" (~16383UL)); ++ unsigned long mask = PAGE_SIZE * ++ (1 << CONFIG_KERNEL_STACK_ORDER) - 1; ++ __asm__("andl %%esp,%0; ":"=r" (ti) : "0" (~mask)); + return ti; + } - pri->slave = -1; + /* thread information allocation */ +-#define THREAD_SIZE (4*PAGE_SIZE) +-#define alloc_thread_info(tsk) ((struct thread_info *) \ +- __get_free_pages(GFP_KERNEL,2)) +-#define free_thread_info(ti) free_pages((unsigned long) (ti), 2) ++#define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE) ++#define alloc_thread_info(tsk) \ ++ ((struct thread_info *) kmalloc(THREAD_SIZE, GFP_KERNEL)) ++#define free_thread_info(ti) kfree(ti) ++ + #define get_thread_info(ti) get_task_struct((ti)->task) + #define put_thread_info(ti) put_task_struct((ti)->task) -diff -Naur a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c ---- a/arch/um/drivers/ssl.c 2004-03-10 08:21:27.000000000 -0500 -+++ b/arch/um/drivers/ssl.c 2004-03-10 08:39:05.000000000 -0500 -@@ -10,6 +10,7 @@ - #include "linux/major.h" - #include "linux/mm.h" - #include "linux/init.h" -+#include "linux/console.h" - #include "asm/termbits.h" - #include "asm/irq.h" - #include "line.h" -@@ -53,8 +54,9 @@ +@@ -65,11 +69,13 @@ + #define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling + * TIF_NEED_RESCHED + */ ++#define TIF_RESTART_BLOCK 4 - static struct line_driver driver = { - .name = "UML serial line", -- .devfs_name = "tts/%d", -- .major = TTYAUX_MAJOR, -+ .device_name = "ttS", -+ .devfs_name = "tts/", -+ .major = TTY_MAJOR, - .minor_start = 64, - .type = TTY_DRIVER_TYPE_SERIAL, - .subtype = 0, -@@ -149,6 +151,9 @@ - case TCSETSW: - case TCGETA: - case TIOCMGET: -+ case TCSBRK: -+ case TCSBRKP: -+ case TIOCMSET: - ret = -ENOIOCTLCMD; - break; - default: -@@ -212,6 +217,37 @@ - */ - static int ssl_init_done = 0; + #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) + #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) + #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) + #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) ++#define _TIF_RESTART_BLOCK (1 << TIF_RESTART_BLOCK) -+static void ssl_console_write(struct console *c, const char *string, -+ unsigned len) + #endif + +Index: uml-2.6.7/include/asm-um/dma-mapping.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/dma-mapping.h 2004-07-16 19:36:02.148819792 +0300 ++++ uml-2.6.7/include/asm-um/dma-mapping.h 2004-07-16 19:47:23.789194704 +0300 +@@ -1 +1,119 @@ +-#include ++#ifndef _ASM_DMA_MAPPING_H ++#define _ASM_DMA_MAPPING_H ++ ++static inline int ++dma_supported(struct device *dev, u64 mask) +{ -+ struct line *line = &serial_lines[c->index]; -+ if(ssl_init_done) -+ down(&line->sem); -+ console_write_chan(&line->chan_list, string, len); -+ if(ssl_init_done) -+ up(&line->sem); ++ BUG(); ++ return(0); +} + -+static struct tty_driver *ssl_console_device(struct console *c, int *index) ++static inline int ++dma_set_mask(struct device *dev, u64 dma_mask) +{ -+ *index = c->index; -+ return ssl_driver; ++ BUG(); ++ return(0); +} + -+static int ssl_console_setup(struct console *co, char *options) ++static inline void * ++dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, ++ int flag) ++{ ++ BUG(); ++ return((void *) 0); ++} ++ ++static inline void ++dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, ++ dma_addr_t dma_handle) ++{ ++ BUG(); ++} ++ ++static inline dma_addr_t ++dma_map_single(struct device *dev, void *cpu_addr, size_t size, ++ enum dma_data_direction direction) +{ ++ BUG(); + return(0); +} + -+static struct console ssl_cons = { -+ name: "ttyS", -+ write: ssl_console_write, -+ device: ssl_console_device, -+ setup: ssl_console_setup, -+ flags: CON_PRINTBUFFER, -+ index: -1, -+}; ++static inline void ++dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} + - int ssl_init(void) ++static inline dma_addr_t ++dma_map_page(struct device *dev, struct page *page, ++ unsigned long offset, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++ return(0); ++} ++ ++static inline void ++dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++static inline int ++dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++ return(0); ++} ++ ++static inline void ++dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++static inline void ++dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++static inline void ++dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) ++#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) ++#define dma_is_consistent(d) (1) ++ ++static inline int ++dma_get_cache_alignment(void) ++{ ++ BUG(); ++ return(0); ++} ++ ++static inline void ++dma_sync_single_range(struct device *dev, dma_addr_t dma_handle, ++ unsigned long offset, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++static inline void ++dma_cache_sync(void *vaddr, size_t size, ++ enum dma_data_direction direction) ++{ ++ BUG(); ++} ++ ++#endif +Index: uml-2.6.7/arch/um/kernel/skas/syscall_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/syscall_user.c 2004-07-16 19:37:35.225669960 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/syscall_user.c 2004-07-16 19:47:23.732203368 +0300 +@@ -22,7 +22,7 @@ + + index = record_syscall_start(UPT_SYSCALL_NR(regs)); + +- syscall_trace(); ++ syscall_trace(regs, 1); + result = execute_syscall(regs); + + REGS_SET_SYSCALL_RETURN(regs->skas.regs, result); +@@ -30,7 +30,7 @@ + (result == -ERESTARTNOINTR)) + do_signal(result); + +- syscall_trace(); ++ syscall_trace(regs, 0); + record_syscall_end(index, result); + } + +Index: uml-2.6.7/arch/um/kernel/process.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/process.c 2004-07-16 19:37:22.968533328 +0300 ++++ uml-2.6.7/arch/um/kernel/process.c 2004-07-16 19:47:24.795041792 +0300 +@@ -9,18 +9,17 @@ + #include + #include + #include +-#include + #include + #include + #include + #include +-#include + #include + #include + #include + #include + #include + #include ++#include + #include "user_util.h" + #include "kern_util.h" + #include "user.h" +@@ -58,7 +57,11 @@ { - char *new_title; -@@ -227,17 +263,18 @@ - new_title = add_xterm_umid(opts.xterm_title); - if(new_title != NULL) opts.xterm_title = new_title; + int flags = altstack ? SA_ONSTACK : 0; -+ register_console(&ssl_cons); - ssl_init_done = 1; - return(0); - } +- set_handler(SIGSEGV, (__sighandler_t) sig_handler, flags, ++ /* NODEFER is set here because SEGV isn't turned back on when the ++ * handler is ready to receive signals. This causes any segfault ++ * during a copy_user to kill the process because the fault is blocked. ++ */ ++ set_handler(SIGSEGV, (__sighandler_t) sig_handler, flags | SA_NODEFER, + SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); + set_handler(SIGTRAP, (__sighandler_t) sig_handler, flags, + SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); +@@ -72,7 +75,6 @@ + SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); + set_handler(SIGUSR2, (__sighandler_t) sig_handler, + SA_NOMASK | flags, -1); +- (void) CHOOSE_MODE(signal(SIGCHLD, SIG_IGN), (void *) 0); + signal(SIGHUP, SIG_IGN); --__initcall(ssl_init); -+late_initcall(ssl_init); + init_irq_signals(altstack); +@@ -123,11 +125,12 @@ + /* Start the process and wait for it to kill itself */ + new_pid = clone(outer_tramp, (void *) sp, clone_flags, &arg); + if(new_pid < 0) return(-errno); +- while((err = waitpid(new_pid, &status, 0) < 0) && (errno == EINTR)) ; ++ CATCH_EINTR(err = waitpid(new_pid, &status, 0)); + if(err < 0) panic("Waiting for outer trampoline failed - errno = %d", + errno); + if(!WIFSIGNALED(status) || (WTERMSIG(status) != SIGKILL)) +- panic("outer trampoline didn't exit with SIGKILL"); ++ panic("outer trampoline didn't exit with SIGKILL, " ++ "status = %d", status); - static int ssl_chan_setup(char *str) - { -- line_setup(serial_lines, sizeof(serial_lines)/sizeof(serial_lines[0]), -- str, 1); -- return(1); -+ return(line_setup(serial_lines, -+ sizeof(serial_lines)/sizeof(serial_lines[0]), -+ str, 1)); + return(arg.pid); } +@@ -138,7 +141,7 @@ - __setup("ssl", ssl_chan_setup); -diff -Naur a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c ---- a/arch/um/drivers/stdio_console.c 2004-03-10 08:20:33.000000000 -0500 -+++ b/arch/um/drivers/stdio_console.c 2004-03-10 08:36:14.000000000 -0500 -@@ -83,7 +83,8 @@ + os_stop_process(os_getpid()); - static struct line_driver driver = { - .name = "UML console", -- .devfs_name = "vc/%d", -+ .device_name = "tty", -+ .devfs_name = "vc/", - .major = TTY_MAJOR, - .minor_start = 0, - .type = TTY_DRIVER_TYPE_CONSOLE, -@@ -159,6 +160,15 @@ +- if(read(fd, &c, sizeof(c)) != sizeof(c)) ++ if(os_read_file(fd, &c, sizeof(c)) != sizeof(c)) + panic("read failed in suspend_new_thread"); + } - static int con_init_done = 0; +@@ -168,7 +171,7 @@ + pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); + if(pid < 0) + panic("check_ptrace : clone failed, errno = %d", errno); +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0) + panic("check_ptrace : wait failed, errno = %d", errno); + if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP)) +@@ -185,7 +188,7 @@ + + if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) + panic("check_ptrace : ptrace failed, errno = %d", errno); +- n = waitpid(pid, &status, 0); ++ CATCH_EINTR(n = waitpid(pid, &status, 0)); + if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) + panic("check_ptrace : child exited with status 0x%x", status); + +@@ -193,6 +196,22 @@ + panic("check_ptrace : munmap failed, errno = %d", errno); + } -+static struct tty_operations console_ops = { -+ .open = con_open, -+ .close = con_close, -+ .write = con_write, -+ .chars_in_buffer = chars_in_buffer, -+ .set_termios = set_termios, -+ .write_room = line_write_room, -+}; ++static int force_sysemu_disabled = 0; + - int stdio_init(void) ++static int __init nosysemu_cmd_param(char *str, int* add) ++{ ++ force_sysemu_disabled = 1; ++ return 0; ++} ++ ++__uml_setup("nosysemu", nosysemu_cmd_param, ++ "nosysemu\n" ++ " Turns off syscall emulation patch for ptrace (SYSEMU) on.\n" ++ " SYSEMU is a performance-patch introduced by Laurent Vivier. It changes\n" ++ " behaviour of ptrace() and helps reducing host context switch rate.\n" ++ " To make it working, you need a kernel patch for your host, too.\n" ++ " See http://perso.wanadoo.fr/laurent.vivier/UML/ for further information.\n"); ++ + void __init check_ptrace(void) { - char *new_title; -@@ -166,7 +176,8 @@ + void *stack; +@@ -205,7 +224,7 @@ + if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) + panic("check_ptrace : ptrace failed, errno = %d", + errno); +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0) + panic("check_ptrace : wait failed, errno = %d", errno); + if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) +@@ -225,6 +244,45 @@ + } + stop_ptraced_child(pid, stack, 0); + printk("OK\n"); ++ ++#ifdef UML_CONFIG_MODE_SKAS ++ printk("Checking syscall emulation patch for ptrace..."); ++ set_using_sysemu(0); ++ pid = start_ptraced_child(&stack); ++ if(ptrace(PTRACE_SYSEMU, pid, 0, 0) >= 0) { ++ struct user_regs_struct regs; ++ ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); ++ if (n < 0) ++ panic("check_ptrace : wait failed, errno = %d", errno); ++ if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) ++ panic("check_ptrace : expected SIGTRAP, " ++ "got status = %d", status); ++ ++ if (ptrace(PTRACE_GETREGS, pid, 0, ®s) < 0) ++ panic("check_ptrace : failed to read child " ++ "registers, errno = %d", errno); ++ regs.orig_eax = pid; ++ if (ptrace(PTRACE_SETREGS, pid, 0, ®s) < 0) ++ panic("check_ptrace : failed to modify child " ++ "registers, errno = %d", errno); ++ ++ stop_ptraced_child(pid, stack, 0); ++ ++ if (!force_sysemu_disabled) { ++ printk("found\n"); ++ set_using_sysemu(1); ++ } else { ++ printk("found but disabled\n"); ++ } ++ } ++ else ++ { ++ printk("missing\n"); ++ stop_ptraced_child(pid, stack, 1); ++ } ++#endif ++ + } + + int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr) +@@ -233,7 +289,7 @@ + int n; + + *jmp_ptr = &buf; +- n = setjmp(buf); ++ n = sigsetjmp(buf, 1); + if(n != 0) + return(n); + (*fn)(arg); +@@ -273,7 +329,7 @@ + stop_ptraced_child(pid, stack, 1); + + printf("Checking for /proc/mm..."); +- if(access("/proc/mm", W_OK)){ ++ if(os_access("/proc/mm", OS_ACC_W_OK) < 0){ + printf("not found\n"); + ret = 0; + } +Index: uml-2.6.7/arch/um/drivers/stdio_console.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/stdio_console.c 2004-07-16 19:36:13.845041696 +0300 ++++ uml-2.6.7/arch/um/drivers/stdio_console.c 2004-07-16 19:47:23.694209144 +0300 +@@ -83,7 +83,8 @@ + + static struct line_driver driver = { + .name = "UML console", +- .devfs_name = "vc/%d", ++ .device_name = "tty", ++ .devfs_name = "vc/", + .major = TTY_MAJOR, + .minor_start = 0, + .type = TTY_DRIVER_TYPE_CONSOLE, +@@ -159,6 +160,15 @@ + + static int con_init_done = 0; + ++static struct tty_operations console_ops = { ++ .open = con_open, ++ .close = con_close, ++ .write = con_write, ++ .chars_in_buffer = chars_in_buffer, ++ .set_termios = set_termios, ++ .write_room = line_write_room, ++}; ++ + int stdio_init(void) + { + char *new_title; +@@ -166,7 +176,8 @@ printk(KERN_INFO "Initializing stdio console driver\n"); console_driver = line_register_devfs(&console_lines, &driver, @@ -3979,2993 +3824,2209 @@ diff -Naur a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c } __setup("con", console_chan_setup); -diff -Naur a/arch/um/drivers/tty.c b/arch/um/drivers/tty.c ---- a/arch/um/drivers/tty.c 2004-03-10 08:20:58.000000000 -0500 -+++ b/arch/um/drivers/tty.c 2004-03-10 08:37:26.000000000 -0500 -@@ -5,7 +5,6 @@ +Index: uml-2.6.7/arch/um/os-Linux/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/Makefile 2004-07-16 19:36:54.369880984 +0300 ++++ uml-2.6.7/arch/um/os-Linux/Makefile 2004-07-16 19:47:23.768197896 +0300 +@@ -3,13 +3,9 @@ + # Licensed under the GPL + # - #include - #include --#include - #include +-obj-y = file.o process.o tty.o drivers/ ++obj-y = file.o process.o tty.o user_syms.o drivers/ + + USER_OBJS := $(foreach file,file.o process.o tty.o,$(obj)/$(file)) + + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +- +-clean : +- +-archmrproper: +Index: uml-2.6.7/arch/um/kernel/skas/syscall_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/syscall_kern.c 2004-07-16 19:36:57.006480160 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/syscall_kern.c 2004-07-16 19:47:23.732203368 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +Index: uml-2.6.7/arch/um/drivers/pty.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/pty.c 2004-07-16 19:37:26.082060000 +0300 ++++ uml-2.6.7/arch/um/drivers/pty.c 2004-07-16 19:47:23.692209448 +0300 +@@ -7,12 +7,12 @@ #include + #include + #include +-#include + #include #include "chan_user.h" -@@ -30,7 +29,8 @@ - } - str++; + #include "user.h" + #include "user_util.h" + #include "kern_util.h" ++#include "os.h" -- if((data = um_kmalloc(sizeof(*data))) == NULL) -+ data = um_kmalloc(sizeof(*data)); -+ if(data == NULL) - return(NULL); - *data = ((struct tty_chan) { .dev = str, - .raw = opts->raw }); -diff -Naur a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c ---- a/arch/um/drivers/ubd_kern.c 2004-03-10 08:21:25.000000000 -0500 -+++ b/arch/um/drivers/ubd_kern.c 2004-03-10 08:38:51.000000000 -0500 -@@ -8,6 +8,13 @@ - * old style ubd by setting UBD_SHIFT to 0 - * 2002-09-27...2002-10-18 massive tinkering for 2.5 - * partitions have changed in 2.5 -+ * 2003-01-29 more tinkering for 2.5.59-1 -+ * This should now address the sysfs problems and has -+ * the symlink for devfs to allow for booting with -+ * the common /dev/ubd/discX/... names rather than -+ * only /dev/ubdN/discN this version also has lots of -+ * clean ups preparing for ubd-many. -+ * James McMechan - */ + struct pty_chan { + void (*announce)(char *dev_name, int dev); +@@ -26,7 +26,8 @@ + { + struct pty_chan *data; - #define MAJOR_NR UBD_MAJOR -@@ -40,9 +47,12 @@ - #include "mconsole_kern.h" - #include "init.h" - #include "irq_user.h" -+#include "irq_kern.h" - #include "ubd_user.h" - #include "2_5compat.h" - #include "os.h" -+#include "mem.h" -+#include "mem_kern.h" +- if((data = um_kmalloc(sizeof(*data))) == NULL) return(NULL); ++ data = um_kmalloc(sizeof(*data)); ++ if(data == NULL) return(NULL); + *data = ((struct pty_chan) { .announce = opts->announce, + .dev = device, + .raw = opts->raw }); +@@ -39,7 +40,8 @@ + char *dev; + int fd; - static spinlock_t ubd_io_lock = SPIN_LOCK_UNLOCKED; - static spinlock_t ubd_lock = SPIN_LOCK_UNLOCKED; -@@ -56,6 +66,10 @@ +- if((fd = get_pty()) < 0){ ++ fd = get_pty(); ++ if(fd < 0){ + printk("open_pts : Failed to open pts\n"); + return(-errno); + } +@@ -57,29 +59,27 @@ - #define MAX_DEV (8) + int getmaster(char *line) + { +- struct stat stb; + char *pty, *bank, *cp; +- int master; ++ int master, err; -+/* Changed in early boot */ -+static int ubd_do_mmap = 0; -+#define UBD_MMAP_BLOCK_SIZE PAGE_SIZE + pty = &line[strlen("/dev/ptyp")]; + for (bank = "pqrs"; *bank; bank++) { + line[strlen("/dev/pty")] = *bank; + *pty = '0'; +- if (stat(line, &stb) < 0) ++ if (os_stat_file(line, NULL) < 0) + break; + for (cp = "0123456789abcdef"; *cp; cp++) { + *pty = *cp; +- master = open(line, O_RDWR); ++ master = os_open_file(line, of_rdwr(OPENFLAGS()), 0); + if (master >= 0) { + char *tp = &line[strlen("/dev/")]; +- int ok; + + /* verify slave side is usable */ + *tp = 't'; +- ok = access(line, R_OK|W_OK) == 0; ++ err = os_access(line, OS_ACC_RW_OK); + *tp = 'p'; +- if (ok) return(master); +- (void) close(master); ++ if(err == 0) return(master); ++ (void) os_close_file(master); + } + } + } +Index: uml-2.6.7/arch/um/util/mk_constants_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/util/mk_constants_kern.c 2004-07-16 19:35:59.020295400 +0300 ++++ uml-2.6.7/arch/um/util/mk_constants_kern.c 2004-07-16 19:47:23.781195920 +0300 +@@ -1,5 +1,6 @@ + #include "linux/kernel.h" + #include "linux/stringify.h" ++#include "linux/time.h" + #include "asm/page.h" + + extern void print_head(void); +@@ -11,6 +12,7 @@ + { + print_head(); + print_constant_int("UM_KERN_PAGE_SIZE", PAGE_SIZE); + - static struct block_device_operations ubd_blops = { - .owner = THIS_MODULE, - .open = ubd_open, -@@ -67,7 +81,7 @@ - static request_queue_t *ubd_queue; + print_constant_str("UM_KERN_EMERG", KERN_EMERG); + print_constant_str("UM_KERN_ALERT", KERN_ALERT); + print_constant_str("UM_KERN_CRIT", KERN_CRIT); +@@ -19,6 +21,8 @@ + print_constant_str("UM_KERN_NOTICE", KERN_NOTICE); + print_constant_str("UM_KERN_INFO", KERN_INFO); + print_constant_str("UM_KERN_DEBUG", KERN_DEBUG); ++ ++ print_constant_int("UM_NSEC_PER_SEC", NSEC_PER_SEC); + print_tail(); + return(0); + } +Index: uml-2.6.7/arch/um/drivers/port_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/port_user.c 2004-07-16 19:36:57.124462224 +0300 ++++ uml-2.6.7/arch/um/drivers/port_user.c 2004-07-16 19:47:23.691209600 +0300 +@@ -47,10 +47,12 @@ + return(NULL); + } - /* Protected by ubd_lock */ --static int fake_major = 0; -+static int fake_major = MAJOR_NR; +- if((kern_data = port_data(port)) == NULL) ++ kern_data = port_data(port); ++ if(kern_data == NULL) + return(NULL); - static struct gendisk *ubd_gendisk[MAX_DEV]; - static struct gendisk *fake_gendisk[MAX_DEV]; -@@ -96,13 +110,19 @@ +- if((data = um_kmalloc(sizeof(*data))) == NULL) ++ data = um_kmalloc(sizeof(*data)); ++ if(data == NULL) + goto err; - struct ubd { - char *file; -- int is_dir; - int count; - int fd; - __u64 size; - struct openflags boot_openflags; - struct openflags openflags; -+ int no_cow; - struct cow cow; -+ -+ int map_writes; -+ int map_reads; -+ int nomap_writes; -+ int nomap_reads; -+ int write_maps; - }; + *data = ((struct port_chan) { .raw = opts->raw, +@@ -90,7 +92,7 @@ + struct port_chan *data = d; - #define DEFAULT_COW { \ -@@ -115,21 +135,28 @@ + port_remove_dev(data->kernel_data); +- close(fd); ++ os_close_file(fd); + } - #define DEFAULT_UBD { \ - .file = NULL, \ -- .is_dir = 0, \ - .count = 0, \ - .fd = -1, \ - .size = -1, \ - .boot_openflags = OPEN_FLAGS, \ - .openflags = OPEN_FLAGS, \ -+ .no_cow = 0, \ - .cow = DEFAULT_COW, \ -+ .map_writes = 0, \ -+ .map_reads = 0, \ -+ .nomap_writes = 0, \ -+ .nomap_reads = 0, \ -+ .write_maps = 0, \ + int port_console_write(int fd, const char *buf, int n, void *d) +@@ -130,11 +132,15 @@ + goto out; + } + +- if((listen(fd, 1) < 0) || (os_set_fd_block(fd, 0))){ ++ if(listen(fd, 1) < 0){ + err = -errno; + goto out; + } + ++ err = os_set_fd_block(fd, 0); ++ if(err < 0) ++ goto out; ++ + return(fd); + out: + os_close_file(fd); +@@ -153,10 +159,10 @@ + dup2(data->sock_fd, 0); + dup2(data->sock_fd, 1); + dup2(data->sock_fd, 2); +- close(data->sock_fd); ++ os_close_file(data->sock_fd); + dup2(data->pipe_fd, 3); + os_shutdown_socket(3, 1, 0); +- close(data->pipe_fd); ++ os_close_file(data->pipe_fd); } - struct ubd ubd_dev[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD }; + int port_connection(int fd, int *socket, int *pid_out) +@@ -166,11 +172,12 @@ + "/usr/lib/uml/port-helper", NULL }; + struct port_pre_exec_data data; - static int ubd0_init(void) - { -- if(ubd_dev[0].file == NULL) -- ubd_dev[0].file = "root_fs"; -+ struct ubd *dev = &ubd_dev[0]; -+ -+ if(dev->file == NULL) -+ dev->file = "root_fs"; - return(0); +- if((new = os_accept_connection(fd)) < 0) +- return(-errno); ++ new = os_accept_connection(fd); ++ if(new < 0) ++ return(new); + + err = os_pipe(socket, 0, 0); +- if(err) ++ if(err < 0) + goto out_close; + + data = ((struct port_pre_exec_data) +@@ -186,11 +193,11 @@ + + out_shutdown: + os_shutdown_socket(socket[0], 1, 1); +- close(socket[0]); ++ os_close_file(socket[0]); + os_shutdown_socket(socket[1], 1, 1); +- close(socket[1]); ++ os_close_file(socket[1]); + out_close: +- close(new); ++ os_close_file(new); + return(err); } -@@ -196,19 +223,46 @@ - " Create ide0 entries that map onto ubd devices.\n\n" - ); +Index: uml-2.6.7/arch/um/drivers/port_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/port_kern.c 2004-07-16 19:35:56.025750640 +0300 ++++ uml-2.6.7/arch/um/drivers/port_kern.c 2004-07-16 19:47:23.690209752 +0300 +@@ -6,6 +6,7 @@ + #include "linux/list.h" + #include "linux/sched.h" + #include "linux/slab.h" ++#include "linux/interrupt.h" + #include "linux/irq.h" + #include "linux/spinlock.h" + #include "linux/errno.h" +@@ -14,6 +15,7 @@ + #include "kern_util.h" + #include "kern.h" + #include "irq_user.h" ++#include "irq_kern.h" + #include "port.h" + #include "init.h" + #include "os.h" +@@ -38,21 +40,21 @@ + struct connection { + struct list_head list; + int fd; +- int helper_pid; ++ int helper_pid; + int socket[2]; + int telnetd_pid; + struct port_list *port; + }; -+static int parse_unit(char **ptr) -+{ -+ char *str = *ptr, *end; -+ int n = -1; -+ -+ if(isdigit(*str)) { -+ n = simple_strtoul(str, &end, 0); -+ if(end == str) -+ return(-1); -+ *ptr = end; -+ } -+ else if (('a' <= *str) && (*str <= 'h')) { -+ n = *str - 'a'; -+ str++; -+ *ptr = str; -+ } -+ return(n); -+} -+ - static int ubd_setup_common(char *str, int *index_out) +-static void pipe_interrupt(int irq, void *data, struct pt_regs *regs) ++static irqreturn_t pipe_interrupt(int irq, void *data, struct pt_regs *regs) { -+ struct ubd *dev; - struct openflags flags = global_openflags; - char *backing_file; - int n, err; + struct connection *conn = data; + int fd; - if(index_out) *index_out = -1; -- n = *str++; -+ n = *str; - if(n == '='){ -- static int fake_major_allowed = 1; - char *end; - int major; +- fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); ++ fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); + if(fd < 0){ + if(fd == -EAGAIN) +- return; ++ return(IRQ_NONE); -+ str++; -+ if(!strcmp(str, "mmap")){ -+ CHOOSE_MODE(printk("mmap not supported by the ubd " -+ "driver in tt mode\n"), -+ ubd_do_mmap = 1); -+ return(0); -+ } -+ - if(!strcmp(str, "sync")){ - global_openflags.s = 1; - return(0); -@@ -220,20 +274,14 @@ - return(1); - } + printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n", + -fd); +@@ -65,6 +67,7 @@ + list_add(&conn->list, &conn->port->connections); -- if(!fake_major_allowed){ -- printk(KERN_ERR "Can't assign a fake major twice\n"); -- return(1); -- } -- - err = 1; - spin_lock(&ubd_lock); -- if(!fake_major_allowed){ -+ if(fake_major != MAJOR_NR){ - printk(KERN_ERR "Can't assign a fake major twice\n"); - goto out1; - } - - fake_major = major; -- fake_major_allowed = 0; + up(&conn->port->sem); ++ return(IRQ_HANDLED); + } - printk(KERN_INFO "Setting extra ubd major number to %d\n", - major); -@@ -243,25 +291,23 @@ - return(err); + static int port_accept(struct port_list *port) +@@ -102,8 +105,7 @@ } -- if(n < '0'){ -- printk(KERN_ERR "ubd_setup : index out of range\n"); } -- -- if((n >= '0') && (n <= '9')) n -= '0'; -- else if((n >= 'a') && (n <= 'z')) n -= 'a'; -- else { -- printk(KERN_ERR "ubd_setup : device syntax invalid\n"); -+ n = parse_unit(&str); -+ if(n < 0){ -+ printk(KERN_ERR "ubd_setup : couldn't parse unit number " -+ "'%s'\n", str); - return(1); - } - if(n >= MAX_DEV){ -- printk(KERN_ERR "ubd_setup : index out of range " -- "(%d devices)\n", MAX_DEV); -+ printk(KERN_ERR "ubd_setup : index %d out of range " -+ "(%d devices)\n", n, MAX_DEV); - return(1); - } + list_add(&conn->list, &port->pending); +- ret = 1; +- goto out; ++ return(1); - err = 1; - spin_lock(&ubd_lock); + out_free: + kfree(conn); +@@ -138,12 +140,13 @@ -- if(ubd_dev[n].file != NULL){ -+ dev = &ubd_dev[n]; -+ if(dev->file != NULL){ - printk(KERN_ERR "ubd_setup : device already configured\n"); - goto out2; - } -@@ -276,6 +322,11 @@ - flags.s = 1; - str++; + DECLARE_WORK(port_work, port_work_proc, NULL); + +-static void port_interrupt(int irq, void *data, struct pt_regs *regs) ++static irqreturn_t port_interrupt(int irq, void *data, struct pt_regs *regs) + { + struct port_list *port = data; + + port->has_connection = 1; + schedule_work(&port_work); ++ return(IRQ_HANDLED); + } + + void *port_data(int port_num) +Index: uml-2.6.7/arch/um/sys-i386/ptrace_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/ptrace_user.c 2004-07-16 19:37:52.078108000 +0300 ++++ uml-2.6.7/arch/um/sys-i386/ptrace_user.c 2004-07-16 19:47:23.772197288 +0300 +@@ -39,10 +39,10 @@ + nregs = sizeof(dummy->u_debugreg)/sizeof(dummy->u_debugreg[0]); + for(i = 0; i < nregs; i++){ + if((i == 4) || (i == 5)) continue; +- if(ptrace(PTRACE_POKEUSR, pid, &dummy->u_debugreg[i], ++ if(ptrace(PTRACE_POKEUSER, pid, &dummy->u_debugreg[i], + regs[i]) < 0) +- printk("write_debugregs - ptrace failed, " +- "errno = %d\n", errno); ++ printk("write_debugregs - ptrace failed on " ++ "register %d, errno = %d\n", errno); } -+ if (*str == 'd'){ -+ dev->no_cow = 1; -+ str++; -+ } -+ - if(*str++ != '='){ - printk(KERN_ERR "ubd_setup : Expected '='\n"); - goto out2; -@@ -284,14 +335,17 @@ - err = 0; - backing_file = strchr(str, ','); - if(backing_file){ -- *backing_file = '\0'; -- backing_file++; -+ if(dev->no_cow) -+ printk(KERN_ERR "Can't specify both 'd' and a " -+ "cow file\n"); -+ else { -+ *backing_file = '\0'; -+ backing_file++; -+ } - } -- ubd_dev[n].file = str; -- if(ubd_is_dir(ubd_dev[n].file)) -- ubd_dev[n].is_dir = 1; -- ubd_dev[n].cow.file = backing_file; -- ubd_dev[n].boot_openflags = flags; -+ dev->file = str; -+ dev->cow.file = backing_file; -+ dev->boot_openflags = flags; - out2: - spin_unlock(&ubd_lock); - return(err); -@@ -321,8 +375,7 @@ - static int fakehd_set = 0; - static int fakehd(char *str) - { -- printk(KERN_INFO -- "fakehd : Changing ubd name to \"hd\".\n"); -+ printk(KERN_INFO "fakehd : Changing ubd name to \"hd\".\n"); - fakehd_set = 1; - return 1; } -@@ -368,32 +421,42 @@ - { - struct io_thread_req req; - struct request *rq = elv_next_request(ubd_queue); -- int n; -+ int n, err; - do_ubd = NULL; - intr_count++; - n = read_ubd_fs(thread_fd, &req, sizeof(req)); - if(n != sizeof(req)){ - printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " -- "errno = %d\n", os_getpid(), -n); -+ "err = %d\n", os_getpid(), -n); - spin_lock(&ubd_io_lock); - end_request(rq, 0); - spin_unlock(&ubd_io_lock); - return; +@@ -54,7 +54,7 @@ + dummy = NULL; + nregs = sizeof(dummy->u_debugreg)/sizeof(dummy->u_debugreg[0]); + for(i = 0; i < nregs; i++){ +- regs[i] = ptrace(PTRACE_PEEKUSR, pid, ++ regs[i] = ptrace(PTRACE_PEEKUSER, pid, + &dummy->u_debugreg[i], 0); } - -- if((req.offset != ((__u64) (rq->sector)) << 9) || -- (req.length != (rq->current_nr_sectors) << 9)) -+ if((req.op != UBD_MMAP) && -+ ((req.offset != ((__u64) (rq->sector)) << 9) || -+ (req.length != (rq->current_nr_sectors) << 9))) - panic("I/O op mismatch"); - -+ if(req.map_fd != -1){ -+ err = physmem_subst_mapping(req.buffer, req.map_fd, -+ req.map_offset, 1); -+ if(err) -+ printk("ubd_handler - physmem_subst_mapping failed, " -+ "err = %d\n", -err); -+ } -+ - ubd_finish(rq, req.error); - reactivate_fd(thread_fd, UBD_IRQ); - do_ubd_request(ubd_queue); } - --static void ubd_intr(int irq, void *dev, struct pt_regs *unused) -+static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) - { - ubd_handler(); -+ return(IRQ_HANDLED); +Index: uml-2.6.7/arch/um/os-Linux/drivers/tuntap_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/drivers/tuntap_user.c 2004-07-16 19:37:46.493956920 +0300 ++++ uml-2.6.7/arch/um/os-Linux/drivers/tuntap_user.c 2004-07-16 19:47:24.802040728 +0300 +@@ -8,7 +8,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -19,6 +18,7 @@ + #include "net_user.h" + #include "tuntap.h" + #include "kern_util.h" ++#include "user_util.h" + #include "user.h" + #include "helper.h" + #include "os.h" +@@ -61,7 +61,7 @@ + struct tuntap_pre_exec_data *data = arg; + + dup2(data->stdout, 1); +- close(data->close_me); ++ os_close_file(data->close_me); } - /* Only changed by ubd_init, which is an initcall. */ -@@ -417,10 +480,14 @@ - - static void ubd_close(struct ubd *dev) - { -+ if(ubd_do_mmap) -+ physmem_forget_descriptor(dev->fd); - os_close_file(dev->fd); - if(dev->cow.file == NULL) - return; + static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote, +@@ -86,7 +86,7 @@ -+ if(ubd_do_mmap) -+ physmem_forget_descriptor(dev->cow.fd); - os_close_file(dev->cow.fd); - vfree(dev->cow.bitmap); - dev->cow.bitmap = NULL; -@@ -429,18 +496,20 @@ - static int ubd_open_dev(struct ubd *dev) - { - struct openflags flags; -- int err, n, create_cow, *create_ptr; -+ char **back_ptr; -+ int err, create_cow, *create_ptr; + if(pid < 0) return(-pid); -+ dev->openflags = dev->boot_openflags; - create_cow = 0; - create_ptr = (dev->cow.file != NULL) ? &create_cow : NULL; -- dev->fd = open_ubd_file(dev->file, &dev->openflags, &dev->cow.file, -+ back_ptr = dev->no_cow ? NULL : &dev->cow.file; -+ dev->fd = open_ubd_file(dev->file, &dev->openflags, back_ptr, - &dev->cow.bitmap_offset, &dev->cow.bitmap_len, - &dev->cow.data_offset, create_ptr); +- close(remote); ++ os_close_file(remote); - if((dev->fd == -ENOENT) && create_cow){ -- n = dev - ubd_dev; - dev->fd = create_cow_file(dev->file, dev->cow.file, -- dev->openflags, 1 << 9, -+ dev->openflags, 1 << 9, PAGE_SIZE, - &dev->cow.bitmap_offset, - &dev->cow.bitmap_len, - &dev->cow.data_offset); -@@ -455,13 +524,17 @@ - if(dev->cow.file != NULL){ - err = -ENOMEM; - dev->cow.bitmap = (void *) vmalloc(dev->cow.bitmap_len); -- if(dev->cow.bitmap == NULL) goto error; -+ if(dev->cow.bitmap == NULL){ -+ printk(KERN_ERR "Failed to vmalloc COW bitmap\n"); -+ goto error; -+ } - flush_tlb_kernel_vm(); + msg.msg_name = NULL; + msg.msg_namelen = 0; +@@ -107,19 +107,19 @@ + if(n < 0){ + printk("tuntap_open_tramp : recvmsg failed - errno = %d\n", + errno); +- return(errno); ++ return(-errno); + } +- waitpid(pid, NULL, 0); ++ CATCH_EINTR(waitpid(pid, NULL, 0)); - err = read_cow_bitmap(dev->fd, dev->cow.bitmap, - dev->cow.bitmap_offset, - dev->cow.bitmap_len); -- if(err) goto error; -+ if(err < 0) -+ goto error; + cmsg = CMSG_FIRSTHDR(&msg); + if(cmsg == NULL){ + printk("tuntap_open_tramp : didn't receive a message\n"); +- return(EINVAL); ++ return(-EINVAL); + } + if((cmsg->cmsg_level != SOL_SOCKET) || + (cmsg->cmsg_type != SCM_RIGHTS)){ + printk("tuntap_open_tramp : didn't receive a descriptor\n"); +- return(EINVAL); ++ return(-EINVAL); + } + *fd_out = ((int *) CMSG_DATA(cmsg))[0]; + return(0); +@@ -133,27 +133,29 @@ + int err, fds[2], len, used; - flags = dev->openflags; - flags.w = 0; -@@ -481,17 +554,31 @@ - - { - struct gendisk *disk; -+ char from[sizeof("ubd/nnnnn\0")], to[sizeof("discnnnnn/disc\0")]; -+ int err; + err = tap_open_common(pri->dev, pri->gate_addr); +- if(err) return(err); ++ if(err < 0) ++ return(err); - disk = alloc_disk(1 << UBD_SHIFT); -- if (!disk) -- return -ENOMEM; -+ if(disk == NULL) -+ return(-ENOMEM); + if(pri->fixed_config){ +- if((pri->fd = open("/dev/net/tun", O_RDWR)) < 0){ +- printk("Failed to open /dev/net/tun, errno = %d\n", +- errno); +- return(-errno); ++ pri->fd = os_open_file("/dev/net/tun", of_rdwr(OPENFLAGS()), 0); ++ if(pri->fd < 0){ ++ printk("Failed to open /dev/net/tun, err = %d\n", ++ -pri->fd); ++ return(pri->fd); + } + memset(&ifr, 0, sizeof(ifr)); +- ifr.ifr_flags = IFF_TAP; ++ ifr.ifr_flags = IFF_TAP | IFF_NO_PI; + strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name)); + if(ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0){ +- printk("TUNSETIFF failed, errno = %d", errno); +- close(pri->fd); ++ printk("TUNSETIFF failed, errno = %d\n", errno); ++ os_close_file(pri->fd); + return(-errno); + } + } + else { + err = os_pipe(fds, 0, 0); +- if(err){ +- printk("tuntap_open : os_pipe failed - errno = %d\n", ++ if(err < 0){ ++ printk("tuntap_open : os_pipe failed - err = %d\n", + -err); + return(err); + } +@@ -166,19 +168,19 @@ + fds[1], buffer, len, &used); - disk->major = major; - disk->first_minor = unit << UBD_SHIFT; - disk->fops = &ubd_blops; - set_capacity(disk, size / 512); -- sprintf(disk->disk_name, "ubd"); -- sprintf(disk->devfs_name, "ubd/disc%d", unit); -+ if(major == MAJOR_NR){ -+ sprintf(disk->disk_name, "ubd%c", 'a' + unit); -+ sprintf(disk->devfs_name, "ubd/disc%d", unit); -+ sprintf(from, "ubd/%d", unit); -+ sprintf(to, "disc%d/disc", unit); -+ err = devfs_mk_symlink(from, to); -+ if(err) -+ printk("ubd_new_disk failed to make link from %s to " -+ "%s, error = %d\n", from, to, err); -+ } -+ else { -+ sprintf(disk->disk_name, "ubd_fake%d", unit); -+ sprintf(disk->devfs_name, "ubd_fake/disc%d", unit); -+ } - - disk->private_data = &ubd_dev[unit]; - disk->queue = ubd_queue; -@@ -506,24 +593,21 @@ - struct ubd *dev = &ubd_dev[n]; - int err; + output = buffer; +- if(err == 0){ +- pri->dev_name = uml_strdup(buffer); +- output += IFNAMSIZ; +- printk(output); +- free_output_buffer(buffer); +- } +- else { +- printk(output); ++ if(err < 0) { ++ printk("%s", output); + free_output_buffer(buffer); +- printk("tuntap_open_tramp failed - errno = %d\n", err); +- return(-err); ++ printk("tuntap_open_tramp failed - err = %d\n", -err); ++ return(err); + } +- close(fds[0]); ++ ++ pri->dev_name = uml_strdup(buffer); ++ output += IFNAMSIZ; ++ printk("%s", output); ++ free_output_buffer(buffer); ++ ++ os_close_file(fds[0]); + iter_addresses(pri->dev, open_addr, pri->dev_name); + } -- if(dev->is_dir) -- return(-EISDIR); -- -- if (!dev->file) -+ if(dev->file == NULL) - return(-ENODEV); +@@ -191,7 +193,7 @@ - if (ubd_open_dev(dev)) - return(-ENODEV); + if(!pri->fixed_config) + iter_addresses(pri->dev, close_addr, pri->dev_name); +- close(fd); ++ os_close_file(fd); + pri->fd = -1; + } - err = ubd_file_size(dev, &dev->size); -- if(err) -+ if(err < 0) - return(err); +Index: uml-2.6.7/arch/um/kernel/um_arch.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/um_arch.c 2004-07-16 19:37:17.463370240 +0300 ++++ uml-2.6.7/arch/um/kernel/um_arch.c 2004-07-16 19:47:23.755199872 +0300 +@@ -38,13 +38,18 @@ + #include "mode_kern.h" + #include "mode.h" - err = ubd_new_disk(MAJOR_NR, dev->size, n, &ubd_gendisk[n]); - if(err) - return(err); - -- if(fake_major) -+ if(fake_major != MAJOR_NR) - ubd_new_disk(fake_major, dev->size, n, - &fake_gendisk[n]); +-#define DEFAULT_COMMAND_LINE "root=6200" ++#define DEFAULT_COMMAND_LINE "root=98:0" -@@ -561,42 +645,42 @@ - return(err); - } + struct cpuinfo_um boot_cpu_data = { + .loops_per_jiffy = 0, + .ipi_pipe = { -1, -1 } + }; --static int ubd_get_config(char *dev, char *str, int size, char **error_out) -+static int ubd_get_config(char *name, char *str, int size, char **error_out) ++/* Placeholder to make UML link until the vsyscall stuff is actually ++ * implemented ++ */ ++void *__kernel_vsyscall; ++ + unsigned long thread_saved_pc(struct task_struct *task) { -- struct ubd *ubd; -+ struct ubd *dev; - char *end; -- int major, n = 0; -+ int n, len = 0; + return(os_process_pc(CHOOSE_MODE_PROC(thread_pid_tt, thread_pid_skas, +@@ -53,18 +58,22 @@ -- major = simple_strtoul(dev, &end, 0); -- if((*end != '\0') || (end == dev)){ -- *error_out = "ubd_get_config : didn't parse major number"; -+ n = simple_strtoul(name, &end, 0); -+ if((*end != '\0') || (end == name)){ -+ *error_out = "ubd_get_config : didn't parse device number"; - return(-1); - } + static int show_cpuinfo(struct seq_file *m, void *v) + { +- int index; ++ int index = 0; -- if((major >= MAX_DEV) || (major < 0)){ -- *error_out = "ubd_get_config : major number out of range"; -+ if((n >= MAX_DEV) || (n < 0)){ -+ *error_out = "ubd_get_config : device number out of range"; - return(-1); - } +- index = (struct cpuinfo_um *)v - cpu_data; + #ifdef CONFIG_SMP ++ index = (struct cpuinfo_um *) v - cpu_data; + if (!cpu_online(index)) + return 0; + #endif -- ubd = &ubd_dev[major]; -+ dev = &ubd_dev[n]; - spin_lock(&ubd_lock); +- seq_printf(m, "bogomips\t: %lu.%02lu\n", ++ seq_printf(m, "processor\t: %d\n", index); ++ seq_printf(m, "vendor_id\t: User Mode Linux\n"); ++ seq_printf(m, "model name\t: UML\n"); ++ seq_printf(m, "mode\t\t: %s\n", CHOOSE_MODE("tt", "skas")); ++ seq_printf(m, "host\t\t: %s\n", host_info); ++ seq_printf(m, "bogomips\t: %lu.%02lu\n\n", + loops_per_jiffy/(500000/HZ), + (loops_per_jiffy/(5000/HZ)) % 100); +- seq_printf(m, "host\t\t: %s\n", host_info); -- if(ubd->file == NULL){ -- CONFIG_CHUNK(str, size, n, "", 1); -+ if(dev->file == NULL){ -+ CONFIG_CHUNK(str, size, len, "", 1); - goto out; + return(0); + } +@@ -134,12 +143,12 @@ + if(umid != NULL){ + snprintf(argv1_begin, + (argv1_end - argv1_begin) * sizeof(*ptr), +- "(%s)", umid); ++ "(%s) ", umid); + ptr = &argv1_begin[strlen(argv1_begin)]; } + else ptr = argv1_begin; -- CONFIG_CHUNK(str, size, n, ubd->file, 0); -+ CONFIG_CHUNK(str, size, len, dev->file, 0); +- snprintf(ptr, (argv1_end - ptr) * sizeof(*ptr), " [%s]", cmd); ++ snprintf(ptr, (argv1_end - ptr) * sizeof(*ptr), "[%s]", cmd); + memset(argv1_begin + strlen(argv1_begin), '\0', + argv1_end - argv1_begin - strlen(argv1_begin)); + #endif +@@ -179,7 +188,7 @@ + static int __init uml_ncpus_setup(char *line, int *add) + { + if (!sscanf(line, "%d", &ncpus)) { +- printk("Couldn't parse [%s]\n", line); ++ printf("Couldn't parse [%s]\n", line); + return -1; + } -- if(ubd->cow.file != NULL){ -- CONFIG_CHUNK(str, size, n, ",", 0); -- CONFIG_CHUNK(str, size, n, ubd->cow.file, 1); -+ if(dev->cow.file != NULL){ -+ CONFIG_CHUNK(str, size, len, ",", 0); -+ CONFIG_CHUNK(str, size, len, dev->cow.file, 1); - } -- else CONFIG_CHUNK(str, size, n, "", 1); -+ else CONFIG_CHUNK(str, size, len, "", 1); +@@ -210,7 +219,7 @@ - out: - spin_unlock(&ubd_lock); -- return(n); -+ return(len); + static int __init mode_tt_setup(char *line, int *add) + { +- printk("CONFIG_MODE_TT disabled - 'mode=tt' ignored\n"); ++ printf("CONFIG_MODE_TT disabled - 'mode=tt' ignored\n"); + return(0); } - static int ubd_remove(char *str) -@@ -604,11 +688,9 @@ - struct ubd *dev; - int n, err = -ENODEV; - -- if(!isdigit(*str)) -- return(err); /* it should be a number 0-7/a-h */ -+ n = parse_unit(&str); +@@ -221,7 +230,7 @@ -- n = *str - '0'; -- if(n >= MAX_DEV) -+ if((n < 0) || (n >= MAX_DEV)) - return(err); + static int __init mode_tt_setup(char *line, int *add) + { +- printk("CONFIG_MODE_SKAS disabled - 'mode=tt' redundant\n"); ++ printf("CONFIG_MODE_SKAS disabled - 'mode=tt' redundant\n"); + return(0); + } - dev = &ubd_dev[n]; -@@ -669,7 +751,7 @@ - - elevator_init(ubd_queue, &elevator_noop); +@@ -291,7 +300,7 @@ -- if (fake_major != 0) { -+ if (fake_major != MAJOR_NR) { - char name[sizeof("ubd_nnn\0")]; + /* Set during early boot */ + unsigned long brk_start; +-static struct vm_reserved kernel_vm_reserved; ++unsigned long end_iomem; - snprintf(name, sizeof(name), "ubd_%d", fake_major); -@@ -696,6 +778,7 @@ - io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *), - &thread_fd); - if(io_pid < 0){ -+ io_pid = -1; - printk(KERN_ERR - "ubd : Failed to start I/O thread (errno = %d) - " - "falling back to synchronous I/O\n", -io_pid); -@@ -703,8 +786,8 @@ - } - err = um_request_irq(UBD_IRQ, thread_fd, IRQ_READ, ubd_intr, - SA_INTERRUPT, "ubd", ubd_dev); -- if(err != 0) printk(KERN_ERR -- "um_request_irq failed - errno = %d\n", -err); -+ if(err != 0) -+ printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); - return(err); - } + #define MIN_VMALLOC (32 * 1024 * 1024) -@@ -714,15 +797,9 @@ +@@ -299,7 +308,7 @@ { - struct gendisk *disk = inode->i_bdev->bd_disk; - struct ubd *dev = disk->private_data; -- int err = -EISDIR; -- -- if(dev->is_dir == 1) -- goto out; -+ int err = 0; + unsigned long avail; + unsigned long virtmem_size, max_physmem; +- unsigned int i, add, err; ++ unsigned int i, add; -- err = 0; - if(dev->count == 0){ -- dev->openflags = dev->boot_openflags; + for (i = 1; i < argc; i++){ + if((i == 1) && (argv[i][0] == ' ')) continue; +@@ -328,12 +337,16 @@ + argv1_end = &argv[1][strlen(argv[1])]; + #endif + +- set_usable_vm(uml_physmem, get_kmem_end()); - - err = ubd_open_dev(dev); - if(err){ - printk(KERN_ERR "%s: Can't open \"%s\": errno = %d\n", -@@ -749,62 +826,156 @@ - return(0); - } - --void cowify_req(struct io_thread_req *req, struct ubd *dev) -+static void cowify_bitmap(__u64 io_offset, int length, unsigned long *cow_mask, -+ __u64 *cow_offset, unsigned long *bitmap, -+ __u64 bitmap_offset, unsigned long *bitmap_words, -+ __u64 bitmap_len) -+{ -+ __u64 sector = io_offset >> 9; -+ int i, update_bitmap = 0; -+ -+ for(i = 0; i < length >> 9; i++){ -+ if(cow_mask != NULL) -+ ubd_set_bit(i, (unsigned char *) cow_mask); -+ if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) -+ continue; + highmem = 0; +- max_physmem = get_kmem_end() - uml_physmem - MIN_VMALLOC; +- if(physmem_size > max_physmem){ +- highmem = physmem_size - max_physmem; ++ iomem_size = (iomem_size + PAGE_SIZE - 1) & PAGE_MASK; ++ max_physmem = get_kmem_end() - uml_physmem - iomem_size - MIN_VMALLOC; + -+ update_bitmap = 1; -+ ubd_set_bit(sector + i, (unsigned char *) bitmap); ++ /* Zones have to begin on a 1 << MAX_ORDER page boundary, ++ * so this makes sure that's true for highmem ++ */ ++ max_physmem &= ~((1 << (PAGE_SHIFT + MAX_ORDER)) - 1); ++ if(physmem_size + iomem_size > max_physmem){ ++ highmem = physmem_size + iomem_size - max_physmem; + physmem_size -= highmem; + #ifndef CONFIG_HIGHMEM + highmem = 0; +@@ -343,11 +356,19 @@ + } + + high_physmem = uml_physmem + physmem_size; +- high_memory = (void *) high_physmem; ++ end_iomem = high_physmem + iomem_size; ++ high_memory = (void *) end_iomem; + + start_vm = VMALLOC_START; + +- setup_physmem(uml_physmem, uml_reserved, physmem_size); ++ setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem); ++ if(init_maps(physmem_size, iomem_size, highmem)){ ++ printf("Failed to allocate mem_map for %ld bytes of physical " ++ "memory and %ld bytes of highmem\n", physmem_size, ++ highmem); ++ exit(1); + } + -+ if(!update_bitmap) -+ return; -+ -+ *cow_offset = sector / (sizeof(unsigned long) * 8); + virtmem_size = physmem_size; + avail = get_kmem_end() - start_vm; + if(physmem_size > avail) virtmem_size = avail; +@@ -357,28 +378,26 @@ + printf("Kernel virtual memory size shrunk to %ld bytes\n", + virtmem_size); + +- err = reserve_vm(high_physmem, end_vm, &kernel_vm_reserved); +- if(err){ +- printf("Failed to reserve VM area for kernel VM\n"); +- exit(1); +- } +- + uml_postsetup(); + + init_task.thread.kernel_stack = (unsigned long) &init_thread_info + + 2 * PAGE_SIZE; + + task_protections((unsigned long) &init_thread_info); ++ os_flush_stdout(); + + return(CHOOSE_MODE(start_uml_tt(), start_uml_skas())); + } + ++extern int uml_exitcode; + -+ /* This takes care of the case where we're exactly at the end of the -+ * device, and *cow_offset + 1 is off the end. So, just back it up -+ * by one word. Thanks to Lynn Kerby for the fix and James McMechan -+ * for the original diagnosis. -+ */ -+ if(*cow_offset == ((bitmap_len + sizeof(unsigned long) - 1) / -+ sizeof(unsigned long) - 1)) -+ (*cow_offset)--; + static int panic_exit(struct notifier_block *self, unsigned long unused1, + void *unused2) + { + #ifdef CONFIG_MAGIC_SYSRQ +- handle_sysrq('p', ¤t->thread.regs, NULL, NULL); ++ handle_sysrq('p', ¤t->thread.regs, NULL); + #endif ++ uml_exitcode = 1; + machine_halt(); + return(0); + } +@@ -403,6 +422,11 @@ + arch_check_bugs(); + check_ptrace(); + check_sigio(); ++ check_devanon(); ++} + -+ bitmap_words[0] = bitmap[*cow_offset]; -+ bitmap_words[1] = bitmap[*cow_offset + 1]; ++void apply_alternatives(void *start, void *end) ++{ + } + + /* +Index: uml-2.6.7/arch/um/kernel/mem.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/mem.c 2004-07-16 19:36:30.355531720 +0300 ++++ uml-2.6.7/arch/um/kernel/mem.c 2004-07-16 19:47:23.720205192 +0300 +@@ -1,74 +1,66 @@ + /* +- * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +-#include "linux/config.h" +-#include "linux/module.h" +-#include "linux/types.h" ++#include "linux/stddef.h" ++#include "linux/kernel.h" + #include "linux/mm.h" +-#include "linux/fs.h" +-#include "linux/init.h" + #include "linux/bootmem.h" + #include "linux/swap.h" +-#include "linux/slab.h" +-#include "linux/vmalloc.h" + #include "linux/highmem.h" ++#include "linux/gfp.h" + #include "asm/page.h" +-#include "asm/pgtable.h" ++#include "asm/fixmap.h" + #include "asm/pgalloc.h" +-#include "asm/bitops.h" +-#include "asm/uaccess.h" +-#include "asm/tlb.h" + #include "user_util.h" + #include "kern_util.h" +-#include "mem_user.h" +-#include "mem.h" + #include "kern.h" +-#include "init.h" +-#include "os.h" +-#include "mode_kern.h" ++#include "mem_user.h" + #include "uml_uaccess.h" ++#include "os.h" + -+ *cow_offset *= sizeof(unsigned long); -+ *cow_offset += bitmap_offset; ++extern char __binary_start; + + /* Changed during early boot */ +-pgd_t swapper_pg_dir[1024]; +-unsigned long high_physmem; +-unsigned long vm_start; +-unsigned long vm_end; +-unsigned long highmem; + unsigned long *empty_zero_page = NULL; + unsigned long *empty_bad_page = NULL; +- +-/* Not modified */ +-const char bad_pmd_string[] = "Bad pmd in pte_alloc: %08lx\n"; +- +-extern char __init_begin, __init_end; +-extern long physmem_size; +- +-/* Not changed by UML */ +-DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); +- +-/* Changed during early boot */ ++pgd_t swapper_pg_dir[1024]; ++unsigned long highmem; + int kmalloc_ok = 0; + +-#define NREGIONS (phys_region_index(0xffffffff) - phys_region_index(0x0) + 1) +-struct mem_region *regions[NREGIONS] = { [ 0 ... NREGIONS - 1 ] = NULL }; +-#define REGION_SIZE ((0xffffffff & ~REGION_MASK) + 1) +- +-/* Changed during early boot */ + static unsigned long brk_end; + ++void unmap_physmem(void) ++{ ++ os_unmap_memory((void *) brk_end, uml_reserved - brk_end); +} + -+static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, -+ __u64 bitmap_offset, __u64 bitmap_len) + static void map_cb(void *unused) { -- int i, update_bitmap, sector = req->offset >> 9; -+ __u64 sector = req->offset >> 9; + map_memory(brk_end, __pa(brk_end), uml_reserved - brk_end, 1, 1, 0); + } + +-void unmap_physmem(void) ++#ifdef CONFIG_HIGHMEM ++static void setup_highmem(unsigned long highmem_start, ++ unsigned long highmem_len) + { +- os_unmap_memory((void *) brk_end, uml_reserved - brk_end); +-} ++ struct page *page; ++ unsigned long highmem_pfn; + int i; - if(req->length > (sizeof(req->sector_mask) * 8) << 9) - panic("Operation too long"); +-extern char __binary_start; ++ highmem_start_page = virt_to_page(highmem_start); + - if(req->op == UBD_READ) { - for(i = 0; i < req->length >> 9; i++){ -- if(ubd_test_bit(sector + i, (unsigned char *) -- dev->cow.bitmap)){ -+ if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) - ubd_set_bit(i, (unsigned char *) - &req->sector_mask); -- } - } -- } -- else { -- update_bitmap = 0; -- for(i = 0; i < req->length >> 9; i++){ -- ubd_set_bit(i, (unsigned char *) -- &req->sector_mask); -- if(!ubd_test_bit(sector + i, (unsigned char *) -- dev->cow.bitmap)) -- update_bitmap = 1; -- ubd_set_bit(sector + i, (unsigned char *) -- dev->cow.bitmap); -- } -- if(update_bitmap){ -- req->cow_offset = sector / (sizeof(unsigned long) * 8); -- req->bitmap_words[0] = -- dev->cow.bitmap[req->cow_offset]; -- req->bitmap_words[1] = -- dev->cow.bitmap[req->cow_offset + 1]; -- req->cow_offset *= sizeof(unsigned long); -- req->cow_offset += dev->cow.bitmap_offset; ++ highmem_pfn = __pa(highmem_start) >> PAGE_SHIFT; ++ for(i = 0; i < highmem_len >> PAGE_SHIFT; i++){ ++ page = &mem_map[highmem_pfn + i]; ++ ClearPageReserved(page); ++ set_bit(PG_highmem, &page->flags); ++ set_page_count(page, 1); ++ __free_page(page); + } -+ else cowify_bitmap(req->offset, req->length, &req->sector_mask, -+ &req->cow_offset, bitmap, bitmap_offset, -+ req->bitmap_words, bitmap_len); +} -+ -+static int mmap_fd(struct request *req, struct ubd *dev, __u64 offset) -+{ -+ __u64 sector; -+ unsigned char *bitmap; -+ int bit, i; -+ -+ /* mmap must have been requested on the command line */ -+ if(!ubd_do_mmap) -+ return(-1); -+ -+ /* The buffer must be page aligned */ -+ if(((unsigned long) req->buffer % UBD_MMAP_BLOCK_SIZE) != 0) -+ return(-1); -+ -+ /* The request must be a page long */ -+ if((req->current_nr_sectors << 9) != PAGE_SIZE) -+ return(-1); -+ -+ if(dev->cow.file == NULL) -+ return(dev->fd); -+ -+ sector = offset >> 9; -+ bitmap = (unsigned char *) dev->cow.bitmap; -+ bit = ubd_test_bit(sector, bitmap); -+ -+ for(i = 1; i < req->current_nr_sectors; i++){ -+ if(ubd_test_bit(sector + i, bitmap) != bit) -+ return(-1); -+ } -+ -+ if(bit || (rq_data_dir(req) == WRITE)) -+ offset += dev->cow.data_offset; -+ -+ /* The data on disk must be page aligned */ -+ if((offset % UBD_MMAP_BLOCK_SIZE) != 0) -+ return(-1); -+ -+ return(bit ? dev->fd : dev->cow.fd); -+} -+ -+static int prepare_mmap_request(struct ubd *dev, int fd, __u64 offset, -+ struct request *req, -+ struct io_thread_req *io_req) -+{ -+ int err; -+ -+ if(rq_data_dir(req) == WRITE){ -+ /* Writes are almost no-ops since the new data is already in the -+ * host page cache -+ */ -+ dev->map_writes++; -+ if(dev->cow.file != NULL) -+ cowify_bitmap(io_req->offset, io_req->length, -+ &io_req->sector_mask, &io_req->cow_offset, -+ dev->cow.bitmap, dev->cow.bitmap_offset, -+ io_req->bitmap_words, -+ dev->cow.bitmap_len); -+ } -+ else { -+ int w; -+ -+ if((dev->cow.file != NULL) && (fd == dev->cow.fd)) -+ w = 0; -+ else w = dev->openflags.w; -+ -+ if((dev->cow.file != NULL) && (fd == dev->fd)) -+ offset += dev->cow.data_offset; -+ -+ err = physmem_subst_mapping(req->buffer, fd, offset, w); -+ if(err){ -+ printk("physmem_subst_mapping failed, err = %d\n", -+ -err); -+ return(1); - } -+ dev->map_reads++; - } -+ io_req->op = UBD_MMAP; -+ io_req->buffer = req->buffer; -+ return(0); - } ++#endif - static int prepare_request(struct request *req, struct io_thread_req *io_req) + void mem_init(void) { - struct gendisk *disk = req->rq_disk; - struct ubd *dev = disk->private_data; -- __u64 block; -- int nsect; -+ __u64 offset; -+ int len, fd; +@@ -103,50 +95,15 @@ + totalhigh_pages = highmem >> PAGE_SHIFT; + totalram_pages += totalhigh_pages; + num_physpages = totalram_pages; +- max_mapnr = totalram_pages; + max_pfn = totalram_pages; + printk(KERN_INFO "Memory: %luk available\n", + (unsigned long) nr_free_pages() << (PAGE_SHIFT-10)); + kmalloc_ok = 1; +-} +- +-/* Changed during early boot */ +-static unsigned long kmem_top = 0; +- +-unsigned long get_kmem_end(void) +-{ +- if(kmem_top == 0) +- kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); +- return(kmem_top); +-} +- +-void set_kmem_end(unsigned long new) +-{ +- kmem_top = new; +-} - if(req->rq_status == RQ_INACTIVE) return(1); + #ifdef CONFIG_HIGHMEM +-/* Changed during early boot */ +-pte_t *kmap_pte; +-pgprot_t kmap_prot; +- +-EXPORT_SYMBOL(kmap_prot); +-EXPORT_SYMBOL(kmap_pte); +- +-#define kmap_get_fixmap_pte(vaddr) \ +- pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) +- +-void __init kmap_init(void) +-{ +- unsigned long kmap_vstart; +- +- /* cache the first kmap pte */ +- kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN); +- kmap_pte = kmap_get_fixmap_pte(kmap_vstart); +- +- kmap_prot = PAGE_KERNEL; ++ setup_highmem(end_iomem, highmem); ++#endif + } +-#endif /* CONFIG_HIGHMEM */ -- if(dev->is_dir){ -- strcpy(req->buffer, "HOSTFS:"); -- strcat(req->buffer, dev->file); -- spin_lock(&ubd_io_lock); -- end_request(req, 1); -- spin_unlock(&ubd_io_lock); -- return(1); + static void __init fixrange_init(unsigned long start, unsigned long end, + pgd_t *pgd_base) +@@ -178,76 +135,24 @@ + } + } + +-int init_maps(struct mem_region *region) +-{ +- struct page *p, *map; +- int i, n, len; +- +- if(region == &physmem_region){ +- region->mem_map = mem_map; +- return(0); - } +- else if(region->mem_map != NULL) return(0); - - if((rq_data_dir(req) == WRITE) && !dev->openflags.w){ - printk("Write attempted on readonly ubd device %s\n", - disk->disk_name); -@@ -814,23 +985,49 @@ - return(1); - } +- n = region->len >> PAGE_SHIFT; +- len = n * sizeof(struct page); +- if(kmalloc_ok){ +- map = kmalloc(len, GFP_KERNEL); +- if(map == NULL) map = vmalloc(len); +- } +- else map = alloc_bootmem_low_pages(len); +- +- if(map == NULL) +- return(-ENOMEM); +- for(i = 0; i < n; i++){ +- p = &map[i]; +- set_page_count(p, 0); +- SetPageReserved(p); +- INIT_LIST_HEAD(&p->list); +- } +- region->mem_map = map; +- return(0); +-} ++#if CONFIG_HIGHMEM ++pte_t *kmap_pte; ++pgprot_t kmap_prot; -- block = req->sector; -- nsect = req->current_nr_sectors; -+ offset = ((__u64) req->sector) << 9; -+ len = req->current_nr_sectors << 9; +-DECLARE_MUTEX(regions_sem); ++#define kmap_get_fixmap_pte(vaddr) \ ++ pte_offset(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) -- io_req->op = rq_data_dir(req) == READ ? UBD_READ : UBD_WRITE; - io_req->fds[0] = (dev->cow.file != NULL) ? dev->cow.fd : dev->fd; - io_req->fds[1] = dev->fd; -+ io_req->map_fd = -1; -+ io_req->cow_offset = -1; -+ io_req->offset = offset; -+ io_req->length = len; -+ io_req->error = 0; -+ io_req->sector_mask = 0; -+ -+ fd = mmap_fd(req, dev, io_req->offset); -+ if(fd > 0){ -+ /* If mmapping is otherwise OK, but the first access to the -+ * page is a write, then it's not mapped in yet. So we have -+ * to write the data to disk first, then we can map the disk -+ * page in and continue normally from there. -+ */ -+ if((rq_data_dir(req) == WRITE) && !is_remapped(req->buffer)){ -+ io_req->map_fd = dev->fd; -+ io_req->map_offset = io_req->offset + -+ dev->cow.data_offset; -+ dev->write_maps++; -+ } -+ else return(prepare_mmap_request(dev, fd, io_req->offset, req, -+ io_req)); -+ } -+ -+ if(rq_data_dir(req) == READ) -+ dev->nomap_reads++; -+ else dev->nomap_writes++; -+ -+ io_req->op = (rq_data_dir(req) == READ) ? UBD_READ : UBD_WRITE; - io_req->offsets[0] = 0; - io_req->offsets[1] = dev->cow.data_offset; -- io_req->offset = ((__u64) block) << 9; -- io_req->length = nsect << 9; - io_req->buffer = req->buffer; - io_req->sectorsize = 1 << 9; -- io_req->sector_mask = 0; -- io_req->cow_offset = -1; -- io_req->error = 0; +-static int setup_one_range(int fd, char *driver, unsigned long start, +- unsigned long pfn, int len, +- struct mem_region *region) ++void __init kmap_init(void) + { +- int i; +- +- down(®ions_sem); +- for(i = 0; i < NREGIONS; i++){ +- if(regions[i] == NULL) break; +- } +- if(i == NREGIONS){ +- printk("setup_range : no free regions\n"); +- i = -1; +- goto out; +- } +- +- if(fd == -1) +- fd = create_mem_file(len); ++ unsigned long kmap_vstart; -- if(dev->cow.file != NULL) cowify_req(io_req, dev); -+ if(dev->cow.file != NULL) -+ cowify_req(io_req, dev->cow.bitmap, dev->cow.bitmap_offset, -+ dev->cow.bitmap_len); -+ - return(0); - } +- if(region == NULL){ +- region = alloc_bootmem_low_pages(sizeof(*region)); +- if(region == NULL) +- panic("Failed to allocating mem_region"); +- } ++ /* cache the first kmap pte */ ++ kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN); ++ kmap_pte = kmap_get_fixmap_pte(kmap_vstart); -@@ -841,7 +1038,7 @@ - int err, n; +- *region = ((struct mem_region) { .driver = driver, +- .start_pfn = pfn, +- .start = start, +- .len = len, +- .fd = fd } ); +- regions[i] = region; +- out: +- up(®ions_sem); +- return(i); ++ kmap_prot = PAGE_KERNEL; + } - if(thread_fd == -1){ -- while(!list_empty(&q->queue_head)){ -+ while(!elv_queue_empty(q)){ - req = elv_next_request(q); - err = prepare_request(req, &io_req); - if(!err){ -@@ -851,7 +1048,8 @@ - } - } - else { -- if(do_ubd || list_empty(&q->queue_head)) return; -+ if(do_ubd || elv_queue_empty(q)) -+ return; - req = elv_next_request(q); - err = prepare_request(req, &io_req); - if(!err){ -@@ -885,7 +1083,7 @@ - g.heads = 128; - g.sectors = 32; - g.cylinders = dev->size / (128 * 32 * 512); -- g.start = 2; -+ g.start = get_start_sect(inode->i_bdev); - return(copy_to_user(loc, &g, sizeof(g)) ? -EFAULT : 0); +-#ifdef CONFIG_HIGHMEM + static void init_highmem(void) + { + pgd_t *pgd; +@@ -268,63 +173,20 @@ - case HDIO_SET_UNMASKINTR: -@@ -935,6 +1133,142 @@ - return(-EINVAL); + kmap_init(); } +- +-void setup_highmem(unsigned long len) +-{ +- struct mem_region *region; +- struct page *page, *map; +- unsigned long phys; +- int i, cur, index; +- +- phys = physmem_size; +- do { +- cur = min(len, (unsigned long) REGION_SIZE); +- i = setup_one_range(-1, NULL, -1, phys >> PAGE_SHIFT, cur, +- NULL); +- if(i == -1){ +- printk("setup_highmem - setup_one_range failed\n"); +- return; +- } +- region = regions[i]; +- index = phys / PAGE_SIZE; +- region->mem_map = &mem_map[index]; +- +- map = region->mem_map; +- for(i = 0; i < (cur >> PAGE_SHIFT); i++){ +- page = &map[i]; +- ClearPageReserved(page); +- set_bit(PG_highmem, &page->flags); +- set_page_count(page, 1); +- __free_page(page); +- } +- phys += cur; +- len -= cur; +- } while(len > 0); +-} +-#endif ++#endif /* CONFIG_HIGHMEM */ -+static int ubd_check_remapped(int fd, unsigned long address, int is_write, -+ __u64 offset) -+{ -+ __u64 bitmap_offset; -+ unsigned long new_bitmap[2]; -+ int i, err, n; -+ -+ /* If it's not a write access, we can't do anything about it */ -+ if(!is_write) -+ return(0); -+ -+ /* We have a write */ -+ for(i = 0; i < sizeof(ubd_dev) / sizeof(ubd_dev[0]); i++){ -+ struct ubd *dev = &ubd_dev[i]; -+ -+ if((dev->fd != fd) && (dev->cow.fd != fd)) -+ continue; -+ -+ /* It's a write to a ubd device */ -+ -+ if(!dev->openflags.w){ -+ /* It's a write access on a read-only device - probably -+ * shouldn't happen. If the kernel is trying to change -+ * something with no intention of writing it back out, -+ * then this message will clue us in that this needs -+ * fixing -+ */ -+ printk("Write access to mapped page from readonly ubd " -+ "device %d\n", i); -+ return(0); -+ } -+ -+ /* It's a write to a writeable ubd device - it must be COWed -+ * because, otherwise, the page would have been mapped in -+ * writeable -+ */ -+ -+ if(!dev->cow.file) -+ panic("Write fault on writeable non-COW ubd device %d", -+ i); -+ -+ /* It should also be an access to the backing file since the -+ * COW pages should be mapped in read-write -+ */ -+ -+ if(fd == dev->fd) -+ panic("Write fault on a backing page of ubd " -+ "device %d\n", i); -+ -+ /* So, we do the write, copying the backing data to the COW -+ * file... -+ */ -+ -+ err = os_seek_file(dev->fd, offset + dev->cow.data_offset); -+ if(err < 0) -+ panic("Couldn't seek to %lld in COW file of ubd " -+ "device %d, err = %d", -+ offset + dev->cow.data_offset, i, -err); -+ -+ n = os_write_file(dev->fd, (void *) address, PAGE_SIZE); -+ if(n != PAGE_SIZE) -+ panic("Couldn't copy data to COW file of ubd " -+ "device %d, err = %d", i, -n); -+ -+ /* ... updating the COW bitmap... */ -+ -+ cowify_bitmap(offset, PAGE_SIZE, NULL, &bitmap_offset, -+ dev->cow.bitmap, dev->cow.bitmap_offset, -+ new_bitmap, dev->cow.bitmap_len); -+ -+ err = os_seek_file(dev->fd, bitmap_offset); -+ if(err < 0) -+ panic("Couldn't seek to %lld in COW file of ubd " -+ "device %d, err = %d", bitmap_offset, i, -err); -+ -+ n = os_write_file(dev->fd, new_bitmap, sizeof(new_bitmap)); -+ if(n != sizeof(new_bitmap)) -+ panic("Couldn't update bitmap of ubd device %d, " -+ "err = %d", i, -n); -+ -+ /* Maybe we can map the COW page in, and maybe we can't. If -+ * it is a pre-V3 COW file, we can't, since the alignment will -+ * be wrong. If it is a V3 or later COW file which has been -+ * moved to a system with a larger page size, then maybe we -+ * can't, depending on the exact location of the page. -+ */ -+ -+ offset += dev->cow.data_offset; -+ -+ /* Remove the remapping, putting the original anonymous page -+ * back. If the COW file can be mapped in, that is done. -+ * Otherwise, the COW page is read in. -+ */ + void paging_init(void) + { +- struct mem_region *region; +- unsigned long zones_size[MAX_NR_ZONES], start, end, vaddr; +- int i, index; ++ unsigned long zones_size[MAX_NR_ZONES], vaddr; ++ int i; + + empty_zero_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE); + empty_bad_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE); + for(i=0;i> PAGE_SHIFT) - +- (uml_physmem >> PAGE_SHIFT); ++ zones_size[0] = (end_iomem >> PAGE_SHIFT) - (uml_physmem >> PAGE_SHIFT); + zones_size[2] = highmem >> PAGE_SHIFT; + free_area_init(zones_size); +- start = phys_region_index(__pa(uml_physmem)); +- end = phys_region_index(__pa(high_physmem - 1)); +- for(i = start; i <= end; i++){ +- region = regions[i]; +- index = (region->start - uml_physmem) / PAGE_SIZE; +- region->mem_map = &mem_map[index]; +- if(i > start) free_bootmem(__pa(region->start), region->len); +- } + + /* + * Fixed mappings, only the page table structure has to be +@@ -335,15 +197,33 @@ + + #ifdef CONFIG_HIGHMEM + init_highmem(); +- setup_highmem(highmem); + #endif + } + +-pte_t __bad_page(void) ++struct page *arch_validate(struct page *page, int mask, int order) + { +- clear_page(empty_bad_page); +- return pte_mkdirty(mk_pte((struct page *) empty_bad_page, +- PAGE_SHARED)); ++ unsigned long addr, zero = 0; ++ int i; + -+ if(!physmem_remove_mapping((void *) address)) -+ panic("Address 0x%lx not remapped by ubd device %d", -+ address, i); -+ if((offset % UBD_MMAP_BLOCK_SIZE) == 0) -+ physmem_subst_mapping((void *) address, dev->fd, -+ offset, 1); -+ else { -+ err = os_seek_file(dev->fd, offset); -+ if(err < 0) -+ panic("Couldn't seek to %lld in COW file of " -+ "ubd device %d, err = %d", offset, i, -+ -err); ++ again: ++ if(page == NULL) return(page); ++ if(PageHighMem(page)) return(page); + -+ n = os_read_file(dev->fd, (void *) address, PAGE_SIZE); -+ if(n != PAGE_SIZE) -+ panic("Failed to read page from offset %llx of " -+ "COW file of ubd device %d, err = %d", -+ offset, i, -n); ++ addr = (unsigned long) page_address(page); ++ for(i = 0; i < (1 << order); i++){ ++ current->thread.fault_addr = (void *) addr; ++ if(__do_copy_to_user((void *) addr, &zero, ++ sizeof(zero), ++ ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)){ ++ if(!(mask & __GFP_WAIT)) return(NULL); ++ else break; + } -+ -+ return(1); ++ addr += PAGE_SIZE; + } -+ -+ /* It's not a write on a ubd device */ -+ return(0); -+} -+ -+static struct remapper ubd_remapper = { -+ .list = LIST_HEAD_INIT(ubd_remapper.list), -+ .proc = ubd_check_remapped, -+}; -+ -+static int ubd_remapper_setup(void) -+{ -+ if(ubd_do_mmap) -+ register_remapper(&ubd_remapper); -+ -+ return(0); -+} -+ -+__initcall(ubd_remapper_setup); -+ - /* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/drivers/ubd_user.c b/arch/um/drivers/ubd_user.c ---- a/arch/um/drivers/ubd_user.c 2004-03-10 08:20:33.000000000 -0500 -+++ b/arch/um/drivers/ubd_user.c 2004-03-10 08:36:14.000000000 -0500 -@@ -11,11 +11,8 @@ - #include - #include - #include --#include - #include --#include - #include --#include - #include - #include - #include "asm/types.h" -@@ -24,146 +21,30 @@ - #include "user.h" - #include "ubd_user.h" - #include "os.h" -+#include "cow.h" ++ if(i == (1 << order)) return(page); ++ page = alloc_pages(mask, order); ++ goto again; + } - #include - #include --#if __BYTE_ORDER == __BIG_ENDIAN --# define ntohll(x) (x) --# define htonll(x) (x) --#elif __BYTE_ORDER == __LITTLE_ENDIAN --# define ntohll(x) bswap_64(x) --# define htonll(x) bswap_64(x) --#else --#error "__BYTE_ORDER not defined" --#endif + /* This can't do anything because nothing in the kernel image can be freed +@@ -401,395 +281,6 @@ + printk("%d pages swap cached\n", cached); + } + +-static int __init uml_mem_setup(char *line, int *add) +-{ +- char *retptr; +- physmem_size = memparse(line,&retptr); +- return 0; +-} +-__uml_setup("mem=", uml_mem_setup, +-"mem=\n" +-" This controls how much \"physical\" memory the kernel allocates\n" +-" for the system. The size is specified as a number followed by\n" +-" one of 'k', 'K', 'm', 'M', which have the obvious meanings.\n" +-" This is not related to the amount of memory in the physical\n" +-" machine. It can be more, and the excess, if it's ever used, will\n" +-" just be swapped out.\n Example: mem=64M\n\n" +-); - --#define PATH_LEN_V1 256 +-struct page *arch_validate(struct page *page, int mask, int order) +-{ +- unsigned long addr, zero = 0; +- int i; - --struct cow_header_v1 { -- int magic; -- int version; -- char backing_file[PATH_LEN_V1]; -- time_t mtime; -- __u64 size; -- int sectorsize; --}; +- again: +- if(page == NULL) return(page); +- if(PageHighMem(page)) return(page); - --#define PATH_LEN_V2 MAXPATHLEN +- addr = (unsigned long) page_address(page); +- for(i = 0; i < (1 << order); i++){ +- current->thread.fault_addr = (void *) addr; +- if(__do_copy_to_user((void *) addr, &zero, +- sizeof(zero), +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher)){ +- if(!(mask & __GFP_WAIT)) return(NULL); +- else break; +- } +- addr += PAGE_SIZE; +- } +- if(i == (1 << order)) return(page); +- page = alloc_pages(mask, order); +- goto again; +-} - --struct cow_header_v2 { -- unsigned long magic; -- unsigned long version; -- char backing_file[PATH_LEN_V2]; -- time_t mtime; -- __u64 size; -- int sectorsize; --}; +-DECLARE_MUTEX(vm_reserved_sem); +-static struct list_head vm_reserved = LIST_HEAD_INIT(vm_reserved); - --union cow_header { -- struct cow_header_v1 v1; -- struct cow_header_v2 v2; +-/* Static structures, linked in to the list in early boot */ +-static struct vm_reserved head = { +- .list = LIST_HEAD_INIT(head.list), +- .start = 0, +- .end = 0xffffffff -}; - --#define COW_MAGIC 0x4f4f4f4d /* MOOO */ --#define COW_VERSION 2 +-static struct vm_reserved tail = { +- .list = LIST_HEAD_INIT(tail.list), +- .start = 0, +- .end = 0xffffffff +-}; - --static void sizes(__u64 size, int sectorsize, int bitmap_offset, -- unsigned long *bitmap_len_out, int *data_offset_out) +-void set_usable_vm(unsigned long start, unsigned long end) -{ -- *bitmap_len_out = (size + sectorsize - 1) / (8 * sectorsize); -- -- *data_offset_out = bitmap_offset + *bitmap_len_out; -- *data_offset_out = (*data_offset_out + sectorsize - 1) / sectorsize; -- *data_offset_out *= sectorsize; +- list_add(&head.list, &vm_reserved); +- list_add(&tail.list, &head.list); +- head.end = start; +- tail.start = end; -} - --static int read_cow_header(int fd, int *magic_out, char **backing_file_out, -- time_t *mtime_out, __u64 *size_out, -- int *sectorsize_out, int *bitmap_offset_out) +-int reserve_vm(unsigned long start, unsigned long end, void *e) +- -{ -- union cow_header *header; -- char *file; -- int err, n; -- unsigned long version, magic; +- struct vm_reserved *entry = e, *reserved, *prev; +- struct list_head *ele; +- int err; - -- header = um_kmalloc(sizeof(*header)); -- if(header == NULL){ -- printk("read_cow_header - Failed to allocate header\n"); -- return(-ENOMEM); +- down(&vm_reserved_sem); +- list_for_each(ele, &vm_reserved){ +- reserved = list_entry(ele, struct vm_reserved, list); +- if(reserved->start >= end) goto found; - } -- err = -EINVAL; -- n = read(fd, header, sizeof(*header)); -- if(n < offsetof(typeof(header->v1), backing_file)){ -- printk("read_cow_header - short header\n"); +- panic("Reserved vm out of range"); +- found: +- prev = list_entry(ele->prev, struct vm_reserved, list); +- if(prev->end > start) +- panic("Can't reserve vm"); +- if(entry == NULL) +- entry = kmalloc(sizeof(*entry), GFP_KERNEL); +- if(entry == NULL){ +- printk("reserve_vm : Failed to allocate entry\n"); +- err = -ENOMEM; - goto out; - } +- *entry = ((struct vm_reserved) +- { .list = LIST_HEAD_INIT(entry->list), +- .start = start, +- .end = end }); +- list_add(&entry->list, &prev->list); +- err = 0; +- out: +- up(&vm_reserved_sem); +- return(0); +-} - -- magic = header->v1.magic; -- if(magic == COW_MAGIC) { -- version = header->v1.version; -- } -- else if(magic == ntohl(COW_MAGIC)){ -- version = ntohl(header->v1.version); +-unsigned long get_vm(unsigned long len) +-{ +- struct vm_reserved *this, *next; +- struct list_head *ele; +- unsigned long start; +- int err; +- +- down(&vm_reserved_sem); +- list_for_each(ele, &vm_reserved){ +- this = list_entry(ele, struct vm_reserved, list); +- next = list_entry(ele->next, struct vm_reserved, list); +- if((this->start < next->start) && +- (this->end + len + PAGE_SIZE <= next->start)) +- goto found; - } -- else goto out; +- up(&vm_reserved_sem); +- return(0); +- found: +- up(&vm_reserved_sem); +- start = (unsigned long) UML_ROUND_UP(this->end) + PAGE_SIZE; +- err = reserve_vm(start, start + len, NULL); +- if(err) return(0); +- return(start); +-} - -- *magic_out = COW_MAGIC; +-int nregions(void) +-{ +- return(NREGIONS); +-} - -- if(version == 1){ -- if(n < sizeof(header->v1)){ -- printk("read_cow_header - failed to read V1 header\n"); -- goto out; -- } -- *mtime_out = header->v1.mtime; -- *size_out = header->v1.size; -- *sectorsize_out = header->v1.sectorsize; -- *bitmap_offset_out = sizeof(header->v1); -- file = header->v1.backing_file; -- } -- else if(version == 2){ -- if(n < sizeof(header->v2)){ -- printk("read_cow_header - failed to read V2 header\n"); -- goto out; +-void setup_range(int fd, char *driver, unsigned long start, unsigned long pfn, +- unsigned long len, int need_vm, struct mem_region *region, +- void *reserved) +-{ +- int i, cur; +- +- do { +- cur = min(len, (unsigned long) REGION_SIZE); +- i = setup_one_range(fd, driver, start, pfn, cur, region); +- region = regions[i]; +- if(need_vm && setup_region(region, reserved)){ +- kfree(region); +- regions[i] = NULL; +- return; - } -- *mtime_out = ntohl(header->v2.mtime); -- *size_out = ntohll(header->v2.size); -- *sectorsize_out = ntohl(header->v2.sectorsize); -- *bitmap_offset_out = sizeof(header->v2); -- file = header->v2.backing_file; -- } -- else { -- printk("read_cow_header - invalid COW version\n"); -- goto out; -- } -- err = -ENOMEM; -- *backing_file_out = uml_strdup(file); -- if(*backing_file_out == NULL){ -- printk("read_cow_header - failed to allocate backing file\n"); -- goto out; -- } -- err = 0; -- out: -- kfree(header); -- return(err); --} - - static int same_backing_files(char *from_cmdline, char *from_cow, char *cow) - { -- struct stat buf1, buf2; -+ struct uml_stat buf1, buf2; -+ int err; - - if(from_cmdline == NULL) return(1); - if(!strcmp(from_cmdline, from_cow)) return(1); - -- if(stat(from_cmdline, &buf1) < 0){ -- printk("Couldn't stat '%s', errno = %d\n", from_cmdline, -- errno); -+ err = os_stat_file(from_cmdline, &buf1); -+ if(err < 0){ -+ printk("Couldn't stat '%s', err = %d\n", from_cmdline, -err); - return(1); - } -- if(stat(from_cow, &buf2) < 0){ -- printk("Couldn't stat '%s', errno = %d\n", from_cow, errno); -+ err = os_stat_file(from_cow, &buf2); -+ if(err < 0){ -+ printk("Couldn't stat '%s', err = %d\n", from_cow, -err); - return(1); - } -- if((buf1.st_dev == buf2.st_dev) && (buf1.st_ino == buf2.st_ino)) -+ if((buf1.ust_dev == buf2.ust_dev) && (buf1.ust_ino == buf2.ust_ino)) - return(1); - - printk("Backing file mismatch - \"%s\" requested,\n" -@@ -174,20 +55,21 @@ - - static int backing_file_mismatch(char *file, __u64 size, time_t mtime) - { -- struct stat64 buf; -+ unsigned long modtime; - long long actual; - int err; - -- if(stat64(file, &buf) < 0){ -- printk("Failed to stat backing file \"%s\", errno = %d\n", -- file, errno); -- return(-errno); -+ err = os_file_modtime(file, &modtime); -+ if(err < 0){ -+ printk("Failed to get modification time of backing file " -+ "\"%s\", err = %d\n", file, -err); -+ return(err); - } - - err = os_file_size(file, &actual); -- if(err){ -+ if(err < 0){ - printk("Failed to get size of backing file \"%s\", " -- "errno = %d\n", file, -err); -+ "err = %d\n", file, -err); - return(err); - } - -@@ -196,9 +78,9 @@ - "file\n", size, actual); - return(-EINVAL); - } -- if(buf.st_mtime != mtime){ -+ if(modtime != mtime){ - printk("mtime mismatch (%ld vs %ld) of COW header vs backing " -- "file\n", mtime, buf.st_mtime); -+ "file\n", mtime, modtime); - return(-EINVAL); - } - return(0); -@@ -209,124 +91,16 @@ - int err; - - err = os_seek_file(fd, offset); -- if(err != 0) return(-errno); -- err = read(fd, buf, len); -- if(err < 0) return(-errno); -- return(0); +- start += cur; +- if(pfn != -1) pfn += cur; +- len -= cur; +- } while(len > 0); -} -+ if(err < 0) -+ return(err); - --static int absolutize(char *to, int size, char *from) +- +-struct iomem { +- char *name; +- int fd; +- unsigned long size; +-}; +- +-/* iomem regions can only be added on the command line at the moment. +- * Locking will be needed when they can be added via mconsole. +- */ +- +-struct iomem iomem_regions[NREGIONS] = { [ 0 ... NREGIONS - 1 ] = +- { .name = NULL, +- .fd = -1, +- .size = 0 } }; +- +-int num_iomem_regions = 0; +- +-void add_iomem(char *name, int fd, unsigned long size) -{ -- char save_cwd[256], *slash; -- int remaining; -+ err = os_read_file(fd, buf, len); -+ if(err < 0) -+ return(err); - -- if(getcwd(save_cwd, sizeof(save_cwd)) == NULL) { -- printk("absolutize : unable to get cwd - errno = %d\n", errno); -- return(-1); -- } -- slash = strrchr(from, '/'); -- if(slash != NULL){ -- *slash = '\0'; -- if(chdir(from)){ -- *slash = '/'; -- printk("absolutize : Can't cd to '%s' - errno = %d\n", -- from, errno); -- return(-1); -- } -- *slash = '/'; -- if(getcwd(to, size) == NULL){ -- printk("absolutize : unable to get cwd of '%s' - " -- "errno = %d\n", from, errno); -- return(-1); -- } -- remaining = size - strlen(to); -- if(strlen(slash) + 1 > remaining){ -- printk("absolutize : unable to fit '%s' into %d " -- "chars\n", from, size); -- return(-1); -- } -- strcat(to, slash); -- } -- else { -- if(strlen(save_cwd) + 1 + strlen(from) + 1 > size){ -- printk("absolutize : unable to fit '%s' into %d " -- "chars\n", from, size); -- return(-1); -- } -- strcpy(to, save_cwd); -- strcat(to, "/"); -- strcat(to, from); -- } -- chdir(save_cwd); - return(0); - } - --static int write_cow_header(char *cow_file, int fd, char *backing_file, -- int sectorsize, long long *size) +- if(num_iomem_regions == sizeof(iomem_regions)/sizeof(iomem_regions[0])) +- return; +- size = (size + PAGE_SIZE - 1) & PAGE_MASK; +- iomem_regions[num_iomem_regions++] = +- ((struct iomem) { .name = name, +- .fd = fd, +- .size = size } ); +-} +- +-int setup_iomem(void) -{ -- struct cow_header_v2 *header; -- struct stat64 buf; -- int err; +- struct iomem *iomem; +- int i; - -- err = os_seek_file(fd, 0); -- if(err != 0){ -- printk("write_cow_header - lseek failed, errno = %d\n", errno); -- return(-errno); +- for(i = 0; i < num_iomem_regions; i++){ +- iomem = &iomem_regions[i]; +- setup_range(iomem->fd, iomem->name, -1, -1, iomem->size, 1, +- NULL, NULL); - } +- return(0); +-} - -- err = -ENOMEM; -- header = um_kmalloc(sizeof(*header)); -- if(header == NULL){ -- printk("Failed to allocate COW V2 header\n"); -- goto out; -- } -- header->magic = htonl(COW_MAGIC); -- header->version = htonl(COW_VERSION); +-__initcall(setup_iomem); - -- err = -EINVAL; -- if(strlen(backing_file) > sizeof(header->backing_file) - 1){ -- printk("Backing file name \"%s\" is too long - names are " -- "limited to %d characters\n", backing_file, -- sizeof(header->backing_file) - 1); -- goto out_free; -- } +-#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) +-#define PFN_DOWN(x) ((x) >> PAGE_SHIFT) - -- if(absolutize(header->backing_file, sizeof(header->backing_file), -- backing_file)) -- goto out_free; +-/* Changed during early boot */ +-static struct mem_region physmem_region; +-static struct vm_reserved physmem_reserved; - -- err = stat64(header->backing_file, &buf); -- if(err < 0){ -- printk("Stat of backing file '%s' failed, errno = %d\n", -- header->backing_file, errno); -- err = -errno; -- goto out_free; -- } +-void setup_physmem(unsigned long start, unsigned long reserve_end, +- unsigned long len) +-{ +- struct mem_region *region = &physmem_region; +- struct vm_reserved *reserved = &physmem_reserved; +- unsigned long cur, pfn = 0; +- int do_free = 1, bootmap_size; - -- err = os_file_size(header->backing_file, size); -- if(err){ -- printk("Couldn't get size of backing file '%s', errno = %d\n", -- header->backing_file, -*size); -- goto out_free; -- } +- do { +- cur = min(len, (unsigned long) REGION_SIZE); +- if(region == NULL) +- region = alloc_bootmem_low_pages(sizeof(*region)); +- if(reserved == NULL) +- reserved = alloc_bootmem_low_pages(sizeof(*reserved)); +- if((region == NULL) || (reserved == NULL)) +- panic("Couldn't allocate physmem region or vm " +- "reservation\n"); +- setup_range(-1, NULL, start, pfn, cur, 1, region, reserved); - -- header->mtime = htonl(buf.st_mtime); -- header->size = htonll(*size); -- header->sectorsize = htonl(sectorsize); +- if(do_free){ +- unsigned long reserve = reserve_end - start; +- int pfn = PFN_UP(__pa(reserve_end)); +- int delta = (len - reserve) >> PAGE_SHIFT; - -- err = write(fd, header, sizeof(*header)); -- if(err != sizeof(*header)){ -- printk("Write of header to new COW file '%s' failed, " -- "errno = %d\n", cow_file, errno); -- goto out_free; +- bootmap_size = init_bootmem(pfn, pfn + delta); +- free_bootmem(__pa(reserve_end) + bootmap_size, +- cur - bootmap_size - reserve); +- do_free = 0; +- } +- start += cur; +- pfn += cur >> PAGE_SHIFT; +- len -= cur; +- region = NULL; +- reserved = NULL; +- } while(len > 0); +-} +- +-struct mem_region *phys_region(unsigned long phys) +-{ +- unsigned int n = phys_region_index(phys); +- +- if(regions[n] == NULL) +- panic("Physical address in uninitialized region"); +- return(regions[n]); +-} +- +-unsigned long phys_offset(unsigned long phys) +-{ +- return(phys_addr(phys)); +-} +- +-struct page *phys_mem_map(unsigned long phys) +-{ +- return((struct page *) phys_region(phys)->mem_map); +-} +- +-struct page *pte_mem_map(pte_t pte) +-{ +- return(phys_mem_map(pte_val(pte))); +-} +- +-struct mem_region *page_region(struct page *page, int *index_out) +-{ +- int i; +- struct mem_region *region; +- struct page *map; +- +- for(i = 0; i < NREGIONS; i++){ +- region = regions[i]; +- if(region == NULL) continue; +- map = region->mem_map; +- if((page >= map) && (page < &map[region->len >> PAGE_SHIFT])){ +- if(index_out != NULL) *index_out = i; +- return(region); +- } - } -- err = 0; -- out_free: -- kfree(header); -- out: -- return(err); +- panic("No region found for page"); +- return(NULL); -} - - int open_ubd_file(char *file, struct openflags *openflags, - char **backing_file_out, int *bitmap_offset_out, - unsigned long *bitmap_len_out, int *data_offset_out, -@@ -334,26 +108,36 @@ - { - time_t mtime; - __u64 size; -+ __u32 version, align; - char *backing_file; -- int fd, err, sectorsize, magic, same, mode = 0644; -+ int fd, err, sectorsize, same, mode = 0644; - -- if((fd = os_open_file(file, *openflags, mode)) < 0){ -+ fd = os_open_file(file, *openflags, mode); -+ if(fd < 0){ - if((fd == -ENOENT) && (create_cow_out != NULL)) - *create_cow_out = 1; - if(!openflags->w || - ((errno != EROFS) && (errno != EACCES))) return(-errno); - openflags->w = 0; -- if((fd = os_open_file(file, *openflags, mode)) < 0) -+ fd = os_open_file(file, *openflags, mode); -+ if(fd < 0) - return(fd); - } -+ -+ err = os_lock_file(fd, openflags->w); -+ if(err < 0){ -+ printk("Failed to lock '%s', err = %d\n", file, -err); -+ goto out_close; -+ } -+ - if(backing_file_out == NULL) return(fd); - -- err = read_cow_header(fd, &magic, &backing_file, &mtime, &size, -- §orsize, bitmap_offset_out); -+ err = read_cow_header(file_reader, &fd, &version, &backing_file, &mtime, -+ &size, §orsize, &align, bitmap_offset_out); - if(err && (*backing_file_out != NULL)){ - printk("Failed to read COW header from COW file \"%s\", " -- "errno = %d\n", file, err); -- goto error; -+ "errno = %d\n", file, -err); -+ goto out_close; - } - if(err) return(fd); - -@@ -363,36 +147,33 @@ - - if(!same && !backing_file_mismatch(*backing_file_out, size, mtime)){ - printk("Switching backing file to '%s'\n", *backing_file_out); -- err = write_cow_header(file, fd, *backing_file_out, -- sectorsize, &size); -+ err = write_cow_header(file, fd, *backing_file_out, -+ sectorsize, align, &size); - if(err){ -- printk("Switch failed, errno = %d\n", err); -+ printk("Switch failed, errno = %d\n", -err); - return(err); - } - } - else { - *backing_file_out = backing_file; - err = backing_file_mismatch(*backing_file_out, size, mtime); -- if(err) goto error; -+ if(err) goto out_close; - } - -- sizes(size, sectorsize, *bitmap_offset_out, bitmap_len_out, -- data_offset_out); -+ cow_sizes(version, size, sectorsize, align, *bitmap_offset_out, -+ bitmap_len_out, data_offset_out); - - return(fd); -- error: -- close(fd); -+ out_close: -+ os_close_file(fd); - return(err); - } - - int create_cow_file(char *cow_file, char *backing_file, struct openflags flags, -- int sectorsize, int *bitmap_offset_out, -+ int sectorsize, int alignment, int *bitmap_offset_out, - unsigned long *bitmap_len_out, int *data_offset_out) - { -- __u64 blocks; -- long zero; -- int err, fd, i; -- long long size; -+ int err, fd; - - flags.c = 1; - fd = open_ubd_file(cow_file, &flags, NULL, NULL, NULL, NULL, NULL); -@@ -403,57 +184,49 @@ - goto out; - } - -- err = write_cow_header(cow_file, fd, backing_file, sectorsize, &size); -- if(err) goto out_close; +-unsigned long page_to_pfn(struct page *page) +-{ +- struct mem_region *region = page_region(page, NULL); - -- blocks = (size + sectorsize - 1) / sectorsize; -- blocks = (blocks + sizeof(long) * 8 - 1) / (sizeof(long) * 8); -- zero = 0; -- for(i = 0; i < blocks; i++){ -- err = write(fd, &zero, sizeof(zero)); -- if(err != sizeof(zero)){ -- printk("Write of bitmap to new COW file '%s' failed, " -- "errno = %d\n", cow_file, errno); -- goto out_close; +- return(region->start_pfn + (page - (struct page *) region->mem_map)); +-} +- +-struct mem_region *pfn_to_region(unsigned long pfn, int *index_out) +-{ +- struct mem_region *region; +- int i; +- +- for(i = 0; i < NREGIONS; i++){ +- region = regions[i]; +- if(region == NULL) +- continue; +- +- if((region->start_pfn <= pfn) && +- (region->start_pfn + (region->len >> PAGE_SHIFT) > pfn)){ +- if(index_out != NULL) +- *index_out = i; +- return(region); - } - } +- return(NULL); +-} - -- sizes(size, sectorsize, sizeof(struct cow_header_v2), -- bitmap_len_out, data_offset_out); -- *bitmap_offset_out = sizeof(struct cow_header_v2); +-struct page *pfn_to_page(unsigned long pfn) +-{ +- struct mem_region *region = pfn_to_region(pfn, NULL); +- struct page *mem_map = (struct page *) region->mem_map; - -- return(fd); +- return(&mem_map[pfn - region->start_pfn]); +-} - -- out_close: -- close(fd); -+ err = init_cow_file(fd, cow_file, backing_file, sectorsize, alignment, -+ bitmap_offset_out, bitmap_len_out, -+ data_offset_out); -+ if(!err) -+ return(fd); -+ os_close_file(fd); - out: - return(err); - } - -+/* XXX Just trivial wrappers around os_read_file and os_write_file */ - int read_ubd_fs(int fd, void *buffer, int len) - { -- int n; +-unsigned long phys_to_pfn(unsigned long p) +-{ +- struct mem_region *region = regions[phys_region_index(p)]; - -- n = read(fd, buffer, len); -- if(n < 0) return(-errno); -- else return(n); -+ return(os_read_file(fd, buffer, len)); - } - - int write_ubd_fs(int fd, char *buffer, int len) - { +- return(region->start_pfn + (phys_addr(p) >> PAGE_SHIFT)); +-} +- +-unsigned long pfn_to_phys(unsigned long pfn) +-{ - int n; +- struct mem_region *region = pfn_to_region(pfn, &n); - -- n = write(fd, buffer, len); -- if(n < 0) return(-errno); -- else return(n); -+ return(os_write_file(fd, buffer, len)); - } - --int ubd_is_dir(char *file) -+static int update_bitmap(struct io_thread_req *req) - { -- struct stat64 buf; -+ int n; -+ -+ if(req->cow_offset == -1) -+ return(0); -+ -+ n = os_seek_file(req->fds[1], req->cow_offset); -+ if(n < 0){ -+ printk("do_io - bitmap lseek failed : err = %d\n", -n); -+ return(1); -+ } -+ -+ n = os_write_file(req->fds[1], &req->bitmap_words, -+ sizeof(req->bitmap_words)); -+ if(n != sizeof(req->bitmap_words)){ -+ printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, -+ req->fds[1]); -+ return(1); -+ } - -- if(stat64(file, &buf) < 0) return(0); -- return(S_ISDIR(buf.st_mode)); -+ return(0); - } - - void do_io(struct io_thread_req *req) -@@ -461,8 +234,18 @@ - char *buf; - unsigned long len; - int n, nsectors, start, end, bit; -+ int err; - __u64 off; - -+ if(req->op == UBD_MMAP){ -+ /* Touch the page to force the host to do any necessary IO to -+ * get it into memory -+ */ -+ n = *((volatile int *) req->buffer); -+ req->error = update_bitmap(req); -+ return; -+ } -+ - nsectors = req->length / req->sectorsize; - start = 0; - do { -@@ -473,15 +256,14 @@ - &req->sector_mask) == bit)) - end++; - -- if(end != nsectors) -- printk("end != nsectors\n"); - off = req->offset + req->offsets[bit] + - start * req->sectorsize; - len = (end - start) * req->sectorsize; - buf = &req->buffer[start * req->sectorsize]; - -- if(os_seek_file(req->fds[bit], off) != 0){ -- printk("do_io - lseek failed : errno = %d\n", errno); -+ err = os_seek_file(req->fds[bit], off); -+ if(err < 0){ -+ printk("do_io - lseek failed : err = %d\n", -err); - req->error = 1; - return; - } -@@ -490,11 +272,10 @@ - do { - buf = &buf[n]; - len -= n; -- n = read(req->fds[bit], buf, len); -+ n = os_read_file(req->fds[bit], buf, len); - if (n < 0) { -- printk("do_io - read returned %d : " -- "errno = %d fd = %d\n", n, -- errno, req->fds[bit]); -+ printk("do_io - read failed, err = %d " -+ "fd = %d\n", -n, req->fds[bit]); - req->error = 1; - return; - } -@@ -502,11 +283,10 @@ - if (n < len) memset(&buf[n], 0, len - n); - } - else { -- n = write(req->fds[bit], buf, len); -+ n = os_write_file(req->fds[bit], buf, len); - if(n != len){ -- printk("do_io - write returned %d : " -- "errno = %d fd = %d\n", n, -- errno, req->fds[bit]); -+ printk("do_io - write failed err = %d " -+ "fd = %d\n", -n, req->fds[bit]); - req->error = 1; - return; - } -@@ -515,24 +295,7 @@ - start = end; - } while(start < nsectors); - -- if(req->cow_offset != -1){ -- if(os_seek_file(req->fds[1], req->cow_offset) != 0){ -- printk("do_io - bitmap lseek failed : errno = %d\n", -- errno); -- req->error = 1; -- return; -- } -- n = write(req->fds[1], &req->bitmap_words, -- sizeof(req->bitmap_words)); -- if(n != sizeof(req->bitmap_words)){ -- printk("do_io - bitmap update returned %d : " -- "errno = %d fd = %d\n", n, errno, req->fds[1]); -- req->error = 1; -- return; -- } -- } -- req->error = 0; -- return; -+ req->error = update_bitmap(req); - } - - /* Changed in start_io_thread, which is serialized by being called only -@@ -550,19 +313,23 @@ - - signal(SIGWINCH, SIG_IGN); - while(1){ -- n = read(kernel_fd, &req, sizeof(req)); -- if(n < 0) printk("io_thread - read returned %d, errno = %d\n", -- n, errno); -- else if(n < sizeof(req)){ -- printk("io_thread - short read : length = %d\n", n); -+ n = os_read_file(kernel_fd, &req, sizeof(req)); -+ if(n != sizeof(req)){ -+ if(n < 0) -+ printk("io_thread - read failed, fd = %d, " -+ "err = %d\n", kernel_fd, -n); -+ else { -+ printk("io_thread - short read, fd = %d, " -+ "length = %d\n", kernel_fd, n); -+ } - continue; - } - io_count++; - do_io(&req); -- n = write(kernel_fd, &req, sizeof(req)); -+ n = os_write_file(kernel_fd, &req, sizeof(req)); - if(n != sizeof(req)) -- printk("io_thread - write failed, errno = %d\n", -- errno); -+ printk("io_thread - write failed, fd = %d, err = %d\n", -+ kernel_fd, -n); - } - } - -@@ -571,10 +338,11 @@ - int pid, fds[2], err; - - err = os_pipe(fds, 1, 1); -- if(err){ -- printk("start_io_thread - os_pipe failed, errno = %d\n", -err); -- return(-1); -+ if(err < 0){ -+ printk("start_io_thread - os_pipe failed, err = %d\n", -err); -+ goto out; - } -+ - kernel_fd = fds[0]; - *fd_out = fds[1]; - -@@ -582,32 +350,19 @@ - NULL); - if(pid < 0){ - printk("start_io_thread - clone failed : errno = %d\n", errno); -- return(-errno); -+ goto out_close; - } -- return(pid); +- return(mk_phys((pfn - region->start_pfn) << PAGE_SHIFT, n)); -} - --#ifdef notdef --int start_io_thread(unsigned long sp, int *fd_out) +-struct page *page_mem_map(struct page *page) -{ -- int pid; - -- if((kernel_fd = get_pty()) < 0) return(-1); -- raw(kernel_fd, 0); -- if((*fd_out = open(ptsname(kernel_fd), O_RDWR)) < 0){ -- printk("Couldn't open tty for IO\n"); -- return(-1); +- return((struct page *) page_region(page, NULL)->mem_map); +-} +- +-extern unsigned long region_pa(void *virt) +-{ +- struct mem_region *region; +- unsigned long addr = (unsigned long) virt; +- int i; +- +- for(i = 0; i < NREGIONS; i++){ +- region = regions[i]; +- if(region == NULL) continue; +- if((region->start <= addr) && +- (addr <= region->start + region->len)) +- return(mk_phys(addr - region->start, i)); - } +- panic("region_pa : no region for virtual address"); +- return(0); +-} - -- pid = clone(io_thread, (void *) sp, CLONE_FILES | CLONE_VM | SIGCHLD, -- NULL); -- if(pid < 0){ -- printk("start_io_thread - clone failed : errno = %d\n", errno); -- return(-errno); +-extern void *region_va(unsigned long phys) +-{ +- return((void *) (phys_region(phys)->start + phys_addr(phys))); +-} +- +-unsigned long page_to_phys(struct page *page) +-{ +- int n; +- struct mem_region *region = page_region(page, &n); +- struct page *map = region->mem_map; +- return(mk_phys((page - map) << PAGE_SHIFT, n)); +-} +- +-struct page *phys_to_page(unsigned long phys) +-{ +- struct page *mem_map; +- +- mem_map = phys_mem_map(phys); +- return(mem_map + (phys_offset(phys) >> PAGE_SHIFT)); +-} +- +-static int setup_mem_maps(void) +-{ +- struct mem_region *region; +- int i; +- +- for(i = 0; i < NREGIONS; i++){ +- region = regions[i]; +- if((region != NULL) && (region->fd > 0)) init_maps(region); - } - return(pid); +- return(0); +-} +- +-__initcall(setup_mem_maps); +- + /* + * Allocate and free page tables. + */ +Index: uml-2.6.7/mm/page_alloc.c +=================================================================== +--- uml-2.6.7.orig/mm/page_alloc.c 2004-07-16 19:35:58.508373224 +0300 ++++ uml-2.6.7/mm/page_alloc.c 2004-07-16 19:47:23.806192120 +0300 +@@ -279,6 +279,8 @@ + LIST_HEAD(list); + int i; + ++ arch_free_page(page, order); + -+ out_close: -+ os_close_file(fds[0]); -+ os_close_file(fds[1]); -+ kernel_fd = -1; -+ *fd_out = -1; -+ out: -+ return(err); - } --#endif + mod_page_state(pgfree, 1 << order); + for (i = 0 ; i < (1 << order) ; ++i) + free_pages_check(__FUNCTION__, page + i); +@@ -497,6 +499,8 @@ + struct per_cpu_pages *pcp; + unsigned long flags; - /* - * Overrides for Emacs so that we follow Linus's tabbing style. -diff -Naur a/arch/um/drivers/xterm.c b/arch/um/drivers/xterm.c ---- a/arch/um/drivers/xterm.c 2004-03-10 08:20:17.000000000 -0500 -+++ b/arch/um/drivers/xterm.c 2004-03-10 08:34:14.000000000 -0500 -@@ -8,7 +8,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -36,7 +35,8 @@ - { - struct xterm_chan *data; - -- if((data = malloc(sizeof(*data))) == NULL) return(NULL); -+ data = malloc(sizeof(*data)); -+ if(data == NULL) return(NULL); - *data = ((struct xterm_chan) { .pid = -1, - .helper_pid = -1, - .device = device, -@@ -93,7 +93,7 @@ - "/usr/lib/uml/port-helper", "-uml-socket", - file, NULL }; - -- if(access(argv[4], X_OK)) -+ if(os_access(argv[4], OS_ACC_X_OK) < 0) - argv[4] = "port-helper"; - - fd = mkstemp(file); -@@ -106,13 +106,13 @@ - printk("xterm_open : unlink failed, errno = %d\n", errno); - return(-errno); - } -- close(fd); -+ os_close_file(fd); - -- fd = create_unix_socket(file, sizeof(file)); -+ fd = os_create_unix_socket(file, sizeof(file), 1); - if(fd < 0){ - printk("xterm_open : create_unix_socket failed, errno = %d\n", - -fd); -- return(-fd); -+ return(fd); - } - - sprintf(title, data->title, data->device); -@@ -128,15 +128,16 @@ - if(data->direct_rcv) - new = os_rcv_fd(fd, &data->helper_pid); - else { -- if((err = os_set_fd_block(fd, 0)) != 0){ -+ err = os_set_fd_block(fd, 0); -+ if(err < 0){ - printk("xterm_open : failed to set descriptor " -- "non-blocking, errno = %d\n", err); -+ "non-blocking, err = %d\n", -err); - return(err); - } - new = xterm_fd(fd, &data->helper_pid); - } - if(new < 0){ -- printk("xterm_open : os_rcv_fd failed, errno = %d\n", -new); -+ printk("xterm_open : os_rcv_fd failed, err = %d\n", -new); - goto out; - } - -@@ -160,7 +161,7 @@ - if(data->helper_pid != -1) - os_kill_process(data->helper_pid, 0); - data->helper_pid = -1; -- close(fd); -+ os_close_file(fd); - } - - void xterm_free(void *d) -diff -Naur a/arch/um/drivers/xterm_kern.c b/arch/um/drivers/xterm_kern.c ---- a/arch/um/drivers/xterm_kern.c 2004-03-10 08:22:24.000000000 -0500 -+++ b/arch/um/drivers/xterm_kern.c 2004-03-10 08:41:35.000000000 -0500 -@@ -5,9 +5,12 @@ - - #include "linux/errno.h" - #include "linux/slab.h" -+#include "linux/signal.h" -+#include "linux/interrupt.h" - #include "asm/semaphore.h" - #include "asm/irq.h" - #include "irq_user.h" -+#include "irq_kern.h" - #include "kern_util.h" - #include "os.h" - #include "xterm.h" -@@ -19,17 +22,18 @@ - int new_fd; - }; - --static void xterm_interrupt(int irq, void *data, struct pt_regs *regs) -+static irqreturn_t xterm_interrupt(int irq, void *data, struct pt_regs *regs) - { - struct xterm_wait *xterm = data; - int fd; - - fd = os_rcv_fd(xterm->fd, &xterm->pid); - if(fd == -EAGAIN) -- return; -+ return(IRQ_NONE); - - xterm->new_fd = fd; - up(&xterm->sem); -+ return(IRQ_HANDLED); - } - - int xterm_fd(int socket, int *pid_out) -@@ -54,7 +58,8 @@ - if(err){ - printk(KERN_ERR "xterm_fd : failed to get IRQ for xterm, " - "err = %d\n", err); -- return(err); -+ ret = err; -+ goto out; - } - down(&data->sem); - -@@ -62,6 +67,7 @@ - - ret = data->new_fd; - *pid_out = data->pid; -+ out: - kfree(data); - - return(ret); -diff -Naur a/arch/um/dyn.lds.S b/arch/um/dyn.lds.S ---- a/arch/um/dyn.lds.S 2004-03-10 08:21:28.000000000 -0500 -+++ b/arch/um/dyn.lds.S 2004-03-10 08:39:12.000000000 -0500 -@@ -10,12 +10,15 @@ - { - . = START + SIZEOF_HEADERS; - .interp : { *(.interp) } -- . = ALIGN(4096); - __binary_start = .; - . = ALIGN(4096); /* Init code and data */ - _stext = .; - __init_begin = .; -- .text.init : { *(.text.init) } -+ .init.text : { -+ _sinittext = .; -+ *(.init.text) -+ _einittext = .; -+ } - - . = ALIGN(4096); - -@@ -67,7 +70,7 @@ - - #include "asm/common.lds.S" - -- .data.init : { *(.data.init) } -+ init.data : { *(.init.data) } - - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but -diff -Naur a/arch/um/include/2_5compat.h b/arch/um/include/2_5compat.h ---- a/arch/um/include/2_5compat.h 2004-03-10 08:21:06.000000000 -0500 -+++ b/arch/um/include/2_5compat.h 2004-03-10 08:38:40.000000000 -0500 -@@ -6,20 +6,6 @@ - #ifndef __2_5_COMPAT_H__ - #define __2_5_COMPAT_H__ - --#include "linux/version.h" -- --#define INIT_CONSOLE(dev_name, write_proc, device_proc, setup_proc, f) { \ -- name : dev_name, \ -- write : write_proc, \ -- read : NULL, \ -- device : device_proc, \ -- setup : setup_proc, \ -- flags : f, \ -- index : -1, \ -- cflag : 0, \ -- next : NULL \ --} -- - #define INIT_HARDSECT(arr, maj, sizes) - - #define SET_PRI(task) do ; while(0) -diff -Naur a/arch/um/include/irq_kern.h b/arch/um/include/irq_kern.h ---- a/arch/um/include/irq_kern.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/include/irq_kern.h 2004-03-10 08:38:55.000000000 -0500 -@@ -0,0 +1,28 @@ ++ arch_free_page(page, 0); ++ + kernel_map_pages(page, 1, 0); + inc_page_state(pgfree); + free_pages_check(__FUNCTION__, page); +Index: uml-2.6.7/arch/um/kernel/skas/uaccess.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/uaccess.c 2004-07-16 19:47:23.621220240 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/uaccess.c 2004-07-16 19:47:23.735202912 +0300 +@@ -0,0 +1,219 @@ +/* -+ * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + -+#ifndef __IRQ_KERN_H__ -+#define __IRQ_KERN_H__ ++#include "linux/stddef.h" ++#include "linux/kernel.h" ++#include "linux/string.h" ++#include "linux/fs.h" ++#include "linux/highmem.h" ++#include "asm/page.h" ++#include "asm/pgtable.h" ++#include "asm/uaccess.h" ++#include "kern_util.h" + -+#include "linux/interrupt.h" ++extern void *um_virt_to_phys(struct task_struct *task, unsigned long addr, ++ pte_t *pte_out); + -+extern int um_request_irq(unsigned int irq, int fd, int type, -+ irqreturn_t (*handler)(int, void *, -+ struct pt_regs *), -+ unsigned long irqflags, const char * devname, -+ void *dev_id); ++static unsigned long maybe_map(unsigned long virt, int is_write) ++{ ++ pte_t pte; ++ int err; + -+#endif ++ void *phys = um_virt_to_phys(current, virt, &pte); ++ int dummy_code; + -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/include/kern_util.h b/arch/um/include/kern_util.h ---- a/arch/um/include/kern_util.h 2004-03-10 08:20:57.000000000 -0500 -+++ b/arch/um/include/kern_util.h 2004-03-10 08:37:24.000000000 -0500 -@@ -62,10 +62,9 @@ - extern void *syscall_sp(void *t); - extern void syscall_trace(void); - extern int hz(void); --extern void idle_timer(void); -+extern void uml_idle_timer(void); - extern unsigned int do_IRQ(int irq, union uml_pt_regs *regs); - extern int external_pid(void *t); --extern int pid_to_processor_id(int pid); - extern void boot_timer_handler(int sig); - extern void interrupt_end(void); - extern void initial_thread_cb(void (*proc)(void *), void *arg); -@@ -89,9 +88,7 @@ - extern char *uml_strdup(char *string); - extern void unprotect_kernel_mem(void); - extern void protect_kernel_mem(void); --extern void set_kmem_end(unsigned long); - extern void uml_cleanup(void); --extern int pid_to_processor_id(int pid); - extern void set_current(void *t); - extern void lock_signalled_task(void *t); - extern void IPI_handler(int cpu); -@@ -100,7 +97,9 @@ - extern int clear_user_proc(void *buf, int size); - extern int copy_to_user_proc(void *to, void *from, int size); - extern int copy_from_user_proc(void *to, void *from, int size); -+extern int strlen_user_proc(char *str); - extern void bus_handler(int sig, union uml_pt_regs *regs); -+extern void winch(int sig, union uml_pt_regs *regs); - extern long execute_syscall(void *r); - extern int smp_sigio_handler(void); - extern void *get_current(void); -@@ -111,6 +110,8 @@ - extern void free_irq(unsigned int, void *); - extern int um_in_interrupt(void); - extern int cpu(void); -+extern unsigned long long time_stamp(void); ++ if(IS_ERR(phys) || (is_write && !pte_write(pte))){ ++ err = handle_page_fault(virt, 0, is_write, 0, &dummy_code); ++ if(err) ++ return(0); ++ phys = um_virt_to_phys(current, virt, NULL); ++ } ++ return((unsigned long) phys); ++} + - #endif - - /* -diff -Naur a/arch/um/include/line.h b/arch/um/include/line.h ---- a/arch/um/include/line.h 2004-03-10 08:22:30.000000000 -0500 -+++ b/arch/um/include/line.h 2004-03-10 08:42:11.000000000 -0500 -@@ -9,12 +9,14 @@ - #include "linux/list.h" - #include "linux/workqueue.h" - #include "linux/tty.h" -+#include "linux/interrupt.h" - #include "asm/semaphore.h" - #include "chan_user.h" - #include "mconsole_kern.h" - - struct line_driver { - char *name; -+ char *device_name; - char *devfs_name; - short major; - short minor_start; -@@ -67,8 +69,6 @@ - - #define LINES_INIT(n) { num : n } - --extern void line_interrupt(int irq, void *data, struct pt_regs *unused); --extern void line_write_interrupt(int irq, void *data, struct pt_regs *unused); - extern void line_close(struct line *lines, struct tty_struct *tty); - extern int line_open(struct line *lines, struct tty_struct *tty, - struct chan_opts *opts); -diff -Naur a/arch/um/include/mconsole.h b/arch/um/include/mconsole.h ---- a/arch/um/include/mconsole.h 2004-03-10 08:21:04.000000000 -0500 -+++ b/arch/um/include/mconsole.h 2004-03-10 08:37:55.000000000 -0500 -@@ -41,11 +41,13 @@ - - struct mc_request; - -+enum mc_context { MCONSOLE_INTR, MCONSOLE_PROC }; ++static int do_op(unsigned long addr, int len, int is_write, ++ int (*op)(unsigned long addr, int len, void *arg), void *arg) ++{ ++ struct page *page; ++ int n; + - struct mconsole_command - { - char *command; - void (*handler)(struct mc_request *req); -- int as_interrupt; -+ enum mc_context context; - }; - - struct mc_request -@@ -77,6 +79,8 @@ - extern void mconsole_cad(struct mc_request *req); - extern void mconsole_stop(struct mc_request *req); - extern void mconsole_go(struct mc_request *req); -+extern void mconsole_log(struct mc_request *req); -+extern void mconsole_proc(struct mc_request *req); - - extern int mconsole_get_request(int fd, struct mc_request *req); - extern int mconsole_notify(char *sock_name, int type, const void *data, -diff -Naur a/arch/um/include/mem.h b/arch/um/include/mem.h ---- a/arch/um/include/mem.h 2004-03-10 08:23:25.000000000 -0500 -+++ b/arch/um/include/mem.h 2004-03-10 08:44:55.000000000 -0500 -@@ -1,19 +1,18 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2002, 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - - #ifndef __MEM_H__ - #define __MEM_H__ - --struct vm_reserved { -- struct list_head list; -- unsigned long start; -- unsigned long end; --}; -+#include "linux/types.h" - --extern void set_usable_vm(unsigned long start, unsigned long end); --extern void set_kmem_end(unsigned long new); -+extern int phys_mapping(unsigned long phys, __u64 *offset_out); -+extern int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w); -+extern int is_remapped(void *virt); -+extern int physmem_remove_mapping(void *virt); -+extern void physmem_forget_descriptor(int fd); - - #endif - -diff -Naur a/arch/um/include/mem_kern.h b/arch/um/include/mem_kern.h ---- a/arch/um/include/mem_kern.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/include/mem_kern.h 2004-03-10 08:39:48.000000000 -0500 -@@ -0,0 +1,30 @@ -+/* -+ * Copyright (C) 2003 Jeff Dike (jdike@addtoit.com) -+ * Licensed under the GPL -+ */ ++ addr = maybe_map(addr, is_write); ++ if(addr == -1) ++ return(-1); + -+#ifndef __MEM_KERN_H__ -+#define __MEM_KERN_H__ ++ page = phys_to_page(addr); ++ addr = (unsigned long) kmap(page) + (addr & ~PAGE_MASK); ++ n = (*op)(addr, len, arg); ++ kunmap(page); + -+#include "linux/list.h" -+#include "linux/types.h" ++ return(n); ++} + -+struct remapper { -+ struct list_head list; -+ int (*proc)(int, unsigned long, int, __u64); -+}; ++static int buffer_op(unsigned long addr, int len, int is_write, ++ int (*op)(unsigned long addr, int len, void *arg), ++ void *arg) ++{ ++ int size = min(PAGE_ALIGN(addr) - addr, (unsigned long) len); ++ int remain = len, n; + -+extern void register_remapper(struct remapper *info); ++ n = do_op(addr, size, is_write, op, arg); ++ if(n != 0) ++ return(n < 0 ? remain : 0); + -+#endif ++ addr += size; ++ remain -= size; ++ if(remain == 0) ++ return(0); + -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/include/mem_user.h b/arch/um/include/mem_user.h ---- a/arch/um/include/mem_user.h 2004-03-10 08:21:58.000000000 -0500 -+++ b/arch/um/include/mem_user.h 2004-03-10 08:41:05.000000000 -0500 -@@ -32,43 +32,38 @@ - #ifndef _MEM_USER_H - #define _MEM_USER_H - --struct mem_region { -+struct iomem_region { -+ struct iomem_region *next; - char *driver; -- unsigned long start_pfn; -- unsigned long start; -- unsigned long len; -- void *mem_map; - int fd; -+ int size; -+ unsigned long phys; -+ unsigned long virt; - }; - --extern struct mem_region *regions[]; --extern struct mem_region physmem_region; -+extern struct iomem_region *iomem_regions; -+extern int iomem_size; - - #define ROUND_4M(n) ((((unsigned long) (n)) + (1 << 22)) & ~((1 << 22) - 1)) - - extern unsigned long host_task_size; - extern unsigned long task_size; - -+extern void check_devanon(void); - extern int init_mem_user(void); - extern int create_mem_file(unsigned long len); --extern void setup_range(int fd, char *driver, unsigned long start, -- unsigned long pfn, unsigned long total, int need_vm, -- struct mem_region *region, void *reserved); - extern void setup_memory(void *entry); - extern unsigned long find_iomem(char *driver, unsigned long *len_out); --extern int init_maps(struct mem_region *region); --extern int nregions(void); --extern int reserve_vm(unsigned long start, unsigned long end, void *e); -+extern int init_maps(unsigned long physmem, unsigned long iomem, -+ unsigned long highmem); - extern unsigned long get_vm(unsigned long len); - extern void setup_physmem(unsigned long start, unsigned long usable, -- unsigned long len); --extern int setup_region(struct mem_region *region, void *entry); -+ unsigned long len, unsigned long highmem); - extern void add_iomem(char *name, int fd, unsigned long size); --extern struct mem_region *phys_region(unsigned long phys); - extern unsigned long phys_offset(unsigned long phys); - extern void unmap_physmem(void); --extern int map_memory(unsigned long virt, unsigned long phys, -- unsigned long len, int r, int w, int x); -+extern void map_memory(unsigned long virt, unsigned long phys, -+ unsigned long len, int r, int w, int x); - extern int protect_memory(unsigned long addr, unsigned long len, - int r, int w, int x, int must_succeed); - extern unsigned long get_kmem_end(void); -diff -Naur a/arch/um/include/os.h b/arch/um/include/os.h ---- a/arch/um/include/os.h 2004-03-10 08:20:31.000000000 -0500 -+++ b/arch/um/include/os.h 2004-03-10 08:36:02.000000000 -0500 -@@ -17,6 +17,32 @@ - #define OS_TYPE_FIFO 6 - #define OS_TYPE_SOCK 7 - -+/* os_access() flags */ -+#define OS_ACC_F_OK 0 /* Test for existence. */ -+#define OS_ACC_X_OK 1 /* Test for execute permission. */ -+#define OS_ACC_W_OK 2 /* Test for write permission. */ -+#define OS_ACC_R_OK 4 /* Test for read permission. */ -+#define OS_ACC_RW_OK (OS_ACC_W_OK | OS_ACC_R_OK) /* Test for RW permission */ ++ while(addr < ((addr + remain) & PAGE_MASK)){ ++ n = do_op(addr, PAGE_SIZE, is_write, op, arg); ++ if(n != 0) ++ return(n < 0 ? remain : 0); + -+/* -+ * types taken from stat_file() in hostfs_user.c -+ * (if they are wrong here, they are wrong there...). -+ */ -+struct uml_stat { -+ int ust_dev; /* device */ -+ unsigned long long ust_ino; /* inode */ -+ int ust_mode; /* protection */ -+ int ust_nlink; /* number of hard links */ -+ int ust_uid; /* user ID of owner */ -+ int ust_gid; /* group ID of owner */ -+ unsigned long long ust_size; /* total size, in bytes */ -+ int ust_blksize; /* blocksize for filesystem I/O */ -+ unsigned long long ust_blocks; /* number of blocks allocated */ -+ unsigned long ust_atime; /* time of last access */ -+ unsigned long ust_mtime; /* time of last modification */ -+ unsigned long ust_ctime; /* time of last change */ -+}; ++ addr += PAGE_SIZE; ++ remain -= PAGE_SIZE; ++ } ++ if(remain == 0) ++ return(0); + - struct openflags { - unsigned int r : 1; - unsigned int w : 1; -@@ -84,29 +110,47 @@ - flags.e = 1; - return(flags); - } -- ++ n = do_op(addr, remain, is_write, op, arg); ++ if(n != 0) ++ return(n < 0 ? remain : 0); ++ return(0); ++} + - static inline struct openflags of_cloexec(struct openflags flags) - { - flags.cl = 1; - return(flags); - } - -+extern int os_stat_file(const char *file_name, struct uml_stat *buf); -+extern int os_stat_fd(const int fd, struct uml_stat *buf); -+extern int os_access(const char *file, int mode); -+extern void os_print_error(int error, const char* str); -+extern int os_get_exec_close(int fd, int *close_on_exec); -+extern int os_set_exec_close(int fd, int close_on_exec); -+extern int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg); -+extern int os_window_size(int fd, int *rows, int *cols); -+extern int os_new_tty_pgrp(int fd, int pid); -+extern int os_get_ifname(int fd, char *namebuf); -+extern int os_set_slip(int fd); -+extern int os_set_owner(int fd, int pid); -+extern int os_sigio_async(int master, int slave); -+extern int os_mode_fd(int fd, int mode); ++static int copy_chunk_from_user(unsigned long from, int len, void *arg) ++{ ++ unsigned long *to_ptr = arg, to = *to_ptr; + - extern int os_seek_file(int fd, __u64 offset); - extern int os_open_file(char *file, struct openflags flags, int mode); - extern int os_read_file(int fd, void *buf, int len); --extern int os_write_file(int fd, void *buf, int count); -+extern int os_write_file(int fd, const void *buf, int count); - extern int os_file_size(char *file, long long *size_out); -+extern int os_file_modtime(char *file, unsigned long *modtime); - extern int os_pipe(int *fd, int stream, int close_on_exec); - extern int os_set_fd_async(int fd, int owner); - extern int os_set_fd_block(int fd, int blocking); - extern int os_accept_connection(int fd); -+extern int os_create_unix_socket(char *file, int len, int close_on_exec); - extern int os_shutdown_socket(int fd, int r, int w); - extern void os_close_file(int fd); - extern int os_rcv_fd(int fd, int *helper_pid_out); --extern int create_unix_socket(char *file, int len); -+extern int create_unix_socket(char *file, int len, int close_on_exec); - extern int os_connect_socket(char *name); - extern int os_file_type(char *file); - extern int os_file_mode(char *file, struct openflags *mode_out); -+extern int os_lock_file(int fd, int excl); - - extern unsigned long os_process_pc(int pid); - extern int os_process_parent(int pid); -@@ -115,11 +159,12 @@ - extern void os_usr1_process(int pid); - extern int os_getpid(void); - --extern int os_map_memory(void *virt, int fd, unsigned long off, -+extern int os_map_memory(void *virt, int fd, unsigned long long off, - unsigned long len, int r, int w, int x); - extern int os_protect_memory(void *addr, unsigned long len, - int r, int w, int x); - extern int os_unmap_memory(void *addr, int len); -+extern void os_flush_stdout(void); ++ memcpy((void *) to, (void *) from, len); ++ *to_ptr += len; ++ return(0); ++} ++ ++int copy_from_user_skas(void *to, const void *from, int n) ++{ ++ if(segment_eq(get_fs(), KERNEL_DS)){ ++ memcpy(to, from, n); ++ return(0); ++ } ++ ++ return(access_ok_skas(VERIFY_READ, from, n) ? ++ buffer_op((unsigned long) from, n, 0, copy_chunk_from_user, &to): ++ n); ++} ++ ++static int copy_chunk_to_user(unsigned long to, int len, void *arg) ++{ ++ unsigned long *from_ptr = arg, from = *from_ptr; ++ ++ memcpy((void *) to, (void *) from, len); ++ *from_ptr += len; ++ return(0); ++} ++ ++int copy_to_user_skas(void *to, const void *from, int n) ++{ ++ if(segment_eq(get_fs(), KERNEL_DS)){ ++ memcpy(to, from, n); ++ return(0); ++ } ++ ++ return(access_ok_skas(VERIFY_WRITE, to, n) ? ++ buffer_op((unsigned long) to, n, 1, copy_chunk_to_user, &from) : ++ n); ++} ++ ++static int strncpy_chunk_from_user(unsigned long from, int len, void *arg) ++{ ++ char **to_ptr = arg, *to = *to_ptr; ++ int n; ++ ++ strncpy(to, (void *) from, len); ++ n = strnlen(to, len); ++ *to_ptr += n; ++ ++ if(n < len) ++ return(1); ++ return(0); ++} ++ ++int strncpy_from_user_skas(char *dst, const char *src, int count) ++{ ++ int n; ++ char *ptr = dst; ++ ++ if(segment_eq(get_fs(), KERNEL_DS)){ ++ strncpy(dst, src, count); ++ return(strnlen(dst, count)); ++ } ++ ++ if(!access_ok_skas(VERIFY_READ, src, 1)) ++ return(-EFAULT); ++ ++ n = buffer_op((unsigned long) src, count, 0, strncpy_chunk_from_user, ++ &ptr); ++ if(n != 0) ++ return(-EFAULT); ++ return(strnlen(dst, count)); ++} ++ ++static int clear_chunk(unsigned long addr, int len, void *unused) ++{ ++ memset((void *) addr, 0, len); ++ return(0); ++} ++ ++int __clear_user_skas(void *mem, int len) ++{ ++ return(buffer_op((unsigned long) mem, len, 1, clear_chunk, NULL)); ++} ++ ++int clear_user_skas(void *mem, int len) ++{ ++ if(segment_eq(get_fs(), KERNEL_DS)){ ++ memset(mem, 0, len); ++ return(0); ++ } ++ ++ return(access_ok_skas(VERIFY_WRITE, mem, len) ? ++ buffer_op((unsigned long) mem, len, 1, clear_chunk, NULL) : len); ++} ++ ++static int strnlen_chunk(unsigned long str, int len, void *arg) ++{ ++ int *len_ptr = arg, n; ++ ++ n = strnlen((void *) str, len); ++ *len_ptr += n; ++ ++ if(n < len) ++ return(1); ++ return(0); ++} ++ ++int strnlen_user_skas(const void *str, int len) ++{ ++ int count = 0, n; ++ ++ if(segment_eq(get_fs(), KERNEL_DS)) ++ return(strnlen(str, len) + 1); ++ ++ n = buffer_op((unsigned long) str, len, 0, strnlen_chunk, &count); ++ if(n == 0) ++ return(count + 1); ++ return(-EFAULT); ++} ++ ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/Makefile 2004-07-16 19:36:57.056472560 +0300 ++++ uml-2.6.7/arch/um/Makefile 2004-07-16 19:47:24.132142568 +0300 +@@ -22,17 +22,21 @@ + $(ARCH_DIR)/sys-$(SUBARCH)/ - #endif + # Have to precede the include because the included Makefiles reference them. +-SYMLINK_HEADERS = include/asm-um/archparam.h include/asm-um/system.h \ +- include/asm-um/sigcontext.h include/asm-um/processor.h \ +- include/asm-um/ptrace.h include/asm-um/arch-signal.h ++SYMLINK_HEADERS = archparam.h system.h sigcontext.h processor.h ptrace.h \ ++ arch-signal.h module.h ++SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header)) -diff -Naur a/arch/um/include/signal_user.h b/arch/um/include/signal_user.h ---- a/arch/um/include/signal_user.h 2004-03-10 08:20:15.000000000 -0500 -+++ b/arch/um/include/signal_user.h 2004-03-10 08:34:01.000000000 -0500 -@@ -11,6 +11,8 @@ - extern int change_sig(int signal, int on); - extern void set_sigstack(void *stack, int size); - extern void set_handler(int sig, void (*handler)(int), int flags, ...); -+extern int set_signals(int enable); -+extern int get_signals(void); + ARCH_SYMLINKS = include/asm-um/arch $(ARCH_DIR)/include/sysdep $(ARCH_DIR)/os \ + $(SYMLINK_HEADERS) $(ARCH_DIR)/include/uml-config.h - #endif + GEN_HEADERS += $(ARCH_DIR)/include/task.h $(ARCH_DIR)/include/kern_constants.h -diff -Naur a/arch/um/include/skas_ptrace.h b/arch/um/include/skas_ptrace.h ---- a/arch/um/include/skas_ptrace.h 2004-03-10 08:22:45.000000000 -0500 -+++ b/arch/um/include/skas_ptrace.h 2004-03-10 08:43:23.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ +-include $(ARCH_DIR)/Makefile-$(SUBARCH) +-include $(ARCH_DIR)/Makefile-os-$(OS) ++# This target adds dependencies to "prepare". They are defined in the included ++# Makefiles (see Makefile-i386). ++ ++.PHONY: sys_prepare ++sys_prepare: ++ @: -diff -Naur a/arch/um/include/sysdep-i386/frame_user.h b/arch/um/include/sysdep-i386/frame_user.h ---- a/arch/um/include/sysdep-i386/frame_user.h 2004-03-10 08:23:09.000000000 -0500 -+++ b/arch/um/include/sysdep-i386/frame_user.h 2004-03-10 08:43:56.000000000 -0500 -@@ -56,26 +56,26 @@ - * it would have to be __builtin_frame_address(1). - */ + MAKEFILE-$(CONFIG_MODE_TT) += Makefile-tt + MAKEFILE-$(CONFIG_MODE_SKAS) += Makefile-skas +@@ -41,6 +45,9 @@ + include $(addprefix $(ARCH_DIR)/,$(MAKEFILE-y)) + endif --static inline unsigned long frame_restorer(void) --{ -- unsigned long *fp; -- -- fp = __builtin_frame_address(0); -- return((unsigned long) (fp + 1)); --} -+#define frame_restorer() \ -+({ \ -+ unsigned long *fp; \ -+\ -+ fp = __builtin_frame_address(0); \ -+ ((unsigned long) (fp + 1)); \ -+}) ++include $(ARCH_DIR)/Makefile-$(SUBARCH) ++include $(ARCH_DIR)/Makefile-os-$(OS) ++ + EXTRAVERSION := $(EXTRAVERSION)-1um - /* Similarly, this returns the value of sp when the handler was first - * entered. This is used to calculate the proper sp when delivering - * signals. - */ + ARCH_INCLUDE = -I$(ARCH_DIR)/include +@@ -52,14 +59,22 @@ --static inline unsigned long frame_sp(void) --{ -- unsigned long *fp; -- -- fp = __builtin_frame_address(0); -- return((unsigned long) (fp + 1)); --} -+#define frame_sp() \ -+({ \ -+ unsigned long *fp; \ -+\ -+ fp = __builtin_frame_address(0); \ -+ ((unsigned long) (fp + 1)); \ -+}) + CFLAGS += $(CFLAGS-y) -D__arch_um__ -DSUBARCH=\"$(SUBARCH)\" \ + -D_LARGEFILE64_SOURCE $(ARCH_INCLUDE) -Derrno=kernel_errno \ +- $(MODE_INCLUDE) ++ -Dsigprocmask=kernel_sigprocmask $(MODE_INCLUDE) ++ ++CFLAGS += $(call check_gcc,-fno-unit-at-a-time,) - #endif + LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc -diff -Naur a/arch/um/include/sysdep-i386/sigcontext.h b/arch/um/include/sysdep-i386/sigcontext.h ---- a/arch/um/include/sysdep-i386/sigcontext.h 2004-03-10 08:22:23.000000000 -0500 -+++ b/arch/um/include/sysdep-i386/sigcontext.h 2004-03-10 08:41:30.000000000 -0500 -@@ -28,8 +28,8 @@ - */ - #define SC_START_SYSCALL(sc) do SC_EAX(sc) = -ENOSYS; while(0) - --/* These are General Protection and Page Fault */ --#define SEGV_IS_FIXABLE(trap) ((trap == 13) || (trap == 14)) -+/* This is Page Fault */ -+#define SEGV_IS_FIXABLE(trap) (trap == 14) ++# These are needed for clean and mrproper, since in that case .config is not ++# included; the values here are meaningless ++ ++CONFIG_NEST_LEVEL ?= 0 ++CONFIG_KERNEL_HALF_GIGS ?= 0 ++ + SIZE = (($(CONFIG_NEST_LEVEL) + $(CONFIG_KERNEL_HALF_GIGS)) * 0x20000000) - #define SC_SEGV_IS_FIXABLE(sc) (SEGV_IS_FIXABLE(SC_TRAPNO(sc))) + ifeq ($(CONFIG_MODE_SKAS), y) +-$(SYS_HEADERS) : $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h ++$(SYS_HEADERS) : $(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h + endif -diff -Naur a/arch/um/include/sysdep-i386/syscalls.h b/arch/um/include/sysdep-i386/syscalls.h ---- a/arch/um/include/sysdep-i386/syscalls.h 2004-03-10 08:20:25.000000000 -0500 -+++ b/arch/um/include/sysdep-i386/syscalls.h 2004-03-10 08:35:11.000000000 -0500 -@@ -11,39 +11,34 @@ - #define EXECUTE_SYSCALL(syscall, regs) \ - ((long (*)(struct syscall_args)) (*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs)) + include/linux/version.h: arch/$(ARCH)/Makefile +@@ -98,17 +113,17 @@ + CONFIG_KERNEL_STACK_ORDER ?= 2 + STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] ) --extern syscall_handler_t sys_modify_ldt; --extern syscall_handler_t old_mmap_i386; --extern syscall_handler_t old_select; --extern syscall_handler_t sys_ni_syscall; -- - #define ARCH_SYSCALLS \ -- [ __NR_mmap ] = old_mmap_i386, \ -- [ __NR_select ] = old_select, \ -- [ __NR_vm86old ] = sys_ni_syscall, \ -- [ __NR_modify_ldt ] = sys_modify_ldt, \ -- [ __NR_lchown32 ] = sys_lchown, \ -- [ __NR_getuid32 ] = sys_getuid, \ -- [ __NR_getgid32 ] = sys_getgid, \ -- [ __NR_geteuid32 ] = sys_geteuid, \ -- [ __NR_getegid32 ] = sys_getegid, \ -- [ __NR_setreuid32 ] = sys_setreuid, \ -- [ __NR_setregid32 ] = sys_setregid, \ -- [ __NR_getgroups32 ] = sys_getgroups, \ -- [ __NR_setgroups32 ] = sys_setgroups, \ -- [ __NR_fchown32 ] = sys_fchown, \ -- [ __NR_setresuid32 ] = sys_setresuid, \ -- [ __NR_getresuid32 ] = sys_getresuid, \ -- [ __NR_setresgid32 ] = sys_setresgid, \ -- [ __NR_getresgid32 ] = sys_getresgid, \ -- [ __NR_chown32 ] = sys_chown, \ -- [ __NR_setuid32 ] = sys_setuid, \ -- [ __NR_setgid32 ] = sys_setgid, \ -- [ __NR_setfsuid32 ] = sys_setfsuid, \ -- [ __NR_setfsgid32 ] = sys_setfsgid, \ -- [ __NR_pivot_root ] = sys_pivot_root, \ -- [ __NR_mincore ] = sys_mincore, \ -- [ __NR_madvise ] = sys_madvise, \ -- [ 222 ] = sys_ni_syscall, -+ [ __NR_mmap ] = (syscall_handler_t *) old_mmap_i386, \ -+ [ __NR_select ] = (syscall_handler_t *) old_select, \ -+ [ __NR_vm86old ] = (syscall_handler_t *) sys_ni_syscall, \ -+ [ __NR_modify_ldt ] = (syscall_handler_t *) sys_modify_ldt, \ -+ [ __NR_lchown32 ] = (syscall_handler_t *) sys_lchown, \ -+ [ __NR_getuid32 ] = (syscall_handler_t *) sys_getuid, \ -+ [ __NR_getgid32 ] = (syscall_handler_t *) sys_getgid, \ -+ [ __NR_geteuid32 ] = (syscall_handler_t *) sys_geteuid, \ -+ [ __NR_getegid32 ] = (syscall_handler_t *) sys_getegid, \ -+ [ __NR_setreuid32 ] = (syscall_handler_t *) sys_setreuid, \ -+ [ __NR_setregid32 ] = (syscall_handler_t *) sys_setregid, \ -+ [ __NR_getgroups32 ] = (syscall_handler_t *) sys_getgroups, \ -+ [ __NR_setgroups32 ] = (syscall_handler_t *) sys_setgroups, \ -+ [ __NR_fchown32 ] = (syscall_handler_t *) sys_fchown, \ -+ [ __NR_setresuid32 ] = (syscall_handler_t *) sys_setresuid, \ -+ [ __NR_getresuid32 ] = (syscall_handler_t *) sys_getresuid, \ -+ [ __NR_setresgid32 ] = (syscall_handler_t *) sys_setresgid, \ -+ [ __NR_getresgid32 ] = (syscall_handler_t *) sys_getresgid, \ -+ [ __NR_chown32 ] = (syscall_handler_t *) sys_chown, \ -+ [ __NR_setuid32 ] = (syscall_handler_t *) sys_setuid, \ -+ [ __NR_setgid32 ] = (syscall_handler_t *) sys_setgid, \ -+ [ __NR_setfsuid32 ] = (syscall_handler_t *) sys_setfsuid, \ -+ [ __NR_setfsgid32 ] = (syscall_handler_t *) sys_setfsgid, \ -+ [ __NR_pivot_root ] = (syscall_handler_t *) sys_pivot_root, \ -+ [ __NR_mincore ] = (syscall_handler_t *) sys_mincore, \ -+ [ __NR_madvise ] = (syscall_handler_t *) sys_madvise, \ -+ [ 222 ] = (syscall_handler_t *) sys_ni_syscall, - - /* 222 doesn't yet have a name in include/asm-i386/unistd.h */ +-AFLAGS_vmlinux.lds.o = -U$(SUBARCH) \ ++AFLAGS_vmlinux.lds.o = $(shell echo -U$(SUBARCH) \ + -DSTART=$$(($(TOP_ADDR) - $(SIZE))) -DELF_ARCH=$(ELF_ARCH) \ + -DELF_FORMAT=\"$(ELF_FORMAT)\" $(CPP_MODE_TT) \ +- -DKERNEL_STACK_SIZE=$(STACK_SIZE) ++ -DKERNEL_STACK_SIZE=$(STACK_SIZE)) -diff -Naur a/arch/um/include/ubd_user.h b/arch/um/include/ubd_user.h ---- a/arch/um/include/ubd_user.h 2004-03-10 08:21:30.000000000 -0500 -+++ b/arch/um/include/ubd_user.h 2004-03-10 08:39:50.000000000 -0500 -@@ -9,7 +9,7 @@ +-AFLAGS_$(LD_SCRIPT-y:.s=).o = $(AFLAGS_vmlinux.lds.o) -P -C -Uum ++export AFLAGS_$(LD_SCRIPT-y:.s=).o = $(AFLAGS_vmlinux.lds.o) -P -C -Uum - #include "os.h" + LD_SCRIPT-y := $(ARCH_DIR)/$(LD_SCRIPT-y) --enum ubd_req { UBD_READ, UBD_WRITE }; -+enum ubd_req { UBD_READ, UBD_WRITE, UBD_MMAP }; +-$(LD_SCRIPT-y) : $(LD_SCRIPT-y:.s=.S) scripts FORCE +- $(call if_changed_dep,as_s_S) ++#$(LD_SCRIPT-y) : $(LD_SCRIPT-y:.s=.S) scripts FORCE ++# $(call if_changed_dep,as_s_S) - struct io_thread_req { - enum ubd_req op; -@@ -20,8 +20,10 @@ - char *buffer; - int sectorsize; - unsigned long sector_mask; -- unsigned long cow_offset; -+ unsigned long long cow_offset; - unsigned long bitmap_words[2]; -+ int map_fd; -+ unsigned long long map_offset; - int error; - }; + linux: vmlinux $(LD_SCRIPT-y) + $(CC) -Wl,-T,$(LD_SCRIPT-y) $(LINK-y) $(LINK_WRAPS) \ +@@ -116,37 +131,47 @@ -@@ -31,7 +33,7 @@ - int *create_cow_out); - extern int create_cow_file(char *cow_file, char *backing_file, - struct openflags flags, int sectorsize, -- int *bitmap_offset_out, -+ int alignment, int *bitmap_offset_out, - unsigned long *bitmap_len_out, - int *data_offset_out); - extern int read_cow_bitmap(int fd, void *buf, int offset, int len); -@@ -39,7 +41,6 @@ - extern int write_ubd_fs(int fd, char *buffer, int len); - extern int start_io_thread(unsigned long sp, int *fds_out); - extern void do_io(struct io_thread_req *req); --extern int ubd_is_dir(char *file); + USER_CFLAGS := $(patsubst -I%,,$(CFLAGS)) + USER_CFLAGS := $(patsubst -Derrno=kernel_errno,,$(USER_CFLAGS)) ++USER_CFLAGS := $(patsubst -Dsigprocmask=kernel_sigprocmask,,$(USER_CFLAGS)) + USER_CFLAGS := $(patsubst -D__KERNEL__,,$(USER_CFLAGS)) $(ARCH_INCLUDE) \ + $(MODE_INCLUDE) - static inline int ubd_test_bit(__u64 bit, unsigned char *data) - { -diff -Naur a/arch/um/include/um_uaccess.h b/arch/um/include/um_uaccess.h ---- a/arch/um/include/um_uaccess.h 2004-03-10 08:22:20.000000000 -0500 -+++ b/arch/um/include/um_uaccess.h 2004-03-10 08:41:25.000000000 -0500 -@@ -38,22 +38,73 @@ - from, n)); - } + # To get a definition of F_SETSIG + USER_CFLAGS += -D_GNU_SOURCE -+/* -+ * strncpy_from_user: - Copy a NUL terminated string from userspace. -+ * @dst: Destination address, in kernel space. This buffer must be at -+ * least @count bytes long. -+ * @src: Source address, in user space. -+ * @count: Maximum number of bytes to copy, including the trailing NUL. -+ * -+ * Copies a NUL-terminated string from userspace to kernel space. -+ * -+ * On success, returns the length of the string (not including the trailing -+ * NUL). -+ * -+ * If access to userspace fails, returns -EFAULT (some data may have been -+ * copied). -+ * -+ * If @count is smaller than the length of the string, copies @count bytes -+ * and returns @count. -+ */ ++# From main Makefile, these options are set after including the ARCH makefile. ++# So copy them here. + - static inline int strncpy_from_user(char *dst, const char *src, int count) - { - return(CHOOSE_MODE_PROC(strncpy_from_user_tt, strncpy_from_user_skas, - dst, src, count)); - } ++ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE ++USER_CFLAGS += -Os ++else ++USER_CFLAGS += -O2 ++endif ++ ++ifndef CONFIG_FRAME_POINTER ++USER_CFLAGS += -fomit-frame-pointer ++endif ++ ++ifdef CONFIG_DEBUG_INFO ++USER_CFLAGS += -g ++endif ++ + CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/uml.lds.s \ +- $(ARCH_DIR)/dyn_link.ld.s $(GEN_HEADERS) ++ $(ARCH_DIR)/dyn_link.ld.s $(ARCH_DIR)/include/uml-config.h \ ++ $(GEN_HEADERS) ++ ++MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \ ++ $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) -+/* -+ * __clear_user: - Zero a block of memory in user space, with less checking. -+ * @to: Destination address, in user space. -+ * @n: Number of bytes to zero. -+ * -+ * Zero a block of memory in user space. Caller must check -+ * the specified block with access_ok() before calling this function. -+ * -+ * Returns number of bytes that could not be cleared. -+ * On success, this will be zero. -+ */ - static inline int __clear_user(void *mem, int len) - { - return(CHOOSE_MODE_PROC(__clear_user_tt, __clear_user_skas, mem, len)); - } +-$(ARCH_DIR)/main.o: $(ARCH_DIR)/main.c +- $(CC) $(USER_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< ++$(ARCH_DIR)/main.o: $(ARCH_DIR)/main.c sys_prepare ++ @ echo ' MAIN $@' ++ @ $(CC) $(USER_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< -+/* -+ * clear_user: - Zero a block of memory in user space. -+ * @to: Destination address, in user space. -+ * @n: Number of bytes to zero. -+ * -+ * Zero a block of memory in user space. -+ * -+ * Returns number of bytes that could not be cleared. -+ * On success, this will be zero. -+ */ - static inline int clear_user(void *mem, int len) - { - return(CHOOSE_MODE_PROC(clear_user_tt, clear_user_skas, mem, len)); - } + archmrproper: +- for d in $(ARCH_SUBDIRS) $(ARCH_DIR)/util; \ +- do \ +- $(MAKE) -C $$d archmrproper; \ +- done +- rm -f $(CLEAN_FILES) $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) include/asm \ +- $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) +- +-archclean: sysclean +- for d in $(ARCH_SUBDIRS) $(ARCH_DIR)/util; \ +- do \ +- $(MAKE) -C $$d clean; \ +- done +- find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ +- -o -name '*.gcov' \) -type f -print | xargs rm -f +- rm -f linux x.i gmon.out $(ARCH_DIR)/link.ld $(GEN_HEADERS) ++ @: -+/* -+ * strlen_user: - Get the size of a string in user space. -+ * @str: The string to measure. -+ * @n: The maximum valid length -+ * -+ * Get the size of a NUL-terminated string in user space. -+ * -+ * Returns the size of the string INCLUDING the terminating NUL. -+ * On exception, returns 0. -+ * If the string is too long, returns a value greater than @n. -+ */ - static inline int strnlen_user(const void *str, int len) - { - return(CHOOSE_MODE_PROC(strnlen_user_tt, strnlen_user_skas, str, len)); -diff -Naur a/arch/um/include/user.h b/arch/um/include/user.h ---- a/arch/um/include/user.h 2004-03-10 08:20:16.000000000 -0500 -+++ b/arch/um/include/user.h 2004-03-10 08:34:09.000000000 -0500 -@@ -14,6 +14,7 @@ - extern void kfree(void *ptr); - extern int in_aton(char *str); - extern int open_gdb_chan(void); -+extern int strlcpy(char *, const char *, int); - - #endif - -diff -Naur a/arch/um/include/user_util.h b/arch/um/include/user_util.h ---- a/arch/um/include/user_util.h 2004-03-10 08:20:24.000000000 -0500 -+++ b/arch/um/include/user_util.h 2004-03-10 08:35:05.000000000 -0500 -@@ -14,8 +14,6 @@ - extern int unlockpt(int __fd); - extern char *ptsname(int __fd); - --enum { OP_NONE, OP_EXEC, OP_FORK, OP_TRACE_ON, OP_REBOOT, OP_HALT, OP_CB }; -- - struct cpu_task { - int pid; - void *task; -@@ -59,7 +57,6 @@ - extern void *add_signal_handler(int sig, void (*handler)(int)); - extern int start_fork_tramp(void *arg, unsigned long temp_stack, - int clone_flags, int (*tramp)(void *)); --extern int clone_and_wait(int (*fn)(void *), void *arg, void *sp, int flags); - extern int linux_main(int argc, char **argv); - extern void set_cmdline(char *cmd); - extern void input_cb(void (*proc)(void *), void *arg, int arg_len); -@@ -86,11 +83,13 @@ - extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr); - extern void write_sigio_workaround(void); - extern void arch_check_bugs(void); -+extern int cpu_feature(char *what, char *buf, int len); - extern int arch_handle_signal(int sig, union uml_pt_regs *regs); - extern int arch_fixup(unsigned long address, void *sc_ptr); - extern void forward_pending_sigio(int target); - extern int can_do_skas(void); -- -+extern void arch_init_thread(void); -+ - #endif +-archdep: +- for d in $(ARCH_SUBDIRS); do $(MAKE) -C $$d fastdep; done ++archclean: ++ @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ ++ -o -name '*.gcov' \) -type f -print | xargs rm -f - /* -diff -Naur a/arch/um/Kconfig b/arch/um/Kconfig ---- a/arch/um/Kconfig 2004-03-10 08:21:26.000000000 -0500 -+++ b/arch/um/Kconfig 2004-03-10 08:38:54.000000000 -0500 -@@ -61,6 +61,20 @@ + $(SYMLINK_HEADERS): + cd $(TOPDIR)/$(dir $@) ; \ +@@ -161,19 +186,32 @@ + $(ARCH_DIR)/os: + cd $(ARCH_DIR) && ln -sf os-$(OS) os - config NET - bool "Networking support" -+ help -+ Unless you really know what you are doing, you should say Y here. -+ The reason is that some programs need kernel networking support even -+ when running on a stand-alone machine that isn't connected to any -+ other computer. If you are upgrading from an older kernel, you -+ should consider updating your networking tools too because changes -+ in the kernel and the tools often go hand in hand. The tools are -+ contained in the package net-tools, the location and version number -+ of which are given in Documentation/Changes. +-$(ARCH_DIR)/include/uml-config.h : +- sed 's/ CONFIG/ UML_CONFIG/' $(TOPDIR)/include/linux/autoconf.h > $@ ++# Generated files ++define filechk_umlconfig ++ sed 's/ CONFIG/ UML_CONFIG/' ++endef + -+ For a general introduction to Linux networking, it is highly -+ recommended to read the NET-HOWTO, available from -+ . ++$(ARCH_DIR)/include/uml-config.h : $(TOPDIR)/include/linux/autoconf.h ++ $(call filechk,umlconfig) + ++filechk_gen_header = $< - source "fs/Kconfig.binfmt" + $(ARCH_DIR)/include/task.h : $(ARCH_DIR)/util/mk_task +- $< > $@ ++ $(call filechk,gen_header) -@@ -85,6 +99,19 @@ - If you'd like to be able to work with files stored on the host, - say Y or M here; otherwise say N. + $(ARCH_DIR)/include/kern_constants.h : $(ARCH_DIR)/util/mk_constants +- $< > $@ ++ $(call filechk,gen_header) -+config HPPFS -+ tristate "HoneyPot ProcFS" -+ help -+ hppfs (HoneyPot ProcFS) is a filesystem which allows UML /proc -+ entries to be overridden, removed, or fabricated from the host. -+ Its purpose is to allow a UML to appear to be a physical machine -+ by removing or changing anything in /proc which gives away the -+ identity of a UML. +-$(ARCH_DIR)/util/mk_task : $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h \ +- $(ARCH_DIR)/util FORCE ; ++$(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants : $(ARCH_DIR)/util \ ++ sys_prepare FORCE ; + + $(ARCH_DIR)/util: FORCE +- @$(call descend,$@,) ++ $(Q)$(MAKE) $(build)=$@ + -+ See http://user-mode-linux.sf.net/hppfs.html for more information. ++export SUBARCH USER_CFLAGS OS + -+ You only need this if you are setting up a UML honeypot. Otherwise, -+ it is safe to say 'N' here. ++all: linux - config MCONSOLE - bool "Management console" -@@ -105,6 +132,16 @@ - config MAGIC_SYSRQ - bool "Magic SysRq key" - depends on MCONSOLE -+ help -+ If you say Y here, you will have some control over the system even -+ if the system crashes for example during kernel debugging (e.g., you -+ will be able to flush the buffer cache to disk, reboot the system -+ immediately or dump some status information). This is accomplished -+ by pressing various keys while holding SysRq (Alt+PrintScreen). It -+ also works on a serial console (on PC hardware at least), if you -+ send a BREAK and then within 5 seconds a command keypress. The -+ keys are documented in Documentation/sysrq.txt. Don't say Y -+ unless you really know what this hack does. +-export SUBARCH USER_CFLAGS OS ++define archhelp ++ echo '* linux - Binary kernel image (./linux)' ++endef +Index: uml-2.6.7/arch/um/kernel/tt/unmap.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/unmap.c 2004-07-16 19:37:13.584959848 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/unmap.c 2004-07-16 19:47:23.753200176 +0300 +@@ -3,10 +3,7 @@ + * Licensed under the GPL + */ - config HOST_2G_2G - bool "2G/2G host address space split" -@@ -160,6 +197,9 @@ - config HIGHMEM - bool "Highmem support" +-#include +-#include + #include +-#include "user.h" -+config PROC_MM -+ bool "/proc/mm support" -+ - config KERNEL_STACK_ORDER - int "Kernel stack size order" - default 2 -@@ -168,6 +208,17 @@ - be 1 << order pages. The default is OK unless you're running Valgrind - on UML, in which case, set this to 3. + int switcheroo(int fd, int prot, void *from, void *to, int size) + { +Index: uml-2.6.7/arch/um/kernel/tt/ptproxy/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/ptproxy/Makefile 2004-07-16 19:36:30.113568504 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/ptproxy/Makefile 2004-07-16 19:47:23.746201240 +0300 +@@ -9,5 +9,3 @@ -+config UML_REAL_TIME_CLOCK -+ bool "Real-time Clock" -+ default y -+ help -+ This option makes UML time deltas match wall clock deltas. This should -+ normally be enabled. The exception would be if you are debugging with -+ UML and spend long times with UML stopped at a breakpoint. In this -+ case, when UML is restarted, it will call the timer enough times to make -+ up for the time spent at the breakpoint. This could result in a -+ noticable lag. If this is a problem, then disable this option. -+ - endmenu + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +- +-clean: +Index: uml-2.6.7/arch/um/kernel/mem_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/mem_user.c 2004-07-16 19:36:47.959855456 +0300 ++++ uml-2.6.7/arch/um/kernel/mem_user.c 2004-07-16 19:47:23.721205040 +0300 +@@ -34,10 +34,9 @@ + #include + #include + #include +-#include + #include + #include +-#include ++#include + #include + #include + #include "kern_util.h" +@@ -47,105 +46,145 @@ + #include "init.h" + #include "os.h" + #include "tempfile.h" ++#include "kern_constants.h" - source "init/Kconfig" -@@ -240,6 +291,10 @@ - config PT_PROXY - bool "Enable ptrace proxy" - depends on XTERM_CHAN && DEBUG_INFO -+ help -+ This option enables a debugging interface which allows gdb to debug -+ the kernel without needing to actually attach to kernel threads. -+ If you want to do kernel debugging, say Y here; otherwise say N. + extern struct mem_region physmem_region; - config GPROF - bool "Enable gprof support" -diff -Naur a/arch/um/Kconfig_block b/arch/um/Kconfig_block ---- a/arch/um/Kconfig_block 2004-03-10 08:22:00.000000000 -0500 -+++ b/arch/um/Kconfig_block 2004-03-10 08:41:14.000000000 -0500 -@@ -29,6 +29,20 @@ - wise choice too. In all other cases (for example, if you're just - playing around with User-Mode Linux) you can choose N. + #define TEMPNAME_TEMPLATE "vm_file-XXXXXX" -+# Turn this back on when the driver actually works -+# -+#config BLK_DEV_COW -+# tristate "COW block device" -+# help -+# This is a layered driver which sits above two other block devices. -+# One is read-only, and the other is a read-write layer which stores -+# all changes. This provides the illusion that the read-only layer -+# can be mounted read-write and changed. +-int create_mem_file(unsigned long len) ++static int create_tmp_file(unsigned long len) + { +- int fd; ++ int fd, err; + char zero; + + fd = make_tempfile(TEMPNAME_TEMPLATE, NULL, 1); +- if (fchmod(fd, 0777) < 0){ +- perror("fchmod"); ++ if(fd < 0) { ++ os_print_error(fd, "make_tempfile"); ++ exit(1); ++ } + -+config BLK_DEV_COW_COMMON -+ bool -+ default BLK_DEV_COW || BLK_DEV_UBD ++ err = os_mode_fd(fd, 0777); ++ if(err < 0){ ++ os_print_error(err, "os_mode_fd"); + exit(1); + } +- if(os_seek_file(fd, len) < 0){ +- perror("lseek"); ++ err = os_seek_file(fd, len); ++ if(err < 0){ ++ os_print_error(err, "os_seek_file"); + exit(1); + } + zero = 0; +- if(write(fd, &zero, 1) != 1){ +- perror("write"); ++ err = os_write_file(fd, &zero, 1); ++ if(err != 1){ ++ os_print_error(err, "os_write_file"); + exit(1); + } +- if(fcntl(fd, F_SETFD, 1) != 0) +- perror("Setting FD_CLOEXEC failed"); + - config BLK_DEV_LOOP - tristate "Loopback device support" - -diff -Naur a/arch/um/Kconfig_net b/arch/um/Kconfig_net ---- a/arch/um/Kconfig_net 2004-03-10 08:21:40.000000000 -0500 -+++ b/arch/um/Kconfig_net 2004-03-10 08:40:15.000000000 -0500 -@@ -1,5 +1,5 @@ - --menu "Network Devices" -+menu "UML Network Devices" - depends on NET - - # UML virtual driver -@@ -176,73 +176,5 @@ - - Startup example: "eth0=slirp,FE:FD:01:02:03:04,/usr/local/bin/slirp" + return(fd); + } +-int setup_region(struct mem_region *region, void *entry) ++static int have_devanon = 0; ++ ++void check_devanon(void) ++{ ++ int fd; ++ ++ printk("Checking for /dev/anon on the host..."); ++ fd = open("/dev/anon", O_RDWR); ++ if(fd < 0){ ++ printk("Not available (open failed with errno %d)\n", errno); ++ return; ++ } ++ ++ printk("OK\n"); ++ have_devanon = 1; ++} ++ ++static int create_anon_file(unsigned long len) + { +- void *loc, *start; +- char *driver; +- int err, offset; - --# Below are hardware-independent drivers mirrored from --# drivers/net/Config.in. It would be nice if Linux --# had HW independent drivers separated from the other --# but it does not. Until then each non-ISA/PCI arch --# needs to provide it's own menu of network drivers --config DUMMY -- tristate "Dummy net driver support" -- --config BONDING -- tristate "Bonding driver support" -- --config EQUALIZER -- tristate "EQL (serial line load balancing) support" -- --config TUN -- tristate "Universal TUN/TAP device driver support" -- --config ETHERTAP -- tristate "Ethertap network tap (OBSOLETE)" -- depends on EXPERIMENTAL && NETLINK -- --config PPP -- tristate "PPP (point-to-point protocol) support" -- --config PPP_MULTILINK -- bool "PPP multilink support (EXPERIMENTAL)" -- depends on PPP && EXPERIMENTAL -- --config PPP_FILTER -- bool "PPP filtering" -- depends on PPP && FILTER -- --config PPP_ASYNC -- tristate "PPP support for async serial ports" -- depends on PPP -- --config PPP_SYNC_TTY -- tristate "PPP support for sync tty ports" -- depends on PPP -- --config PPP_DEFLATE -- tristate "PPP Deflate compression" -- depends on PPP -- --config PPP_BSDCOMP -- tristate "PPP BSD-Compress compression" -- depends on PPP -- --config PPPOE -- tristate "PPP over Ethernet (EXPERIMENTAL)" -- depends on PPP && EXPERIMENTAL -- --config SLIP -- tristate "SLIP (serial line) support" -- --config SLIP_COMPRESSED -- bool "CSLIP compressed headers" -- depends on SLIP=y -- --config SLIP_SMART -- bool "Keepalive and linefill" -- depends on SLIP=y -- --config SLIP_MODE_SLIP6 -- bool "Six bit SLIP encapsulation" -- depends on SLIP=y +- if(region->start != -1){ +- err = reserve_vm(region->start, +- region->start + region->len, entry); +- if(err){ +- printk("setup_region : failed to reserve " +- "0x%x - 0x%x for driver '%s'\n", +- region->start, +- region->start + region->len, +- region->driver); +- return(-1); +- } +- } +- else region->start = get_vm(region->len); +- if(region->start == 0){ +- if(region->driver == NULL) driver = "physmem"; +- else driver = region->driver; +- printk("setup_region : failed to find vm for " +- "driver '%s' (length %d)\n", driver, region->len); +- return(-1); +- } +- if(region->start == uml_physmem){ +- start = (void *) uml_reserved; +- offset = uml_reserved - uml_physmem; +- } +- else { +- start = (void *) region->start; +- offset = 0; +- } - - endmenu - -diff -Naur a/arch/um/kernel/config.c.in b/arch/um/kernel/config.c.in ---- a/arch/um/kernel/config.c.in 2004-03-10 08:22:24.000000000 -0500 -+++ b/arch/um/kernel/config.c.in 2004-03-10 08:41:35.000000000 -0500 -@@ -7,9 +7,7 @@ - #include - #include "init.h" - --static __initdata char *config = " --CONFIG --"; -+static __initdata char *config = "CONFIG"; - - static int __init print_config(char *line, int *add) - { -diff -Naur a/arch/um/kernel/exec_kern.c b/arch/um/kernel/exec_kern.c ---- a/arch/um/kernel/exec_kern.c 2004-03-10 08:20:50.000000000 -0500 -+++ b/arch/um/kernel/exec_kern.c 2004-03-10 08:36:27.000000000 -0500 -@@ -32,10 +32,15 @@ - CHOOSE_MODE_PROC(start_thread_tt, start_thread_skas, regs, eip, esp); - } - -+extern void log_exec(char **argv, void *tty); +- loc = mmap(start, region->len - offset, PROT_READ | PROT_WRITE, +- MAP_SHARED | MAP_FIXED, region->fd, offset); +- if(loc != start){ +- perror("Mapping memory"); ++ void *addr; ++ int fd; + - static int execve1(char *file, char **argv, char **env) - { - int error; - -+#ifdef CONFIG_TTY_LOG -+ log_exec(argv, current->tty); -+#endif - error = do_execve(file, argv, env, ¤t->thread.regs); - if (error == 0){ - current->ptrace &= ~PT_DTRACE; -diff -Naur a/arch/um/kernel/frame.c b/arch/um/kernel/frame.c ---- a/arch/um/kernel/frame.c 2004-03-10 08:20:56.000000000 -0500 -+++ b/arch/um/kernel/frame.c 2004-03-10 08:37:19.000000000 -0500 -@@ -279,7 +279,7 @@ - struct sc_frame_raw raw_sc; - struct si_frame_raw raw_si; - void *stack, *sigstack; -- unsigned long top, sig_top, base; -+ unsigned long top, base; - - stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); -@@ -292,7 +292,6 @@ ++ fd = open("/dev/anon", O_RDWR); ++ if(fd < 0) { ++ os_print_error(fd, "opening /dev/anon"); + exit(1); } - - top = (unsigned long) stack + PAGE_SIZE - sizeof(void *); -- sig_top = (unsigned long) sigstack + PAGE_SIZE; - - /* Get the sigcontext, no sigrestorer layout */ - raw_sc.restorer = 0; -diff -Naur a/arch/um/kernel/frame_kern.c b/arch/um/kernel/frame_kern.c ---- a/arch/um/kernel/frame_kern.c 2004-03-10 08:23:29.000000000 -0500 -+++ b/arch/um/kernel/frame_kern.c 2004-03-10 08:45:36.000000000 -0500 -@@ -6,7 +6,6 @@ - #include "asm/ptrace.h" - #include "asm/uaccess.h" - #include "asm/signal.h" --#include "asm/uaccess.h" - #include "asm/ucontext.h" - #include "frame_kern.h" - #include "sigcontext.h" -@@ -29,12 +28,15 @@ - sizeof(restorer))); +- return(0); ++ ++ addr = mmap(NULL, len, PROT_READ | PROT_WRITE , MAP_PRIVATE, fd, 0); ++ if(addr == MAP_FAILED){ ++ os_print_error((int) addr, "mapping physmem file"); ++ exit(1); ++ } ++ munmap(addr, len); ++ ++ return(fd); ++} ++ ++int create_mem_file(unsigned long len) ++{ ++ int err, fd; ++ ++ if(have_devanon) ++ fd = create_anon_file(len); ++ else fd = create_tmp_file(len); ++ ++ err = os_set_exec_close(fd, 1); ++ if(err < 0) ++ os_print_error(err, "exec_close"); ++ return(fd); } -+extern int userspace_pid[]; ++struct iomem_region *iomem_regions = NULL; ++int iomem_size = 0; + - static int copy_sc_to_user(void *to, void *fp, struct pt_regs *from, - struct arch_frame_data *arch) - { - return(CHOOSE_MODE(copy_sc_to_user_tt(to, fp, UPT_SC(&from->regs), - arch), -- copy_sc_to_user_skas(to, fp, &from->regs, -+ copy_sc_to_user_skas(userspace_pid[0], to, fp, -+ &from->regs, - current->thread.cr2, - current->thread.err))); - } -diff -Naur a/arch/um/kernel/helper.c b/arch/um/kernel/helper.c ---- a/arch/um/kernel/helper.c 2004-03-10 08:21:25.000000000 -0500 -+++ b/arch/um/kernel/helper.c 2004-03-10 08:38:51.000000000 -0500 -@@ -7,7 +7,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -33,6 +32,7 @@ + static int __init parse_iomem(char *str, int *add) { - struct helper_data *data = arg; - char **argv = data->argv; -+ int errval; - - if(helper_pause){ - signal(SIGHUP, helper_hup); -@@ -41,8 +41,9 @@ - if(data->pre_exec != NULL) - (*data->pre_exec)(data->pre_data); - execvp(argv[0], argv); -+ errval = errno; - printk("execvp of '%s' failed - errno = %d\n", argv[0], errno); -- write(data->fd, &errno, sizeof(errno)); -+ os_write_file(data->fd, &errval, sizeof(errval)); - os_kill_process(os_getpid(), 0); - return(0); - } -@@ -59,17 +60,20 @@ - if((stack_out != NULL) && (*stack_out != 0)) - stack = *stack_out; - else stack = alloc_stack(0, um_in_interrupt()); -- if(stack == 0) return(-ENOMEM); -+ if(stack == 0) -+ return(-ENOMEM); +- struct stat buf; ++ struct iomem_region *new; ++ struct uml_stat buf; + char *file, *driver; +- int fd; ++ int fd, err; - err = os_pipe(fds, 1, 0); -- if(err){ -- printk("run_helper : pipe failed, errno = %d\n", -err); -- return(err); -+ if(err < 0){ -+ printk("run_helper : pipe failed, err = %d\n", -err); -+ goto out_free; + driver = str; + file = strchr(str,','); + if(file == NULL){ +- printk("parse_iomem : failed to parse iomem\n"); +- return(1); ++ printf("parse_iomem : failed to parse iomem\n"); ++ goto out; } -- if(fcntl(fds[1], F_SETFD, 1) != 0){ -- printk("run_helper : setting FD_CLOEXEC failed, errno = %d\n", + *file = '\0'; + file++; + fd = os_open_file(file, of_rdwr(OPENFLAGS()), 0); + if(fd < 0){ +- printk("parse_iomem - Couldn't open io file, errno = %d\n", - errno); -- return(-errno); +- return(1); +- } +- if(fstat(fd, &buf) < 0) { +- printk("parse_iomem - cannot fstat file, errno = %d\n", errno); +- return(1); ++ os_print_error(fd, "parse_iomem - Couldn't open io file"); ++ goto out; + } +- add_iomem(driver, fd, buf.st_size); + -+ err = os_set_exec_close(fds[1], 1); ++ err = os_stat_fd(fd, &buf); + if(err < 0){ -+ printk("run_helper : setting FD_CLOEXEC failed, err = %d\n", -+ -err); ++ os_print_error(err, "parse_iomem - cannot stat_fd file"); + goto out_close; - } - - sp = stack + page_size() - sizeof(void *); -@@ -80,23 +84,34 @@ - pid = clone(helper_child, (void *) sp, CLONE_VM | SIGCHLD, &data); - if(pid < 0){ - printk("run_helper : clone failed, errno = %d\n", errno); -- return(-errno); -+ err = -errno; ++ } ++ ++ new = malloc(sizeof(*new)); ++ if(new == NULL){ ++ perror("Couldn't allocate iomem_region struct"); + goto out_close; - } -- close(fds[1]); -- n = read(fds[0], &err, sizeof(err)); ++ } + -+ os_close_file(fds[1]); -+ n = os_read_file(fds[0], &err, sizeof(err)); - if(n < 0){ -- printk("run_helper : read on pipe failed, errno = %d\n", -- errno); -- return(-errno); -+ printk("run_helper : read on pipe failed, err = %d\n", -n); -+ err = n; -+ goto out_kill; - } - else if(n != 0){ - waitpid(pid, NULL, 0); -- pid = -err; -+ pid = -errno; - } - - if(stack_out == NULL) free_stack(stack, 0); - else *stack_out = stack; - return(pid); ++ *new = ((struct iomem_region) { .next = iomem_regions, ++ .driver = driver, ++ .fd = fd, ++ .size = buf.ust_size, ++ .phys = 0, ++ .virt = 0 }); ++ iomem_regions = new; ++ iomem_size += new->size + UM_KERN_PAGE_SIZE; + -+ out_kill: -+ os_kill_process(pid, 1); + return(0); + out_close: -+ os_close_file(fds[0]); -+ os_close_file(fds[1]); -+ out_free: -+ free_stack(stack, 0); -+ return(err); ++ os_close_file(fd); ++ out: ++ return(1); } - int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, -@@ -117,9 +132,11 @@ - } - if(stack_out == NULL){ - pid = waitpid(pid, &status, 0); -- if(pid < 0) -+ if(pid < 0){ - printk("run_helper_thread - wait failed, errno = %d\n", -- pid); -+ errno); -+ pid = -errno; -+ } - if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)) - printk("run_helper_thread - thread returned status " - "0x%x\n", status); -diff -Naur a/arch/um/kernel/initrd_user.c b/arch/um/kernel/initrd_user.c ---- a/arch/um/kernel/initrd_user.c 2004-03-10 08:20:28.000000000 -0500 -+++ b/arch/um/kernel/initrd_user.c 2004-03-10 08:35:31.000000000 -0500 -@@ -6,7 +6,6 @@ - #include - #include - #include --#include - #include + __uml_setup("iomem=", parse_iomem, +@@ -153,73 +192,20 @@ + " Configure as an IO memory region named .\n\n" + ); - #include "user_util.h" -@@ -19,13 +18,15 @@ +-#ifdef notdef +-int logging = 0; +-int logging_fd = -1; +- +-int logging_line = 0; +-char logging_buf[256]; +- +-void log(char *fmt, ...) +-{ +- va_list ap; +- struct timeval tv; +- struct openflags flags; +- +- if(logging == 0) return; +- if(logging_fd < 0){ +- flags = of_create(of_trunc(of_rdrw(OPENFLAGS()))); +- logging_fd = os_open_file("log", flags, 0644); +- } +- gettimeofday(&tv, NULL); +- sprintf(logging_buf, "%d\t %u.%u ", logging_line++, tv.tv_sec, +- tv.tv_usec); +- va_start(ap, fmt); +- vsprintf(&logging_buf[strlen(logging_buf)], fmt, ap); +- va_end(ap); +- write(logging_fd, logging_buf, strlen(logging_buf)); +-} +-#endif +- +-int map_memory(unsigned long virt, unsigned long phys, unsigned long len, +- int r, int w, int x) +-{ +- struct mem_region *region = phys_region(phys); +- +- return(os_map_memory((void *) virt, region->fd, phys_offset(phys), len, +- r, w, x)); +-} +- + int protect_memory(unsigned long addr, unsigned long len, int r, int w, int x, + int must_succeed) { - int fd, n; - -- if((fd = os_open_file(filename, of_read(OPENFLAGS()), 0)) < 0){ -- printk("Opening '%s' failed - errno = %d\n", filename, errno); -+ fd = os_open_file(filename, of_read(OPENFLAGS()), 0); -+ if(fd < 0){ -+ printk("Opening '%s' failed - err = %d\n", filename, -fd); - return(-1); - } -- if((n = read(fd, buf, size)) != size){ -- printk("Read of %d bytes from '%s' returned %d, errno = %d\n", -- size, filename, n, errno); -+ n = os_read_file(fd, buf, size); -+ if(n != size){ -+ printk("Read of %d bytes from '%s' failed, err = %d\n", size, -+ filename, -n); - return(-1); +- if(os_protect_memory((void *) addr, len, r, w, x) < 0){ ++ int err; ++ ++ err = os_protect_memory((void *) addr, len, r, w, x); ++ if(err < 0){ + if(must_succeed) +- panic("protect failed, errno = %d", errno); +- else return(-errno); ++ panic("protect failed, err = %d", -err); ++ else return(err); } return(0); -diff -Naur a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c ---- a/arch/um/kernel/init_task.c 2004-03-10 08:23:28.000000000 -0500 -+++ b/arch/um/kernel/init_task.c 2004-03-10 08:45:26.000000000 -0500 + } + +-unsigned long find_iomem(char *driver, unsigned long *len_out) +-{ +- struct mem_region *region; +- int i, n; +- +- n = nregions(); +- for(i = 0; i < n; i++){ +- region = regions[i]; +- if(region == NULL) continue; +- if((region->driver != NULL) && +- !strcmp(region->driver, driver)){ +- *len_out = region->len; +- return(region->start); +- } +- } +- *len_out = 0; +- return 0; +-} +- + /* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically +Index: uml-2.6.7/arch/um/kernel/init_task.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/init_task.c 2004-07-16 19:37:49.384517488 +0300 ++++ uml-2.6.7/arch/um/kernel/init_task.c 2004-07-16 19:47:23.716205800 +0300 @@ -8,7 +8,6 @@ #include "linux/module.h" #include "linux/sched.h" @@ -7010,8269 +6071,6472 @@ diff -Naur a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c /* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c ---- a/arch/um/kernel/irq.c 2004-03-10 08:22:36.000000000 -0500 -+++ b/arch/um/kernel/irq.c 2004-03-10 08:42:39.000000000 -0500 -@@ -29,6 +29,7 @@ - #include "user_util.h" - #include "kern_util.h" - #include "irq_user.h" -+#include "irq_kern.h" +Index: uml-2.6.7/arch/um/kernel/tty_log.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tty_log.c 2004-07-16 19:36:56.920493232 +0300 ++++ uml-2.6.7/arch/um/kernel/tty_log.c 2004-07-16 19:47:23.753200176 +0300 +@@ -9,10 +9,10 @@ + #include + #include + #include +-#include + #include + #include "init.h" + #include "user.h" ++#include "kern_util.h" + #include "os.h" - static void register_irq_proc (unsigned int irq); + #define TTY_LOG_DIR "./" +@@ -24,29 +24,40 @@ + #define TTY_LOG_OPEN 1 + #define TTY_LOG_CLOSE 2 + #define TTY_LOG_WRITE 3 ++#define TTY_LOG_EXEC 4 ++ ++#define TTY_READ 1 ++#define TTY_WRITE 2 -@@ -83,65 +84,55 @@ - end_none + struct tty_log_buf { + int what; + unsigned long tty; + int len; ++ int direction; ++ unsigned long sec; ++ unsigned long usec; }; --/* Not changed */ --volatile unsigned long irq_err_count; -- - /* - * Generic, controller-independent functions: - */ - --int get_irq_list(char *buf) -+int show_interrupts(struct seq_file *p, void *v) +-int open_tty_log(void *tty) ++int open_tty_log(void *tty, void *current_tty) { -- int i, j; -- unsigned long flags; -+ int i = *(loff_t *) v, j; - struct irqaction * action; -- char *p = buf; -+ unsigned long flags; + struct timeval tv; + struct tty_log_buf data; + char buf[strlen(tty_log_dir) + sizeof("01234567890-01234567\0")]; + int fd; -- p += sprintf(p, " "); -- for (j=0; jtypename); -- p += sprintf(p, " %s", action->name); -+ seq_printf(p, " %14s", irq_desc[i].handler->typename); -+ seq_printf(p, " %s", action->name); - - for (action=action->next; action; action = action->next) -- p += sprintf(p, ", %s", action->name); -- *p++ = '\n'; -- end: -+ seq_printf(p, ", %s", action->name); -+ -+ seq_putc(p, '\n'); -+skip: - spin_unlock_irqrestore(&irq_desc[i].lock, flags); -+ } else if (i == NR_IRQS) { -+ seq_printf(p, "NMI: "); -+ for (j = 0; j < NR_CPUS; j++) -+ if (cpu_online(j)) -+ seq_printf(p, "%10u ", nmi_count(j)); -+ seq_putc(p, '\n'); ++ gettimeofday(&tv, NULL); + if(tty_log_fd != -1){ +- data = ((struct tty_log_buf) { what : TTY_LOG_OPEN, +- tty : (unsigned long) tty, +- len : 0 }); +- write(tty_log_fd, &data, sizeof(data)); ++ data = ((struct tty_log_buf) { .what = TTY_LOG_OPEN, ++ .tty = (unsigned long) tty, ++ .len = sizeof(current_tty), ++ .direction = 0, ++ .sec = tv.tv_sec, ++ .usec = tv.tv_usec } ); ++ os_write_file(tty_log_fd, &data, sizeof(data)); ++ os_write_file(tty_log_fd, ¤t_tty, data.len); + return(tty_log_fd); } -- p += sprintf(p, "\n"); --#ifdef notdef --#ifdef CONFIG_SMP -- p += sprintf(p, "LOC: "); -- for (j = 0; j < num_online_cpus(); j++) -- p += sprintf(p, "%10u ", -- apic_timer_irqs[cpu_logical_map(j)]); -- p += sprintf(p, "\n"); --#endif --#endif -- p += sprintf(p, "ERR: %10lu\n", irq_err_count); -- return p - buf; --} -- - --int show_interrupts(struct seq_file *p, void *v) --{ -- return(0); -+ return 0; - } - - /* -@@ -282,13 +273,12 @@ - * 0 return value means that this irq is already being - * handled by some other CPU. (or is disabled) - */ -- int cpu = smp_processor_id(); - irq_desc_t *desc = irq_desc + irq; - struct irqaction * action; - unsigned int status; - irq_enter(); -- kstat_cpu(cpu).irqs[irq]++; -+ kstat_this_cpu.irqs[irq]++; - spin_lock(&desc->lock); - desc->handler->ack(irq); - /* -@@ -385,7 +375,7 @@ - */ - - int request_irq(unsigned int irq, -- void (*handler)(int, void *, struct pt_regs *), -+ irqreturn_t (*handler)(int, void *, struct pt_regs *), - unsigned long irqflags, - const char * devname, - void *dev_id) -@@ -433,15 +423,19 @@ - EXPORT_SYMBOL(request_irq); +- gettimeofday(&tv, NULL); + sprintf(buf, "%s/%0u-%0u", tty_log_dir, (unsigned int) tv.tv_sec, + (unsigned int) tv.tv_usec); - int um_request_irq(unsigned int irq, int fd, int type, -- void (*handler)(int, void *, struct pt_regs *), -+ irqreturn_t (*handler)(int, void *, struct pt_regs *), - unsigned long irqflags, const char * devname, - void *dev_id) +@@ -62,30 +73,117 @@ + void close_tty_log(int fd, void *tty) { -- int retval; -+ int err; + struct tty_log_buf data; ++ struct timeval tv; -- retval = request_irq(irq, handler, irqflags, devname, dev_id); -- if(retval) return(retval); -- return(activate_fd(irq, fd, type, dev_id)); -+ err = request_irq(irq, handler, irqflags, devname, dev_id); -+ if(err) -+ return(err); -+ -+ if(fd != -1) -+ err = activate_fd(irq, fd, type, dev_id); -+ return(err); + if(tty_log_fd != -1){ +- data = ((struct tty_log_buf) { what : TTY_LOG_CLOSE, +- tty : (unsigned long) tty, +- len : 0 }); +- write(tty_log_fd, &data, sizeof(data)); ++ gettimeofday(&tv, NULL); ++ data = ((struct tty_log_buf) { .what = TTY_LOG_CLOSE, ++ .tty = (unsigned long) tty, ++ .len = 0, ++ .direction = 0, ++ .sec = tv.tv_sec, ++ .usec = tv.tv_usec } ); ++ os_write_file(tty_log_fd, &data, sizeof(data)); + return; + } +- close(fd); ++ os_close_file(fd); } - /* this was setup_x86_irq but it seems pretty generic */ -@@ -474,7 +468,8 @@ - */ - spin_lock_irqsave(&desc->lock,flags); - p = &desc->action; -- if ((old = *p) != NULL) { -+ old = *p; -+ if (old != NULL) { - /* Can't share interrupts unless both agree to */ - if (!(old->flags & new->flags & SA_SHIRQ)) { - spin_unlock_irqrestore(&desc->lock,flags); -@@ -586,12 +581,14 @@ - unsigned long count, void *data) +-int write_tty_log(int fd, char *buf, int len, void *tty) ++static int log_chunk(int fd, const char *buf, int len) { - int irq = (long) data, full_count = count, err; -- cpumask_t new_value, tmp; -+ cpumask_t new_value; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; - - err = cpumask_parse(buffer, count, new_value); -+ if(err) -+ return(err); - - #ifdef CONFIG_SMP - /* -@@ -599,9 +596,11 @@ - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- cpus_and(tmp, new_value, cpu_online_map); -- if (cpus_empty(tmp)) -- return -EINVAL; -+ { cpumask_t tmp; -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) -+ return -EINVAL; ++ int total = 0, try, missed, n; ++ char chunk[64]; ++ ++ while(len > 0){ ++ try = (len > sizeof(chunk)) ? sizeof(chunk) : len; ++ missed = copy_from_user_proc(chunk, (char *) buf, try); ++ try -= missed; ++ n = os_write_file(fd, chunk, try); ++ if(n != try) { ++ if(n < 0) ++ return(n); ++ return(-EIO); ++ } ++ if(missed != 0) ++ return(-EFAULT); ++ ++ len -= try; ++ total += try; ++ buf += try; + } - #endif - - irq_affinity[irq] = new_value; -diff -Naur a/arch/um/kernel/irq_user.c b/arch/um/kernel/irq_user.c ---- a/arch/um/kernel/irq_user.c 2004-03-10 08:21:04.000000000 -0500 -+++ b/arch/um/kernel/irq_user.c 2004-03-10 08:38:21.000000000 -0500 -@@ -6,7 +6,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -49,7 +48,8 @@ - - if(smp_sigio_handler()) return; - while(1){ -- if((n = poll(pollfds, pollfds_num, 0)) < 0){ -+ n = poll(pollfds, pollfds_num, 0); -+ if(n < 0){ - if(errno == EINTR) continue; - printk("sigio_handler : poll returned %d, " - "errno = %d\n", n, errno); -@@ -366,34 +366,31 @@ - - void forward_ipi(int fd, int pid) - { -- if(fcntl(fd, F_SETOWN, pid) < 0){ -- int save_errno = errno; -- if(fcntl(fd, F_GETOWN, 0) != pid){ -- printk("forward_ipi: F_SETOWN failed, fd = %d, " -- "me = %d, target = %d, errno = %d\n", fd, -- os_getpid(), pid, save_errno); -- } -- } -+ int err; + -+ err = os_set_owner(fd, pid); -+ if(err < 0) -+ printk("forward_ipi: set_owner failed, fd = %d, me = %d, " -+ "target = %d, err = %d\n", fd, os_getpid(), pid, -err); - } - - void forward_interrupts(int pid) - { - struct irq_fd *irq; - unsigned long flags; -+ int err; ++ return(total); ++} ++ ++int write_tty_log(int fd, const char *buf, int len, void *tty, int is_read) ++{ ++ struct timeval tv; + struct tty_log_buf data; ++ int direction; - flags = irq_lock(); - for(irq=active_fds;irq != NULL;irq = irq->next){ -- if(fcntl(irq->fd, F_SETOWN, pid) < 0){ -- int save_errno = errno; -- if(fcntl(irq->fd, F_GETOWN, 0) != pid){ -- /* XXX Just remove the irq rather than -- * print out an infinite stream of these -- */ -- printk("Failed to forward %d to pid %d, " -- "errno = %d\n", irq->fd, pid, -- save_errno); -- } -+ err = os_set_owner(irq->fd, pid); -+ if(err < 0){ -+ /* XXX Just remove the irq rather than -+ * print out an infinite stream of these -+ */ -+ printk("Failed to forward %d to pid %d, err = %d\n", -+ irq->fd, pid, -err); - } -+ - irq->pid = pid; + if(fd == tty_log_fd){ +- data = ((struct tty_log_buf) { what : TTY_LOG_WRITE, +- tty : (unsigned long) tty, +- len : len }); +- write(tty_log_fd, &data, sizeof(data)); ++ gettimeofday(&tv, NULL); ++ direction = is_read ? TTY_READ : TTY_WRITE; ++ data = ((struct tty_log_buf) { .what = TTY_LOG_WRITE, ++ .tty = (unsigned long) tty, ++ .len = len, ++ .direction = direction, ++ .sec = tv.tv_sec, ++ .usec = tv.tv_usec } ); ++ os_write_file(tty_log_fd, &data, sizeof(data)); } - irq_unlock(flags); -diff -Naur a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c ---- a/arch/um/kernel/ksyms.c 2004-03-10 08:20:16.000000000 -0500 -+++ b/arch/um/kernel/ksyms.c 2004-03-10 08:34:10.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2001 - 2004 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ +- return(write(fd, buf, len)); ++ ++ return(log_chunk(fd, buf, len)); + } -@@ -8,7 +8,7 @@ - #include "linux/string.h" - #include "linux/smp_lock.h" - #include "linux/spinlock.h" --#include -+#include "linux/highmem.h" - #include "asm/current.h" - #include "asm/delay.h" ++void log_exec(char **argv, void *tty) ++{ ++ struct timeval tv; ++ struct tty_log_buf data; ++ char **ptr,*arg; ++ int len; ++ ++ if(tty_log_fd == -1) return; ++ ++ gettimeofday(&tv, NULL); ++ ++ len = 0; ++ for(ptr = argv; ; ptr++){ ++ if(copy_from_user_proc(&arg, ptr, sizeof(arg))) ++ return; ++ if(arg == NULL) break; ++ len += strlen_user_proc(arg); ++ } ++ ++ data = ((struct tty_log_buf) { .what = TTY_LOG_EXEC, ++ .tty = (unsigned long) tty, ++ .len = len, ++ .direction = 0, ++ .sec = tv.tv_sec, ++ .usec = tv.tv_usec } ); ++ os_write_file(tty_log_fd, &data, sizeof(data)); ++ ++ for(ptr = argv; ; ptr++){ ++ if(copy_from_user_proc(&arg, ptr, sizeof(arg))) ++ return; ++ if(arg == NULL) break; ++ log_chunk(tty_log_fd, arg, strlen_user_proc(arg)); ++ } ++} ++ ++extern void register_tty_logger(int (*opener)(void *, void *), ++ int (*writer)(int, const char *, int, ++ void *, int), ++ void (*closer)(int, void *)); ++ ++static int register_logger(void) ++{ ++ register_tty_logger(open_tty_log, write_tty_log, close_tty_log); ++ return(0); ++} ++ ++__uml_initcall(register_logger); ++ + static int __init set_tty_log_dir(char *name, int *add) + { + tty_log_dir = name; +@@ -104,7 +202,7 @@ + + tty_log_fd = strtoul(name, &end, 0); + if((*end != '\0') || (end == name)){ +- printk("set_tty_log_fd - strtoul failed on '%s'\n", name); ++ printf("set_tty_log_fd - strtoul failed on '%s'\n", name); + tty_log_fd = -1; + } + return 0; +Index: uml-2.6.7/arch/um/kernel/process_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/process_kern.c 2004-07-16 19:36:45.946161584 +0300 ++++ uml-2.6.7/arch/um/kernel/process_kern.c 2004-07-16 19:47:23.723204736 +0300 +@@ -16,6 +16,7 @@ + #include "linux/module.h" + #include "linux/init.h" + #include "linux/capability.h" ++#include "linux/spinlock.h" + #include "asm/unistd.h" + #include "asm/mman.h" + #include "asm/segment.h" +@@ -23,7 +24,6 @@ + #include "asm/pgtable.h" #include "asm/processor.h" -@@ -19,6 +19,7 @@ #include "asm/tlbflush.h" - #include "kern_util.h" +-#include "asm/spinlock.h" + #include "asm/uaccess.h" + #include "asm/user.h" #include "user_util.h" -+#include "mem_user.h" - #include "os.h" - #include "helper.h" - -@@ -34,34 +35,64 @@ - EXPORT_SYMBOL(flush_tlb_range); - EXPORT_SYMBOL(host_task_size); - EXPORT_SYMBOL(arch_validate); -+EXPORT_SYMBOL(get_kmem_end); - --EXPORT_SYMBOL(region_pa); --EXPORT_SYMBOL(region_va); --EXPORT_SYMBOL(phys_mem_map); --EXPORT_SYMBOL(page_mem_map); - EXPORT_SYMBOL(page_to_phys); - EXPORT_SYMBOL(phys_to_page); - EXPORT_SYMBOL(high_physmem); - EXPORT_SYMBOL(empty_zero_page); - EXPORT_SYMBOL(um_virt_to_phys); -+EXPORT_SYMBOL(__virt_to_page); -+EXPORT_SYMBOL(to_phys); -+EXPORT_SYMBOL(to_virt); - EXPORT_SYMBOL(mode_tt); - EXPORT_SYMBOL(handle_page_fault); -+EXPORT_SYMBOL(find_iomem); +@@ -52,17 +52,12 @@ -+#ifdef CONFIG_MODE_TT -+EXPORT_SYMBOL(copy_from_user_tt); -+EXPORT_SYMBOL(copy_to_user_tt); -+#endif -+ -+#ifdef CONFIG_MODE_SKAS -+EXPORT_SYMBOL(copy_to_user_skas); -+EXPORT_SYMBOL(copy_from_user_skas); -+#endif -+ -+EXPORT_SYMBOL(os_stat_fd); -+EXPORT_SYMBOL(os_stat_file); -+EXPORT_SYMBOL(os_access); -+EXPORT_SYMBOL(os_print_error); -+EXPORT_SYMBOL(os_get_exec_close); -+EXPORT_SYMBOL(os_set_exec_close); - EXPORT_SYMBOL(os_getpid); - EXPORT_SYMBOL(os_open_file); - EXPORT_SYMBOL(os_read_file); - EXPORT_SYMBOL(os_write_file); - EXPORT_SYMBOL(os_seek_file); -+EXPORT_SYMBOL(os_lock_file); -+EXPORT_SYMBOL(os_ioctl_generic); - EXPORT_SYMBOL(os_pipe); - EXPORT_SYMBOL(os_file_type); -+EXPORT_SYMBOL(os_file_mode); -+EXPORT_SYMBOL(os_file_size); -+EXPORT_SYMBOL(os_flush_stdout); - EXPORT_SYMBOL(os_close_file); -+EXPORT_SYMBOL(os_set_fd_async); -+EXPORT_SYMBOL(os_set_fd_block); - EXPORT_SYMBOL(helper_wait); - EXPORT_SYMBOL(os_shutdown_socket); -+EXPORT_SYMBOL(os_create_unix_socket); - EXPORT_SYMBOL(os_connect_socket); -+EXPORT_SYMBOL(os_accept_connection); -+EXPORT_SYMBOL(os_rcv_fd); - EXPORT_SYMBOL(run_helper); - EXPORT_SYMBOL(start_thread); - EXPORT_SYMBOL(dump_thread); + struct task_struct *get_task(int pid, int require) + { +- struct task_struct *task, *ret; ++ struct task_struct *ret; -+EXPORT_SYMBOL(do_gettimeofday); -+EXPORT_SYMBOL(do_settimeofday); +- ret = NULL; + read_lock(&tasklist_lock); +- for_each_process(task){ +- if(task->pid == pid){ +- ret = task; +- break; +- } +- } ++ ret = find_task_by_pid(pid); + read_unlock(&tasklist_lock); + - /* This is here because UML expands open to sys_open, not to a system - * call instruction. - */ -@@ -90,3 +121,13 @@ - EXPORT_SYMBOL(kmap_atomic_to_page); - #endif + if(require && (ret == NULL)) panic("get_task couldn't find a task\n"); + return(ret); + } +@@ -95,7 +90,8 @@ + int flags = GFP_KERNEL; -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile ---- a/arch/um/kernel/Makefile 2004-03-10 08:22:00.000000000 -0500 -+++ b/arch/um/kernel/Makefile 2004-03-10 08:41:13.000000000 -0500 -@@ -7,11 +7,11 @@ + if(atomic) flags |= GFP_ATOMIC; +- if((page = __get_free_pages(flags, order)) == 0) ++ page = __get_free_pages(flags, order); ++ if(page == 0) + return(0); + stack_protections(page); + return(page); +@@ -103,13 +99,15 @@ - obj-y = checksum.o config.o exec_kern.o exitcode.o frame_kern.o frame.o \ - helper.o init_task.o irq.o irq_user.o ksyms.o mem.o mem_user.o \ -- process.o process_kern.o ptrace.o reboot.o resource.o sigio_user.o \ -- sigio_kern.o signal_kern.o signal_user.o smp.o syscall_kern.o \ -- syscall_user.o sysrq.o sys_call_table.o tempfile.o time.o \ -- time_kern.o tlb.o trap_kern.o trap_user.o uaccess_user.o um_arch.o \ -- umid.o user_syms.o user_util.o -+ physmem.o process.o process_kern.o ptrace.o reboot.o resource.o \ -+ sigio_user.o sigio_kern.o signal_kern.o signal_user.o smp.o \ -+ syscall_kern.o syscall_user.o sysrq.o sys_call_table.o tempfile.o \ -+ time.o time_kern.o tlb.o trap_kern.o trap_user.o uaccess_user.o \ -+ um_arch.o umid.o user_util.o + int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { +- struct task_struct *p; ++ int pid; - obj-$(CONFIG_BLK_DEV_INITRD) += initrd_kern.o initrd_user.o - obj-$(CONFIG_GPROF) += gprof_syms.o -@@ -24,43 +24,27 @@ - user-objs-$(CONFIG_TTY_LOG) += tty_log.o - - USER_OBJS := $(filter %_user.o,$(obj-y)) $(user-objs-y) config.o helper.o \ -- process.o tempfile.o time.o tty_log.o umid.o user_util.o user_syms.o -+ process.o tempfile.o time.o tty_log.o umid.o user_util.o - USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) - --DMODULES-$(CONFIG_MODULES) = -D__CONFIG_MODULES__ --DMODVERSIONS-$(CONFIG_MODVERSIONS) = -D__CONFIG_MODVERSIONS__ -- -- --CFLAGS_user_syms.o = -D__AUTOCONF_INCLUDED__ $(DMODULES-y) $(DMODVERSIONS-y) \ -- -I/usr/include -I../include -- - CFLAGS_frame.o := $(patsubst -fomit-frame-pointer,,$(USER_CFLAGS)) - --$(USER_OBJS) : %.o: %.c -- $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- - # This has to be separate because it needs be compiled with frame pointers - # regardless of how the rest of the kernel is built. - - $(obj)/frame.o: $(src)/frame.c - $(CC) $(CFLAGS_$(notdir $@)) -c -o $@ $< - --QUOTE = 'my $$config=`cat $(TOPDIR)/.config`; $$config =~ s/"/\\"/g ; while() { $$_ =~ s/CONFIG/$$config/; print $$_ }' -+$(USER_OBJS) : %.o: %.c -+ $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< - --$(obj)/config.c : $(src)/config.c.in $(TOPDIR)/.config -- $(PERL) -e $(QUOTE) < $(src)/config.c.in > $@ -+QUOTE = 'my $$config=`cat $(TOPDIR)/.config`; $$config =~ s/"/\\"/g ; $$config =~ s/\n/\\n"\n"/g ; while() { $$_ =~ s/CONFIG/$$config/; print $$_ }' - - $(obj)/config.o : $(obj)/config.c + current->thread.request.u.thread.proc = fn; + current->thread.request.u.thread.arg = arg; +- p = do_fork(CLONE_VM | flags, 0, NULL, 0, NULL, NULL); +- if(IS_ERR(p)) panic("do_fork failed in kernel_thread"); +- return(p->pid); ++ pid = do_fork(CLONE_VM | CLONE_UNTRACED | flags, 0, NULL, 0, NULL, ++ NULL); ++ if(pid < 0) ++ panic("do_fork failed in kernel_thread, errno = %d", pid); ++ return(pid); + } --clean: -- rm -f config.c -- for dir in $(subdir-y) ; do $(MAKE) -C $$dir clean; done -- --modules: -- --fastdep: -- --dep: -- --archmrproper: clean -+quiet_cmd_quote = QUOTE $@ -+cmd_quote = $(PERL) -e $(QUOTE) < $< > $@ + void switch_mm(struct mm_struct *prev, struct mm_struct *next, +@@ -129,7 +127,7 @@ + { external_pid(task), task }); + } -+targets += config.c -+$(obj)/config.c : $(src)/config.c.in $(TOPDIR)/.config FORCE -+ $(call if_changed,quote) -diff -Naur a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c ---- a/arch/um/kernel/mem.c 2004-03-10 08:21:01.000000000 -0500 -+++ b/arch/um/kernel/mem.c 2004-03-10 08:37:45.000000000 -0500 -@@ -1,74 +1,66 @@ - /* -- * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ +-void *switch_to(void *prev, void *next, void *last) ++void *_switch_to(void *prev, void *next, void *last) + { + return(CHOOSE_MODE(switch_to_tt(prev, next), + switch_to_skas(prev, next))); +@@ -149,7 +147,7 @@ + void exit_thread(void) + { + CHOOSE_MODE(exit_thread_tt(), exit_thread_skas()); +- unprotect_stack((unsigned long) current->thread_info); ++ unprotect_stack((unsigned long) current_thread); + } + + void *get_current(void) +@@ -157,6 +155,10 @@ + return(current); + } --#include "linux/config.h" --#include "linux/module.h" --#include "linux/types.h" -+#include "linux/stddef.h" -+#include "linux/kernel.h" - #include "linux/mm.h" --#include "linux/fs.h" --#include "linux/init.h" - #include "linux/bootmem.h" - #include "linux/swap.h" --#include "linux/slab.h" --#include "linux/vmalloc.h" - #include "linux/highmem.h" -+#include "linux/gfp.h" - #include "asm/page.h" --#include "asm/pgtable.h" -+#include "asm/fixmap.h" - #include "asm/pgalloc.h" --#include "asm/bitops.h" --#include "asm/uaccess.h" --#include "asm/tlb.h" - #include "user_util.h" - #include "kern_util.h" --#include "mem_user.h" --#include "mem.h" - #include "kern.h" --#include "init.h" --#include "os.h" --#include "mode_kern.h" -+#include "mem_user.h" - #include "uml_uaccess.h" -+#include "os.h" ++void prepare_to_copy(struct task_struct *tsk) ++{ ++} + -+extern char __binary_start; + int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, + unsigned long stack_top, struct task_struct * p, + struct pt_regs *regs) +@@ -190,7 +192,7 @@ - /* Changed during early boot */ --pgd_t swapper_pg_dir[1024]; --unsigned long high_physmem; --unsigned long vm_start; --unsigned long vm_end; --unsigned long highmem; - unsigned long *empty_zero_page = NULL; - unsigned long *empty_bad_page = NULL; -- --/* Not modified */ --const char bad_pmd_string[] = "Bad pmd in pte_alloc: %08lx\n"; -- --extern char __init_begin, __init_end; --extern long physmem_size; -- --/* Not changed by UML */ --DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); -- --/* Changed during early boot */ -+pgd_t swapper_pg_dir[1024]; -+unsigned long highmem; - int kmalloc_ok = 0; + void default_idle(void) + { +- idle_timer(); ++ uml_idle_timer(); --#define NREGIONS (phys_region_index(0xffffffff) - phys_region_index(0x0) + 1) --struct mem_region *regions[NREGIONS] = { [ 0 ... NREGIONS - 1 ] = NULL }; --#define REGION_SIZE ((0xffffffff & ~REGION_MASK) + 1) -- --/* Changed during early boot */ - static unsigned long brk_end; + atomic_inc(&init_mm.mm_count); + current->mm = &init_mm; +@@ -367,10 +369,15 @@ + return(clear_user(buf, size)); + } -+void unmap_physmem(void) ++int strlen_user_proc(char *str) +{ -+ os_unmap_memory((void *) brk_end, uml_reserved - brk_end); ++ return(strlen_user(str)); +} + - static void map_cb(void *unused) + int smp_sigio_handler(void) { - map_memory(brk_end, __pa(brk_end), uml_reserved - brk_end, 1, 1, 0); - } + #ifdef CONFIG_SMP +- int cpu = current->thread_info->cpu; ++ int cpu = current_thread->cpu; + IPI_handler(cpu); + if(cpu != 0) + return(1); +@@ -385,7 +392,7 @@ --void unmap_physmem(void) -+#ifdef CONFIG_HIGHMEM -+static void setup_highmem(unsigned long highmem_start, -+ unsigned long highmem_len) + int cpu(void) { -- os_unmap_memory((void *) brk_end, uml_reserved - brk_end); --} -+ struct page *page; -+ unsigned long highmem_pfn; -+ int i; +- return(current->thread_info->cpu); ++ return(current_thread->cpu); + } --extern char __binary_start; -+ highmem_start_page = virt_to_page(highmem_start); + /* +Index: uml-2.6.7/arch/um/config.release +=================================================================== +--- uml-2.6.7.orig/arch/um/config.release 2004-07-16 19:37:40.174917560 +0300 ++++ uml-2.6.7/arch/um/config.release 2004-07-16 19:47:23.675212032 +0300 +@@ -228,7 +228,6 @@ + CONFIG_EXT2_FS=y + CONFIG_SYSV_FS=m + CONFIG_UDF_FS=m +-# CONFIG_UDF_RW is not set + CONFIG_UFS_FS=m + # CONFIG_UFS_FS_WRITE is not set + +Index: uml-2.6.7/fs/hostfs/hostfs_kern.c +=================================================================== +--- uml-2.6.7.orig/fs/hostfs/hostfs_kern.c 2004-07-16 19:47:23.631218720 +0300 ++++ uml-2.6.7/fs/hostfs/hostfs_kern.c 2004-07-16 19:47:24.263122656 +0300 +@@ -0,0 +1,1024 @@ ++/* ++ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Licensed under the GPL ++ * ++ * Ported the filesystem routines to 2.5. ++ * 2003-02-10 Petr Baudis ++ */ + -+ highmem_pfn = __pa(highmem_start) >> PAGE_SHIFT; -+ for(i = 0; i < highmem_len >> PAGE_SHIFT; i++){ -+ page = &mem_map[highmem_pfn + i]; -+ ClearPageReserved(page); -+ set_bit(PG_highmem, &page->flags); -+ atomic_set(&page->count, 1); -+ __free_page(page); -+ } ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "hostfs.h" ++#include "kern_util.h" ++#include "kern.h" ++#include "user_util.h" ++#include "2_5compat.h" ++#include "init.h" ++ ++struct hostfs_inode_info { ++ char *host_filename; ++ int fd; ++ int mode; ++ struct inode vfs_inode; ++}; ++ ++static inline struct hostfs_inode_info *HOSTFS_I(struct inode *inode) ++{ ++ return(list_entry(inode, struct hostfs_inode_info, vfs_inode)); +} -+#endif - - void mem_init(void) - { -@@ -103,50 +95,15 @@ - totalhigh_pages = highmem >> PAGE_SHIFT; - totalram_pages += totalhigh_pages; - num_physpages = totalram_pages; -- max_mapnr = totalram_pages; - max_pfn = totalram_pages; - printk(KERN_INFO "Memory: %luk available\n", - (unsigned long) nr_free_pages() << (PAGE_SHIFT-10)); - kmalloc_ok = 1; --} -- --/* Changed during early boot */ --static unsigned long kmem_top = 0; -- --unsigned long get_kmem_end(void) --{ -- if(kmem_top == 0) -- kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); -- return(kmem_top); --} -- --void set_kmem_end(unsigned long new) --{ -- kmem_top = new; --} - - #ifdef CONFIG_HIGHMEM --/* Changed during early boot */ --pte_t *kmap_pte; --pgprot_t kmap_prot; -- --EXPORT_SYMBOL(kmap_prot); --EXPORT_SYMBOL(kmap_pte); -- --#define kmap_get_fixmap_pte(vaddr) \ -- pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) -- --void __init kmap_init(void) --{ -- unsigned long kmap_vstart; -- -- /* cache the first kmap pte */ -- kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN); -- kmap_pte = kmap_get_fixmap_pte(kmap_vstart); -- -- kmap_prot = PAGE_KERNEL; -+ setup_highmem(end_iomem, highmem); -+#endif - } --#endif /* CONFIG_HIGHMEM */ - - static void __init fixrange_init(unsigned long start, unsigned long end, - pgd_t *pgd_base) -@@ -178,76 +135,24 @@ - } - } - --int init_maps(struct mem_region *region) --{ -- struct page *p, *map; -- int i, n, len; -- -- if(region == &physmem_region){ -- region->mem_map = mem_map; -- return(0); -- } -- else if(region->mem_map != NULL) return(0); -- -- n = region->len >> PAGE_SHIFT; -- len = n * sizeof(struct page); -- if(kmalloc_ok){ -- map = kmalloc(len, GFP_KERNEL); -- if(map == NULL) map = vmalloc(len); -- } -- else map = alloc_bootmem_low_pages(len); -- -- if(map == NULL) -- return(-ENOMEM); -- for(i = 0; i < n; i++){ -- p = &map[i]; -- set_page_count(p, 0); -- SetPageReserved(p); -- INIT_LIST_HEAD(&p->list); -- } -- region->mem_map = map; -- return(0); --} -+#if CONFIG_HIGHMEM -+pte_t *kmap_pte; -+pgprot_t kmap_prot; - --DECLARE_MUTEX(regions_sem); -+#define kmap_get_fixmap_pte(vaddr) \ -+ pte_offset(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) - --static int setup_one_range(int fd, char *driver, unsigned long start, -- unsigned long pfn, int len, -- struct mem_region *region) -+void __init kmap_init(void) - { -- int i; -- -- down(®ions_sem); -- for(i = 0; i < NREGIONS; i++){ -- if(regions[i] == NULL) break; -- } -- if(i == NREGIONS){ -- printk("setup_range : no free regions\n"); -- i = -1; -- goto out; -- } -- -- if(fd == -1) -- fd = create_mem_file(len); -+ unsigned long kmap_vstart; - -- if(region == NULL){ -- region = alloc_bootmem_low_pages(sizeof(*region)); -- if(region == NULL) -- panic("Failed to allocating mem_region"); -- } -+ /* cache the first kmap pte */ -+ kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN); -+ kmap_pte = kmap_get_fixmap_pte(kmap_vstart); - -- *region = ((struct mem_region) { .driver = driver, -- .start_pfn = pfn, -- .start = start, -- .len = len, -- .fd = fd } ); -- regions[i] = region; -- out: -- up(®ions_sem); -- return(i); -+ kmap_prot = PAGE_KERNEL; - } - --#ifdef CONFIG_HIGHMEM - static void init_highmem(void) - { - pgd_t *pgd; -@@ -268,63 +173,20 @@ - - kmap_init(); - } -- --void setup_highmem(unsigned long len) --{ -- struct mem_region *region; -- struct page *page, *map; -- unsigned long phys; -- int i, cur, index; -- -- phys = physmem_size; -- do { -- cur = min(len, (unsigned long) REGION_SIZE); -- i = setup_one_range(-1, NULL, -1, phys >> PAGE_SHIFT, cur, -- NULL); -- if(i == -1){ -- printk("setup_highmem - setup_one_range failed\n"); -- return; -- } -- region = regions[i]; -- index = phys / PAGE_SIZE; -- region->mem_map = &mem_map[index]; -- -- map = region->mem_map; -- for(i = 0; i < (cur >> PAGE_SHIFT); i++){ -- page = &map[i]; -- ClearPageReserved(page); -- set_bit(PG_highmem, &page->flags); -- atomic_set(&page->count, 1); -- __free_page(page); -- } -- phys += cur; -- len -= cur; -- } while(len > 0); --} --#endif -+#endif /* CONFIG_HIGHMEM */ - - void paging_init(void) - { -- struct mem_region *region; -- unsigned long zones_size[MAX_NR_ZONES], start, end, vaddr; -- int i, index; -+ unsigned long zones_size[MAX_NR_ZONES], vaddr; -+ int i; - - empty_zero_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE); - empty_bad_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE); - for(i=0;i> PAGE_SHIFT) - -- (uml_physmem >> PAGE_SHIFT); -+ zones_size[0] = (end_iomem >> PAGE_SHIFT) - (uml_physmem >> PAGE_SHIFT); - zones_size[2] = highmem >> PAGE_SHIFT; - free_area_init(zones_size); -- start = phys_region_index(__pa(uml_physmem)); -- end = phys_region_index(__pa(high_physmem - 1)); -- for(i = start; i <= end; i++){ -- region = regions[i]; -- index = (region->start - uml_physmem) / PAGE_SIZE; -- region->mem_map = &mem_map[index]; -- if(i > start) free_bootmem(__pa(region->start), region->len); -- } - - /* - * Fixed mappings, only the page table structure has to be -@@ -335,15 +197,33 @@ - - #ifdef CONFIG_HIGHMEM - init_highmem(); -- setup_highmem(highmem); - #endif - } - --pte_t __bad_page(void) -+struct page *arch_validate(struct page *page, int mask, int order) - { -- clear_page(empty_bad_page); -- return pte_mkdirty(mk_pte((struct page *) empty_bad_page, -- PAGE_SHARED)); -+ unsigned long addr, zero = 0; -+ int i; + -+ again: -+ if(page == NULL) return(page); -+ if(PageHighMem(page)) return(page); ++#define FILE_HOSTFS_I(file) HOSTFS_I((file)->f_dentry->d_inode) + -+ addr = (unsigned long) page_address(page); -+ for(i = 0; i < (1 << order); i++){ -+ current->thread.fault_addr = (void *) addr; -+ if(__do_copy_to_user((void *) addr, &zero, -+ sizeof(zero), -+ ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)){ -+ if(!(mask & __GFP_WAIT)) return(NULL); -+ else break; -+ } -+ addr += PAGE_SIZE; -+ } -+ if(i == (1 << order)) return(page); -+ page = alloc_pages(mask, order); -+ goto again; - } - - /* This can't do anything because nothing in the kernel image can be freed -@@ -401,395 +281,6 @@ - printk("%d pages swap cached\n", cached); - } - --static int __init uml_mem_setup(char *line, int *add) --{ -- char *retptr; -- physmem_size = memparse(line,&retptr); -- return 0; --} --__uml_setup("mem=", uml_mem_setup, --"mem=\n" --" This controls how much \"physical\" memory the kernel allocates\n" --" for the system. The size is specified as a number followed by\n" --" one of 'k', 'K', 'm', 'M', which have the obvious meanings.\n" --" This is not related to the amount of memory in the physical\n" --" machine. It can be more, and the excess, if it's ever used, will\n" --" just be swapped out.\n Example: mem=64M\n\n" --); -- --struct page *arch_validate(struct page *page, int mask, int order) --{ -- unsigned long addr, zero = 0; -- int i; -- -- again: -- if(page == NULL) return(page); -- if(PageHighMem(page)) return(page); -- -- addr = (unsigned long) page_address(page); -- for(i = 0; i < (1 << order); i++){ -- current->thread.fault_addr = (void *) addr; -- if(__do_copy_to_user((void *) addr, &zero, -- sizeof(zero), -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher)){ -- if(!(mask & __GFP_WAIT)) return(NULL); -- else break; -- } -- addr += PAGE_SIZE; -- } -- if(i == (1 << order)) return(page); -- page = alloc_pages(mask, order); -- goto again; --} -- --DECLARE_MUTEX(vm_reserved_sem); --static struct list_head vm_reserved = LIST_HEAD_INIT(vm_reserved); -- --/* Static structures, linked in to the list in early boot */ --static struct vm_reserved head = { -- .list = LIST_HEAD_INIT(head.list), -- .start = 0, -- .end = 0xffffffff --}; -- --static struct vm_reserved tail = { -- .list = LIST_HEAD_INIT(tail.list), -- .start = 0, -- .end = 0xffffffff --}; -- --void set_usable_vm(unsigned long start, unsigned long end) --{ -- list_add(&head.list, &vm_reserved); -- list_add(&tail.list, &head.list); -- head.end = start; -- tail.start = end; --} -- --int reserve_vm(unsigned long start, unsigned long end, void *e) -- --{ -- struct vm_reserved *entry = e, *reserved, *prev; -- struct list_head *ele; -- int err; -- -- down(&vm_reserved_sem); -- list_for_each(ele, &vm_reserved){ -- reserved = list_entry(ele, struct vm_reserved, list); -- if(reserved->start >= end) goto found; -- } -- panic("Reserved vm out of range"); -- found: -- prev = list_entry(ele->prev, struct vm_reserved, list); -- if(prev->end > start) -- panic("Can't reserve vm"); -- if(entry == NULL) -- entry = kmalloc(sizeof(*entry), GFP_KERNEL); -- if(entry == NULL){ -- printk("reserve_vm : Failed to allocate entry\n"); -- err = -ENOMEM; -- goto out; -- } -- *entry = ((struct vm_reserved) -- { .list = LIST_HEAD_INIT(entry->list), -- .start = start, -- .end = end }); -- list_add(&entry->list, &prev->list); -- err = 0; -- out: -- up(&vm_reserved_sem); -- return(0); --} -- --unsigned long get_vm(unsigned long len) --{ -- struct vm_reserved *this, *next; -- struct list_head *ele; -- unsigned long start; -- int err; -- -- down(&vm_reserved_sem); -- list_for_each(ele, &vm_reserved){ -- this = list_entry(ele, struct vm_reserved, list); -- next = list_entry(ele->next, struct vm_reserved, list); -- if((this->start < next->start) && -- (this->end + len + PAGE_SIZE <= next->start)) -- goto found; -- } -- up(&vm_reserved_sem); -- return(0); -- found: -- up(&vm_reserved_sem); -- start = (unsigned long) UML_ROUND_UP(this->end) + PAGE_SIZE; -- err = reserve_vm(start, start + len, NULL); -- if(err) return(0); -- return(start); --} -- --int nregions(void) --{ -- return(NREGIONS); --} -- --void setup_range(int fd, char *driver, unsigned long start, unsigned long pfn, -- unsigned long len, int need_vm, struct mem_region *region, -- void *reserved) --{ -- int i, cur; -- -- do { -- cur = min(len, (unsigned long) REGION_SIZE); -- i = setup_one_range(fd, driver, start, pfn, cur, region); -- region = regions[i]; -- if(need_vm && setup_region(region, reserved)){ -- kfree(region); -- regions[i] = NULL; -- return; -- } -- start += cur; -- if(pfn != -1) pfn += cur; -- len -= cur; -- } while(len > 0); --} -- --struct iomem { -- char *name; -- int fd; -- unsigned long size; --}; -- --/* iomem regions can only be added on the command line at the moment. -- * Locking will be needed when they can be added via mconsole. -- */ -- --struct iomem iomem_regions[NREGIONS] = { [ 0 ... NREGIONS - 1 ] = -- { .name = NULL, -- .fd = -1, -- .size = 0 } }; -- --int num_iomem_regions = 0; -- --void add_iomem(char *name, int fd, unsigned long size) --{ -- if(num_iomem_regions == sizeof(iomem_regions)/sizeof(iomem_regions[0])) -- return; -- size = (size + PAGE_SIZE - 1) & PAGE_MASK; -- iomem_regions[num_iomem_regions++] = -- ((struct iomem) { .name = name, -- .fd = fd, -- .size = size } ); --} -- --int setup_iomem(void) --{ -- struct iomem *iomem; -- int i; -- -- for(i = 0; i < num_iomem_regions; i++){ -- iomem = &iomem_regions[i]; -- setup_range(iomem->fd, iomem->name, -1, -1, iomem->size, 1, -- NULL, NULL); -- } -- return(0); --} -- --__initcall(setup_iomem); -- --#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) --#define PFN_DOWN(x) ((x) >> PAGE_SHIFT) -- --/* Changed during early boot */ --static struct mem_region physmem_region; --static struct vm_reserved physmem_reserved; -- --void setup_physmem(unsigned long start, unsigned long reserve_end, -- unsigned long len) --{ -- struct mem_region *region = &physmem_region; -- struct vm_reserved *reserved = &physmem_reserved; -- unsigned long cur, pfn = 0; -- int do_free = 1, bootmap_size; -- -- do { -- cur = min(len, (unsigned long) REGION_SIZE); -- if(region == NULL) -- region = alloc_bootmem_low_pages(sizeof(*region)); -- if(reserved == NULL) -- reserved = alloc_bootmem_low_pages(sizeof(*reserved)); -- if((region == NULL) || (reserved == NULL)) -- panic("Couldn't allocate physmem region or vm " -- "reservation\n"); -- setup_range(-1, NULL, start, pfn, cur, 1, region, reserved); -- -- if(do_free){ -- unsigned long reserve = reserve_end - start; -- int pfn = PFN_UP(__pa(reserve_end)); -- int delta = (len - reserve) >> PAGE_SHIFT; -- -- bootmap_size = init_bootmem(pfn, pfn + delta); -- free_bootmem(__pa(reserve_end) + bootmap_size, -- cur - bootmap_size - reserve); -- do_free = 0; -- } -- start += cur; -- pfn += cur >> PAGE_SHIFT; -- len -= cur; -- region = NULL; -- reserved = NULL; -- } while(len > 0); --} -- --struct mem_region *phys_region(unsigned long phys) --{ -- unsigned int n = phys_region_index(phys); -- -- if(regions[n] == NULL) -- panic("Physical address in uninitialized region"); -- return(regions[n]); --} -- --unsigned long phys_offset(unsigned long phys) --{ -- return(phys_addr(phys)); --} -- --struct page *phys_mem_map(unsigned long phys) --{ -- return((struct page *) phys_region(phys)->mem_map); --} -- --struct page *pte_mem_map(pte_t pte) --{ -- return(phys_mem_map(pte_val(pte))); --} -- --struct mem_region *page_region(struct page *page, int *index_out) --{ -- int i; -- struct mem_region *region; -- struct page *map; -- -- for(i = 0; i < NREGIONS; i++){ -- region = regions[i]; -- if(region == NULL) continue; -- map = region->mem_map; -- if((page >= map) && (page < &map[region->len >> PAGE_SHIFT])){ -- if(index_out != NULL) *index_out = i; -- return(region); -- } -- } -- panic("No region found for page"); -- return(NULL); --} -- --unsigned long page_to_pfn(struct page *page) --{ -- struct mem_region *region = page_region(page, NULL); -- -- return(region->start_pfn + (page - (struct page *) region->mem_map)); --} -- --struct mem_region *pfn_to_region(unsigned long pfn, int *index_out) --{ -- struct mem_region *region; -- int i; -- -- for(i = 0; i < NREGIONS; i++){ -- region = regions[i]; -- if(region == NULL) -- continue; -- -- if((region->start_pfn <= pfn) && -- (region->start_pfn + (region->len >> PAGE_SHIFT) > pfn)){ -- if(index_out != NULL) -- *index_out = i; -- return(region); -- } -- } -- return(NULL); --} -- --struct page *pfn_to_page(unsigned long pfn) --{ -- struct mem_region *region = pfn_to_region(pfn, NULL); -- struct page *mem_map = (struct page *) region->mem_map; -- -- return(&mem_map[pfn - region->start_pfn]); --} -- --unsigned long phys_to_pfn(unsigned long p) --{ -- struct mem_region *region = regions[phys_region_index(p)]; -- -- return(region->start_pfn + (phys_addr(p) >> PAGE_SHIFT)); --} -- --unsigned long pfn_to_phys(unsigned long pfn) --{ -- int n; -- struct mem_region *region = pfn_to_region(pfn, &n); -- -- return(mk_phys((pfn - region->start_pfn) << PAGE_SHIFT, n)); --} -- --struct page *page_mem_map(struct page *page) --{ -- return((struct page *) page_region(page, NULL)->mem_map); --} -- --extern unsigned long region_pa(void *virt) --{ -- struct mem_region *region; -- unsigned long addr = (unsigned long) virt; -- int i; -- -- for(i = 0; i < NREGIONS; i++){ -- region = regions[i]; -- if(region == NULL) continue; -- if((region->start <= addr) && -- (addr <= region->start + region->len)) -- return(mk_phys(addr - region->start, i)); -- } -- panic("region_pa : no region for virtual address"); -- return(0); --} -- --extern void *region_va(unsigned long phys) --{ -- return((void *) (phys_region(phys)->start + phys_addr(phys))); --} -- --unsigned long page_to_phys(struct page *page) --{ -- int n; -- struct mem_region *region = page_region(page, &n); -- struct page *map = region->mem_map; -- return(mk_phys((page - map) << PAGE_SHIFT, n)); --} -- --struct page *phys_to_page(unsigned long phys) --{ -- struct page *mem_map; -- -- mem_map = phys_mem_map(phys); -- return(mem_map + (phys_offset(phys) >> PAGE_SHIFT)); --} -- --static int setup_mem_maps(void) --{ -- struct mem_region *region; -- int i; -- -- for(i = 0; i < NREGIONS; i++){ -- region = regions[i]; -- if((region != NULL) && (region->fd > 0)) init_maps(region); -- } -- return(0); --} -- --__initcall(setup_mem_maps); -- - /* - * Allocate and free page tables. - */ -diff -Naur a/arch/um/kernel/mem_user.c b/arch/um/kernel/mem_user.c ---- a/arch/um/kernel/mem_user.c 2004-03-10 08:21:29.000000000 -0500 -+++ b/arch/um/kernel/mem_user.c 2004-03-10 08:39:44.000000000 -0500 -@@ -34,10 +34,9 @@ - #include - #include - #include --#include - #include - #include --#include -+#include - #include - #include - #include "kern_util.h" -@@ -47,105 +46,145 @@ - #include "init.h" - #include "os.h" - #include "tempfile.h" -+#include "kern_constants.h" - - extern struct mem_region physmem_region; - - #define TEMPNAME_TEMPLATE "vm_file-XXXXXX" - --int create_mem_file(unsigned long len) -+static int create_tmp_file(unsigned long len) - { -- int fd; -+ int fd, err; - char zero; - - fd = make_tempfile(TEMPNAME_TEMPLATE, NULL, 1); -- if (fchmod(fd, 0777) < 0){ -- perror("fchmod"); -+ if(fd < 0) { -+ os_print_error(fd, "make_tempfile"); -+ exit(1); -+ } -+ -+ err = os_mode_fd(fd, 0777); -+ if(err < 0){ -+ os_print_error(err, "os_mode_fd"); - exit(1); - } -- if(os_seek_file(fd, len) < 0){ -- perror("lseek"); -+ err = os_seek_file(fd, len); -+ if(err < 0){ -+ os_print_error(err, "os_seek_file"); - exit(1); - } - zero = 0; -- if(write(fd, &zero, 1) != 1){ -- perror("write"); -+ err = os_write_file(fd, &zero, 1); -+ if(err != 1){ -+ os_print_error(err, "os_write_file"); - exit(1); - } -- if(fcntl(fd, F_SETFD, 1) != 0) -- perror("Setting FD_CLOEXEC failed"); -+ - return(fd); - } - --int setup_region(struct mem_region *region, void *entry) -+static int have_devanon = 0; -+ -+void check_devanon(void) -+{ -+ int fd; -+ -+ printk("Checking for /dev/anon on the host..."); -+ fd = open("/dev/anon", O_RDWR); -+ if(fd < 0){ -+ printk("Not available (open failed with errno %d)\n", errno); -+ return; -+ } -+ -+ printk("OK\n"); -+ have_devanon = 1; -+} -+ -+static int create_anon_file(unsigned long len) - { -- void *loc, *start; -- char *driver; -- int err, offset; -- -- if(region->start != -1){ -- err = reserve_vm(region->start, -- region->start + region->len, entry); -- if(err){ -- printk("setup_region : failed to reserve " -- "0x%x - 0x%x for driver '%s'\n", -- region->start, -- region->start + region->len, -- region->driver); -- return(-1); -- } -- } -- else region->start = get_vm(region->len); -- if(region->start == 0){ -- if(region->driver == NULL) driver = "physmem"; -- else driver = region->driver; -- printk("setup_region : failed to find vm for " -- "driver '%s' (length %d)\n", driver, region->len); -- return(-1); -- } -- if(region->start == uml_physmem){ -- start = (void *) uml_reserved; -- offset = uml_reserved - uml_physmem; -- } -- else { -- start = (void *) region->start; -- offset = 0; -- } -- -- loc = mmap(start, region->len - offset, PROT_READ | PROT_WRITE, -- MAP_SHARED | MAP_FIXED, region->fd, offset); -- if(loc != start){ -- perror("Mapping memory"); -+ void *addr; -+ int fd; -+ -+ fd = open("/dev/anon", O_RDWR); -+ if(fd < 0) { -+ os_print_error(fd, "opening /dev/anon"); - exit(1); - } -- return(0); -+ -+ addr = mmap(NULL, len, PROT_READ | PROT_WRITE , MAP_PRIVATE, fd, 0); -+ if(addr == MAP_FAILED){ -+ os_print_error((int) addr, "mapping physmem file"); -+ exit(1); -+ } -+ munmap(addr, len); -+ -+ return(fd); -+} -+ -+int create_mem_file(unsigned long len) -+{ -+ int err, fd; -+ -+ if(have_devanon) -+ fd = create_anon_file(len); -+ else fd = create_tmp_file(len); -+ -+ err = os_set_exec_close(fd, 1); -+ if(err < 0) -+ os_print_error(err, "exec_close"); -+ return(fd); - } - -+struct iomem_region *iomem_regions = NULL; -+int iomem_size = 0; -+ - static int __init parse_iomem(char *str, int *add) - { -- struct stat buf; -+ struct iomem_region *new; -+ struct uml_stat buf; - char *file, *driver; -- int fd; -+ int fd, err; - - driver = str; - file = strchr(str,','); - if(file == NULL){ -- printk("parse_iomem : failed to parse iomem\n"); -- return(1); -+ printf("parse_iomem : failed to parse iomem\n"); -+ goto out; - } - *file = '\0'; - file++; - fd = os_open_file(file, of_rdwr(OPENFLAGS()), 0); - if(fd < 0){ -- printk("parse_iomem - Couldn't open io file, errno = %d\n", -- errno); -- return(1); -- } -- if(fstat(fd, &buf) < 0) { -- printk("parse_iomem - cannot fstat file, errno = %d\n", errno); -- return(1); -+ os_print_error(fd, "parse_iomem - Couldn't open io file"); -+ goto out; - } -- add_iomem(driver, fd, buf.st_size); -+ -+ err = os_stat_fd(fd, &buf); -+ if(err < 0){ -+ os_print_error(err, "parse_iomem - cannot stat_fd file"); -+ goto out_close; -+ } -+ -+ new = malloc(sizeof(*new)); -+ if(new == NULL){ -+ perror("Couldn't allocate iomem_region struct"); -+ goto out_close; -+ } -+ -+ *new = ((struct iomem_region) { .next = iomem_regions, -+ .driver = driver, -+ .fd = fd, -+ .size = buf.ust_size, -+ .phys = 0, -+ .virt = 0 }); -+ iomem_regions = new; -+ iomem_size += new->size + UM_KERN_PAGE_SIZE; -+ - return(0); -+ out_close: -+ os_close_file(fd); -+ out: -+ return(1); - } - - __uml_setup("iomem=", parse_iomem, -@@ -153,73 +192,20 @@ - " Configure as an IO memory region named .\n\n" - ); - --#ifdef notdef --int logging = 0; --int logging_fd = -1; -- --int logging_line = 0; --char logging_buf[256]; -- --void log(char *fmt, ...) --{ -- va_list ap; -- struct timeval tv; -- struct openflags flags; -- -- if(logging == 0) return; -- if(logging_fd < 0){ -- flags = of_create(of_trunc(of_rdrw(OPENFLAGS()))); -- logging_fd = os_open_file("log", flags, 0644); -- } -- gettimeofday(&tv, NULL); -- sprintf(logging_buf, "%d\t %u.%u ", logging_line++, tv.tv_sec, -- tv.tv_usec); -- va_start(ap, fmt); -- vsprintf(&logging_buf[strlen(logging_buf)], fmt, ap); -- va_end(ap); -- write(logging_fd, logging_buf, strlen(logging_buf)); --} --#endif -- --int map_memory(unsigned long virt, unsigned long phys, unsigned long len, -- int r, int w, int x) --{ -- struct mem_region *region = phys_region(phys); -- -- return(os_map_memory((void *) virt, region->fd, phys_offset(phys), len, -- r, w, x)); --} -- - int protect_memory(unsigned long addr, unsigned long len, int r, int w, int x, - int must_succeed) - { -- if(os_protect_memory((void *) addr, len, r, w, x) < 0){ -+ int err; -+ -+ err = os_protect_memory((void *) addr, len, r, w, x); -+ if(err < 0){ - if(must_succeed) -- panic("protect failed, errno = %d", errno); -- else return(-errno); -+ panic("protect failed, err = %d", -err); -+ else return(err); - } - return(0); - } - --unsigned long find_iomem(char *driver, unsigned long *len_out) --{ -- struct mem_region *region; -- int i, n; -- -- n = nregions(); -- for(i = 0; i < n; i++){ -- region = regions[i]; -- if(region == NULL) continue; -- if((region->driver != NULL) && -- !strcmp(region->driver, driver)){ -- *len_out = region->len; -- return(region->start); -- } -- } -- *len_out = 0; -- return 0; --} -- - /* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c ---- a/arch/um/kernel/physmem.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/kernel/physmem.c 2004-03-10 08:35:16.000000000 -0500 -@@ -0,0 +1,468 @@ -+/* -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) -+ * Licensed under the GPL -+ */ -+ -+#include "linux/mm.h" -+#include "linux/ghash.h" -+#include "linux/slab.h" -+#include "linux/vmalloc.h" -+#include "linux/bootmem.h" -+#include "asm/types.h" -+#include "asm/pgtable.h" -+#include "kern_util.h" -+#include "user_util.h" -+#include "mode_kern.h" -+#include "mem.h" -+#include "mem_user.h" -+#include "os.h" -+#include "kern.h" -+#include "init.h" -+ -+#if 0 -+static pgd_t physmem_pgd[PTRS_PER_PGD]; -+ -+static struct phys_desc *lookup_mapping(void *addr) -+{ -+ pgd = &physmem_pgd[pgd_index(addr)]; -+ if(pgd_none(pgd)) -+ return(NULL); -+ -+ pmd = pmd_offset(pgd, addr); -+ if(pmd_none(pmd)) -+ return(NULL); -+ -+ pte = pte_offset_kernel(pmd, addr); -+ return((struct phys_desc *) pte_val(pte)); -+} -+ -+static struct add_mapping(void *addr, struct phys_desc *new) -+{ -+} -+#endif -+ -+#define PHYS_HASHSIZE (8192) -+ -+struct phys_desc; -+ -+DEF_HASH_STRUCTS(virtmem, PHYS_HASHSIZE, struct phys_desc); -+ -+struct phys_desc { -+ struct virtmem_ptrs virt_ptrs; -+ int fd; -+ __u64 offset; -+ void *virt; -+ unsigned long phys; -+ struct list_head list; -+}; -+ -+struct virtmem_table virtmem_hash; -+ -+static int virt_cmp(void *virt1, void *virt2) -+{ -+ return(virt1 != virt2); -+} -+ -+static int virt_hash(void *virt) -+{ -+ unsigned long addr = ((unsigned long) virt) >> PAGE_SHIFT; -+ return(addr % PHYS_HASHSIZE); -+} -+ -+DEF_HASH(static, virtmem, struct phys_desc, virt_ptrs, void *, virt, virt_cmp, -+ virt_hash); -+ -+LIST_HEAD(descriptor_mappings); -+ -+struct desc_mapping { -+ int fd; -+ struct list_head list; -+ struct list_head pages; -+}; -+ -+static struct desc_mapping *find_mapping(int fd) -+{ -+ struct desc_mapping *desc; -+ struct list_head *ele; -+ -+ list_for_each(ele, &descriptor_mappings){ -+ desc = list_entry(ele, struct desc_mapping, list); -+ if(desc->fd == fd) -+ return(desc); -+ } -+ -+ return(NULL); -+} -+ -+static struct desc_mapping *descriptor_mapping(int fd) -+{ -+ struct desc_mapping *desc; -+ -+ desc = find_mapping(fd); -+ if(desc != NULL) -+ return(desc); -+ -+ desc = kmalloc(sizeof(*desc), GFP_ATOMIC); -+ if(desc == NULL) -+ return(NULL); -+ -+ *desc = ((struct desc_mapping) -+ { .fd = fd, -+ .list = LIST_HEAD_INIT(desc->list), -+ .pages = LIST_HEAD_INIT(desc->pages) }); -+ list_add(&desc->list, &descriptor_mappings); -+ -+ return(desc); -+} -+ -+int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) -+{ -+ struct desc_mapping *fd_maps; -+ struct phys_desc *desc; -+ unsigned long phys; -+ int err; -+ -+ fd_maps = descriptor_mapping(fd); -+ if(fd_maps == NULL) -+ return(-ENOMEM); -+ -+ phys = __pa(virt); -+ if(find_virtmem_hash(&virtmem_hash, virt) != NULL) -+ panic("Address 0x%p is already substituted\n", virt); -+ -+ err = -ENOMEM; -+ desc = kmalloc(sizeof(*desc), GFP_ATOMIC); -+ if(desc == NULL) -+ goto out; -+ -+ *desc = ((struct phys_desc) -+ { .virt_ptrs = { NULL, NULL }, -+ .fd = fd, -+ .offset = offset, -+ .virt = virt, -+ .phys = __pa(virt), -+ .list = LIST_HEAD_INIT(desc->list) }); -+ insert_virtmem_hash(&virtmem_hash, desc); -+ -+ list_add(&desc->list, &fd_maps->pages); -+ -+ virt = (void *) ((unsigned long) virt & PAGE_MASK); -+ err = os_map_memory(virt, fd, offset, PAGE_SIZE, 1, w, 0); -+ if(!err) -+ goto out; -+ -+ remove_virtmem_hash(&virtmem_hash, desc); -+ kfree(desc); -+ out: -+ return(err); -+} -+ -+static int physmem_fd = -1; -+ -+static void remove_mapping(struct phys_desc *desc) -+{ -+ void *virt = desc->virt; -+ int err; -+ -+ remove_virtmem_hash(&virtmem_hash, desc); -+ list_del(&desc->list); -+ kfree(desc); -+ -+ err = os_map_memory(virt, physmem_fd, __pa(virt), PAGE_SIZE, 1, 1, 0); -+ if(err) -+ panic("Failed to unmap block device page from physical memory, " -+ "errno = %d", -err); -+} -+ -+int physmem_remove_mapping(void *virt) -+{ -+ struct phys_desc *desc; -+ -+ virt = (void *) ((unsigned long) virt & PAGE_MASK); -+ desc = find_virtmem_hash(&virtmem_hash, virt); -+ if(desc == NULL) -+ return(0); -+ -+ remove_mapping(desc); -+ return(1); -+} -+ -+void physmem_forget_descriptor(int fd) -+{ -+ struct desc_mapping *desc; -+ struct phys_desc *page; -+ struct list_head *ele, *next; -+ __u64 offset; -+ void *addr; -+ int err; -+ -+ desc = find_mapping(fd); -+ if(desc == NULL) -+ return; -+ -+ list_for_each_safe(ele, next, &desc->pages){ -+ page = list_entry(ele, struct phys_desc, list); -+ offset = page->offset; -+ addr = page->virt; -+ remove_mapping(page); -+ err = os_seek_file(fd, offset); -+ if(err) -+ panic("physmem_forget_descriptor - failed to seek " -+ "to %lld in fd %d, error = %d\n", -+ offset, fd, -err); -+ err = os_read_file(fd, addr, PAGE_SIZE); -+ if(err < 0) -+ panic("physmem_forget_descriptor - failed to read " -+ "from fd %d to 0x%p, error = %d\n", -+ fd, addr, -err); -+ } -+ -+ list_del(&desc->list); -+ kfree(desc); -+} -+ -+void arch_free_page(struct page *page, int order) -+{ -+ void *virt; -+ int i; -+ -+ for(i = 0; i < (1 << order); i++){ -+ virt = __va(page_to_phys(page + i)); -+ physmem_remove_mapping(virt); -+ } -+} -+ -+int is_remapped(void *virt) -+{ -+ return(find_virtmem_hash(&virtmem_hash, virt) != NULL); -+} -+ -+/* Changed during early boot */ -+unsigned long high_physmem; -+ -+extern unsigned long physmem_size; -+ -+void *to_virt(unsigned long phys) -+{ -+ return((void *) uml_physmem + phys); -+} -+ -+unsigned long to_phys(void *virt) -+{ -+ return(((unsigned long) virt) - uml_physmem); -+} -+ -+int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) -+{ -+ struct page *p, *map; -+ unsigned long phys_len, phys_pages, highmem_len, highmem_pages; -+ unsigned long iomem_len, iomem_pages, total_len, total_pages; -+ int i; -+ -+ phys_pages = physmem >> PAGE_SHIFT; -+ phys_len = phys_pages * sizeof(struct page); -+ -+ iomem_pages = iomem >> PAGE_SHIFT; -+ iomem_len = iomem_pages * sizeof(struct page); -+ -+ highmem_pages = highmem >> PAGE_SHIFT; -+ highmem_len = highmem_pages * sizeof(struct page); -+ -+ total_pages = phys_pages + iomem_pages + highmem_pages; -+ total_len = phys_len + iomem_pages + highmem_len; -+ -+ if(kmalloc_ok){ -+ map = kmalloc(total_len, GFP_KERNEL); -+ if(map == NULL) -+ map = vmalloc(total_len); -+ } -+ else map = alloc_bootmem_low_pages(total_len); -+ -+ if(map == NULL) -+ return(-ENOMEM); -+ -+ for(i = 0; i < total_pages; i++){ -+ p = &map[i]; -+ set_page_count(p, 0); -+ SetPageReserved(p); -+ INIT_LIST_HEAD(&p->list); -+ } -+ -+ mem_map = map; -+ max_mapnr = total_pages; -+ return(0); -+} -+ -+struct page *phys_to_page(const unsigned long phys) -+{ -+ return(&mem_map[phys >> PAGE_SHIFT]); -+} -+ -+struct page *__virt_to_page(const unsigned long virt) -+{ -+ return(&mem_map[__pa(virt) >> PAGE_SHIFT]); -+} -+ -+unsigned long page_to_phys(struct page *page) -+{ -+ return((page - mem_map) << PAGE_SHIFT); -+} -+ -+pte_t mk_pte(struct page *page, pgprot_t pgprot) -+{ -+ pte_t pte; -+ -+ pte_val(pte) = page_to_phys(page) + pgprot_val(pgprot); -+ if(pte_present(pte)) pte_mknewprot(pte_mknewpage(pte)); -+ return(pte); -+} -+ -+/* Changed during early boot */ -+static unsigned long kmem_top = 0; -+ -+unsigned long get_kmem_end(void) -+{ -+ if(kmem_top == 0) -+ kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); -+ return(kmem_top); -+} -+ -+void map_memory(unsigned long virt, unsigned long phys, unsigned long len, -+ int r, int w, int x) -+{ -+ __u64 offset; -+ int fd, err; -+ -+ fd = phys_mapping(phys, &offset); -+ err = os_map_memory((void *) virt, fd, offset, len, r, w, x); -+ if(err) -+ panic("map_memory(0x%lx, %d, 0x%llx, %ld, %d, %d, %d) failed, " -+ "err = %d\n", virt, fd, offset, len, r, w, x, err); -+} -+ -+#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) -+ -+void setup_physmem(unsigned long start, unsigned long reserve_end, -+ unsigned long len, unsigned long highmem) -+{ -+ unsigned long reserve = reserve_end - start; -+ int pfn = PFN_UP(__pa(reserve_end)); -+ int delta = (len - reserve) >> PAGE_SHIFT; -+ int err, offset, bootmap_size; -+ -+ physmem_fd = create_mem_file(len + highmem); -+ -+ offset = uml_reserved - uml_physmem; -+ err = os_map_memory((void *) uml_reserved, physmem_fd, offset, -+ len - offset, 1, 1, 0); -+ if(err < 0){ -+ os_print_error(err, "Mapping memory"); -+ exit(1); -+ } -+ -+ bootmap_size = init_bootmem(pfn, pfn + delta); -+ free_bootmem(__pa(reserve_end) + bootmap_size, -+ len - bootmap_size - reserve); -+} -+ -+int phys_mapping(unsigned long phys, __u64 *offset_out) -+{ -+ struct phys_desc *desc = find_virtmem_hash(&virtmem_hash, -+ __va(phys & PAGE_MASK)); -+ int fd = -1; -+ -+ if(desc != NULL){ -+ fd = desc->fd; -+ *offset_out = desc->offset; -+ } -+ else if(phys < physmem_size){ -+ fd = physmem_fd; -+ *offset_out = phys; -+ } -+ else if(phys < __pa(end_iomem)){ -+ struct iomem_region *region = iomem_regions; -+ -+ while(region != NULL){ -+ if((phys >= region->phys) && -+ (phys < region->phys + region->size)){ -+ fd = region->fd; -+ *offset_out = phys - region->phys; -+ break; -+ } -+ region = region->next; -+ } -+ } -+ else if(phys < __pa(end_iomem) + highmem){ -+ fd = physmem_fd; -+ *offset_out = phys - iomem_size; -+ } -+ -+ return(fd); -+} -+ -+static int __init uml_mem_setup(char *line, int *add) -+{ -+ char *retptr; -+ physmem_size = memparse(line,&retptr); -+ return 0; -+} -+__uml_setup("mem=", uml_mem_setup, -+"mem=\n" -+" This controls how much \"physical\" memory the kernel allocates\n" -+" for the system. The size is specified as a number followed by\n" -+" one of 'k', 'K', 'm', 'M', which have the obvious meanings.\n" -+" This is not related to the amount of memory in the host. It can\n" -+" be more, and the excess, if it's ever used, will just be swapped out.\n" -+" Example: mem=64M\n\n" -+); -+ -+unsigned long find_iomem(char *driver, unsigned long *len_out) -+{ -+ struct iomem_region *region = iomem_regions; -+ -+ while(region != NULL){ -+ if(!strcmp(region->driver, driver)){ -+ *len_out = region->size; -+ return(region->virt); -+ } -+ } -+ -+ return(0); -+} -+ -+int setup_iomem(void) -+{ -+ struct iomem_region *region = iomem_regions; -+ unsigned long iomem_start = high_physmem + PAGE_SIZE; -+ int err; -+ -+ while(region != NULL){ -+ err = os_map_memory((void *) iomem_start, region->fd, 0, -+ region->size, 1, 1, 0); -+ if(err) -+ printk("Mapping iomem region for driver '%s' failed, " -+ "errno = %d\n", region->driver, -err); -+ else { -+ region->virt = iomem_start; -+ region->phys = __pa(region->virt); -+ } -+ -+ iomem_start += region->size + PAGE_SIZE; -+ region = region->next; -+ } -+ -+ return(0); -+} -+ -+__initcall(setup_iomem); -+ -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/kernel/process.c b/arch/um/kernel/process.c ---- a/arch/um/kernel/process.c 2004-03-10 08:22:43.000000000 -0500 -+++ b/arch/um/kernel/process.c 2004-03-10 08:43:15.000000000 -0500 -@@ -9,12 +9,10 @@ - #include - #include - #include --#include - #include - #include - #include - #include --#include - #include - #include - #include -@@ -58,7 +56,11 @@ - { - int flags = altstack ? SA_ONSTACK : 0; - -- set_handler(SIGSEGV, (__sighandler_t) sig_handler, flags, -+ /* NODEFER is set here because SEGV isn't turned back on when the -+ * handler is ready to receive signals. This causes any segfault -+ * during a copy_user to kill the process because the fault is blocked. -+ */ -+ set_handler(SIGSEGV, (__sighandler_t) sig_handler, flags | SA_NODEFER, - SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); - set_handler(SIGTRAP, (__sighandler_t) sig_handler, flags, - SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); -@@ -72,7 +74,6 @@ - SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1); - set_handler(SIGUSR2, (__sighandler_t) sig_handler, - SA_NOMASK | flags, -1); -- (void) CHOOSE_MODE(signal(SIGCHLD, SIG_IGN), (void *) 0); - signal(SIGHUP, SIG_IGN); - - init_irq_signals(altstack); -@@ -123,11 +124,12 @@ - /* Start the process and wait for it to kill itself */ - new_pid = clone(outer_tramp, (void *) sp, clone_flags, &arg); - if(new_pid < 0) return(-errno); -- while((err = waitpid(new_pid, &status, 0) < 0) && (errno == EINTR)) ; -+ while(((err = waitpid(new_pid, &status, 0)) < 0) && (errno == EINTR)) ; - if(err < 0) panic("Waiting for outer trampoline failed - errno = %d", - errno); - if(!WIFSIGNALED(status) || (WTERMSIG(status) != SIGKILL)) -- panic("outer trampoline didn't exit with SIGKILL"); -+ panic("outer trampoline didn't exit with SIGKILL, " -+ "status = %d", status); - - return(arg.pid); - } -@@ -138,7 +140,7 @@ - - os_stop_process(os_getpid()); - -- if(read(fd, &c, sizeof(c)) != sizeof(c)) -+ if(os_read_file(fd, &c, sizeof(c)) != sizeof(c)) - panic("read failed in suspend_new_thread"); - } - -@@ -233,7 +235,7 @@ - int n; - - *jmp_ptr = &buf; -- n = setjmp(buf); -+ n = sigsetjmp(buf, 1); - if(n != 0) - return(n); - (*fn)(arg); -@@ -273,7 +275,7 @@ - stop_ptraced_child(pid, stack, 1); - - printf("Checking for /proc/mm..."); -- if(access("/proc/mm", W_OK)){ -+ if(os_access("/proc/mm", OS_ACC_W_OK) < 0){ - printf("not found\n"); - ret = 0; - } -diff -Naur a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c ---- a/arch/um/kernel/process_kern.c 2004-03-10 08:21:29.000000000 -0500 -+++ b/arch/um/kernel/process_kern.c 2004-03-10 08:39:39.000000000 -0500 -@@ -16,6 +16,7 @@ - #include "linux/module.h" - #include "linux/init.h" - #include "linux/capability.h" -+#include "linux/spinlock.h" - #include "asm/unistd.h" - #include "asm/mman.h" - #include "asm/segment.h" -@@ -23,7 +24,6 @@ - #include "asm/pgtable.h" - #include "asm/processor.h" - #include "asm/tlbflush.h" --#include "asm/spinlock.h" - #include "asm/uaccess.h" - #include "asm/user.h" - #include "user_util.h" -@@ -52,17 +52,12 @@ - - struct task_struct *get_task(int pid, int require) - { -- struct task_struct *task, *ret; -+ struct task_struct *ret; - -- ret = NULL; - read_lock(&tasklist_lock); -- for_each_process(task){ -- if(task->pid == pid){ -- ret = task; -- break; -- } -- } -+ ret = find_task_by_pid(pid); - read_unlock(&tasklist_lock); -+ - if(require && (ret == NULL)) panic("get_task couldn't find a task\n"); - return(ret); - } -@@ -95,7 +90,8 @@ - int flags = GFP_KERNEL; - - if(atomic) flags |= GFP_ATOMIC; -- if((page = __get_free_pages(flags, order)) == 0) -+ page = __get_free_pages(flags, order); -+ if(page == 0) - return(0); - stack_protections(page); - return(page); -@@ -103,13 +99,15 @@ - - int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) - { -- struct task_struct *p; -+ int pid; - - current->thread.request.u.thread.proc = fn; - current->thread.request.u.thread.arg = arg; -- p = do_fork(CLONE_VM | flags, 0, NULL, 0, NULL, NULL); -- if(IS_ERR(p)) panic("do_fork failed in kernel_thread"); -- return(p->pid); -+ pid = do_fork(CLONE_VM | CLONE_UNTRACED | flags, 0, NULL, 0, NULL, -+ NULL); -+ if(pid < 0) -+ panic("do_fork failed in kernel_thread, errno = %d", pid); -+ return(pid); - } - - void switch_mm(struct mm_struct *prev, struct mm_struct *next, -@@ -129,7 +127,7 @@ - { external_pid(task), task }); - } - --void *switch_to(void *prev, void *next, void *last) -+void *_switch_to(void *prev, void *next, void *last) - { - return(CHOOSE_MODE(switch_to_tt(prev, next), - switch_to_skas(prev, next))); -@@ -149,7 +147,7 @@ - void exit_thread(void) - { - CHOOSE_MODE(exit_thread_tt(), exit_thread_skas()); -- unprotect_stack((unsigned long) current->thread_info); -+ unprotect_stack((unsigned long) current_thread); - } - - void *get_current(void) -@@ -157,6 +155,10 @@ - return(current); - } - -+void prepare_to_copy(struct task_struct *tsk) -+{ -+} -+ - int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, - unsigned long stack_top, struct task_struct * p, - struct pt_regs *regs) -@@ -190,7 +192,7 @@ - - void default_idle(void) - { -- idle_timer(); -+ uml_idle_timer(); - - atomic_inc(&init_mm.mm_count); - current->mm = &init_mm; -@@ -367,10 +369,15 @@ - return(clear_user(buf, size)); - } - -+int strlen_user_proc(char *str) -+{ -+ return(strlen_user(str)); -+} -+ - int smp_sigio_handler(void) - { - #ifdef CONFIG_SMP -- int cpu = current->thread_info->cpu; -+ int cpu = current_thread->cpu; - IPI_handler(cpu); - if(cpu != 0) - return(1); -@@ -385,7 +392,7 @@ - - int cpu(void) - { -- return(current->thread_info->cpu); -+ return(current_thread->cpu); - } - - /* -diff -Naur a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c ---- a/arch/um/kernel/ptrace.c 2004-03-10 08:20:25.000000000 -0500 -+++ b/arch/um/kernel/ptrace.c 2004-03-10 08:35:10.000000000 -0500 -@@ -311,11 +311,8 @@ - - /* the 0x80 provides a way for the tracing parent to distinguish - between a syscall stop and SIGTRAP delivery */ -- current->exit_code = SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) -- ? 0x80 : 0); -- current->state = TASK_STOPPED; -- notify_parent(current, SIGCHLD); -- schedule(); -+ ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) -+ ? 0x80 : 0)); - - /* - * this isn't the same as continuing with a signal, but it will do -diff -Naur a/arch/um/kernel/reboot.c b/arch/um/kernel/reboot.c ---- a/arch/um/kernel/reboot.c 2004-03-10 08:21:28.000000000 -0500 -+++ b/arch/um/kernel/reboot.c 2004-03-10 08:39:16.000000000 -0500 -@@ -15,6 +15,7 @@ - #ifdef CONFIG_SMP - static void kill_idlers(int me) - { -+#ifdef CONFIG_MODE_TT - struct task_struct *p; - int i; - -@@ -23,6 +24,7 @@ - if((p != NULL) && (p->thread.mode.tt.extern_pid != me)) - os_kill_process(p->thread.mode.tt.extern_pid, 0); - } -+#endif - } - #endif - -diff -Naur a/arch/um/kernel/sigio_kern.c b/arch/um/kernel/sigio_kern.c ---- a/arch/um/kernel/sigio_kern.c 2004-03-10 08:20:50.000000000 -0500 -+++ b/arch/um/kernel/sigio_kern.c 2004-03-10 08:36:21.000000000 -0500 -@@ -6,18 +6,21 @@ - #include "linux/kernel.h" - #include "linux/list.h" - #include "linux/slab.h" --#include "asm/irq.h" -+#include "linux/signal.h" -+#include "linux/interrupt.h" - #include "init.h" - #include "sigio.h" - #include "irq_user.h" -+#include "irq_kern.h" - - /* Protected by sigio_lock() called from write_sigio_workaround */ - static int sigio_irq_fd = -1; - --void sigio_interrupt(int irq, void *data, struct pt_regs *unused) -+irqreturn_t sigio_interrupt(int irq, void *data, struct pt_regs *unused) - { - read_sigio_fd(sigio_irq_fd); - reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); -+ return(IRQ_HANDLED); - } - - int write_sigio_irq(int fd) -diff -Naur a/arch/um/kernel/sigio_user.c b/arch/um/kernel/sigio_user.c ---- a/arch/um/kernel/sigio_user.c 2004-03-10 08:23:11.000000000 -0500 -+++ b/arch/um/kernel/sigio_user.c 2004-03-10 08:44:30.000000000 -0500 -@@ -7,7 +7,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -26,7 +25,7 @@ - int pty_close_sigio = 0; - - /* Used as a flag during SIGIO testing early in boot */ --static int got_sigio = 0; -+static volatile int got_sigio = 0; - - void __init handler(int sig) - { -@@ -45,7 +44,7 @@ - - info->err = 0; - if(openpty(&info->master, &info->slave, NULL, NULL, NULL)) -- info->err = errno; -+ info->err = -errno; - } - - void __init check_one_sigio(void (*proc)(int, int)) -@@ -53,11 +52,11 @@ - struct sigaction old, new; - struct termios tt; - struct openpty_arg pty = { .master = -1, .slave = -1 }; -- int master, slave, flags; -+ int master, slave, err; - - initial_thread_cb(openpty_cb, &pty); - if(pty.err){ -- printk("openpty failed, errno = %d\n", pty.err); -+ printk("openpty failed, errno = %d\n", -pty.err); - return; - } - -@@ -69,23 +68,16 @@ - return; - } - -+ /* XXX These can fail with EINTR */ - if(tcgetattr(master, &tt) < 0) - panic("check_sigio : tcgetattr failed, errno = %d\n", errno); - cfmakeraw(&tt); - if(tcsetattr(master, TCSADRAIN, &tt) < 0) - panic("check_sigio : tcsetattr failed, errno = %d\n", errno); - -- if((flags = fcntl(master, F_GETFL)) < 0) -- panic("tty_fds : fcntl F_GETFL failed, errno = %d\n", errno); -- -- if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || -- (fcntl(master, F_SETOWN, os_getpid()) < 0)) -- panic("check_sigio : fcntl F_SETFL or F_SETOWN failed, " -- "errno = %d\n", errno); -- -- if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)) -- panic("check_sigio : fcntl F_SETFL failed, errno = %d\n", -- errno); -+ err = os_sigio_async(master, slave); -+ if(err < 0) -+ panic("tty_fds : sigio_async failed, err = %d\n", -err); - - if(sigaction(SIGIO, NULL, &old) < 0) - panic("check_sigio : sigaction 1 failed, errno = %d\n", errno); -@@ -97,8 +89,8 @@ - got_sigio = 0; - (*proc)(master, slave); - -- close(master); -- close(slave); -+ os_close_file(master); -+ os_close_file(slave); - - if(sigaction(SIGIO, &old, NULL) < 0) - panic("check_sigio : sigaction 3 failed, errno = %d\n", errno); -@@ -112,25 +104,25 @@ - printk("Checking that host ptys support output SIGIO..."); - - memset(buf, 0, sizeof(buf)); -- while(write(master, buf, sizeof(buf)) > 0) ; -+ -+ while(os_write_file(master, buf, sizeof(buf)) > 0) ; - if(errno != EAGAIN) - panic("check_sigio : write failed, errno = %d\n", errno); -- -- while(((n = read(slave, buf, sizeof(buf))) > 0) && !got_sigio) ; -+ while(((n = os_read_file(slave, buf, sizeof(buf))) > 0) && !got_sigio) ; - - if(got_sigio){ - printk("Yes\n"); - pty_output_sigio = 1; - } -- else if(errno == EAGAIN) printk("No, enabling workaround\n"); -- else panic("check_sigio : read failed, errno = %d\n", errno); -+ else if(n == -EAGAIN) printk("No, enabling workaround\n"); -+ else panic("check_sigio : read failed, err = %d\n", n); - } - - static void tty_close(int master, int slave) - { - printk("Checking that host ptys support SIGIO on close..."); - -- close(slave); -+ os_close_file(slave); - if(got_sigio){ - printk("Yes\n"); - pty_close_sigio = 1; -@@ -140,7 +132,8 @@ - - void __init check_sigio(void) - { -- if(access("/dev/ptmx", R_OK) && access("/dev/ptyp0", R_OK)){ -+ if((os_access("/dev/ptmx", OS_ACC_R_OK) < 0) && -+ (os_access("/dev/ptyp0", OS_ACC_R_OK) < 0)){ - printk("No pseudo-terminals available - skipping pty SIGIO " - "check\n"); - return; -@@ -201,11 +194,10 @@ - p = &fds->poll[i]; - if(p->revents == 0) continue; - if(p->fd == sigio_private[1]){ -- n = read(sigio_private[1], &c, sizeof(c)); -+ n = os_read_file(sigio_private[1], &c, sizeof(c)); - if(n != sizeof(c)) - printk("write_sigio_thread : " -- "read failed, errno = %d\n", -- errno); -+ "read failed, err = %d\n", -n); - tmp = current_poll; - current_poll = next_poll; - next_poll = tmp; -@@ -218,10 +210,10 @@ - (fds->used - i) * sizeof(*fds->poll)); - } - -- n = write(respond_fd, &c, sizeof(c)); -+ n = os_write_file(respond_fd, &c, sizeof(c)); - if(n != sizeof(c)) - printk("write_sigio_thread : write failed, " -- "errno = %d\n", errno); -+ "err = %d\n", -n); - } - } - } -@@ -252,15 +244,15 @@ - char c; - - flags = set_signals(0); -- n = write(sigio_private[0], &c, sizeof(c)); -+ n = os_write_file(sigio_private[0], &c, sizeof(c)); - if(n != sizeof(c)){ -- printk("update_thread : write failed, errno = %d\n", errno); -+ printk("update_thread : write failed, err = %d\n", -n); - goto fail; - } - -- n = read(sigio_private[0], &c, sizeof(c)); -+ n = os_read_file(sigio_private[0], &c, sizeof(c)); - if(n != sizeof(c)){ -- printk("update_thread : read failed, errno = %d\n", errno); -+ printk("update_thread : read failed, err = %d\n", -n); - goto fail; - } - -@@ -271,10 +263,10 @@ - if(write_sigio_pid != -1) - os_kill_process(write_sigio_pid, 1); - write_sigio_pid = -1; -- close(sigio_private[0]); -- close(sigio_private[1]); -- close(write_sigio_fds[0]); -- close(write_sigio_fds[1]); -+ os_close_file(sigio_private[0]); -+ os_close_file(sigio_private[1]); -+ os_close_file(write_sigio_fds[0]); -+ os_close_file(write_sigio_fds[1]); - sigio_unlock(); - set_signals(flags); - } -@@ -369,15 +361,15 @@ - goto out; - - err = os_pipe(write_sigio_fds, 1, 1); -- if(err){ -+ if(err < 0){ - printk("write_sigio_workaround - os_pipe 1 failed, " -- "errno = %d\n", -err); -+ "err = %d\n", -err); - goto out; - } - err = os_pipe(sigio_private, 1, 1); -- if(err){ -+ if(err < 0){ - printk("write_sigio_workaround - os_pipe 2 failed, " -- "errno = %d\n", -err); -+ "err = %d\n", -err); - goto out_close1; - } - if(setup_initial_poll(sigio_private[1])) -@@ -399,11 +391,11 @@ - os_kill_process(write_sigio_pid, 1); - write_sigio_pid = -1; - out_close2: -- close(sigio_private[0]); -- close(sigio_private[1]); -+ os_close_file(sigio_private[0]); -+ os_close_file(sigio_private[1]); - out_close1: -- close(write_sigio_fds[0]); -- close(write_sigio_fds[1]); -+ os_close_file(write_sigio_fds[0]); -+ os_close_file(write_sigio_fds[1]); - sigio_unlock(); - } - -@@ -412,10 +404,16 @@ - int n; - char c; - -- n = read(fd, &c, sizeof(c)); -+ n = os_read_file(fd, &c, sizeof(c)); - if(n != sizeof(c)){ -- printk("read_sigio_fd - read failed, errno = %d\n", errno); -- return(-errno); -+ if(n < 0) { -+ printk("read_sigio_fd - read failed, err = %d\n", -n); -+ return(n); -+ } -+ else { -+ printk("read_sigio_fd - short read, bytes = %d\n", n); -+ return(-EIO); -+ } - } - return(n); - } -diff -Naur a/arch/um/kernel/signal_kern.c b/arch/um/kernel/signal_kern.c ---- a/arch/um/kernel/signal_kern.c 2004-03-10 08:21:31.000000000 -0500 -+++ b/arch/um/kernel/signal_kern.c 2004-03-10 08:40:01.000000000 -0500 -@@ -36,7 +36,7 @@ - if(sig == SIGSEGV){ - struct k_sigaction *ka; - -- ka = ¤t->sig->action[SIGSEGV - 1]; -+ ka = ¤t->sighand->action[SIGSEGV - 1]; - ka->sa.sa_handler = SIG_DFL; - } - force_sig(SIGSEGV, current); -@@ -60,10 +60,10 @@ - int err, ret; - - ret = 0; -+ /* Always make any pending restarted system calls return -EINTR */ -+ current_thread_info()->restart_block.fn = do_no_restart_syscall; - switch(error){ - case -ERESTART_RESTARTBLOCK: -- current_thread_info()->restart_block.fn = -- do_no_restart_syscall; - case -ERESTARTNOHAND: - ret = -EINTR; - break; -@@ -142,7 +142,7 @@ - return(0); - - /* Whee! Actually deliver the signal. */ -- ka = ¤t->sig->action[sig -1 ]; -+ ka = ¤t->sighand->action[sig -1 ]; - err = handle_signal(regs, sig, ka, &info, oldset, error); - if(!err) return(1); - -@@ -201,7 +201,7 @@ - } - } - --int sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize) -+int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) - { - sigset_t saveset, newset; - -@@ -227,20 +227,59 @@ - } - } - -+int sys_sigaction(int sig, const struct old_sigaction __user *act, -+ struct old_sigaction __user *oact) -+{ -+ struct k_sigaction new_ka, old_ka; -+ int ret; -+ -+ if (act) { -+ old_sigset_t mask; -+ if (verify_area(VERIFY_READ, act, sizeof(*act)) || -+ __get_user(new_ka.sa.sa_handler, &act->sa_handler) || -+ __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) -+ return -EFAULT; -+ __get_user(new_ka.sa.sa_flags, &act->sa_flags); -+ __get_user(mask, &act->sa_mask); -+ siginitset(&new_ka.sa.sa_mask, mask); -+ } -+ -+ ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); -+ -+ if (!ret && oact) { -+ if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || -+ __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || -+ __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) -+ return -EFAULT; -+ __put_user(old_ka.sa.sa_flags, &oact->sa_flags); -+ __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); -+ } -+ -+ return ret; -+} -+ -+int sys_sigaltstack(const stack_t *uss, stack_t *uoss) -+{ -+ return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs))); -+} -+ -+extern int userspace_pid[]; -+ - static int copy_sc_from_user(struct pt_regs *to, void *from, - struct arch_frame_data *arch) - { - int ret; - - ret = CHOOSE_MODE(copy_sc_from_user_tt(UPT_SC(&to->regs), from, arch), -- copy_sc_from_user_skas(&to->regs, from)); -+ copy_sc_from_user_skas(userspace_pid[0], -+ &to->regs, from)); - return(ret); - } - - int sys_sigreturn(struct pt_regs regs) - { -- void *sc = sp_to_sc(PT_REGS_SP(¤t->thread.regs)); -- void *mask = sp_to_mask(PT_REGS_SP(¤t->thread.regs)); -+ void __user *sc = sp_to_sc(PT_REGS_SP(¤t->thread.regs)); -+ void __user *mask = sp_to_mask(PT_REGS_SP(¤t->thread.regs)); - int sig_size = (_NSIG_WORDS - 1) * sizeof(unsigned long); - - spin_lock_irq(¤t->sighand->siglock); -@@ -257,8 +296,8 @@ - - int sys_rt_sigreturn(struct pt_regs regs) - { -- struct ucontext *uc = sp_to_uc(PT_REGS_SP(¤t->thread.regs)); -- void *fp; -+ unsigned long sp = PT_REGS_SP(¤t->thread.regs); -+ struct ucontext __user *uc = sp_to_uc(sp); - int sig_size = _NSIG_WORDS * sizeof(unsigned long); - - spin_lock_irq(¤t->sighand->siglock); -@@ -266,7 +305,6 @@ - sigdelsetmask(¤t->blocked, ~_BLOCKABLE); - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); -- fp = (void *) (((unsigned long) uc) + sizeof(struct ucontext)); - copy_sc_from_user(¤t->thread.regs, &uc->uc_mcontext, - &signal_frame_si.common.arch); - return(PT_REGS_SYSCALL_RET(¤t->thread.regs)); -diff -Naur a/arch/um/kernel/skas/include/mode.h b/arch/um/kernel/skas/include/mode.h ---- a/arch/um/kernel/skas/include/mode.h 2004-03-10 08:21:30.000000000 -0500 -+++ b/arch/um/kernel/skas/include/mode.h 2004-03-10 08:39:50.000000000 -0500 -@@ -12,14 +12,16 @@ - extern int have_fpx_regs; - - extern void user_time_init_skas(void); --extern int copy_sc_from_user_skas(union uml_pt_regs *regs, void *from_ptr); --extern int copy_sc_to_user_skas(void *to_ptr, void *fp, -+extern int copy_sc_from_user_skas(int pid, union uml_pt_regs *regs, -+ void *from_ptr); -+extern int copy_sc_to_user_skas(int pid, void *to_ptr, void *fp, - union uml_pt_regs *regs, - unsigned long fault_addr, int fault_type); - extern void sig_handler_common_skas(int sig, void *sc_ptr); - extern void halt_skas(void); - extern void reboot_skas(void); - extern void kill_off_processes_skas(void); -+extern int is_skas_winch(int pid, int fd, void *data); - - #endif - -diff -Naur a/arch/um/kernel/skas/include/skas.h b/arch/um/kernel/skas/include/skas.h ---- a/arch/um/kernel/skas/include/skas.h 2004-03-10 08:20:52.000000000 -0500 -+++ b/arch/um/kernel/skas/include/skas.h 2004-03-10 08:36:39.000000000 -0500 -@@ -8,7 +8,7 @@ - - #include "sysdep/ptrace.h" - --extern int userspace_pid; -+extern int userspace_pid[]; - - extern void switch_threads(void *me, void *next); - extern void thread_wait(void *sw, void *fb); -@@ -32,7 +32,7 @@ - extern int new_mm(int from); - extern void save_registers(union uml_pt_regs *regs); - extern void restore_registers(union uml_pt_regs *regs); --extern void start_userspace(void); -+extern void start_userspace(int cpu); - extern void init_registers(int pid); - - #endif -diff -Naur a/arch/um/kernel/skas/include/uaccess.h b/arch/um/kernel/skas/include/uaccess.h ---- a/arch/um/kernel/skas/include/uaccess.h 2004-03-10 08:21:04.000000000 -0500 -+++ b/arch/um/kernel/skas/include/uaccess.h 2004-03-10 08:38:18.000000000 -0500 -@@ -6,20 +6,12 @@ - #ifndef __SKAS_UACCESS_H - #define __SKAS_UACCESS_H - --#include "linux/string.h" --#include "linux/sched.h" --#include "linux/err.h" --#include "asm/processor.h" --#include "asm/pgtable.h" - #include "asm/errno.h" --#include "asm/current.h" --#include "asm/a.out.h" --#include "kern_util.h" - - #define access_ok_skas(type, addr, size) \ - ((segment_eq(get_fs(), KERNEL_DS)) || \ - (((unsigned long) (addr) < TASK_SIZE) && \ -- ((unsigned long) (addr) + (size) < TASK_SIZE))) -+ ((unsigned long) (addr) + (size) <= TASK_SIZE))) - - static inline int verify_area_skas(int type, const void * addr, - unsigned long size) -@@ -27,197 +19,12 @@ - return(access_ok_skas(type, addr, size) ? 0 : -EFAULT); - } - --static inline unsigned long maybe_map(unsigned long virt, int is_write) --{ -- pte_t pte; -- -- void *phys = um_virt_to_phys(current, virt, &pte); -- int dummy_code; -- -- if(IS_ERR(phys) || (is_write && !pte_write(pte))){ -- if(handle_page_fault(virt, 0, is_write, 0, &dummy_code)) -- return(0); -- phys = um_virt_to_phys(current, virt, NULL); -- } -- return((unsigned long) __va((unsigned long) phys)); --} -- --static inline int buffer_op(unsigned long addr, int len, -- int (*op)(unsigned long addr, int len, void *arg), -- void *arg) --{ -- int size = min(PAGE_ALIGN(addr) - addr, (unsigned long) len); -- int remain = len, n; -- -- n = (*op)(addr, size, arg); -- if(n != 0) -- return(n < 0 ? remain : 0); -- -- addr += size; -- remain -= size; -- if(remain == 0) -- return(0); -- -- while(addr < ((addr + remain) & PAGE_MASK)){ -- n = (*op)(addr, PAGE_SIZE, arg); -- if(n != 0) -- return(n < 0 ? remain : 0); -- -- addr += PAGE_SIZE; -- remain -= PAGE_SIZE; -- } -- if(remain == 0) -- return(0); -- -- n = (*op)(addr, remain, arg); -- if(n != 0) -- return(n < 0 ? remain : 0); -- return(0); --} -- --static inline int copy_chunk_from_user(unsigned long from, int len, void *arg) --{ -- unsigned long *to_ptr = arg, to = *to_ptr; -- -- from = maybe_map(from, 0); -- if(from == 0) -- return(-1); -- -- memcpy((void *) to, (void *) from, len); -- *to_ptr += len; -- return(0); --} -- --static inline int copy_from_user_skas(void *to, const void *from, int n) --{ -- if(segment_eq(get_fs(), KERNEL_DS)){ -- memcpy(to, from, n); -- return(0); -- } -- -- return(access_ok_skas(VERIFY_READ, from, n) ? -- buffer_op((unsigned long) from, n, copy_chunk_from_user, &to) : -- n); --} -- --static inline int copy_chunk_to_user(unsigned long to, int len, void *arg) --{ -- unsigned long *from_ptr = arg, from = *from_ptr; -- -- to = maybe_map(to, 1); -- if(to == 0) -- return(-1); -- -- memcpy((void *) to, (void *) from, len); -- *from_ptr += len; -- return(0); --} -- --static inline int copy_to_user_skas(void *to, const void *from, int n) --{ -- if(segment_eq(get_fs(), KERNEL_DS)){ -- memcpy(to, from, n); -- return(0); -- } -- -- return(access_ok_skas(VERIFY_WRITE, to, n) ? -- buffer_op((unsigned long) to, n, copy_chunk_to_user, &from) : -- n); --} -- --static inline int strncpy_chunk_from_user(unsigned long from, int len, -- void *arg) --{ -- char **to_ptr = arg, *to = *to_ptr; -- int n; -- -- from = maybe_map(from, 0); -- if(from == 0) -- return(-1); -- -- strncpy(to, (void *) from, len); -- n = strnlen(to, len); -- *to_ptr += n; -- -- if(n < len) -- return(1); -- return(0); --} -- --static inline int strncpy_from_user_skas(char *dst, const char *src, int count) --{ -- int n; -- char *ptr = dst; -- -- if(segment_eq(get_fs(), KERNEL_DS)){ -- strncpy(dst, src, count); -- return(strnlen(dst, count)); -- } -- -- if(!access_ok_skas(VERIFY_READ, src, 1)) -- return(-EFAULT); -- -- n = buffer_op((unsigned long) src, count, strncpy_chunk_from_user, -- &ptr); -- if(n != 0) -- return(-EFAULT); -- return(strnlen(dst, count)); --} -- --static inline int clear_chunk(unsigned long addr, int len, void *unused) --{ -- addr = maybe_map(addr, 1); -- if(addr == 0) -- return(-1); -- -- memset((void *) addr, 0, len); -- return(0); --} -- --static inline int __clear_user_skas(void *mem, int len) --{ -- return(buffer_op((unsigned long) mem, len, clear_chunk, NULL)); --} -- --static inline int clear_user_skas(void *mem, int len) --{ -- if(segment_eq(get_fs(), KERNEL_DS)){ -- memset(mem, 0, len); -- return(0); -- } -- -- return(access_ok_skas(VERIFY_WRITE, mem, len) ? -- buffer_op((unsigned long) mem, len, clear_chunk, NULL) : len); --} -- --static inline int strnlen_chunk(unsigned long str, int len, void *arg) --{ -- int *len_ptr = arg, n; -- -- str = maybe_map(str, 0); -- if(str == 0) -- return(-1); -- -- n = strnlen((void *) str, len); -- *len_ptr += n; -- -- if(n < len) -- return(1); -- return(0); --} -- --static inline int strnlen_user_skas(const void *str, int len) --{ -- int count = 0, n; -- -- if(segment_eq(get_fs(), KERNEL_DS)) -- return(strnlen(str, len) + 1); -- -- n = buffer_op((unsigned long) str, len, strnlen_chunk, &count); -- if(n == 0) -- return(count + 1); -- return(-EFAULT); --} -+extern int copy_from_user_skas(void *to, const void *from, int n); -+extern int copy_to_user_skas(void *to, const void *from, int n); -+extern int strncpy_from_user_skas(char *dst, const char *src, int count); -+extern int __clear_user_skas(void *mem, int len); -+extern int clear_user_skas(void *mem, int len); -+extern int strnlen_user_skas(const void *str, int len); - - #endif - -diff -Naur a/arch/um/kernel/skas/Makefile b/arch/um/kernel/skas/Makefile ---- a/arch/um/kernel/skas/Makefile 2004-03-10 08:20:54.000000000 -0500 -+++ b/arch/um/kernel/skas/Makefile 2004-03-10 08:36:46.000000000 -0500 -@@ -5,20 +5,24 @@ - - obj-y = exec_kern.o exec_user.o mem.o mem_user.o mmu.o process.o \ - process_kern.o syscall_kern.o syscall_user.o time.o tlb.o trap_user.o \ -- sys-$(SUBARCH)/ -+ uaccess.o sys-$(SUBARCH)/ -+ -+host-progs := util/mk_ptregs -+clean-files := include/skas_ptregs.h - - USER_OBJS = $(filter %_user.o,$(obj-y)) process.o time.o - USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) - --include/skas_ptregs.h : util/mk_ptregs -- util/mk_ptregs > $@ -- --util/mk_ptregs : -- $(MAKE) -C util -+$(TOPDIR)/arch/um/include/skas_ptregs.h : $(src)/util/mk_ptregs -+ @echo -n ' Generating $@' -+ @$< > $@.tmp -+ @if [ -r $@ ] && cmp -s $@ $@.tmp; then \ -+ echo ' (unchanged)'; \ -+ rm -f $@.tmp; \ -+ else \ -+ echo ' (updated)'; \ -+ mv -f $@.tmp $@; \ -+ fi - - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean : -- $(MAKE) -C util clean -- $(RM) -f include/skas_ptregs.h -diff -Naur a/arch/um/kernel/skas/mem_user.c b/arch/um/kernel/skas/mem_user.c ---- a/arch/um/kernel/skas/mem_user.c 2004-03-10 08:20:56.000000000 -0500 -+++ b/arch/um/kernel/skas/mem_user.c 2004-03-10 08:37:21.000000000 -0500 -@@ -7,6 +7,7 @@ - #include - #include - #include "mem_user.h" -+#include "mem.h" - #include "user.h" - #include "os.h" - #include "proc_mm.h" -@@ -15,12 +16,12 @@ - int r, int w, int x) - { - struct proc_mm_op map; -- struct mem_region *region; -- int prot, n; -+ __u64 offset; -+ int prot, n, phys_fd; - - prot = (r ? PROT_READ : 0) | (w ? PROT_WRITE : 0) | - (x ? PROT_EXEC : 0); -- region = phys_region(phys); -+ phys_fd = phys_mapping(phys, &offset); - - map = ((struct proc_mm_op) { .op = MM_MMAP, - .u = -@@ -30,12 +31,12 @@ - .prot = prot, - .flags = MAP_SHARED | - MAP_FIXED, -- .fd = region->fd, -- .offset = phys_offset(phys) -+ .fd = phys_fd, -+ .offset = offset - } } } ); - n = os_write_file(fd, &map, sizeof(map)); - if(n != sizeof(map)) -- printk("map : /proc/mm map failed, errno = %d\n", errno); -+ printk("map : /proc/mm map failed, err = %d\n", -n); - } - - int unmap(int fd, void *addr, int len) -@@ -49,8 +50,13 @@ - { .addr = (unsigned long) addr, - .len = len } } } ); - n = os_write_file(fd, &unmap, sizeof(unmap)); -- if((n != 0) && (n != sizeof(unmap))) -- return(-errno); -+ if(n != sizeof(unmap)) { -+ if(n < 0) -+ return(n); -+ else if(n > 0) -+ return(-EIO); -+ } -+ - return(0); - } - -@@ -71,11 +77,15 @@ - .prot = prot } } } ); - - n = os_write_file(fd, &protect, sizeof(protect)); -- if((n != 0) && (n != sizeof(protect))){ -+ if(n != sizeof(protect)) { -+ if(n == 0) return(0); -+ - if(must_succeed) -- panic("protect failed, errno = %d", errno); -- return(-errno); -+ panic("protect failed, err = %d", -n); -+ -+ return(-EIO); - } -+ - return(0); - } - -diff -Naur a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c ---- a/arch/um/kernel/skas/mmu.c 2004-03-10 08:23:29.000000000 -0500 -+++ b/arch/um/kernel/skas/mmu.c 2004-03-10 08:45:36.000000000 -0500 -@@ -22,9 +22,11 @@ - else from = -1; - - mm->context.skas.mm_fd = new_mm(from); -- if(mm->context.skas.mm_fd < 0) -- panic("init_new_context_skas - new_mm failed, errno = %d\n", -- mm->context.skas.mm_fd); -+ if(mm->context.skas.mm_fd < 0){ -+ printk("init_new_context_skas - new_mm failed, errno = %d\n", -+ mm->context.skas.mm_fd); -+ return(mm->context.skas.mm_fd); -+ } - - return(0); - } -diff -Naur a/arch/um/kernel/skas/process.c b/arch/um/kernel/skas/process.c ---- a/arch/um/kernel/skas/process.c 2004-03-10 08:23:10.000000000 -0500 -+++ b/arch/um/kernel/skas/process.c 2004-03-10 08:44:23.000000000 -0500 -@@ -4,6 +4,7 @@ - */ - - #include -+#include - #include - #include - #include -@@ -24,6 +25,19 @@ - #include "os.h" - #include "proc_mm.h" - #include "skas_ptrace.h" -+#include "chan_user.h" -+#include "signal_user.h" -+ -+int is_skas_winch(int pid, int fd, void *data) -+{ -+ if(pid != getpid()) -+ return(0); -+ -+ register_winch_irq(-1, fd, -1, data); -+ return(1); -+} -+ -+/* These are set once at boot time and not changed thereafter */ - - unsigned long exec_regs[FRAME_SIZE]; - unsigned long exec_fp_regs[HOST_FP_SIZE]; -@@ -48,11 +62,11 @@ - int err, syscall_nr, status; - - syscall_nr = PT_SYSCALL_NR(regs->skas.regs); -+ UPT_SYSCALL_NR(regs) = syscall_nr; - if(syscall_nr < 1){ - relay_signal(SIGTRAP, regs); - return; - } -- UPT_SYSCALL_NR(regs) = syscall_nr; - - err = ptrace(PTRACE_POKEUSER, pid, PT_SYSCALL_NR_OFFSET, __NR_getpid); - if(err < 0) -@@ -72,8 +86,6 @@ - handle_syscall(regs); - } - --int userspace_pid; -- - static int userspace_tramp(void *arg) - { - init_new_thread_signals(0); -@@ -83,7 +95,11 @@ - return(0); - } - --void start_userspace(void) -+/* Each element set once, and only accessed by a single processor anyway */ -+#define NR_CPUS 1 -+int userspace_pid[NR_CPUS]; -+ -+void start_userspace(int cpu) - { - void *stack; - unsigned long sp; -@@ -114,21 +130,21 @@ - if(munmap(stack, PAGE_SIZE) < 0) - panic("start_userspace : munmap failed, errno = %d\n", errno); - -- userspace_pid = pid; -+ userspace_pid[cpu] = pid; - } - - void userspace(union uml_pt_regs *regs) - { -- int err, status, op; -+ int err, status, op, pid = userspace_pid[0]; - - restore_registers(regs); - -- err = ptrace(PTRACE_SYSCALL, userspace_pid, 0, 0); -+ err = ptrace(PTRACE_SYSCALL, pid, 0, 0); - if(err) - panic("userspace - PTRACE_SYSCALL failed, errno = %d\n", - errno); - while(1){ -- err = waitpid(userspace_pid, &status, WUNTRACED); -+ err = waitpid(pid, &status, WUNTRACED); - if(err < 0) - panic("userspace - waitpid failed, errno = %d\n", - errno); -@@ -139,16 +155,17 @@ - if(WIFSTOPPED(status)){ - switch(WSTOPSIG(status)){ - case SIGSEGV: -- handle_segv(userspace_pid); -+ handle_segv(pid); - break; - case SIGTRAP: -- handle_trap(userspace_pid, regs); -+ handle_trap(pid, regs); - break; - case SIGIO: - case SIGVTALRM: - case SIGILL: - case SIGBUS: - case SIGFPE: -+ case SIGWINCH: - user_signal(WSTOPSIG(status), regs); - break; - default: -@@ -162,7 +179,7 @@ - - op = singlestepping_skas() ? PTRACE_SINGLESTEP : - PTRACE_SYSCALL; -- err = ptrace(op, userspace_pid, 0, 0); -+ err = ptrace(op, pid, 0, 0); - if(err) - panic("userspace - PTRACE_SYSCALL failed, " - "errno = %d\n", errno); -@@ -172,13 +189,25 @@ - void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr, - void (*handler)(int)) - { -+ unsigned long flags; - jmp_buf switch_buf, fork_buf; - - *switch_buf_ptr = &switch_buf; - *fork_buf_ptr = &fork_buf; - -- if(setjmp(fork_buf) == 0) -+ /* Somewhat subtle - siglongjmp restores the signal mask before doing -+ * the longjmp. This means that when jumping from one stack to another -+ * when the target stack has interrupts enabled, an interrupt may occur -+ * on the source stack. This is bad when starting up a process because -+ * it's not supposed to get timer ticks until it has been scheduled. -+ * So, we disable interrupts around the sigsetjmp to ensure that -+ * they can't happen until we get back here where they are safe. -+ */ -+ flags = get_signals(); -+ block_signals(); -+ if(sigsetjmp(fork_buf, 1) == 0) - new_thread_proc(stack, handler); -+ set_signals(flags); - - remove_sigstack(); - } -@@ -189,16 +218,16 @@ - - *switch_buf = &buf; - fork_buf = fb; -- if(setjmp(buf) == 0) -- longjmp(*fork_buf, 1); -+ if(sigsetjmp(buf, 1) == 0) -+ siglongjmp(*fork_buf, 1); - } - --static int move_registers(int int_op, int fp_op, union uml_pt_regs *regs, -- unsigned long *fp_regs) -+static int move_registers(int pid, int int_op, int fp_op, -+ union uml_pt_regs *regs, unsigned long *fp_regs) - { -- if(ptrace(int_op, userspace_pid, 0, regs->skas.regs) < 0) -+ if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) - return(-errno); -- if(ptrace(fp_op, userspace_pid, 0, fp_regs) < 0) -+ if(ptrace(fp_op, pid, 0, fp_regs) < 0) - return(-errno); - return(0); - } -@@ -217,10 +246,11 @@ - fp_regs = regs->skas.fp; - } - -- err = move_registers(PTRACE_GETREGS, fp_op, regs, fp_regs); -+ err = move_registers(userspace_pid[0], PTRACE_GETREGS, fp_op, regs, -+ fp_regs); - if(err) - panic("save_registers - saving registers failed, errno = %d\n", -- err); -+ -err); - } - - void restore_registers(union uml_pt_regs *regs) -@@ -237,10 +267,11 @@ - fp_regs = regs->skas.fp; - } - -- err = move_registers(PTRACE_SETREGS, fp_op, regs, fp_regs); -+ err = move_registers(userspace_pid[0], PTRACE_SETREGS, fp_op, regs, -+ fp_regs); - if(err) - panic("restore_registers - saving registers failed, " -- "errno = %d\n", err); -+ "errno = %d\n", -err); - } - - void switch_threads(void *me, void *next) -@@ -248,8 +279,8 @@ - jmp_buf my_buf, **me_ptr = me, *next_buf = next; - - *me_ptr = &my_buf; -- if(setjmp(my_buf) == 0) -- longjmp(*next_buf, 1); -+ if(sigsetjmp(my_buf, 1) == 0) -+ siglongjmp(*next_buf, 1); - } - - static jmp_buf initial_jmpbuf; -@@ -265,14 +296,14 @@ - int n; - - *fork_buf_ptr = &initial_jmpbuf; -- n = setjmp(initial_jmpbuf); -+ n = sigsetjmp(initial_jmpbuf, 1); - if(n == 0) - new_thread_proc((void *) stack, new_thread_handler); - else if(n == 1) - remove_sigstack(); - else if(n == 2){ - (*cb_proc)(cb_arg); -- longjmp(*cb_back, 1); -+ siglongjmp(*cb_back, 1); - } - else if(n == 3){ - kmalloc_ok = 0; -@@ -282,7 +313,7 @@ - kmalloc_ok = 0; - return(1); - } -- longjmp(**switch_buf, 1); -+ siglongjmp(**switch_buf, 1); - } - - void remove_sigstack(void) -@@ -304,8 +335,8 @@ - cb_back = &here; - - block_signals(); -- if(setjmp(here) == 0) -- longjmp(initial_jmpbuf, 2); -+ if(sigsetjmp(here, 1) == 0) -+ siglongjmp(initial_jmpbuf, 2); - unblock_signals(); - - cb_proc = NULL; -@@ -316,22 +347,23 @@ - void halt_skas(void) - { - block_signals(); -- longjmp(initial_jmpbuf, 3); -+ siglongjmp(initial_jmpbuf, 3); - } - - void reboot_skas(void) - { - block_signals(); -- longjmp(initial_jmpbuf, 4); -+ siglongjmp(initial_jmpbuf, 4); - } - - int new_mm(int from) - { - struct proc_mm_op copy; -- int n, fd = os_open_file("/proc/mm", of_write(OPENFLAGS()), 0); -+ int n, fd = os_open_file("/proc/mm", -+ of_cloexec(of_write(OPENFLAGS())), 0); - - if(fd < 0) -- return(-errno); -+ return(fd); - - if(from != -1){ - copy = ((struct proc_mm_op) { .op = MM_COPY_SEGMENTS, -@@ -340,8 +372,9 @@ - n = os_write_file(fd, ©, sizeof(copy)); - if(n != sizeof(copy)) - printk("new_mm : /proc/mm copy_segments failed, " -- "errno = %d\n", errno); -+ "err = %d\n", -n); - } -+ - return(fd); - } - -@@ -349,7 +382,8 @@ - { - int err; - -- err = ptrace(PTRACE_SWITCH_MM, userspace_pid, 0, mm_fd); -+#warning need cpu pid in switch_mm_skas -+ err = ptrace(PTRACE_SWITCH_MM, userspace_pid[0], 0, mm_fd); - if(err) - panic("switch_mm_skas - PTRACE_SWITCH_MM failed, errno = %d\n", - errno); -@@ -357,7 +391,8 @@ - - void kill_off_processes_skas(void) - { -- os_kill_process(userspace_pid, 1); -+#warning need to loop over userspace_pids in kill_off_processes_skas -+ os_kill_process(userspace_pid[0], 1); - } - - void init_registers(int pid) -diff -Naur a/arch/um/kernel/skas/process_kern.c b/arch/um/kernel/skas/process_kern.c ---- a/arch/um/kernel/skas/process_kern.c 2004-03-10 08:20:49.000000000 -0500 -+++ b/arch/um/kernel/skas/process_kern.c 2004-03-10 08:36:15.000000000 -0500 -@@ -61,11 +61,13 @@ - thread_wait(¤t->thread.mode.skas.switch_buf, - current->thread.mode.skas.fork_buf); - --#ifdef CONFIG_SMP -- schedule_tail(NULL); --#endif -+ if(current->thread.prev_sched != NULL) -+ schedule_tail(current->thread.prev_sched); - current->thread.prev_sched = NULL; - -+ /* The return value is 1 if the kernel thread execs a process, -+ * 0 if it just exits -+ */ - n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); - if(n == 1) - userspace(¤t->thread.regs.regs); -@@ -93,11 +95,11 @@ - current->thread.mode.skas.fork_buf); - - force_flush_all(); --#ifdef CONFIG_SMP -+ if(current->thread.prev_sched == NULL) -+ panic("blech"); -+ - schedule_tail(current->thread.prev_sched); --#endif - current->thread.prev_sched = NULL; -- unblock_signals(); - - userspace(¤t->thread.regs.regs); - } -@@ -136,7 +138,7 @@ - - void init_idle_skas(void) - { -- cpu_tasks[current->thread_info->cpu].pid = os_getpid(); -+ cpu_tasks[current_thread->cpu].pid = os_getpid(); - default_idle(); - } - -@@ -160,11 +162,11 @@ - - int start_uml_skas(void) - { -- start_userspace(); -+ start_userspace(0); - capture_signal_stack(); -+ uml_idle_timer(); - - init_new_thread_signals(1); -- idle_timer(); - - init_task.thread.request.u.thread.proc = start_kernel_proc; - init_task.thread.request.u.thread.arg = NULL; -@@ -175,12 +177,14 @@ - - int external_pid_skas(struct task_struct *task) - { -- return(userspace_pid); -+#warning Need to look up userspace_pid by cpu -+ return(userspace_pid[0]); - } - - int thread_pid_skas(struct task_struct *task) - { -- return(userspace_pid); -+#warning Need to look up userspace_pid by cpu -+ return(userspace_pid[0]); - } - - /* -diff -Naur a/arch/um/kernel/skas/syscall_kern.c b/arch/um/kernel/skas/syscall_kern.c ---- a/arch/um/kernel/skas/syscall_kern.c 2004-03-10 08:21:49.000000000 -0500 -+++ b/arch/um/kernel/skas/syscall_kern.c 2004-03-10 08:40:26.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - -diff -Naur a/arch/um/kernel/skas/sys-i386/Makefile b/arch/um/kernel/skas/sys-i386/Makefile ---- a/arch/um/kernel/skas/sys-i386/Makefile 2004-03-10 08:22:46.000000000 -0500 -+++ b/arch/um/kernel/skas/sys-i386/Makefile 2004-03-10 08:43:22.000000000 -0500 -@@ -10,5 +10,3 @@ - - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean : -diff -Naur a/arch/um/kernel/skas/sys-i386/sigcontext.c b/arch/um/kernel/skas/sys-i386/sigcontext.c ---- a/arch/um/kernel/skas/sys-i386/sigcontext.c 2004-03-10 08:20:19.000000000 -0500 -+++ b/arch/um/kernel/skas/sys-i386/sigcontext.c 2004-03-10 08:34:19.000000000 -0500 -@@ -12,10 +12,9 @@ - #include "kern_util.h" - #include "user.h" - #include "sigcontext.h" -+#include "mode.h" - --extern int userspace_pid; -- --int copy_sc_from_user_skas(union uml_pt_regs *regs, void *from_ptr) -+int copy_sc_from_user_skas(int pid, union uml_pt_regs *regs, void *from_ptr) - { - struct sigcontext sc, *from = from_ptr; - unsigned long fpregs[FP_FRAME_SIZE]; -@@ -41,13 +40,12 @@ - regs->skas.regs[EIP] = sc.eip; - regs->skas.regs[CS] = sc.cs; - regs->skas.regs[EFL] = sc.eflags; -- regs->skas.regs[UESP] = sc.esp_at_signal; - regs->skas.regs[SS] = sc.ss; - regs->skas.fault_addr = sc.cr2; - regs->skas.fault_type = FAULT_WRITE(sc.err); - regs->skas.trap_type = sc.trapno; - -- err = ptrace(PTRACE_SETFPREGS, userspace_pid, 0, fpregs); -+ err = ptrace(PTRACE_SETFPREGS, pid, 0, fpregs); - if(err < 0){ - printk("copy_sc_to_user - PTRACE_SETFPREGS failed, " - "errno = %d\n", errno); -@@ -57,8 +55,9 @@ - return(0); - } - --int copy_sc_to_user_skas(void *to_ptr, void *fp, union uml_pt_regs *regs, -- unsigned long fault_addr, int fault_type) -+int copy_sc_to_user_skas(int pid, void *to_ptr, void *fp, -+ union uml_pt_regs *regs, unsigned long fault_addr, -+ int fault_type) - { - struct sigcontext sc, *to = to_ptr; - struct _fpstate *to_fp; -@@ -86,7 +85,7 @@ - sc.err = TO_SC_ERR(fault_type); - sc.trapno = regs->skas.trap_type; - -- err = ptrace(PTRACE_GETFPREGS, userspace_pid, 0, fpregs); -+ err = ptrace(PTRACE_GETFPREGS, pid, 0, fpregs); - if(err < 0){ - printk("copy_sc_to_user - PTRACE_GETFPREGS failed, " - "errno = %d\n", errno); -diff -Naur a/arch/um/kernel/skas/trap_user.c b/arch/um/kernel/skas/trap_user.c ---- a/arch/um/kernel/skas/trap_user.c 2004-03-10 08:21:04.000000000 -0500 -+++ b/arch/um/kernel/skas/trap_user.c 2004-03-10 08:38:20.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - -@@ -35,14 +35,10 @@ - errno = save_errno; - } - --extern int missed_ticks[]; -- - void user_signal(int sig, union uml_pt_regs *regs) - { - struct signal_info *info; - -- if(sig == SIGVTALRM) -- missed_ticks[cpu()]++; - regs->skas.is_user = 1; - regs->skas.fault_addr = 0; - regs->skas.fault_type = 0; -diff -Naur a/arch/um/kernel/skas/uaccess.c b/arch/um/kernel/skas/uaccess.c ---- a/arch/um/kernel/skas/uaccess.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/kernel/skas/uaccess.c 2004-03-10 08:41:35.000000000 -0500 -@@ -0,0 +1,219 @@ -+/* -+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) -+ * Licensed under the GPL -+ */ -+ -+#include "linux/stddef.h" -+#include "linux/kernel.h" -+#include "linux/string.h" -+#include "linux/fs.h" -+#include "linux/highmem.h" -+#include "asm/page.h" -+#include "asm/pgtable.h" -+#include "asm/uaccess.h" -+#include "kern_util.h" -+ -+extern void *um_virt_to_phys(struct task_struct *task, unsigned long addr, -+ pte_t *pte_out); -+ -+static unsigned long maybe_map(unsigned long virt, int is_write) -+{ -+ pte_t pte; -+ int err; -+ -+ void *phys = um_virt_to_phys(current, virt, &pte); -+ int dummy_code; -+ -+ if(IS_ERR(phys) || (is_write && !pte_write(pte))){ -+ err = handle_page_fault(virt, 0, is_write, 0, &dummy_code); -+ if(err) -+ return(0); -+ phys = um_virt_to_phys(current, virt, NULL); -+ } -+ return((unsigned long) phys); -+} -+ -+static int do_op(unsigned long addr, int len, int is_write, -+ int (*op)(unsigned long addr, int len, void *arg), void *arg) -+{ -+ struct page *page; -+ int n; -+ -+ addr = maybe_map(addr, is_write); -+ if(addr == -1) -+ return(-1); -+ -+ page = phys_to_page(addr); -+ addr = (unsigned long) kmap(page) + (addr & ~PAGE_MASK); -+ n = (*op)(addr, len, arg); -+ kunmap(page); -+ -+ return(n); -+} -+ -+static int buffer_op(unsigned long addr, int len, int is_write, -+ int (*op)(unsigned long addr, int len, void *arg), -+ void *arg) -+{ -+ int size = min(PAGE_ALIGN(addr) - addr, (unsigned long) len); -+ int remain = len, n; -+ -+ n = do_op(addr, size, is_write, op, arg); -+ if(n != 0) -+ return(n < 0 ? remain : 0); -+ -+ addr += size; -+ remain -= size; -+ if(remain == 0) -+ return(0); -+ -+ while(addr < ((addr + remain) & PAGE_MASK)){ -+ n = do_op(addr, PAGE_SIZE, is_write, op, arg); -+ if(n != 0) -+ return(n < 0 ? remain : 0); -+ -+ addr += PAGE_SIZE; -+ remain -= PAGE_SIZE; -+ } -+ if(remain == 0) -+ return(0); -+ -+ n = do_op(addr, remain, is_write, op, arg); -+ if(n != 0) -+ return(n < 0 ? remain : 0); -+ return(0); -+} -+ -+static int copy_chunk_from_user(unsigned long from, int len, void *arg) -+{ -+ unsigned long *to_ptr = arg, to = *to_ptr; -+ -+ memcpy((void *) to, (void *) from, len); -+ *to_ptr += len; -+ return(0); -+} -+ -+int copy_from_user_skas(void *to, const void *from, int n) -+{ -+ if(segment_eq(get_fs(), KERNEL_DS)){ -+ memcpy(to, from, n); -+ return(0); -+ } -+ -+ return(access_ok_skas(VERIFY_READ, from, n) ? -+ buffer_op((unsigned long) from, n, 0, copy_chunk_from_user, &to): -+ n); -+} -+ -+static int copy_chunk_to_user(unsigned long to, int len, void *arg) -+{ -+ unsigned long *from_ptr = arg, from = *from_ptr; -+ -+ memcpy((void *) to, (void *) from, len); -+ *from_ptr += len; -+ return(0); -+} -+ -+int copy_to_user_skas(void *to, const void *from, int n) -+{ -+ if(segment_eq(get_fs(), KERNEL_DS)){ -+ memcpy(to, from, n); -+ return(0); -+ } -+ -+ return(access_ok_skas(VERIFY_WRITE, to, n) ? -+ buffer_op((unsigned long) to, n, 1, copy_chunk_to_user, &from) : -+ n); -+} -+ -+static int strncpy_chunk_from_user(unsigned long from, int len, void *arg) -+{ -+ char **to_ptr = arg, *to = *to_ptr; -+ int n; -+ -+ strncpy(to, (void *) from, len); -+ n = strnlen(to, len); -+ *to_ptr += n; -+ -+ if(n < len) -+ return(1); -+ return(0); -+} -+ -+int strncpy_from_user_skas(char *dst, const char *src, int count) -+{ -+ int n; -+ char *ptr = dst; -+ -+ if(segment_eq(get_fs(), KERNEL_DS)){ -+ strncpy(dst, src, count); -+ return(strnlen(dst, count)); -+ } -+ -+ if(!access_ok_skas(VERIFY_READ, src, 1)) -+ return(-EFAULT); -+ -+ n = buffer_op((unsigned long) src, count, 0, strncpy_chunk_from_user, -+ &ptr); -+ if(n != 0) -+ return(-EFAULT); -+ return(strnlen(dst, count)); -+} -+ -+static int clear_chunk(unsigned long addr, int len, void *unused) -+{ -+ memset((void *) addr, 0, len); -+ return(0); -+} -+ -+int __clear_user_skas(void *mem, int len) -+{ -+ return(buffer_op((unsigned long) mem, len, 1, clear_chunk, NULL)); -+} -+ -+int clear_user_skas(void *mem, int len) -+{ -+ if(segment_eq(get_fs(), KERNEL_DS)){ -+ memset(mem, 0, len); -+ return(0); -+ } -+ -+ return(access_ok_skas(VERIFY_WRITE, mem, len) ? -+ buffer_op((unsigned long) mem, len, 1, clear_chunk, NULL) : len); -+} -+ -+static int strnlen_chunk(unsigned long str, int len, void *arg) -+{ -+ int *len_ptr = arg, n; -+ -+ n = strnlen((void *) str, len); -+ *len_ptr += n; -+ -+ if(n < len) -+ return(1); -+ return(0); -+} -+ -+int strnlen_user_skas(const void *str, int len) -+{ -+ int count = 0, n; -+ -+ if(segment_eq(get_fs(), KERNEL_DS)) -+ return(strnlen(str, len) + 1); -+ -+ n = buffer_op((unsigned long) str, len, 0, strnlen_chunk, &count); -+ if(n == 0) -+ return(count + 1); -+ return(-EFAULT); -+} -+ -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/kernel/skas/util/Makefile b/arch/um/kernel/skas/util/Makefile ---- a/arch/um/kernel/skas/util/Makefile 2004-03-10 08:22:40.000000000 -0500 -+++ b/arch/um/kernel/skas/util/Makefile 2004-03-10 08:43:06.000000000 -0500 -@@ -1,10 +1,9 @@ - all: mk_ptregs - - mk_ptregs : mk_ptregs.o -- $(CC) -o mk_ptregs mk_ptregs.o -+ $(HOSTCC) -o mk_ptregs mk_ptregs.o - - mk_ptregs.o : mk_ptregs.c -- $(CC) -c $< -+ $(HOSTCC) -c $< - --clean : -- $(RM) -f mk_ptregs *.o *~ -+clean-files := mk_ptregs *.o *~ -diff -Naur a/arch/um/kernel/skas/util/mk_ptregs.c b/arch/um/kernel/skas/util/mk_ptregs.c ---- a/arch/um/kernel/skas/util/mk_ptregs.c 2004-03-10 08:21:01.000000000 -0500 -+++ b/arch/um/kernel/skas/util/mk_ptregs.c 2004-03-10 08:37:48.000000000 -0500 -@@ -1,3 +1,4 @@ -+#include - #include - #include - -diff -Naur a/arch/um/kernel/smp.c b/arch/um/kernel/smp.c ---- a/arch/um/kernel/smp.c 2004-03-10 08:20:31.000000000 -0500 -+++ b/arch/um/kernel/smp.c 2004-03-10 08:36:06.000000000 -0500 -@@ -1,9 +1,15 @@ - /* -- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - - #include "linux/config.h" -+#include "linux/percpu.h" -+#include "asm/pgalloc.h" -+#include "asm/tlb.h" -+ -+/* For some reason, mmu_gathers are referenced when CONFIG_SMP is off. */ -+DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); - - #ifdef CONFIG_SMP - -@@ -23,7 +29,7 @@ - #include "os.h" - - /* CPU online map, set by smp_boot_cpus */ --unsigned long cpu_online_map = cpumask_of_cpu(0); -+unsigned long cpu_online_map = CPU_MASK_NONE; - - EXPORT_SYMBOL(cpu_online_map); - -@@ -55,7 +61,7 @@ - - void smp_send_reschedule(int cpu) - { -- write(cpu_data[cpu].ipi_pipe[1], "R", 1); -+ os_write_file(cpu_data[cpu].ipi_pipe[1], "R", 1); - num_reschedules_sent++; - } - -@@ -100,35 +106,34 @@ - - printk(KERN_INFO "Stopping all CPUs..."); - for(i = 0; i < num_online_cpus(); i++){ -- if(i == current->thread_info->cpu) -+ if(i == current_thread->cpu) - continue; -- write(cpu_data[i].ipi_pipe[1], "S", 1); -+ os_write_file(cpu_data[i].ipi_pipe[1], "S", 1); - } - printk("done\n"); - } - --static cpumask_t smp_commenced_mask; --static cpumask_t smp_callin_map = CPU_MASK_NONE; -+static cpumask_t smp_commenced_mask = CPU_MASK_NONE; -+static cpumask_t cpu_callin_map = CPU_MASK_NONE; - - static int idle_proc(void *cpup) - { - int cpu = (int) cpup, err; - - err = os_pipe(cpu_data[cpu].ipi_pipe, 1, 1); -- if(err) -- panic("CPU#%d failed to create IPI pipe, errno = %d", cpu, -- -err); -+ if(err < 0) -+ panic("CPU#%d failed to create IPI pipe, err = %d", cpu, -err); - - activate_ipi(cpu_data[cpu].ipi_pipe[0], - current->thread.mode.tt.extern_pid); - - wmb(); -- if (cpu_test_and_set(cpu, &smp_callin_map)) { -+ if (cpu_test_and_set(cpu, cpu_callin_map)) { - printk("huh, CPU#%d already present??\n", cpu); - BUG(); - } - -- while (!cpu_isset(cpu, &smp_commenced_mask)) -+ while (!cpu_isset(cpu, smp_commenced_mask)) - cpu_relax(); - - cpu_set(cpu, cpu_online_map); -@@ -143,16 +148,20 @@ - - current->thread.request.u.thread.proc = idle_proc; - current->thread.request.u.thread.arg = (void *) cpu; -- new_task = do_fork(CLONE_VM | CLONE_IDLETASK, 0, NULL, 0, NULL, NULL); -- if(IS_ERR(new_task)) panic("do_fork failed in idle_thread"); -+ new_task = copy_process(CLONE_VM | CLONE_IDLETASK, 0, NULL, 0, NULL, -+ NULL); -+ if(IS_ERR(new_task)) -+ panic("copy_process failed in idle_thread, error = %ld", -+ PTR_ERR(new_task)); - - cpu_tasks[cpu] = ((struct cpu_task) - { .pid = new_task->thread.mode.tt.extern_pid, - .task = new_task } ); - idle_threads[cpu] = new_task; -- CHOOSE_MODE(write(new_task->thread.mode.tt.switch_pipe[1], &c, -+ CHOOSE_MODE(os_write_file(new_task->thread.mode.tt.switch_pipe[1], &c, - sizeof(c)), - ({ panic("skas mode doesn't support SMP"); })); -+ wake_up_forked_process(new_task); - return(new_task); - } - -@@ -160,15 +169,17 @@ - { - struct task_struct *idle; - unsigned long waittime; -- int err, cpu; -+ int err, cpu, me = smp_processor_id(); - -- cpu_set(0, cpu_online_map); -- cpu_set(0, smp_callin_map); -+ cpu_clear(me, cpu_online_map); -+ cpu_set(me, cpu_online_map); -+ cpu_set(me, cpu_callin_map); - -- err = os_pipe(cpu_data[0].ipi_pipe, 1, 1); -- if(err) panic("CPU#0 failed to create IPI pipe, errno = %d", -err); -+ err = os_pipe(cpu_data[me].ipi_pipe, 1, 1); -+ if(err < 0) -+ panic("CPU#0 failed to create IPI pipe, errno = %d", -err); - -- activate_ipi(cpu_data[0].ipi_pipe[0], -+ activate_ipi(cpu_data[me].ipi_pipe[0], - current->thread.mode.tt.extern_pid); - - for(cpu = 1; cpu < ncpus; cpu++){ -@@ -180,10 +191,10 @@ - unhash_process(idle); - - waittime = 200000000; -- while (waittime-- && !cpu_isset(cpu, smp_callin_map)) -+ while (waittime-- && !cpu_isset(cpu, cpu_callin_map)) - cpu_relax(); - -- if (cpu_isset(cpu, smp_callin_map)) -+ if (cpu_isset(cpu, cpu_callin_map)) - printk("done\n"); - else printk("failed\n"); - } -@@ -216,7 +227,7 @@ - int fd; - - fd = cpu_data[cpu].ipi_pipe[0]; -- while (read(fd, &c, 1) == 1) { -+ while (os_read_file(fd, &c, 1) == 1) { - switch (c) { - case 'C': - smp_call_function_slave(cpu); -@@ -273,9 +284,9 @@ - info = _info; - - for (i=0;ithread_info->cpu) && -+ if((i != current_thread->cpu) && - cpu_isset(i, cpu_online_map)) -- write(cpu_data[i].ipi_pipe[1], "C", 1); -+ os_write_file(cpu_data[i].ipi_pipe[1], "C", 1); - - while (atomic_read(&scf_started) != cpus) - barrier(); -diff -Naur a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c ---- a/arch/um/kernel/syscall_kern.c 2004-03-10 08:22:23.000000000 -0500 -+++ b/arch/um/kernel/syscall_kern.c 2004-03-10 08:41:29.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - -@@ -36,39 +36,40 @@ - - long sys_fork(void) - { -- struct task_struct *p; -+ long ret; - - current->thread.forking = 1; -- p = do_fork(SIGCHLD, 0, NULL, 0, NULL, NULL); -+ ret = do_fork(SIGCHLD, 0, NULL, 0, NULL, NULL); - current->thread.forking = 0; -- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); -+ return(ret); - } - --long sys_clone(unsigned long clone_flags, unsigned long newsp) -+long sys_clone(unsigned long clone_flags, unsigned long newsp, -+ int *parent_tid, int *child_tid) - { -- struct task_struct *p; -+ long ret; - - current->thread.forking = 1; -- p = do_fork(clone_flags, newsp, NULL, 0, NULL, NULL); -+ ret = do_fork(clone_flags, newsp, NULL, 0, parent_tid, child_tid); - current->thread.forking = 0; -- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); -+ return(ret); - } - - long sys_vfork(void) - { -- struct task_struct *p; -+ long ret; - - current->thread.forking = 1; -- p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL, NULL); -+ ret = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0, NULL, 0, NULL, -+ NULL); - current->thread.forking = 0; -- return(IS_ERR(p) ? PTR_ERR(p) : p->pid); -+ return(ret); - } - - /* common code for old and new mmaps */ --static inline long do_mmap2( -- unsigned long addr, unsigned long len, -- unsigned long prot, unsigned long flags, -- unsigned long fd, unsigned long pgoff) -+long do_mmap2(struct mm_struct *mm, unsigned long addr, unsigned long len, -+ unsigned long prot, unsigned long flags, unsigned long fd, -+ unsigned long pgoff) - { - int error = -EBADF; - struct file * file = NULL; -@@ -80,9 +81,9 @@ - goto out; - } - -- down_write(¤t->mm->mmap_sem); -- error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); -- up_write(¤t->mm->mmap_sem); -+ down_write(&mm->mmap_sem); -+ error = do_mmap_pgoff(mm, file, addr, len, prot, flags, pgoff); -+ up_write(&mm->mmap_sem); - - if (file) - fput(file); -@@ -94,7 +95,7 @@ - unsigned long prot, unsigned long flags, - unsigned long fd, unsigned long pgoff) - { -- return do_mmap2(addr, len, prot, flags, fd, pgoff); -+ return do_mmap2(current->mm, addr, len, prot, flags, fd, pgoff); - } - - /* -@@ -121,7 +122,8 @@ - if (offset & ~PAGE_MASK) - goto out; - -- err = do_mmap2(addr, len, prot, flags, fd, offset >> PAGE_SHIFT); -+ err = do_mmap2(current->mm, addr, len, prot, flags, fd, -+ offset >> PAGE_SHIFT); - out: - return err; - } -@@ -136,43 +138,12 @@ - - error = do_pipe(fd); - if (!error) { -- if (copy_to_user(fildes, fd, 2*sizeof(int))) -+ if (copy_to_user(fildes, fd, sizeof(fd))) - error = -EFAULT; - } - return error; - } - --int sys_sigaction(int sig, const struct old_sigaction *act, -- struct old_sigaction *oact) --{ -- struct k_sigaction new_ka, old_ka; -- int ret; -- -- if (act) { -- old_sigset_t mask; -- if (verify_area(VERIFY_READ, act, sizeof(*act)) || -- __get_user(new_ka.sa.sa_handler, &act->sa_handler) || -- __get_user(new_ka.sa.sa_restorer, &act->sa_restorer)) -- return -EFAULT; -- __get_user(new_ka.sa.sa_flags, &act->sa_flags); -- __get_user(mask, &act->sa_mask); -- siginitset(&new_ka.sa.sa_mask, mask); -- } -- -- ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); -- -- if (!ret && oact) { -- if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || -- __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || -- __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer)) -- return -EFAULT; -- __put_user(old_ka.sa.sa_flags, &oact->sa_flags); -- __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask); -- } -- -- return ret; --} -- - /* - * sys_ipc() is the de-multiplexer for the SysV IPC calls.. - * -@@ -254,7 +225,7 @@ - return sys_shmctl (first, second, - (struct shmid_ds *) ptr); - default: -- return -EINVAL; -+ return -ENOSYS; - } - } - -@@ -303,11 +274,6 @@ - return error; - } - --int sys_sigaltstack(const stack_t *uss, stack_t *uoss) --{ -- return(do_sigaltstack(uss, uoss, PT_REGS_SP(¤t->thread.regs))); --} -- - long execute_syscall(void *r) - { - return(CHOOSE_MODE_PROC(execute_syscall_tt, execute_syscall_skas, r)); -diff -Naur a/arch/um/kernel/sys_call_table.c b/arch/um/kernel/sys_call_table.c ---- a/arch/um/kernel/sys_call_table.c 2004-03-10 08:22:39.000000000 -0500 -+++ b/arch/um/kernel/sys_call_table.c 2004-03-10 08:43:05.000000000 -0500 -@@ -5,7 +5,6 @@ - - #include "linux/config.h" - #include "linux/unistd.h" --#include "linux/version.h" - #include "linux/sys.h" - #include "linux/swap.h" - #include "linux/syscalls.h" -@@ -14,251 +13,50 @@ - #include "sysdep/syscalls.h" - #include "kern_util.h" - --extern syscall_handler_t sys_restart_syscall; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_exit; -+#ifdef CONFIG_NFSD -+#define NFSSERVCTL sys_nfsservctl -+#else -+#define NFSSERVCTL sys_ni_syscall -+#endif -+ -+#define LAST_GENERIC_SYSCALL __NR_vserver -+ -+#if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL -+#define LAST_SYSCALL LAST_GENERIC_SYSCALL -+#else -+#define LAST_SYSCALL LAST_ARCH_SYSCALL -+#endif -+ - extern syscall_handler_t sys_fork; --extern syscall_handler_t sys_creat; --extern syscall_handler_t sys_link; --extern syscall_handler_t sys_unlink; --extern syscall_handler_t sys_chdir; --extern syscall_handler_t sys_mknod; --extern syscall_handler_t sys_chmod; --extern syscall_handler_t sys_lchown16; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_stat; --extern syscall_handler_t sys_getpid; --extern syscall_handler_t sys_oldumount; --extern syscall_handler_t sys_setuid16; --extern syscall_handler_t sys_getuid16; -+extern syscall_handler_t sys_execve; -+extern syscall_handler_t um_time; -+extern syscall_handler_t um_mount; -+extern syscall_handler_t um_stime; - extern syscall_handler_t sys_ptrace; --extern syscall_handler_t sys_alarm; --extern syscall_handler_t sys_fstat; --extern syscall_handler_t sys_pause; --extern syscall_handler_t sys_utime; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_access; --extern syscall_handler_t sys_nice; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_sync; --extern syscall_handler_t sys_kill; --extern syscall_handler_t sys_rename; --extern syscall_handler_t sys_mkdir; --extern syscall_handler_t sys_rmdir; - extern syscall_handler_t sys_pipe; --extern syscall_handler_t sys_times; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_brk; --extern syscall_handler_t sys_setgid16; --extern syscall_handler_t sys_getgid16; --extern syscall_handler_t sys_signal; --extern syscall_handler_t sys_geteuid16; --extern syscall_handler_t sys_getegid16; --extern syscall_handler_t sys_acct; --extern syscall_handler_t sys_umount; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_ioctl; --extern syscall_handler_t sys_fcntl; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_setpgid; --extern syscall_handler_t sys_ni_syscall; - extern syscall_handler_t sys_olduname; --extern syscall_handler_t sys_umask; --extern syscall_handler_t sys_chroot; --extern syscall_handler_t sys_ustat; --extern syscall_handler_t sys_dup2; --extern syscall_handler_t sys_getppid; --extern syscall_handler_t sys_getpgrp; - extern syscall_handler_t sys_sigaction; --extern syscall_handler_t sys_sgetmask; --extern syscall_handler_t sys_ssetmask; --extern syscall_handler_t sys_setreuid16; --extern syscall_handler_t sys_setregid16; - extern syscall_handler_t sys_sigsuspend; --extern syscall_handler_t sys_sigpending; --extern syscall_handler_t sys_sethostname; --extern syscall_handler_t sys_setrlimit; --extern syscall_handler_t sys_old_getrlimit; --extern syscall_handler_t sys_getrusage; --extern syscall_handler_t sys_gettimeofday; --extern syscall_handler_t sys_settimeofday; --extern syscall_handler_t sys_getgroups16; --extern syscall_handler_t sys_setgroups16; --extern syscall_handler_t sys_symlink; --extern syscall_handler_t sys_lstat; --extern syscall_handler_t sys_readlink; --extern syscall_handler_t sys_swapon; --extern syscall_handler_t sys_uselib; --extern syscall_handler_t sys_reboot; - extern syscall_handler_t old_readdir; --extern syscall_handler_t sys_munmap; --extern syscall_handler_t sys_truncate; --extern syscall_handler_t sys_ftruncate; --extern syscall_handler_t sys_fchmod; --extern syscall_handler_t sys_fchown16; --extern syscall_handler_t sys_getpriority; --extern syscall_handler_t sys_setpriority; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_statfs; --extern syscall_handler_t sys_fstatfs; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_socketcall; --extern syscall_handler_t sys_syslog; --extern syscall_handler_t sys_setitimer; --extern syscall_handler_t sys_getitimer; --extern syscall_handler_t sys_newstat; --extern syscall_handler_t sys_newlstat; --extern syscall_handler_t sys_newfstat; - extern syscall_handler_t sys_uname; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_vhangup; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_swapoff; --extern syscall_handler_t sys_sysinfo; - extern syscall_handler_t sys_ipc; --extern syscall_handler_t sys_fsync; - extern syscall_handler_t sys_sigreturn; --extern syscall_handler_t sys_rt_sigreturn; - extern syscall_handler_t sys_clone; --extern syscall_handler_t sys_setdomainname; --extern syscall_handler_t sys_newuname; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_adjtimex; --extern syscall_handler_t sys_mprotect; --extern syscall_handler_t sys_sigprocmask; --extern syscall_handler_t sys_init_module; --extern syscall_handler_t sys_delete_module; --extern syscall_handler_t sys_quotactl; --extern syscall_handler_t sys_getpgid; --extern syscall_handler_t sys_fchdir; --extern syscall_handler_t sys_bdflush; --extern syscall_handler_t sys_sysfs; --extern syscall_handler_t sys_personality; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_setfsuid16; --extern syscall_handler_t sys_setfsgid16; --extern syscall_handler_t sys_llseek; --extern syscall_handler_t sys_getdents; --extern syscall_handler_t sys_flock; --extern syscall_handler_t sys_msync; --extern syscall_handler_t sys_readv; --extern syscall_handler_t sys_writev; --extern syscall_handler_t sys_getsid; --extern syscall_handler_t sys_fdatasync; --extern syscall_handler_t sys_mlock; --extern syscall_handler_t sys_munlock; --extern syscall_handler_t sys_mlockall; --extern syscall_handler_t sys_munlockall; --extern syscall_handler_t sys_sched_setparam; --extern syscall_handler_t sys_sched_getparam; --extern syscall_handler_t sys_sched_setscheduler; --extern syscall_handler_t sys_sched_getscheduler; --extern syscall_handler_t sys_sched_get_priority_max; --extern syscall_handler_t sys_sched_get_priority_min; --extern syscall_handler_t sys_sched_rr_get_interval; --extern syscall_handler_t sys_nanosleep; --extern syscall_handler_t sys_mremap; --extern syscall_handler_t sys_setresuid16; --extern syscall_handler_t sys_getresuid16; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_poll; --extern syscall_handler_t sys_nfsservctl; --extern syscall_handler_t sys_setresgid16; --extern syscall_handler_t sys_getresgid16; --extern syscall_handler_t sys_prctl; --extern syscall_handler_t sys_ni_syscall; -+extern syscall_handler_t sys_rt_sigreturn; - extern syscall_handler_t sys_rt_sigaction; --extern syscall_handler_t sys_rt_sigprocmask; --extern syscall_handler_t sys_rt_sigpending; --extern syscall_handler_t sys_rt_sigtimedwait; --extern syscall_handler_t sys_rt_sigqueueinfo; --extern syscall_handler_t sys_rt_sigsuspend; --extern syscall_handler_t sys_pread64; --extern syscall_handler_t sys_pwrite64; --extern syscall_handler_t sys_chown16; --extern syscall_handler_t sys_getcwd; --extern syscall_handler_t sys_capget; --extern syscall_handler_t sys_capset; - extern syscall_handler_t sys_sigaltstack; --extern syscall_handler_t sys_sendfile; --extern syscall_handler_t sys_ni_syscall; --extern syscall_handler_t sys_ni_syscall; - extern syscall_handler_t sys_vfork; --extern syscall_handler_t sys_getrlimit; - extern syscall_handler_t sys_mmap2; --extern syscall_handler_t sys_truncate64; --extern syscall_handler_t sys_ftruncate64; --extern syscall_handler_t sys_stat64; --extern syscall_handler_t sys_lstat64; --extern syscall_handler_t sys_fstat64; --extern syscall_handler_t sys_lchown; --extern syscall_handler_t sys_getuid; --extern syscall_handler_t sys_getgid; --extern syscall_handler_t sys_geteuid; --extern syscall_handler_t sys_getegid; --extern syscall_handler_t sys_setreuid; --extern syscall_handler_t sys_setregid; --extern syscall_handler_t sys_getgroups; --extern syscall_handler_t sys_setgroups; --extern syscall_handler_t sys_fchown; --extern syscall_handler_t sys_setresuid; --extern syscall_handler_t sys_getresuid; --extern syscall_handler_t sys_setresgid; --extern syscall_handler_t sys_getresgid; --extern syscall_handler_t sys_chown; --extern syscall_handler_t sys_setuid; --extern syscall_handler_t sys_setgid; --extern syscall_handler_t sys_setfsuid; --extern syscall_handler_t sys_setfsgid; --extern syscall_handler_t sys_pivot_root; --extern syscall_handler_t sys_mincore; --extern syscall_handler_t sys_madvise; --extern syscall_handler_t sys_fcntl64; --extern syscall_handler_t sys_getdents64; --extern syscall_handler_t sys_gettid; --extern syscall_handler_t sys_readahead; --extern syscall_handler_t sys_tkill; --extern syscall_handler_t sys_sendfile64; --extern syscall_handler_t sys_futex; --extern syscall_handler_t sys_sched_setaffinity; --extern syscall_handler_t sys_sched_getaffinity; --extern syscall_handler_t sys_io_setup; --extern syscall_handler_t sys_io_destroy; --extern syscall_handler_t sys_io_getevents; --extern syscall_handler_t sys_io_submit; --extern syscall_handler_t sys_io_cancel; --extern syscall_handler_t sys_exit_group; --extern syscall_handler_t sys_lookup_dcookie; --extern syscall_handler_t sys_epoll_create; --extern syscall_handler_t sys_epoll_ctl; --extern syscall_handler_t sys_epoll_wait; --extern syscall_handler_t sys_remap_file_pages; --extern syscall_handler_t sys_set_tid_address; -- --#ifdef CONFIG_NFSD --#define NFSSERVCTL sys_nfsservctl --#else --#define NFSSERVCTL sys_ni_syscall --#endif -- --extern syscall_handler_t um_mount; --extern syscall_handler_t um_time; --extern syscall_handler_t um_stime; -- --#define LAST_GENERIC_SYSCALL __NR_set_tid_address -- --#if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL --#define LAST_SYSCALL LAST_GENERIC_SYSCALL --#else --#define LAST_SYSCALL LAST_ARCH_SYSCALL --#endif -+extern syscall_handler_t sys_timer_create; -+extern syscall_handler_t old_mmap_i386; -+extern syscall_handler_t old_select; -+extern syscall_handler_t sys_modify_ldt; -+extern syscall_handler_t sys_rt_sigsuspend; - - syscall_handler_t *sys_call_table[] = { -- [ __NR_restart_syscall ] = sys_restart_syscall, -- [ __NR_exit ] = sys_exit, -- [ __NR_fork ] = sys_fork, -+ [ __NR_restart_syscall ] = (syscall_handler_t *) sys_restart_syscall, -+ [ __NR_exit ] (syscall_handler_t *) sys_exit, -+ [ __NR_fork ] (syscall_handler_t *) sys_fork, - [ __NR_read ] = (syscall_handler_t *) sys_read, - [ __NR_write ] = (syscall_handler_t *) sys_write, - -@@ -266,229 +64,249 @@ - [ __NR_open ] = (syscall_handler_t *) sys_open, - [ __NR_close ] = (syscall_handler_t *) sys_close, - [ __NR_waitpid ] = (syscall_handler_t *) sys_waitpid, -- [ __NR_creat ] = sys_creat, -- [ __NR_link ] = sys_link, -- [ __NR_unlink ] = sys_unlink, -+ [ __NR_creat ] (syscall_handler_t *) sys_creat, -+ [ __NR_link ] (syscall_handler_t *) sys_link, -+ [ __NR_unlink ] (syscall_handler_t *) sys_unlink, - [ __NR_execve ] = (syscall_handler_t *) sys_execve, - - /* declared differently in kern_util.h */ -- [ __NR_chdir ] = sys_chdir, -+ [ __NR_chdir ] (syscall_handler_t *) sys_chdir, - [ __NR_time ] = um_time, -- [ __NR_mknod ] = sys_mknod, -- [ __NR_chmod ] = sys_chmod, -- [ __NR_lchown ] = sys_lchown16, -- [ __NR_break ] = sys_ni_syscall, -- [ __NR_oldstat ] = sys_stat, -+ [ __NR_mknod ] (syscall_handler_t *) sys_mknod, -+ [ __NR_chmod ] (syscall_handler_t *) sys_chmod, -+ [ __NR_lchown ] (syscall_handler_t *) sys_lchown16, -+ [ __NR_break ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_oldstat ] (syscall_handler_t *) sys_stat, - [ __NR_lseek ] = (syscall_handler_t *) sys_lseek, -- [ __NR_getpid ] = sys_getpid, -+ [ __NR_getpid ] (syscall_handler_t *) sys_getpid, - [ __NR_mount ] = um_mount, -- [ __NR_umount ] = sys_oldumount, -- [ __NR_setuid ] = sys_setuid16, -- [ __NR_getuid ] = sys_getuid16, -+ [ __NR_umount ] (syscall_handler_t *) sys_oldumount, -+ [ __NR_setuid ] (syscall_handler_t *) sys_setuid16, -+ [ __NR_getuid ] (syscall_handler_t *) sys_getuid16, - [ __NR_stime ] = um_stime, -- [ __NR_ptrace ] = sys_ptrace, -- [ __NR_alarm ] = sys_alarm, -- [ __NR_oldfstat ] = sys_fstat, -- [ __NR_pause ] = sys_pause, -- [ __NR_utime ] = sys_utime, -- [ __NR_stty ] = sys_ni_syscall, -- [ __NR_gtty ] = sys_ni_syscall, -- [ __NR_access ] = sys_access, -- [ __NR_nice ] = sys_nice, -- [ __NR_ftime ] = sys_ni_syscall, -- [ __NR_sync ] = sys_sync, -- [ __NR_kill ] = sys_kill, -- [ __NR_rename ] = sys_rename, -- [ __NR_mkdir ] = sys_mkdir, -- [ __NR_rmdir ] = sys_rmdir, -+ [ __NR_ptrace ] (syscall_handler_t *) sys_ptrace, -+ [ __NR_alarm ] (syscall_handler_t *) sys_alarm, -+ [ __NR_oldfstat ] (syscall_handler_t *) sys_fstat, -+ [ __NR_pause ] (syscall_handler_t *) sys_pause, -+ [ __NR_utime ] (syscall_handler_t *) sys_utime, -+ [ __NR_stty ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_gtty ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_access ] (syscall_handler_t *) sys_access, -+ [ __NR_nice ] (syscall_handler_t *) sys_nice, -+ [ __NR_ftime ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_sync ] (syscall_handler_t *) sys_sync, -+ [ __NR_kill ] (syscall_handler_t *) sys_kill, -+ [ __NR_rename ] (syscall_handler_t *) sys_rename, -+ [ __NR_mkdir ] (syscall_handler_t *) sys_mkdir, -+ [ __NR_rmdir ] (syscall_handler_t *) sys_rmdir, - - /* Declared differently in asm/unistd.h */ - [ __NR_dup ] = (syscall_handler_t *) sys_dup, -- [ __NR_pipe ] = sys_pipe, -- [ __NR_times ] = sys_times, -- [ __NR_prof ] = sys_ni_syscall, -- [ __NR_brk ] = sys_brk, -- [ __NR_setgid ] = sys_setgid16, -- [ __NR_getgid ] = sys_getgid16, -- [ __NR_signal ] = sys_signal, -- [ __NR_geteuid ] = sys_geteuid16, -- [ __NR_getegid ] = sys_getegid16, -- [ __NR_acct ] = sys_acct, -- [ __NR_umount2 ] = sys_umount, -- [ __NR_lock ] = sys_ni_syscall, -- [ __NR_ioctl ] = sys_ioctl, -- [ __NR_fcntl ] = sys_fcntl, -- [ __NR_mpx ] = sys_ni_syscall, -- [ __NR_setpgid ] = sys_setpgid, -- [ __NR_ulimit ] = sys_ni_syscall, -- [ __NR_oldolduname ] = sys_olduname, -- [ __NR_umask ] = sys_umask, -- [ __NR_chroot ] = sys_chroot, -- [ __NR_ustat ] = sys_ustat, -- [ __NR_dup2 ] = sys_dup2, -- [ __NR_getppid ] = sys_getppid, -- [ __NR_getpgrp ] = sys_getpgrp, -+ [ __NR_pipe ] (syscall_handler_t *) sys_pipe, -+ [ __NR_times ] (syscall_handler_t *) sys_times, -+ [ __NR_prof ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_brk ] (syscall_handler_t *) sys_brk, -+ [ __NR_setgid ] (syscall_handler_t *) sys_setgid16, -+ [ __NR_getgid ] (syscall_handler_t *) sys_getgid16, -+ [ __NR_signal ] (syscall_handler_t *) sys_signal, -+ [ __NR_geteuid ] (syscall_handler_t *) sys_geteuid16, -+ [ __NR_getegid ] (syscall_handler_t *) sys_getegid16, -+ [ __NR_acct ] (syscall_handler_t *) sys_acct, -+ [ __NR_umount2 ] (syscall_handler_t *) sys_umount, -+ [ __NR_lock ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_ioctl ] (syscall_handler_t *) sys_ioctl, -+ [ __NR_fcntl ] (syscall_handler_t *) sys_fcntl, -+ [ __NR_mpx ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_setpgid ] (syscall_handler_t *) sys_setpgid, -+ [ __NR_ulimit ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_oldolduname ] (syscall_handler_t *) sys_olduname, -+ [ __NR_umask ] (syscall_handler_t *) sys_umask, -+ [ __NR_chroot ] (syscall_handler_t *) sys_chroot, -+ [ __NR_ustat ] (syscall_handler_t *) sys_ustat, -+ [ __NR_dup2 ] (syscall_handler_t *) sys_dup2, -+ [ __NR_getppid ] (syscall_handler_t *) sys_getppid, -+ [ __NR_getpgrp ] (syscall_handler_t *) sys_getpgrp, - [ __NR_setsid ] = (syscall_handler_t *) sys_setsid, -- [ __NR_sigaction ] = sys_sigaction, -- [ __NR_sgetmask ] = sys_sgetmask, -- [ __NR_ssetmask ] = sys_ssetmask, -- [ __NR_setreuid ] = sys_setreuid16, -- [ __NR_setregid ] = sys_setregid16, -- [ __NR_sigsuspend ] = sys_sigsuspend, -- [ __NR_sigpending ] = sys_sigpending, -- [ __NR_sethostname ] = sys_sethostname, -- [ __NR_setrlimit ] = sys_setrlimit, -- [ __NR_getrlimit ] = sys_old_getrlimit, -- [ __NR_getrusage ] = sys_getrusage, -- [ __NR_gettimeofday ] = sys_gettimeofday, -- [ __NR_settimeofday ] = sys_settimeofday, -- [ __NR_getgroups ] = sys_getgroups16, -- [ __NR_setgroups ] = sys_setgroups16, -- [ __NR_symlink ] = sys_symlink, -- [ __NR_oldlstat ] = sys_lstat, -- [ __NR_readlink ] = sys_readlink, -- [ __NR_uselib ] = sys_uselib, -+ [ __NR_sigaction ] (syscall_handler_t *) sys_sigaction, -+ [ __NR_sgetmask ] (syscall_handler_t *) sys_sgetmask, -+ [ __NR_ssetmask ] (syscall_handler_t *) sys_ssetmask, -+ [ __NR_setreuid ] (syscall_handler_t *) sys_setreuid16, -+ [ __NR_setregid ] (syscall_handler_t *) sys_setregid16, -+ [ __NR_sigsuspend ] (syscall_handler_t *) sys_sigsuspend, -+ [ __NR_sigpending ] (syscall_handler_t *) sys_sigpending, -+ [ __NR_sethostname ] (syscall_handler_t *) sys_sethostname, -+ [ __NR_setrlimit ] (syscall_handler_t *) sys_setrlimit, -+ [ __NR_getrlimit ] (syscall_handler_t *) sys_old_getrlimit, -+ [ __NR_getrusage ] (syscall_handler_t *) sys_getrusage, -+ [ __NR_gettimeofday ] (syscall_handler_t *) sys_gettimeofday, -+ [ __NR_settimeofday ] (syscall_handler_t *) sys_settimeofday, -+ [ __NR_getgroups ] (syscall_handler_t *) sys_getgroups16, -+ [ __NR_setgroups ] (syscall_handler_t *) sys_setgroups16, -+ [ __NR_symlink ] (syscall_handler_t *) sys_symlink, -+ [ __NR_oldlstat ] (syscall_handler_t *) sys_lstat, -+ [ __NR_readlink ] (syscall_handler_t *) sys_readlink, -+ [ __NR_uselib ] (syscall_handler_t *) sys_uselib, - [ __NR_swapon ] = (syscall_handler_t *) sys_swapon, -- [ __NR_reboot ] = sys_reboot, -+ [ __NR_reboot ] (syscall_handler_t *) sys_reboot, - [ __NR_readdir ] = old_readdir, -- [ __NR_munmap ] = sys_munmap, -- [ __NR_truncate ] = sys_truncate, -- [ __NR_ftruncate ] = sys_ftruncate, -- [ __NR_fchmod ] = sys_fchmod, -- [ __NR_fchown ] = sys_fchown16, -- [ __NR_getpriority ] = sys_getpriority, -- [ __NR_setpriority ] = sys_setpriority, -- [ __NR_profil ] = sys_ni_syscall, -- [ __NR_statfs ] = sys_statfs, -- [ __NR_fstatfs ] = sys_fstatfs, -- [ __NR_ioperm ] = sys_ni_syscall, -- [ __NR_socketcall ] = sys_socketcall, -- [ __NR_syslog ] = sys_syslog, -- [ __NR_setitimer ] = sys_setitimer, -- [ __NR_getitimer ] = sys_getitimer, -- [ __NR_stat ] = sys_newstat, -- [ __NR_lstat ] = sys_newlstat, -- [ __NR_fstat ] = sys_newfstat, -- [ __NR_olduname ] = sys_uname, -- [ __NR_iopl ] = sys_ni_syscall, -- [ __NR_vhangup ] = sys_vhangup, -- [ __NR_idle ] = sys_ni_syscall, -+ [ __NR_munmap ] (syscall_handler_t *) sys_munmap, -+ [ __NR_truncate ] (syscall_handler_t *) sys_truncate, -+ [ __NR_ftruncate ] (syscall_handler_t *) sys_ftruncate, -+ [ __NR_fchmod ] (syscall_handler_t *) sys_fchmod, -+ [ __NR_fchown ] (syscall_handler_t *) sys_fchown16, -+ [ __NR_getpriority ] (syscall_handler_t *) sys_getpriority, -+ [ __NR_setpriority ] (syscall_handler_t *) sys_setpriority, -+ [ __NR_profil ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_statfs ] (syscall_handler_t *) sys_statfs, -+ [ __NR_fstatfs ] (syscall_handler_t *) sys_fstatfs, -+ [ __NR_ioperm ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_socketcall ] (syscall_handler_t *) sys_socketcall, -+ [ __NR_syslog ] (syscall_handler_t *) sys_syslog, -+ [ __NR_setitimer ] (syscall_handler_t *) sys_setitimer, -+ [ __NR_getitimer ] (syscall_handler_t *) sys_getitimer, -+ [ __NR_stat ] (syscall_handler_t *) sys_newstat, -+ [ __NR_lstat ] (syscall_handler_t *) sys_newlstat, -+ [ __NR_fstat ] (syscall_handler_t *) sys_newfstat, -+ [ __NR_olduname ] (syscall_handler_t *) sys_uname, -+ [ __NR_iopl ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_vhangup ] (syscall_handler_t *) sys_vhangup, -+ [ __NR_idle ] (syscall_handler_t *) sys_ni_syscall, - [ __NR_wait4 ] = (syscall_handler_t *) sys_wait4, - [ __NR_swapoff ] = (syscall_handler_t *) sys_swapoff, -- [ __NR_sysinfo ] = sys_sysinfo, -- [ __NR_ipc ] = sys_ipc, -- [ __NR_fsync ] = sys_fsync, -- [ __NR_sigreturn ] = sys_sigreturn, -- [ __NR_clone ] = sys_clone, -- [ __NR_setdomainname ] = sys_setdomainname, -- [ __NR_uname ] = sys_newuname, -- [ __NR_adjtimex ] = sys_adjtimex, -- [ __NR_mprotect ] = sys_mprotect, -- [ __NR_sigprocmask ] = sys_sigprocmask, -- [ __NR_create_module ] = sys_ni_syscall, -- [ __NR_init_module ] = sys_init_module, -- [ __NR_delete_module ] = sys_delete_module, -- [ __NR_get_kernel_syms ] = sys_ni_syscall, -- [ __NR_quotactl ] = sys_quotactl, -- [ __NR_getpgid ] = sys_getpgid, -- [ __NR_fchdir ] = sys_fchdir, -- [ __NR_bdflush ] = sys_bdflush, -- [ __NR_sysfs ] = sys_sysfs, -- [ __NR_personality ] = sys_personality, -- [ __NR_afs_syscall ] = sys_ni_syscall, -- [ __NR_setfsuid ] = sys_setfsuid16, -- [ __NR_setfsgid ] = sys_setfsgid16, -- [ __NR__llseek ] = sys_llseek, -- [ __NR_getdents ] = sys_getdents, -+ [ __NR_sysinfo ] (syscall_handler_t *) sys_sysinfo, -+ [ __NR_ipc ] (syscall_handler_t *) sys_ipc, -+ [ __NR_fsync ] (syscall_handler_t *) sys_fsync, -+ [ __NR_sigreturn ] (syscall_handler_t *) sys_sigreturn, -+ [ __NR_clone ] (syscall_handler_t *) sys_clone, -+ [ __NR_setdomainname ] (syscall_handler_t *) sys_setdomainname, -+ [ __NR_uname ] (syscall_handler_t *) sys_newuname, -+ [ __NR_adjtimex ] (syscall_handler_t *) sys_adjtimex, -+ [ __NR_mprotect ] (syscall_handler_t *) sys_mprotect, -+ [ __NR_sigprocmask ] (syscall_handler_t *) sys_sigprocmask, -+ [ __NR_create_module ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_init_module ] (syscall_handler_t *) sys_init_module, -+ [ __NR_delete_module ] (syscall_handler_t *) sys_delete_module, -+ [ __NR_get_kernel_syms ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_quotactl ] (syscall_handler_t *) sys_quotactl, -+ [ __NR_getpgid ] (syscall_handler_t *) sys_getpgid, -+ [ __NR_fchdir ] (syscall_handler_t *) sys_fchdir, -+ [ __NR_bdflush ] (syscall_handler_t *) sys_bdflush, -+ [ __NR_sysfs ] (syscall_handler_t *) sys_sysfs, -+ [ __NR_personality ] (syscall_handler_t *) sys_personality, -+ [ __NR_afs_syscall ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_setfsuid ] (syscall_handler_t *) sys_setfsuid16, -+ [ __NR_setfsgid ] (syscall_handler_t *) sys_setfsgid16, -+ [ __NR__llseek ] (syscall_handler_t *) sys_llseek, -+ [ __NR_getdents ] (syscall_handler_t *) sys_getdents, - [ __NR__newselect ] = (syscall_handler_t *) sys_select, -- [ __NR_flock ] = sys_flock, -- [ __NR_msync ] = sys_msync, -- [ __NR_readv ] = sys_readv, -- [ __NR_writev ] = sys_writev, -- [ __NR_getsid ] = sys_getsid, -- [ __NR_fdatasync ] = sys_fdatasync, -+ [ __NR_flock ] (syscall_handler_t *) sys_flock, -+ [ __NR_msync ] (syscall_handler_t *) sys_msync, -+ [ __NR_readv ] (syscall_handler_t *) sys_readv, -+ [ __NR_writev ] (syscall_handler_t *) sys_writev, -+ [ __NR_getsid ] (syscall_handler_t *) sys_getsid, -+ [ __NR_fdatasync ] (syscall_handler_t *) sys_fdatasync, - [ __NR__sysctl ] = (syscall_handler_t *) sys_sysctl, -- [ __NR_mlock ] = sys_mlock, -- [ __NR_munlock ] = sys_munlock, -- [ __NR_mlockall ] = sys_mlockall, -- [ __NR_munlockall ] = sys_munlockall, -- [ __NR_sched_setparam ] = sys_sched_setparam, -- [ __NR_sched_getparam ] = sys_sched_getparam, -- [ __NR_sched_setscheduler ] = sys_sched_setscheduler, -- [ __NR_sched_getscheduler ] = sys_sched_getscheduler, -+ [ __NR_mlock ] (syscall_handler_t *) sys_mlock, -+ [ __NR_munlock ] (syscall_handler_t *) sys_munlock, -+ [ __NR_mlockall ] (syscall_handler_t *) sys_mlockall, -+ [ __NR_munlockall ] (syscall_handler_t *) sys_munlockall, -+ [ __NR_sched_setparam ] (syscall_handler_t *) sys_sched_setparam, -+ [ __NR_sched_getparam ] (syscall_handler_t *) sys_sched_getparam, -+ [ __NR_sched_setscheduler ] (syscall_handler_t *) sys_sched_setscheduler, -+ [ __NR_sched_getscheduler ] (syscall_handler_t *) sys_sched_getscheduler, - [ __NR_sched_yield ] = (syscall_handler_t *) yield, -- [ __NR_sched_get_priority_max ] = sys_sched_get_priority_max, -- [ __NR_sched_get_priority_min ] = sys_sched_get_priority_min, -- [ __NR_sched_rr_get_interval ] = sys_sched_rr_get_interval, -- [ __NR_nanosleep ] = sys_nanosleep, -- [ __NR_mremap ] = sys_mremap, -- [ __NR_setresuid ] = sys_setresuid16, -- [ __NR_getresuid ] = sys_getresuid16, -- [ __NR_vm86 ] = sys_ni_syscall, -- [ __NR_query_module ] = sys_ni_syscall, -- [ __NR_poll ] = sys_poll, -- [ __NR_nfsservctl ] = NFSSERVCTL, -- [ __NR_setresgid ] = sys_setresgid16, -- [ __NR_getresgid ] = sys_getresgid16, -- [ __NR_prctl ] = sys_prctl, -- [ __NR_rt_sigreturn ] = sys_rt_sigreturn, -- [ __NR_rt_sigaction ] = sys_rt_sigaction, -- [ __NR_rt_sigprocmask ] = sys_rt_sigprocmask, -- [ __NR_rt_sigpending ] = sys_rt_sigpending, -- [ __NR_rt_sigtimedwait ] = sys_rt_sigtimedwait, -- [ __NR_rt_sigqueueinfo ] = sys_rt_sigqueueinfo, -- [ __NR_rt_sigsuspend ] = sys_rt_sigsuspend, -- [ __NR_pread64 ] = sys_pread64, -- [ __NR_pwrite64 ] = sys_pwrite64, -- [ __NR_chown ] = sys_chown16, -- [ __NR_getcwd ] = sys_getcwd, -- [ __NR_capget ] = sys_capget, -- [ __NR_capset ] = sys_capset, -- [ __NR_sigaltstack ] = sys_sigaltstack, -- [ __NR_sendfile ] = sys_sendfile, -- [ __NR_getpmsg ] = sys_ni_syscall, -- [ __NR_putpmsg ] = sys_ni_syscall, -- [ __NR_vfork ] = sys_vfork, -- [ __NR_ugetrlimit ] = sys_getrlimit, -- [ __NR_mmap2 ] = sys_mmap2, -- [ __NR_truncate64 ] = sys_truncate64, -- [ __NR_ftruncate64 ] = sys_ftruncate64, -- [ __NR_stat64 ] = sys_stat64, -- [ __NR_lstat64 ] = sys_lstat64, -- [ __NR_fstat64 ] = sys_fstat64, -- [ __NR_fcntl64 ] = sys_fcntl64, -- [ __NR_getdents64 ] = sys_getdents64, -- [ __NR_gettid ] = sys_gettid, -- [ __NR_readahead ] = sys_readahead, -- [ __NR_setxattr ] = sys_ni_syscall, -- [ __NR_lsetxattr ] = sys_ni_syscall, -- [ __NR_fsetxattr ] = sys_ni_syscall, -- [ __NR_getxattr ] = sys_ni_syscall, -- [ __NR_lgetxattr ] = sys_ni_syscall, -- [ __NR_fgetxattr ] = sys_ni_syscall, -- [ __NR_listxattr ] = sys_ni_syscall, -- [ __NR_llistxattr ] = sys_ni_syscall, -- [ __NR_flistxattr ] = sys_ni_syscall, -- [ __NR_removexattr ] = sys_ni_syscall, -- [ __NR_lremovexattr ] = sys_ni_syscall, -- [ __NR_fremovexattr ] = sys_ni_syscall, -- [ __NR_tkill ] = sys_tkill, -- [ __NR_sendfile64 ] = sys_sendfile64, -- [ __NR_futex ] = sys_futex, -- [ __NR_sched_setaffinity ] = sys_sched_setaffinity, -- [ __NR_sched_getaffinity ] = sys_sched_getaffinity, -- [ __NR_io_setup ] = sys_io_setup, -- [ __NR_io_destroy ] = sys_io_destroy, -- [ __NR_io_getevents ] = sys_io_getevents, -- [ __NR_io_submit ] = sys_io_submit, -- [ __NR_io_cancel ] = sys_io_cancel, -- [ __NR_exit_group ] = sys_exit_group, -- [ __NR_lookup_dcookie ] = sys_lookup_dcookie, -- [ __NR_epoll_create ] = sys_epoll_create, -- [ __NR_epoll_ctl ] = sys_epoll_ctl, -- [ __NR_epoll_wait ] = sys_epoll_wait, -- [ __NR_remap_file_pages ] = sys_remap_file_pages, -- [ __NR_set_tid_address ] = sys_set_tid_address, -+ [ __NR_sched_get_priority_max ] (syscall_handler_t *) sys_sched_get_priority_max, -+ [ __NR_sched_get_priority_min ] (syscall_handler_t *) sys_sched_get_priority_min, -+ [ __NR_sched_rr_get_interval ] (syscall_handler_t *) sys_sched_rr_get_interval, -+ [ __NR_nanosleep ] (syscall_handler_t *) sys_nanosleep, -+ [ __NR_mremap ] (syscall_handler_t *) sys_mremap, -+ [ __NR_setresuid ] (syscall_handler_t *) sys_setresuid16, -+ [ __NR_getresuid ] (syscall_handler_t *) sys_getresuid16, -+ [ __NR_vm86 ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_query_module ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_poll ] (syscall_handler_t *) sys_poll, -+ [ __NR_nfsservctl ] = (syscall_handler_t *) NFSSERVCTL, -+ [ __NR_setresgid ] (syscall_handler_t *) sys_setresgid16, -+ [ __NR_getresgid ] (syscall_handler_t *) sys_getresgid16, -+ [ __NR_prctl ] (syscall_handler_t *) sys_prctl, -+ [ __NR_rt_sigreturn ] (syscall_handler_t *) sys_rt_sigreturn, -+ [ __NR_rt_sigaction ] (syscall_handler_t *) sys_rt_sigaction, -+ [ __NR_rt_sigprocmask ] (syscall_handler_t *) sys_rt_sigprocmask, -+ [ __NR_rt_sigpending ] (syscall_handler_t *) sys_rt_sigpending, -+ [ __NR_rt_sigtimedwait ] (syscall_handler_t *) sys_rt_sigtimedwait, -+ [ __NR_rt_sigqueueinfo ] (syscall_handler_t *) sys_rt_sigqueueinfo, -+ [ __NR_rt_sigsuspend ] (syscall_handler_t *) sys_rt_sigsuspend, -+ [ __NR_pread64 ] (syscall_handler_t *) sys_pread64, -+ [ __NR_pwrite64 ] (syscall_handler_t *) sys_pwrite64, -+ [ __NR_chown ] (syscall_handler_t *) sys_chown16, -+ [ __NR_getcwd ] (syscall_handler_t *) sys_getcwd, -+ [ __NR_capget ] (syscall_handler_t *) sys_capget, -+ [ __NR_capset ] (syscall_handler_t *) sys_capset, -+ [ __NR_sigaltstack ] (syscall_handler_t *) sys_sigaltstack, -+ [ __NR_sendfile ] (syscall_handler_t *) sys_sendfile, -+ [ __NR_getpmsg ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_putpmsg ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_vfork ] (syscall_handler_t *) sys_vfork, -+ [ __NR_ugetrlimit ] (syscall_handler_t *) sys_getrlimit, -+ [ __NR_mmap2 ] (syscall_handler_t *) sys_mmap2, -+ [ __NR_truncate64 ] (syscall_handler_t *) sys_truncate64, -+ [ __NR_ftruncate64 ] (syscall_handler_t *) sys_ftruncate64, -+ [ __NR_stat64 ] (syscall_handler_t *) sys_stat64, -+ [ __NR_lstat64 ] (syscall_handler_t *) sys_lstat64, -+ [ __NR_fstat64 ] (syscall_handler_t *) sys_fstat64, -+ [ __NR_getdents64 ] (syscall_handler_t *) sys_getdents64, -+ [ __NR_fcntl64 ] (syscall_handler_t *) sys_fcntl64, -+ [ 223 ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_gettid ] (syscall_handler_t *) sys_gettid, -+ [ __NR_readahead ] (syscall_handler_t *) sys_readahead, -+ [ __NR_setxattr ] (syscall_handler_t *) sys_setxattr, -+ [ __NR_lsetxattr ] (syscall_handler_t *) sys_lsetxattr, -+ [ __NR_fsetxattr ] (syscall_handler_t *) sys_fsetxattr, -+ [ __NR_getxattr ] (syscall_handler_t *) sys_getxattr, -+ [ __NR_lgetxattr ] (syscall_handler_t *) sys_lgetxattr, -+ [ __NR_fgetxattr ] (syscall_handler_t *) sys_fgetxattr, -+ [ __NR_listxattr ] (syscall_handler_t *) sys_listxattr, -+ [ __NR_llistxattr ] (syscall_handler_t *) sys_llistxattr, -+ [ __NR_flistxattr ] (syscall_handler_t *) sys_flistxattr, -+ [ __NR_removexattr ] (syscall_handler_t *) sys_removexattr, -+ [ __NR_lremovexattr ] (syscall_handler_t *) sys_lremovexattr, -+ [ __NR_fremovexattr ] (syscall_handler_t *) sys_fremovexattr, -+ [ __NR_tkill ] (syscall_handler_t *) sys_tkill, -+ [ __NR_sendfile64 ] (syscall_handler_t *) sys_sendfile64, -+ [ __NR_futex ] (syscall_handler_t *) sys_futex, -+ [ __NR_sched_setaffinity ] (syscall_handler_t *) sys_sched_setaffinity, -+ [ __NR_sched_getaffinity ] (syscall_handler_t *) sys_sched_getaffinity, -+ [ __NR_set_thread_area ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_get_thread_area ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_io_setup ] (syscall_handler_t *) sys_io_setup, -+ [ __NR_io_destroy ] (syscall_handler_t *) sys_io_destroy, -+ [ __NR_io_getevents ] (syscall_handler_t *) sys_io_getevents, -+ [ __NR_io_submit ] (syscall_handler_t *) sys_io_submit, -+ [ __NR_io_cancel ] (syscall_handler_t *) sys_io_cancel, -+ [ __NR_fadvise64 ] (syscall_handler_t *) sys_fadvise64, -+ [ 251 ] (syscall_handler_t *) sys_ni_syscall, -+ [ __NR_exit_group ] (syscall_handler_t *) sys_exit_group, -+ [ __NR_lookup_dcookie ] (syscall_handler_t *) sys_lookup_dcookie, -+ [ __NR_epoll_create ] (syscall_handler_t *) sys_epoll_create, -+ [ __NR_epoll_ctl ] (syscall_handler_t *) sys_epoll_ctl, -+ [ __NR_epoll_wait ] (syscall_handler_t *) sys_epoll_wait, -+ [ __NR_remap_file_pages ] (syscall_handler_t *) sys_remap_file_pages, -+ [ __NR_set_tid_address ] (syscall_handler_t *) sys_set_tid_address, -+ [ __NR_timer_create ] (syscall_handler_t *) sys_timer_create, -+ [ __NR_timer_settime ] (syscall_handler_t *) sys_timer_settime, -+ [ __NR_timer_gettime ] (syscall_handler_t *) sys_timer_gettime, -+ [ __NR_timer_getoverrun ] (syscall_handler_t *) sys_timer_getoverrun, -+ [ __NR_timer_delete ] (syscall_handler_t *) sys_timer_delete, -+ [ __NR_clock_settime ] (syscall_handler_t *) sys_clock_settime, -+ [ __NR_clock_gettime ] (syscall_handler_t *) sys_clock_gettime, -+ [ __NR_clock_getres ] (syscall_handler_t *) sys_clock_getres, -+ [ __NR_clock_nanosleep ] (syscall_handler_t *) sys_clock_nanosleep, -+ [ __NR_statfs64 ] (syscall_handler_t *) sys_statfs64, -+ [ __NR_fstatfs64 ] (syscall_handler_t *) sys_fstatfs64, -+ [ __NR_tgkill ] (syscall_handler_t *) sys_tgkill, -+ [ __NR_utimes ] (syscall_handler_t *) sys_utimes, -+ [ __NR_fadvise64_64 ] (syscall_handler_t *) sys_fadvise64_64, -+ [ __NR_vserver ] (syscall_handler_t *) sys_ni_syscall, ++int hostfs_d_delete(struct dentry *dentry) ++{ ++ return(1); ++} ++ ++struct dentry_operations hostfs_dentry_ops = { ++ .d_delete = hostfs_d_delete, ++}; ++ ++/* Changed in hostfs_args before the kernel starts running */ ++static char *root_ino = "/"; ++static int append = 0; ++ ++#define HOSTFS_SUPER_MAGIC 0x00c0ffee ++ ++static struct inode_operations hostfs_iops; ++static struct inode_operations hostfs_dir_iops; ++static struct address_space_operations hostfs_link_aops; ++ ++#ifndef MODULE ++static int __init hostfs_args(char *options, int *add) ++{ ++ char *ptr; ++ ++ ptr = strchr(options, ','); ++ if(ptr != NULL) ++ *ptr++ = '\0'; ++ if(*options != '\0') ++ root_ino = options; ++ ++ options = ptr; ++ while(options){ ++ ptr = strchr(options, ','); ++ if(ptr != NULL) ++ *ptr++ = '\0'; ++ if(*options != '\0'){ ++ if(!strcmp(options, "append")) ++ append = 1; ++ else printf("hostfs_args - unsupported option - %s\n", ++ options); ++ } ++ options = ptr; ++ } ++ return(0); ++} ++ ++__uml_setup("hostfs=", hostfs_args, ++"hostfs=,,...\n" ++" This is used to set hostfs parameters. The root directory argument\n" ++" is used to confine all hostfs mounts to within the specified directory\n" ++" tree on the host. If this isn't specified, then a user inside UML can\n" ++" mount anything on the host that's accessible to the user that's running\n" ++" it.\n" ++" The only flag currently supported is 'append', which specifies that all\n" ++" files opened by hostfs will be opened in append mode.\n\n" ++); ++#endif ++ ++static char *dentry_name(struct dentry *dentry, int extra) ++{ ++ struct dentry *parent; ++ char *root, *name; ++ int len; ++ ++ len = 0; ++ parent = dentry; ++ while(parent->d_parent != parent){ ++ len += parent->d_name.len + 1; ++ parent = parent->d_parent; ++ } ++ ++ root = HOSTFS_I(parent->d_inode)->host_filename; ++ len += strlen(root); ++ name = kmalloc(len + extra + 1, GFP_KERNEL); ++ if(name == NULL) return(NULL); ++ ++ name[len] = '\0'; ++ parent = dentry; ++ while(parent->d_parent != parent){ ++ len -= parent->d_name.len + 1; ++ name[len] = '/'; ++ strncpy(&name[len + 1], parent->d_name.name, ++ parent->d_name.len); ++ parent = parent->d_parent; ++ } ++ strncpy(name, root, strlen(root)); ++ return(name); ++} ++ ++static char *inode_name(struct inode *ino, int extra) ++{ ++ struct dentry *dentry; ++ ++ dentry = list_entry(ino->i_dentry.next, struct dentry, d_alias); ++ return(dentry_name(dentry, extra)); ++} ++ ++static int read_name(struct inode *ino, char *name) ++{ ++ /* The non-int inode fields are copied into ints by stat_file and ++ * then copied into the inode because passing the actual pointers ++ * in and having them treated as int * breaks on big-endian machines ++ */ ++ int err; ++ int i_mode, i_nlink, i_blksize; ++ unsigned long long i_size; ++ unsigned long long i_ino; ++ unsigned long long i_blocks; ++ ++ err = stat_file(name, &i_ino, &i_mode, &i_nlink, &ino->i_uid, ++ &ino->i_gid, &i_size, &ino->i_atime, &ino->i_mtime, ++ &ino->i_ctime, &i_blksize, &i_blocks); ++ if(err) ++ return(err); ++ ++ ino->i_ino = i_ino; ++ ino->i_mode = i_mode; ++ ino->i_nlink = i_nlink; ++ ino->i_size = i_size; ++ ino->i_blksize = i_blksize; ++ ino->i_blocks = i_blocks; ++ if((ino->i_sb->s_dev == ROOT_DEV) && (ino->i_uid == getuid())) ++ ino->i_uid = 0; ++ return(0); ++} ++ ++static char *follow_link(char *link) ++{ ++ int len, n; ++ char *name, *resolved, *end; ++ ++ len = 64; ++ while(1){ ++ n = -ENOMEM; ++ name = kmalloc(len, GFP_KERNEL); ++ if(name == NULL) ++ goto out; ++ ++ n = do_readlink(link, name, len); ++ if(n < len) ++ break; ++ len *= 2; ++ kfree(name); ++ } ++ if(n < 0) ++ goto out_free; ++ ++ if(*name == '/') ++ return(name); ++ ++ end = strrchr(link, '/'); ++ if(end == NULL) ++ return(name); ++ ++ *(end + 1) = '\0'; ++ len = strlen(link) + strlen(name) + 1; ++ ++ resolved = kmalloc(len, GFP_KERNEL); ++ if(resolved == NULL){ ++ n = -ENOMEM; ++ goto out_free; ++ } ++ ++ sprintf(resolved, "%s%s", link, name); ++ kfree(name); ++ kfree(link); ++ return(resolved); ++ ++ out_free: ++ kfree(name); ++ out: ++ return(ERR_PTR(n)); ++} ++ ++static int read_inode(struct inode *ino) ++{ ++ char *name; ++ int err = 0; ++ ++ /* Unfortunately, we are called from iget() when we don't have a dentry ++ * allocated yet. ++ */ ++ if(list_empty(&ino->i_dentry)) ++ goto out; ++ ++ err = -ENOMEM; ++ name = inode_name(ino, 0); ++ if(name == NULL) ++ goto out; ++ ++ if(file_type(name, NULL) == OS_TYPE_SYMLINK){ ++ name = follow_link(name); ++ if(IS_ERR(name)){ ++ err = PTR_ERR(name); ++ goto out; ++ } ++ } ++ ++ err = read_name(ino, name); ++ kfree(name); ++ out: ++ return(err); ++} ++ ++int hostfs_statfs(struct super_block *sb, struct kstatfs *sf) ++{ ++ /* do_statfs uses struct statfs64 internally, but the linux kernel ++ * struct statfs still has 32-bit versions for most of these fields, ++ * so we convert them here ++ */ ++ int err; ++ long long f_blocks; ++ long long f_bfree; ++ long long f_bavail; ++ long long f_files; ++ long long f_ffree; ++ ++ err = do_statfs(HOSTFS_I(sb->s_root->d_inode)->host_filename, ++ &sf->f_bsize, &f_blocks, &f_bfree, &f_bavail, &f_files, ++ &f_ffree, &sf->f_fsid, sizeof(sf->f_fsid), ++ &sf->f_namelen, sf->f_spare); ++ if(err) return(err); ++ sf->f_blocks = f_blocks; ++ sf->f_bfree = f_bfree; ++ sf->f_bavail = f_bavail; ++ sf->f_files = f_files; ++ sf->f_ffree = f_ffree; ++ sf->f_type = HOSTFS_SUPER_MAGIC; ++ return(0); ++} ++ ++static struct inode *hostfs_alloc_inode(struct super_block *sb) ++{ ++ struct hostfs_inode_info *hi; ++ ++ hi = kmalloc(sizeof(*hi), GFP_KERNEL); ++ if(hi == NULL) ++ return(NULL); ++ ++ *hi = ((struct hostfs_inode_info) { .host_filename = NULL, ++ .fd = -1, ++ .mode = 0 }); ++ inode_init_once(&hi->vfs_inode); ++ return(&hi->vfs_inode); ++} ++ ++static void hostfs_delete_inode(struct inode *inode) ++{ ++ if(HOSTFS_I(inode)->fd != -1) { ++ close_file(&HOSTFS_I(inode)->fd); ++ printk("Closing host fd in .delete_inode\n"); ++ HOSTFS_I(inode)->fd = -1; ++ } ++ clear_inode(inode); ++} ++ ++static void hostfs_destroy_inode(struct inode *inode) ++{ ++ if(HOSTFS_I(inode)->host_filename) ++ kfree(HOSTFS_I(inode)->host_filename); ++ ++ if(HOSTFS_I(inode)->fd != -1) { ++ close_file(&HOSTFS_I(inode)->fd); ++ printk("Closing host fd in .destroy_inode\n"); ++ } ++ ++ kfree(HOSTFS_I(inode)); ++} ++ ++static void hostfs_read_inode(struct inode *inode) ++{ ++ read_inode(inode); ++} ++ ++static struct super_operations hostfs_sbops = { ++ .alloc_inode = hostfs_alloc_inode, ++ .drop_inode = generic_delete_inode, ++ .delete_inode = hostfs_delete_inode, ++ .destroy_inode = hostfs_destroy_inode, ++ .read_inode = hostfs_read_inode, ++ .statfs = hostfs_statfs, ++}; ++ ++int hostfs_readdir(struct file *file, void *ent, filldir_t filldir) ++{ ++ void *dir; ++ char *name; ++ unsigned long long next, ino; ++ int error, len; ++ ++ name = dentry_name(file->f_dentry, 0); ++ if(name == NULL) return(-ENOMEM); ++ dir = open_dir(name, &error); ++ kfree(name); ++ if(dir == NULL) return(-error); ++ next = file->f_pos; ++ while((name = read_dir(dir, &next, &ino, &len)) != NULL){ ++ error = (*filldir)(ent, name, len, file->f_pos, ++ ino, DT_UNKNOWN); ++ if(error) break; ++ file->f_pos = next; ++ } ++ close_dir(dir); ++ return(0); ++} ++ ++int hostfs_file_open(struct inode *ino, struct file *file) ++{ ++ char *name; ++ int mode = 0, r = 0, w = 0, fd; ++ ++ mode = file->f_mode & (FMODE_READ | FMODE_WRITE); ++ if((mode & HOSTFS_I(ino)->mode) == mode) ++ return(0); ++ ++ /* The file may already have been opened, but with the wrong access, ++ * so this resets things and reopens the file with the new access. ++ */ ++ if(HOSTFS_I(ino)->fd != -1){ ++ close_file(&HOSTFS_I(ino)->fd); ++ HOSTFS_I(ino)->fd = -1; ++ } ++ ++ HOSTFS_I(ino)->mode |= mode; ++ if(HOSTFS_I(ino)->mode & FMODE_READ) ++ r = 1; ++ if(HOSTFS_I(ino)->mode & FMODE_WRITE) ++ w = 1; ++ if(w) ++ r = 1; ++ ++ name = dentry_name(file->f_dentry, 0); ++ if(name == NULL) ++ return(-ENOMEM); ++ ++ fd = open_file(name, r, w, append); ++ kfree(name); ++ if(fd < 0) return(fd); ++ FILE_HOSTFS_I(file)->fd = fd; ++ ++ return(0); ++} ++ ++int hostfs_fsync(struct file *file, struct dentry *dentry, int datasync) ++{ ++ return(0); ++} ++ ++static struct file_operations hostfs_file_fops = { ++ .llseek = generic_file_llseek, ++ .read = generic_file_read, ++ .write = generic_file_write, ++ .mmap = generic_file_mmap, ++ .open = hostfs_file_open, ++ .release = NULL, ++ .fsync = hostfs_fsync, ++}; ++ ++static struct file_operations hostfs_dir_fops = { ++ .readdir = hostfs_readdir, ++ .read = generic_read_dir, ++}; ++ ++int hostfs_writepage(struct page *page, struct writeback_control *wbc) ++{ ++ struct address_space *mapping = page->mapping; ++ struct inode *inode = mapping->host; ++ char *buffer; ++ unsigned long long base; ++ int count = PAGE_CACHE_SIZE; ++ int end_index = inode->i_size >> PAGE_CACHE_SHIFT; ++ int err; ++ ++ if (page->index >= end_index) ++ count = inode->i_size & (PAGE_CACHE_SIZE-1); ++ ++ buffer = kmap(page); ++ base = ((unsigned long long) page->index) << PAGE_CACHE_SHIFT; ++ ++ err = write_file(HOSTFS_I(inode)->fd, &base, buffer, count); ++ if(err != count){ ++ ClearPageUptodate(page); ++ goto out; ++ } ++ ++ if (base > inode->i_size) ++ inode->i_size = base; ++ ++ if (PageError(page)) ++ ClearPageError(page); ++ err = 0; ++ ++ out: ++ kunmap(page); ++ ++ unlock_page(page); ++ return err; ++} ++ ++int hostfs_readpage(struct file *file, struct page *page) ++{ ++ char *buffer; ++ long long start; ++ int err = 0; ++ ++ start = (long long) page->index << PAGE_CACHE_SHIFT; ++ buffer = kmap(page); ++ err = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer, ++ PAGE_CACHE_SIZE); ++ if(err < 0) goto out; ++ ++ memset(&buffer[err], 0, PAGE_CACHE_SIZE - err); ++ ++ flush_dcache_page(page); ++ SetPageUptodate(page); ++ if (PageError(page)) ClearPageError(page); ++ err = 0; ++ out: ++ kunmap(page); ++ unlock_page(page); ++ return(err); ++} ++ ++int hostfs_prepare_write(struct file *file, struct page *page, ++ unsigned int from, unsigned int to) ++{ ++ char *buffer; ++ long long start, tmp; ++ int err; ++ ++ start = (long long) page->index << PAGE_CACHE_SHIFT; ++ buffer = kmap(page); ++ if(from != 0){ ++ tmp = start; ++ err = read_file(FILE_HOSTFS_I(file)->fd, &tmp, buffer, ++ from); ++ if(err < 0) goto out; ++ } ++ if(to != PAGE_CACHE_SIZE){ ++ start += to; ++ err = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer + to, ++ PAGE_CACHE_SIZE - to); ++ if(err < 0) goto out; ++ } ++ err = 0; ++ out: ++ kunmap(page); ++ return(err); ++} ++ ++int hostfs_commit_write(struct file *file, struct page *page, unsigned from, ++ unsigned to) ++{ ++ struct address_space *mapping = page->mapping; ++ struct inode *inode = mapping->host; ++ char *buffer; ++ long long start; ++ int err = 0; ++ ++ start = (long long) (page->index << PAGE_CACHE_SHIFT) + from; ++ buffer = kmap(page); ++ err = write_file(FILE_HOSTFS_I(file)->fd, &start, buffer + from, ++ to - from); ++ if(err > 0) err = 0; ++ if(!err && (start > inode->i_size)) ++ inode->i_size = start; ++ ++ kunmap(page); ++ return(err); ++} ++ ++static struct address_space_operations hostfs_aops = { ++ .writepage = hostfs_writepage, ++ .readpage = hostfs_readpage, ++/* .set_page_dirty = __set_page_dirty_nobuffers, */ ++ .prepare_write = hostfs_prepare_write, ++ .commit_write = hostfs_commit_write ++}; ++ ++static int init_inode(struct inode *inode, struct dentry *dentry) ++{ ++ char *name; ++ int type, err = -ENOMEM, rdev; ++ ++ if(dentry){ ++ name = dentry_name(dentry, 0); ++ if(name == NULL) ++ goto out; ++ type = file_type(name, &rdev); ++ kfree(name); ++ } ++ else type = OS_TYPE_DIR; ++ ++ err = 0; ++ if(type == OS_TYPE_SYMLINK) ++ inode->i_op = &page_symlink_inode_operations; ++ else if(type == OS_TYPE_DIR) ++ inode->i_op = &hostfs_dir_iops; ++ else inode->i_op = &hostfs_iops; ++ ++ if(type == OS_TYPE_DIR) inode->i_fop = &hostfs_dir_fops; ++ else inode->i_fop = &hostfs_file_fops; ++ ++ if(type == OS_TYPE_SYMLINK) ++ inode->i_mapping->a_ops = &hostfs_link_aops; ++ else inode->i_mapping->a_ops = &hostfs_aops; ++ ++ switch (type) { ++ case OS_TYPE_CHARDEV: ++ init_special_inode(inode, S_IFCHR, rdev); ++ break; ++ case OS_TYPE_BLOCKDEV: ++ init_special_inode(inode, S_IFBLK, rdev); ++ break; ++ case OS_TYPE_FIFO: ++ init_special_inode(inode, S_IFIFO, 0); ++ break; ++ case OS_TYPE_SOCK: ++ init_special_inode(inode, S_IFSOCK, 0); ++ break; ++ } ++ out: ++ return(err); ++} ++ ++int hostfs_create(struct inode *dir, struct dentry *dentry, int mode, ++ struct nameidata *nd) ++{ ++ struct inode *inode; ++ char *name; ++ int error, fd; ++ ++ error = -ENOMEM; ++ inode = iget(dir->i_sb, 0); ++ if(inode == NULL) goto out; ++ ++ error = init_inode(inode, dentry); ++ if(error) ++ goto out_put; ++ ++ error = -ENOMEM; ++ name = dentry_name(dentry, 0); ++ if(name == NULL) ++ goto out_put; ++ ++ fd = file_create(name, ++ mode & S_IRUSR, mode & S_IWUSR, mode & S_IXUSR, ++ mode & S_IRGRP, mode & S_IWGRP, mode & S_IXGRP, ++ mode & S_IROTH, mode & S_IWOTH, mode & S_IXOTH); ++ if(fd < 0) ++ error = fd; ++ else error = read_name(inode, name); ++ ++ kfree(name); ++ if(error) ++ goto out_put; ++ ++ HOSTFS_I(inode)->fd = fd; ++ HOSTFS_I(inode)->mode = FMODE_READ | FMODE_WRITE; ++ d_instantiate(dentry, inode); ++ return(0); ++ ++ out_put: ++ iput(inode); ++ out: ++ return(error); ++} ++ ++struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry, ++ struct nameidata *nd) ++{ ++ struct inode *inode; ++ char *name; ++ int err; ++ ++ err = -ENOMEM; ++ inode = iget(ino->i_sb, 0); ++ if(inode == NULL) ++ goto out; ++ ++ err = init_inode(inode, dentry); ++ if(err) ++ goto out_put; ++ ++ err = -ENOMEM; ++ name = dentry_name(dentry, 0); ++ if(name == NULL) ++ goto out_put; ++ ++ err = read_name(inode, name); ++ kfree(name); ++ if(err == -ENOENT){ ++ iput(inode); ++ inode = NULL; ++ } ++ else if(err) ++ goto out_put; ++ ++ d_add(dentry, inode); ++ dentry->d_op = &hostfs_dentry_ops; ++ return(NULL); ++ ++ out_put: ++ iput(inode); ++ out: ++ return(ERR_PTR(err)); ++} ++ ++static char *inode_dentry_name(struct inode *ino, struct dentry *dentry) ++{ ++ char *file; ++ int len; ++ ++ file = inode_name(ino, dentry->d_name.len + 1); ++ if(file == NULL) return(NULL); ++ strcat(file, "/"); ++ len = strlen(file); ++ strncat(file, dentry->d_name.name, dentry->d_name.len); ++ file[len + dentry->d_name.len] = '\0'; ++ return(file); ++} ++ ++int hostfs_link(struct dentry *to, struct inode *ino, struct dentry *from) ++{ ++ char *from_name, *to_name; ++ int err; ++ ++ if((from_name = inode_dentry_name(ino, from)) == NULL) ++ return(-ENOMEM); ++ to_name = dentry_name(to, 0); ++ if(to_name == NULL){ ++ kfree(from_name); ++ return(-ENOMEM); ++ } ++ err = link_file(to_name, from_name); ++ kfree(from_name); ++ kfree(to_name); ++ return(err); ++} ++ ++int hostfs_unlink(struct inode *ino, struct dentry *dentry) ++{ ++ char *file; ++ int err; ++ ++ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); ++ if(append) ++ return(-EPERM); ++ ++ err = unlink_file(file); ++ kfree(file); ++ return(err); ++} ++ ++int hostfs_symlink(struct inode *ino, struct dentry *dentry, const char *to) ++{ ++ char *file; ++ int err; ++ ++ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); ++ err = make_symlink(file, to); ++ kfree(file); ++ return(err); ++} ++ ++int hostfs_mkdir(struct inode *ino, struct dentry *dentry, int mode) ++{ ++ char *file; ++ int err; ++ ++ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); ++ err = do_mkdir(file, mode); ++ kfree(file); ++ return(err); ++} ++ ++int hostfs_rmdir(struct inode *ino, struct dentry *dentry) ++{ ++ char *file; ++ int err; ++ ++ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); ++ err = do_rmdir(file); ++ kfree(file); ++ return(err); ++} ++ ++int hostfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) ++{ ++ struct inode *inode; ++ char *name; ++ int err = -ENOMEM; ++ ++ inode = iget(dir->i_sb, 0); ++ if(inode == NULL) ++ goto out; ++ ++ err = init_inode(inode, dentry); ++ if(err) ++ goto out_put; ++ ++ err = -ENOMEM; ++ name = dentry_name(dentry, 0); ++ if(name == NULL) ++ goto out_put; ++ ++ init_special_inode(inode, mode, dev); ++ err = do_mknod(name, mode, dev); ++ if(err) ++ goto out_free; ++ ++ err = read_name(inode, name); ++ kfree(name); ++ if(err) ++ goto out_put; ++ ++ d_instantiate(dentry, inode); ++ return(0); ++ ++ out_free: ++ kfree(name); ++ out_put: ++ iput(inode); ++ out: ++ return(err); ++} ++ ++int hostfs_rename(struct inode *from_ino, struct dentry *from, ++ struct inode *to_ino, struct dentry *to) ++{ ++ char *from_name, *to_name; ++ int err; ++ ++ if((from_name = inode_dentry_name(from_ino, from)) == NULL) ++ return(-ENOMEM); ++ if((to_name = inode_dentry_name(to_ino, to)) == NULL){ ++ kfree(from_name); ++ return(-ENOMEM); ++ } ++ err = rename_file(from_name, to_name); ++ kfree(from_name); ++ kfree(to_name); ++ return(err); ++} ++ ++void hostfs_truncate(struct inode *ino) ++{ ++ not_implemented(); ++} ++ ++int hostfs_permission(struct inode *ino, int desired, struct nameidata *nd) ++{ ++ char *name; ++ int r = 0, w = 0, x = 0, err; ++ ++ if(desired & MAY_READ) r = 1; ++ if(desired & MAY_WRITE) w = 1; ++ if(desired & MAY_EXEC) x = 1; ++ name = inode_name(ino, 0); ++ if(name == NULL) return(-ENOMEM); ++ err = access_file(name, r, w, x); ++ kfree(name); ++ if(!err) err = vfs_permission(ino, desired); ++ return(err); ++} ++ ++int hostfs_setattr(struct dentry *dentry, struct iattr *attr) ++{ ++ struct hostfs_iattr attrs; ++ char *name; ++ int err; ++ ++ if(append) ++ attr->ia_valid &= ~ATTR_SIZE; ++ ++ attrs.ia_valid = 0; ++ if(attr->ia_valid & ATTR_MODE){ ++ attrs.ia_valid |= HOSTFS_ATTR_MODE; ++ attrs.ia_mode = attr->ia_mode; ++ } ++ if(attr->ia_valid & ATTR_UID){ ++ if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) && ++ (attr->ia_uid == 0)) ++ attr->ia_uid = getuid(); ++ attrs.ia_valid |= HOSTFS_ATTR_UID; ++ attrs.ia_uid = attr->ia_uid; ++ } ++ if(attr->ia_valid & ATTR_GID){ ++ if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) && ++ (attr->ia_gid == 0)) ++ attr->ia_gid = getuid(); ++ attrs.ia_valid |= HOSTFS_ATTR_GID; ++ attrs.ia_gid = attr->ia_gid; ++ } ++ if(attr->ia_valid & ATTR_SIZE){ ++ attrs.ia_valid |= HOSTFS_ATTR_SIZE; ++ attrs.ia_size = attr->ia_size; ++ } ++ if(attr->ia_valid & ATTR_ATIME){ ++ attrs.ia_valid |= HOSTFS_ATTR_ATIME; ++ attrs.ia_atime = attr->ia_atime; ++ } ++ if(attr->ia_valid & ATTR_MTIME){ ++ attrs.ia_valid |= HOSTFS_ATTR_MTIME; ++ attrs.ia_mtime = attr->ia_mtime; ++ } ++ if(attr->ia_valid & ATTR_CTIME){ ++ attrs.ia_valid |= HOSTFS_ATTR_CTIME; ++ attrs.ia_ctime = attr->ia_ctime; ++ } ++ if(attr->ia_valid & ATTR_ATIME_SET){ ++ attrs.ia_valid |= HOSTFS_ATTR_ATIME_SET; ++ } ++ if(attr->ia_valid & ATTR_MTIME_SET){ ++ attrs.ia_valid |= HOSTFS_ATTR_MTIME_SET; ++ } ++ name = dentry_name(dentry, 0); ++ if(name == NULL) return(-ENOMEM); ++ err = set_attr(name, &attrs); ++ kfree(name); ++ if(err) ++ return(err); ++ ++ return(inode_setattr(dentry->d_inode, attr)); ++} ++ ++int hostfs_getattr(struct vfsmount *mnt, struct dentry *dentry, ++ struct kstat *stat) ++{ ++ generic_fillattr(dentry->d_inode, stat); ++ return(0); ++} ++ ++static struct inode_operations hostfs_iops = { ++ .create = hostfs_create, ++ .link = hostfs_link, ++ .unlink = hostfs_unlink, ++ .symlink = hostfs_symlink, ++ .mkdir = hostfs_mkdir, ++ .rmdir = hostfs_rmdir, ++ .mknod = hostfs_mknod, ++ .rename = hostfs_rename, ++ .truncate = hostfs_truncate, ++ .permission = hostfs_permission, ++ .setattr = hostfs_setattr, ++ .getattr = hostfs_getattr, ++}; ++ ++static struct inode_operations hostfs_dir_iops = { ++ .create = hostfs_create, ++ .lookup = hostfs_lookup, ++ .link = hostfs_link, ++ .unlink = hostfs_unlink, ++ .symlink = hostfs_symlink, ++ .mkdir = hostfs_mkdir, ++ .rmdir = hostfs_rmdir, ++ .mknod = hostfs_mknod, ++ .rename = hostfs_rename, ++ .truncate = hostfs_truncate, ++ .permission = hostfs_permission, ++ .setattr = hostfs_setattr, ++ .getattr = hostfs_getattr, ++}; ++ ++int hostfs_link_readpage(struct file *file, struct page *page) ++{ ++ char *buffer, *name; ++ long long start; ++ int err; ++ ++ start = page->index << PAGE_CACHE_SHIFT; ++ buffer = kmap(page); ++ name = inode_name(page->mapping->host, 0); ++ if(name == NULL) return(-ENOMEM); ++ err = do_readlink(name, buffer, PAGE_CACHE_SIZE); ++ kfree(name); ++ if(err == PAGE_CACHE_SIZE) ++ err = -E2BIG; ++ else if(err > 0){ ++ flush_dcache_page(page); ++ SetPageUptodate(page); ++ if (PageError(page)) ClearPageError(page); ++ err = 0; ++ } ++ kunmap(page); ++ unlock_page(page); ++ return(err); ++} ++ ++static struct address_space_operations hostfs_link_aops = { ++ .readpage = hostfs_link_readpage, ++}; ++ ++static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent) ++{ ++ struct inode *root_inode; ++ char *name, *data = d; ++ int err; ++ ++ sb->s_blocksize = 1024; ++ sb->s_blocksize_bits = 10; ++ sb->s_magic = HOSTFS_SUPER_MAGIC; ++ sb->s_op = &hostfs_sbops; ++ ++ if((data == NULL) || (*data == '\0')) ++ data = root_ino; ++ ++ err = -ENOMEM; ++ name = kmalloc(strlen(data) + 1, GFP_KERNEL); ++ if(name == NULL) ++ goto out; ++ ++ strcpy(name, data); ++ ++ root_inode = iget(sb, 0); ++ if(root_inode == NULL) ++ goto out_free; ++ ++ err = init_inode(root_inode, NULL); ++ if(err) ++ goto out_put; ++ ++ HOSTFS_I(root_inode)->host_filename = name; ++ ++ err = -ENOMEM; ++ sb->s_root = d_alloc_root(root_inode); ++ if(sb->s_root == NULL) ++ goto out_put; ++ ++ err = read_inode(root_inode); ++ if(err) ++ goto out_put; ++ ++ return(0); ++ ++ out_put: ++ iput(root_inode); ++ out_free: ++ kfree(name); ++ out: ++ return(err); ++} ++ ++static struct super_block *hostfs_read_sb(struct file_system_type *type, ++ int flags, const char *dev_name, ++ void *data) ++{ ++ return(get_sb_nodev(type, flags, data, hostfs_fill_sb_common)); ++} ++ ++static struct file_system_type hostfs_type = { ++ .owner = THIS_MODULE, ++ .name = "hostfs", ++ .get_sb = hostfs_read_sb, ++ .kill_sb = kill_anon_super, ++ .fs_flags = 0, ++}; ++ ++static int __init init_hostfs(void) ++{ ++ return(register_filesystem(&hostfs_type)); ++} ++ ++static void __exit exit_hostfs(void) ++{ ++ unregister_filesystem(&hostfs_type); ++} ++ ++module_init(init_hostfs) ++module_exit(exit_hostfs) ++MODULE_LICENSE("GPL"); ++ ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/include/asm-um/module-generic.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/module-generic.h 2004-07-16 19:47:23.634218264 +0300 ++++ uml-2.6.7/include/asm-um/module-generic.h 2004-07-16 19:47:23.791194400 +0300 +@@ -0,0 +1,6 @@ ++#ifndef __UM_MODULE_GENERIC_H ++#define __UM_MODULE_GENERIC_H ++ ++#include "asm/arch/module.h" ++ ++#endif +Index: uml-2.6.7/arch/um/include/user_util.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/user_util.h 2004-07-16 19:36:02.218809152 +0300 ++++ uml-2.6.7/arch/um/include/user_util.h 2004-07-16 19:47:24.794041944 +0300 +@@ -14,8 +14,6 @@ + extern int unlockpt(int __fd); + extern char *ptsname(int __fd); + +-enum { OP_NONE, OP_EXEC, OP_FORK, OP_TRACE_ON, OP_REBOOT, OP_HALT, OP_CB }; +- + struct cpu_task { + int pid; + void *task; +@@ -59,13 +57,11 @@ + extern void *add_signal_handler(int sig, void (*handler)(int)); + extern int start_fork_tramp(void *arg, unsigned long temp_stack, + int clone_flags, int (*tramp)(void *)); +-extern int clone_and_wait(int (*fn)(void *), void *arg, void *sp, int flags); + extern int linux_main(int argc, char **argv); + extern void set_cmdline(char *cmd); + extern void input_cb(void (*proc)(void *), void *arg, int arg_len); + extern int get_pty(void); + extern void *um_kmalloc(int size); +-extern int raw(int fd, int complain); + extern int switcheroo(int fd, int prot, void *from, void *to, int size); + extern void setup_machinename(char *machine_out); + extern void setup_hostinfo(void); +@@ -86,11 +82,17 @@ + extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr); + extern void write_sigio_workaround(void); + extern void arch_check_bugs(void); ++extern int cpu_feature(char *what, char *buf, int len); + extern int arch_handle_signal(int sig, union uml_pt_regs *regs); + extern int arch_fixup(unsigned long address, void *sc_ptr); + extern void forward_pending_sigio(int target); + extern int can_do_skas(void); +- ++extern void arch_init_thread(void); ++ ++extern int __raw(int fd, int complain, int now); ++#define raw(fd, complain) __raw((fd), (complain), 1) ++ ++#define CATCH_EINTR(expr) while ( ((expr) < 0) && errno == EINTR) + #endif + + /* +Index: uml-2.6.7/include/asm-um/cpufeature.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/cpufeature.h 2004-07-16 19:47:23.633218416 +0300 ++++ uml-2.6.7/include/asm-um/cpufeature.h 2004-07-16 19:47:23.788194856 +0300 +@@ -0,0 +1,6 @@ ++#ifndef __UM_CPUFEATURE_H ++#define __UM_CPUFEATURE_H ++ ++#include "asm/arch/cpufeature.h" ++ ++#endif +Index: uml-2.6.7/arch/um/kernel/uaccess_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/uaccess_user.c 2004-07-16 19:37:08.883674552 +0300 ++++ uml-2.6.7/arch/um/kernel/uaccess_user.c 2004-07-16 19:47:23.754200024 +0300 +@@ -20,7 +20,7 @@ + + jmp_buf jbuf; + *fault_catcher = &jbuf; +- if(setjmp(jbuf) == 0){ ++ if(sigsetjmp(jbuf, 1) == 0){ + (*op)(to, from, n); + ret = 0; + *faulted_out = 0; +Index: uml-2.6.7/arch/um/kernel/tt/exec_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/exec_kern.c 2004-07-16 19:36:10.502549832 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/exec_kern.c 2004-07-16 19:47:23.743201696 +0300 +@@ -17,6 +17,7 @@ + #include "mem_user.h" + #include "os.h" + #include "tlb.h" ++#include "mode.h" + + static int exec_tramp(void *sig_stack) + { +@@ -47,17 +48,17 @@ + do_exit(SIGKILL); + } + +- if(current->thread_info->cpu == 0) ++ if(current_thread->cpu == 0) + forward_interrupts(new_pid); + current->thread.request.op = OP_EXEC; + current->thread.request.u.exec.pid = new_pid; +- unprotect_stack((unsigned long) current->thread_info); ++ unprotect_stack((unsigned long) current_thread); + os_usr1_process(os_getpid()); + + enable_timer(); + free_page(stack); + protect_memory(uml_reserved, high_physmem - uml_reserved, 1, 1, 0, 1); +- task_protections((unsigned long) current->thread_info); ++ task_protections((unsigned long) current_thread); + force_flush_all(); + unblock_signals(); + } +Index: uml-2.6.7/arch/um/kernel/frame.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/frame.c 2004-07-16 19:36:25.094331544 +0300 ++++ uml-2.6.7/arch/um/kernel/frame.c 2004-07-16 19:47:24.796041640 +0300 +@@ -21,6 +21,7 @@ + #include "sysdep/sigcontext.h" + #include "frame_user.h" + #include "kern_util.h" ++#include "user_util.h" + #include "ptrace_user.h" + #include "os.h" + +@@ -40,7 +41,7 @@ + /* Wait for it to stop itself and continue it with a SIGUSR1 to force + * it into the signal handler. + */ +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0){ + printf("capture_stack : waitpid failed - errno = %d\n", errno); + exit(1); +@@ -60,7 +61,7 @@ + * At this point, the handler has stuffed the addresses of + * sig, sc, and SA_RESTORER in raw. + */ +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0){ + printf("capture_stack : waitpid failed - errno = %d\n", errno); + exit(1); +@@ -82,7 +83,8 @@ + errno); + exit(1); + } +- if(waitpid(pid, &status, 0) < 0){ ++ CATCH_EINTR(n = waitpid(pid, &status, 0)); ++ if(n < 0){ + printf("capture_stack : waitpid failed - errno = %d\n", errno); + exit(1); + } +@@ -279,7 +281,7 @@ + struct sc_frame_raw raw_sc; + struct si_frame_raw raw_si; + void *stack, *sigstack; +- unsigned long top, sig_top, base; ++ unsigned long top, base; + + stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); +@@ -292,7 +294,6 @@ + } + + top = (unsigned long) stack + PAGE_SIZE - sizeof(void *); +- sig_top = (unsigned long) sigstack + PAGE_SIZE; + + /* Get the sigcontext, no sigrestorer layout */ + raw_sc.restorer = 0; +Index: uml-2.6.7/include/asm-um/unistd.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/unistd.h 2004-07-16 19:37:20.150961664 +0300 ++++ uml-2.6.7/include/asm-um/unistd.h 2004-07-16 19:47:23.804192424 +0300 +@@ -48,7 +48,10 @@ + set_fs(KERNEL_DS); \ + ret = sys(args); \ + set_fs(fs); \ +- return ret; ++ if (ret >= 0) \ ++ return ret; \ ++ errno = -(long)ret; \ ++ return -1; + + static inline long open(const char *pathname, int flags, int mode) + { +Index: uml-2.6.7/arch/um/include/mem_kern.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/mem_kern.h 2004-07-16 19:47:23.613221456 +0300 ++++ uml-2.6.7/arch/um/include/mem_kern.h 2004-07-16 19:47:23.704207624 +0300 +@@ -0,0 +1,30 @@ ++/* ++ * Copyright (C) 2003 Jeff Dike (jdike@addtoit.com) ++ * Licensed under the GPL ++ */ ++ ++#ifndef __MEM_KERN_H__ ++#define __MEM_KERN_H__ ++ ++#include "linux/list.h" ++#include "linux/types.h" ++ ++struct remapper { ++ struct list_head list; ++ int (*proc)(int, unsigned long, int, __u64); ++}; ++ ++extern void register_remapper(struct remapper *info); ++ ++#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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/dyn.lds.S +=================================================================== +--- uml-2.6.7.orig/arch/um/dyn.lds.S 2004-07-16 19:36:43.059600408 +0300 ++++ uml-2.6.7/arch/um/dyn.lds.S 2004-07-16 19:47:23.700208232 +0300 +@@ -1,3 +1,5 @@ ++#include ++ + OUTPUT_FORMAT(ELF_FORMAT) + OUTPUT_ARCH(ELF_ARCH) + ENTRY(_start) +@@ -10,12 +12,15 @@ + { + . = START + SIZEOF_HEADERS; + .interp : { *(.interp) } +- . = ALIGN(4096); + __binary_start = .; + . = ALIGN(4096); /* Init code and data */ + _stext = .; + __init_begin = .; +- .text.init : { *(.text.init) } ++ .init.text : { ++ _sinittext = .; ++ *(.init.text) ++ _einittext = .; ++ } + + . = ALIGN(4096); + +@@ -55,7 +60,9 @@ + } =0x90909090 + .plt : { *(.plt) } + .text : { +- *(.text .stub .text.* .gnu.linkonce.t.*) ++ *(.text) ++ SCHED_TEXT ++ *(.stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x90909090 +@@ -67,7 +74,7 @@ + + #include "asm/common.lds.S" + +- .data.init : { *(.data.init) } ++ init.data : { *(.init.data) } + + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but +Index: uml-2.6.7/arch/um/kernel/trap_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/trap_user.c 2004-07-16 19:36:37.162496904 +0300 ++++ uml-2.6.7/arch/um/kernel/trap_user.c 2004-07-16 19:47:24.799041184 +0300 +@@ -5,11 +5,9 @@ + + #include + #include +-#include + #include + #include + #include +-#include + #include + #include + #include +@@ -34,7 +32,14 @@ + { + kill(pid, SIGKILL); + kill(pid, SIGCONT); +- while(waitpid(pid, NULL, 0) > 0) kill(pid, SIGCONT); ++ do { ++ int n; ++ CATCH_EINTR(n = waitpid(pid, NULL, 0)); ++ if (n > 0) ++ kill(pid, SIGCONT); ++ else ++ break; ++ } while(1); + } + + /* Unlocked - don't care if this is a bit off */ +@@ -82,6 +87,8 @@ + .is_irq = 0 }, + [ SIGILL ] { .handler = relay_signal, + .is_irq = 0 }, ++ [ SIGWINCH ] { .handler = winch, ++ .is_irq = 1 }, + [ SIGBUS ] { .handler = bus_handler, + .is_irq = 0 }, + [ SIGSEGV] { .handler = segv_handler, +@@ -102,12 +109,11 @@ + sig, &sc); + } + +-extern int timer_irq_inited, missed_ticks[]; ++extern int timer_irq_inited; + + void alarm_handler(int sig, struct sigcontext sc) + { + if(!timer_irq_inited) return; +- missed_ticks[cpu()]++; + + if(sig == SIGALRM) + switch_timers(0); +@@ -123,7 +129,7 @@ + { + jmp_buf *buf = b; + +- longjmp(*buf, val); ++ siglongjmp(*buf, val); + } + + /* +Index: uml-2.6.7/arch/um/Kconfig_net +=================================================================== +--- uml-2.6.7.orig/arch/um/Kconfig_net 2004-07-16 19:36:54.256898160 +0300 ++++ uml-2.6.7/arch/um/Kconfig_net 2004-07-16 19:47:23.712206408 +0300 +@@ -1,5 +1,5 @@ + +-menu "Network Devices" ++menu "UML Network Devices" + depends on NET + + # UML virtual driver +@@ -176,73 +176,5 @@ + + Startup example: "eth0=slirp,FE:FD:01:02:03:04,/usr/local/bin/slirp" + +- +-# Below are hardware-independent drivers mirrored from +-# drivers/net/Config.in. It would be nice if Linux +-# had HW independent drivers separated from the other +-# but it does not. Until then each non-ISA/PCI arch +-# needs to provide it's own menu of network drivers +-config DUMMY +- tristate "Dummy net driver support" +- +-config BONDING +- tristate "Bonding driver support" +- +-config EQUALIZER +- tristate "EQL (serial line load balancing) support" +- +-config TUN +- tristate "Universal TUN/TAP device driver support" +- +-config ETHERTAP +- tristate "Ethertap network tap (OBSOLETE)" +- depends on EXPERIMENTAL && NETLINK +- +-config PPP +- tristate "PPP (point-to-point protocol) support" +- +-config PPP_MULTILINK +- bool "PPP multilink support (EXPERIMENTAL)" +- depends on PPP && EXPERIMENTAL +- +-config PPP_FILTER +- bool "PPP filtering" +- depends on PPP && FILTER +- +-config PPP_ASYNC +- tristate "PPP support for async serial ports" +- depends on PPP +- +-config PPP_SYNC_TTY +- tristate "PPP support for sync tty ports" +- depends on PPP +- +-config PPP_DEFLATE +- tristate "PPP Deflate compression" +- depends on PPP +- +-config PPP_BSDCOMP +- tristate "PPP BSD-Compress compression" +- depends on PPP +- +-config PPPOE +- tristate "PPP over Ethernet (EXPERIMENTAL)" +- depends on PPP && EXPERIMENTAL +- +-config SLIP +- tristate "SLIP (serial line) support" +- +-config SLIP_COMPRESSED +- bool "CSLIP compressed headers" +- depends on SLIP=y +- +-config SLIP_SMART +- bool "Keepalive and linefill" +- depends on SLIP=y +- +-config SLIP_MODE_SLIP6 +- bool "Six bit SLIP encapsulation" +- depends on SLIP=y +- + endmenu + +Index: uml-2.6.7/fs/hppfs/Makefile +=================================================================== +--- uml-2.6.7.orig/fs/hppfs/Makefile 2004-07-16 19:47:23.632218568 +0300 ++++ uml-2.6.7/fs/hppfs/Makefile 2004-07-16 19:47:23.786195160 +0300 +@@ -0,0 +1,19 @@ ++# ++# Copyright (C) 2002, 2003 Jeff Dike (jdike@karaya.com) ++# Licensed under the GPL ++# ++ ++hppfs-objs := hppfs_kern.o ++ ++obj-y = ++obj-$(CONFIG_HPPFS) += hppfs.o ++ ++clean: ++ ++modules: ++ ++fastdep: ++ ++dep: ++ ++archmrproper: clean +Index: uml-2.6.7/arch/um/kernel/trap_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/trap_kern.c 2004-07-16 19:35:56.026750488 +0300 ++++ uml-2.6.7/arch/um/kernel/trap_kern.c 2004-07-16 19:47:23.742201848 +0300 +@@ -16,12 +16,15 @@ + #include "asm/tlbflush.h" + #include "asm/a.out.h" + #include "asm/current.h" ++#include "asm/irq.h" + #include "user_util.h" + #include "kern_util.h" + #include "kern.h" + #include "chan_kern.h" + #include "mconsole_kern.h" + #include "2_5compat.h" ++#include "mem.h" ++#include "mem_kern.h" + + int handle_page_fault(unsigned long address, unsigned long ip, + int is_write, int is_user, int *code_out) +@@ -51,12 +54,12 @@ + if(is_write && !(vma->vm_flags & VM_WRITE)) + goto out; + page = address & PAGE_MASK; +- if(page == (unsigned long) current->thread_info + PAGE_SIZE) ++ if(page == (unsigned long) current_thread + PAGE_SIZE) + panic("Kernel stack overflow"); + pgd = pgd_offset(mm, page); + pmd = pmd_offset(pgd, page); +- survive: + do { ++ survive: + switch (handle_mm_fault(mm, vma, address, is_write)){ + case VM_FAULT_MINOR: + current->min_flt++; +@@ -71,14 +74,20 @@ + err = -ENOMEM; + goto out_of_memory; + default: +- BUG(); ++ if (current->pid == 1) { ++ up_read(&mm->mmap_sem); ++ yield(); ++ down_read(&mm->mmap_sem); ++ goto survive; ++ } ++ goto out; + } + pte = pte_offset_kernel(pmd, page); + } while(!pte_present(*pte)); ++ err = 0; + *pte = pte_mkyoung(*pte); + if(pte_write(*pte)) *pte = pte_mkdirty(*pte); + flush_tlb_page(vma, page); +- err = 0; + out: + up_read(&mm->mmap_sem); + return(err); +@@ -98,6 +107,33 @@ + goto out; + } + ++LIST_HEAD(physmem_remappers); ++ ++void register_remapper(struct remapper *info) ++{ ++ list_add(&info->list, &physmem_remappers); ++} ++ ++static int check_remapped_addr(unsigned long address, int is_write) ++{ ++ struct remapper *remapper; ++ struct list_head *ele; ++ __u64 offset; ++ int fd; ++ ++ fd = phys_mapping(__pa(address), &offset); ++ if(fd == -1) ++ return(0); ++ ++ list_for_each(ele, &physmem_remappers){ ++ remapper = list_entry(ele, struct remapper, list); ++ if((*remapper->proc)(fd, address, is_write, offset)) ++ return(1); ++ } ++ ++ return(0); ++} ++ + unsigned long segv(unsigned long address, unsigned long ip, int is_write, + int is_user, void *sc) + { +@@ -109,7 +145,9 @@ + flush_tlb_kernel_vm(); + return(0); + } +- if(current->mm == NULL) ++ else if(check_remapped_addr(address & PAGE_MASK, is_write)) ++ return(0); ++ else if(current->mm == NULL) + panic("Segfault with no mm"); + err = handle_page_fault(address, ip, is_write, is_user, &si.si_code); + +@@ -120,9 +158,8 @@ + current->thread.fault_addr = (void *) address; + do_longjmp(catcher, 1); + } +- else if(current->thread.fault_addr != NULL){ ++ else if(current->thread.fault_addr != NULL) + panic("fault_addr set but no fault catcher"); +- } + else if(arch_fixup(ip, sc)) + return(0); + +@@ -155,8 +192,6 @@ + { + struct siginfo si; + +- printk(KERN_ERR "Unfixable SEGV in '%s' (pid %d) at 0x%lx " +- "(ip 0x%lx)\n", current->comm, current->pid, address, ip); + si.si_signo = SIGSEGV; + si.si_code = SEGV_ACCERR; + si.si_addr = (void *) address; +@@ -180,6 +215,11 @@ + else relay_signal(sig, regs); + } + ++void winch(int sig, union uml_pt_regs *regs) ++{ ++ do_IRQ(WINCH_IRQ, regs); ++} ++ + void trap_init(void) + { + } +Index: uml-2.6.7/arch/um/drivers/cow_sys.h +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/cow_sys.h 2004-07-16 19:47:23.608222216 +0300 ++++ uml-2.6.7/arch/um/drivers/cow_sys.h 2004-07-16 19:47:23.679211424 +0300 +@@ -0,0 +1,48 @@ ++#ifndef __COW_SYS_H__ ++#define __COW_SYS_H__ ++ ++#include "kern_util.h" ++#include "user_util.h" ++#include "os.h" ++#include "user.h" ++ ++static inline void *cow_malloc(int size) ++{ ++ return(um_kmalloc(size)); ++} ++ ++static inline void cow_free(void *ptr) ++{ ++ kfree(ptr); ++} ++ ++#define cow_printf printk ++ ++static inline char *cow_strdup(char *str) ++{ ++ return(uml_strdup(str)); ++} ++ ++static inline int cow_seek_file(int fd, __u64 offset) ++{ ++ return(os_seek_file(fd, offset)); ++} ++ ++static inline int cow_file_size(char *file, __u64 *size_out) ++{ ++ return(os_file_size(file, size_out)); ++} ++ ++static inline int cow_write_file(int fd, char *buf, int size) ++{ ++ return(os_write_file(fd, buf, size)); ++} ++ ++#endif ++ ++/* ++ * --------------------------------------------------------------------------- ++ * Local variables: ++ * c-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/drivers/harddog_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/harddog_user.c 2004-07-16 19:36:22.284758664 +0300 ++++ uml-2.6.7/arch/um/drivers/harddog_user.c 2004-07-16 19:47:23.682210968 +0300 +@@ -27,10 +27,10 @@ + dup2(data->stdin, 0); + dup2(data->stdout, 1); + dup2(data->stdout, 2); +- close(data->stdin); +- close(data->stdout); +- close(data->close_me[0]); +- close(data->close_me[1]); ++ os_close_file(data->stdin); ++ os_close_file(data->stdout); ++ os_close_file(data->close_me[0]); ++ os_close_file(data->close_me[1]); + } - ARCH_SYSCALLS - [ LAST_SYSCALL + 1 ... NR_syscalls ] = -diff -Naur a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c ---- a/arch/um/kernel/sysrq.c 2004-03-10 08:20:56.000000000 -0500 -+++ b/arch/um/kernel/sysrq.c 2004-03-10 08:37:16.000000000 -0500 -@@ -44,6 +44,14 @@ + int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock) +@@ -44,15 +44,15 @@ + char **args = NULL; + + err = os_pipe(in_fds, 1, 0); +- if(err){ +- printk("harddog_open - os_pipe failed, errno = %d\n", -err); +- return(err); ++ if(err < 0){ ++ printk("harddog_open - os_pipe failed, err = %d\n", -err); ++ goto out; + } + + err = os_pipe(out_fds, 1, 0); +- if(err){ +- printk("harddog_open - os_pipe failed, errno = %d\n", -err); +- return(err); ++ if(err < 0){ ++ printk("harddog_open - os_pipe failed, err = %d\n", -err); ++ goto out_close_in; + } + + data.stdin = out_fds[0]; +@@ -72,42 +72,47 @@ + + pid = run_helper(pre_exec, &data, args, NULL); + +- close(out_fds[0]); +- close(in_fds[1]); ++ os_close_file(out_fds[0]); ++ os_close_file(in_fds[1]); + + if(pid < 0){ + err = -pid; +- printk("harddog_open - run_helper failed, errno = %d\n", err); +- goto out; ++ printk("harddog_open - run_helper failed, errno = %d\n", -err); ++ goto out_close_out; + } + +- n = read(in_fds[0], &c, sizeof(c)); ++ n = os_read_file(in_fds[0], &c, sizeof(c)); + if(n == 0){ + printk("harddog_open - EOF on watchdog pipe\n"); + helper_wait(pid); + err = -EIO; +- goto out; ++ goto out_close_out; + } + else if(n < 0){ + printk("harddog_open - read of watchdog pipe failed, " +- "errno = %d\n", errno); ++ "err = %d\n", -n); + helper_wait(pid); +- err = -errno; +- goto out; ++ err = n; ++ goto out_close_out; + } + *in_fd_ret = in_fds[0]; + *out_fd_ret = out_fds[1]; + return(0); ++ ++ out_close_in: ++ os_close_file(in_fds[0]); ++ os_close_file(in_fds[1]); ++ out_close_out: ++ os_close_file(out_fds[0]); ++ os_close_file(out_fds[1]); + out: +- close(out_fds[1]); +- close(in_fds[0]); + return(err); } - EXPORT_SYMBOL(dump_stack); -+void show_stack(struct task_struct *task, unsigned long *sp) + void stop_watchdog(int in_fd, int out_fd) + { +- close(in_fd); +- close(out_fd); ++ os_close_file(in_fd); ++ os_close_file(out_fd); + } + + int ping_watchdog(int fd) +@@ -115,11 +120,12 @@ + int n; + char c = '\n'; + +- n = write(fd, &c, sizeof(c)); +- if(n < sizeof(c)){ +- printk("ping_watchdog - write failed, errno = %d\n", +- errno); +- return(-errno); ++ n = os_write_file(fd, &c, sizeof(c)); ++ if(n != sizeof(c)){ ++ printk("ping_watchdog - write failed, err = %d\n", -n); ++ if(n < 0) ++ return(n); ++ return(-EIO); + } + return 1; + +Index: uml-2.6.7/fs/hostfs/hostfs_user.c +=================================================================== +--- uml-2.6.7.orig/fs/hostfs/hostfs_user.c 2004-07-16 19:47:23.631218720 +0300 ++++ uml-2.6.7/fs/hostfs/hostfs_user.c 2004-07-16 19:47:23.783195616 +0300 +@@ -0,0 +1,361 @@ ++/* ++ * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) ++ * Licensed under the GPL ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "hostfs.h" ++#include "kern_util.h" ++#include "user.h" ++ ++int stat_file(const char *path, unsigned long long *inode_out, int *mode_out, ++ int *nlink_out, int *uid_out, int *gid_out, ++ unsigned long long *size_out, struct timespec *atime_out, ++ struct timespec *mtime_out, struct timespec *ctime_out, ++ int *blksize_out, unsigned long long *blocks_out) +{ -+ if(task) -+ show_trace_task(task); -+ else -+ show_trace(sp); ++ struct stat64 buf; ++ ++ if(lstat64(path, &buf) < 0) ++ return(-errno); ++ ++ /* See the Makefile for why STAT64_INO_FIELD is passed in ++ * by the build ++ */ ++ if(inode_out != NULL) *inode_out = buf.STAT64_INO_FIELD; ++ if(mode_out != NULL) *mode_out = buf.st_mode; ++ if(nlink_out != NULL) *nlink_out = buf.st_nlink; ++ if(uid_out != NULL) *uid_out = buf.st_uid; ++ if(gid_out != NULL) *gid_out = buf.st_gid; ++ if(size_out != NULL) *size_out = buf.st_size; ++ if(atime_out != NULL) { ++ atime_out->tv_sec = buf.st_atime; ++ atime_out->tv_nsec = 0; ++ } ++ if(mtime_out != NULL) { ++ mtime_out->tv_sec = buf.st_mtime; ++ mtime_out->tv_nsec = 0; ++ } ++ if(ctime_out != NULL) { ++ ctime_out->tv_sec = buf.st_ctime; ++ ctime_out->tv_nsec = 0; ++ } ++ if(blksize_out != NULL) *blksize_out = buf.st_blksize; ++ if(blocks_out != NULL) *blocks_out = buf.st_blocks; ++ return(0); ++} ++ ++int file_type(const char *path, int *rdev) ++{ ++ struct stat64 buf; ++ ++ if(lstat64(path, &buf) < 0) ++ return(-errno); ++ if(rdev != NULL) ++ *rdev = buf.st_rdev; ++ ++ if(S_ISDIR(buf.st_mode)) return(OS_TYPE_DIR); ++ else if(S_ISLNK(buf.st_mode)) return(OS_TYPE_SYMLINK); ++ else if(S_ISCHR(buf.st_mode)) return(OS_TYPE_CHARDEV); ++ else if(S_ISBLK(buf.st_mode)) return(OS_TYPE_BLOCKDEV); ++ else if(S_ISFIFO(buf.st_mode))return(OS_TYPE_FIFO); ++ else if(S_ISSOCK(buf.st_mode))return(OS_TYPE_SOCK); ++ else return(OS_TYPE_FILE); ++} ++ ++int access_file(char *path, int r, int w, int x) ++{ ++ int mode = 0; ++ ++ if(r) mode = R_OK; ++ if(w) mode |= W_OK; ++ if(x) mode |= X_OK; ++ if(access(path, mode) != 0) return(-errno); ++ else return(0); ++} ++ ++int open_file(char *path, int r, int w, int append) ++{ ++ int mode = 0, fd; ++ ++ if(r && !w) ++ mode = O_RDONLY; ++ else if(!r && w) ++ mode = O_WRONLY; ++ else if(r && w) ++ mode = O_RDWR; ++ else panic("Impossible mode in open_file"); ++ ++ if(append) ++ mode |= O_APPEND; ++ fd = open64(path, mode); ++ if(fd < 0) return(-errno); ++ else return(fd); ++} ++ ++void *open_dir(char *path, int *err_out) ++{ ++ DIR *dir; ++ ++ dir = opendir(path); ++ *err_out = errno; ++ if(dir == NULL) return(NULL); ++ return(dir); +} + - /* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/kernel/tempfile.c b/arch/um/kernel/tempfile.c ---- a/arch/um/kernel/tempfile.c 2004-03-10 08:21:30.000000000 -0500 -+++ b/arch/um/kernel/tempfile.c 2004-03-10 08:39:50.000000000 -0500 -@@ -28,6 +28,7 @@ - } - if((dir == NULL) || (*dir == '\0')) - dir = "/tmp"; ++char *read_dir(void *stream, unsigned long long *pos, ++ unsigned long long *ino_out, int *len_out) ++{ ++ DIR *dir = stream; ++ struct dirent *ent; + - tempdir = malloc(strlen(dir) + 2); - if(tempdir == NULL){ - fprintf(stderr, "Failed to malloc tempdir, " -@@ -49,7 +50,8 @@ - else - *tempname = 0; - strcat(tempname, template); -- if((fd = mkstemp(tempname)) < 0){ -+ fd = mkstemp(tempname); -+ if(fd < 0){ - fprintf(stderr, "open - cannot create %s: %s\n", tempname, - strerror(errno)); - return -1; -@@ -59,7 +61,8 @@ - return -1; - } - if(out_tempname){ -- if((*out_tempname = strdup(tempname)) == NULL){ -+ *out_tempname = strdup(tempname); -+ if(*out_tempname == NULL){ - perror("strdup"); - return -1; - } -diff -Naur a/arch/um/kernel/time.c b/arch/um/kernel/time.c ---- a/arch/um/kernel/time.c 2004-03-10 08:20:29.000000000 -0500 -+++ b/arch/um/kernel/time.c 2004-03-10 08:35:55.000000000 -0500 -@@ -4,24 +4,33 @@ - */ - - #include -+#include - #include - #include - #include - #include - #include --#include "linux/module.h" - #include "user_util.h" - #include "kern_util.h" - #include "user.h" - #include "process.h" - #include "signal_user.h" - #include "time_user.h" -+#include "kern_constants.h" ++ seekdir(dir, *pos); ++ ent = readdir(dir); ++ if(ent == NULL) return(NULL); ++ *len_out = strlen(ent->d_name); ++ *ino_out = ent->d_ino; ++ *pos = telldir(dir); ++ return(ent->d_name); ++} + -+/* XXX This really needs to be declared and initialized in a kernel file since -+ * it's in -+ */ -+extern struct timespec wall_to_monotonic; - - extern struct timeval xtime; - -+struct timeval local_offset = { 0, 0 }; ++int read_file(int fd, unsigned long long *offset, char *buf, int len) ++{ ++ int n; + - void timer(void) - { - gettimeofday(&xtime, NULL); -+ timeradd(&xtime, &local_offset, &xtime); - } - - void set_interval(int timer_type) -@@ -66,7 +75,7 @@ - errno); - } - --void idle_timer(void) -+void uml_idle_timer(void) - { - if(signal(SIGVTALRM, SIG_IGN) == SIG_ERR) - panic("Couldn't unset SIGVTALRM handler"); -@@ -76,14 +85,60 @@ - set_interval(ITIMER_REAL); - } - -+static unsigned long long get_host_hz(void) ++ n = pread64(fd, buf, len, *offset); ++ if(n < 0) return(-errno); ++ *offset += n; ++ return(n); ++} ++ ++int write_file(int fd, unsigned long long *offset, const char *buf, int len) +{ -+ char mhzline[16], *end; -+ unsigned long long mhz; -+ int ret, mult, rest, len; ++ int n; + -+ ret = cpu_feature("cpu MHz", mhzline, -+ sizeof(mhzline) / sizeof(mhzline[0])); -+ if(!ret) -+ panic ("Could not get host MHZ"); ++ n = pwrite64(fd, buf, len, *offset); ++ if(n < 0) return(-errno); ++ *offset += n; ++ return(n); ++} + -+ mhz = strtoul(mhzline, &end, 10); ++int lseek_file(int fd, long long offset, int whence) ++{ ++ int ret; + -+ /* This business is to parse a floating point number without using -+ * floating types. -+ */ ++ ret = lseek64(fd, offset, whence); ++ if(ret < 0) return(-errno); ++ return(0); ++} + -+ rest = 0; -+ mult = 0; -+ if(*end == '.'){ -+ end++; -+ len = strlen(end); -+ if(len < 6) -+ mult = 6 - len; -+ else if(len > 6) -+ end[6] = '\0'; -+ rest = strtoul(end, NULL, 10); -+ while(mult-- > 0) -+ rest *= 10; -+ } ++void close_file(void *stream) ++{ ++ close(*((int *) stream)); ++} + -+ return(1000000 * mhz + rest); ++void close_dir(void *stream) ++{ ++ closedir(stream); +} + -+unsigned long long host_hz = 0; ++int file_create(char *name, int ur, int uw, int ux, int gr, ++ int gw, int gx, int or, int ow, int ox) ++{ ++ int mode, fd; + -+extern int do_posix_clock_monotonic_gettime(struct timespec *tp); ++ mode = 0; ++ mode |= ur ? S_IRUSR : 0; ++ mode |= uw ? S_IWUSR : 0; ++ mode |= ux ? S_IXUSR : 0; ++ mode |= gr ? S_IRGRP : 0; ++ mode |= gw ? S_IWGRP : 0; ++ mode |= gx ? S_IXGRP : 0; ++ mode |= or ? S_IROTH : 0; ++ mode |= ow ? S_IWOTH : 0; ++ mode |= ox ? S_IXOTH : 0; ++ fd = open64(name, O_CREAT | O_RDWR, mode); ++ if(fd < 0) ++ return(-errno); ++ return(fd); ++} + - void time_init(void) - { -+ struct timespec now; -+ -+ host_hz = get_host_hz(); - if(signal(SIGVTALRM, boot_timer_handler) == SIG_ERR) - panic("Couldn't set SIGVTALRM handler"); - set_interval(ITIMER_VIRTUAL); ++int set_attr(const char *file, struct hostfs_iattr *attrs) ++{ ++ struct utimbuf buf; ++ int err, ma; + -+ do_posix_clock_monotonic_gettime(&now); -+ wall_to_monotonic.tv_sec = -now.tv_sec; -+ wall_to_monotonic.tv_nsec = -now.tv_nsec; - } - --struct timeval local_offset = { 0, 0 }; -+/* Declared in linux/time.h, which can't be included here */ -+extern void clock_was_set(void); - - void do_gettimeofday(struct timeval *tv) - { -@@ -96,15 +151,13 @@ - clock_was_set(); - } - --EXPORT_SYMBOL(do_gettimeofday); -- - int do_settimeofday(struct timespec *tv) - { - struct timeval now; - unsigned long flags; - struct timeval tv_in; - -- if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) -+ if ((unsigned long) tv->tv_nsec >= UM_NSEC_PER_SEC) - return -EINVAL; - - tv_in.tv_sec = tv->tv_sec; -@@ -114,9 +167,9 @@ - gettimeofday(&now, NULL); - timersub(&tv_in, &now, &local_offset); - time_unlock(flags); --} - --EXPORT_SYMBOL(do_settimeofday); ++ if(attrs->ia_valid & HOSTFS_ATTR_MODE){ ++ if(chmod(file, attrs->ia_mode) != 0) return(-errno); ++ } ++ if(attrs->ia_valid & HOSTFS_ATTR_UID){ ++ if(chown(file, attrs->ia_uid, -1)) return(-errno); ++ } ++ if(attrs->ia_valid & HOSTFS_ATTR_GID){ ++ if(chown(file, -1, attrs->ia_gid)) return(-errno); ++ } ++ if(attrs->ia_valid & HOSTFS_ATTR_SIZE){ ++ if(truncate(file, attrs->ia_size)) return(-errno); ++ } ++ ma = HOSTFS_ATTR_ATIME_SET | HOSTFS_ATTR_MTIME_SET; ++ if((attrs->ia_valid & ma) == ma){ ++ buf.actime = attrs->ia_atime.tv_sec; ++ buf.modtime = attrs->ia_mtime.tv_sec; ++ if(utime(file, &buf) != 0) return(-errno); ++ } ++ else { ++ struct timespec ts; ++ ++ if(attrs->ia_valid & HOSTFS_ATTR_ATIME_SET){ ++ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, ++ NULL, NULL, &ts, NULL, NULL, NULL); ++ if(err != 0) ++ return(err); ++ buf.actime = attrs->ia_atime.tv_sec; ++ buf.modtime = ts.tv_sec; ++ if(utime(file, &buf) != 0) ++ return(-errno); ++ } ++ if(attrs->ia_valid & HOSTFS_ATTR_MTIME_SET){ ++ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, ++ NULL, &ts, NULL, NULL, NULL, NULL); ++ if(err != 0) ++ return(err); ++ buf.actime = ts.tv_sec; ++ buf.modtime = attrs->ia_mtime.tv_sec; ++ if(utime(file, &buf) != 0) ++ return(-errno); ++ } ++ } ++ if(attrs->ia_valid & HOSTFS_ATTR_CTIME) ; ++ if(attrs->ia_valid & (HOSTFS_ATTR_ATIME | HOSTFS_ATTR_MTIME)){ ++ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, NULL, ++ &attrs->ia_atime, &attrs->ia_mtime, NULL, ++ NULL, NULL); ++ if(err != 0) return(err); ++ } + return(0); +} - - void idle_sleep(int secs) - { -diff -Naur a/arch/um/kernel/time_kern.c b/arch/um/kernel/time_kern.c ---- a/arch/um/kernel/time_kern.c 2004-03-10 08:21:50.000000000 -0500 -+++ b/arch/um/kernel/time_kern.c 2004-03-10 08:40:47.000000000 -0500 -@@ -30,22 +30,58 @@ - return(HZ); - } - -+/* -+ * Scheduler clock - returns current time in nanosec units. -+ */ -+unsigned long long sched_clock(void) ++ ++int make_symlink(const char *from, const char *to) +{ -+ return (unsigned long long)jiffies_64 * (1000000000 / HZ); ++ int err; ++ ++ err = symlink(to, from); ++ if(err) return(-errno); ++ return(0); +} + - /* Changed at early boot */ - int timer_irq_inited = 0; - --/* missed_ticks will be modified after kernel memory has been -- * write-protected, so this puts it in a section which will be left -- * write-enabled. -- */ --int __attribute__ ((__section__ (".unprotected"))) missed_ticks[NR_CPUS]; -+static int first_tick; -+static unsigned long long prev_tsc; -+static long long delta; /* Deviation per interval */ ++int unlink_file(const char *file) ++{ ++ int err; + -+extern unsigned long long host_hz; - - void timer_irq(union uml_pt_regs *regs) - { -- int cpu = current->thread_info->cpu, ticks = missed_ticks[cpu]; -+ unsigned long long ticks = 0; ++ err = unlink(file); ++ if(err) return(-errno); ++ return(0); ++} + -+ if(!timer_irq_inited){ -+ /* This is to ensure that ticks don't pile up when -+ * the timer handler is suspended */ -+ first_tick = 0; -+ return; -+ } - -- if(!timer_irq_inited) return; -- missed_ticks[cpu] = 0; -- while(ticks--) do_IRQ(TIMER_IRQ, regs); -+ if(first_tick){ -+#if defined(CONFIG_UML_REAL_TIME_CLOCK) -+ unsigned long long tsc; -+ /* We've had 1 tick */ -+ tsc = time_stamp(); ++int do_mkdir(const char *file, int mode) ++{ ++ int err; + -+ delta += tsc - prev_tsc; -+ prev_tsc = tsc; ++ err = mkdir(file, mode); ++ if(err) return(-errno); ++ return(0); ++} + -+ ticks += (delta * HZ) / host_hz; -+ delta -= (ticks * host_hz) / HZ; -+#else -+ ticks = 1; -+#endif -+ } -+ else { -+ prev_tsc = time_stamp(); -+ first_tick = 1; -+ } ++int do_rmdir(const char *file) ++{ ++ int err; + -+ while(ticks > 0){ -+ do_IRQ(TIMER_IRQ, regs); -+ ticks--; -+ } - } - - void boot_timer_handler(int sig) -@@ -58,12 +94,15 @@ - do_timer(®s); - } - --void um_timer(int irq, void *dev, struct pt_regs *regs) -+irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) - { -+ unsigned long flags; ++ err = rmdir(file); ++ if(err) return(-errno); ++ return(0); ++} + - do_timer(regs); -- write_seqlock(&xtime_lock); -+ write_seqlock_irqsave(&xtime_lock, flags); - timer(); -- write_sequnlock(&xtime_lock); -+ write_sequnlock_irqrestore(&xtime_lock, flags); -+ return(IRQ_HANDLED); - } - - long um_time(int * tloc) -@@ -81,12 +120,12 @@ - long um_stime(int * tptr) - { - int value; -- struct timeval new; -+ struct timespec new; - - if (get_user(value, tptr)) - return -EFAULT; - new.tv_sec = value; -- new.tv_usec = 0; -+ new.tv_nsec = 0; - do_settimeofday(&new); - return 0; - } -@@ -125,9 +164,11 @@ - void timer_handler(int sig, union uml_pt_regs *regs) - { - #ifdef CONFIG_SMP -+ local_irq_disable(); - update_process_times(user_context(UPT_SP(regs))); -+ local_irq_enable(); - #endif -- if(current->thread_info->cpu == 0) -+ if(current_thread->cpu == 0) - timer_irq(regs); - } - -@@ -136,6 +177,7 @@ - unsigned long time_lock(void) - { - unsigned long flags; ++int do_mknod(const char *file, int mode, int dev) ++{ ++ int err; + - spin_lock_irqsave(&timer_spinlock, flags); - return(flags); - } -@@ -150,8 +192,8 @@ - int err; - - CHOOSE_MODE(user_time_init_tt(), user_time_init_skas()); -- if((err = request_irq(TIMER_IRQ, um_timer, SA_INTERRUPT, "timer", -- NULL)) != 0) -+ err = request_irq(TIMER_IRQ, um_timer, SA_INTERRUPT, "timer", NULL); -+ if(err != 0) - printk(KERN_ERR "timer_init : request_irq failed - " - "errno = %d\n", -err); - timer_irq_inited = 1; -@@ -160,7 +202,6 @@ - - __initcall(timer_init); - -- - /* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/kernel/trap_kern.c b/arch/um/kernel/trap_kern.c ---- a/arch/um/kernel/trap_kern.c 2004-03-10 08:20:18.000000000 -0500 -+++ b/arch/um/kernel/trap_kern.c 2004-03-10 08:34:16.000000000 -0500 -@@ -16,12 +16,15 @@ - #include "asm/tlbflush.h" - #include "asm/a.out.h" - #include "asm/current.h" -+#include "asm/irq.h" - #include "user_util.h" - #include "kern_util.h" - #include "kern.h" - #include "chan_kern.h" - #include "mconsole_kern.h" - #include "2_5compat.h" -+#include "mem.h" -+#include "mem_kern.h" - - int handle_page_fault(unsigned long address, unsigned long ip, - int is_write, int is_user, int *code_out) -@@ -51,12 +54,12 @@ - if(is_write && !(vma->vm_flags & VM_WRITE)) - goto out; - page = address & PAGE_MASK; -- if(page == (unsigned long) current->thread_info + PAGE_SIZE) -+ if(page == (unsigned long) current_thread + PAGE_SIZE) - panic("Kernel stack overflow"); - pgd = pgd_offset(mm, page); - pmd = pmd_offset(pgd, page); -- survive: - do { -+ survive: - switch (handle_mm_fault(mm, vma, address, is_write)){ - case VM_FAULT_MINOR: - current->min_flt++; -@@ -71,14 +74,20 @@ - err = -ENOMEM; - goto out_of_memory; - default: -- BUG(); -+ if (current->pid == 1) { -+ up_read(&mm->mmap_sem); -+ yield(); -+ down_read(&mm->mmap_sem); -+ goto survive; -+ } -+ goto out; - } - pte = pte_offset_kernel(pmd, page); - } while(!pte_present(*pte)); -+ err = 0; - *pte = pte_mkyoung(*pte); - if(pte_write(*pte)) *pte = pte_mkdirty(*pte); - flush_tlb_page(vma, page); -- err = 0; - out: - up_read(&mm->mmap_sem); - return(err); -@@ -98,6 +107,33 @@ - goto out; - } - -+LIST_HEAD(physmem_remappers); ++ err = mknod(file, mode, dev); ++ if(err) return(-errno); ++ return(0); ++} + -+void register_remapper(struct remapper *info) ++int link_file(const char *to, const char *from) +{ -+ list_add(&info->list, &physmem_remappers); ++ int err; ++ ++ err = link(to, from); ++ if(err) return(-errno); ++ return(0); +} + -+static int check_remapped_addr(unsigned long address, int is_write) ++int do_readlink(char *file, char *buf, int size) +{ -+ struct remapper *remapper; -+ struct list_head *ele; -+ __u64 offset; -+ int fd; -+ -+ fd = phys_mapping(__pa(address), &offset); -+ if(fd == -1) -+ return(0); ++ int n; + -+ list_for_each(ele, &physmem_remappers){ -+ remapper = list_entry(ele, struct remapper, list); -+ if((*remapper->proc)(fd, address, is_write, offset)) -+ return(1); -+ } ++ n = readlink(file, buf, size); ++ if(n < 0) ++ return(-errno); ++ if(n < size) ++ buf[n] = '\0'; ++ return(n); ++} + -+ return(0); ++int rename_file(char *from, char *to) ++{ ++ int err; ++ ++ err = rename(from, to); ++ if(err < 0) return(-errno); ++ return(0); +} + - unsigned long segv(unsigned long address, unsigned long ip, int is_write, - int is_user, void *sc) - { -@@ -109,7 +145,9 @@ - flush_tlb_kernel_vm(); - return(0); - } -- if(current->mm == NULL) -+ else if(check_remapped_addr(address & PAGE_MASK, is_write)) -+ return(0); -+ else if(current->mm == NULL) - panic("Segfault with no mm"); - err = handle_page_fault(address, ip, is_write, is_user, &si.si_code); - -@@ -120,9 +158,8 @@ - current->thread.fault_addr = (void *) address; - do_longjmp(catcher, 1); - } -- else if(current->thread.fault_addr != NULL){ -+ else if(current->thread.fault_addr != NULL) - panic("fault_addr set but no fault catcher"); -- } - else if(arch_fixup(ip, sc)) - return(0); - -@@ -155,8 +192,6 @@ - { - struct siginfo si; - -- printk(KERN_ERR "Unfixable SEGV in '%s' (pid %d) at 0x%lx " -- "(ip 0x%lx)\n", current->comm, current->pid, address, ip); - si.si_signo = SIGSEGV; - si.si_code = SEGV_ACCERR; - si.si_addr = (void *) address; -@@ -180,6 +215,11 @@ - else relay_signal(sig, regs); - } - -+void winch(int sig, union uml_pt_regs *regs) ++int do_statfs(char *root, long *bsize_out, long long *blocks_out, ++ long long *bfree_out, long long *bavail_out, ++ long long *files_out, long long *ffree_out, ++ void *fsid_out, int fsid_size, long *namelen_out, ++ long *spare_out) +{ -+ do_IRQ(WINCH_IRQ, regs); ++ struct statfs64 buf; ++ int err; ++ ++ err = statfs64(root, &buf); ++ if(err < 0) return(-errno); ++ *bsize_out = buf.f_bsize; ++ *blocks_out = buf.f_blocks; ++ *bfree_out = buf.f_bfree; ++ *bavail_out = buf.f_bavail; ++ *files_out = buf.f_files; ++ *ffree_out = buf.f_ffree; ++ memcpy(fsid_out, &buf.f_fsid, ++ sizeof(buf.f_fsid) > fsid_size ? fsid_size : ++ sizeof(buf.f_fsid)); ++ *namelen_out = buf.f_namelen; ++ spare_out[0] = buf.f_spare[0]; ++ spare_out[1] = buf.f_spare[1]; ++ spare_out[2] = buf.f_spare[2]; ++ spare_out[3] = buf.f_spare[3]; ++ spare_out[4] = buf.f_spare[4]; ++ spare_out[5] = buf.f_spare[5]; ++ return(0); +} + - void trap_init(void) - { - } -diff -Naur a/arch/um/kernel/trap_user.c b/arch/um/kernel/trap_user.c ---- a/arch/um/kernel/trap_user.c 2004-03-10 08:21:06.000000000 -0500 -+++ b/arch/um/kernel/trap_user.c 2004-03-10 08:38:40.000000000 -0500 -@@ -5,11 +5,9 @@ - - #include - #include --#include - #include - #include - #include --#include ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/kernel/skas/mem_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/mem_user.c 2004-07-16 19:36:25.158321816 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/mem_user.c 2004-07-16 19:47:23.729203824 +0300 +@@ -7,6 +7,7 @@ + #include #include - #include - #include -@@ -82,6 +80,8 @@ - .is_irq = 0 }, - [ SIGILL ] { .handler = relay_signal, - .is_irq = 0 }, -+ [ SIGWINCH ] { .handler = winch, -+ .is_irq = 1 }, - [ SIGBUS ] { .handler = bus_handler, - .is_irq = 0 }, - [ SIGSEGV] { .handler = segv_handler, -@@ -102,12 +102,11 @@ - sig, &sc); - } - --extern int timer_irq_inited, missed_ticks[]; -+extern int timer_irq_inited; - - void alarm_handler(int sig, struct sigcontext sc) - { - if(!timer_irq_inited) return; -- missed_ticks[cpu()]++; - - if(sig == SIGALRM) - switch_timers(0); -@@ -123,7 +122,7 @@ - { - jmp_buf *buf = b; - -- longjmp(*buf, val); -+ siglongjmp(*buf, val); - } - - /* -diff -Naur a/arch/um/kernel/tt/exec_kern.c b/arch/um/kernel/tt/exec_kern.c ---- a/arch/um/kernel/tt/exec_kern.c 2004-03-10 08:20:29.000000000 -0500 -+++ b/arch/um/kernel/tt/exec_kern.c 2004-03-10 08:35:36.000000000 -0500 -@@ -17,6 +17,7 @@ #include "mem_user.h" ++#include "mem.h" + #include "user.h" #include "os.h" - #include "tlb.h" -+#include "mode.h" - - static int exec_tramp(void *sig_stack) + #include "proc_mm.h" +@@ -15,12 +16,12 @@ + int r, int w, int x) { -@@ -47,17 +48,17 @@ - do_exit(SIGKILL); - } - -- if(current->thread_info->cpu == 0) -+ if(current_thread->cpu == 0) - forward_interrupts(new_pid); - current->thread.request.op = OP_EXEC; - current->thread.request.u.exec.pid = new_pid; -- unprotect_stack((unsigned long) current->thread_info); -+ unprotect_stack((unsigned long) current_thread); - os_usr1_process(os_getpid()); - - enable_timer(); - free_page(stack); - protect_memory(uml_reserved, high_physmem - uml_reserved, 1, 1, 0, 1); -- task_protections((unsigned long) current->thread_info); -+ task_protections((unsigned long) current_thread); - force_flush_all(); - unblock_signals(); - } -diff -Naur a/arch/um/kernel/tt/include/mode.h b/arch/um/kernel/tt/include/mode.h ---- a/arch/um/kernel/tt/include/mode.h 2004-03-10 08:21:54.000000000 -0500 -+++ b/arch/um/kernel/tt/include/mode.h 2004-03-10 08:40:56.000000000 -0500 -@@ -8,6 +8,8 @@ - - #include "sysdep/ptrace.h" - -+enum { OP_NONE, OP_EXEC, OP_FORK, OP_TRACE_ON, OP_REBOOT, OP_HALT, OP_CB }; -+ - extern int tracing_pid; - - extern int tracer(int (*init_proc)(void *), void *sp); -diff -Naur a/arch/um/kernel/tt/include/uaccess.h b/arch/um/kernel/tt/include/uaccess.h ---- a/arch/um/kernel/tt/include/uaccess.h 2004-03-10 08:21:55.000000000 -0500 -+++ b/arch/um/kernel/tt/include/uaccess.h 2004-03-10 08:40:59.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ + struct proc_mm_op map; +- struct mem_region *region; +- int prot, n; ++ __u64 offset; ++ int prot, n, phys_fd; -@@ -43,65 +43,19 @@ + prot = (r ? PROT_READ : 0) | (w ? PROT_WRITE : 0) | + (x ? PROT_EXEC : 0); +- region = phys_region(phys); ++ phys_fd = phys_mapping(phys, &offset); - extern int __do_copy_from_user(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher); -- --static inline int copy_from_user_tt(void *to, const void *from, int n) --{ -- return(access_ok_tt(VERIFY_READ, from, n) ? -- __do_copy_from_user(to, from, n, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher) : n); --} -- --static inline int copy_to_user_tt(void *to, const void *from, int n) --{ -- return(access_ok_tt(VERIFY_WRITE, to, n) ? -- __do_copy_to_user(to, from, n, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher) : n); --} -- - extern int __do_strncpy_from_user(char *dst, const char *src, size_t n, - void **fault_addr, void **fault_catcher); -- --static inline int strncpy_from_user_tt(char *dst, const char *src, int count) --{ -- int n; -- -- if(!access_ok_tt(VERIFY_READ, src, 1)) return(-EFAULT); -- n = __do_strncpy_from_user(dst, src, count, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher); -- if(n < 0) return(-EFAULT); -- return(n); --} -- - extern int __do_clear_user(void *mem, size_t len, void **fault_addr, - void **fault_catcher); -- --static inline int __clear_user_tt(void *mem, int len) --{ -- return(__do_clear_user(mem, len, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher)); --} -- --static inline int clear_user_tt(void *mem, int len) --{ -- return(access_ok_tt(VERIFY_WRITE, mem, len) ? -- __do_clear_user(mem, len, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher) : len); --} -- - extern int __do_strnlen_user(const char *str, unsigned long n, - void **fault_addr, void **fault_catcher); + map = ((struct proc_mm_op) { .op = MM_MMAP, + .u = +@@ -30,12 +31,12 @@ + .prot = prot, + .flags = MAP_SHARED | + MAP_FIXED, +- .fd = region->fd, +- .offset = phys_offset(phys) ++ .fd = phys_fd, ++ .offset = offset + } } } ); + n = os_write_file(fd, &map, sizeof(map)); + if(n != sizeof(map)) +- printk("map : /proc/mm map failed, errno = %d\n", errno); ++ printk("map : /proc/mm map failed, err = %d\n", -n); + } --static inline int strnlen_user_tt(const void *str, int len) --{ -- return(__do_strnlen_user(str, len, -- ¤t->thread.fault_addr, -- ¤t->thread.fault_catcher)); --} -+extern int copy_from_user_tt(void *to, const void *from, int n); -+extern int copy_to_user_tt(void *to, const void *from, int n); -+extern int strncpy_from_user_tt(char *dst, const char *src, int count); -+extern int __clear_user_tt(void *mem, int len); -+extern int clear_user_tt(void *mem, int len); -+extern int strnlen_user_tt(const void *str, int len); + int unmap(int fd, void *addr, int len) +@@ -49,8 +50,13 @@ + { .addr = (unsigned long) addr, + .len = len } } } ); + n = os_write_file(fd, &unmap, sizeof(unmap)); +- if((n != 0) && (n != sizeof(unmap))) +- return(-errno); ++ if(n != sizeof(unmap)) { ++ if(n < 0) ++ return(n); ++ else if(n > 0) ++ return(-EIO); ++ } ++ + return(0); + } - #endif +@@ -71,11 +77,15 @@ + .prot = prot } } } ); -diff -Naur a/arch/um/kernel/tt/Makefile b/arch/um/kernel/tt/Makefile ---- a/arch/um/kernel/tt/Makefile 2004-03-10 08:21:28.000000000 -0500 -+++ b/arch/um/kernel/tt/Makefile 2004-03-10 08:39:16.000000000 -0500 + n = os_write_file(fd, &protect, sizeof(protect)); +- if((n != 0) && (n != sizeof(protect))){ ++ if(n != sizeof(protect)) { ++ if(n == 0) return(0); ++ + if(must_succeed) +- panic("protect failed, errno = %d", errno); +- return(-errno); ++ panic("protect failed, err = %d", -n); ++ ++ return(-EIO); + } ++ + return(0); + } + +Index: uml-2.6.7/arch/um/kernel/skas/include/ptrace-skas.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/include/ptrace-skas.h 2004-07-16 19:36:04.873405592 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/include/ptrace-skas.h 2004-07-16 19:47:24.724052584 +0300 +@@ -10,6 +10,15 @@ + + #ifdef UML_CONFIG_MODE_SKAS + ++/* syscall emulation path in ptrace */ ++ ++#ifndef PTRACE_SYSEMU ++#define PTRACE_SYSEMU 31 ++#endif ++ ++void set_using_sysemu(int value); ++int get_using_sysemu(void); ++ + #include "skas_ptregs.h" + + #define HOST_FRAME_SIZE 17 +Index: uml-2.6.7/include/asm-um/archparam-i386.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/archparam-i386.h 2004-07-16 19:37:19.977987960 +0300 ++++ uml-2.6.7/include/asm-um/archparam-i386.h 2004-07-16 19:47:23.787195008 +0300 @@ -1,5 +1,5 @@ - # --# Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+# Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) - # Licensed under the GPL - # + /* +- * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ -@@ -7,7 +7,7 @@ +@@ -56,6 +56,93 @@ + pr_reg[16] = PT_REGS_SS(regs); \ + } while(0); - obj-y = exec_kern.o exec_user.o gdb.o ksyms.o mem.o mem_user.o process_kern.o \ - syscall_kern.o syscall_user.o time.o tlb.o tracer.o trap_user.o \ -- uaccess_user.o sys-$(SUBARCH)/ -+ uaccess.o uaccess_user.o sys-$(SUBARCH)/ ++#if 0 /* Turn this back on when UML has VSYSCALL working */ ++#define VSYSCALL_BASE (__fix_to_virt(FIX_VSYSCALL)) ++#else ++#define VSYSCALL_BASE 0 ++#endif ++ ++#define VSYSCALL_EHDR ((const struct elfhdr *) VSYSCALL_BASE) ++#define VSYSCALL_ENTRY ((unsigned long) &__kernel_vsyscall) ++extern void *__kernel_vsyscall; ++ ++/* ++ * Architecture-neutral AT_ values in 0-17, leave some room ++ * for more of them, start the x86-specific ones at 32. ++ */ ++#define AT_SYSINFO 32 ++#define AT_SYSINFO_EHDR 33 ++ ++#define ARCH_DLINFO \ ++do { \ ++ NEW_AUX_ENT(AT_SYSINFO, VSYSCALL_ENTRY); \ ++ NEW_AUX_ENT(AT_SYSINFO_EHDR, VSYSCALL_BASE); \ ++} while (0) ++ ++/* ++ * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out ++ * extra segments containing the vsyscall DSO contents. Dumping its ++ * contents makes post-mortem fully interpretable later without matching up ++ * the same kernel and hardware config to see what PC values meant. ++ * Dumping its extra ELF program headers includes all the other information ++ * a debugger needs to easily find how the vsyscall DSO was being used. ++ */ ++#if 0 ++#define ELF_CORE_EXTRA_PHDRS (VSYSCALL_EHDR->e_phnum) ++#endif ++ ++#undef ELF_CORE_EXTRA_PHDRS ++ ++#if 0 ++#define ELF_CORE_WRITE_EXTRA_PHDRS \ ++do { \ ++ const struct elf_phdr *const vsyscall_phdrs = \ ++ (const struct elf_phdr *) (VSYSCALL_BASE \ ++ + VSYSCALL_EHDR->e_phoff); \ ++ int i; \ ++ Elf32_Off ofs = 0; \ ++ for (i = 0; i < VSYSCALL_EHDR->e_phnum; ++i) { \ ++ struct elf_phdr phdr = vsyscall_phdrs[i]; \ ++ if (phdr.p_type == PT_LOAD) { \ ++ ofs = phdr.p_offset = offset; \ ++ offset += phdr.p_filesz; \ ++ } \ ++ else \ ++ phdr.p_offset += ofs; \ ++ phdr.p_paddr = 0; /* match other core phdrs */ \ ++ DUMP_WRITE(&phdr, sizeof(phdr)); \ ++ } \ ++} while (0) ++#define ELF_CORE_WRITE_EXTRA_DATA \ ++do { \ ++ const struct elf_phdr *const vsyscall_phdrs = \ ++ (const struct elf_phdr *) (VSYSCALL_BASE \ ++ + VSYSCALL_EHDR->e_phoff); \ ++ int i; \ ++ for (i = 0; i < VSYSCALL_EHDR->e_phnum; ++i) { \ ++ if (vsyscall_phdrs[i].p_type == PT_LOAD) \ ++ DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr, \ ++ vsyscall_phdrs[i].p_filesz); \ ++ } \ ++} while (0) ++#endif ++ ++#undef ELF_CORE_WRITE_EXTRA_PHDRS ++#undef ELF_CORE_WRITE_EXTRA_DATA ++ ++#define R_386_NONE 0 ++#define R_386_32 1 ++#define R_386_PC32 2 ++#define R_386_GOT32 3 ++#define R_386_PLT32 4 ++#define R_386_COPY 5 ++#define R_386_GLOB_DAT 6 ++#define R_386_JMP_SLOT 7 ++#define R_386_RELATIVE 8 ++#define R_386_GOTOFF 9 ++#define R_386_GOTPC 10 ++#define R_386_NUM 11 ++ + /********* Bits for asm-um/delay.h **********/ - obj-$(CONFIG_PT_PROXY) += gdb_kern.o ptproxy/ + typedef unsigned long um_udelay_t; +Index: uml-2.6.7/arch/um/kernel/skas/process_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/process_kern.c 2004-07-16 19:37:52.070109216 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/process_kern.c 2004-07-16 19:47:24.725052432 +0300 +@@ -6,6 +6,12 @@ + #include "linux/sched.h" + #include "linux/slab.h" + #include "linux/ptrace.h" ++#include "linux/proc_fs.h" ++#include "linux/file.h" ++#include "linux/errno.h" ++#include "linux/init.h" ++#include "asm/uaccess.h" ++#include "asm/atomic.h" + #include "kern_util.h" + #include "time_user.h" + #include "signal_user.h" +@@ -17,6 +23,59 @@ + #include "kern.h" + #include "mode.h" -@@ -27,5 +27,3 @@ ++#ifdef PTRACE_SYSEMU ++static atomic_t using_sysemu; ++#endif ++ ++void set_using_sysemu(int value) ++{ ++ atomic_set(&using_sysemu, value); ++} ++ ++int get_using_sysemu(void) ++{ ++ return atomic_read(&using_sysemu); ++} ++ ++int proc_read_sysemu(char *buf, char **start, off_t offset, int size,int *eof, void *data) ++{ ++ if (snprintf(buf, size, "%d\n", get_using_sysemu()) < size) /*No overflow*/ ++ *eof = 1; ++ ++ return strlen(buf); ++} ++ ++int proc_write_sysemu(struct file *file,const char *buf, unsigned long count,void *data) ++{ ++ char tmp[2]; ++ ++ if (copy_from_user(tmp, buf, 1)) ++ return -EFAULT; ++ ++ if (tmp[0] == '0' || tmp[0] == '1') ++ set_using_sysemu(tmp[0] - '0'); ++ return count; /*We use the first char, but pretend to write everything*/ ++} ++ ++int __init make_proc_sysemu(void) ++{ ++ struct proc_dir_entry *ent; ++ ++ ent = create_proc_entry("sysemu", 00600, &proc_root); ++ ent->read_proc = proc_read_sysemu; ++ ent->write_proc = proc_write_sysemu; ++ ++ if (ent == NULL) ++ { ++ printk("Failed to register /proc/sysemu\n"); ++ return(0); ++ } ++ ++ return 0; ++} ++ ++late_initcall(make_proc_sysemu); ++ + int singlestepping_skas(void) + { + int ret = current->ptrace & PT_DTRACE; +@@ -61,11 +120,13 @@ + thread_wait(¤t->thread.mode.skas.switch_buf, + current->thread.mode.skas.fork_buf); - $(obj)/unmap_fin.o : $(src)/unmap.o - ld -r -o $@ $< -lc -L/usr/lib -- --clean : -diff -Naur a/arch/um/kernel/tt/mem_user.c b/arch/um/kernel/tt/mem_user.c ---- a/arch/um/kernel/tt/mem_user.c 2004-03-10 08:20:50.000000000 -0500 -+++ b/arch/um/kernel/tt/mem_user.c 2004-03-10 08:36:30.000000000 -0500 -@@ -25,14 +25,13 @@ - size = (unsigned long) segment_end - - (unsigned long) segment_start; - data = create_mem_file(size); -- if((addr = mmap(NULL, size, PROT_WRITE | PROT_READ, -- MAP_SHARED, data, 0)) == MAP_FAILED){ -+ addr = mmap(NULL, size, PROT_WRITE | PROT_READ, MAP_SHARED, data, 0); -+ if(addr == MAP_FAILED){ - perror("mapping new data segment"); - exit(1); - } - memcpy(addr, segment_start, size); -- if(switcheroo(data, prot, addr, segment_start, -- size) < 0){ -+ if(switcheroo(data, prot, addr, segment_start, size) < 0){ - printf("switcheroo failed\n"); - exit(1); - } -diff -Naur a/arch/um/kernel/tt/process_kern.c b/arch/um/kernel/tt/process_kern.c ---- a/arch/um/kernel/tt/process_kern.c 2004-03-10 08:22:39.000000000 -0500 -+++ b/arch/um/kernel/tt/process_kern.c 2004-03-10 08:42:45.000000000 -0500 -@@ -62,7 +62,7 @@ - reading = 0; - err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c)); - if(err != sizeof(c)) -- panic("write of switch_pipe failed, errno = %d", -err); -+ panic("write of switch_pipe failed, err = %d", -err); +-#ifdef CONFIG_SMP +- schedule_tail(NULL); +-#endif ++ if(current->thread.prev_sched != NULL) ++ schedule_tail(current->thread.prev_sched); + current->thread.prev_sched = NULL; - reading = 1; - if((from->state == TASK_ZOMBIE) || (from->state == TASK_DEAD)) -@@ -104,48 +104,72 @@ ++ /* The return value is 1 if the kernel thread execs a process, ++ * 0 if it just exits ++ */ + n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); + if(n == 1) + userspace(¤t->thread.regs.regs); +@@ -93,11 +154,11 @@ + current->thread.mode.skas.fork_buf); + + force_flush_all(); +-#ifdef CONFIG_SMP ++ if(current->thread.prev_sched == NULL) ++ panic("blech"); ++ + schedule_tail(current->thread.prev_sched); +-#endif + current->thread.prev_sched = NULL; +- unblock_signals(); - void release_thread_tt(struct task_struct *task) - { -- os_kill_process(task->thread.mode.tt.extern_pid, 0); -+ int pid = task->thread.mode.tt.extern_pid; -+ -+ if(os_getpid() != pid) -+ os_kill_process(pid, 0); + userspace(¤t->thread.regs.regs); } +@@ -136,7 +197,7 @@ - void exit_thread_tt(void) + void init_idle_skas(void) { -- close(current->thread.mode.tt.switch_pipe[0]); -- close(current->thread.mode.tt.switch_pipe[1]); -+ os_close_file(current->thread.mode.tt.switch_pipe[0]); -+ os_close_file(current->thread.mode.tt.switch_pipe[1]); +- cpu_tasks[current->thread_info->cpu].pid = os_getpid(); ++ cpu_tasks[current_thread->cpu].pid = os_getpid(); + default_idle(); } - void schedule_tail(task_t *prev); +@@ -160,11 +221,11 @@ - static void new_thread_handler(int sig) + int start_uml_skas(void) { -+ unsigned long disable; - int (*fn)(void *); - void *arg; - - fn = current->thread.request.u.thread.proc; - arg = current->thread.request.u.thread.arg; -+ - UPT_SC(¤t->thread.regs.regs) = (void *) (&sig + 1); -+ disable = (1 << (SIGVTALRM - 1)) | (1 << (SIGALRM - 1)) | -+ (1 << (SIGIO - 1)) | (1 << (SIGPROF - 1)); -+ SC_SIGMASK(UPT_SC(¤t->thread.regs.regs)) &= ~disable; -+ - suspend_new_thread(current->thread.mode.tt.switch_pipe[0]); +- start_userspace(); ++ start_userspace(0); + capture_signal_stack(); ++ uml_idle_timer(); -- block_signals(); -+ force_flush_all(); -+ if(current->thread.prev_sched != NULL) -+ schedule_tail(current->thread.prev_sched); -+ current->thread.prev_sched = NULL; -+ init_new_thread_signals(1); --#ifdef CONFIG_SMP -- schedule_tail(current->thread.prev_sched); --#endif - enable_timer(); - free_page(current->thread.temp_stack); - set_cmdline("(kernel thread)"); -- force_flush_all(); +- idle_timer(); -- current->thread.prev_sched = NULL; - change_sig(SIGUSR1, 1); - change_sig(SIGVTALRM, 1); - change_sig(SIGPROF, 1); -- unblock_signals(); -+ local_irq_enable(); - if(!run_kernel_thread(fn, arg, ¤t->thread.exec_buf)) - do_exit(0); + init_task.thread.request.u.thread.proc = start_kernel_proc; + init_task.thread.request.u.thread.arg = NULL; +@@ -175,12 +236,14 @@ + + int external_pid_skas(struct task_struct *task) + { +- return(userspace_pid); ++#warning Need to look up userspace_pid by cpu ++ return(userspace_pid[0]); } - static int new_thread_proc(void *stack) + int thread_pid_skas(struct task_struct *task) { -+ /* local_irq_disable is needed to block out signals until this thread is -+ * properly scheduled. Otherwise, the tracing thread will get mighty -+ * upset about any signals that arrive before that. -+ * This has the complication that it sets the saved signal mask in -+ * the sigcontext to block signals. This gets restored when this -+ * thread (or a descendant, since they get a copy of this sigcontext) -+ * returns to userspace. -+ * So, this is compensated for elsewhere. -+ * XXX There is still a small window until local_irq_disable() actually -+ * finishes where signals are possible - shouldn't be a problem in -+ * practice since SIGIO hasn't been forwarded here yet, and the -+ * local_irq_disable should finish before a SIGVTALRM has time to be -+ * delivered. -+ */ -+ -+ local_irq_disable(); - init_new_thread_stack(stack, new_thread_handler); - os_usr1_process(os_getpid()); +- return(userspace_pid); ++#warning Need to look up userspace_pid by cpu ++ return(userspace_pid[0]); + } + + /* +Index: uml-2.6.7/arch/um/kernel/helper.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/helper.c 2004-07-16 19:36:40.052057624 +0300 ++++ uml-2.6.7/arch/um/kernel/helper.c 2004-07-16 19:47:24.798041336 +0300 +@@ -7,12 +7,12 @@ + #include + #include + #include +-#include + #include + #include + #include + #include "user.h" + #include "kern_util.h" ++#include "user_util.h" + #include "os.h" + + struct helper_data { +@@ -33,6 +33,7 @@ + { + struct helper_data *data = arg; + char **argv = data->argv; ++ int errval; + + if(helper_pause){ + signal(SIGHUP, helper_hup); +@@ -41,8 +42,9 @@ + if(data->pre_exec != NULL) + (*data->pre_exec)(data->pre_data); + execvp(argv[0], argv); ++ errval = errno; + printk("execvp of '%s' failed - errno = %d\n", argv[0], errno); +- write(data->fd, &errno, sizeof(errno)); ++ os_write_file(data->fd, &errval, sizeof(errval)); + os_kill_process(os_getpid(), 0); return(0); -@@ -156,7 +180,7 @@ - * itself with a SIGUSR1. set_user_mode has to be run with SIGUSR1 off, - * so it is blocked before it's called. They are re-enabled on sigreturn - * despite the fact that they were blocked when the SIGUSR1 was issued because -- * copy_thread copies the parent's signcontext, including the signal mask -+ * copy_thread copies the parent's sigcontext, including the signal mask - * onto the signal frame. - */ + } +@@ -59,17 +61,20 @@ + if((stack_out != NULL) && (*stack_out != 0)) + stack = *stack_out; + else stack = alloc_stack(0, um_in_interrupt()); +- if(stack == 0) return(-ENOMEM); ++ if(stack == 0) ++ return(-ENOMEM); -@@ -165,35 +189,32 @@ - UPT_SC(¤t->thread.regs.regs) = (void *) (&sig + 1); - suspend_new_thread(current->thread.mode.tt.switch_pipe[0]); + err = os_pipe(fds, 1, 0); +- if(err){ +- printk("run_helper : pipe failed, errno = %d\n", -err); +- return(err); ++ if(err < 0){ ++ printk("run_helper : pipe failed, err = %d\n", -err); ++ goto out_free; + } +- if(fcntl(fds[1], F_SETFD, 1) != 0){ +- printk("run_helper : setting FD_CLOEXEC failed, errno = %d\n", +- errno); +- return(-errno); ++ ++ err = os_set_exec_close(fds[1], 1); ++ if(err < 0){ ++ printk("run_helper : setting FD_CLOEXEC failed, err = %d\n", ++ -err); ++ goto out_close; + } --#ifdef CONFIG_SMP -- schedule_tail(NULL); --#endif -+ force_flush_all(); -+ if(current->thread.prev_sched != NULL) -+ schedule_tail(current->thread.prev_sched); -+ current->thread.prev_sched = NULL; + sp = stack + page_size() - sizeof(void *); +@@ -80,23 +85,34 @@ + pid = clone(helper_child, (void *) sp, CLONE_VM | SIGCHLD, &data); + if(pid < 0){ + printk("run_helper : clone failed, errno = %d\n", errno); +- return(-errno); ++ err = -errno; ++ goto out_close; + } +- close(fds[1]); +- n = read(fds[0], &err, sizeof(err)); ++ ++ os_close_file(fds[1]); ++ n = os_read_file(fds[0], &err, sizeof(err)); + if(n < 0){ +- printk("run_helper : read on pipe failed, errno = %d\n", +- errno); +- return(-errno); ++ printk("run_helper : read on pipe failed, err = %d\n", -n); ++ err = n; ++ goto out_kill; + } + else if(n != 0){ +- waitpid(pid, NULL, 0); +- pid = -err; ++ CATCH_EINTR(n = waitpid(pid, NULL, 0)); ++ pid = -errno; + } + + if(stack_out == NULL) free_stack(stack, 0); + else *stack_out = stack; + return(pid); ++ ++ out_kill: ++ os_kill_process(pid, 1); ++ out_close: ++ os_close_file(fds[0]); ++ os_close_file(fds[1]); ++ out_free: ++ free_stack(stack, 0); ++ return(err); + } + + int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, +@@ -117,9 +133,11 @@ + } + if(stack_out == NULL){ + pid = waitpid(pid, &status, 0); +- if(pid < 0) ++ if(pid < 0){ + printk("run_helper_thread - wait failed, errno = %d\n", +- pid); ++ errno); ++ pid = -errno; ++ } + if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)) + printk("run_helper_thread - thread returned status " + "0x%x\n", status); +Index: uml-2.6.7/arch/um/drivers/fd.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/fd.c 2004-07-16 19:37:38.077236456 +0300 ++++ uml-2.6.7/arch/um/drivers/fd.c 2004-07-16 19:47:23.681211120 +0300 +@@ -35,7 +35,8 @@ + printk("fd_init : couldn't parse file descriptor '%s'\n", str); + return(NULL); + } +- if((data = um_kmalloc(sizeof(*data))) == NULL) return(NULL); ++ data = um_kmalloc(sizeof(*data)); ++ if(data == NULL) return(NULL); + *data = ((struct fd_chan) { .fd = n, + .raw = opts->raw }); + return(data); +Index: uml-2.6.7/arch/um/include/kern_util.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/kern_util.h 2004-07-16 19:36:25.260306312 +0300 ++++ uml-2.6.7/arch/um/include/kern_util.h 2004-07-16 19:47:23.702207928 +0300 +@@ -60,12 +60,11 @@ + extern void paging_init(void); + extern void init_flush_vm(void); + extern void *syscall_sp(void *t); +-extern void syscall_trace(void); ++extern void syscall_trace(union uml_pt_regs *regs, int entryexit); + extern int hz(void); +-extern void idle_timer(void); ++extern void uml_idle_timer(void); + extern unsigned int do_IRQ(int irq, union uml_pt_regs *regs); + extern int external_pid(void *t); +-extern int pid_to_processor_id(int pid); + extern void boot_timer_handler(int sig); + extern void interrupt_end(void); + extern void initial_thread_cb(void (*proc)(void *), void *arg); +@@ -89,9 +88,7 @@ + extern char *uml_strdup(char *string); + extern void unprotect_kernel_mem(void); + extern void protect_kernel_mem(void); +-extern void set_kmem_end(unsigned long); + extern void uml_cleanup(void); +-extern int pid_to_processor_id(int pid); + extern void set_current(void *t); + extern void lock_signalled_task(void *t); + extern void IPI_handler(int cpu); +@@ -100,7 +97,9 @@ + extern int clear_user_proc(void *buf, int size); + extern int copy_to_user_proc(void *to, void *from, int size); + extern int copy_from_user_proc(void *to, void *from, int size); ++extern int strlen_user_proc(char *str); + extern void bus_handler(int sig, union uml_pt_regs *regs); ++extern void winch(int sig, union uml_pt_regs *regs); + extern long execute_syscall(void *r); + extern int smp_sigio_handler(void); + extern void *get_current(void); +@@ -111,6 +110,8 @@ + extern void free_irq(unsigned int, void *); + extern int um_in_interrupt(void); + extern int cpu(void); ++extern unsigned long long time_stamp(void); + - enable_timer(); - change_sig(SIGVTALRM, 1); - local_irq_enable(); -- force_flush_all(); - if(current->mm != current->parent->mm) - protect_memory(uml_reserved, high_physmem - uml_reserved, 1, - 1, 0, 1); -- task_protections((unsigned long) current->thread_info); -- -- current->thread.prev_sched = NULL; -+ task_protections((unsigned long) current_thread); + #endif - free_page(current->thread.temp_stack); -+ local_irq_disable(); - change_sig(SIGUSR1, 0); - set_user_mode(current); - } + /* +Index: uml-2.6.7/include/asm-um/sections.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/sections.h 2004-07-16 19:47:23.634218264 +0300 ++++ uml-2.6.7/include/asm-um/sections.h 2004-07-16 19:47:23.795193792 +0300 +@@ -0,0 +1,7 @@ ++#ifndef _UM_SECTIONS_H ++#define _UM_SECTIONS_H ++ ++/* nothing to see, move along */ ++#include ++ ++#endif +Index: uml-2.6.7/include/asm-um/pgtable.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/pgtable.h 2004-07-16 19:37:51.945128216 +0300 ++++ uml-2.6.7/include/asm-um/pgtable.h 2004-07-16 19:47:23.793194096 +0300 +@@ -12,8 +12,6 @@ + #include "asm/page.h" + #include "asm/fixmap.h" --static int sigusr1 = SIGUSR1; -- - int fork_tramp(void *stack) - { -- int sig = sigusr1; +-extern pgd_t swapper_pg_dir[1024]; - - local_irq_disable(); -+ arch_init_thread(); - init_new_thread_stack(stack, finish_fork_handler); - -- kill(os_getpid(), sig); -+ os_usr1_process(os_getpid()); - return(0); - } - -@@ -213,8 +234,8 @@ - } + extern void *um_virt_to_phys(struct task_struct *task, unsigned long virt, + pte_t *pte_out); - err = os_pipe(p->thread.mode.tt.switch_pipe, 1, 1); -- if(err){ -- printk("copy_thread : pipe failed, errno = %d\n", -err); -+ if(err < 0){ -+ printk("copy_thread : pipe failed, err = %d\n", -err); - return(err); - } +@@ -49,6 +47,8 @@ + #define pgd_ERROR(e) \ + printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) -@@ -377,8 +398,8 @@ ++extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; ++ + /* + * pgd entries used up by user/kernel: + */ +@@ -65,10 +65,10 @@ + * area for the same reason. ;) + */ - pages = (1 << CONFIG_KERNEL_STACK_ORDER); +-extern unsigned long high_physmem; ++extern unsigned long end_iomem; -- start = (unsigned long) current->thread_info + PAGE_SIZE; -- end = (unsigned long) current + PAGE_SIZE * pages; -+ start = (unsigned long) current_thread + PAGE_SIZE; -+ end = (unsigned long) current_thread + PAGE_SIZE * pages; - protect_memory(uml_reserved, start - uml_reserved, 1, w, 1, 1); - protect_memory(end, high_physmem - end, 1, w, 1, 1); + #define VMALLOC_OFFSET (__va_space) +-#define VMALLOC_START (((unsigned long) high_physmem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) ++#define VMALLOC_START ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) -@@ -454,8 +475,9 @@ + #ifdef CONFIG_HIGHMEM + # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) +@@ -78,12 +78,13 @@ - init_task.thread.mode.tt.extern_pid = pid; - err = os_pipe(init_task.thread.mode.tt.switch_pipe, 1, 1); -- if(err) panic("Can't create switch pipe for init_task, errno = %d", -- err); -+ if(err) -+ panic("Can't create switch pipe for init_task, errno = %d", -+ -err); - } + #define _PAGE_PRESENT 0x001 + #define _PAGE_NEWPAGE 0x002 +-#define _PAGE_PROTNONE 0x004 /* If not present */ +-#define _PAGE_RW 0x008 +-#define _PAGE_USER 0x010 +-#define _PAGE_ACCESSED 0x020 +-#define _PAGE_DIRTY 0x040 +-#define _PAGE_NEWPROT 0x080 ++#define _PAGE_NEWPROT 0x004 ++#define _PAGE_FILE 0x008 /* set:pagecache unset:swap */ ++#define _PAGE_PROTNONE 0x010 /* If not present */ ++#define _PAGE_RW 0x020 ++#define _PAGE_USER 0x040 ++#define _PAGE_ACCESSED 0x080 ++#define _PAGE_DIRTY 0x100 - int singlestepping_tt(void *t) -diff -Naur a/arch/um/kernel/tt/ptproxy/Makefile b/arch/um/kernel/tt/ptproxy/Makefile ---- a/arch/um/kernel/tt/ptproxy/Makefile 2004-03-10 08:21:01.000000000 -0500 -+++ b/arch/um/kernel/tt/ptproxy/Makefile 2004-03-10 08:37:43.000000000 -0500 -@@ -9,5 +9,3 @@ + #define REGION_MASK 0xf0000000 + #define REGION_SHIFT 28 +@@ -143,7 +144,8 @@ - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean: -diff -Naur a/arch/um/kernel/tt/ptproxy/proxy.c b/arch/um/kernel/tt/ptproxy/proxy.c ---- a/arch/um/kernel/tt/ptproxy/proxy.c 2004-03-10 08:21:45.000000000 -0500 -+++ b/arch/um/kernel/tt/ptproxy/proxy.c 2004-03-10 08:40:20.000000000 -0500 -@@ -15,7 +15,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -293,10 +292,10 @@ - } + #define BAD_PAGETABLE __bad_pagetable() + #define BAD_PAGE __bad_page() +-#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) ++ ++#define ZERO_PAGE(vaddr) virt_to_page(empty_zero_page) - char gdb_init_string[] = --"att 1 --b panic --b stop --handle SIGWINCH nostop noprint pass -+"att 1 \n\ -+b panic \n\ -+b stop \n\ -+handle SIGWINCH nostop noprint pass \n\ - "; + /* number of bits that fit into a memory pointer */ + #define BITS_PER_PTR (8*sizeof(unsigned long)) +@@ -164,9 +166,6 @@ - int start_debugger(char *prog, int startup, int stop, int *fd_out) -@@ -304,7 +303,8 @@ - int slave, child; + #define pte_clear(xp) do { pte_val(*(xp)) = _PAGE_NEWPAGE; } while (0) - slave = open_gdb_chan(); -- if((child = fork()) == 0){ -+ child = fork(); -+ if(child == 0){ - char *tempname = NULL; - int fd; +-#define phys_region_index(x) (((x) & REGION_MASK) >> REGION_SHIFT) +-#define pte_region_index(x) phys_region_index(pte_val(x)) +- + #define pmd_none(x) (!(pmd_val(x) & ~_PAGE_NEWPAGE)) + #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) + #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT) +@@ -188,19 +187,25 @@ -@@ -327,18 +327,19 @@ - exit(1); - #endif - } -- if((fd = make_tempfile("/tmp/gdb_init-XXXXXX", &tempname, 0)) < 0){ -- printk("start_debugger : make_tempfile failed, errno = %d\n", -- errno); -+ fd = make_tempfile("/tmp/gdb_init-XXXXXX", &tempname, 0); -+ if(fd < 0){ -+ printk("start_debugger : make_tempfile failed," -+ "err = %d\n", -fd); - exit(1); - } -- write(fd, gdb_init_string, sizeof(gdb_init_string) - 1); -+ os_write_file(fd, gdb_init_string, sizeof(gdb_init_string) - 1); - if(startup){ - if(stop){ -- write(fd, "b start_kernel\n", -+ os_write_file(fd, "b start_kernel\n", - strlen("b start_kernel\n")); - } -- write(fd, "c\n", strlen("c\n")); -+ os_write_file(fd, "c\n", strlen("c\n")); - } - if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){ - printk("start_debugger : PTRACE_TRACEME failed, " -diff -Naur a/arch/um/kernel/tt/ptproxy/sysdep.c b/arch/um/kernel/tt/ptproxy/sysdep.c ---- a/arch/um/kernel/tt/ptproxy/sysdep.c 2004-03-10 08:22:30.000000000 -0500 -+++ b/arch/um/kernel/tt/ptproxy/sysdep.c 2004-03-10 08:42:11.000000000 -0500 -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - #include - #include - #include -diff -Naur a/arch/um/kernel/tt/ptproxy/wait.c b/arch/um/kernel/tt/ptproxy/wait.c ---- a/arch/um/kernel/tt/ptproxy/wait.c 2004-03-10 08:22:45.000000000 -0500 -+++ b/arch/um/kernel/tt/ptproxy/wait.c 2004-03-10 08:43:20.000000000 -0500 -@@ -56,21 +56,23 @@ - int real_wait_return(struct debugger *debugger) - { - unsigned long ip; -- int err, pid; -+ int pid; + #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) - pid = debugger->pid; +-extern struct page *pte_mem_map(pte_t pte); +-extern struct page *phys_mem_map(unsigned long phys); +-extern unsigned long phys_to_pfn(unsigned long p); +-extern unsigned long pfn_to_phys(unsigned long pfn); +- +-#define pte_page(x) pfn_to_page(pte_pfn(x)) +-#define pte_address(x) (__va(pte_val(x) & PAGE_MASK)) +-#define mk_phys(a, r) ((a) + (r << REGION_SHIFT)) +-#define phys_addr(p) ((p) & ~REGION_MASK) +-#define phys_page(p) (phys_mem_map(p) + ((phys_addr(p)) >> PAGE_SHIFT)) ++#define pte_page(pte) phys_to_page(pte_val(pte)) ++#define pmd_page(pmd) phys_to_page(pmd_val(pmd) & PAGE_MASK) + - ip = ptrace(PTRACE_PEEKUSER, pid, PT_IP_OFFSET, 0); -- ip = IP_RESTART_SYSCALL(ip); -- err = ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip); -+ IP_RESTART_SYSCALL(ip); + #define pte_pfn(x) phys_to_pfn(pte_val(x)) + #define pfn_pte(pfn, prot) __pte(pfn_to_phys(pfn) | pgprot_val(prot)) +-#define pfn_pmd(pfn, prot) __pmd(pfn_to_phys(pfn) | pgprot_val(prot)) + - if(ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip) < 0) - tracer_panic("real_wait_return : Failed to restart system " -- "call, errno = %d\n"); -+ "call, errno = %d\n", errno); ++extern struct page *phys_to_page(const unsigned long phys); ++extern struct page *__virt_to_page(const unsigned long virt); ++#define virt_to_page(addr) __virt_to_page((const unsigned long) addr) ++ ++/* ++ * Bits 0 through 3 are taken ++ */ ++#define PTE_FILE_MAX_BITS 28 ++ ++#define pte_to_pgoff(pte) ((pte).pte_low >> 4) ++ ++#define pgoff_to_pte(off) \ ++ ((pte_t) { ((off) << 4) + _PAGE_FILE }) + + static inline pte_t pte_mknewprot(pte_t pte) + { +@@ -235,6 +240,12 @@ + * The following only work if pte_present() is true. + * Undefined behaviour if not.. + */ ++static inline int pte_user(pte_t pte) ++{ ++ return((pte_val(pte) & _PAGE_USER) && ++ !(pte_val(pte) & _PAGE_PROTNONE)); ++} + - if((ptrace(PTRACE_SYSCALL, debugger->pid, 0, SIGCHLD) < 0) || - (ptrace(PTRACE_SYSCALL, debugger->pid, 0, 0) < 0) || - (ptrace(PTRACE_SYSCALL, debugger->pid, 0, 0) < 0) || - debugger_normal_return(debugger, -1)) - tracer_panic("real_wait_return : gdb failed to wait, " -- "errno = %d\n"); -+ "errno = %d\n", errno); - return(0); + static inline int pte_read(pte_t pte) + { + return((pte_val(pte) & _PAGE_USER) && +@@ -252,6 +263,14 @@ + !(pte_val(pte) & _PAGE_PROTNONE)); } -diff -Naur a/arch/um/kernel/tt/syscall_kern.c b/arch/um/kernel/tt/syscall_kern.c ---- a/arch/um/kernel/tt/syscall_kern.c 2004-03-10 08:20:12.000000000 -0500 -+++ b/arch/um/kernel/tt/syscall_kern.c 2004-03-10 08:33:34.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL ++/* ++ * The following only works if pte_present() is not true. ++ */ ++static inline int pte_file(pte_t pte) ++{ ++ return (pte).pte_low & _PAGE_FILE; ++} ++ + static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } + static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } + static inline int pte_newpage(pte_t pte) { return pte_val(pte) & _PAGE_NEWPAGE; } +@@ -334,14 +353,7 @@ + * and a page entry and page directory to the page they refer to. */ -diff -Naur a/arch/um/kernel/tt/sys-i386/Makefile b/arch/um/kernel/tt/sys-i386/Makefile ---- a/arch/um/kernel/tt/sys-i386/Makefile 2004-03-10 08:21:04.000000000 -0500 -+++ b/arch/um/kernel/tt/sys-i386/Makefile 2004-03-10 08:38:18.000000000 -0500 -@@ -10,5 +10,3 @@ - - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean : -diff -Naur a/arch/um/kernel/tt/tlb.c b/arch/um/kernel/tt/tlb.c ---- a/arch/um/kernel/tt/tlb.c 2004-03-10 08:20:20.000000000 -0500 -+++ b/arch/um/kernel/tt/tlb.c 2004-03-10 08:34:20.000000000 -0500 -@@ -10,6 +10,7 @@ - #include "asm/page.h" - #include "asm/pgtable.h" - #include "asm/uaccess.h" -+#include "asm/tlbflush.h" - #include "user_util.h" - #include "mem_user.h" - #include "os.h" -diff -Naur a/arch/um/kernel/tt/tracer.c b/arch/um/kernel/tt/tracer.c ---- a/arch/um/kernel/tt/tracer.c 2004-03-10 08:20:15.000000000 -0500 -+++ b/arch/um/kernel/tt/tracer.c 2004-03-10 08:34:04.000000000 -0500 -@@ -39,16 +39,17 @@ - return(0); +-#define mk_pte(page, pgprot) \ +-({ \ +- pte_t __pte; \ +- \ +- pte_val(__pte) = page_to_phys(page) + pgprot_val(pgprot);\ +- if(pte_present(__pte)) pte_mknewprot(pte_mknewpage(__pte)); \ +- __pte; \ +-}) ++extern pte_t mk_pte(struct page *page, pgprot_t pgprot); - register_winch_irq(tracer_winch[0], fd, -1, data); -- return(0); -+ return(1); + static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) + { +@@ -351,17 +363,27 @@ } - static void tracer_winch_handler(int sig) - { -+ int n; - char c = 1; + #define pmd_page_kernel(pmd) ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK)) +-#define pmd_page(pmd) (phys_mem_map(pmd_val(pmd) & PAGE_MASK) + \ +- ((phys_addr(pmd_val(pmd)) >> PAGE_SHIFT))) -- if(write(tracer_winch[1], &c, sizeof(c)) != sizeof(c)) -- printk("tracer_winch_handler - write failed, errno = %d\n", -- errno); -+ n = os_write_file(tracer_winch[1], &c, sizeof(c)); -+ if(n != sizeof(c)) -+ printk("tracer_winch_handler - write failed, err = %d\n", -n); +-/* to find an entry in a page-table-directory. */ ++/* ++ * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD] ++ * ++ * this macro returns the index of the entry in the pgd page which would ++ * control the given virtual address ++ */ + #define pgd_index(address) ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) + +-/* to find an entry in a page-table-directory */ ++/* ++ * pgd_offset() returns a (pgd_t *) ++ * pgd_index() is used get the offset into the pgd page's array of pgd_t's; ++ */ + #define pgd_offset(mm, address) \ + ((mm)->pgd + ((address) >> PGDIR_SHIFT)) + +-/* to find an entry in a kernel page-table-directory */ ++ ++/* ++ * a shortcut which implies the use of the kernel's pgd, instead ++ * of a process's ++ */ + #define pgd_offset_k(address) pgd_offset(&init_mm, address) + + #define pmd_index(address) \ +@@ -373,7 +395,12 @@ + return (pmd_t *) dir; } - /* Called only by the tracing thread during initialization */ -@@ -58,9 +59,8 @@ - int err; +-/* Find an entry in the third-level page table.. */ ++/* ++ * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE] ++ * ++ * this macro returns the index of the entry in the pte page which would ++ * control the given virtual address ++ */ + #define pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) + #define pte_offset_kernel(dir, address) \ + ((pte_t *) pmd_page_kernel(*(dir)) + pte_index(address)) +@@ -387,11 +414,11 @@ + #define update_mmu_cache(vma,address,pte) do ; while (0) - err = os_pipe(tracer_winch, 1, 1); -- if(err){ -- printk("setup_tracer_winch : os_pipe failed, errno = %d\n", -- -err); -+ if(err < 0){ -+ printk("setup_tracer_winch : os_pipe failed, err = %d\n", -err); - return; - } - signal(SIGWINCH, tracer_winch_handler); -@@ -130,8 +130,8 @@ - case SIGTSTP: - if(ptrace(PTRACE_CONT, pid, 0, sig) < 0) - tracer_panic("sleeping_process_signal : Failed to " -- "continue pid %d, errno = %d\n", pid, -- sig); -+ "continue pid %d, signal = %d, " -+ "errno = %d\n", pid, sig, errno); - break; + /* Encode and de-code a swap entry */ +-#define __swp_type(x) (((x).val >> 3) & 0x7f) +-#define __swp_offset(x) ((x).val >> 10) ++#define __swp_type(x) (((x).val >> 4) & 0x3f) ++#define __swp_offset(x) ((x).val >> 11) + + #define __swp_entry(type, offset) \ +- ((swp_entry_t) { ((type) << 3) | ((offset) << 10) }) ++ ((swp_entry_t) { ((type) << 4) | ((offset) << 11) }) + #define __pte_to_swp_entry(pte) \ + ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) }) + #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) +Index: uml-2.6.7/arch/um/Kconfig_char +=================================================================== +--- uml-2.6.7.orig/arch/um/Kconfig_char 2004-07-16 19:36:33.679026472 +0300 ++++ uml-2.6.7/arch/um/Kconfig_char 2004-07-16 19:47:24.069152144 +0300 +@@ -108,11 +108,60 @@ + + config UNIX98_PTYS + bool "Unix98 PTY support" +- +-config UNIX98_PTY_COUNT +- int "Maximum number of Unix98 PTYs in use (0-2048)" +- depends on UNIX98_PTYS ++ ---help--- ++ A pseudo terminal (PTY) is a software device consisting of two ++ halves: a master and a slave. The slave device behaves identical to ++ a physical terminal; the master device is used by a process to ++ read data from and write data to the slave, thereby emulating a ++ terminal. Typical programs for the master side are telnet servers ++ and xterms. ++ ++ Linux has traditionally used the BSD-like names /dev/ptyxx for ++ masters and /dev/ttyxx for slaves of pseudo terminals. This scheme ++ has a number of problems. The GNU C library glibc 2.1 and later, ++ however, supports the Unix98 naming standard: in order to acquire a ++ pseudo terminal, a process opens /dev/ptmx; the number of the pseudo ++ terminal is then made available to the process and the pseudo ++ terminal slave can be accessed as /dev/pts/. What was ++ traditionally /dev/ttyp2 will then be /dev/pts/2, for example. ++ ++ All modern Linux systems use the Unix98 ptys. Say Y unless ++ you're on an embedded system and want to conserve memory. ++ ++config LEGACY_PTYS ++ bool "Legacy (BSD) PTY support" ++ default y ++ ---help--- ++ A pseudo terminal (PTY) is a software device consisting of two ++ halves: a master and a slave. The slave device behaves identical to ++ a physical terminal; the master device is used by a process to ++ read data from and write data to the slave, thereby emulating a ++ terminal. Typical programs for the master side are telnet servers ++ and xterms. ++ ++ Linux has traditionally used the BSD-like names /dev/ptyxx ++ for masters and /dev/ttyxx for slaves of pseudo ++ terminals. This scheme has a number of problems, including ++ security. This option enables these legacy devices; on most ++ systems, it is safe to say N. ++ ++ ++config LEGACY_PTY_COUNT ++ int "Maximum number of legacy PTY in use" ++ depends on LEGACY_PTYS + default "256" ++ ---help--- ++ The maximum number of legacy PTYs that can be used at any one time. ++ The default is 256, and should be more than enough. Embedded ++ systems may want to reduce this to save memory. ++ ++ When not in use, each legacy PTY occupies 12 bytes on 32-bit ++ architectures and 24 bytes on 64-bit architectures. ++ ++#config UNIX98_PTY_COUNT ++# int "Maximum number of Unix98 PTYs in use (0-2048)" ++# depends on UNIX98_PTYS ++# default "256" + + config WATCHDOG + bool "Watchdog Timer Support" +Index: uml-2.6.7/arch/um/kernel/user_util.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/user_util.c 2004-07-16 19:36:07.233046872 +0300 ++++ uml-2.6.7/arch/um/kernel/user_util.c 2004-07-16 19:47:24.794041944 +0300 +@@ -5,7 +5,6 @@ + + #include + #include +-#include + #include + #include + #include +@@ -82,10 +81,10 @@ + int status, ret; - /* This happens when the debugger (e.g. strace) is doing system call -@@ -145,7 +145,7 @@ - if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) - tracer_panic("sleeping_process_signal : Failed to " - "PTRACE_SYSCALL pid %d, errno = %d\n", -- pid, sig); -+ pid, errno); - break; - case SIGSTOP: - break; -@@ -218,7 +218,7 @@ - err = attach(debugger_parent); - if(err){ - printf("Failed to attach debugger parent %d, " -- "errno = %d\n", debugger_parent, err); -+ "errno = %d\n", debugger_parent, -err); - debugger_parent = -1; - } - else { -@@ -233,7 +233,8 @@ - } - set_cmdline("(tracing thread)"); while(1){ -- if((pid = waitpid(-1, &status, WUNTRACED)) <= 0){ -+ pid = waitpid(-1, &status, WUNTRACED); -+ if(pid <= 0){ - if(errno != ECHILD){ - printf("wait failed - errno = %d\n", errno); +- if(((ret = waitpid(pid, &status, WUNTRACED)) < 0) || ++ CATCH_EINTR(ret = waitpid(pid, &status, WUNTRACED)); ++ if((ret < 0) || + !WIFSTOPPED(status) || (WSTOPSIG(status) != sig)){ + if(ret < 0){ +- if(errno == EINTR) continue; + printk("wait failed, errno = %d\n", + errno); } -@@ -401,7 +402,7 @@ - - if(!strcmp(line, "go")) debug_stop = 0; - else if(!strcmp(line, "parent")) debug_parent = 1; -- else printk("Unknown debug option : '%s'\n", line); -+ else printf("Unknown debug option : '%s'\n", line); - - line = next; +@@ -119,29 +118,36 @@ } -diff -Naur a/arch/um/kernel/tt/uaccess.c b/arch/um/kernel/tt/uaccess.c ---- a/arch/um/kernel/tt/uaccess.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/kernel/tt/uaccess.c 2004-03-10 08:34:01.000000000 -0500 -@@ -0,0 +1,73 @@ -+/* -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) -+ * Licensed under the GPL -+ */ -+ -+#include "linux/sched.h" -+#include "asm/uaccess.h" -+ -+int copy_from_user_tt(void *to, const void *from, int n) -+{ -+ if(!access_ok_tt(VERIFY_READ, from, n)) -+ return(n); -+ -+ return(__do_copy_from_user(to, from, n, ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)); -+} -+ -+int copy_to_user_tt(void *to, const void *from, int n) -+{ -+ if(!access_ok_tt(VERIFY_WRITE, to, n)) -+ return(n); -+ -+ return(__do_copy_to_user(to, from, n, ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)); -+} -+ -+int strncpy_from_user_tt(char *dst, const char *src, int count) -+{ -+ int n; -+ -+ if(!access_ok_tt(VERIFY_READ, src, 1)) -+ return(-EFAULT); -+ -+ n = __do_strncpy_from_user(dst, src, count, -+ ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher); -+ if(n < 0) return(-EFAULT); -+ return(n); -+} -+ -+int __clear_user_tt(void *mem, int len) -+{ -+ return(__do_clear_user(mem, len, -+ ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)); -+} + } + +-int clone_and_wait(int (*fn)(void *), void *arg, void *sp, int flags) +-{ +- int pid; +- +- pid = clone(fn, sp, flags, arg); +- if(pid < 0) return(-1); +- wait_for_stop(pid, SIGSTOP, PTRACE_CONT, NULL); +- ptrace(PTRACE_CONT, pid, 0, 0); +- return(pid); +-} +- +-int raw(int fd, int complain) ++int __raw(int fd, int complain, int now) + { + struct termios tt; + int err; ++ int when; + -+int clear_user_tt(void *mem, int len) -+{ -+ if(!access_ok_tt(VERIFY_WRITE, mem, len)) -+ return(len); ++ CATCH_EINTR(err = tcgetattr(fd, &tt)); + -+ return(__do_clear_user(mem, len, ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)); -+} ++ if (err < 0) { ++ if (complain) ++ printk("tcgetattr failed, errno = %d\n", errno); ++ return(-errno); ++ } + +- tcgetattr(fd, &tt); + cfmakeraw(&tt); +- err = tcsetattr(fd, TCSANOW, &tt); +- if((err < 0) && complain){ +- printk("tcsetattr failed, errno = %d\n", errno); + -+int strnlen_user_tt(const void *str, int len) -+{ -+ return(__do_strnlen_user(str, len, -+ ¤t->thread.fault_addr, -+ ¤t->thread.fault_catcher)); -+} ++ if (now) ++ when = TCSANOW; ++ else ++ when = TCSADRAIN; + -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/arch/um/kernel/tt/uaccess_user.c b/arch/um/kernel/tt/uaccess_user.c ---- a/arch/um/kernel/tt/uaccess_user.c 2004-03-10 08:20:54.000000000 -0500 -+++ b/arch/um/kernel/tt/uaccess_user.c 2004-03-10 08:37:06.000000000 -0500 -@@ -8,15 +8,20 @@ ++ CATCH_EINTR(err = tcsetattr(fd, when, &tt)); ++ ++ if (err < 0) { ++ if (complain) ++ printk("tcsetattr failed, errno = %d\n", errno); + return(-errno); + } ++ /*XXX: tcsetattr could have applied only some changes ++ * (and cfmakeraw() is a set of changes) */ + return(0); + } + +Index: uml-2.6.7/arch/um/kernel/umid.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/umid.c 2004-07-16 19:37:31.857182048 +0300 ++++ uml-2.6.7/arch/um/kernel/umid.c 2004-07-16 19:47:23.756199720 +0300 +@@ -5,7 +5,6 @@ + + #include + #include +-#include + #include #include - #include "user_util.h" - #include "uml_uaccess.h" -+#include "task.h" -+#include "kern_util.h" + #include +@@ -33,18 +32,19 @@ + static int umid_is_random = 1; + static int umid_inited = 0; - int __do_copy_from_user(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher) - { -+ struct tt_regs save = TASK_REGS(get_current())->tt; - unsigned long fault; - int faulted; +-static int make_umid(void); ++static int make_umid(int (*printer)(const char *fmt, ...)); - fault = __do_user_copy(to, from, n, fault_addr, fault_catcher, - __do_copy, &faulted); -+ TASK_REGS(get_current())->tt = save; -+ - if(!faulted) return(0); - else return(n - (fault - (unsigned long) from)); - } -@@ -29,11 +34,14 @@ - int __do_strncpy_from_user(char *dst, const char *src, unsigned long count, - void **fault_addr, void **fault_catcher) +-static int __init set_umid(char *name, int is_random) ++static int __init set_umid(char *name, int is_random, ++ int (*printer)(const char *fmt, ...)) { -+ struct tt_regs save = TASK_REGS(get_current())->tt; - unsigned long fault; - int faulted; + if(umid_inited){ +- printk("Unique machine name can't be set twice\n"); ++ (*printer)("Unique machine name can't be set twice\n"); + return(-1); + } - fault = __do_user_copy(dst, src, count, fault_addr, fault_catcher, - __do_strncpy, &faulted); -+ TASK_REGS(get_current())->tt = save; -+ - if(!faulted) return(strlen(dst)); - else return(-1); + if(strlen(name) > UMID_LEN - 1) +- printk("Unique machine name is being truncated to %s " +- "characters\n", UMID_LEN); ++ (*printer)("Unique machine name is being truncated to %s " ++ "characters\n", UMID_LEN); + strlcpy(umid, name, sizeof(umid)); + + umid_is_random = is_random; +@@ -54,7 +54,7 @@ + + static int __init set_umid_arg(char *name, int *add) + { +- return(set_umid(name, 0)); ++ return(set_umid(name, 0, printf)); } -@@ -46,11 +54,14 @@ - int __do_clear_user(void *mem, unsigned long len, - void **fault_addr, void **fault_catcher) + + __uml_setup("umid=", set_umid_arg, +@@ -67,7 +67,7 @@ { -+ struct tt_regs save = TASK_REGS(get_current())->tt; - unsigned long fault; - int faulted; + int n; - fault = __do_user_copy(mem, NULL, len, fault_addr, fault_catcher, - __do_clear, &faulted); -+ TASK_REGS(get_current())->tt = save; -+ - if(!faulted) return(0); - else return(len - (fault - (unsigned long) mem)); - } -@@ -58,19 +69,20 @@ - int __do_strnlen_user(const char *str, unsigned long n, - void **fault_addr, void **fault_catcher) +- if(!umid_inited && make_umid()) return(-1); ++ if(!umid_inited && make_umid(printk)) return(-1); + + n = strlen(uml_dir) + strlen(umid) + strlen(name) + 1; + if(n > len){ +@@ -85,22 +85,23 @@ { -+ struct tt_regs save = TASK_REGS(get_current())->tt; - int ret; - unsigned long *faddrp = (unsigned long *)fault_addr; - jmp_buf jbuf; + char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; + char pid[sizeof("nnnnn\0")]; +- int fd; ++ int fd, n; - *fault_catcher = &jbuf; -- if(setjmp(jbuf) == 0){ -+ if(sigsetjmp(jbuf, 1) == 0) - ret = strlen(str) + 1; -- } -- else { -- ret = *faddrp - (unsigned long) str; -- } -+ else ret = *faddrp - (unsigned long) str; -+ - *fault_addr = NULL; - *fault_catcher = NULL; -+ -+ TASK_REGS(get_current())->tt = save; - return ret; - } + if(umid_file_name("pid", file, sizeof(file))) return 0; -diff -Naur a/arch/um/kernel/tt/unmap.c b/arch/um/kernel/tt/unmap.c ---- a/arch/um/kernel/tt/unmap.c 2004-03-10 08:22:29.000000000 -0500 -+++ b/arch/um/kernel/tt/unmap.c 2004-03-10 08:42:05.000000000 -0500 -@@ -3,10 +3,7 @@ - * Licensed under the GPL - */ + fd = os_open_file(file, of_create(of_excl(of_rdwr(OPENFLAGS()))), + 0644); + if(fd < 0){ +- printk("Open of machine pid file \"%s\" failed - " +- "errno = %d\n", file, -fd); ++ printf("Open of machine pid file \"%s\" failed - " ++ "err = %d\n", file, -fd); + return 0; + } --#include --#include - #include --#include "user.h" + sprintf(pid, "%d\n", os_getpid()); +- if(write(fd, pid, strlen(pid)) != strlen(pid)) +- printk("Write of pid file failed - errno = %d\n", errno); +- close(fd); ++ n = os_write_file(fd, pid, strlen(pid)); ++ if(n != strlen(pid)) ++ printf("Write of pid file failed - err = %d\n", -n); ++ os_close_file(fd); + return 0; + } - int switcheroo(int fd, int prot, void *from, void *to, int size) +@@ -111,7 +112,8 @@ + int len; + char file[256]; + +- if((directory = opendir(dir)) == NULL){ ++ directory = opendir(dir); ++ if(directory == NULL){ + printk("actually_do_remove : couldn't open directory '%s', " + "errno = %d\n", dir, errno); + return(1); +@@ -160,22 +162,24 @@ { -diff -Naur a/arch/um/kernel/tty_log.c b/arch/um/kernel/tty_log.c ---- a/arch/um/kernel/tty_log.c 2004-03-10 08:21:48.000000000 -0500 -+++ b/arch/um/kernel/tty_log.c 2004-03-10 08:40:25.000000000 -0500 -@@ -9,10 +9,10 @@ - #include - #include - #include --#include - #include - #include "init.h" - #include "user.h" -+#include "kern_util.h" - #include "os.h" + char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; + char pid[sizeof("nnnnn\0")], *end; +- int dead, fd, p; ++ int dead, fd, p, n; - #define TTY_LOG_DIR "./" -@@ -24,29 +24,40 @@ - #define TTY_LOG_OPEN 1 - #define TTY_LOG_CLOSE 2 - #define TTY_LOG_WRITE 3 -+#define TTY_LOG_EXEC 4 -+ -+#define TTY_READ 1 -+#define TTY_WRITE 2 + sprintf(file, "%s/pid", dir); + dead = 0; +- if((fd = os_open_file(file, of_read(OPENFLAGS()), 0)) < 0){ ++ fd = os_open_file(file, of_read(OPENFLAGS()), 0); ++ if(fd < 0){ + if(fd != -ENOENT){ + printk("not_dead_yet : couldn't open pid file '%s', " +- "errno = %d\n", file, -fd); ++ "err = %d\n", file, -fd); + return(1); + } + dead = 1; + } + if(fd > 0){ +- if(read(fd, pid, sizeof(pid)) < 0){ ++ n = os_read_file(fd, pid, sizeof(pid)); ++ if(n < 0){ + printk("not_dead_yet : couldn't read pid file '%s', " +- "errno = %d\n", file, errno); ++ "err = %d\n", file, -n); + return(1); + } + p = strtoul(pid, &end, 0); +@@ -197,7 +201,7 @@ + if((strlen(name) > 0) && (name[strlen(name) - 1] != '/')){ + uml_dir = malloc(strlen(name) + 1); + if(uml_dir == NULL){ +- printk("Failed to malloc uml_dir - error = %d\n", ++ printf("Failed to malloc uml_dir - error = %d\n", + errno); + uml_dir = name; + return(0); +@@ -217,7 +221,7 @@ + char *home = getenv("HOME"); + + if(home == NULL){ +- printk("make_uml_dir : no value in environment for " ++ printf("make_uml_dir : no value in environment for " + "$HOME\n"); + exit(1); + } +@@ -232,57 +236,59 @@ + dir[len + 1] = '\0'; + } - struct tty_log_buf { - int what; - unsigned long tty; - int len; -+ int direction; -+ unsigned long sec; -+ unsigned long usec; - }; +- if((uml_dir = malloc(strlen(dir) + 1)) == NULL){ ++ uml_dir = malloc(strlen(dir) + 1); ++ if(uml_dir == NULL){ + printf("make_uml_dir : malloc failed, errno = %d\n", errno); + exit(1); + } + strcpy(uml_dir, dir); + + if((mkdir(uml_dir, 0777) < 0) && (errno != EEXIST)){ +- printk("Failed to mkdir %s - errno = %i\n", uml_dir, errno); ++ printf("Failed to mkdir %s - errno = %i\n", uml_dir, errno); + return(-1); + } + return 0; + } --int open_tty_log(void *tty) -+int open_tty_log(void *tty, void *current_tty) +-static int __init make_umid(void) ++static int __init make_umid(int (*printer)(const char *fmt, ...)) { - struct timeval tv; - struct tty_log_buf data; - char buf[strlen(tty_log_dir) + sizeof("01234567890-01234567\0")]; - int fd; + int fd, err; + char tmp[strlen(uml_dir) + UMID_LEN + 1]; -+ gettimeofday(&tv, NULL); - if(tty_log_fd != -1){ -- data = ((struct tty_log_buf) { what : TTY_LOG_OPEN, -- tty : (unsigned long) tty, -- len : 0 }); -- write(tty_log_fd, &data, sizeof(data)); -+ data = ((struct tty_log_buf) { .what = TTY_LOG_OPEN, -+ .tty = (unsigned long) tty, -+ .len = sizeof(current_tty), -+ .direction = 0, -+ .sec = tv.tv_sec, -+ .usec = tv.tv_usec } ); -+ os_write_file(tty_log_fd, &data, sizeof(data)); -+ os_write_file(tty_log_fd, ¤t_tty, data.len); - return(tty_log_fd); - } + strlcpy(tmp, uml_dir, sizeof(tmp)); -- gettimeofday(&tv, NULL); - sprintf(buf, "%s/%0u-%0u", tty_log_dir, (unsigned int) tv.tv_sec, - (unsigned int) tv.tv_usec); +- if(*umid == 0){ ++ if(!umid_inited){ + strcat(tmp, "XXXXXX"); + fd = mkstemp(tmp); + if(fd < 0){ +- printk("make_umid - mkstemp failed, errno = %d\n", +- errno); ++ (*printer)("make_umid - mkstemp failed, errno = %d\n", ++ errno); + return(1); + } -@@ -62,30 +73,117 @@ - void close_tty_log(int fd, void *tty) - { - struct tty_log_buf data; -+ struct timeval tv; +- close(fd); ++ os_close_file(fd); + /* There's a nice tiny little race between this unlink and + * the mkdir below. It'd be nice if there were a mkstemp + * for directories. + */ + unlink(tmp); +- set_umid(&tmp[strlen(uml_dir)], 1); ++ set_umid(&tmp[strlen(uml_dir)], 1, printer); + } + + sprintf(tmp, "%s%s", uml_dir, umid); - if(tty_log_fd != -1){ -- data = ((struct tty_log_buf) { what : TTY_LOG_CLOSE, -- tty : (unsigned long) tty, -- len : 0 }); -- write(tty_log_fd, &data, sizeof(data)); -+ gettimeofday(&tv, NULL); -+ data = ((struct tty_log_buf) { .what = TTY_LOG_CLOSE, -+ .tty = (unsigned long) tty, -+ .len = 0, -+ .direction = 0, -+ .sec = tv.tv_sec, -+ .usec = tv.tv_usec } ); -+ os_write_file(tty_log_fd, &data, sizeof(data)); - return; +- if((err = mkdir(tmp, 0777)) < 0){ ++ err = mkdir(tmp, 0777); ++ if(err < 0){ + if(errno == EEXIST){ + if(not_dead_yet(tmp)){ +- printk("umid '%s' is in use\n", umid); ++ (*printer)("umid '%s' is in use\n", umid); + return(-1); + } + err = mkdir(tmp, 0777); + } + } + if(err < 0){ +- printk("Failed to create %s - errno = %d\n", umid, errno); ++ (*printer)("Failed to create %s - errno = %d\n", umid, errno); + return(-1); } -- close(fd); -+ os_close_file(fd); - } --int write_tty_log(int fd, char *buf, int len, void *tty) -+static int log_chunk(int fd, const char *buf, int len) - { -+ int total = 0, try, missed, n; -+ char chunk[64]; +@@ -295,7 +301,13 @@ + ); + + __uml_postsetup(make_uml_dir); +-__uml_postsetup(make_umid); ++ ++static int __init make_umid_setup(void) ++{ ++ return(make_umid(printf)); ++} ++ ++__uml_postsetup(make_umid_setup); + __uml_postsetup(create_pid_file); + + /* +Index: uml-2.6.7/include/linux/ghash.h +=================================================================== +--- uml-2.6.7.orig/include/linux/ghash.h 2004-07-16 19:47:23.863183456 +0300 ++++ uml-2.6.7/include/linux/ghash.h 2004-07-16 19:47:23.875181632 +0300 +@@ -0,0 +1,236 @@ ++/* ++ * include/linux/ghash.h -- generic hashing with fuzzy retrieval ++ * ++ * (C) 1997 Thomas Schoebel-Theuer ++ * ++ * The algorithms implemented here seem to be a completely new invention, ++ * and I'll publish the fundamentals in a paper. ++ */ ++ ++#ifndef _GHASH_H ++#define _GHASH_H ++/* HASHSIZE _must_ be a power of two!!! */ ++ ++ ++#define DEF_HASH_FUZZY_STRUCTS(NAME,HASHSIZE,TYPE) \ ++\ ++struct NAME##_table {\ ++ TYPE * hashtable[HASHSIZE];\ ++ TYPE * sorted_list;\ ++ int nr_entries;\ ++};\ ++\ ++struct NAME##_ptrs {\ ++ TYPE * next_hash;\ ++ TYPE * prev_hash;\ ++ TYPE * next_sorted;\ ++ TYPE * prev_sorted;\ ++}; ++ ++#define DEF_HASH_FUZZY(LINKAGE,NAME,HASHSIZE,TYPE,PTRS,KEYTYPE,KEY,KEYCMP,KEYEQ,HASHFN)\ ++\ ++LINKAGE void insert_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ ++{\ ++ int ix = HASHFN(elem->KEY);\ ++ TYPE ** base = &tbl->hashtable[ix];\ ++ TYPE * ptr = *base;\ ++ TYPE * prev = NULL;\ ++\ ++ tbl->nr_entries++;\ ++ while(ptr && KEYCMP(ptr->KEY, elem->KEY)) {\ ++ base = &ptr->PTRS.next_hash;\ ++ prev = ptr;\ ++ ptr = *base;\ ++ }\ ++ elem->PTRS.next_hash = ptr;\ ++ elem->PTRS.prev_hash = prev;\ ++ if(ptr) {\ ++ ptr->PTRS.prev_hash = elem;\ ++ }\ ++ *base = elem;\ ++\ ++ ptr = prev;\ ++ if(!ptr) {\ ++ ptr = tbl->sorted_list;\ ++ prev = NULL;\ ++ } else {\ ++ prev = ptr->PTRS.prev_sorted;\ ++ }\ ++ while(ptr) {\ ++ TYPE * next = ptr->PTRS.next_hash;\ ++ if(next && KEYCMP(next->KEY, elem->KEY)) {\ ++ prev = ptr;\ ++ ptr = next;\ ++ } else if(KEYCMP(ptr->KEY, elem->KEY)) {\ ++ prev = ptr;\ ++ ptr = ptr->PTRS.next_sorted;\ ++ } else\ ++ break;\ ++ }\ ++ elem->PTRS.next_sorted = ptr;\ ++ elem->PTRS.prev_sorted = prev;\ ++ if(ptr) {\ ++ ptr->PTRS.prev_sorted = elem;\ ++ }\ ++ if(prev) {\ ++ prev->PTRS.next_sorted = elem;\ ++ } else {\ ++ tbl->sorted_list = elem;\ ++ }\ ++}\ ++\ ++LINKAGE void remove_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ ++{\ ++ TYPE * next = elem->PTRS.next_hash;\ ++ TYPE * prev = elem->PTRS.prev_hash;\ ++\ ++ tbl->nr_entries--;\ ++ if(next)\ ++ next->PTRS.prev_hash = prev;\ ++ if(prev)\ ++ prev->PTRS.next_hash = next;\ ++ else {\ ++ int ix = HASHFN(elem->KEY);\ ++ tbl->hashtable[ix] = next;\ ++ }\ ++\ ++ next = elem->PTRS.next_sorted;\ ++ prev = elem->PTRS.prev_sorted;\ ++ if(next)\ ++ next->PTRS.prev_sorted = prev;\ ++ if(prev)\ ++ prev->PTRS.next_sorted = next;\ ++ else\ ++ tbl->sorted_list = next;\ ++}\ ++\ ++LINKAGE TYPE * find_##NAME##_hash(struct NAME##_table * tbl, KEYTYPE pos)\ ++{\ ++ int ix = hashfn(pos);\ ++ TYPE * ptr = tbl->hashtable[ix];\ ++ while(ptr && KEYCMP(ptr->KEY, pos))\ ++ ptr = ptr->PTRS.next_hash;\ ++ if(ptr && !KEYEQ(ptr->KEY, pos))\ ++ ptr = NULL;\ ++ return ptr;\ ++}\ ++\ ++LINKAGE TYPE * find_##NAME##_hash_fuzzy(struct NAME##_table * tbl, KEYTYPE pos)\ ++{\ ++ int ix;\ ++ int offset;\ ++ TYPE * ptr;\ ++ TYPE * next;\ ++\ ++ ptr = tbl->sorted_list;\ ++ if(!ptr || KEYCMP(pos, ptr->KEY))\ ++ return NULL;\ ++ ix = HASHFN(pos);\ ++ offset = HASHSIZE;\ ++ do {\ ++ offset >>= 1;\ ++ next = tbl->hashtable[(ix+offset) & ((HASHSIZE)-1)];\ ++ if(next && (KEYCMP(next->KEY, pos) || KEYEQ(next->KEY, pos))\ ++ && KEYCMP(ptr->KEY, next->KEY))\ ++ ptr = next;\ ++ } while(offset);\ ++\ ++ for(;;) {\ ++ next = ptr->PTRS.next_hash;\ ++ if(next) {\ ++ if(KEYCMP(next->KEY, pos)) {\ ++ ptr = next;\ ++ continue;\ ++ }\ ++ }\ ++ next = ptr->PTRS.next_sorted;\ ++ if(next && KEYCMP(next->KEY, pos)) {\ ++ ptr = next;\ ++ continue;\ ++ }\ ++ return ptr;\ ++ }\ ++ return NULL;\ ++} + -+ while(len > 0){ -+ try = (len > sizeof(chunk)) ? sizeof(chunk) : len; -+ missed = copy_from_user_proc(chunk, (char *) buf, try); -+ try -= missed; -+ n = os_write_file(fd, chunk, try); -+ if(n != try) { -+ if(n < 0) -+ return(n); -+ return(-EIO); -+ } -+ if(missed != 0) -+ return(-EFAULT); ++/* LINKAGE - empty or "static", depending on whether you want the definitions to ++ * be public or not ++ * NAME - a string to stick in names to make this hash table type distinct from ++ * any others ++ * HASHSIZE - number of buckets ++ * TYPE - type of data contained in the buckets - must be a structure, one ++ * field is of type NAME_ptrs, another is the hash key ++ * PTRS - TYPE must contain a field of type NAME_ptrs, PTRS is the name of that ++ * field ++ * KEYTYPE - type of the key field within TYPE ++ * KEY - name of the key field within TYPE ++ * KEYCMP - pointer to function that compares KEYTYPEs to each other - the ++ * prototype is int KEYCMP(KEYTYPE, KEYTYPE), it returns zero for equal, ++ * non-zero for not equal ++ * HASHFN - the hash function - the prototype is int HASHFN(KEYTYPE), ++ * it returns a number in the range 0 ... HASHSIZE - 1 ++ * Call DEF_HASH_STRUCTS, define your hash table as a NAME_table, then call ++ * DEF_HASH. ++ */ + -+ len -= try; -+ total += try; -+ buf += try; -+ } ++#define DEF_HASH_STRUCTS(NAME,HASHSIZE,TYPE) \ ++\ ++struct NAME##_table {\ ++ TYPE * hashtable[HASHSIZE];\ ++ int nr_entries;\ ++};\ ++\ ++struct NAME##_ptrs {\ ++ TYPE * next_hash;\ ++ TYPE * prev_hash;\ ++}; + -+ return(total); ++#define DEF_HASH(LINKAGE,NAME,TYPE,PTRS,KEYTYPE,KEY,KEYCMP,HASHFN)\ ++\ ++LINKAGE void insert_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ ++{\ ++ int ix = HASHFN(elem->KEY);\ ++ TYPE ** base = &tbl->hashtable[ix];\ ++ TYPE * ptr = *base;\ ++ TYPE * prev = NULL;\ ++\ ++ tbl->nr_entries++;\ ++ while(ptr && KEYCMP(ptr->KEY, elem->KEY)) {\ ++ base = &ptr->PTRS.next_hash;\ ++ prev = ptr;\ ++ ptr = *base;\ ++ }\ ++ elem->PTRS.next_hash = ptr;\ ++ elem->PTRS.prev_hash = prev;\ ++ if(ptr) {\ ++ ptr->PTRS.prev_hash = elem;\ ++ }\ ++ *base = elem;\ ++}\ ++\ ++LINKAGE void remove_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ ++{\ ++ TYPE * next = elem->PTRS.next_hash;\ ++ TYPE * prev = elem->PTRS.prev_hash;\ ++\ ++ tbl->nr_entries--;\ ++ if(next)\ ++ next->PTRS.prev_hash = prev;\ ++ if(prev)\ ++ prev->PTRS.next_hash = next;\ ++ else {\ ++ int ix = HASHFN(elem->KEY);\ ++ tbl->hashtable[ix] = next;\ ++ }\ ++}\ ++\ ++LINKAGE TYPE * find_##NAME##_hash(struct NAME##_table * tbl, KEYTYPE pos)\ ++{\ ++ int ix = HASHFN(pos);\ ++ TYPE * ptr = tbl->hashtable[ix];\ ++ while(ptr && KEYCMP(ptr->KEY, pos))\ ++ ptr = ptr->PTRS.next_hash;\ ++ return ptr;\ +} + -+int write_tty_log(int fd, const char *buf, int len, void *tty, int is_read) -+{ -+ struct timeval tv; - struct tty_log_buf data; -+ int direction; ++#endif +Index: uml-2.6.7/arch/um/kernel/tt/include/mode.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/include/mode.h 2004-07-16 19:36:59.998025376 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/include/mode.h 2004-07-16 19:47:23.743201696 +0300 +@@ -8,6 +8,8 @@ - if(fd == tty_log_fd){ -- data = ((struct tty_log_buf) { what : TTY_LOG_WRITE, -- tty : (unsigned long) tty, -- len : len }); -- write(tty_log_fd, &data, sizeof(data)); -+ gettimeofday(&tv, NULL); -+ direction = is_read ? TTY_READ : TTY_WRITE; -+ data = ((struct tty_log_buf) { .what = TTY_LOG_WRITE, -+ .tty = (unsigned long) tty, -+ .len = len, -+ .direction = direction, -+ .sec = tv.tv_sec, -+ .usec = tv.tv_usec } ); -+ os_write_file(tty_log_fd, &data, sizeof(data)); - } -- return(write(fd, buf, len)); -+ -+ return(log_chunk(fd, buf, len)); - } + #include "sysdep/ptrace.h" -+void log_exec(char **argv, void *tty) -+{ -+ struct timeval tv; -+ struct tty_log_buf data; -+ char **ptr,*arg; -+ int len; -+ -+ if(tty_log_fd == -1) return; -+ -+ gettimeofday(&tv, NULL); -+ -+ len = 0; -+ for(ptr = argv; ; ptr++){ -+ if(copy_from_user_proc(&arg, ptr, sizeof(arg))) -+ return; -+ if(arg == NULL) break; -+ len += strlen_user_proc(arg); -+ } -+ -+ data = ((struct tty_log_buf) { .what = TTY_LOG_EXEC, -+ .tty = (unsigned long) tty, -+ .len = len, -+ .direction = 0, -+ .sec = tv.tv_sec, -+ .usec = tv.tv_usec } ); -+ os_write_file(tty_log_fd, &data, sizeof(data)); ++enum { OP_NONE, OP_EXEC, OP_FORK, OP_TRACE_ON, OP_REBOOT, OP_HALT, OP_CB }; + -+ for(ptr = argv; ; ptr++){ -+ if(copy_from_user_proc(&arg, ptr, sizeof(arg))) -+ return; -+ if(arg == NULL) break; -+ log_chunk(tty_log_fd, arg, strlen_user_proc(arg)); -+ } -+} + extern int tracing_pid; + + extern int tracer(int (*init_proc)(void *), void *sp); +Index: uml-2.6.7/arch/um/include/os.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/os.h 2004-07-16 19:36:10.807503472 +0300 ++++ uml-2.6.7/arch/um/include/os.h 2004-07-16 19:47:23.705207472 +0300 +@@ -17,6 +17,32 @@ + #define OS_TYPE_FIFO 6 + #define OS_TYPE_SOCK 7 + ++/* os_access() flags */ ++#define OS_ACC_F_OK 0 /* Test for existence. */ ++#define OS_ACC_X_OK 1 /* Test for execute permission. */ ++#define OS_ACC_W_OK 2 /* Test for write permission. */ ++#define OS_ACC_R_OK 4 /* Test for read permission. */ ++#define OS_ACC_RW_OK (OS_ACC_W_OK | OS_ACC_R_OK) /* Test for RW permission */ + -+extern void register_tty_logger(int (*opener)(void *, void *), -+ int (*writer)(int, const char *, int, -+ void *, int), -+ void (*closer)(int, void *)); ++/* ++ * types taken from stat_file() in hostfs_user.c ++ * (if they are wrong here, they are wrong there...). ++ */ ++struct uml_stat { ++ int ust_dev; /* device */ ++ unsigned long long ust_ino; /* inode */ ++ int ust_mode; /* protection */ ++ int ust_nlink; /* number of hard links */ ++ int ust_uid; /* user ID of owner */ ++ int ust_gid; /* group ID of owner */ ++ unsigned long long ust_size; /* total size, in bytes */ ++ int ust_blksize; /* blocksize for filesystem I/O */ ++ unsigned long long ust_blocks; /* number of blocks allocated */ ++ unsigned long ust_atime; /* time of last access */ ++ unsigned long ust_mtime; /* time of last modification */ ++ unsigned long ust_ctime; /* time of last change */ ++}; + -+static int register_logger(void) -+{ -+ register_tty_logger(open_tty_log, write_tty_log, close_tty_log); -+ return(0); -+} + struct openflags { + unsigned int r : 1; + unsigned int w : 1; +@@ -84,29 +110,47 @@ + flags.e = 1; + return(flags); + } +- + -+__uml_initcall(register_logger); + static inline struct openflags of_cloexec(struct openflags flags) + { + flags.cl = 1; + return(flags); + } + ++extern int os_stat_file(const char *file_name, struct uml_stat *buf); ++extern int os_stat_fd(const int fd, struct uml_stat *buf); ++extern int os_access(const char *file, int mode); ++extern void os_print_error(int error, const char* str); ++extern int os_get_exec_close(int fd, int *close_on_exec); ++extern int os_set_exec_close(int fd, int close_on_exec); ++extern int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg); ++extern int os_window_size(int fd, int *rows, int *cols); ++extern int os_new_tty_pgrp(int fd, int pid); ++extern int os_get_ifname(int fd, char *namebuf); ++extern int os_set_slip(int fd); ++extern int os_set_owner(int fd, int pid); ++extern int os_sigio_async(int master, int slave); ++extern int os_mode_fd(int fd, int mode); + - static int __init set_tty_log_dir(char *name, int *add) - { - tty_log_dir = name; -@@ -104,7 +202,7 @@ - - tty_log_fd = strtoul(name, &end, 0); - if((*end != '\0') || (end == name)){ -- printk("set_tty_log_fd - strtoul failed on '%s'\n", name); -+ printf("set_tty_log_fd - strtoul failed on '%s'\n", name); - tty_log_fd = -1; - } - return 0; -diff -Naur a/arch/um/kernel/uaccess_user.c b/arch/um/kernel/uaccess_user.c ---- a/arch/um/kernel/uaccess_user.c 2004-03-10 08:22:24.000000000 -0500 -+++ b/arch/um/kernel/uaccess_user.c 2004-03-10 08:41:32.000000000 -0500 -@@ -20,7 +20,7 @@ - - jmp_buf jbuf; - *fault_catcher = &jbuf; -- if(setjmp(jbuf) == 0){ -+ if(sigsetjmp(jbuf, 1) == 0){ - (*op)(to, from, n); - ret = 0; - *faulted_out = 0; -diff -Naur a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c ---- a/arch/um/kernel/um_arch.c 2004-03-10 08:22:34.000000000 -0500 -+++ b/arch/um/kernel/um_arch.c 2004-03-10 08:42:28.000000000 -0500 -@@ -38,13 +38,18 @@ - #include "mode_kern.h" - #include "mode.h" + extern int os_seek_file(int fd, __u64 offset); + extern int os_open_file(char *file, struct openflags flags, int mode); + extern int os_read_file(int fd, void *buf, int len); +-extern int os_write_file(int fd, void *buf, int count); ++extern int os_write_file(int fd, const void *buf, int count); + extern int os_file_size(char *file, long long *size_out); ++extern int os_file_modtime(char *file, unsigned long *modtime); + extern int os_pipe(int *fd, int stream, int close_on_exec); + extern int os_set_fd_async(int fd, int owner); + extern int os_set_fd_block(int fd, int blocking); + extern int os_accept_connection(int fd); ++extern int os_create_unix_socket(char *file, int len, int close_on_exec); + extern int os_shutdown_socket(int fd, int r, int w); + extern void os_close_file(int fd); + extern int os_rcv_fd(int fd, int *helper_pid_out); +-extern int create_unix_socket(char *file, int len); ++extern int create_unix_socket(char *file, int len, int close_on_exec); + extern int os_connect_socket(char *name); + extern int os_file_type(char *file); + extern int os_file_mode(char *file, struct openflags *mode_out); ++extern int os_lock_file(int fd, int excl); --#define DEFAULT_COMMAND_LINE "root=6200" -+#define DEFAULT_COMMAND_LINE "root=98:0" + extern unsigned long os_process_pc(int pid); + extern int os_process_parent(int pid); +@@ -115,11 +159,12 @@ + extern void os_usr1_process(int pid); + extern int os_getpid(void); - struct cpuinfo_um boot_cpu_data = { - .loops_per_jiffy = 0, - .ipi_pipe = { -1, -1 } - }; +-extern int os_map_memory(void *virt, int fd, unsigned long off, ++extern int os_map_memory(void *virt, int fd, unsigned long long off, + unsigned long len, int r, int w, int x); + extern int os_protect_memory(void *addr, unsigned long len, + int r, int w, int x); + extern int os_unmap_memory(void *addr, int len); ++extern void os_flush_stdout(void); -+/* Placeholder to make UML link until the vsyscall stuff is actually -+ * implemented -+ */ -+void *__kernel_vsyscall; -+ - unsigned long thread_saved_pc(struct task_struct *task) - { - return(os_process_pc(CHOOSE_MODE_PROC(thread_pid_tt, thread_pid_skas, -@@ -53,18 +58,22 @@ + #endif - static int show_cpuinfo(struct seq_file *m, void *v) +Index: uml-2.6.7/arch/um/kernel/tt/exec_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/exec_user.c 2004-07-16 19:37:20.241947832 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/exec_user.c 2004-07-16 19:47:24.799041184 +0300 +@@ -19,13 +19,18 @@ + void do_exec(int old_pid, int new_pid) { -- int index; -+ int index = 0; + unsigned long regs[FRAME_SIZE]; ++ int err; -- index = (struct cpuinfo_um *)v - cpu_data; - #ifdef CONFIG_SMP -+ index = (struct cpuinfo_um *) v - cpu_data; - if (!cpu_online(index)) - return 0; - #endif + if((ptrace(PTRACE_ATTACH, new_pid, 0, 0) < 0) || +- (ptrace(PTRACE_CONT, new_pid, 0, 0) < 0) || +- (waitpid(new_pid, 0, WUNTRACED) < 0)) ++ (ptrace(PTRACE_CONT, new_pid, 0, 0) < 0)) + tracer_panic("do_exec failed to attach proc - errno = %d", + errno); + ++ CATCH_EINTR(err = waitpid(new_pid, 0, WUNTRACED)); ++ if (err < 0) ++ tracer_panic("do_exec failed to attach proc in waitpid - errno = %d", ++ errno); ++ + if(ptrace_getregs(old_pid, regs) < 0) + tracer_panic("do_exec failed to get registers - errno = %d", + errno); +Index: uml-2.6.7/include/asm-um/timex.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/timex.h 2004-07-16 19:36:59.398116576 +0300 ++++ uml-2.6.7/include/asm-um/timex.h 2004-07-16 19:47:23.803192576 +0300 +@@ -1,8 +1,6 @@ + #ifndef __UM_TIMEX_H + #define __UM_TIMEX_H -- seq_printf(m, "bogomips\t: %lu.%02lu\n", -+ seq_printf(m, "processor\t: %d\n", index); -+ seq_printf(m, "vendor_id\t: User Mode Linux\n"); -+ seq_printf(m, "model name\t: UML\n"); -+ seq_printf(m, "mode\t\t: %s\n", CHOOSE_MODE("tt", "skas")); -+ seq_printf(m, "host\t\t: %s\n", host_info); -+ seq_printf(m, "bogomips\t: %lu.%02lu\n\n", - loops_per_jiffy/(500000/HZ), - (loops_per_jiffy/(5000/HZ)) % 100); -- seq_printf(m, "host\t\t: %s\n", host_info); +-#include "linux/time.h" +- + typedef unsigned long cycles_t; - return(0); - } -@@ -134,12 +143,12 @@ - if(umid != NULL){ - snprintf(argv1_begin, - (argv1_end - argv1_begin) * sizeof(*ptr), -- "(%s)", umid); -+ "(%s) ", umid); - ptr = &argv1_begin[strlen(argv1_begin)]; - } - else ptr = argv1_begin; + #define cacheflush_time (0) +Index: uml-2.6.7/arch/um/kernel/skas/include/skas.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/include/skas.h 2004-07-16 19:36:19.759142616 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/include/skas.h 2004-07-16 19:47:23.727204128 +0300 +@@ -8,7 +8,7 @@ -- snprintf(ptr, (argv1_end - ptr) * sizeof(*ptr), " [%s]", cmd); -+ snprintf(ptr, (argv1_end - ptr) * sizeof(*ptr), "[%s]", cmd); - memset(argv1_begin + strlen(argv1_begin), '\0', - argv1_end - argv1_begin - strlen(argv1_begin)); - #endif -@@ -179,7 +188,7 @@ - static int __init uml_ncpus_setup(char *line, int *add) - { - if (!sscanf(line, "%d", &ncpus)) { -- printk("Couldn't parse [%s]\n", line); -+ printf("Couldn't parse [%s]\n", line); - return -1; - } + #include "sysdep/ptrace.h" -@@ -210,7 +219,7 @@ +-extern int userspace_pid; ++extern int userspace_pid[]; - static int __init mode_tt_setup(char *line, int *add) - { -- printk("CONFIG_MODE_TT disabled - 'mode=tt' ignored\n"); -+ printf("CONFIG_MODE_TT disabled - 'mode=tt' ignored\n"); - return(0); - } + extern void switch_threads(void *me, void *next); + extern void thread_wait(void *sw, void *fb); +@@ -32,7 +32,7 @@ + extern int new_mm(int from); + extern void save_registers(union uml_pt_regs *regs); + extern void restore_registers(union uml_pt_regs *regs); +-extern void start_userspace(void); ++extern void start_userspace(int cpu); + extern void init_registers(int pid); -@@ -221,7 +230,7 @@ + #endif +Index: uml-2.6.7/arch/um/drivers/mmapper_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/mmapper_kern.c 2004-07-16 19:36:04.585449368 +0300 ++++ uml-2.6.7/arch/um/drivers/mmapper_kern.c 2004-07-16 19:47:23.688210056 +0300 +@@ -120,7 +120,10 @@ + printk(KERN_INFO "Mapper v0.1\n"); - static int __init mode_tt_setup(char *line, int *add) - { -- printk("CONFIG_MODE_SKAS disabled - 'mode=tt' redundant\n"); -+ printf("CONFIG_MODE_SKAS disabled - 'mode=tt' redundant\n"); - return(0); - } + v_buf = (char *) find_iomem("mmapper", &mmapper_size); +- if(mmapper_size == 0) return(0); ++ if(mmapper_size == 0){ ++ printk(KERN_ERR "mmapper_init - find_iomem failed\n"); ++ return(0); ++ } -@@ -291,7 +300,7 @@ + p_buf = __pa(v_buf); - /* Set during early boot */ - unsigned long brk_start; --static struct vm_reserved kernel_vm_reserved; -+unsigned long end_iomem; +Index: uml-2.6.7/arch/um/os-Linux/process.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/process.c 2004-07-16 19:36:02.092828304 +0300 ++++ uml-2.6.7/arch/um/os-Linux/process.c 2004-07-16 19:47:24.802040728 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ - #define MIN_VMALLOC (32 * 1024 * 1024) +@@ -7,32 +7,38 @@ + #include + #include + #include ++#include + #include + #include + #include "os.h" + #include "user.h" ++#include "user_util.h" ++ ++#define ARBITRARY_ADDR -1 ++#define FAILURE_PID -1 -@@ -299,7 +308,7 @@ + unsigned long os_process_pc(int pid) { - unsigned long avail; - unsigned long virtmem_size, max_physmem; -- unsigned int i, add, err; -+ unsigned int i, add; + char proc_stat[sizeof("/proc/#####/stat\0")], buf[256]; + unsigned long pc; +- int fd; ++ int fd, err; - for (i = 1; i < argc; i++){ - if((i == 1) && (argv[i][0] == ' ')) continue; -@@ -328,12 +337,16 @@ - argv1_end = &argv[1][strlen(argv[1])]; - #endif - -- set_usable_vm(uml_physmem, get_kmem_end()); -- - highmem = 0; -- max_physmem = get_kmem_end() - uml_physmem - MIN_VMALLOC; -- if(physmem_size > max_physmem){ -- highmem = physmem_size - max_physmem; -+ iomem_size = (iomem_size + PAGE_SIZE - 1) & PAGE_MASK; -+ max_physmem = get_kmem_end() - uml_physmem - iomem_size - MIN_VMALLOC; -+ -+ /* Zones have to begin on a 1 << MAX_ORDER page boundary, -+ * so this makes sure that's true for highmem -+ */ -+ max_physmem &= ~((1 << (PAGE_SHIFT + MAX_ORDER)) - 1); -+ if(physmem_size + iomem_size > max_physmem){ -+ highmem = physmem_size + iomem_size - max_physmem; - physmem_size -= highmem; - #ifndef CONFIG_HIGHMEM - highmem = 0; -@@ -343,11 +356,19 @@ + sprintf(proc_stat, "/proc/%d/stat", pid); + fd = os_open_file(proc_stat, of_read(OPENFLAGS()), 0); + if(fd < 0){ +- printk("os_process_pc - couldn't open '%s', errno = %d\n", +- proc_stat, errno); +- return(-1); ++ printk("os_process_pc - couldn't open '%s', err = %d\n", ++ proc_stat, -fd); ++ return(ARBITRARY_ADDR); + } +- if(read(fd, buf, sizeof(buf)) < 0){ +- printk("os_process_pc - couldn't read '%s', errno = %d\n", +- proc_stat, errno); +- close(fd); +- return(-1); ++ err = os_read_file(fd, buf, sizeof(buf)); ++ if(err < 0){ ++ printk("os_process_pc - couldn't read '%s', err = %d\n", ++ proc_stat, -err); ++ os_close_file(fd); ++ return(ARBITRARY_ADDR); + } +- close(fd); +- pc = -1; ++ os_close_file(fd); ++ pc = ARBITRARY_ADDR; + if(sscanf(buf, "%*d %*s %*c %*d %*d %*d %*d %*d %*d %*d %*d " + "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d " + "%*d %*d %*d %*d %ld", &pc) != 1){ +@@ -52,22 +58,23 @@ + snprintf(stat, sizeof(stat), "/proc/%d/stat", pid); + fd = os_open_file(stat, of_read(OPENFLAGS()), 0); + if(fd < 0){ +- printk("Couldn't open '%s', errno = %d\n", stat, -fd); +- return(-1); ++ printk("Couldn't open '%s', err = %d\n", stat, -fd); ++ return(FAILURE_PID); } - high_physmem = uml_physmem + physmem_size; -- high_memory = (void *) high_physmem; -+ end_iomem = high_physmem + iomem_size; -+ high_memory = (void *) end_iomem; - - start_vm = VMALLOC_START; +- n = read(fd, data, sizeof(data)); +- close(fd); ++ n = os_read_file(fd, data, sizeof(data)); ++ os_close_file(fd); -- setup_physmem(uml_physmem, uml_reserved, physmem_size); -+ setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem); -+ if(init_maps(physmem_size, iomem_size, highmem)){ -+ printf("Failed to allocate mem_map for %ld bytes of physical " -+ "memory and %ld bytes of highmem\n", physmem_size, -+ highmem); -+ exit(1); -+ } -+ - virtmem_size = physmem_size; - avail = get_kmem_end() - start_vm; - if(physmem_size > avail) virtmem_size = avail; -@@ -357,18 +378,13 @@ - printf("Kernel virtual memory size shrunk to %ld bytes\n", - virtmem_size); + if(n < 0){ +- printk("Couldn't read '%s', errno = %d\n", stat); +- return(-1); ++ printk("Couldn't read '%s', err = %d\n", stat, -n); ++ return(FAILURE_PID); + } -- err = reserve_vm(high_physmem, end_vm, &kernel_vm_reserved); -- if(err){ -- printf("Failed to reserve VM area for kernel VM\n"); -- exit(1); -- } -- - uml_postsetup(); +- parent = -1; ++ parent = FAILURE_PID; + /* XXX This will break if there is a space in the command */ + n = sscanf(data, "%*d %*s %*c %d", &parent); +- if(n != 1) printk("Failed to scan '%s'\n", data); ++ if(n != 1) ++ printk("Failed to scan '%s'\n", data); - init_task.thread.kernel_stack = (unsigned long) &init_thread_info + - 2 * PAGE_SIZE; + return(parent); + } +@@ -81,13 +88,17 @@ + { + kill(pid, SIGKILL); + if(reap_child) +- waitpid(pid, NULL, 0); ++ CATCH_EINTR(waitpid(pid, NULL, 0)); + + } - task_protections((unsigned long) &init_thread_info); -+ os_flush_stdout(); + void os_usr1_process(int pid) + { ++#ifdef __NR_tkill ++ syscall(__NR_tkill, pid, SIGUSR1); ++#else + kill(pid, SIGUSR1); ++#endif + } - return(CHOOSE_MODE(start_uml_tt(), start_uml_skas())); + int os_getpid(void) +@@ -95,7 +106,7 @@ + return(getpid()); } -@@ -377,7 +393,7 @@ - void *unused2) + +-int os_map_memory(void *virt, int fd, unsigned long off, unsigned long len, ++int os_map_memory(void *virt, int fd, unsigned long long off, unsigned long len, + int r, int w, int x) { - #ifdef CONFIG_MAGIC_SYSRQ -- handle_sysrq('p', ¤t->thread.regs, NULL, NULL); -+ handle_sysrq('p', ¤t->thread.regs, NULL); - #endif - machine_halt(); + void *loc; +@@ -104,8 +115,8 @@ + prot = (r ? PROT_READ : 0) | (w ? PROT_WRITE : 0) | + (x ? PROT_EXEC : 0); + +- loc = mmap((void *) virt, len, prot, MAP_SHARED | MAP_FIXED, +- fd, off); ++ loc = mmap64((void *) virt, len, prot, MAP_SHARED | MAP_FIXED, ++ fd, off); + if(loc == MAP_FAILED) + return(-errno); return(0); -@@ -403,6 +419,11 @@ - arch_check_bugs(); - check_ptrace(); - check_sigio(); -+ check_devanon(); -+} -+ -+void apply_alternatives(void *start, void *end) -+{ +@@ -126,7 +137,8 @@ + int err; + + err = munmap(addr, len); +- if(err < 0) return(-errno); ++ if(err < 0) ++ return(-errno); + return(0); } - /* -diff -Naur a/arch/um/kernel/umid.c b/arch/um/kernel/umid.c ---- a/arch/um/kernel/umid.c 2004-03-10 08:23:08.000000000 -0500 -+++ b/arch/um/kernel/umid.c 2004-03-10 08:43:47.000000000 -0500 -@@ -5,7 +5,6 @@ +Index: uml-2.6.7/arch/um/include/mem_user.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/mem_user.h 2004-07-16 19:37:02.661620448 +0300 ++++ uml-2.6.7/arch/um/include/mem_user.h 2004-07-16 19:47:23.704207624 +0300 +@@ -32,43 +32,38 @@ + #ifndef _MEM_USER_H + #define _MEM_USER_H - #include - #include --#include - #include - #include - #include -@@ -33,18 +32,19 @@ - static int umid_is_random = 1; - static int umid_inited = 0; +-struct mem_region { ++struct iomem_region { ++ struct iomem_region *next; + char *driver; +- unsigned long start_pfn; +- unsigned long start; +- unsigned long len; +- void *mem_map; + int fd; ++ int size; ++ unsigned long phys; ++ unsigned long virt; + }; --static int make_umid(void); -+static int make_umid(int (*printer)(const char *fmt, ...)); +-extern struct mem_region *regions[]; +-extern struct mem_region physmem_region; ++extern struct iomem_region *iomem_regions; ++extern int iomem_size; --static int __init set_umid(char *name, int is_random) -+static int __init set_umid(char *name, int is_random, -+ int (*printer)(const char *fmt, ...)) - { - if(umid_inited){ -- printk("Unique machine name can't be set twice\n"); -+ (*printer)("Unique machine name can't be set twice\n"); - return(-1); + #define ROUND_4M(n) ((((unsigned long) (n)) + (1 << 22)) & ~((1 << 22) - 1)) + + extern unsigned long host_task_size; + extern unsigned long task_size; + ++extern void check_devanon(void); + extern int init_mem_user(void); + extern int create_mem_file(unsigned long len); +-extern void setup_range(int fd, char *driver, unsigned long start, +- unsigned long pfn, unsigned long total, int need_vm, +- struct mem_region *region, void *reserved); + extern void setup_memory(void *entry); + extern unsigned long find_iomem(char *driver, unsigned long *len_out); +-extern int init_maps(struct mem_region *region); +-extern int nregions(void); +-extern int reserve_vm(unsigned long start, unsigned long end, void *e); ++extern int init_maps(unsigned long physmem, unsigned long iomem, ++ unsigned long highmem); + extern unsigned long get_vm(unsigned long len); + extern void setup_physmem(unsigned long start, unsigned long usable, +- unsigned long len); +-extern int setup_region(struct mem_region *region, void *entry); ++ unsigned long len, unsigned long highmem); + extern void add_iomem(char *name, int fd, unsigned long size); +-extern struct mem_region *phys_region(unsigned long phys); + extern unsigned long phys_offset(unsigned long phys); + extern void unmap_physmem(void); +-extern int map_memory(unsigned long virt, unsigned long phys, +- unsigned long len, int r, int w, int x); ++extern void map_memory(unsigned long virt, unsigned long phys, ++ unsigned long len, int r, int w, int x); + extern int protect_memory(unsigned long addr, unsigned long len, + int r, int w, int x, int must_succeed); + extern unsigned long get_kmem_end(void); +Index: uml-2.6.7/arch/um/drivers/mcast_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/mcast_user.c 2004-07-16 19:36:45.956160064 +0300 ++++ uml-2.6.7/arch/um/drivers/mcast_user.c 2004-07-16 19:47:23.686210360 +0300 +@@ -23,6 +23,7 @@ + #include "kern_util.h" + #include "user_util.h" + #include "user.h" ++#include "os.h" + + #define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER) + +@@ -62,7 +63,8 @@ + goto out; } - if(strlen(name) > UMID_LEN - 1) -- printk("Unique machine name is being truncated to %s " -- "characters\n", UMID_LEN); -+ (*printer)("Unique machine name is being truncated to %s " -+ "characters\n", UMID_LEN); - strlcpy(umid, name, sizeof(umid)); +- if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){ ++ fd = socket(AF_INET, SOCK_DGRAM, 0); ++ if (fd < 0){ + printk("mcast_open : data socket failed, errno = %d\n", + errno); + fd = -ENOMEM; +@@ -72,7 +74,7 @@ + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0) { + printk("mcast_open: SO_REUSEADDR failed, errno = %d\n", + errno); +- close(fd); ++ os_close_file(fd); + fd = -EINVAL; + goto out; + } +@@ -82,7 +84,7 @@ + sizeof(pri->ttl)) < 0) { + printk("mcast_open: IP_MULTICAST_TTL failed, error = %d\n", + errno); +- close(fd); ++ os_close_file(fd); + fd = -EINVAL; + goto out; + } +@@ -91,7 +93,7 @@ + if (setsockopt(fd, SOL_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes)) < 0) { + printk("mcast_open: IP_MULTICAST_LOOP failed, error = %d\n", + errno); +- close(fd); ++ os_close_file(fd); + fd = -EINVAL; + goto out; + } +@@ -99,7 +101,7 @@ + /* bind socket to mcast address */ + if (bind(fd, (struct sockaddr *) sin, sizeof(*sin)) < 0) { + printk("mcast_open : data bind failed, errno = %d\n", errno); +- close(fd); ++ os_close_file(fd); + fd = -EINVAL; + goto out; + } +@@ -115,7 +117,7 @@ + "interface on the host.\n"); + printk("eth0 should be configured in order to use the " + "multicast transport.\n"); +- close(fd); ++ os_close_file(fd); + fd = -EINVAL; + } - umid_is_random = is_random; -@@ -54,7 +54,7 @@ +@@ -137,7 +139,7 @@ + errno); + } + +- close(fd); ++ os_close_file(fd); + } + + int mcast_user_write(int fd, void *buf, int len, struct mcast_data *pri) +Index: uml-2.6.7/arch/um/drivers/slirp_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/slirp_user.c 2004-07-16 19:37:02.720611480 +0300 ++++ uml-2.6.7/arch/um/drivers/slirp_user.c 2004-07-16 19:47:24.797041488 +0300 +@@ -4,8 +4,7 @@ + #include + #include + #include +-#include +-#include ++#include + #include + #include + #include "user_util.h" +@@ -48,15 +47,15 @@ - static int __init set_umid_arg(char *name, int *add) - { -- return(set_umid(name, 0)); -+ return(set_umid(name, 0, printf)); + return(pid); } - - __uml_setup("umid=", set_umid_arg, -@@ -67,7 +67,7 @@ +- ++ ++/* XXX This is just a trivial wrapper around os_pipe */ + static int slirp_datachan(int *mfd, int *sfd) { - int n; - -- if(!umid_inited && make_umid()) return(-1); -+ if(!umid_inited && make_umid(printk)) return(-1); + int fds[2], err; - n = strlen(uml_dir) + strlen(umid) + strlen(name) + 1; - if(n > len){ -@@ -85,22 +85,23 @@ - { - char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; - char pid[sizeof("nnnnn\0")]; -- int fd; -+ int fd, n; + err = os_pipe(fds, 1, 1); +- if(err){ +- printk("slirp_datachan: Failed to open pipe, errno = %d\n", +- -err); ++ if(err < 0){ ++ printk("slirp_datachan: Failed to open pipe, err = %d\n", -err); + return(err); + } - if(umid_file_name("pid", file, sizeof(file))) return 0; +@@ -77,7 +76,7 @@ + pid = slirp_tramp(pri->argw.argv, sfd); - fd = os_open_file(file, of_create(of_excl(of_rdwr(OPENFLAGS()))), - 0644); - if(fd < 0){ -- printk("Open of machine pid file \"%s\" failed - " -- "errno = %d\n", file, -fd); -+ printf("Open of machine pid file \"%s\" failed - " -+ "err = %d\n", file, -fd); - return 0; - } + if(pid < 0){ +- printk("slirp_tramp failed - errno = %d\n", pid); ++ printk("slirp_tramp failed - errno = %d\n", -pid); + os_close_file(sfd); + os_close_file(mfd); + return(pid); +@@ -97,8 +96,8 @@ + struct slirp_data *pri = data; + int status,err; - sprintf(pid, "%d\n", os_getpid()); -- if(write(fd, pid, strlen(pid)) != strlen(pid)) -- printk("Write of pid file failed - errno = %d\n", errno); - close(fd); -+ n = os_write_file(fd, pid, strlen(pid)); -+ if(n != strlen(pid)) -+ printf("Write of pid file failed - err = %d\n", -n); +- close(pri->slave); + os_close_file(fd); - return 0; - } - -@@ -111,7 +112,8 @@ - int len; - char file[256]; ++ os_close_file(pri->slave); -- if((directory = opendir(dir)) == NULL){ -+ directory = opendir(dir); -+ if(directory == NULL){ - printk("actually_do_remove : couldn't open directory '%s', " - "errno = %d\n", dir, errno); - return(1); -@@ -160,22 +162,24 @@ - { - char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")]; - char pid[sizeof("nnnnn\0")], *end; -- int dead, fd, p; -+ int dead, fd, p, n; + pri->slave = -1; - sprintf(file, "%s/pid", dir); - dead = 0; -- if((fd = os_open_file(file, of_read(OPENFLAGS()), 0)) < 0){ -+ fd = os_open_file(file, of_read(OPENFLAGS()), 0); -+ if(fd < 0){ - if(fd != -ENOENT){ - printk("not_dead_yet : couldn't open pid file '%s', " -- "errno = %d\n", file, -fd); -+ "err = %d\n", file, -fd); - return(1); - } - dead = 1; +@@ -114,13 +113,13 @@ } - if(fd > 0){ -- if(read(fd, pid, sizeof(pid)) < 0){ -+ n = os_read_file(fd, pid, sizeof(pid)); -+ if(n < 0){ - printk("not_dead_yet : couldn't read pid file '%s', " -- "errno = %d\n", file, errno); -+ "err = %d\n", file, -n); - return(1); - } - p = strtoul(pid, &end, 0); -@@ -197,7 +201,7 @@ - if((strlen(name) > 0) && (name[strlen(name) - 1] != '/')){ - uml_dir = malloc(strlen(name) + 1); - if(uml_dir == NULL){ -- printk("Failed to malloc uml_dir - error = %d\n", -+ printf("Failed to malloc uml_dir - error = %d\n", - errno); - uml_dir = name; - return(0); -@@ -217,7 +221,7 @@ - char *home = getenv("HOME"); + #endif - if(home == NULL){ -- printk("make_uml_dir : no value in environment for " -+ printf("make_uml_dir : no value in environment for " - "$HOME\n"); - exit(1); - } -@@ -232,57 +236,59 @@ - dir[len + 1] = '\0'; +- err = waitpid(pri->pid, &status, WNOHANG); +- if(err<0) { ++ CATCH_EINTR(err = waitpid(pri->pid, &status, WNOHANG)); ++ if(err < 0) { + printk("slirp_close: waitpid returned %d\n", errno); + return; } -- if((uml_dir = malloc(strlen(dir) + 1)) == NULL){ -+ uml_dir = malloc(strlen(dir) + 1); -+ if(uml_dir == NULL){ - printf("make_uml_dir : malloc failed, errno = %d\n", errno); - exit(1); +- if(err==0) { ++ if(err == 0) { + printk("slirp_close: process %d has not exited\n"); + return; } - strcpy(uml_dir, dir); - - if((mkdir(uml_dir, 0777) < 0) && (errno != EEXIST)){ -- printk("Failed to mkdir %s - errno = %i\n", uml_dir, errno); -+ printf("Failed to mkdir %s - errno = %i\n", uml_dir, errno); - return(-1); +Index: uml-2.6.7/arch/um/kernel/tempfile.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tempfile.c 2004-07-16 19:36:48.252810920 +0300 ++++ uml-2.6.7/arch/um/kernel/tempfile.c 2004-07-16 19:47:23.740202152 +0300 +@@ -28,6 +28,7 @@ } - return 0; + if((dir == NULL) || (*dir == '\0')) + dir = "/tmp"; ++ + tempdir = malloc(strlen(dir) + 2); + if(tempdir == NULL){ + fprintf(stderr, "Failed to malloc tempdir, " +@@ -49,7 +50,8 @@ + else + *tempname = 0; + strcat(tempname, template); +- if((fd = mkstemp(tempname)) < 0){ ++ fd = mkstemp(tempname); ++ if(fd < 0){ + fprintf(stderr, "open - cannot create %s: %s\n", tempname, + strerror(errno)); + return -1; +@@ -59,7 +61,8 @@ + return -1; + } + if(out_tempname){ +- if((*out_tempname = strdup(tempname)) == NULL){ ++ *out_tempname = strdup(tempname); ++ if(*out_tempname == NULL){ + perror("strdup"); + return -1; + } +Index: uml-2.6.7/arch/um/sys-i386/util/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/util/Makefile 2004-07-16 19:37:40.976795656 +0300 ++++ uml-2.6.7/arch/um/sys-i386/util/Makefile 2004-07-16 19:47:23.773197136 +0300 +@@ -1,15 +1,10 @@ ++host-progs := mk_sc mk_thread ++always := $(host-progs) + +-host-progs := mk_sc +-always := $(host-progs) mk_thread +-targets := mk_thread_kern.o mk_thread_user.o ++mk_thread-objs := mk_thread_kern.o mk_thread_user.o + +-mk_sc-objs := mk_sc.o +- +-$(obj)/mk_thread : $(obj)/mk_thread_kern.o $(obj)/mk_thread_user.o +- $(CC) $(CFLAGS) -o $@ $^ +- +-$(obj)/mk_thread_user.o : $(src)/mk_thread_user.c +- $(CC) $(USER_CFLAGS) -c -o $@ $< ++HOSTCFLAGS_mk_thread_kern.o := $(CFLAGS) $(CPPFLAGS) ++HOSTCFLAGS_mk_thread_user.o := $(USER_CFLAGS) + + clean : + $(RM) -f $(build-targets) +Index: uml-2.6.7/arch/um/kernel/tt/tracer.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/tracer.c 2004-07-16 19:35:55.561821168 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/tracer.c 2004-07-16 19:47:24.801040880 +0300 +@@ -39,16 +39,17 @@ + return(0); + + register_winch_irq(tracer_winch[0], fd, -1, data); +- return(0); ++ return(1); } --static int __init make_umid(void) -+static int __init make_umid(int (*printer)(const char *fmt, ...)) + static void tracer_winch_handler(int sig) { - int fd, err; - char tmp[strlen(uml_dir) + UMID_LEN + 1]; ++ int n; + char c = 1; - strlcpy(tmp, uml_dir, sizeof(tmp)); +- if(write(tracer_winch[1], &c, sizeof(c)) != sizeof(c)) +- printk("tracer_winch_handler - write failed, errno = %d\n", +- errno); ++ n = os_write_file(tracer_winch[1], &c, sizeof(c)); ++ if(n != sizeof(c)) ++ printk("tracer_winch_handler - write failed, err = %d\n", -n); + } -- if(*umid == 0){ -+ if(!umid_inited){ - strcat(tmp, "XXXXXX"); - fd = mkstemp(tmp); - if(fd < 0){ -- printk("make_umid - mkstemp failed, errno = %d\n", -- errno); -+ (*printer)("make_umid - mkstemp failed, errno = %d\n", -+ errno); - return(1); - } + /* Called only by the tracing thread during initialization */ +@@ -58,9 +59,8 @@ + int err; -- close(fd); -+ os_close_file(fd); - /* There's a nice tiny little race between this unlink and - * the mkdir below. It'd be nice if there were a mkstemp - * for directories. - */ - unlink(tmp); -- set_umid(&tmp[strlen(uml_dir)], 1); -+ set_umid(&tmp[strlen(uml_dir)], 1, printer); + err = os_pipe(tracer_winch, 1, 1); +- if(err){ +- printk("setup_tracer_winch : os_pipe failed, errno = %d\n", +- -err); ++ if(err < 0){ ++ printk("setup_tracer_winch : os_pipe failed, err = %d\n", -err); + return; } - - sprintf(tmp, "%s%s", uml_dir, umid); + signal(SIGWINCH, tracer_winch_handler); +@@ -130,8 +130,8 @@ + case SIGTSTP: + if(ptrace(PTRACE_CONT, pid, 0, sig) < 0) + tracer_panic("sleeping_process_signal : Failed to " +- "continue pid %d, errno = %d\n", pid, +- sig); ++ "continue pid %d, signal = %d, " ++ "errno = %d\n", pid, sig, errno); + break; + + /* This happens when the debugger (e.g. strace) is doing system call +@@ -145,7 +145,7 @@ + if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) + tracer_panic("sleeping_process_signal : Failed to " + "PTRACE_SYSCALL pid %d, errno = %d\n", +- pid, sig); ++ pid, errno); + break; + case SIGSTOP: + break; +@@ -192,7 +192,7 @@ + printf("tracing thread pid = %d\n", tracing_pid); -- if((err = mkdir(tmp, 0777)) < 0){ -+ err = mkdir(tmp, 0777); -+ if(err < 0){ - if(errno == EEXIST){ - if(not_dead_yet(tmp)){ -- printk("umid '%s' is in use\n", umid); -+ (*printer)("umid '%s' is in use\n", umid); - return(-1); + pid = clone(signal_tramp, sp, CLONE_FILES | SIGCHLD, init_proc); +- n = waitpid(pid, &status, WUNTRACED); ++ CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); + if(n < 0){ + printf("waitpid on idle thread failed, errno = %d\n", errno); + exit(1); +@@ -218,7 +218,7 @@ + err = attach(debugger_parent); + if(err){ + printf("Failed to attach debugger parent %d, " +- "errno = %d\n", debugger_parent, err); ++ "errno = %d\n", debugger_parent, -err); + debugger_parent = -1; } - err = mkdir(tmp, 0777); - } + else { +@@ -233,7 +233,8 @@ } - if(err < 0){ -- printk("Failed to create %s - errno = %d\n", umid, errno); -+ (*printer)("Failed to create %s - errno = %d\n", umid, errno); - return(-1); + set_cmdline("(tracing thread)"); + while(1){ +- if((pid = waitpid(-1, &status, WUNTRACED)) <= 0){ ++ CATCH_EINTR(pid = waitpid(-1, &status, WUNTRACED)); ++ if(pid <= 0){ + if(errno != ECHILD){ + printf("wait failed - errno = %d\n", errno); + } +@@ -401,7 +402,7 @@ + + if(!strcmp(line, "go")) debug_stop = 0; + else if(!strcmp(line, "parent")) debug_parent = 1; +- else printk("Unknown debug option : '%s'\n", line); ++ else printf("Unknown debug option : '%s'\n", line); + + line = next; } +Index: uml-2.6.7/arch/um/drivers/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/Makefile 2004-07-16 19:36:51.389334096 +0300 ++++ uml-2.6.7/arch/um/drivers/Makefile 2004-07-16 19:47:24.526082680 +0300 +@@ -1,5 +1,5 @@ + # +-# Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com) ++# Copyright (C) 2000, 2002, 2003 Jeff Dike (jdike@karaya.com) + # Licensed under the GPL + # -@@ -295,7 +301,13 @@ - ); +@@ -15,7 +15,7 @@ + #pcap-objs := pcap_kern.o pcap_user.o $(PCAP) + net-objs := net_kern.o net_user.o + mconsole-objs := mconsole_kern.o mconsole_user.o +-hostaudio-objs := hostaudio_kern.o hostaudio_user.o ++hostaudio-objs := hostaudio_kern.o + ubd-objs := ubd_kern.o ubd_user.o + port-objs := port_kern.o port_user.o + harddog-objs := harddog_kern.o harddog_user.o +@@ -39,6 +39,8 @@ + obj-$(CONFIG_TTY_CHAN) += tty.o + obj-$(CONFIG_XTERM_CHAN) += xterm.o xterm_kern.o + obj-$(CONFIG_UML_WATCHDOG) += harddog.o ++obj-$(CONFIG_BLK_DEV_COW) += cow_kern.o ++obj-$(CONFIG_BLK_DEV_COW_COMMON) += cow_user.o - __uml_postsetup(make_uml_dir); --__uml_postsetup(make_umid); -+ -+static int __init make_umid_setup(void) -+{ -+ return(make_umid(printf)); -+} -+ -+__uml_postsetup(make_umid_setup); - __uml_postsetup(create_pid_file); + obj-y += stdio_console.o $(CHAN_OBJS) - /* -diff -Naur a/arch/um/kernel/user_syms.c b/arch/um/kernel/user_syms.c ---- a/arch/um/kernel/user_syms.c 2004-03-10 08:23:06.000000000 -0500 -+++ b/arch/um/kernel/user_syms.c 1969-12-31 19:00:00.000000000 -0500 -@@ -1,113 +0,0 @@ --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include "user_util.h" --#include "mem_user.h" --#include "uml-config.h" -- --/* Had to steal this from linux/module.h because that file can't be included -- * since this includes various user-level headers. -- */ -- --struct module_symbol --{ -- unsigned long value; -- const char *name; --}; -- --/* Indirect stringification. */ -- --#define __MODULE_STRING_1(x) #x --#define __MODULE_STRING(x) __MODULE_STRING_1(x) -- --#if !defined(__AUTOCONF_INCLUDED__) -- --#define __EXPORT_SYMBOL(sym,str) error config_must_be_included_before_module --#define EXPORT_SYMBOL(var) error config_must_be_included_before_module --#define EXPORT_SYMBOL_NOVERS(var) error config_must_be_included_before_module -- --#elif !defined(UML_CONFIG_MODULES) -- --#define __EXPORT_SYMBOL(sym,str) --#define EXPORT_SYMBOL(var) --#define EXPORT_SYMBOL_NOVERS(var) +@@ -46,18 +48,7 @@ + + USER_OBJS := $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) fd.o \ + null.o pty.o tty.o xterm.o +-USER_OBJS := $(foreach file,$(USER_OBJS),arch/um/drivers/$(file)) ++USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) + + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< - --#else +-clean: - --#define __EXPORT_SYMBOL(sym, str) \ --const char __kstrtab_##sym[] \ --__attribute__((section(".kstrtab"))) = str; \ --const struct module_symbol __ksymtab_##sym \ --__attribute__((section("__ksymtab"))) = \ --{ (unsigned long)&sym, __kstrtab_##sym } +-modules: - --#if defined(__MODVERSIONS__) || !defined(UML_CONFIG_MODVERSIONS) --#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) --#else --#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var))) --#endif +-fastdep: - --#define EXPORT_SYMBOL_NOVERS(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) +-dep: - --#endif +-archmrproper: clean - --EXPORT_SYMBOL(__errno_location); -- --EXPORT_SYMBOL(access); --EXPORT_SYMBOL(open); --EXPORT_SYMBOL(open64); --EXPORT_SYMBOL(close); --EXPORT_SYMBOL(read); --EXPORT_SYMBOL(write); --EXPORT_SYMBOL(dup2); --EXPORT_SYMBOL(__xstat); --EXPORT_SYMBOL(__lxstat); --EXPORT_SYMBOL(__lxstat64); --EXPORT_SYMBOL(lseek); --EXPORT_SYMBOL(lseek64); --EXPORT_SYMBOL(chown); --EXPORT_SYMBOL(truncate); --EXPORT_SYMBOL(utime); --EXPORT_SYMBOL(chmod); --EXPORT_SYMBOL(rename); --EXPORT_SYMBOL(__xmknod); -- --EXPORT_SYMBOL(symlink); --EXPORT_SYMBOL(link); --EXPORT_SYMBOL(unlink); --EXPORT_SYMBOL(readlink); -- --EXPORT_SYMBOL(mkdir); --EXPORT_SYMBOL(rmdir); --EXPORT_SYMBOL(opendir); --EXPORT_SYMBOL(readdir); --EXPORT_SYMBOL(closedir); --EXPORT_SYMBOL(seekdir); --EXPORT_SYMBOL(telldir); -- --EXPORT_SYMBOL(ioctl); -- --extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, -- __off64_t __offset); --extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, -- __off64_t __offset); --EXPORT_SYMBOL(pread64); --EXPORT_SYMBOL(pwrite64); -- --EXPORT_SYMBOL(statfs); --EXPORT_SYMBOL(statfs64); -- --EXPORT_SYMBOL(memcpy); --EXPORT_SYMBOL(getuid); -- --EXPORT_SYMBOL(memset); --EXPORT_SYMBOL(strstr); -- --EXPORT_SYMBOL(find_iomem); -diff -Naur a/arch/um/kernel/user_util.c b/arch/um/kernel/user_util.c ---- a/arch/um/kernel/user_util.c 2004-03-10 08:20:26.000000000 -0500 -+++ b/arch/um/kernel/user_util.c 2004-03-10 08:35:25.000000000 -0500 -@@ -5,7 +5,6 @@ +Index: uml-2.6.7/arch/um/kernel/tt/uaccess.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/uaccess.c 2004-07-16 19:47:23.625219632 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/uaccess.c 2004-07-16 19:47:23.751200480 +0300 +@@ -0,0 +1,73 @@ ++/* ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) ++ * Licensed under the GPL ++ */ ++ ++#include "linux/sched.h" ++#include "asm/uaccess.h" ++ ++int copy_from_user_tt(void *to, const void *from, int n) ++{ ++ if(!access_ok_tt(VERIFY_READ, from, n)) ++ return(n); ++ ++ return(__do_copy_from_user(to, from, n, ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)); ++} ++ ++int copy_to_user_tt(void *to, const void *from, int n) ++{ ++ if(!access_ok_tt(VERIFY_WRITE, to, n)) ++ return(n); ++ ++ return(__do_copy_to_user(to, from, n, ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)); ++} ++ ++int strncpy_from_user_tt(char *dst, const char *src, int count) ++{ ++ int n; ++ ++ if(!access_ok_tt(VERIFY_READ, src, 1)) ++ return(-EFAULT); ++ ++ n = __do_strncpy_from_user(dst, src, count, ++ ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher); ++ if(n < 0) return(-EFAULT); ++ return(n); ++} ++ ++int __clear_user_tt(void *mem, int len) ++{ ++ return(__do_clear_user(mem, len, ++ ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)); ++} ++ ++int clear_user_tt(void *mem, int len) ++{ ++ if(!access_ok_tt(VERIFY_WRITE, mem, len)) ++ return(len); ++ ++ return(__do_clear_user(mem, len, ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)); ++} ++ ++int strnlen_user_tt(const void *str, int len) ++{ ++ return(__do_strnlen_user(str, len, ++ ¤t->thread.fault_addr, ++ ¤t->thread.fault_catcher)); ++} ++ ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/kernel/skas/util/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/util/Makefile 2004-07-16 19:37:20.411921992 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/util/Makefile 2004-07-16 19:47:23.735202912 +0300 +@@ -1,10 +1,9 @@ + all: mk_ptregs - #include - #include --#include - #include - #include - #include -@@ -82,7 +81,8 @@ - int status, ret; + mk_ptregs : mk_ptregs.o +- $(CC) -o mk_ptregs mk_ptregs.o ++ $(HOSTCC) -o mk_ptregs mk_ptregs.o - while(1){ -- if(((ret = waitpid(pid, &status, WUNTRACED)) < 0) || -+ ret = waitpid(pid, &status, WUNTRACED); -+ if((ret < 0) || - !WIFSTOPPED(status) || (WSTOPSIG(status) != sig)){ - if(ret < 0){ - if(errno == EINTR) continue; -@@ -119,17 +119,6 @@ - } - } + mk_ptregs.o : mk_ptregs.c +- $(CC) -c $< ++ $(HOSTCC) -c $< --int clone_and_wait(int (*fn)(void *), void *arg, void *sp, int flags) --{ -- int pid; -- -- pid = clone(fn, sp, flags, arg); -- if(pid < 0) return(-1); -- wait_for_stop(pid, SIGSTOP, PTRACE_CONT, NULL); -- ptrace(PTRACE_CONT, pid, 0, 0); -- return(pid); --} +-clean : +- $(RM) -f mk_ptregs *.o *~ ++clean-files := mk_ptregs *.o *~ +Index: uml-2.6.7/arch/um/kernel/skas/sys-i386/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/sys-i386/Makefile 2004-07-16 19:37:26.083059848 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/sys-i386/Makefile 2004-07-16 19:47:23.733203216 +0300 +@@ -10,5 +10,3 @@ + + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< - - int raw(int fd, int complain) - { - struct termios tt; -diff -Naur a/arch/um/main.c b/arch/um/main.c ---- a/arch/um/main.c 2004-03-10 08:22:34.000000000 -0500 -+++ b/arch/um/main.c 2004-03-10 08:42:26.000000000 -0500 -@@ -8,6 +8,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -123,12 +124,14 @@ +-clean : +Index: uml-2.6.7/arch/um/kernel/sigio_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/sigio_kern.c 2004-07-16 19:36:16.630618224 +0300 ++++ uml-2.6.7/arch/um/kernel/sigio_kern.c 2004-07-16 19:47:23.725204432 +0300 +@@ -6,18 +6,21 @@ + #include "linux/kernel.h" + #include "linux/list.h" + #include "linux/slab.h" +-#include "asm/irq.h" ++#include "linux/signal.h" ++#include "linux/interrupt.h" + #include "init.h" + #include "sigio.h" + #include "irq_user.h" ++#include "irq_kern.h" - set_stklim(); + /* Protected by sigio_lock() called from write_sigio_workaround */ + static int sigio_irq_fd = -1; + +-void sigio_interrupt(int irq, void *data, struct pt_regs *unused) ++irqreturn_t sigio_interrupt(int irq, void *data, struct pt_regs *unused) + { + read_sigio_fd(sigio_irq_fd); + reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); ++ return(IRQ_HANDLED); + } -- if((new_argv = malloc((argc + 1) * sizeof(char *))) == NULL){ -+ new_argv = malloc((argc + 1) * sizeof(char *)); -+ if(new_argv == NULL){ - perror("Mallocing argv"); - exit(1); - } - for(i=0;i + #include + #include ++#include ++#include + #include + #include + #include +@@ -17,33 +19,235 @@ + #include "user.h" + #include "kern_util.h" + +-int os_file_type(char *file) ++static void copy_stat(struct uml_stat *dst, struct stat64 *src) ++{ ++ *dst = ((struct uml_stat) { ++ .ust_dev = src->st_dev, /* device */ ++ .ust_ino = src->st_ino, /* inode */ ++ .ust_mode = src->st_mode, /* protection */ ++ .ust_nlink = src->st_nlink, /* number of hard links */ ++ .ust_uid = src->st_uid, /* user ID of owner */ ++ .ust_gid = src->st_gid, /* group ID of owner */ ++ .ust_size = src->st_size, /* total size, in bytes */ ++ .ust_blksize = src->st_blksize, /* blocksize for filesys I/O */ ++ .ust_blocks = src->st_blocks, /* number of blocks allocated */ ++ .ust_atime = src->st_atime, /* time of last access */ ++ .ust_mtime = src->st_mtime, /* time of last modification */ ++ .ust_ctime = src->st_ctime, /* time of last change */ ++ }); ++} ++ ++int os_stat_fd(const int fd, struct uml_stat *ubuf) ++{ ++ struct stat64 sbuf; ++ int err; ++ ++ do { ++ err = fstat64(fd, &sbuf); ++ } while((err < 0) && (errno == EINTR)) ; ++ ++ if(err < 0) ++ return(-errno); ++ ++ if(ubuf != NULL) ++ copy_stat(ubuf, &sbuf); ++ return(err); ++} ++ ++int os_stat_file(const char *file_name, struct uml_stat *ubuf) ++{ ++ struct stat64 sbuf; ++ int err; ++ ++ do { ++ err = stat64(file_name, &sbuf); ++ } while((err < 0) && (errno == EINTR)) ; ++ ++ if(err < 0) ++ return(-errno); ++ ++ if(ubuf != NULL) ++ copy_stat(ubuf, &sbuf); ++ return(err); ++} ++ ++int os_access(const char* file, int mode) ++{ ++ int amode, err; ++ ++ amode=(mode&OS_ACC_R_OK ? R_OK : 0) | (mode&OS_ACC_W_OK ? W_OK : 0) | ++ (mode&OS_ACC_X_OK ? X_OK : 0) | (mode&OS_ACC_F_OK ? F_OK : 0) ; ++ ++ err = access(file, amode); ++ if(err < 0) ++ return(-errno); ++ ++ return(0); ++} ++ ++void os_print_error(int error, const char* str) ++{ ++ errno = error < 0 ? -error : error; ++ ++ perror(str); ++} ++ ++/* FIXME? required only by hostaudio (because it passes ioctls verbatim) */ ++int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg) ++{ ++ int err; ++ ++ err = ioctl(fd, cmd, arg); ++ if(err < 0) ++ return(-errno); ++ ++ return(err); ++} ++ ++int os_window_size(int fd, int *rows, int *cols) ++{ ++ struct winsize size; ++ ++ if(ioctl(fd, TIOCGWINSZ, &size) < 0) ++ return(-errno); ++ ++ *rows = size.ws_row; ++ *cols = size.ws_col; ++ ++ return(0); ++} ++ ++int os_new_tty_pgrp(int fd, int pid) + { +- struct stat64 buf; ++ if(ioctl(fd, TIOCSCTTY, 0) < 0){ ++ printk("TIOCSCTTY failed, errno = %d\n", errno); ++ return(-errno); ++ } ++ ++ if(tcsetpgrp(fd, pid) < 0){ ++ printk("tcsetpgrp failed, errno = %d\n", errno); ++ return(-errno); ++ } ++ ++ return(0); ++} ++ ++/* FIXME: ensure namebuf in os_get_if_name is big enough */ ++int os_get_ifname(int fd, char* namebuf) ++{ ++ if(ioctl(fd, SIOCGIFNAME, namebuf) < 0) ++ return(-errno); ++ ++ return(0); ++} ++ ++int os_set_slip(int fd) ++{ ++ int disc, sencap; ++ ++ disc = N_SLIP; ++ if(ioctl(fd, TIOCSETD, &disc) < 0){ ++ printk("Failed to set slip line discipline - " ++ "errno = %d\n", errno); ++ return(-errno); ++ } ++ ++ sencap = 0; ++ if(ioctl(fd, SIOCSIFENCAP, &sencap) < 0){ ++ printk("Failed to set slip encapsulation - " ++ "errno = %d\n", errno); ++ return(-errno); ++ } ++ ++ return(0); ++} ++ ++int os_set_owner(int fd, int pid) ++{ ++ if(fcntl(fd, F_SETOWN, pid) < 0){ ++ int save_errno = errno; ++ ++ if(fcntl(fd, F_GETOWN, 0) != pid) ++ return(-save_errno); ++ } + - EXTRAVERSION := $(EXTRAVERSION)-1um - - ARCH_INCLUDE = -I$(ARCH_DIR)/include -@@ -52,14 +59,20 @@ - - CFLAGS += $(CFLAGS-y) -D__arch_um__ -DSUBARCH=\"$(SUBARCH)\" \ - -D_LARGEFILE64_SOURCE $(ARCH_INCLUDE) -Derrno=kernel_errno \ -- $(MODE_INCLUDE) -+ -Dsigprocmask=kernel_sigprocmask $(MODE_INCLUDE) - - LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc ++ return(0); ++} ++ ++/* FIXME? moved wholesale from sigio_user.c to get fcntls out of that file */ ++int os_sigio_async(int master, int slave) ++{ ++ int flags; -+# These are needed for clean and mrproper, since in that case .config is not -+# included; the values here are meaningless +- if(stat64(file, &buf) == -1) ++ flags = fcntl(master, F_GETFL); ++ if(flags < 0) { ++ printk("fcntl F_GETFL failed, errno = %d\n", errno); + return(-errno); ++ } + -+CONFIG_NEST_LEVEL ?= 0 -+CONFIG_KERNEL_HALF_GIGS ?= 0 ++ if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || ++ (fcntl(master, F_SETOWN, os_getpid()) < 0)){ ++ printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", errno); ++ return(-errno); ++ } + - SIZE = (($(CONFIG_NEST_LEVEL) + $(CONFIG_KERNEL_HALF_GIGS)) * 0x20000000) - - ifeq ($(CONFIG_MODE_SKAS), y) --$(SYS_HEADERS) : $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h -+$(SYS_HEADERS) : $(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h - endif - - include/linux/version.h: arch/$(ARCH)/Makefile -@@ -98,17 +111,17 @@ - CONFIG_KERNEL_STACK_ORDER ?= 2 - STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] ) ++ if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)){ ++ printk("fcntl F_SETFL failed, errno = %d\n", errno); ++ return(-errno); ++ } --AFLAGS_vmlinux.lds.o = -U$(SUBARCH) \ -+AFLAGS_vmlinux.lds.o = $(shell echo -U$(SUBARCH) \ - -DSTART=$$(($(TOP_ADDR) - $(SIZE))) -DELF_ARCH=$(ELF_ARCH) \ - -DELF_FORMAT=\"$(ELF_FORMAT)\" $(CPP_MODE_TT) \ -- -DKERNEL_STACK_SIZE=$(STACK_SIZE) -+ -DKERNEL_STACK_SIZE=$(STACK_SIZE)) +- if(S_ISDIR(buf.st_mode)) return(OS_TYPE_DIR); +- else if(S_ISLNK(buf.st_mode)) return(OS_TYPE_SYMLINK); +- else if(S_ISCHR(buf.st_mode)) return(OS_TYPE_CHARDEV); +- else if(S_ISBLK(buf.st_mode)) return(OS_TYPE_BLOCKDEV); +- else if(S_ISFIFO(buf.st_mode)) return(OS_TYPE_FIFO); +- else if(S_ISSOCK(buf.st_mode)) return(OS_TYPE_SOCK); ++ return(0); ++} ++ ++int os_mode_fd(int fd, int mode) ++{ ++ int err; ++ ++ do { ++ err = fchmod(fd, mode); ++ } while((err < 0) && (errno==EINTR)) ; ++ ++ if(err < 0) ++ return(-errno); ++ ++ return(0); ++} ++ ++int os_file_type(char *file) ++{ ++ struct uml_stat buf; ++ int err; ++ ++ err = os_stat_file(file, &buf); ++ if(err < 0) ++ return(err); ++ ++ if(S_ISDIR(buf.ust_mode)) return(OS_TYPE_DIR); ++ else if(S_ISLNK(buf.ust_mode)) return(OS_TYPE_SYMLINK); ++ else if(S_ISCHR(buf.ust_mode)) return(OS_TYPE_CHARDEV); ++ else if(S_ISBLK(buf.ust_mode)) return(OS_TYPE_BLOCKDEV); ++ else if(S_ISFIFO(buf.ust_mode)) return(OS_TYPE_FIFO); ++ else if(S_ISSOCK(buf.ust_mode)) return(OS_TYPE_SOCK); + else return(OS_TYPE_FILE); + } --AFLAGS_$(LD_SCRIPT-y:.s=).o = $(AFLAGS_vmlinux.lds.o) -P -C -Uum -+export AFLAGS_$(LD_SCRIPT-y:.s=).o = $(AFLAGS_vmlinux.lds.o) -P -C -Uum + int os_file_mode(char *file, struct openflags *mode_out) + { ++ int err; ++ + *mode_out = OPENFLAGS(); - LD_SCRIPT-y := $(ARCH_DIR)/$(LD_SCRIPT-y) +- if(!access(file, W_OK)) *mode_out = of_write(*mode_out); +- else if(errno != EACCES) +- return(-errno); ++ err = os_access(file, OS_ACC_W_OK); ++ if((err < 0) && (err != -EACCES)) ++ return(err); --$(LD_SCRIPT-y) : $(LD_SCRIPT-y:.s=.S) scripts FORCE -- $(call if_changed_dep,as_s_S) -+#$(LD_SCRIPT-y) : $(LD_SCRIPT-y:.s=.S) scripts FORCE -+# $(call if_changed_dep,as_s_S) +- if(!access(file, R_OK)) *mode_out = of_read(*mode_out); +- else if(errno != EACCES) +- return(-errno); ++ *mode_out = of_write(*mode_out); ++ ++ err = os_access(file, OS_ACC_R_OK); ++ if((err < 0) && (err != -EACCES)) ++ return(err); ++ ++ *mode_out = of_read(*mode_out); - linux: vmlinux $(LD_SCRIPT-y) - $(CC) -Wl,-T,$(LD_SCRIPT-y) $(LINK-y) $(LINK_WRAPS) \ -@@ -116,37 +129,47 @@ + return(0); + } +@@ -63,16 +267,14 @@ + if(flags.e) f |= O_EXCL; - USER_CFLAGS := $(patsubst -I%,,$(CFLAGS)) - USER_CFLAGS := $(patsubst -Derrno=kernel_errno,,$(USER_CFLAGS)) -+USER_CFLAGS := $(patsubst -Dsigprocmask=kernel_sigprocmask,,$(USER_CFLAGS)) - USER_CFLAGS := $(patsubst -D__KERNEL__,,$(USER_CFLAGS)) $(ARCH_INCLUDE) \ - $(MODE_INCLUDE) + fd = open64(file, f, mode); +- if(fd < 0) return(-errno); +- +- if(flags.cl){ +- if(fcntl(fd, F_SETFD, 1)){ +- close(fd); +- return(-errno); +- } ++ if(fd < 0) ++ return(-errno); ++ ++ if(flags.cl && fcntl(fd, F_SETFD, 1)){ ++ os_close_file(fd); ++ return(-errno); + } - # To get a definition of F_SETSIG - USER_CFLAGS += -D_GNU_SOURCE +- return(fd); + return(fd); + } -+# From main Makefile, these options are set after including the ARCH makefile. -+# So copy them here. -+ -+ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE -+USER_CFLAGS += -Os -+else -+USER_CFLAGS += -O2 -+endif -+ -+ifndef CONFIG_FRAME_POINTER -+USER_CFLAGS += -fomit-frame-pointer -+endif -+ -+ifdef CONFIG_DEBUG_INFO -+USER_CFLAGS += -g -+endif -+ - CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/uml.lds.s \ -- $(ARCH_DIR)/dyn_link.ld.s $(GEN_HEADERS) -+ $(ARCH_DIR)/dyn_link.ld.s $(ARCH_DIR)/include/uml-config.h \ -+ $(GEN_HEADERS) +@@ -90,7 +292,7 @@ --$(ARCH_DIR)/main.o: $(ARCH_DIR)/main.c -- $(CC) $(USER_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< -+MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \ -+ $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) -+ -+$(ARCH_DIR)/main.o: $(ARCH_DIR)/main.c sys_prepare -+ @ echo ' MAIN $@' -+ @ $(CC) $(USER_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< + err = connect(fd, (struct sockaddr *) &sock, sizeof(sock)); + if(err) +- return(err); ++ return(-errno); - archmrproper: -- for d in $(ARCH_SUBDIRS) $(ARCH_DIR)/util; \ -- do \ -- $(MAKE) -C $$d archmrproper; \ -- done -- rm -f $(CLEAN_FILES) $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) include/asm \ -- $(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) -- --archclean: sysclean -- for d in $(ARCH_SUBDIRS) $(ARCH_DIR)/util; \ -- do \ -- $(MAKE) -C $$d clean; \ -- done -- find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ -- -o -name '*.gcov' \) -type f -print | xargs rm -f -- rm -f linux x.i gmon.out $(ARCH_DIR)/link.ld $(GEN_HEADERS) -+ @: + return(fd); + } +@@ -109,88 +311,162 @@ + return(0); + } --archdep: -- for d in $(ARCH_SUBDIRS); do $(MAKE) -C $$d fastdep; done -+archclean: -+ @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ -+ -o -name '*.gcov' \) -type f -print | xargs rm -f +-int os_read_file(int fd, void *buf, int len) ++static int fault_buffer(void *start, int len, ++ int (*copy_proc)(void *addr, void *buf, int len)) + { +- int n; ++ int page = getpagesize(), i; ++ char c; - $(SYMLINK_HEADERS): - cd $(TOPDIR)/$(dir $@) ; \ -@@ -161,19 +184,26 @@ - $(ARCH_DIR)/os: - cd $(ARCH_DIR) && ln -sf os-$(OS) os +- /* Force buf into memory if it's not already. */ ++ for(i = 0; i < len; i += page){ ++ if((*copy_proc)(start + i, &c, sizeof(c))) ++ return(-EFAULT); ++ } ++ if((len % page) != 0){ ++ if((*copy_proc)(start + len - 1, &c, sizeof(c))) ++ return(-EFAULT); ++ } ++ return(0); ++} --$(ARCH_DIR)/include/uml-config.h : -- sed 's/ CONFIG/ UML_CONFIG/' $(TOPDIR)/include/linux/autoconf.h > $@ -+# Generated files -+define filechk_umlconfig -+ sed 's/ CONFIG/ UML_CONFIG/' -+endef -+ -+$(ARCH_DIR)/include/uml-config.h : $(TOPDIR)/include/linux/autoconf.h -+ $(call filechk,umlconfig) +- /* XXX This fails if buf is kernel memory */ +-#ifdef notdef +- if(copy_to_user_proc(buf, &c, sizeof(c))) +- return(-EFAULT); +-#endif ++static int file_io(int fd, void *buf, int len, ++ int (*io_proc)(int fd, void *buf, int len), ++ int (*copy_user_proc)(void *addr, void *buf, int len)) ++{ ++ int n, err; + -+filechk_gen_header = $< - - $(ARCH_DIR)/include/task.h : $(ARCH_DIR)/util/mk_task -- $< > $@ -+ $(call filechk,gen_header) - - $(ARCH_DIR)/include/kern_constants.h : $(ARCH_DIR)/util/mk_constants -- $< > $@ -+ $(call filechk,gen_header) ++ do { ++ n = (*io_proc)(fd, buf, len); ++ if((n < 0) && (errno == EFAULT)){ ++ err = fault_buffer(buf, len, copy_user_proc); ++ if(err) ++ return(err); ++ n = (*io_proc)(fd, buf, len); ++ } ++ } while((n < 0) && (errno == EINTR)); --$(ARCH_DIR)/util/mk_task : $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h \ -- $(ARCH_DIR)/util FORCE ; -+$(ARCH_DIR)/util/mk_task $(ARCH_DIR)/util/mk_constants : $(ARCH_DIR)/util \ -+ sys_prepare FORCE ; +- n = read(fd, buf, len); + if(n < 0) + return(-errno); + return(n); + } - $(ARCH_DIR)/util: FORCE -- @$(call descend,$@,) -+ $(Q)$(MAKE) $(build)=$@ +-int os_write_file(int fd, void *buf, int count) ++int os_read_file(int fd, void *buf, int len) + { +- int n; +- +- /* Force buf into memory if it's not already. */ +- +- /* XXX This fails if buf is kernel memory */ +-#ifdef notdef +- if(copy_to_user_proc(buf, buf, buf[0])) +- return(-EFAULT); +-#endif ++ return(file_io(fd, buf, len, (int (*)(int, void *, int)) read, ++ copy_from_user_proc)); ++} --export SUBARCH USER_CFLAGS OS -+export SUBARCH USER_CFLAGS OS -diff -Naur a/arch/um/Makefile-i386 b/arch/um/Makefile-i386 ---- a/arch/um/Makefile-i386 2004-03-10 08:22:34.000000000 -0500 -+++ b/arch/um/Makefile-i386 2004-03-10 08:42:25.000000000 -0500 -@@ -16,22 +16,27 @@ +- n = write(fd, buf, count); +- if(n < 0) +- return(-errno); +- return(n); ++int os_write_file(int fd, const void *buf, int len) ++{ ++ return(file_io(fd, (void *) buf, len, ++ (int (*)(int, void *, int)) write, copy_to_user_proc)); + } - SYS_HEADERS = $(SYS_DIR)/sc.h $(SYS_DIR)/thread.h + int os_file_size(char *file, long long *size_out) + { +- struct stat64 buf; ++ struct uml_stat buf; ++ int err; -+sys_prepare: $(SYS_DIR)/sc.h +- if(stat64(file, &buf) == -1){ +- printk("Couldn't stat \"%s\" : errno = %d\n", file, errno); +- return(-errno); ++ err = os_stat_file(file, &buf); ++ if(err < 0){ ++ printk("Couldn't stat \"%s\" : err = %d\n", file, -err); ++ return(err); + } +- if(S_ISBLK(buf.st_mode)){ + - prepare: $(SYS_HEADERS) ++ if(S_ISBLK(buf.ust_mode)){ + int fd, blocks; -+filechk_$(SYS_DIR)/sc.h := $(SYS_UTIL_DIR)/mk_sc +- if((fd = open64(file, O_RDONLY)) < 0){ +- printk("Couldn't open \"%s\", errno = %d\n", file, +- errno); +- return(-errno); ++ fd = os_open_file(file, of_read(OPENFLAGS()), 0); ++ if(fd < 0){ ++ printk("Couldn't open \"%s\", errno = %d\n", file, -fd); ++ return(fd); + } + if(ioctl(fd, BLKGETSIZE, &blocks) < 0){ + printk("Couldn't get the block size of \"%s\", " + "errno = %d\n", file, errno); +- close(fd); +- return(-errno); ++ err = -errno; ++ os_close_file(fd); ++ return(err); + } + *size_out = ((long long) blocks) * 512; +- close(fd); ++ os_close_file(fd); + return(0); + } +- *size_out = buf.st_size; ++ *size_out = buf.ust_size; ++ return(0); ++} + - $(SYS_DIR)/sc.h: $(SYS_UTIL_DIR)/mk_sc -- $< > $@ -+ $(call filechk,$@) ++int os_file_modtime(char *file, unsigned long *modtime) ++{ ++ struct uml_stat buf; ++ int err; + -+filechk_$(SYS_DIR)/thread.h := $(SYS_UTIL_DIR)/mk_thread - - $(SYS_DIR)/thread.h: $(SYS_UTIL_DIR)/mk_thread -- $< > $@ -+ $(call filechk,$@) - --$(SYS_UTIL_DIR)/mk_sc: FORCE ; -- @$(call descend,$(SYS_UTIL_DIR),$@) -+$(SYS_UTIL_DIR)/mk_sc: scripts/fixdep include/config/MARKER FORCE ; -+ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ - --$(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) FORCE ; -- @$(call descend,$(SYS_UTIL_DIR),$@) -+$(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) sys_prepare FORCE ; -+ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ - - $(SYS_UTIL_DIR): include/asm FORCE -- @$(call descend,$@,) -+ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) ++ err = os_stat_file(file, &buf); ++ if(err < 0){ ++ printk("Couldn't stat \"%s\" : err = %d\n", file, -err); ++ return(err); ++ } ++ ++ *modtime = buf.ust_mtime; + return(0); + } --sysclean : -- rm -f $(SYS_HEADERS) -+CLEAN_FILES += $(SYS_HEADERS) -diff -Naur a/arch/um/Makefile-skas b/arch/um/Makefile-skas ---- a/arch/um/Makefile-skas 2004-03-10 08:21:06.000000000 -0500 -+++ b/arch/um/Makefile-skas 2004-03-10 08:38:38.000000000 -0500 -@@ -14,7 +14,7 @@ - LINK_SKAS = -Wl,-rpath,/lib - LD_SCRIPT_SKAS = dyn.lds.s ++int os_get_exec_close(int fd, int* close_on_exec) ++{ ++ int ret; ++ ++ do { ++ ret = fcntl(fd, F_GETFD); ++ } while((ret < 0) && (errno == EINTR)) ; ++ ++ if(ret < 0) ++ return(-errno); ++ ++ *close_on_exec = (ret&FD_CLOEXEC) ? 1 : 0; ++ return(ret); ++} ++ ++int os_set_exec_close(int fd, int close_on_exec) ++{ ++ int flag, err; ++ ++ if(close_on_exec) flag = FD_CLOEXEC; ++ else flag = 0; ++ ++ do { ++ err = fcntl(fd, F_SETFD, flag); ++ } while((err < 0) && (errno == EINTR)) ; ++ ++ if(err < 0) ++ return(-errno); ++ return(err); ++} ++ + int os_pipe(int *fds, int stream, int close_on_exec) + { + int err, type = stream ? SOCK_STREAM : SOCK_DGRAM; --GEN_HEADERS += $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h -+GEN_HEADERS += $(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h + err = socketpair(AF_UNIX, type, 0, fds); +- if(err) ++ if(err < 0) + return(-errno); --$(ARCH_DIR)/kernel/skas/include/skas_ptregs.h : -- $(MAKE) -C $(ARCH_DIR)/kernel/skas include/skas_ptregs.h -+$(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h : -+ $(Q)$(MAKE) $(build)=$(ARCH_DIR)/kernel/skas $@ -diff -Naur a/arch/um/os-Linux/drivers/ethertap_kern.c b/arch/um/os-Linux/drivers/ethertap_kern.c ---- a/arch/um/os-Linux/drivers/ethertap_kern.c 2004-03-10 08:20:16.000000000 -0500 -+++ b/arch/um/os-Linux/drivers/ethertap_kern.c 2004-03-10 08:34:08.000000000 -0500 -@@ -8,7 +8,6 @@ - #include "linux/init.h" - #include "linux/netdevice.h" - #include "linux/etherdevice.h" --#include "linux/init.h" - #include "net_kern.h" - #include "net_user.h" - #include "etap.h" -diff -Naur a/arch/um/os-Linux/drivers/ethertap_user.c b/arch/um/os-Linux/drivers/ethertap_user.c ---- a/arch/um/os-Linux/drivers/ethertap_user.c 2004-03-10 08:21:27.000000000 -0500 -+++ b/arch/um/os-Linux/drivers/ethertap_user.c 2004-03-10 08:39:05.000000000 -0500 -@@ -8,7 +8,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -42,13 +41,14 @@ - { - struct addr_change change; - void *output; -+ int n; + if(!close_on_exec) + return(0); - change.what = op; - memcpy(change.addr, addr, sizeof(change.addr)); - memcpy(change.netmask, netmask, sizeof(change.netmask)); -- if(write(fd, &change, sizeof(change)) != sizeof(change)) -- printk("etap_change - request failed, errno = %d\n", +- if((fcntl(fds[0], F_SETFD, 1) < 0) || (fcntl(fds[1], F_SETFD, 1) < 0)) +- printk("os_pipe : Setting FD_CLOEXEC failed, errno = %d", - errno); -+ n = os_write_file(fd, &change, sizeof(change)); -+ if(n != sizeof(change)) -+ printk("etap_change - request failed, err = %d\n", -n); - output = um_kmalloc(page_size()); - if(output == NULL) - printk("etap_change : Failed to allocate output buffer\n"); -@@ -82,15 +82,15 @@ - struct etap_pre_exec_data *data = arg; ++ err = os_set_exec_close(fds[0], 1); ++ if(err < 0) ++ goto error; ++ ++ err = os_set_exec_close(fds[1], 1); ++ if(err < 0) ++ goto error; - dup2(data->control_remote, 1); -- close(data->data_me); -- close(data->control_me); -+ os_close_file(data->data_me); -+ os_close_file(data->control_me); + return(0); ++ ++ error: ++ printk("os_pipe : Setting FD_CLOEXEC failed, err = %d\n", -err); ++ os_close_file(fds[1]); ++ os_close_file(fds[0]); ++ return(err); + } + + int os_set_fd_async(int fd, int owner) +@@ -270,7 +546,7 @@ + return(-EINVAL); + } + err = shutdown(fd, what); +- if(err) ++ if(err < 0) + return(-errno); + return(0); + } +@@ -315,7 +591,7 @@ + return(new); } - static int etap_tramp(char *dev, char *gate, int control_me, - int control_remote, int data_me, int data_remote) +-int create_unix_socket(char *file, int len) ++int os_create_unix_socket(char *file, int len, int close_on_exec) { - struct etap_pre_exec_data pe_data; -- int pid, status, err; -+ int pid, status, err, n; - char version_buf[sizeof("nnnnn\0")]; - char data_fd_buf[sizeof("nnnnnn\0")]; - char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; -@@ -114,21 +114,21 @@ - pe_data.data_me = data_me; - pid = run_helper(etap_pre_exec, &pe_data, args, NULL); + struct sockaddr_un addr; + int sock, err; +@@ -327,6 +603,13 @@ + return(-errno); + } -- if(pid < 0) err = errno; -- close(data_remote); -- close(control_remote); -- if(read(control_me, &c, sizeof(c)) != sizeof(c)){ -- printk("etap_tramp : read of status failed, errno = %d\n", ++ if(close_on_exec) { ++ err = os_set_exec_close(sock, 1); ++ if(err < 0) ++ printk("create_unix_socket : close_on_exec failed, " ++ "err = %d", -err); ++ } ++ + addr.sun_family = AF_UNIX; + + /* XXX Be more careful about overflow */ +@@ -334,14 +617,45 @@ + + err = bind(sock, (struct sockaddr *) &addr, sizeof(addr)); + if (err < 0){ +- printk("create_listening_socket - bind failed, errno = %d\n", - errno); -- return(EINVAL); -+ if(pid < 0) err = pid; -+ os_close_file(data_remote); -+ os_close_file(control_remote); -+ n = os_read_file(control_me, &c, sizeof(c)); -+ if(n != sizeof(c)){ -+ printk("etap_tramp : read of status failed, err = %d\n", -n); -+ return(-EINVAL); - } - if(c != 1){ - printk("etap_tramp : uml_net failed\n"); -- err = EINVAL; -- if(waitpid(pid, &status, 0) < 0) err = errno; -- else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 1)){ -+ err = -EINVAL; -+ if(waitpid(pid, &status, 0) < 0) -+ err = -errno; -+ else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 1)) - printk("uml_net didn't exit with status 1\n"); -- } ++ printk("create_listening_socket at '%s' - bind failed, " ++ "errno = %d\n", file, errno); + return(-errno); } - return(err); + + return(sock); } -@@ -143,14 +143,14 @@ - if(err) return(err); - err = os_pipe(data_fds, 0, 0); -- if(err){ -- printk("data os_pipe failed - errno = %d\n", -err); -+ if(err < 0){ -+ printk("data os_pipe failed - err = %d\n", -err); - return(err); ++void os_flush_stdout(void) ++{ ++ fflush(stdout); ++} ++ ++int os_lock_file(int fd, int excl) ++{ ++ int type = excl ? F_WRLCK : F_RDLCK; ++ struct flock lock = ((struct flock) { .l_type = type, ++ .l_whence = SEEK_SET, ++ .l_start = 0, ++ .l_len = 0 } ); ++ int err, save; ++ ++ err = fcntl(fd, F_SETLK, &lock); ++ if(!err) ++ goto out; ++ ++ save = -errno; ++ err = fcntl(fd, F_GETLK, &lock); ++ if(err){ ++ err = -errno; ++ goto out; ++ } ++ ++ printk("F_SETLK failed, file already locked by pid %d\n", lock.l_pid); ++ err = save; ++ out: ++ return(err); ++} ++ + /* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically +Index: uml-2.6.7/arch/um/kernel/tt/sys-i386/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/sys-i386/Makefile 2004-07-16 19:36:33.266089248 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/sys-i386/Makefile 2004-07-16 19:47:23.750200632 +0300 +@@ -10,5 +10,3 @@ + + $(USER_OBJS) : %.o: %.c + $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +- +-clean : +Index: uml-2.6.7/arch/um/kernel/skas/exec_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/exec_user.c 2004-07-16 19:36:07.836955064 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/exec_user.c 2004-07-16 19:47:24.798041336 +0300 +@@ -11,6 +11,7 @@ + #include + #include "user.h" + #include "kern_util.h" ++#include "user_util.h" + #include "os.h" + #include "time_user.h" + +@@ -26,7 +27,7 @@ + + int user_thread(unsigned long stack, int flags) + { +- int pid, status; ++ int pid, status, err; + + pid = clone(user_thread_tramp, (void *) stack_sp(stack), + flags | CLONE_FILES | SIGCHLD, NULL); +@@ -35,7 +36,8 @@ + return(pid); } - err = os_pipe(control_fds, 1, 0); -- if(err){ -- printk("control os_pipe failed - errno = %d\n", -err); +- if(waitpid(pid, &status, WUNTRACED) < 0){ ++ CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED)); + if(err < 0){ -+ printk("control os_pipe failed - err = %d\n", -err); - return(err); + printk("user_thread - waitpid failed, errno = %d\n", errno); + return(-errno); } - -@@ -167,9 +167,9 @@ - kfree(output); +Index: uml-2.6.7/arch/um/kernel/tt/mem_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/mem_user.c 2004-07-16 19:36:16.863582808 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/mem_user.c 2004-07-16 19:47:23.745201392 +0300 +@@ -25,14 +25,13 @@ + size = (unsigned long) segment_end - + (unsigned long) segment_start; + data = create_mem_file(size); +- if((addr = mmap(NULL, size, PROT_WRITE | PROT_READ, +- MAP_SHARED, data, 0)) == MAP_FAILED){ ++ addr = mmap(NULL, size, PROT_WRITE | PROT_READ, MAP_SHARED, data, 0); ++ if(addr == MAP_FAILED){ + perror("mapping new data segment"); + exit(1); } - -- if(err != 0){ -- printk("etap_tramp failed - errno = %d\n", err); -- return(-err); -+ if(err < 0){ -+ printk("etap_tramp failed - err = %d\n", -err); -+ return(err); + memcpy(addr, segment_start, size); +- if(switcheroo(data, prot, addr, segment_start, +- size) < 0){ ++ if(switcheroo(data, prot, addr, segment_start, size) < 0){ + printf("switcheroo failed\n"); + exit(1); } +Index: uml-2.6.7/arch/um/kernel/ksyms.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/ksyms.c 2004-07-16 19:35:55.815782560 +0300 ++++ uml-2.6.7/arch/um/kernel/ksyms.c 2004-07-16 19:47:24.866031000 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2001 - 2004 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ - pri->data_fd = data_fds[0]; -@@ -183,11 +183,11 @@ - struct ethertap_data *pri = data; +@@ -8,7 +8,7 @@ + #include "linux/string.h" + #include "linux/smp_lock.h" + #include "linux/spinlock.h" +-#include ++#include "linux/highmem.h" + #include "asm/current.h" + #include "asm/delay.h" + #include "asm/processor.h" +@@ -19,6 +19,7 @@ + #include "asm/tlbflush.h" + #include "kern_util.h" + #include "user_util.h" ++#include "mem_user.h" + #include "os.h" + #include "helper.h" - iter_addresses(pri->dev, etap_close_addr, &pri->control_fd); -- close(fd); -+ os_close_file(fd); - os_shutdown_socket(pri->data_fd, 1, 1); -- close(pri->data_fd); -+ os_close_file(pri->data_fd); - pri->data_fd = -1; -- close(pri->control_fd); -+ os_close_file(pri->control_fd); - pri->control_fd = -1; - } +@@ -34,34 +35,66 @@ + EXPORT_SYMBOL(flush_tlb_range); + EXPORT_SYMBOL(host_task_size); + EXPORT_SYMBOL(arch_validate); ++EXPORT_SYMBOL(get_kmem_end); + +-EXPORT_SYMBOL(region_pa); +-EXPORT_SYMBOL(region_va); +-EXPORT_SYMBOL(phys_mem_map); +-EXPORT_SYMBOL(page_mem_map); + EXPORT_SYMBOL(page_to_phys); + EXPORT_SYMBOL(phys_to_page); + EXPORT_SYMBOL(high_physmem); + EXPORT_SYMBOL(empty_zero_page); + EXPORT_SYMBOL(um_virt_to_phys); ++EXPORT_SYMBOL(__virt_to_page); ++EXPORT_SYMBOL(to_phys); ++EXPORT_SYMBOL(to_virt); + EXPORT_SYMBOL(mode_tt); + EXPORT_SYMBOL(handle_page_fault); ++EXPORT_SYMBOL(find_iomem); + ++#ifdef CONFIG_MODE_TT ++EXPORT_SYMBOL(strncpy_from_user_tt); ++EXPORT_SYMBOL(copy_from_user_tt); ++EXPORT_SYMBOL(copy_to_user_tt); ++#endif ++ ++#ifdef CONFIG_MODE_SKAS ++EXPORT_SYMBOL(strncpy_from_user_skas); ++EXPORT_SYMBOL(copy_to_user_skas); ++EXPORT_SYMBOL(copy_from_user_skas); ++#endif ++ ++EXPORT_SYMBOL(os_stat_fd); ++EXPORT_SYMBOL(os_stat_file); ++EXPORT_SYMBOL(os_access); ++EXPORT_SYMBOL(os_print_error); ++EXPORT_SYMBOL(os_get_exec_close); ++EXPORT_SYMBOL(os_set_exec_close); + EXPORT_SYMBOL(os_getpid); + EXPORT_SYMBOL(os_open_file); + EXPORT_SYMBOL(os_read_file); + EXPORT_SYMBOL(os_write_file); + EXPORT_SYMBOL(os_seek_file); ++EXPORT_SYMBOL(os_lock_file); ++EXPORT_SYMBOL(os_ioctl_generic); + EXPORT_SYMBOL(os_pipe); + EXPORT_SYMBOL(os_file_type); ++EXPORT_SYMBOL(os_file_mode); ++EXPORT_SYMBOL(os_file_size); ++EXPORT_SYMBOL(os_flush_stdout); + EXPORT_SYMBOL(os_close_file); ++EXPORT_SYMBOL(os_set_fd_async); ++EXPORT_SYMBOL(os_set_fd_block); + EXPORT_SYMBOL(helper_wait); + EXPORT_SYMBOL(os_shutdown_socket); ++EXPORT_SYMBOL(os_create_unix_socket); + EXPORT_SYMBOL(os_connect_socket); ++EXPORT_SYMBOL(os_accept_connection); ++EXPORT_SYMBOL(os_rcv_fd); + EXPORT_SYMBOL(run_helper); + EXPORT_SYMBOL(start_thread); + EXPORT_SYMBOL(dump_thread); + ++EXPORT_SYMBOL(do_gettimeofday); ++EXPORT_SYMBOL(do_settimeofday); ++ + /* This is here because UML expands open to sys_open, not to a system + * call instruction. + */ +@@ -90,3 +123,13 @@ + EXPORT_SYMBOL(kmap_atomic_to_page); + #endif -diff -Naur a/arch/um/os-Linux/drivers/tuntap_user.c b/arch/um/os-Linux/drivers/tuntap_user.c ---- a/arch/um/os-Linux/drivers/tuntap_user.c 2004-03-10 08:23:25.000000000 -0500 -+++ b/arch/um/os-Linux/drivers/tuntap_user.c 2004-03-10 08:44:59.000000000 -0500 -@@ -8,7 +8,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -61,7 +60,7 @@ - struct tuntap_pre_exec_data *data = arg; - - dup2(data->stdout, 1); -- close(data->close_me); -+ os_close_file(data->close_me); - } ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/include/linux/gfp.h +=================================================================== +--- uml-2.6.7.orig/include/linux/gfp.h 2004-07-16 19:36:13.897033792 +0300 ++++ uml-2.6.7/include/linux/gfp.h 2004-07-16 19:47:23.805192272 +0300 +@@ -73,6 +73,11 @@ + * For the normal case of non-DISCONTIGMEM systems the NODE_DATA() gets + * optimized to &contig_page_data at compile-time. + */ ++ ++#ifndef HAVE_ARCH_FREE_PAGE ++static inline void arch_free_page(struct page *page, int order) { } ++#endif ++ + extern struct page * + FASTCALL(__alloc_pages(unsigned int, unsigned int, struct zonelist *)); - static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote, -@@ -86,7 +85,7 @@ +Index: uml-2.6.7/arch/um/defconfig +=================================================================== +--- uml-2.6.7.orig/arch/um/defconfig 2004-07-16 19:37:02.601629568 +0300 ++++ uml-2.6.7/arch/um/defconfig 2004-07-16 19:47:23.676211880 +0300 +@@ -3,29 +3,19 @@ + # + CONFIG_USERMODE=y + CONFIG_MMU=y +-CONFIG_SWAP=y + CONFIG_UID16=y + CONFIG_RWSEM_GENERIC_SPINLOCK=y +-CONFIG_CONFIG_LOG_BUF_SHIFT=14 - if(pid < 0) return(-pid); + # +-# Code maturity level options +-# +-CONFIG_EXPERIMENTAL=y +- +-# +-# General Setup ++# UML-specific options + # + CONFIG_MODE_TT=y + CONFIG_MODE_SKAS=y + CONFIG_NET=y +-CONFIG_SYSVIPC=y +-CONFIG_BSD_PROCESS_ACCT=y +-CONFIG_SYSCTL=y +-CONFIG_BINFMT_AOUT=y + CONFIG_BINFMT_ELF=y + CONFIG_BINFMT_MISC=y + CONFIG_HOSTFS=y ++CONFIG_HPPFS=y + CONFIG_MCONSOLE=y + CONFIG_MAGIC_SYSRQ=y + # CONFIG_HOST_2G_2G is not set +@@ -36,12 +26,43 @@ + # CONFIG_HIGHMEM is not set + CONFIG_PROC_MM=y + CONFIG_KERNEL_STACK_ORDER=2 ++CONFIG_UML_REAL_TIME_CLOCK=y ++ ++# ++# Code maturity level options ++# ++CONFIG_EXPERIMENTAL=y ++CONFIG_CLEAN_COMPILE=y ++CONFIG_STANDALONE=y ++CONFIG_BROKEN_ON_SMP=y ++ ++# ++# General setup ++# ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_SYSCTL=y ++CONFIG_LOG_BUF_SHIFT=14 ++# CONFIG_HOTPLUG is not set ++# CONFIG_IKCONFIG is not set ++# CONFIG_EMBEDDED is not set ++CONFIG_KALLSYMS=y ++CONFIG_FUTEX=y ++CONFIG_EPOLL=y ++CONFIG_IOSCHED_NOOP=y ++CONFIG_IOSCHED_AS=y ++CONFIG_IOSCHED_DEADLINE=y ++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -- close(remote); -+ os_close_file(remote); + # + # Loadable module support + # +-CONFIG_MODULES=y +-# CONFIG_KMOD is not set ++# CONFIG_MODULES is not set ++ ++# ++# Generic Driver Options ++# - msg.msg_name = NULL; - msg.msg_namelen = 0; -@@ -107,19 +106,19 @@ - if(n < 0){ - printk("tuntap_open_tramp : recvmsg failed - errno = %d\n", - errno); -- return(errno); -+ return(-errno); - } - waitpid(pid, NULL, 0); + # + # Character Devices +@@ -69,6 +90,7 @@ + # + CONFIG_BLK_DEV_UBD=y + # CONFIG_BLK_DEV_UBD_SYNC is not set ++CONFIG_BLK_DEV_COW_COMMON=y + CONFIG_BLK_DEV_LOOP=y + CONFIG_BLK_DEV_NBD=y + CONFIG_BLK_DEV_RAM=y +@@ -78,7 +100,7 @@ + CONFIG_NETDEVICES=y - cmsg = CMSG_FIRSTHDR(&msg); - if(cmsg == NULL){ - printk("tuntap_open_tramp : didn't receive a message\n"); -- return(EINVAL); -+ return(-EINVAL); - } - if((cmsg->cmsg_level != SOL_SOCKET) || - (cmsg->cmsg_type != SCM_RIGHTS)){ - printk("tuntap_open_tramp : didn't receive a descriptor\n"); -- return(EINVAL); -+ return(-EINVAL); - } - *fd_out = ((int *) CMSG_DATA(cmsg))[0]; - return(0); -@@ -133,27 +132,29 @@ - int err, fds[2], len, used; + # +-# Network Devices ++# UML Network Devices + # + CONFIG_UML_NET=y + CONFIG_UML_NET_ETHERTAP=y +@@ -88,22 +110,6 @@ + CONFIG_UML_NET_MCAST=y + # CONFIG_UML_NET_PCAP is not set + CONFIG_UML_NET_SLIRP=y +-CONFIG_DUMMY=y +-# CONFIG_BONDING is not set +-# CONFIG_EQUALIZER is not set +-CONFIG_TUN=y +-# CONFIG_ETHERTAP is not set +-CONFIG_PPP=y +-# CONFIG_PPP_MULTILINK is not set +-# CONFIG_PPP_ASYNC is not set +-# CONFIG_PPP_SYNC_TTY is not set +-# CONFIG_PPP_DEFLATE is not set +-# CONFIG_PPP_BSDCOMP is not set +-# CONFIG_PPPOE is not set +-CONFIG_SLIP=y +-# CONFIG_SLIP_COMPRESSED is not set +-# CONFIG_SLIP_SMART is not set +-# CONFIG_SLIP_MODE_SLIP6 is not set - err = tap_open_common(pri->dev, pri->gate_addr); -- if(err) return(err); -+ if(err < 0) -+ return(err); + # + # Networking support +@@ -115,8 +121,6 @@ + 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_NET_KEY is not set + CONFIG_INET=y +@@ -130,8 +134,11 @@ + # CONFIG_SYN_COOKIES is not set + # CONFIG_INET_AH is not set + # CONFIG_INET_ESP is not set +-# CONFIG_XFRM_USER is not set ++# CONFIG_INET_IPCOMP is not set + # CONFIG_IPV6 is not set ++# CONFIG_DECNET is not set ++# CONFIG_BRIDGE is not set ++# CONFIG_NETFILTER is not set - if(pri->fixed_config){ -- if((pri->fd = open("/dev/net/tun", O_RDWR)) < 0){ -- printk("Failed to open /dev/net/tun, errno = %d\n", -- errno); -- return(-errno); -+ pri->fd = os_open_file("/dev/net/tun", of_rdwr(OPENFLAGS()), 0); -+ if(pri->fd < 0){ -+ printk("Failed to open /dev/net/tun, err = %d\n", -+ -pri->fd); -+ return(pri->fd); - } - memset(&ifr, 0, sizeof(ifr)); -- ifr.ifr_flags = IFF_TAP; -+ ifr.ifr_flags = IFF_TAP | IFF_NO_PI; - strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name)); - if(ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0){ -- printk("TUNSETIFF failed, errno = %d", errno); -- close(pri->fd); -+ printk("TUNSETIFF failed, errno = %d\n", errno); -+ os_close_file(pri->fd); - return(-errno); - } - } - else { - err = os_pipe(fds, 0, 0); -- if(err){ -- printk("tuntap_open : os_pipe failed - errno = %d\n", -+ if(err < 0){ -+ printk("tuntap_open : os_pipe failed - err = %d\n", - -err); - return(err); - } -@@ -166,19 +167,19 @@ - fds[1], buffer, len, &used); + # + # SCTP Configuration (EXPERIMENTAL) +@@ -140,9 +147,9 @@ + # CONFIG_IP_SCTP is not set + # CONFIG_ATM is not set + # CONFIG_VLAN_8021Q is not set +-# CONFIG_LLC is not set +-# CONFIG_DECNET is not set +-# CONFIG_BRIDGE is not set ++# CONFIG_LLC2 is not set ++# CONFIG_IPX is not set ++# CONFIG_ATALK is not set + # CONFIG_X25 is not set + # CONFIG_LAPB is not set + # CONFIG_NET_DIVERT is not set +@@ -160,6 +167,10 @@ + # Network testing + # + # CONFIG_NET_PKTGEN is not set ++CONFIG_DUMMY=y ++# CONFIG_BONDING is not set ++# CONFIG_EQUALIZER is not set ++CONFIG_TUN=y + + # + # Ethernet (10 or 100Mbit) +@@ -171,12 +182,28 @@ + # - output = buffer; -- if(err == 0){ -- pri->dev_name = uml_strdup(buffer); -- output += IFNAMSIZ; -- printk(output); -- free_output_buffer(buffer); -- } -- else { -- printk(output); -+ if(err < 0) { -+ printk("%s", output); - free_output_buffer(buffer); -- printk("tuntap_open_tramp failed - errno = %d\n", err); -- return(-err); -+ printk("tuntap_open_tramp failed - err = %d\n", -err); -+ return(err); - } -- close(fds[0]); + # ++# Ethernet (10000 Mbit) ++# ++CONFIG_PPP=y ++# CONFIG_PPP_MULTILINK is not set ++# CONFIG_PPP_FILTER is not set ++# CONFIG_PPP_ASYNC is not set ++# CONFIG_PPP_SYNC_TTY is not set ++# CONFIG_PPP_DEFLATE is not set ++# CONFIG_PPP_BSDCOMP is not set ++# CONFIG_PPPOE is not set ++CONFIG_SLIP=y ++# CONFIG_SLIP_COMPRESSED is not set ++# CONFIG_SLIP_SMART is not set ++# CONFIG_SLIP_MODE_SLIP6 is not set + -+ pri->dev_name = uml_strdup(buffer); -+ output += IFNAMSIZ; -+ printk("%s", output); -+ free_output_buffer(buffer); ++# + # Wireless LAN (non-hamradio) + # + # CONFIG_NET_RADIO is not set + + # +-# Token Ring devices (depends on LLC=y) ++# Token Ring devices + # + # CONFIG_SHAPER is not set + +@@ -186,68 +213,100 @@ + # CONFIG_WAN is not set + + # ++# Amateur Radio support ++# ++# CONFIG_HAMRADIO is not set + -+ os_close_file(fds[0]); - iter_addresses(pri->dev, open_addr, pri->dev_name); - } ++# ++# IrDA (infrared) support ++# ++# CONFIG_IRDA is not set ++ ++# ++# Bluetooth support ++# ++# CONFIG_BT is not set ++ ++# + # File systems + # ++CONFIG_EXT2_FS=y ++# CONFIG_EXT2_FS_XATTR is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_JBD is not set ++CONFIG_REISERFS_FS=y ++# CONFIG_REISERFS_CHECK is not set ++# CONFIG_REISERFS_PROC_INFO is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_XFS_FS is not set ++CONFIG_MINIX_FS=y ++# CONFIG_ROMFS_FS is not set + CONFIG_QUOTA=y + # CONFIG_QFMT_V1 is not set + # CONFIG_QFMT_V2 is not set + CONFIG_QUOTACTL=y +-CONFIG_AUTOFS_FS=m +-CONFIG_AUTOFS4_FS=m +-CONFIG_REISERFS_FS=m +-# CONFIG_REISERFS_CHECK is not set +-# CONFIG_REISERFS_PROC_INFO is not set ++CONFIG_AUTOFS_FS=y ++CONFIG_AUTOFS4_FS=y ++ ++# ++# CD-ROM/DVD Filesystems ++# ++CONFIG_ISO9660_FS=y ++# CONFIG_JOLIET is not set ++# CONFIG_ZISOFS is not set ++# CONFIG_UDF_FS is not set ++ ++# ++# DOS/FAT/NT Filesystems ++# ++CONFIG_FAT_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++# CONFIG_NTFS_FS is not set ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_KCORE=y ++CONFIG_DEVFS_FS=y ++CONFIG_DEVFS_MOUNT=y ++# CONFIG_DEVFS_DEBUG is not set ++# CONFIG_DEVPTS_FS_XATTR is not set ++CONFIG_TMPFS=y ++# CONFIG_HUGETLB_PAGE is not set ++CONFIG_RAMFS=y ++ ++# ++# Miscellaneous filesystems ++# + # CONFIG_ADFS_FS is not set + # CONFIG_AFFS_FS is not set + # CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set + # CONFIG_BEFS_FS is not set + # CONFIG_BFS_FS is not set +-# CONFIG_EXT3_FS is not set +-# CONFIG_JBD is not set +-CONFIG_FAT_FS=m +-CONFIG_MSDOS_FS=m +-CONFIG_VFAT_FS=m + # CONFIG_EFS_FS is not set + CONFIG_JFFS_FS=y + CONFIG_JFFS_FS_VERBOSE=0 +-CONFIG_JFFS_PROC_FS=y + # CONFIG_JFFS2_FS is not set + # CONFIG_CRAMFS is not set +-# CONFIG_TMPFS is not set +-CONFIG_RAMFS=y +-CONFIG_ISO9660_FS=m +-# CONFIG_JOLIET is not set +-# CONFIG_ZISOFS is not set +-# CONFIG_JFS_FS is not set +-CONFIG_MINIX_FS=m + # CONFIG_VXFS_FS is not set +-# CONFIG_NTFS_FS is not set + # CONFIG_HPFS_FS is not set +-CONFIG_PROC_FS=y +-CONFIG_DEVFS_FS=y +-CONFIG_DEVFS_MOUNT=y +-# CONFIG_DEVFS_DEBUG is not set +-CONFIG_DEVPTS_FS=y + # CONFIG_QNX4FS_FS is not set +-# CONFIG_ROMFS_FS is not set +-CONFIG_EXT2_FS=y +-# CONFIG_EXT2_FS_XATTR is not set + # CONFIG_SYSV_FS is not set +-# CONFIG_UDF_FS is not set + # CONFIG_UFS_FS is not set +-# CONFIG_XFS_FS is not set -@@ -191,7 +192,7 @@ + # + # Network File Systems + # +-# CONFIG_CODA_FS is not set +-# CONFIG_INTERMEZZO_FS is not set + # CONFIG_NFS_FS is not set + # CONFIG_NFSD is not set + # CONFIG_EXPORTFS is not set +-# CONFIG_CIFS is not set + # CONFIG_SMB_FS is not set ++# CONFIG_CIFS is not set + # CONFIG_NCP_FS is not set ++# CONFIG_CODA_FS is not set + # CONFIG_AFS_FS is not set - if(!pri->fixed_config) - iter_addresses(pri->dev, close_addr, pri->dev_name); -- close(fd); -+ os_close_file(fd); - pri->fd = -1; - } + # +@@ -255,11 +314,11 @@ + # + # CONFIG_PARTITION_ADVANCED is not set + CONFIG_MSDOS_PARTITION=y +-CONFIG_NLS=y -diff -Naur a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c ---- a/arch/um/os-Linux/file.c 2004-03-10 08:23:18.000000000 -0500 -+++ b/arch/um/os-Linux/file.c 2004-03-10 08:44:49.000000000 -0500 -@@ -8,6 +8,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -17,33 +19,235 @@ - #include "user.h" - #include "kern_util.h" + # + # Native Language Support + # ++CONFIG_NLS=y + CONFIG_NLS_DEFAULT="iso8859-1" + # CONFIG_NLS_CODEPAGE_437 is not set + # CONFIG_NLS_CODEPAGE_737 is not set +@@ -317,28 +376,7 @@ + # + # SCSI support + # +-CONFIG_SCSI=y +-CONFIG_GENERIC_ISA_DMA=y +- +-# +-# SCSI support type (disk, tape, CD-ROM) +-# +-CONFIG_BLK_DEV_SD=y +-CONFIG_SD_EXTRA_DEVS=40 +-CONFIG_CHR_DEV_ST=y +-CONFIG_BLK_DEV_SR=y +-CONFIG_BLK_DEV_SR_VENDOR=y +-CONFIG_SR_EXTRA_DEVS=2 +-CONFIG_CHR_DEV_SG=y +- +-# +-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +-# +-CONFIG_SCSI_DEBUG_QUEUES=y +-CONFIG_SCSI_MULTI_LUN=y +-CONFIG_SCSI_CONSTANTS=y +-CONFIG_SCSI_LOGGING=y +-CONFIG_SCSI_DEBUG=y ++# CONFIG_SCSI is not set + + # + # Multi-device support (RAID and LVM) +@@ -360,6 +398,7 @@ + CONFIG_MTD_BLOCK=y + # CONFIG_FTL is not set + # CONFIG_NFTL is not set ++# CONFIG_INFTL is not set + + # + # RAM/ROM/Flash chip drivers +@@ -374,20 +413,21 @@ + # + # Mapping drivers for chip access + # ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set --int os_file_type(char *file) -+static void copy_stat(struct uml_stat *dst, struct stat64 *src) -+{ -+ *dst = ((struct uml_stat) { -+ .ust_dev = src->st_dev, /* device */ -+ .ust_ino = src->st_ino, /* inode */ -+ .ust_mode = src->st_mode, /* protection */ -+ .ust_nlink = src->st_nlink, /* number of hard links */ -+ .ust_uid = src->st_uid, /* user ID of owner */ -+ .ust_gid = src->st_gid, /* group ID of owner */ -+ .ust_size = src->st_size, /* total size, in bytes */ -+ .ust_blksize = src->st_blksize, /* blocksize for filesys I/O */ -+ .ust_blocks = src->st_blocks, /* number of blocks allocated */ -+ .ust_atime = src->st_atime, /* time of last access */ -+ .ust_mtime = src->st_mtime, /* time of last modification */ -+ .ust_ctime = src->st_ctime, /* time of last change */ -+ }); -+} -+ -+int os_stat_fd(const int fd, struct uml_stat *ubuf) -+{ -+ struct stat64 sbuf; -+ int err; -+ -+ do { -+ err = fstat64(fd, &sbuf); -+ } while((err < 0) && (errno == EINTR)) ; + # + # Self-contained MTD device drivers + # + # CONFIG_MTD_SLRAM is not set + # CONFIG_MTD_MTDRAM is not set +-CONFIG_MTD_BLKMTD=m ++CONFIG_MTD_BLKMTD=y + + # + # 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_DOC2001PLUS is not set + + # + # NAND Flash Device Drivers +Index: uml-2.6.7/arch/um/kernel/physmem.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/physmem.c 2004-07-16 19:47:23.617220848 +0300 ++++ uml-2.6.7/arch/um/kernel/physmem.c 2004-07-16 19:47:23.722204888 +0300 +@@ -0,0 +1,468 @@ ++/* ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) ++ * Licensed under the GPL ++ */ + -+ if(err < 0) -+ return(-errno); ++#include "linux/mm.h" ++#include "linux/ghash.h" ++#include "linux/slab.h" ++#include "linux/vmalloc.h" ++#include "linux/bootmem.h" ++#include "asm/types.h" ++#include "asm/pgtable.h" ++#include "kern_util.h" ++#include "user_util.h" ++#include "mode_kern.h" ++#include "mem.h" ++#include "mem_user.h" ++#include "os.h" ++#include "kern.h" ++#include "init.h" + -+ if(ubuf != NULL) -+ copy_stat(ubuf, &sbuf); -+ return(err); -+} ++#if 0 ++static pgd_t physmem_pgd[PTRS_PER_PGD]; + -+int os_stat_file(const char *file_name, struct uml_stat *ubuf) ++static struct phys_desc *lookup_mapping(void *addr) +{ -+ struct stat64 sbuf; -+ int err; -+ -+ do { -+ err = stat64(file_name, &sbuf); -+ } while((err < 0) && (errno == EINTR)) ; ++ pgd = &physmem_pgd[pgd_index(addr)]; ++ if(pgd_none(pgd)) ++ return(NULL); + -+ if(err < 0) -+ return(-errno); ++ pmd = pmd_offset(pgd, addr); ++ if(pmd_none(pmd)) ++ return(NULL); + -+ if(ubuf != NULL) -+ copy_stat(ubuf, &sbuf); -+ return(err); ++ pte = pte_offset_kernel(pmd, addr); ++ return((struct phys_desc *) pte_val(pte)); +} + -+int os_access(const char* file, int mode) ++static struct add_mapping(void *addr, struct phys_desc *new) +{ -+ int amode, err; -+ -+ amode=(mode&OS_ACC_R_OK ? R_OK : 0) | (mode&OS_ACC_W_OK ? W_OK : 0) | -+ (mode&OS_ACC_X_OK ? X_OK : 0) | (mode&OS_ACC_F_OK ? F_OK : 0) ; -+ -+ err = access(file, amode); -+ if(err < 0) -+ return(-errno); -+ -+ return(0); +} ++#endif + -+void os_print_error(int error, const char* str) -+{ -+ errno = error < 0 ? -error : error; ++#define PHYS_HASHSIZE (8192) + -+ perror(str); -+} ++struct phys_desc; + -+/* FIXME? required only by hostaudio (because it passes ioctls verbatim) */ -+int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg) -+{ -+ int err; ++DEF_HASH_STRUCTS(virtmem, PHYS_HASHSIZE, struct phys_desc); + -+ err = ioctl(fd, cmd, arg); -+ if(err < 0) -+ return(-errno); ++struct phys_desc { ++ struct virtmem_ptrs virt_ptrs; ++ int fd; ++ __u64 offset; ++ void *virt; ++ unsigned long phys; ++ struct list_head list; ++}; + -+ return(err); -+} ++struct virtmem_table virtmem_hash; + -+int os_window_size(int fd, int *rows, int *cols) ++static int virt_cmp(void *virt1, void *virt2) +{ -+ struct winsize size; -+ -+ if(ioctl(fd, TIOCGWINSZ, &size) < 0) -+ return(-errno); -+ -+ *rows = size.ws_row; -+ *cols = size.ws_col; -+ -+ return(0); -+} -+ -+int os_new_tty_pgrp(int fd, int pid) - { -- struct stat64 buf; -+ if(ioctl(fd, TIOCSCTTY, 0) < 0){ -+ printk("TIOCSCTTY failed, errno = %d\n", errno); -+ return(-errno); -+ } -+ -+ if(tcsetpgrp(fd, pid) < 0){ -+ printk("tcsetpgrp failed, errno = %d\n", errno); -+ return(-errno); -+ } -+ -+ return(0); ++ return(virt1 != virt2); +} + -+/* FIXME: ensure namebuf in os_get_if_name is big enough */ -+int os_get_ifname(int fd, char* namebuf) ++static int virt_hash(void *virt) +{ -+ if(ioctl(fd, SIOCGIFNAME, namebuf) < 0) -+ return(-errno); -+ -+ return(0); ++ unsigned long addr = ((unsigned long) virt) >> PAGE_SHIFT; ++ return(addr % PHYS_HASHSIZE); +} + -+int os_set_slip(int fd) -+{ -+ int disc, sencap; -+ -+ disc = N_SLIP; -+ if(ioctl(fd, TIOCSETD, &disc) < 0){ -+ printk("Failed to set slip line discipline - " -+ "errno = %d\n", errno); -+ return(-errno); -+ } ++DEF_HASH(static, virtmem, struct phys_desc, virt_ptrs, void *, virt, virt_cmp, ++ virt_hash); + -+ sencap = 0; -+ if(ioctl(fd, SIOCSIFENCAP, &sencap) < 0){ -+ printk("Failed to set slip encapsulation - " -+ "errno = %d\n", errno); -+ return(-errno); -+ } ++LIST_HEAD(descriptor_mappings); + -+ return(0); -+} ++struct desc_mapping { ++ int fd; ++ struct list_head list; ++ struct list_head pages; ++}; + -+int os_set_owner(int fd, int pid) ++static struct desc_mapping *find_mapping(int fd) +{ -+ if(fcntl(fd, F_SETOWN, pid) < 0){ -+ int save_errno = errno; ++ struct desc_mapping *desc; ++ struct list_head *ele; + -+ if(fcntl(fd, F_GETOWN, 0) != pid) -+ return(-save_errno); ++ list_for_each(ele, &descriptor_mappings){ ++ desc = list_entry(ele, struct desc_mapping, list); ++ if(desc->fd == fd) ++ return(desc); + } + -+ return(0); ++ return(NULL); +} + -+/* FIXME? moved wholesale from sigio_user.c to get fcntls out of that file */ -+int os_sigio_async(int master, int slave) ++static struct desc_mapping *descriptor_mapping(int fd) +{ -+ int flags; - -- if(stat64(file, &buf) == -1) -+ flags = fcntl(master, F_GETFL); -+ if(flags < 0) { -+ printk("fcntl F_GETFL failed, errno = %d\n", errno); - return(-errno); -+ } -+ -+ if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || -+ (fcntl(master, F_SETOWN, os_getpid()) < 0)){ -+ printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", errno); -+ return(-errno); -+ } -+ -+ if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)){ -+ printk("fcntl F_SETFL failed, errno = %d\n", errno); -+ return(-errno); -+ } - -- if(S_ISDIR(buf.st_mode)) return(OS_TYPE_DIR); -- else if(S_ISLNK(buf.st_mode)) return(OS_TYPE_SYMLINK); -- else if(S_ISCHR(buf.st_mode)) return(OS_TYPE_CHARDEV); -- else if(S_ISBLK(buf.st_mode)) return(OS_TYPE_BLOCKDEV); -- else if(S_ISFIFO(buf.st_mode)) return(OS_TYPE_FIFO); -- else if(S_ISSOCK(buf.st_mode)) return(OS_TYPE_SOCK); -+ return(0); -+} ++ struct desc_mapping *desc; + -+int os_mode_fd(int fd, int mode) -+{ -+ int err; ++ desc = find_mapping(fd); ++ if(desc != NULL) ++ return(desc); + -+ do { -+ err = fchmod(fd, mode); -+ } while((err < 0) && (errno==EINTR)) ; ++ desc = kmalloc(sizeof(*desc), GFP_ATOMIC); ++ if(desc == NULL) ++ return(NULL); + -+ if(err < 0) -+ return(-errno); ++ *desc = ((struct desc_mapping) ++ { .fd = fd, ++ .list = LIST_HEAD_INIT(desc->list), ++ .pages = LIST_HEAD_INIT(desc->pages) }); ++ list_add(&desc->list, &descriptor_mappings); + -+ return(0); ++ return(desc); +} + -+int os_file_type(char *file) ++int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) +{ -+ struct uml_stat buf; ++ struct desc_mapping *fd_maps; ++ struct phys_desc *desc; ++ unsigned long phys; + int err; + -+ err = os_stat_file(file, &buf); -+ if(err < 0) -+ return(err); ++ fd_maps = descriptor_mapping(fd); ++ if(fd_maps == NULL) ++ return(-ENOMEM); + -+ if(S_ISDIR(buf.ust_mode)) return(OS_TYPE_DIR); -+ else if(S_ISLNK(buf.ust_mode)) return(OS_TYPE_SYMLINK); -+ else if(S_ISCHR(buf.ust_mode)) return(OS_TYPE_CHARDEV); -+ else if(S_ISBLK(buf.ust_mode)) return(OS_TYPE_BLOCKDEV); -+ else if(S_ISFIFO(buf.ust_mode)) return(OS_TYPE_FIFO); -+ else if(S_ISSOCK(buf.ust_mode)) return(OS_TYPE_SOCK); - else return(OS_TYPE_FILE); - } - - int os_file_mode(char *file, struct openflags *mode_out) - { -+ int err; ++ phys = __pa(virt); ++ if(find_virtmem_hash(&virtmem_hash, virt) != NULL) ++ panic("Address 0x%p is already substituted\n", virt); + - *mode_out = OPENFLAGS(); - -- if(!access(file, W_OK)) *mode_out = of_write(*mode_out); -- else if(errno != EACCES) -- return(-errno); -+ err = os_access(file, OS_ACC_W_OK); -+ if((err < 0) && (err != -EACCES)) -+ return(err); - -- if(!access(file, R_OK)) *mode_out = of_read(*mode_out); -- else if(errno != EACCES) -- return(-errno); -+ *mode_out = of_write(*mode_out); ++ err = -ENOMEM; ++ desc = kmalloc(sizeof(*desc), GFP_ATOMIC); ++ if(desc == NULL) ++ goto out; + -+ err = os_access(file, OS_ACC_R_OK); -+ if((err < 0) && (err != -EACCES)) -+ return(err); ++ *desc = ((struct phys_desc) ++ { .virt_ptrs = { NULL, NULL }, ++ .fd = fd, ++ .offset = offset, ++ .virt = virt, ++ .phys = __pa(virt), ++ .list = LIST_HEAD_INIT(desc->list) }); ++ insert_virtmem_hash(&virtmem_hash, desc); + -+ *mode_out = of_read(*mode_out); - - return(0); - } -@@ -63,16 +267,14 @@ - if(flags.e) f |= O_EXCL; - - fd = open64(file, f, mode); -- if(fd < 0) return(-errno); -- -- if(flags.cl){ -- if(fcntl(fd, F_SETFD, 1)){ -- close(fd); -- return(-errno); -- } -+ if(fd < 0) -+ return(-errno); ++ list_add(&desc->list, &fd_maps->pages); + -+ if(flags.cl && fcntl(fd, F_SETFD, 1)){ -+ os_close_file(fd); -+ return(-errno); - } - -- return(fd); - return(fd); - } - -@@ -90,7 +292,7 @@ - - err = connect(fd, (struct sockaddr *) &sock, sizeof(sock)); - if(err) -- return(err); -+ return(-errno); - - return(fd); - } -@@ -109,88 +311,162 @@ - return(0); - } - --int os_read_file(int fd, void *buf, int len) -+static int fault_buffer(void *start, int len, -+ int (*copy_proc)(void *addr, void *buf, int len)) - { -- int n; -+ int page = getpagesize(), i; -+ char c; - -- /* Force buf into memory if it's not already. */ -+ for(i = 0; i < len; i += page){ -+ if((*copy_proc)(start + i, &c, sizeof(c))) -+ return(-EFAULT); -+ } -+ if((len % page) != 0){ -+ if((*copy_proc)(start + len - 1, &c, sizeof(c))) -+ return(-EFAULT); -+ } -+ return(0); ++ virt = (void *) ((unsigned long) virt & PAGE_MASK); ++ err = os_map_memory(virt, fd, offset, PAGE_SIZE, 1, w, 0); ++ if(!err) ++ goto out; ++ ++ remove_virtmem_hash(&virtmem_hash, desc); ++ kfree(desc); ++ out: ++ return(err); +} - -- /* XXX This fails if buf is kernel memory */ --#ifdef notdef -- if(copy_to_user_proc(buf, &c, sizeof(c))) -- return(-EFAULT); --#endif -+static int file_io(int fd, void *buf, int len, -+ int (*io_proc)(int fd, void *buf, int len), -+ int (*copy_user_proc)(void *addr, void *buf, int len)) ++ ++static int physmem_fd = -1; ++ ++static void remove_mapping(struct phys_desc *desc) +{ -+ int n, err; ++ void *virt = desc->virt; ++ int err; + -+ do { -+ n = (*io_proc)(fd, buf, len); -+ if((n < 0) && (errno == EFAULT)){ -+ err = fault_buffer(buf, len, copy_user_proc); -+ if(err) -+ return(err); -+ n = (*io_proc)(fd, buf, len); -+ } -+ } while((n < 0) && (errno == EINTR)); - -- n = read(fd, buf, len); - if(n < 0) - return(-errno); - return(n); - } - --int os_write_file(int fd, void *buf, int count) -+int os_read_file(int fd, void *buf, int len) - { -- int n; -- -- /* Force buf into memory if it's not already. */ -- -- /* XXX This fails if buf is kernel memory */ --#ifdef notdef -- if(copy_to_user_proc(buf, buf, buf[0])) -- return(-EFAULT); --#endif -+ return(file_io(fd, buf, len, (int (*)(int, void *, int)) read, -+ copy_from_user_proc)); ++ remove_virtmem_hash(&virtmem_hash, desc); ++ list_del(&desc->list); ++ kfree(desc); ++ ++ err = os_map_memory(virt, physmem_fd, __pa(virt), PAGE_SIZE, 1, 1, 0); ++ if(err) ++ panic("Failed to unmap block device page from physical memory, " ++ "errno = %d", -err); +} - -- n = write(fd, buf, count); -- if(n < 0) -- return(-errno); -- return(n); -+int os_write_file(int fd, const void *buf, int len) ++ ++int physmem_remove_mapping(void *virt) +{ -+ return(file_io(fd, (void *) buf, len, -+ (int (*)(int, void *, int)) write, copy_to_user_proc)); - } - - int os_file_size(char *file, long long *size_out) - { -- struct stat64 buf; -+ struct uml_stat buf; -+ int err; - -- if(stat64(file, &buf) == -1){ -- printk("Couldn't stat \"%s\" : errno = %d\n", file, errno); -- return(-errno); -+ err = os_stat_file(file, &buf); -+ if(err < 0){ -+ printk("Couldn't stat \"%s\" : err = %d\n", file, -err); -+ return(err); - } -- if(S_ISBLK(buf.st_mode)){ ++ struct phys_desc *desc; + -+ if(S_ISBLK(buf.ust_mode)){ - int fd, blocks; - -- if((fd = open64(file, O_RDONLY)) < 0){ -- printk("Couldn't open \"%s\", errno = %d\n", file, -- errno); -- return(-errno); -+ fd = os_open_file(file, of_read(OPENFLAGS()), 0); -+ if(fd < 0){ -+ printk("Couldn't open \"%s\", errno = %d\n", file, -fd); -+ return(fd); - } - if(ioctl(fd, BLKGETSIZE, &blocks) < 0){ - printk("Couldn't get the block size of \"%s\", " - "errno = %d\n", file, errno); -- close(fd); -- return(-errno); -+ err = -errno; -+ os_close_file(fd); -+ return(err); - } - *size_out = ((long long) blocks) * 512; -- close(fd); -+ os_close_file(fd); - return(0); - } -- *size_out = buf.st_size; -+ *size_out = buf.ust_size; -+ return(0); ++ virt = (void *) ((unsigned long) virt & PAGE_MASK); ++ desc = find_virtmem_hash(&virtmem_hash, virt); ++ if(desc == NULL) ++ return(0); ++ ++ remove_mapping(desc); ++ return(1); ++} ++ ++void physmem_forget_descriptor(int fd) ++{ ++ struct desc_mapping *desc; ++ struct phys_desc *page; ++ struct list_head *ele, *next; ++ __u64 offset; ++ void *addr; ++ int err; ++ ++ desc = find_mapping(fd); ++ if(desc == NULL) ++ return; ++ ++ list_for_each_safe(ele, next, &desc->pages){ ++ page = list_entry(ele, struct phys_desc, list); ++ offset = page->offset; ++ addr = page->virt; ++ remove_mapping(page); ++ err = os_seek_file(fd, offset); ++ if(err) ++ panic("physmem_forget_descriptor - failed to seek " ++ "to %lld in fd %d, error = %d\n", ++ offset, fd, -err); ++ err = os_read_file(fd, addr, PAGE_SIZE); ++ if(err < 0) ++ panic("physmem_forget_descriptor - failed to read " ++ "from fd %d to 0x%p, error = %d\n", ++ fd, addr, -err); ++ } ++ ++ list_del(&desc->list); ++ kfree(desc); +} + -+int os_file_modtime(char *file, unsigned long *modtime) ++void arch_free_page(struct page *page, int order) +{ -+ struct uml_stat buf; -+ int err; ++ void *virt; ++ int i; + -+ err = os_stat_file(file, &buf); -+ if(err < 0){ -+ printk("Couldn't stat \"%s\" : err = %d\n", file, -err); -+ return(err); ++ for(i = 0; i < (1 << order); i++){ ++ virt = __va(page_to_phys(page + i)); ++ physmem_remove_mapping(virt); + } ++} + -+ *modtime = buf.ust_mtime; - return(0); - } - -+int os_get_exec_close(int fd, int* close_on_exec) ++int is_remapped(void *virt) +{ -+ int ret; ++ return(find_virtmem_hash(&virtmem_hash, virt) != NULL); ++} + -+ do { -+ ret = fcntl(fd, F_GETFD); -+ } while((ret < 0) && (errno == EINTR)) ; ++/* Changed during early boot */ ++unsigned long high_physmem; + -+ if(ret < 0) -+ return(-errno); ++extern unsigned long physmem_size; + -+ *close_on_exec = (ret&FD_CLOEXEC) ? 1 : 0; -+ return(ret); ++void *to_virt(unsigned long phys) ++{ ++ return((void *) uml_physmem + phys); +} + -+int os_set_exec_close(int fd, int close_on_exec) ++unsigned long to_phys(void *virt) +{ -+ int flag, err; ++ return(((unsigned long) virt) - uml_physmem); ++} + -+ if(close_on_exec) flag = FD_CLOEXEC; -+ else flag = 0; ++int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) ++{ ++ struct page *p, *map; ++ unsigned long phys_len, phys_pages, highmem_len, highmem_pages; ++ unsigned long iomem_len, iomem_pages, total_len, total_pages; ++ int i; + -+ do { -+ err = fcntl(fd, F_SETFD, flag); -+ } while((err < 0) && (errno == EINTR)) ; ++ phys_pages = physmem >> PAGE_SHIFT; ++ phys_len = phys_pages * sizeof(struct page); + -+ if(err < 0) -+ return(-errno); -+ return(err); -+} ++ iomem_pages = iomem >> PAGE_SHIFT; ++ iomem_len = iomem_pages * sizeof(struct page); + - int os_pipe(int *fds, int stream, int close_on_exec) - { - int err, type = stream ? SOCK_STREAM : SOCK_DGRAM; - - err = socketpair(AF_UNIX, type, 0, fds); -- if(err) -+ if(err < 0) - return(-errno); - - if(!close_on_exec) - return(0); - -- if((fcntl(fds[0], F_SETFD, 1) < 0) || (fcntl(fds[1], F_SETFD, 1) < 0)) -- printk("os_pipe : Setting FD_CLOEXEC failed, errno = %d", -- errno); -+ err = os_set_exec_close(fds[0], 1); -+ if(err < 0) -+ goto error; ++ highmem_pages = highmem >> PAGE_SHIFT; ++ highmem_len = highmem_pages * sizeof(struct page); + -+ err = os_set_exec_close(fds[1], 1); -+ if(err < 0) -+ goto error; - - return(0); ++ total_pages = phys_pages + iomem_pages + highmem_pages; ++ total_len = phys_len + iomem_pages + highmem_len; + -+ error: -+ printk("os_pipe : Setting FD_CLOEXEC failed, err = %d\n", -err); -+ os_close_file(fds[1]); -+ os_close_file(fds[0]); -+ return(err); - } - - int os_set_fd_async(int fd, int owner) -@@ -270,7 +546,7 @@ - return(-EINVAL); - } - err = shutdown(fd, what); -- if(err) -+ if(err < 0) - return(-errno); - return(0); - } -@@ -315,7 +591,7 @@ - return(new); - } - --int create_unix_socket(char *file, int len) -+int os_create_unix_socket(char *file, int len, int close_on_exec) - { - struct sockaddr_un addr; - int sock, err; -@@ -327,6 +603,13 @@ - return(-errno); - } - -+ if(close_on_exec) { -+ err = os_set_exec_close(sock, 1); -+ if(err < 0) -+ printk("create_unix_socket : close_on_exec failed, " -+ "err = %d", -err); ++ if(kmalloc_ok){ ++ map = kmalloc(total_len, GFP_KERNEL); ++ if(map == NULL) ++ map = vmalloc(total_len); + } ++ else map = alloc_bootmem_low_pages(total_len); + - addr.sun_family = AF_UNIX; - - /* XXX Be more careful about overflow */ -@@ -334,14 +617,45 @@ - - err = bind(sock, (struct sockaddr *) &addr, sizeof(addr)); - if (err < 0){ -- printk("create_listening_socket - bind failed, errno = %d\n", -- errno); -+ printk("create_listening_socket at '%s' - bind failed, " -+ "errno = %d\n", file, errno); - return(-errno); - } - - return(sock); - } - -+void os_flush_stdout(void) ++ if(map == NULL) ++ return(-ENOMEM); ++ ++ for(i = 0; i < total_pages; i++){ ++ p = &map[i]; ++ set_page_count(p, 0); ++ SetPageReserved(p); ++ INIT_LIST_HEAD(&p->lru); ++ } ++ ++ mem_map = map; ++ max_mapnr = total_pages; ++ return(0); ++} ++ ++struct page *phys_to_page(const unsigned long phys) +{ -+ fflush(stdout); ++ return(&mem_map[phys >> PAGE_SHIFT]); +} + -+int os_lock_file(int fd, int excl) ++struct page *__virt_to_page(const unsigned long virt) +{ -+ int type = excl ? F_WRLCK : F_RDLCK; -+ struct flock lock = ((struct flock) { .l_type = type, -+ .l_whence = SEEK_SET, -+ .l_start = 0, -+ .l_len = 0 } ); -+ int err, save; ++ return(&mem_map[__pa(virt) >> PAGE_SHIFT]); ++} + -+ err = fcntl(fd, F_SETLK, &lock); -+ if(!err) -+ goto out; ++unsigned long page_to_phys(struct page *page) ++{ ++ return((page - mem_map) << PAGE_SHIFT); ++} + -+ save = -errno; -+ err = fcntl(fd, F_GETLK, &lock); -+ if(err){ -+ err = -errno; -+ goto out; -+ } ++pte_t mk_pte(struct page *page, pgprot_t pgprot) ++{ ++ pte_t pte; + -+ printk("F_SETLK failed, file already locked by pid %d\n", lock.l_pid); -+ err = save; -+ out: -+ return(err); ++ pte_val(pte) = page_to_phys(page) + pgprot_val(pgprot); ++ if(pte_present(pte)) pte_mknewprot(pte_mknewpage(pte)); ++ return(pte); +} + - /* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically -diff -Naur a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile ---- a/arch/um/os-Linux/Makefile 2004-03-10 08:21:44.000000000 -0500 -+++ b/arch/um/os-Linux/Makefile 2004-03-10 08:40:18.000000000 -0500 -@@ -3,13 +3,9 @@ - # Licensed under the GPL - # - --obj-y = file.o process.o tty.o drivers/ -+obj-y = file.o process.o tty.o user_syms.o drivers/ - - USER_OBJS := $(foreach file,file.o process.o tty.o,$(obj)/$(file)) - - $(USER_OBJS) : %.o: %.c - $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -- --clean : -- --archmrproper: -diff -Naur a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c ---- a/arch/um/os-Linux/process.c 2004-03-10 08:20:24.000000000 -0500 -+++ b/arch/um/os-Linux/process.c 2004-03-10 08:35:00.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2002 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ - -@@ -7,32 +7,37 @@ - #include - #include - #include -+#include - #include - #include - #include "os.h" - #include "user.h" - -+#define ARBITRARY_ADDR -1 -+#define FAILURE_PID -1 ++/* Changed during early boot */ ++static unsigned long kmem_top = 0; + - unsigned long os_process_pc(int pid) - { - char proc_stat[sizeof("/proc/#####/stat\0")], buf[256]; - unsigned long pc; -- int fd; ++unsigned long get_kmem_end(void) ++{ ++ if(kmem_top == 0) ++ kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); ++ return(kmem_top); ++} ++ ++void map_memory(unsigned long virt, unsigned long phys, unsigned long len, ++ int r, int w, int x) ++{ ++ __u64 offset; + int fd, err; - - sprintf(proc_stat, "/proc/%d/stat", pid); - fd = os_open_file(proc_stat, of_read(OPENFLAGS()), 0); - if(fd < 0){ -- printk("os_process_pc - couldn't open '%s', errno = %d\n", -- proc_stat, errno); -- return(-1); -+ printk("os_process_pc - couldn't open '%s', err = %d\n", -+ proc_stat, -fd); -+ return(ARBITRARY_ADDR); - } -- if(read(fd, buf, sizeof(buf)) < 0){ -- printk("os_process_pc - couldn't read '%s', errno = %d\n", -- proc_stat, errno); -- close(fd); -- return(-1); -+ err = os_read_file(fd, buf, sizeof(buf)); -+ if(err < 0){ -+ printk("os_process_pc - couldn't read '%s', err = %d\n", -+ proc_stat, -err); -+ os_close_file(fd); -+ return(ARBITRARY_ADDR); - } -- close(fd); -- pc = -1; -+ os_close_file(fd); -+ pc = ARBITRARY_ADDR; - if(sscanf(buf, "%*d %*s %*c %*d %*d %*d %*d %*d %*d %*d %*d " - "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d " - "%*d %*d %*d %*d %ld", &pc) != 1){ -@@ -52,22 +57,23 @@ - snprintf(stat, sizeof(stat), "/proc/%d/stat", pid); - fd = os_open_file(stat, of_read(OPENFLAGS()), 0); - if(fd < 0){ -- printk("Couldn't open '%s', errno = %d\n", stat, -fd); -- return(-1); -+ printk("Couldn't open '%s', err = %d\n", stat, -fd); -+ return(FAILURE_PID); - } - -- n = read(fd, data, sizeof(data)); -- close(fd); -+ n = os_read_file(fd, data, sizeof(data)); -+ os_close_file(fd); - - if(n < 0){ -- printk("Couldn't read '%s', errno = %d\n", stat); -- return(-1); -+ printk("Couldn't read '%s', err = %d\n", stat, -n); -+ return(FAILURE_PID); - } - -- parent = -1; -+ parent = FAILURE_PID; - /* XXX This will break if there is a space in the command */ - n = sscanf(data, "%*d %*s %*c %d", &parent); -- if(n != 1) printk("Failed to scan '%s'\n", data); -+ if(n != 1) -+ printk("Failed to scan '%s'\n", data); - - return(parent); - } -@@ -87,7 +93,8 @@ - - void os_usr1_process(int pid) - { -- kill(pid, SIGUSR1); -+ syscall(__NR_tkill, pid, SIGUSR1); -+ /* kill(pid, SIGUSR1); */ - } - - int os_getpid(void) -@@ -95,7 +102,7 @@ - return(getpid()); - } - --int os_map_memory(void *virt, int fd, unsigned long off, unsigned long len, -+int os_map_memory(void *virt, int fd, unsigned long long off, unsigned long len, - int r, int w, int x) - { - void *loc; -@@ -104,8 +111,8 @@ - prot = (r ? PROT_READ : 0) | (w ? PROT_WRITE : 0) | - (x ? PROT_EXEC : 0); - -- loc = mmap((void *) virt, len, prot, MAP_SHARED | MAP_FIXED, -- fd, off); -+ loc = mmap64((void *) virt, len, prot, MAP_SHARED | MAP_FIXED, -+ fd, off); - if(loc == MAP_FAILED) - return(-errno); - return(0); -@@ -126,7 +133,8 @@ - int err; - - err = munmap(addr, len); -- if(err < 0) return(-errno); -+ if(err < 0) -+ return(-errno); - return(0); - } - -diff -Naur a/arch/um/os-Linux/tty.c b/arch/um/os-Linux/tty.c ---- a/arch/um/os-Linux/tty.c 2004-03-10 08:21:37.000000000 -0500 -+++ b/arch/um/os-Linux/tty.c 2004-03-10 08:40:10.000000000 -0500 -@@ -28,10 +28,10 @@ - struct grantpt_info info; - int fd; - -- if((fd = os_open_file("/dev/ptmx", of_rdwr(OPENFLAGS()), 0)) < 0){ -- printk("get_pty : Couldn't open /dev/ptmx - errno = %d\n", -- errno); -- return(-1); -+ fd = os_open_file("/dev/ptmx", of_rdwr(OPENFLAGS()), 0); -+ if(fd < 0){ -+ printk("get_pty : Couldn't open /dev/ptmx - err = %d\n", -fd); -+ return(fd); - } - - info.fd = fd; -@@ -39,7 +39,7 @@ - - if(info.res < 0){ - printk("get_pty : Couldn't grant pty - errno = %d\n", -- info.err); -+ -info.err); - return(-1); - } - if(unlockpt(fd) < 0){ -diff -Naur a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c ---- a/arch/um/os-Linux/user_syms.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/os-Linux/user_syms.c 2004-03-10 08:44:23.000000000 -0500 -@@ -0,0 +1,88 @@ -+#include "linux/types.h" -+#include "linux/module.h" + -+/* Some of this are builtin function (some are not but could in the future), -+ * so I *must* declare good prototypes for them and then EXPORT them. -+ * The kernel code uses the macro defined by include/linux/string.h, -+ * so I undef macros; the userspace code does not include that and I -+ * add an EXPORT for the glibc one.*/ ++ fd = phys_mapping(phys, &offset); ++ err = os_map_memory((void *) virt, fd, offset, len, r, w, x); ++ if(err) ++ panic("map_memory(0x%lx, %d, 0x%llx, %ld, %d, %d, %d) failed, " ++ "err = %d\n", virt, fd, offset, len, r, w, x, err); ++} + -+#undef strlen -+#undef strstr -+#undef memcpy -+#undef memset ++#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) + -+extern size_t strlen(const char *); -+extern void *memcpy(void *, const void *, size_t); -+extern void *memset(void *, int, size_t); -+extern int printf(const char *, ...); ++void setup_physmem(unsigned long start, unsigned long reserve_end, ++ unsigned long len, unsigned long highmem) ++{ ++ unsigned long reserve = reserve_end - start; ++ int pfn = PFN_UP(__pa(reserve_end)); ++ int delta = (len - reserve) >> PAGE_SHIFT; ++ int err, offset, bootmap_size; + -+EXPORT_SYMBOL(strlen); -+EXPORT_SYMBOL(memcpy); -+EXPORT_SYMBOL(memset); -+EXPORT_SYMBOL(printf); ++ physmem_fd = create_mem_file(len + highmem); + -+EXPORT_SYMBOL(strstr); ++ offset = uml_reserved - uml_physmem; ++ err = os_map_memory((void *) uml_reserved, physmem_fd, offset, ++ len - offset, 1, 1, 0); ++ if(err < 0){ ++ os_print_error(err, "Mapping memory"); ++ exit(1); ++ } + -+/* Here, instead, I can provide a fake prototype. Yes, someone cares: genksyms. -+ * However, the modules will use the CRC defined *here*, no matter if it is -+ * good; so the versions of these symbols will always match -+ */ -+#define EXPORT_SYMBOL_PROTO(sym) \ -+ int sym(void); \ -+ EXPORT_SYMBOL(sym); ++ bootmap_size = init_bootmem(pfn, pfn + delta); ++ free_bootmem(__pa(reserve_end) + bootmap_size, ++ len - bootmap_size - reserve); ++} + -+EXPORT_SYMBOL_PROTO(__errno_location); ++int phys_mapping(unsigned long phys, __u64 *offset_out) ++{ ++ struct phys_desc *desc = find_virtmem_hash(&virtmem_hash, ++ __va(phys & PAGE_MASK)); ++ int fd = -1; + -+EXPORT_SYMBOL_PROTO(access); -+EXPORT_SYMBOL_PROTO(open); -+EXPORT_SYMBOL_PROTO(open64); -+EXPORT_SYMBOL_PROTO(close); -+EXPORT_SYMBOL_PROTO(read); -+EXPORT_SYMBOL_PROTO(write); -+EXPORT_SYMBOL_PROTO(dup2); -+EXPORT_SYMBOL_PROTO(__xstat); -+EXPORT_SYMBOL_PROTO(__lxstat); -+EXPORT_SYMBOL_PROTO(__lxstat64); -+EXPORT_SYMBOL_PROTO(lseek); -+EXPORT_SYMBOL_PROTO(lseek64); -+EXPORT_SYMBOL_PROTO(chown); -+EXPORT_SYMBOL_PROTO(truncate); -+EXPORT_SYMBOL_PROTO(utime); -+EXPORT_SYMBOL_PROTO(chmod); -+EXPORT_SYMBOL_PROTO(rename); -+EXPORT_SYMBOL_PROTO(__xmknod); ++ if(desc != NULL){ ++ fd = desc->fd; ++ *offset_out = desc->offset; ++ } ++ else if(phys < physmem_size){ ++ fd = physmem_fd; ++ *offset_out = phys; ++ } ++ else if(phys < __pa(end_iomem)){ ++ struct iomem_region *region = iomem_regions; ++ ++ while(region != NULL){ ++ if((phys >= region->phys) && ++ (phys < region->phys + region->size)){ ++ fd = region->fd; ++ *offset_out = phys - region->phys; ++ break; ++ } ++ region = region->next; ++ } ++ } ++ else if(phys < __pa(end_iomem) + highmem){ ++ fd = physmem_fd; ++ *offset_out = phys - iomem_size; ++ } ++ ++ return(fd); ++} ++ ++static int __init uml_mem_setup(char *line, int *add) ++{ ++ char *retptr; ++ physmem_size = memparse(line,&retptr); ++ return 0; ++} ++__uml_setup("mem=", uml_mem_setup, ++"mem=\n" ++" This controls how much \"physical\" memory the kernel allocates\n" ++" for the system. The size is specified as a number followed by\n" ++" one of 'k', 'K', 'm', 'M', which have the obvious meanings.\n" ++" This is not related to the amount of memory in the host. It can\n" ++" be more, and the excess, if it's ever used, will just be swapped out.\n" ++" Example: mem=64M\n\n" ++); + -+EXPORT_SYMBOL_PROTO(symlink); -+EXPORT_SYMBOL_PROTO(link); -+EXPORT_SYMBOL_PROTO(unlink); -+EXPORT_SYMBOL_PROTO(readlink); ++unsigned long find_iomem(char *driver, unsigned long *len_out) ++{ ++ struct iomem_region *region = iomem_regions; ++ ++ while(region != NULL){ ++ if(!strcmp(region->driver, driver)){ ++ *len_out = region->size; ++ return(region->virt); ++ } ++ } + -+EXPORT_SYMBOL_PROTO(mkdir); -+EXPORT_SYMBOL_PROTO(rmdir); -+EXPORT_SYMBOL_PROTO(opendir); -+EXPORT_SYMBOL_PROTO(readdir); -+EXPORT_SYMBOL_PROTO(closedir); -+EXPORT_SYMBOL_PROTO(seekdir); -+EXPORT_SYMBOL_PROTO(telldir); ++ return(0); ++} + -+EXPORT_SYMBOL_PROTO(ioctl); ++int setup_iomem(void) ++{ ++ struct iomem_region *region = iomem_regions; ++ unsigned long iomem_start = high_physmem + PAGE_SIZE; ++ int err; + -+EXPORT_SYMBOL_PROTO(pread64); -+EXPORT_SYMBOL_PROTO(pwrite64); ++ while(region != NULL){ ++ err = os_map_memory((void *) iomem_start, region->fd, 0, ++ region->size, 1, 1, 0); ++ if(err) ++ printk("Mapping iomem region for driver '%s' failed, " ++ "errno = %d\n", region->driver, -err); ++ else { ++ region->virt = iomem_start; ++ region->phys = __pa(region->virt); ++ } + -+EXPORT_SYMBOL_PROTO(statfs); -+EXPORT_SYMBOL_PROTO(statfs64); ++ iomem_start += region->size + PAGE_SIZE; ++ region = region->next; ++ } + -+EXPORT_SYMBOL_PROTO(getuid); ++ return(0); ++} ++ ++__initcall(setup_iomem); + +/* + * Overrides for Emacs so that we follow Linus's tabbing style. @@ -15284,392 +12548,542 @@ diff -Naur a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c + * c-file-style: "linux" + * End: + */ -diff -Naur a/arch/um/sys-i386/bugs.c b/arch/um/sys-i386/bugs.c ---- a/arch/um/sys-i386/bugs.c 2004-03-10 08:22:34.000000000 -0500 -+++ b/arch/um/sys-i386/bugs.c 2004-03-10 08:42:23.000000000 -0500 -@@ -4,20 +4,21 @@ - */ - +Index: uml-2.6.7/arch/um/kernel/irq_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/irq_user.c 2004-07-16 19:36:33.534048512 +0300 ++++ uml-2.6.7/arch/um/kernel/irq_user.c 2004-07-16 19:47:23.717205648 +0300 +@@ -6,7 +6,6 @@ + #include #include --#include #include +-#include + #include #include - #include -+#include - #include "kern_util.h" - #include "user.h" - #include "sysdep/ptrace.h" - #include "task.h" -+#include "os.h" + #include +@@ -49,7 +48,8 @@ - #define MAXTOKEN 64 + if(smp_sigio_handler()) return; + while(1){ +- if((n = poll(pollfds, pollfds_num, 0)) < 0){ ++ n = poll(pollfds, pollfds_num, 0); ++ if(n < 0){ + if(errno == EINTR) continue; + printk("sigio_handler : poll returned %d, " + "errno = %d\n", n, errno); +@@ -366,34 +366,31 @@ - /* Set during early boot */ --int cpu_has_cmov = 1; --int cpu_has_xmm = 0; -+int host_has_cmov = 1; -+int host_has_xmm = 0; + void forward_ipi(int fd, int pid) + { +- if(fcntl(fd, F_SETOWN, pid) < 0){ +- int save_errno = errno; +- if(fcntl(fd, F_GETOWN, 0) != pid){ +- printk("forward_ipi: F_SETOWN failed, fd = %d, " +- "me = %d, target = %d, errno = %d\n", fd, +- os_getpid(), pid, save_errno); +- } +- } ++ int err; ++ ++ err = os_set_owner(fd, pid); ++ if(err < 0) ++ printk("forward_ipi: set_owner failed, fd = %d, me = %d, " ++ "target = %d, err = %d\n", fd, os_getpid(), pid, -err); + } - static char token(int fd, char *buf, int len, char stop) + void forward_interrupts(int pid) { -@@ -27,13 +28,15 @@ - ptr = buf; - end = &buf[len]; - do { -- n = read(fd, ptr, sizeof(*ptr)); -+ n = os_read_file(fd, ptr, sizeof(*ptr)); - c = *ptr++; -- if(n == 0) return(0); -- else if(n != sizeof(*ptr)){ -- printk("Reading /proc/cpuinfo failed, " -- "errno = %d\n", errno); -- return(-errno); -+ if(n != sizeof(*ptr)){ -+ if(n == 0) return(0); -+ printk("Reading /proc/cpuinfo failed, err = %d\n", -n); -+ if(n < 0) -+ return(n); -+ else -+ return(-EIO); + struct irq_fd *irq; + unsigned long flags; ++ int err; + + flags = irq_lock(); + for(irq=active_fds;irq != NULL;irq = irq->next){ +- if(fcntl(irq->fd, F_SETOWN, pid) < 0){ +- int save_errno = errno; +- if(fcntl(irq->fd, F_GETOWN, 0) != pid){ +- /* XXX Just remove the irq rather than +- * print out an infinite stream of these +- */ +- printk("Failed to forward %d to pid %d, " +- "errno = %d\n", irq->fd, pid, +- save_errno); +- } ++ err = os_set_owner(irq->fd, pid); ++ if(err < 0){ ++ /* XXX Just remove the irq rather than ++ * print out an infinite stream of these ++ */ ++ printk("Failed to forward %d to pid %d, err = %d\n", ++ irq->fd, pid, -err); } - } while((c != '\n') && (c != stop) && (ptr < end)); ++ + irq->pid = pid; + } + irq_unlock(flags); +Index: uml-2.6.7/arch/um/include/line.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/line.h 2004-07-16 19:37:13.937906192 +0300 ++++ uml-2.6.7/arch/um/include/line.h 2004-07-16 19:47:23.702207928 +0300 +@@ -9,12 +9,14 @@ + #include "linux/list.h" + #include "linux/workqueue.h" + #include "linux/tty.h" ++#include "linux/interrupt.h" + #include "asm/semaphore.h" + #include "chan_user.h" + #include "mconsole_kern.h" -@@ -45,45 +48,79 @@ - return(c); + struct line_driver { + char *name; ++ char *device_name; + char *devfs_name; + short major; + short minor_start; +@@ -67,8 +69,6 @@ + + #define LINES_INIT(n) { num : n } + +-extern void line_interrupt(int irq, void *data, struct pt_regs *unused); +-extern void line_write_interrupt(int irq, void *data, struct pt_regs *unused); + extern void line_close(struct line *lines, struct tty_struct *tty); + extern int line_open(struct line *lines, struct tty_struct *tty, + struct chan_opts *opts); +Index: uml-2.6.7/arch/um/sys-i386/fault.c +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/fault.c 2004-07-16 19:36:42.987611352 +0300 ++++ uml-2.6.7/arch/um/sys-i386/fault.c 2004-07-16 19:47:23.771197440 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002 - 2004 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +@@ -7,16 +7,24 @@ + #include "sysdep/ptrace.h" + #include "sysdep/sigcontext.h" + +-extern unsigned long search_exception_table(unsigned long addr); ++/* These two are from asm-um/uaccess.h and linux/module.h, check them. */ ++struct exception_table_entry ++{ ++ unsigned long insn; ++ unsigned long fixup; ++}; + ++const struct exception_table_entry *search_exception_tables(unsigned long add); ++ ++/* Compare this to arch/i386/mm/extable.c:fixup_exception() */ + int arch_fixup(unsigned long address, void *sc_ptr) + { + struct sigcontext *sc = sc_ptr; +- unsigned long fixup; ++ const struct exception_table_entry *fixup; + + fixup = search_exception_tables(address); + if(fixup != 0){ +- sc->eip = fixup; ++ sc->eip = fixup->fixup; + return(1); + } + return(0); +Index: uml-2.6.7/arch/um/kernel/smp.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/smp.c 2004-07-16 19:36:13.630074376 +0300 ++++ uml-2.6.7/arch/um/kernel/smp.c 2004-07-16 19:47:23.736202760 +0300 +@@ -1,9 +1,15 @@ + /* +- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + + #include "linux/config.h" ++#include "linux/percpu.h" ++#include "asm/pgalloc.h" ++#include "asm/tlb.h" ++ ++/* For some reason, mmu_gathers are referenced when CONFIG_SMP is off. */ ++DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); + + #ifdef CONFIG_SMP + +@@ -23,7 +29,7 @@ + #include "os.h" + + /* CPU online map, set by smp_boot_cpus */ +-unsigned long cpu_online_map = cpumask_of_cpu(0); ++unsigned long cpu_online_map = CPU_MASK_NONE; + + EXPORT_SYMBOL(cpu_online_map); + +@@ -55,7 +61,7 @@ + + void smp_send_reschedule(int cpu) + { +- write(cpu_data[cpu].ipi_pipe[1], "R", 1); ++ os_write_file(cpu_data[cpu].ipi_pipe[1], "R", 1); + num_reschedules_sent++; + } + +@@ -100,35 +106,34 @@ + + printk(KERN_INFO "Stopping all CPUs..."); + for(i = 0; i < num_online_cpus(); i++){ +- if(i == current->thread_info->cpu) ++ if(i == current_thread->cpu) + continue; +- write(cpu_data[i].ipi_pipe[1], "S", 1); ++ os_write_file(cpu_data[i].ipi_pipe[1], "S", 1); + } + printk("done\n"); } --static int check_cpu_feature(char *feature, int *have_it) -+static int find_cpuinfo_line(int fd, char *key, char *scratch, int len) - { -- char buf[MAXTOKEN], c; -- int fd, len = sizeof(buf)/sizeof(buf[0]), n; -- -- printk("Checking for host processor %s support...", feature); -- fd = open("/proc/cpuinfo", O_RDONLY); -- if(fd < 0){ -- printk("Couldn't open /proc/cpuinfo, errno = %d\n", errno); -- return(0); -- } -+ int n; -+ char c; +-static cpumask_t smp_commenced_mask; +-static cpumask_t smp_callin_map = CPU_MASK_NONE; ++static cpumask_t smp_commenced_mask = CPU_MASK_NONE; ++static cpumask_t cpu_callin_map = CPU_MASK_NONE; -- *have_it = 0; -- buf[len - 1] = '\0'; -+ scratch[len - 1] = '\0'; - while(1){ -- c = token(fd, buf, len - 1, ':'); -- if(c <= 0) goto out; -+ c = token(fd, scratch, len - 1, ':'); -+ if(c <= 0) -+ return(0); - else if(c != ':'){ - printk("Failed to find ':' in /proc/cpuinfo\n"); -- goto out; -+ return(0); - } + static int idle_proc(void *cpup) + { + int cpu = (int) cpup, err; -- if(!strncmp(buf, "flags", strlen("flags"))) break; -+ if(!strncmp(scratch, key, strlen(key))) -+ return(1); + err = os_pipe(cpu_data[cpu].ipi_pipe, 1, 1); +- if(err) +- panic("CPU#%d failed to create IPI pipe, errno = %d", cpu, +- -err); ++ if(err < 0) ++ panic("CPU#%d failed to create IPI pipe, err = %d", cpu, -err); - do { -- n = read(fd, &c, sizeof(c)); -+ n = os_read_file(fd, &c, sizeof(c)); - if(n != sizeof(c)){ - printk("Failed to find newline in " -- "/proc/cpuinfo, n = %d, errno = %d\n", -- n, errno); -- goto out; -+ "/proc/cpuinfo, err = %d\n", -n); -+ return(0); - } - } while(c != '\n'); + activate_ipi(cpu_data[cpu].ipi_pipe[0], + current->thread.mode.tt.extern_pid); + + wmb(); +- if (cpu_test_and_set(cpu, &smp_callin_map)) { ++ if (cpu_test_and_set(cpu, cpu_callin_map)) { + printk("huh, CPU#%d already present??\n", cpu); + BUG(); } -+ return(0); -+} -+ -+int cpu_feature(char *what, char *buf, int len) -+{ -+ int fd, ret = 0; -+ -+ fd = os_open_file("/proc/cpuinfo", of_read(OPENFLAGS()), 0); -+ if(fd < 0){ -+ printk("Couldn't open /proc/cpuinfo, err = %d\n", -fd); -+ return(0); -+ } -+ -+ if(!find_cpuinfo_line(fd, what, buf, len)){ -+ printk("Couldn't find '%s' line in /proc/cpuinfo\n", what); -+ goto out_close; -+ } -+ -+ token(fd, buf, len, '\n'); -+ ret = 1; -+ -+ out_close: -+ os_close_file(fd); -+ return(ret); -+} -+ -+static int check_cpu_flag(char *feature, int *have_it) -+{ -+ char buf[MAXTOKEN], c; -+ int fd, len = sizeof(buf)/sizeof(buf[0]); -+ -+ printk("Checking for host processor %s support...", feature); -+ fd = os_open_file("/proc/cpuinfo", of_read(OPENFLAGS()), 0); -+ if(fd < 0){ -+ printk("Couldn't open /proc/cpuinfo, err = %d\n", -fd); -+ return(0); -+ } -+ -+ *have_it = 0; -+ if(!find_cpuinfo_line(fd, "flags", buf, sizeof(buf) / sizeof(buf[0]))) -+ goto out; - c = token(fd, buf, len - 1, ' '); - if(c < 0) goto out; - else if(c != ' '){ -- printk("Failed to find ':' in /proc/cpuinfo\n"); -+ printk("Failed to find ' ' in /proc/cpuinfo\n"); - goto out; - } +- while (!cpu_isset(cpu, &smp_commenced_mask)) ++ while (!cpu_isset(cpu, smp_commenced_mask)) + cpu_relax(); -@@ -100,21 +137,48 @@ - out: - if(*have_it == 0) printk("No\n"); - else if(*have_it == 1) printk("Yes\n"); -- close(fd); -+ os_close_file(fd); - return(1); + cpu_set(cpu, cpu_online_map); +@@ -143,16 +148,20 @@ + + current->thread.request.u.thread.proc = idle_proc; + current->thread.request.u.thread.arg = (void *) cpu; +- new_task = do_fork(CLONE_VM | CLONE_IDLETASK, 0, NULL, 0, NULL, NULL); +- if(IS_ERR(new_task)) panic("do_fork failed in idle_thread"); ++ new_task = copy_process(CLONE_VM | CLONE_IDLETASK, 0, NULL, 0, NULL, ++ NULL); ++ if(IS_ERR(new_task)) ++ panic("copy_process failed in idle_thread, error = %ld", ++ PTR_ERR(new_task)); + + cpu_tasks[cpu] = ((struct cpu_task) + { .pid = new_task->thread.mode.tt.extern_pid, + .task = new_task } ); + idle_threads[cpu] = new_task; +- CHOOSE_MODE(write(new_task->thread.mode.tt.switch_pipe[1], &c, ++ CHOOSE_MODE(os_write_file(new_task->thread.mode.tt.switch_pipe[1], &c, + sizeof(c)), + ({ panic("skas mode doesn't support SMP"); })); ++ wake_up_forked_process(new_task); + return(new_task); } -+#if 0 /* This doesn't work in tt mode, plus it's causing compilation problems -+ * for some people. -+ */ -+static void disable_lcall(void) -+{ -+ struct modify_ldt_ldt_s ldt; -+ int err; -+ -+ bzero(&ldt, sizeof(ldt)); -+ ldt.entry_number = 7; -+ ldt.base_addr = 0; -+ ldt.limit = 0; -+ err = modify_ldt(1, &ldt, sizeof(ldt)); -+ if(err) -+ printk("Failed to disable lcall7 - errno = %d\n", errno); -+} -+#endif -+ -+void arch_init_thread(void) -+{ -+#if 0 -+ disable_lcall(); -+#endif -+} -+ - void arch_check_bugs(void) +@@ -160,15 +169,17 @@ { - int have_it; + struct task_struct *idle; + unsigned long waittime; +- int err, cpu; ++ int err, cpu, me = smp_processor_id(); -- if(access("/proc/cpuinfo", R_OK)){ -+ if(os_access("/proc/cpuinfo", OS_ACC_R_OK) < 0){ - printk("/proc/cpuinfo not available - skipping CPU capability " - "checks\n"); - return; - } -- if(check_cpu_feature("cmov", &have_it)) cpu_has_cmov = have_it; -- if(check_cpu_feature("xmm", &have_it)) cpu_has_xmm = have_it; -+ if(check_cpu_flag("cmov", &have_it)) -+ host_has_cmov = have_it; -+ if(check_cpu_flag("xmm", &have_it)) -+ host_has_xmm = have_it; - } +- cpu_set(0, cpu_online_map); +- cpu_set(0, smp_callin_map); ++ cpu_clear(me, cpu_online_map); ++ cpu_set(me, cpu_online_map); ++ cpu_set(me, cpu_callin_map); - int arch_handle_signal(int sig, union uml_pt_regs *regs) -@@ -130,18 +194,18 @@ - if((*((char *) ip) != 0x0f) || ((*((char *) (ip + 1)) & 0xf0) != 0x40)) - return(0); +- err = os_pipe(cpu_data[0].ipi_pipe, 1, 1); +- if(err) panic("CPU#0 failed to create IPI pipe, errno = %d", -err); ++ err = os_pipe(cpu_data[me].ipi_pipe, 1, 1); ++ if(err < 0) ++ panic("CPU#0 failed to create IPI pipe, errno = %d", -err); -- if(cpu_has_cmov == 0) -+ if(host_has_cmov == 0) - panic("SIGILL caused by cmov, which this processor doesn't " - "implement, boot a filesystem compiled for older " - "processors"); -- else if(cpu_has_cmov == 1) -+ else if(host_has_cmov == 1) - panic("SIGILL caused by cmov, which this processor claims to " - "implement"); -- else if(cpu_has_cmov == -1) -+ else if(host_has_cmov == -1) - panic("SIGILL caused by cmov, couldn't tell if this processor " - "implements it, boot a filesystem compiled for older " - "processors"); -- else panic("Bad value for cpu_has_cmov (%d)", cpu_has_cmov); -+ else panic("Bad value for host_has_cmov (%d)", host_has_cmov); - return(0); - } +- activate_ipi(cpu_data[0].ipi_pipe[0], ++ activate_ipi(cpu_data[me].ipi_pipe[0], + current->thread.mode.tt.extern_pid); -diff -Naur a/arch/um/sys-i386/extable.c b/arch/um/sys-i386/extable.c ---- a/arch/um/sys-i386/extable.c 2004-03-10 08:23:09.000000000 -0500 -+++ b/arch/um/sys-i386/extable.c 1969-12-31 19:00:00.000000000 -0500 -@@ -1,30 +0,0 @@ --/* -- * linux/arch/i386/mm/extable.c -- */ -- --#include --#include --#include --#include -- --/* Simple binary search */ --const struct exception_table_entry * --search_extable(const struct exception_table_entry *first, -- const struct exception_table_entry *last, -- unsigned long value) --{ -- while (first <= last) { -- const struct exception_table_entry *mid; -- long diff; -- -- mid = (last - first) / 2 + first; -- diff = mid->insn - value; -- if (diff == 0) -- return mid; -- else if (diff < 0) -- first = mid+1; -- else -- last = mid-1; -- } -- return NULL; --} -diff -Naur a/arch/um/sys-i386/fault.c b/arch/um/sys-i386/fault.c ---- a/arch/um/sys-i386/fault.c 2004-03-10 08:21:28.000000000 -0500 -+++ b/arch/um/sys-i386/fault.c 2004-03-10 08:39:10.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2002 - 2004 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ + for(cpu = 1; cpu < ncpus; cpu++){ +@@ -180,10 +191,10 @@ + unhash_process(idle); + + waittime = 200000000; +- while (waittime-- && !cpu_isset(cpu, smp_callin_map)) ++ while (waittime-- && !cpu_isset(cpu, cpu_callin_map)) + cpu_relax(); + +- if (cpu_isset(cpu, smp_callin_map)) ++ if (cpu_isset(cpu, cpu_callin_map)) + printk("done\n"); + else printk("failed\n"); + } +@@ -216,7 +227,7 @@ + int fd; -@@ -7,16 +7,24 @@ - #include "sysdep/ptrace.h" - #include "sysdep/sigcontext.h" + fd = cpu_data[cpu].ipi_pipe[0]; +- while (read(fd, &c, 1) == 1) { ++ while (os_read_file(fd, &c, 1) == 1) { + switch (c) { + case 'C': + smp_call_function_slave(cpu); +@@ -276,9 +287,9 @@ + info = _info; --extern unsigned long search_exception_table(unsigned long addr); -+/* These two are from asm-um/uaccess.h and linux/module.h, check them. */ -+struct exception_table_entry -+{ -+ unsigned long insn; -+ unsigned long fixup; -+}; + for (i=0;ithread_info->cpu) && ++ if((i != current_thread->cpu) && + cpu_isset(i, cpu_online_map)) +- write(cpu_data[i].ipi_pipe[1], "C", 1); ++ os_write_file(cpu_data[i].ipi_pipe[1], "C", 1); -+const struct exception_table_entry *search_exception_tables(unsigned long add); -+ -+/* Compare this to arch/i386/mm/extable.c:fixup_exception() */ - int arch_fixup(unsigned long address, void *sc_ptr) + while (atomic_read(&scf_started) != cpus) + barrier(); +Index: uml-2.6.7/arch/um/drivers/slip_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/slip_user.c 2004-07-16 19:37:26.082060000 +0300 ++++ uml-2.6.7/arch/um/drivers/slip_user.c 2004-07-16 19:47:24.797041488 +0300 +@@ -4,11 +4,9 @@ + #include + #include + #include +-#include +-#include ++#include + #include + #include +-#include + #include + #include "user_util.h" + #include "kern_util.h" +@@ -65,9 +63,9 @@ { - struct sigcontext *sc = sc_ptr; -- unsigned long fixup; -+ const struct exception_table_entry *fixup; + struct slip_pre_exec_data *data = arg; - fixup = search_exception_tables(address); - if(fixup != 0){ -- sc->eip = fixup; -+ sc->eip = fixup->fixup; - return(1); +- if(data->stdin != -1) dup2(data->stdin, 0); ++ if(data->stdin >= 0) dup2(data->stdin, 0); + dup2(data->stdout, 1); +- if(data->close_me != -1) close(data->close_me); ++ if(data->close_me >= 0) os_close_file(data->close_me); + } + + static int slip_tramp(char **argv, int fd) +@@ -77,8 +75,8 @@ + int status, pid, fds[2], err, output_len; + + err = os_pipe(fds, 1, 0); +- if(err){ +- printk("slip_tramp : pipe failed, errno = %d\n", -err); ++ if(err < 0){ ++ printk("slip_tramp : pipe failed, err = %d\n", -err); + return(err); } - return(0); -diff -Naur a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile ---- a/arch/um/sys-i386/Makefile 2004-03-10 08:20:26.000000000 -0500 -+++ b/arch/um/sys-i386/Makefile 2004-03-10 08:35:20.000000000 -0500 -@@ -1,7 +1,8 @@ --obj-y = bugs.o checksum.o extable.o fault.o ksyms.o ldt.o module.o \ -- ptrace.o ptrace_user.o semaphore.o sigcontext.o syscalls.o sysrq.o -+obj-y = bugs.o checksum.o fault.o ksyms.o ldt.o ptrace.o ptrace_user.o \ -+ semaphore.o sigcontext.o syscalls.o sysrq.o time.o - obj-$(CONFIG_HIGHMEM) += highmem.o -+obj-$(CONFIG_MODULES) += module.o +@@ -96,16 +94,18 @@ + printk("slip_tramp : failed to allocate output " + "buffer\n"); - USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o - USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) -@@ -9,6 +10,8 @@ - SYMLINKS = semaphore.c highmem.c module.c - SYMLINKS := $(foreach f,$(SYMLINKS),$(src)/$f) +- close(fds[1]); ++ os_close_file(fds[1]); + read_output(fds[0], output, output_len); + if(output != NULL){ + printk("%s", output); + kfree(output); + } +- if(waitpid(pid, &status, 0) < 0) err = errno; ++ CATCH_EINTR(err = waitpid(pid, &status, 0)); ++ if(err < 0) ++ err = errno; + else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){ + printk("'%s' didn't exit with status 0\n", argv[0]); +- err = EINVAL; ++ err = -EINVAL; + } + } + return(err); +@@ -118,15 +118,17 @@ + char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; + char *argv[] = { "uml_net", version_buf, "slip", "up", gate_buf, + NULL }; +- int sfd, mfd, disc, sencap, err; ++ int sfd, mfd, err; -+clean-files := $(SYMLINKS) -+ - semaphore.c-dir = kernel - highmem.c-dir = mm - module.c-dir = kernel -@@ -24,19 +27,4 @@ - $(SYMLINKS): - $(call make_link,$@) +- if((mfd = get_pty()) < 0){ +- printk("umn : Failed to open pty\n"); +- return(-1); ++ mfd = get_pty(); ++ if(mfd < 0){ ++ printk("umn : Failed to open pty, err = %d\n", -mfd); ++ return(mfd); + } +- if((sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0)) < 0){ +- printk("Couldn't open tty for slip line\n"); +- return(-1); ++ sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0); ++ if(sfd < 0){ ++ printk("Couldn't open tty for slip line, err = %d\n", -sfd); ++ return(sfd); + } + if(set_up_tty(sfd)) return(-1); + pri->slave = sfd; +@@ -138,28 +140,23 @@ --clean: -- $(MAKE) -C util clean -- --fastdep: -- --dep: -- --archmrproper: -- rm -f $(SYMLINKS) -- --archclean: -- --archdep: -- --modules: -- -+subdir- := util -diff -Naur a/arch/um/sys-i386/ptrace_user.c b/arch/um/sys-i386/ptrace_user.c ---- a/arch/um/sys-i386/ptrace_user.c 2004-03-10 08:20:49.000000000 -0500 -+++ b/arch/um/sys-i386/ptrace_user.c 2004-03-10 08:36:16.000000000 -0500 -@@ -39,10 +39,10 @@ - nregs = sizeof(dummy->u_debugreg)/sizeof(dummy->u_debugreg[0]); - for(i = 0; i < nregs; i++){ - if((i == 4) || (i == 5)) continue; -- if(ptrace(PTRACE_POKEUSR, pid, &dummy->u_debugreg[i], -+ if(ptrace(PTRACE_POKEUSER, pid, &dummy->u_debugreg[i], - regs[i]) < 0) -- printk("write_debugregs - ptrace failed, " + err = slip_tramp(argv, sfd); + +- if(err != 0){ +- printk("slip_tramp failed - errno = %d\n", err); +- return(-err); ++ if(err < 0){ ++ printk("slip_tramp failed - err = %d\n", -err); ++ return(err); + } +- if(ioctl(pri->slave, SIOCGIFNAME, pri->name) < 0){ +- printk("SIOCGIFNAME failed, errno = %d\n", errno); +- return(-errno); ++ err = os_get_ifname(pri->slave, pri->name); ++ if(err < 0){ ++ printk("get_ifname failed, err = %d\n", -err); ++ return(err); + } + iter_addresses(pri->dev, open_addr, pri->name); + } + else { +- disc = N_SLIP; +- if(ioctl(sfd, TIOCSETD, &disc) < 0){ +- printk("Failed to set slip line discipline - " - "errno = %d\n", errno); -+ printk("write_debugregs - ptrace failed on " -+ "register %d, errno = %d\n", errno); +- return(-errno); +- } +- sencap = 0; +- if(ioctl(sfd, SIOCSIFENCAP, &sencap) < 0){ +- printk("Failed to set slip encapsulation - " +- "errno = %d\n", errno); +- return(-errno); ++ err = os_set_slip(sfd); ++ if(err < 0){ ++ printk("Failed to set slip discipline encapsulation - " ++ "err = %d\n", -err); ++ return(err); + } } + return(mfd); +@@ -181,9 +178,9 @@ + err = slip_tramp(argv, -1); + + if(err != 0) +- printk("slip_tramp failed - errno = %d\n", err); +- close(fd); +- close(pri->slave); ++ printk("slip_tramp failed - errno = %d\n", -err); ++ os_close_file(fd); ++ os_close_file(pri->slave); + pri->slave = -1; } -@@ -54,7 +54,7 @@ - dummy = NULL; - nregs = sizeof(dummy->u_debugreg)/sizeof(dummy->u_debugreg[0]); - for(i = 0; i < nregs; i++){ -- regs[i] = ptrace(PTRACE_PEEKUSR, pid, -+ regs[i] = ptrace(PTRACE_PEEKUSER, pid, - &dummy->u_debugreg[i], 0); - } +@@ -243,7 +240,7 @@ + { + struct slip_data *pri = data; + +- if(pri->slave == -1) return; ++ if(pri->slave < 0) return; + open_addr(addr, netmask, pri->name); } -diff -Naur a/arch/um/sys-i386/time.c b/arch/um/sys-i386/time.c ---- a/arch/um/sys-i386/time.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/arch/um/sys-i386/time.c 2004-03-10 08:36:21.000000000 -0500 -@@ -0,0 +1,24 @@ -+/* -+ * sys-i386/time.c -+ * Created 25.9.2002 Sapan Bhatia -+ * + +@@ -252,7 +249,7 @@ + { + struct slip_data *pri = data; + +- if(pri->slave == -1) return; ++ if(pri->slave < 0) return; + close_addr(addr, netmask, pri->name); + } + +Index: uml-2.6.7/fs/hostfs/hostfs.h +=================================================================== +--- uml-2.6.7.orig/fs/hostfs/hostfs.h 2004-07-16 19:47:23.631218720 +0300 ++++ uml-2.6.7/fs/hostfs/hostfs.h 2004-07-16 19:47:23.781195920 +0300 +@@ -0,0 +1,79 @@ ++#ifndef __UM_FS_HOSTFS ++#define __UM_FS_HOSTFS ++ ++#include "os.h" ++ ++/* These are exactly the same definitions as in fs.h, but the names are ++ * changed so that this file can be included in both kernel and user files. + */ + -+unsigned long long time_stamp(void) -+{ -+ unsigned long low, high; ++#define HOSTFS_ATTR_MODE 1 ++#define HOSTFS_ATTR_UID 2 ++#define HOSTFS_ATTR_GID 4 ++#define HOSTFS_ATTR_SIZE 8 ++#define HOSTFS_ATTR_ATIME 16 ++#define HOSTFS_ATTR_MTIME 32 ++#define HOSTFS_ATTR_CTIME 64 ++#define HOSTFS_ATTR_ATIME_SET 128 ++#define HOSTFS_ATTR_MTIME_SET 256 ++#define HOSTFS_ATTR_FORCE 512 /* Not a change, but a change it */ ++#define HOSTFS_ATTR_ATTR_FLAG 1024 ++ ++struct hostfs_iattr { ++ unsigned int ia_valid; ++ mode_t ia_mode; ++ uid_t ia_uid; ++ gid_t ia_gid; ++ loff_t ia_size; ++ struct timespec ia_atime; ++ struct timespec ia_mtime; ++ struct timespec ia_ctime; ++ unsigned int ia_attr_flags; ++}; ++ ++extern int stat_file(const char *path, unsigned long long *inode_out, ++ int *mode_out, int *nlink_out, int *uid_out, int *gid_out, ++ unsigned long long *size_out, struct timespec *atime_out, ++ struct timespec *mtime_out, struct timespec *ctime_out, ++ int *blksize_out, unsigned long long *blocks_out); ++extern int access_file(char *path, int r, int w, int x); ++extern int open_file(char *path, int r, int w, int append); ++extern int file_type(const char *path, int *rdev); ++extern void *open_dir(char *path, int *err_out); ++extern char *read_dir(void *stream, unsigned long long *pos, ++ unsigned long long *ino_out, int *len_out); ++extern void close_file(void *stream); ++extern void close_dir(void *stream); ++extern int read_file(int fd, unsigned long long *offset, char *buf, int len); ++extern int write_file(int fd, unsigned long long *offset, const char *buf, ++ int len); ++extern int lseek_file(int fd, long long offset, int whence); ++extern int file_create(char *name, int ur, int uw, int ux, int gr, ++ int gw, int gx, int or, int ow, int ox); ++extern int set_attr(const char *file, struct hostfs_iattr *attrs); ++extern int make_symlink(const char *from, const char *to); ++extern int unlink_file(const char *file); ++extern int do_mkdir(const char *file, int mode); ++extern int do_rmdir(const char *file); ++extern int do_mknod(const char *file, int mode, int dev); ++extern int link_file(const char *from, const char *to); ++extern int do_readlink(char *file, char *buf, int size); ++extern int rename_file(char *from, char *to); ++extern int do_statfs(char *root, long *bsize_out, long long *blocks_out, ++ long long *bfree_out, long long *bavail_out, ++ long long *files_out, long long *ffree_out, ++ void *fsid_out, int fsid_size, long *namelen_out, ++ long *spare_out); + -+ asm("rdtsc" : "=a" (low), "=d" (high)); -+ return((((unsigned long long) high) << 32) + low); -+} ++#endif + +/* + * Overrides for Emacs so that we follow Linus's tabbing style. @@ -15681,1625 +13095,1852 @@ diff -Naur a/arch/um/sys-i386/time.c b/arch/um/sys-i386/time.c + * c-file-style: "linux" + * End: + */ -diff -Naur a/arch/um/sys-i386/util/Makefile b/arch/um/sys-i386/util/Makefile ---- a/arch/um/sys-i386/util/Makefile 2004-03-10 08:23:14.000000000 -0500 -+++ b/arch/um/sys-i386/util/Makefile 2004-03-10 08:44:34.000000000 -0500 -@@ -1,15 +1,10 @@ -+host-progs := mk_sc mk_thread -+always := $(host-progs) +Index: uml-2.6.7/arch/um/kernel/sigio_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/sigio_user.c 2004-07-16 19:37:38.307201496 +0300 ++++ uml-2.6.7/arch/um/kernel/sigio_user.c 2004-07-16 19:47:24.458093016 +0300 +@@ -7,7 +7,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -17,6 +16,7 @@ + #include "init.h" + #include "user.h" + #include "kern_util.h" ++#include "user_util.h" + #include "sigio.h" + #include "helper.h" + #include "os.h" +@@ -26,7 +26,7 @@ + int pty_close_sigio = 0; --host-progs := mk_sc --always := $(host-progs) mk_thread --targets := mk_thread_kern.o mk_thread_user.o -+mk_thread-objs := mk_thread_kern.o mk_thread_user.o + /* Used as a flag during SIGIO testing early in boot */ +-static int got_sigio = 0; ++static volatile int got_sigio = 0; --mk_sc-objs := mk_sc.o -- --$(obj)/mk_thread : $(obj)/mk_thread_kern.o $(obj)/mk_thread_user.o -- $(CC) $(CFLAGS) -o $@ $^ -- --$(obj)/mk_thread_user.o : $(src)/mk_thread_user.c -- $(CC) $(USER_CFLAGS) -c -o $@ $< -+HOSTCFLAGS_mk_thread_kern.o := $(CFLAGS) -+HOSTCFLAGS_mk_thread_user.o := $(USER_CFLAGS) + void __init handler(int sig) + { +@@ -45,19 +45,18 @@ - clean : - $(RM) -f $(build-targets) -diff -Naur a/arch/um/sys-i386/util/mk_sc.c b/arch/um/sys-i386/util/mk_sc.c ---- a/arch/um/sys-i386/util/mk_sc.c 2004-03-10 08:22:46.000000000 -0500 -+++ b/arch/um/sys-i386/util/mk_sc.c 2004-03-10 08:43:23.000000000 -0500 -@@ -38,6 +38,7 @@ - SC_OFFSET("SC_ERR", err); - SC_OFFSET("SC_CR2", cr2); - SC_OFFSET("SC_FPSTATE", fpstate); -+ SC_OFFSET("SC_SIGMASK", oldmask); - SC_FP_OFFSET("SC_FP_CW", cw); - SC_FP_OFFSET("SC_FP_SW", sw); - SC_FP_OFFSET("SC_FP_TAG", tag); -diff -Naur a/arch/um/sys-ia64/Makefile b/arch/um/sys-ia64/Makefile ---- a/arch/um/sys-ia64/Makefile 2004-03-10 08:20:15.000000000 -0500 -+++ b/arch/um/sys-ia64/Makefile 2004-03-10 08:34:01.000000000 -0500 -@@ -7,18 +7,5 @@ - $(OBJ): $(OBJS) - rm -f $@ - $(LD) $(LINKFLAGS) --start-group $^ --end-group -o $@ --clean: -- rm -f $(OBJS) + info->err = 0; + if(openpty(&info->master, &info->slave, NULL, NULL, NULL)) +- info->err = errno; ++ info->err = -errno; + } --fastdep: -- --archmrproper: + void __init check_one_sigio(void (*proc)(int, int)) + { + struct sigaction old, new; +- struct termios tt; + struct openpty_arg pty = { .master = -1, .slave = -1 }; +- int master, slave, flags; ++ int master, slave, err; + + initial_thread_cb(openpty_cb, &pty); + if(pty.err){ +- printk("openpty failed, errno = %d\n", pty.err); ++ printk("openpty failed, errno = %d\n", -pty.err); + return; + } + +@@ -69,23 +68,13 @@ + return; + } + +- if(tcgetattr(master, &tt) < 0) +- panic("check_sigio : tcgetattr failed, errno = %d\n", errno); +- cfmakeraw(&tt); +- if(tcsetattr(master, TCSADRAIN, &tt) < 0) +- panic("check_sigio : tcsetattr failed, errno = %d\n", errno); - --archclean: -- rm -f link.ld -- @$(MAKEBOOT) clean +- if((flags = fcntl(master, F_GETFL)) < 0) +- panic("tty_fds : fcntl F_GETFL failed, errno = %d\n", errno); - --archdep: -- @$(MAKEBOOT) dep +- if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || +- (fcntl(master, F_SETOWN, os_getpid()) < 0)) +- panic("check_sigio : fcntl F_SETFL or F_SETOWN failed, " +- "errno = %d\n", errno); - --modules: -+clean-files := $(OBJS) link.ld -diff -Naur a/arch/um/sys-ppc/Makefile b/arch/um/sys-ppc/Makefile ---- a/arch/um/sys-ppc/Makefile 2004-03-10 08:21:07.000000000 -0500 -+++ b/arch/um/sys-ppc/Makefile 2004-03-10 08:38:45.000000000 -0500 -@@ -66,13 +66,4 @@ - $(CC) $(EXTRA_AFLAGS) $(AFLAGS) -D__ASSEMBLY__ -D__UM_PPC__ -c $< -o $*.o - rm -f asm +- if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)) +- panic("check_sigio : fcntl F_SETFL failed, errno = %d\n", +- errno); ++ err = __raw(master, 1, 0); //Not now, but complain so we now where we failed. ++ if (err < 0) ++ panic("check_sigio : __raw failed, errno = %d\n", -err); ++ ++ err = os_sigio_async(master, slave); ++ if(err < 0) ++ panic("tty_fds : sigio_async failed, err = %d\n", -err); --clean: -- rm -f $(OBJS) -- rm -f ppc_defs.h -- rm -f checksum.S semaphore.c mk_defs.c -- --fastdep: -- --dep: + if(sigaction(SIGIO, NULL, &old) < 0) + panic("check_sigio : sigaction 1 failed, errno = %d\n", errno); +@@ -97,8 +86,8 @@ + got_sigio = 0; + (*proc)(master, slave); + +- close(master); +- close(slave); ++ os_close_file(master); ++ os_close_file(slave); + + if(sigaction(SIGIO, &old, NULL) < 0) + panic("check_sigio : sigaction 3 failed, errno = %d\n", errno); +@@ -112,25 +101,25 @@ + printk("Checking that host ptys support output SIGIO..."); + + memset(buf, 0, sizeof(buf)); +- while(write(master, buf, sizeof(buf)) > 0) ; ++ ++ while(os_write_file(master, buf, sizeof(buf)) > 0) ; + if(errno != EAGAIN) + panic("check_sigio : write failed, errno = %d\n", errno); - --modules: -+clean-files := $(OBJS) ppc_defs.h checksum.S semaphore.c mk_defs.c -diff -Naur a/arch/um/uml.lds.S b/arch/um/uml.lds.S ---- a/arch/um/uml.lds.S 2004-03-10 08:21:05.000000000 -0500 -+++ b/arch/um/uml.lds.S 2004-03-10 08:38:33.000000000 -0500 -@@ -9,7 +9,6 @@ +- while(((n = read(slave, buf, sizeof(buf))) > 0) && !got_sigio) ; ++ while(((n = os_read_file(slave, buf, sizeof(buf))) > 0) && !got_sigio) ; + + if(got_sigio){ + printk("Yes\n"); + pty_output_sigio = 1; + } +- else if(errno == EAGAIN) printk("No, enabling workaround\n"); +- else panic("check_sigio : read failed, errno = %d\n", errno); ++ else if(n == -EAGAIN) printk("No, enabling workaround\n"); ++ else panic("check_sigio : read failed, err = %d\n", n); + } + + static void tty_close(int master, int slave) { - . = START + SIZEOF_HEADERS; + printk("Checking that host ptys support SIGIO on close..."); -- . = ALIGN(4096); - __binary_start = .; - #ifdef MODE_TT - .thread_private : { -@@ -26,7 +25,11 @@ - . = ALIGN(4096); /* Init code and data */ - _stext = .; - __init_begin = .; -- .text.init : { *(.text.init) } -+ .init.text : { -+ _sinittext = .; -+ *(.init.text) -+ _einittext = .; -+ } - . = ALIGN(4096); - .text : - { -@@ -38,7 +41,7 @@ +- close(slave); ++ os_close_file(slave); + if(got_sigio){ + printk("Yes\n"); + pty_close_sigio = 1; +@@ -140,7 +129,8 @@ + + void __init check_sigio(void) + { +- if(access("/dev/ptmx", R_OK) && access("/dev/ptyp0", R_OK)){ ++ if((os_access("/dev/ptmx", OS_ACC_R_OK) < 0) && ++ (os_access("/dev/ptyp0", OS_ACC_R_OK) < 0)){ + printk("No pseudo-terminals available - skipping pty SIGIO " + "check\n"); + return; +@@ -201,11 +191,10 @@ + p = &fds->poll[i]; + if(p->revents == 0) continue; + if(p->fd == sigio_private[1]){ +- n = read(sigio_private[1], &c, sizeof(c)); ++ n = os_read_file(sigio_private[1], &c, sizeof(c)); + if(n != sizeof(c)) + printk("write_sigio_thread : " +- "read failed, errno = %d\n", +- errno); ++ "read failed, err = %d\n", -n); + tmp = current_poll; + current_poll = next_poll; + next_poll = tmp; +@@ -218,10 +207,10 @@ + (fds->used - i) * sizeof(*fds->poll)); + } + +- n = write(respond_fd, &c, sizeof(c)); ++ n = os_write_file(respond_fd, &c, sizeof(c)); + if(n != sizeof(c)) + printk("write_sigio_thread : write failed, " +- "errno = %d\n", errno); ++ "err = %d\n", -n); + } + } + } +@@ -252,15 +241,15 @@ + char c; + + flags = set_signals(0); +- n = write(sigio_private[0], &c, sizeof(c)); ++ n = os_write_file(sigio_private[0], &c, sizeof(c)); + if(n != sizeof(c)){ +- printk("update_thread : write failed, errno = %d\n", errno); ++ printk("update_thread : write failed, err = %d\n", -n); + goto fail; + } - #include "asm/common.lds.S" +- n = read(sigio_private[0], &c, sizeof(c)); ++ n = os_read_file(sigio_private[0], &c, sizeof(c)); + if(n != sizeof(c)){ +- printk("update_thread : read failed, errno = %d\n", errno); ++ printk("update_thread : read failed, err = %d\n", -n); + goto fail; + } -- .data.init : { *(.data.init) } -+ init.data : { *(init.data) } - .data : - { - . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ -diff -Naur a/arch/um/util/Makefile b/arch/um/util/Makefile ---- a/arch/um/util/Makefile 2004-03-10 08:23:21.000000000 -0500 -+++ b/arch/um/util/Makefile 2004-03-10 08:44:50.000000000 -0500 -@@ -1,23 +1,8 @@ --always := mk_task mk_constants --targets := mk_task_user.o mk_task_kern.o \ -- mk_constants_user.o mk_constants_kern.o -+host-progs := mk_task mk_constants -+always := $(host-progs) +@@ -271,10 +260,10 @@ + if(write_sigio_pid != -1) + os_kill_process(write_sigio_pid, 1); + write_sigio_pid = -1; +- close(sigio_private[0]); +- close(sigio_private[1]); +- close(write_sigio_fds[0]); +- close(write_sigio_fds[1]); ++ os_close_file(sigio_private[0]); ++ os_close_file(sigio_private[1]); ++ os_close_file(write_sigio_fds[0]); ++ os_close_file(write_sigio_fds[1]); + sigio_unlock(); + set_signals(flags); + } +@@ -369,15 +358,15 @@ + goto out; --$(obj)/mk_task: $(obj)/mk_task_user.o $(obj)/mk_task_kern.o -- $(CC) -o $@ $^ -+mk_task-objs := mk_task_user.o mk_task_kern.o -+mk_constants-objs := mk_constants_user.o mk_constants_kern.o + err = os_pipe(write_sigio_fds, 1, 1); +- if(err){ ++ if(err < 0){ + printk("write_sigio_workaround - os_pipe 1 failed, " +- "errno = %d\n", -err); ++ "err = %d\n", -err); + goto out; + } + err = os_pipe(sigio_private, 1, 1); +- if(err){ ++ if(err < 0){ + printk("write_sigio_workaround - os_pipe 2 failed, " +- "errno = %d\n", -err); ++ "err = %d\n", -err); + goto out_close1; + } + if(setup_initial_poll(sigio_private[1])) +@@ -399,11 +388,11 @@ + os_kill_process(write_sigio_pid, 1); + write_sigio_pid = -1; + out_close2: +- close(sigio_private[0]); +- close(sigio_private[1]); ++ os_close_file(sigio_private[0]); ++ os_close_file(sigio_private[1]); + out_close1: +- close(write_sigio_fds[0]); +- close(write_sigio_fds[1]); ++ os_close_file(write_sigio_fds[0]); ++ os_close_file(write_sigio_fds[1]); + sigio_unlock(); + } --$(obj)/mk_task_user.o: $(src)/mk_task_user.c -- $(CC) -o $@ -c $< -- --$(obj)/mk_constants : $(obj)/mk_constants_user.o $(obj)/mk_constants_kern.o -- $(CC) -o $@ $^ -- --$(obj)/mk_constants_user.o : $(src)/mk_constants_user.c -- $(CC) -c $< -o $@ -- --$(obj)/mk_constants_kern.o : $(src)/mk_constants_kern.c -- $(CC) $(CFLAGS) -c $< -o $@ -- --clean: -- $(RM) $(build-targets) -- --archmrproper: -+HOSTCFLAGS_mk_task_kern.o := $(CFLAGS) -+HOSTCFLAGS_mk_constants_kern.o := $(CFLAGS) -diff -Naur a/arch/um/util/mk_constants_kern.c b/arch/um/util/mk_constants_kern.c ---- a/arch/um/util/mk_constants_kern.c 2004-03-10 08:20:23.000000000 -0500 -+++ b/arch/um/util/mk_constants_kern.c 2004-03-10 08:34:44.000000000 -0500 -@@ -1,5 +1,6 @@ - #include "linux/kernel.h" - #include "linux/stringify.h" -+#include "linux/time.h" - #include "asm/page.h" +@@ -412,10 +401,16 @@ + int n; + char c; - extern void print_head(void); -@@ -11,6 +12,7 @@ - { - print_head(); - print_constant_int("UM_KERN_PAGE_SIZE", PAGE_SIZE); -+ - print_constant_str("UM_KERN_EMERG", KERN_EMERG); - print_constant_str("UM_KERN_ALERT", KERN_ALERT); - print_constant_str("UM_KERN_CRIT", KERN_CRIT); -@@ -19,6 +21,8 @@ - print_constant_str("UM_KERN_NOTICE", KERN_NOTICE); - print_constant_str("UM_KERN_INFO", KERN_INFO); - print_constant_str("UM_KERN_DEBUG", KERN_DEBUG); -+ -+ print_constant_int("UM_NSEC_PER_SEC", NSEC_PER_SEC); - print_tail(); - return(0); - } -diff -Naur a/fs/hostfs/hostfs.h b/fs/hostfs/hostfs.h ---- a/fs/hostfs/hostfs.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hostfs/hostfs.h 2004-03-10 08:33:48.000000000 -0500 -@@ -0,0 +1,79 @@ -+#ifndef __UM_FS_HOSTFS -+#define __UM_FS_HOSTFS -+ -+#include "os.h" -+ -+/* These are exactly the same definitions as in fs.h, but the names are -+ * changed so that this file can be included in both kernel and user files. -+ */ -+ -+#define HOSTFS_ATTR_MODE 1 -+#define HOSTFS_ATTR_UID 2 -+#define HOSTFS_ATTR_GID 4 -+#define HOSTFS_ATTR_SIZE 8 -+#define HOSTFS_ATTR_ATIME 16 -+#define HOSTFS_ATTR_MTIME 32 -+#define HOSTFS_ATTR_CTIME 64 -+#define HOSTFS_ATTR_ATIME_SET 128 -+#define HOSTFS_ATTR_MTIME_SET 256 -+#define HOSTFS_ATTR_FORCE 512 /* Not a change, but a change it */ -+#define HOSTFS_ATTR_ATTR_FLAG 1024 -+ -+struct hostfs_iattr { -+ unsigned int ia_valid; -+ mode_t ia_mode; -+ uid_t ia_uid; -+ gid_t ia_gid; -+ loff_t ia_size; -+ struct timespec ia_atime; -+ struct timespec ia_mtime; -+ struct timespec ia_ctime; -+ unsigned int ia_attr_flags; -+}; -+ -+extern int stat_file(const char *path, unsigned long long *inode_out, -+ int *mode_out, int *nlink_out, int *uid_out, int *gid_out, -+ unsigned long long *size_out, struct timespec *atime_out, -+ struct timespec *mtime_out, struct timespec *ctime_out, -+ int *blksize_out, unsigned long long *blocks_out); -+extern int access_file(char *path, int r, int w, int x); -+extern int open_file(char *path, int r, int w, int append); -+extern int file_type(const char *path, int *rdev); -+extern void *open_dir(char *path, int *err_out); -+extern char *read_dir(void *stream, unsigned long long *pos, -+ unsigned long long *ino_out, int *len_out); -+extern void close_file(void *stream); -+extern void close_dir(void *stream); -+extern int read_file(int fd, unsigned long long *offset, char *buf, int len); -+extern int write_file(int fd, unsigned long long *offset, const char *buf, -+ int len); -+extern int lseek_file(int fd, long long offset, int whence); -+extern int file_create(char *name, int ur, int uw, int ux, int gr, -+ int gw, int gx, int or, int ow, int ox); -+extern int set_attr(const char *file, struct hostfs_iattr *attrs); -+extern int make_symlink(const char *from, const char *to); -+extern int unlink_file(const char *file); -+extern int do_mkdir(const char *file, int mode); -+extern int do_rmdir(const char *file); -+extern int do_mknod(const char *file, int mode, int dev); -+extern int link_file(const char *from, const char *to); -+extern int do_readlink(char *file, char *buf, int size); -+extern int rename_file(char *from, char *to); -+extern int do_statfs(char *root, long *bsize_out, long long *blocks_out, -+ long long *bfree_out, long long *bavail_out, -+ long long *files_out, long long *ffree_out, -+ void *fsid_out, int fsid_size, long *namelen_out, -+ long *spare_out); -+ -+#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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c ---- a/fs/hostfs/hostfs_kern.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hostfs/hostfs_kern.c 2004-03-10 08:34:06.000000000 -0500 -@@ -0,0 +1,1008 @@ -+/* -+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) -+ * Licensed under the GPL -+ * -+ * Ported the filesystem routines to 2.5. -+ * 2003-02-10 Petr Baudis -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "hostfs.h" -+#include "kern_util.h" -+#include "kern.h" -+#include "user_util.h" -+#include "2_5compat.h" -+#include "init.h" -+ -+struct hostfs_inode_info { -+ char *host_filename; -+ int fd; -+ int mode; -+ struct inode vfs_inode; -+}; -+ -+static inline struct hostfs_inode_info *HOSTFS_I(struct inode *inode) -+{ -+ return(list_entry(inode, struct hostfs_inode_info, vfs_inode)); -+} -+ -+#define FILE_HOSTFS_I(file) HOSTFS_I((file)->f_dentry->d_inode) -+ -+int hostfs_d_delete(struct dentry *dentry) -+{ -+ return(1); -+} -+ -+struct dentry_operations hostfs_dentry_ops = { -+ .d_delete = hostfs_d_delete, -+}; -+ -+/* Changed in hostfs_args before the kernel starts running */ -+static char *root_ino = "/"; -+static int append = 0; -+ -+#define HOSTFS_SUPER_MAGIC 0x00c0ffee -+ -+static struct inode_operations hostfs_iops; -+static struct inode_operations hostfs_dir_iops; -+static struct address_space_operations hostfs_link_aops; +- n = read(fd, &c, sizeof(c)); ++ n = os_read_file(fd, &c, sizeof(c)); + if(n != sizeof(c)){ +- printk("read_sigio_fd - read failed, errno = %d\n", errno); +- return(-errno); ++ if(n < 0) { ++ printk("read_sigio_fd - read failed, err = %d\n", -n); ++ return(n); ++ } ++ else { ++ printk("read_sigio_fd - short read, bytes = %d\n", n); ++ return(-EIO); ++ } + } + return(n); + } +Index: uml-2.6.7/include/asm-um/system-i386.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/system-i386.h 2004-07-16 19:36:25.160321512 +0300 ++++ uml-2.6.7/include/asm-um/system-i386.h 2004-07-16 19:47:23.802192728 +0300 +@@ -2,36 +2,5 @@ + #define __UM_SYSTEM_I386_H + + #include "asm/system-generic.h" +- +-static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, +- unsigned long new, int size) +-{ +- unsigned long prev; +- switch (size) { +- case 1: +- __asm__ __volatile__(LOCK_PREFIX "cmpxchgb %b1,%2" +- : "=a"(prev) +- : "q"(new), "m"(*__xg(ptr)), "0"(old) +- : "memory"); +- return prev; +- case 2: +- __asm__ __volatile__(LOCK_PREFIX "cmpxchgw %w1,%2" +- : "=a"(prev) +- : "q"(new), "m"(*__xg(ptr)), "0"(old) +- : "memory"); +- return prev; +- case 4: +- __asm__ __volatile__(LOCK_PREFIX "cmpxchgl %1,%2" +- : "=a"(prev) +- : "q"(new), "m"(*__xg(ptr)), "0"(old) +- : "memory"); +- return prev; +- } +- return old; +-} +- +-#define cmpxchg(ptr,o,n)\ +- ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ +- (unsigned long)(n),sizeof(*(ptr)))) + + #endif +Index: uml-2.6.7/arch/um/sys-i386/time.c +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/time.c 2004-07-16 19:47:23.629219024 +0300 ++++ uml-2.6.7/arch/um/sys-i386/time.c 2004-07-16 19:47:23.773197136 +0300 +@@ -0,0 +1,24 @@ ++/* ++ * sys-i386/time.c ++ * Created 25.9.2002 Sapan Bhatia ++ * ++ */ + -+static int __init hostfs_args(char *options, int *add) ++unsigned long long time_stamp(void) +{ -+ char *ptr; -+ -+ ptr = strchr(options, ','); -+ if(ptr != NULL) -+ *ptr++ = '\0'; -+ if(*options != '\0') -+ root_ino = options; ++ unsigned long low, high; + -+ options = ptr; -+ while(options){ -+ ptr = strchr(options, ','); -+ if(ptr != NULL) -+ *ptr++ = '\0'; -+ if(*options != '\0'){ -+ if(!strcmp(options, "append")) -+ append = 1; -+ else printf("hostfs_args - unsupported option - %s\n", -+ options); -+ } -+ options = ptr; -+ } -+ return(0); ++ asm("rdtsc" : "=a" (low), "=d" (high)); ++ return((((unsigned long long) high) << 32) + low); +} + -+__uml_setup("hostfs=", hostfs_args, -+"hostfs=,,...\n" -+" This is used to set hostfs parameters. The root directory argument\n" -+" is used to confine all hostfs mounts to within the specified directory\n" -+" tree on the host. If this isn't specified, then a user inside UML can\n" -+" mount anything on the host that's accessible to the user that's running\n" -+" it.\n" -+" The only flag currently supported is 'append', which specifies that all\n" -+" files opened by hostfs will be opened in append mode.\n\n" -+); -+ -+static char *dentry_name(struct dentry *dentry, int extra) -+{ -+ struct dentry *parent; -+ char *root, *name; -+ int len; ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/Makefile-i386 +=================================================================== +--- uml-2.6.7.orig/arch/um/Makefile-i386 2004-07-16 19:37:17.426375864 +0300 ++++ uml-2.6.7/arch/um/Makefile-i386 2004-07-16 19:47:23.764198504 +0300 +@@ -16,22 +16,27 @@ + + SYS_HEADERS = $(SYS_DIR)/sc.h $(SYS_DIR)/thread.h + ++sys_prepare: $(SYS_DIR)/sc.h + -+ len = 0; -+ parent = dentry; -+ while(parent->d_parent != parent){ -+ len += parent->d_name.len + 1; -+ parent = parent->d_parent; -+ } -+ -+ root = HOSTFS_I(parent->d_inode)->host_filename; -+ len += strlen(root); -+ name = kmalloc(len + extra + 1, GFP_KERNEL); -+ if(name == NULL) return(NULL); + prepare: $(SYS_HEADERS) + ++filechk_$(SYS_DIR)/sc.h := $(SYS_UTIL_DIR)/mk_sc + -+ name[len] = '\0'; -+ parent = dentry; -+ while(parent->d_parent != parent){ -+ len -= parent->d_name.len + 1; -+ name[len] = '/'; -+ strncpy(&name[len + 1], parent->d_name.name, -+ parent->d_name.len); -+ parent = parent->d_parent; -+ } -+ strncpy(name, root, strlen(root)); -+ return(name); -+} + $(SYS_DIR)/sc.h: $(SYS_UTIL_DIR)/mk_sc +- $< > $@ ++ $(call filechk,$@) + -+static char *inode_name(struct inode *ino, int extra) -+{ -+ struct dentry *dentry; ++filechk_$(SYS_DIR)/thread.h := $(SYS_UTIL_DIR)/mk_thread + + $(SYS_DIR)/thread.h: $(SYS_UTIL_DIR)/mk_thread +- $< > $@ ++ $(call filechk,$@) + +-$(SYS_UTIL_DIR)/mk_sc: FORCE ; +- @$(call descend,$(SYS_UTIL_DIR),$@) ++$(SYS_UTIL_DIR)/mk_sc: scripts/basic/fixdep include/config/MARKER FORCE ; ++ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ + +-$(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) FORCE ; +- @$(call descend,$(SYS_UTIL_DIR),$@) ++$(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) sys_prepare FORCE ; ++ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ + + $(SYS_UTIL_DIR): include/asm FORCE +- @$(call descend,$@,) ++ $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) + +-sysclean : +- rm -f $(SYS_HEADERS) ++CLEAN_FILES += $(SYS_HEADERS) +Index: uml-2.6.7/include/asm-um/smp.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/smp.h 2004-07-16 19:35:49.282775728 +0300 ++++ uml-2.6.7/include/asm-um/smp.h 2004-07-16 19:47:23.795193792 +0300 +@@ -10,7 +10,7 @@ + + extern cpumask_t cpu_online_map; + +-#define smp_processor_id() (current->thread_info->cpu) ++#define smp_processor_id() (current_thread->cpu) + #define cpu_logical_map(n) (n) + #define cpu_number_map(n) (n) + #define PROC_CHANGE_PENALTY 15 /* Pick a number, any number */ +Index: uml-2.6.7/arch/um/Kconfig_block +=================================================================== +--- uml-2.6.7.orig/arch/um/Kconfig_block 2004-07-16 19:37:05.104249112 +0300 ++++ uml-2.6.7/arch/um/Kconfig_block 2004-07-16 19:47:23.711206560 +0300 +@@ -29,6 +29,20 @@ + wise choice too. In all other cases (for example, if you're just + playing around with User-Mode Linux) you can choose N. + ++# Turn this back on when the driver actually works ++# ++#config BLK_DEV_COW ++# tristate "COW block device" ++# help ++# This is a layered driver which sits above two other block devices. ++# One is read-only, and the other is a read-write layer which stores ++# all changes. This provides the illusion that the read-only layer ++# can be mounted read-write and changed. + -+ dentry = list_entry(ino->i_dentry.next, struct dentry, d_alias); -+ return(dentry_name(dentry, extra)); -+} ++config BLK_DEV_COW_COMMON ++ bool ++ default BLK_DEV_COW || BLK_DEV_UBD + -+static int read_name(struct inode *ino, char *name) -+{ -+ /* The non-int inode fields are copied into ints by stat_file and -+ * then copied into the inode because passing the actual pointers -+ * in and having them treated as int * breaks on big-endian machines + config BLK_DEV_LOOP + tristate "Loopback device support" + +Index: uml-2.6.7/arch/um/kernel/initrd_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/initrd_user.c 2004-07-16 19:36:07.784962968 +0300 ++++ uml-2.6.7/arch/um/kernel/initrd_user.c 2004-07-16 19:47:23.715205952 +0300 +@@ -6,7 +6,6 @@ + #include + #include + #include +-#include + #include + + #include "user_util.h" +@@ -19,13 +18,15 @@ + { + int fd, n; + +- if((fd = os_open_file(filename, of_read(OPENFLAGS()), 0)) < 0){ +- printk("Opening '%s' failed - errno = %d\n", filename, errno); ++ fd = os_open_file(filename, of_read(OPENFLAGS()), 0); ++ if(fd < 0){ ++ printk("Opening '%s' failed - err = %d\n", filename, -fd); + return(-1); + } +- if((n = read(fd, buf, size)) != size){ +- printk("Read of %d bytes from '%s' returned %d, errno = %d\n", +- size, filename, n, errno); ++ n = os_read_file(fd, buf, size); ++ if(n != size){ ++ printk("Read of %d bytes from '%s' failed, err = %d\n", size, ++ filename, -n); + return(-1); + } + return(0); +Index: uml-2.6.7/arch/um/include/sysdep-i386/frame_user.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/sysdep-i386/frame_user.h 2004-07-16 19:37:34.631760248 +0300 ++++ uml-2.6.7/arch/um/include/sysdep-i386/frame_user.h 2004-07-16 19:47:23.707207168 +0300 +@@ -56,26 +56,26 @@ + * it would have to be __builtin_frame_address(1). + */ + +-static inline unsigned long frame_restorer(void) +-{ +- unsigned long *fp; +- +- fp = __builtin_frame_address(0); +- return((unsigned long) (fp + 1)); +-} ++#define frame_restorer() \ ++({ \ ++ unsigned long *fp; \ ++\ ++ fp = __builtin_frame_address(0); \ ++ ((unsigned long) (fp + 1)); \ ++}) + + /* Similarly, this returns the value of sp when the handler was first + * entered. This is used to calculate the proper sp when delivering + * signals. + */ + +-static inline unsigned long frame_sp(void) +-{ +- unsigned long *fp; +- +- fp = __builtin_frame_address(0); +- return((unsigned long) (fp + 1)); +-} ++#define frame_sp() \ ++({ \ ++ unsigned long *fp; \ ++\ ++ fp = __builtin_frame_address(0); \ ++ ((unsigned long) (fp + 1)); \ ++}) + + #endif + +Index: uml-2.6.7/arch/um/drivers/tty.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/tty.c 2004-07-16 19:36:25.316297800 +0300 ++++ uml-2.6.7/arch/um/drivers/tty.c 2004-07-16 19:47:23.695208992 +0300 +@@ -5,7 +5,6 @@ + + #include + #include +-#include + #include + #include + #include "chan_user.h" +@@ -30,7 +29,8 @@ + } + str++; + +- if((data = um_kmalloc(sizeof(*data))) == NULL) ++ data = um_kmalloc(sizeof(*data)); ++ if(data == NULL) + return(NULL); + *data = ((struct tty_chan) { .dev = str, + .raw = opts->raw }); +Index: uml-2.6.7/arch/um/drivers/net_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/net_kern.c 2004-07-16 19:36:37.183493712 +0300 ++++ uml-2.6.7/arch/um/drivers/net_kern.c 2004-07-16 19:47:23.689209904 +0300 +@@ -26,6 +26,7 @@ + #include "mconsole_kern.h" + #include "init.h" + #include "irq_user.h" ++#include "irq_kern.h" + + static spinlock_t opened_lock = SPIN_LOCK_UNLOCKED; + LIST_HEAD(opened); +@@ -37,7 +38,8 @@ + struct sk_buff *skb; + + /* If we can't allocate memory, try again next round. */ +- if ((skb = dev_alloc_skb(dev->mtu)) == NULL) { ++ skb = dev_alloc_skb(dev->mtu); ++ if (skb == NULL) { + lp->stats.rx_dropped++; + return 0; + } +@@ -61,14 +63,14 @@ + return pkt_len; + } + +-void uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++irqreturn_t uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) + { + struct net_device *dev = dev_id; + struct uml_net_private *lp = dev->priv; + int err; + + if(!netif_running(dev)) +- return; ++ return(IRQ_NONE); + + spin_lock(&lp->lock); + while((err = uml_net_rx(dev)) > 0) ; +@@ -83,6 +85,7 @@ + + out: + spin_unlock(&lp->lock); ++ return(IRQ_HANDLED); + } + + static int uml_net_open(struct net_device *dev) +@@ -250,37 +253,6 @@ + #endif + } + +-/* +- * default do nothing hard header packet routines for struct net_device init. +- * real ethernet transports will overwrite with real routines. +- */ +-static int uml_net_hard_header(struct sk_buff *skb, struct net_device *dev, +- unsigned short type, void *daddr, void *saddr, unsigned len) +-{ +- return(0); /* no change */ +-} +- +-static int uml_net_rebuild_header(struct sk_buff *skb) +-{ +- return(0); /* ignore */ +-} +- +-static int uml_net_header_cache(struct neighbour *neigh, struct hh_cache *hh) +-{ +- return(-1); /* fail */ +-} +- +-static void uml_net_header_cache_update(struct hh_cache *hh, +- struct net_device *dev, unsigned char * haddr) +-{ +- /* ignore */ +-} +- +-static int uml_net_header_parse(struct sk_buff *skb, unsigned char *haddr) +-{ +- return(0); /* nothing */ +-} +- + static spinlock_t devices_lock = SPIN_LOCK_UNLOCKED; + static struct list_head devices = LIST_HEAD_INIT(devices); + +@@ -290,7 +262,7 @@ + struct uml_net *device; + struct net_device *dev; + struct uml_net_private *lp; +- int err, size; ++ int save, err, size; + + size = transport->private_size + sizeof(struct uml_net_private) + + sizeof(((struct uml_net_private *) 0)->user); +@@ -332,12 +304,6 @@ + snprintf(dev->name, sizeof(dev->name), "eth%d", n); + device->dev = dev; + +- dev->hard_header = uml_net_hard_header; +- dev->rebuild_header = uml_net_rebuild_header; +- dev->hard_header_cache = uml_net_header_cache; +- dev->header_cache_update= uml_net_header_cache_update; +- dev->hard_header_parse = uml_net_header_parse; +- + (*transport->kern->init)(dev, init); + + dev->mtu = transport->user->max_packet; +@@ -364,21 +330,29 @@ + } + lp = dev->priv; + +- INIT_LIST_HEAD(&lp->list); +- spin_lock_init(&lp->lock); +- lp->dev = dev; +- lp->fd = -1; +- lp->mac = { 0xfe, 0xfd, 0x0, 0x0, 0x0, 0x0 }; +- lp->have_mac = device->have_mac; +- lp->protocol = transport->kern->protocol; +- lp->open = transport->user->open; +- lp->close = transport->user->close; +- lp->remove = transport->user->remove; +- lp->read = transport->kern->read; +- lp->write = transport->kern->write; +- lp->add_address = transport->user->add_address; +- lp->delete_address = transport->user->delete_address; +- lp->set_mtu = transport->user->set_mtu; ++ /* lp.user is the first four bytes of the transport data, which ++ * has already been initialized. This structure assignment will ++ * overwrite that, so we make sure that .user gets overwritten with ++ * what it already has. + */ -+ int err; -+ int i_mode, i_nlink, i_blksize; -+ unsigned long long i_size; -+ unsigned long long i_ino; -+ unsigned long long i_blocks; -+ -+ err = stat_file(name, &i_ino, &i_mode, &i_nlink, &ino->i_uid, -+ &ino->i_gid, &i_size, &ino->i_atime, &ino->i_mtime, -+ &ino->i_ctime, &i_blksize, &i_blocks); -+ if(err) -+ return(err); -+ -+ ino->i_ino = i_ino; -+ ino->i_mode = i_mode; -+ ino->i_nlink = i_nlink; -+ ino->i_size = i_size; -+ ino->i_blksize = i_blksize; -+ ino->i_blocks = i_blocks; -+ if((ino->i_sb->s_dev == ROOT_DEV) && (ino->i_uid == getuid())) -+ ino->i_uid = 0; -+ return(0); -+} -+ -+static char *follow_link(char *link) -+{ -+ int len, n; -+ char *name, *resolved, *end; -+ -+ len = 64; -+ while(1){ -+ n = -ENOMEM; -+ name = kmalloc(len, GFP_KERNEL); -+ if(name == NULL) -+ goto out; -+ -+ n = do_readlink(link, name, len); -+ if(n < len) -+ break; -+ len *= 2; -+ kfree(name); -+ } -+ if(n < 0) -+ goto out_free; -+ -+ if(*name == '/') -+ return(name); -+ -+ end = strrchr(link, '/'); -+ if(end == NULL) -+ return(name); -+ -+ *(end + 1) = '\0'; -+ len = strlen(link) + strlen(name) + 1; -+ -+ resolved = kmalloc(len, GFP_KERNEL); -+ if(resolved == NULL){ -+ n = -ENOMEM; -+ goto out_free; -+ } -+ -+ sprintf(resolved, "%s%s", link, name); -+ kfree(name); -+ kfree(link); -+ return(resolved); ++ save = lp->user[0]; ++ *lp = ((struct uml_net_private) ++ { .list = LIST_HEAD_INIT(lp->list), ++ .lock = SPIN_LOCK_UNLOCKED, ++ .dev = dev, ++ .fd = -1, ++ .mac = { 0xfe, 0xfd, 0x0, 0x0, 0x0, 0x0}, ++ .have_mac = device->have_mac, ++ .protocol = transport->kern->protocol, ++ .open = transport->user->open, ++ .close = transport->user->close, ++ .remove = transport->user->remove, ++ .read = transport->kern->read, ++ .write = transport->kern->write, ++ .add_address = transport->user->add_address, ++ .delete_address = transport->user->delete_address, ++ .set_mtu = transport->user->set_mtu, ++ .user = { save } }); + + init_timer(&lp->tl); + lp->tl.function = uml_net_user_timer_expire; +@@ -611,7 +585,8 @@ + unregister_netdev(dev); + + list_del(&device->list); +- free_netdev(device); ++ kfree(device); ++ free_netdev(dev); + return(0); + } + +Index: uml-2.6.7/arch/um/kernel/tt/syscall_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/syscall_kern.c 2004-07-16 19:35:49.170792752 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/syscall_kern.c 2004-07-16 19:47:23.749200784 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +Index: uml-2.6.7/arch/um/kernel/config.c.in +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/config.c.in 2004-07-16 19:37:08.932667104 +0300 ++++ uml-2.6.7/arch/um/kernel/config.c.in 2004-07-16 19:47:23.712206408 +0300 +@@ -7,9 +7,7 @@ + #include + #include "init.h" + +-static __initdata char *config = " +-CONFIG +-"; ++static __initdata char *config = "CONFIG"; + + static int __init print_config(char *line, int *add) + { +Index: uml-2.6.7/arch/um/include/mconsole.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/mconsole.h 2004-07-16 19:36:32.705174520 +0300 ++++ uml-2.6.7/arch/um/include/mconsole.h 2004-07-16 19:47:23.703207776 +0300 +@@ -41,11 +41,13 @@ + + struct mc_request; + ++enum mc_context { MCONSOLE_INTR, MCONSOLE_PROC }; + -+ out_free: -+ kfree(name); + struct mconsole_command + { + char *command; + void (*handler)(struct mc_request *req); +- int as_interrupt; ++ enum mc_context context; + }; + + struct mc_request +@@ -77,6 +79,8 @@ + extern void mconsole_cad(struct mc_request *req); + extern void mconsole_stop(struct mc_request *req); + extern void mconsole_go(struct mc_request *req); ++extern void mconsole_log(struct mc_request *req); ++extern void mconsole_proc(struct mc_request *req); + + extern int mconsole_get_request(int fd, struct mc_request *req); + extern int mconsole_notify(char *sock_name, int type, const void *data, +Index: uml-2.6.7/arch/um/kernel/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/Makefile 2004-07-16 19:37:05.102249416 +0300 ++++ uml-2.6.7/arch/um/kernel/Makefile 2004-07-16 19:47:23.718205496 +0300 +@@ -7,11 +7,11 @@ + + obj-y = checksum.o config.o exec_kern.o exitcode.o frame_kern.o frame.o \ + helper.o init_task.o irq.o irq_user.o ksyms.o mem.o mem_user.o \ +- process.o process_kern.o ptrace.o reboot.o resource.o sigio_user.o \ +- sigio_kern.o signal_kern.o signal_user.o smp.o syscall_kern.o \ +- syscall_user.o sysrq.o sys_call_table.o tempfile.o time.o \ +- time_kern.o tlb.o trap_kern.o trap_user.o uaccess_user.o um_arch.o \ +- umid.o user_syms.o user_util.o ++ physmem.o process.o process_kern.o ptrace.o reboot.o resource.o \ ++ sigio_user.o sigio_kern.o signal_kern.o signal_user.o smp.o \ ++ syscall_kern.o syscall_user.o sysrq.o sys_call_table.o tempfile.o \ ++ time.o time_kern.o tlb.o trap_kern.o trap_user.o uaccess_user.o \ ++ um_arch.o umid.o user_util.o + + obj-$(CONFIG_BLK_DEV_INITRD) += initrd_kern.o initrd_user.o + obj-$(CONFIG_GPROF) += gprof_syms.o +@@ -24,43 +24,27 @@ + user-objs-$(CONFIG_TTY_LOG) += tty_log.o + + USER_OBJS := $(filter %_user.o,$(obj-y)) $(user-objs-y) config.o helper.o \ +- process.o tempfile.o time.o tty_log.o umid.o user_util.o user_syms.o ++ process.o tempfile.o time.o tty_log.o umid.o user_util.o + USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) + +-DMODULES-$(CONFIG_MODULES) = -D__CONFIG_MODULES__ +-DMODVERSIONS-$(CONFIG_MODVERSIONS) = -D__CONFIG_MODVERSIONS__ +- +- +-CFLAGS_user_syms.o = -D__AUTOCONF_INCLUDED__ $(DMODULES-y) $(DMODVERSIONS-y) \ +- -I/usr/include -I../include +- + CFLAGS_frame.o := $(patsubst -fomit-frame-pointer,,$(USER_CFLAGS)) + +-$(USER_OBJS) : %.o: %.c +- $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< +- + # This has to be separate because it needs be compiled with frame pointers + # regardless of how the rest of the kernel is built. + + $(obj)/frame.o: $(src)/frame.c + $(CC) $(CFLAGS_$(notdir $@)) -c -o $@ $< + +-QUOTE = 'my $$config=`cat $(TOPDIR)/.config`; $$config =~ s/"/\\"/g ; while() { $$_ =~ s/CONFIG/$$config/; print $$_ }' ++$(USER_OBJS) : %.o: %.c ++ $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< + +-$(obj)/config.c : $(src)/config.c.in $(TOPDIR)/.config +- $(PERL) -e $(QUOTE) < $(src)/config.c.in > $@ ++QUOTE = 'my $$config=`cat $(TOPDIR)/.config`; $$config =~ s/"/\\"/g ; $$config =~ s/\n/\\n"\n"/g ; while() { $$_ =~ s/CONFIG/$$config/; print $$_ }' + + $(obj)/config.o : $(obj)/config.c + +-clean: +- rm -f config.c +- for dir in $(subdir-y) ; do $(MAKE) -C $$dir clean; done +- +-modules: +- +-fastdep: +- +-dep: +- +-archmrproper: clean ++quiet_cmd_quote = QUOTE $@ ++cmd_quote = $(PERL) -e $(QUOTE) < $< > $@ + ++targets += config.c ++$(obj)/config.c : $(src)/config.c.in $(TOPDIR)/.config FORCE ++ $(call if_changed,quote) +Index: uml-2.6.7/arch/um/drivers/xterm_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/xterm_kern.c 2004-07-16 19:37:08.927667864 +0300 ++++ uml-2.6.7/arch/um/drivers/xterm_kern.c 2004-07-16 19:47:23.699208384 +0300 +@@ -5,9 +5,12 @@ + + #include "linux/errno.h" + #include "linux/slab.h" ++#include "linux/signal.h" ++#include "linux/interrupt.h" + #include "asm/semaphore.h" + #include "asm/irq.h" + #include "irq_user.h" ++#include "irq_kern.h" + #include "kern_util.h" + #include "os.h" + #include "xterm.h" +@@ -19,17 +22,18 @@ + int new_fd; + }; + +-static void xterm_interrupt(int irq, void *data, struct pt_regs *regs) ++static irqreturn_t xterm_interrupt(int irq, void *data, struct pt_regs *regs) + { + struct xterm_wait *xterm = data; + int fd; + + fd = os_rcv_fd(xterm->fd, &xterm->pid); + if(fd == -EAGAIN) +- return; ++ return(IRQ_NONE); + + xterm->new_fd = fd; + up(&xterm->sem); ++ return(IRQ_HANDLED); + } + + int xterm_fd(int socket, int *pid_out) +@@ -54,7 +58,8 @@ + if(err){ + printk(KERN_ERR "xterm_fd : failed to get IRQ for xterm, " + "err = %d\n", err); +- return(err); ++ ret = err; ++ goto out; + } + down(&data->sem); + +@@ -62,6 +67,7 @@ + + ret = data->new_fd; + *pid_out = data->pid; + out: -+ return(ERR_PTR(n)); -+} + kfree(data); + + return(ret); +Index: uml-2.6.7/arch/um/drivers/cow.h +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/cow.h 2004-07-16 19:47:23.607222368 +0300 ++++ uml-2.6.7/arch/um/drivers/cow.h 2004-07-16 19:47:23.678211576 +0300 +@@ -0,0 +1,41 @@ ++#ifndef __COW_H__ ++#define __COW_H__ + -+static int read_inode(struct inode *ino) -+{ -+ char *name; -+ int err = 0; ++#include + -+ /* Unfortunately, we are called from iget() when we don't have a dentry -+ * allocated yet. -+ */ -+ if(list_empty(&ino->i_dentry)) -+ goto out; -+ -+ err = -ENOMEM; -+ name = inode_name(ino, 0); -+ if(name == NULL) -+ goto out; ++#if __BYTE_ORDER == __BIG_ENDIAN ++# define ntohll(x) (x) ++# define htonll(x) (x) ++#elif __BYTE_ORDER == __LITTLE_ENDIAN ++# define ntohll(x) bswap_64(x) ++# define htonll(x) bswap_64(x) ++#else ++#error "__BYTE_ORDER not defined" ++#endif + -+ if(file_type(name, NULL) == OS_TYPE_SYMLINK){ -+ name = follow_link(name); -+ if(IS_ERR(name)){ -+ err = PTR_ERR(name); -+ goto out; -+ } -+ } -+ -+ err = read_name(ino, name); -+ kfree(name); -+ out: -+ return(err); -+} ++extern int init_cow_file(int fd, char *cow_file, char *backing_file, ++ int sectorsize, int alignment, int *bitmap_offset_out, ++ unsigned long *bitmap_len_out, int *data_offset_out); + -+int hostfs_statfs(struct super_block *sb, struct kstatfs *sf) -+{ -+ /* do_statfs uses struct statfs64 internally, but the linux kernel -+ * struct statfs still has 32-bit versions for most of these fields, -+ * so we convert them here -+ */ -+ int err; -+ long long f_blocks; -+ long long f_bfree; -+ long long f_bavail; -+ long long f_files; -+ long long f_ffree; ++extern int file_reader(__u64 offset, char *buf, int len, void *arg); ++extern int read_cow_header(int (*reader)(__u64, char *, int, void *), ++ void *arg, __u32 *version_out, ++ char **backing_file_out, time_t *mtime_out, ++ __u64 *size_out, int *sectorsize_out, ++ __u32 *align_out, int *bitmap_offset_out); + -+ err = do_statfs(HOSTFS_I(sb->s_root->d_inode)->host_filename, -+ &sf->f_bsize, &f_blocks, &f_bfree, &f_bavail, &f_files, -+ &f_ffree, &sf->f_fsid, sizeof(sf->f_fsid), -+ &sf->f_namelen, sf->f_spare); -+ if(err) return(err); -+ sf->f_blocks = f_blocks; -+ sf->f_bfree = f_bfree; -+ sf->f_bavail = f_bavail; -+ sf->f_files = f_files; -+ sf->f_ffree = f_ffree; -+ sf->f_type = HOSTFS_SUPER_MAGIC; -+ return(0); -+} ++extern int write_cow_header(char *cow_file, int fd, char *backing_file, ++ int sectorsize, int alignment, long long *size); + -+static struct inode *hostfs_alloc_inode(struct super_block *sb) -+{ -+ struct hostfs_inode_info *hi; ++extern void cow_sizes(int version, __u64 size, int sectorsize, int align, ++ int bitmap_offset, unsigned long *bitmap_len_out, ++ int *data_offset_out); + -+ hi = kmalloc(sizeof(*hi), GFP_KERNEL); -+ if(hi == NULL) -+ return(NULL); ++#endif + -+ *hi = ((struct hostfs_inode_info) { .host_filename = NULL, -+ .fd = -1, -+ .mode = 0 }); -+ inode_init_once(&hi->vfs_inode); -+ return(&hi->vfs_inode); -+} ++/* ++ * --------------------------------------------------------------------------- ++ * Local variables: ++ * c-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/sys-ppc/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-ppc/Makefile 2004-07-16 19:36:37.299476080 +0300 ++++ uml-2.6.7/arch/um/sys-ppc/Makefile 2004-07-16 19:47:23.779196224 +0300 +@@ -66,13 +66,4 @@ + $(CC) $(EXTRA_AFLAGS) $(AFLAGS) -D__ASSEMBLY__ -D__UM_PPC__ -c $< -o $*.o + rm -f asm + +-clean: +- rm -f $(OBJS) +- rm -f ppc_defs.h +- rm -f checksum.S semaphore.c mk_defs.c +- +-fastdep: +- +-dep: +- +-modules: ++clean-files := $(OBJS) ppc_defs.h checksum.S semaphore.c mk_defs.c +Index: uml-2.6.7/arch/um/os-Linux/user_syms.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/user_syms.c 2004-07-16 19:47:23.629219024 +0300 ++++ uml-2.6.7/arch/um/os-Linux/user_syms.c 2004-07-16 19:47:23.769197744 +0300 +@@ -0,0 +1,88 @@ ++#include "linux/types.h" ++#include "linux/module.h" + -+static void hostfs_destroy_inode(struct inode *inode) -+{ -+ if(HOSTFS_I(inode)->host_filename) -+ kfree(HOSTFS_I(inode)->host_filename); ++/* Some of this are builtin function (some are not but could in the future), ++ * so I *must* declare good prototypes for them and then EXPORT them. ++ * The kernel code uses the macro defined by include/linux/string.h, ++ * so I undef macros; the userspace code does not include that and I ++ * add an EXPORT for the glibc one.*/ + -+ if(HOSTFS_I(inode)->fd != -1) -+ close_file(&HOSTFS_I(inode)->fd); ++#undef strlen ++#undef strstr ++#undef memcpy ++#undef memset + -+ kfree(HOSTFS_I(inode)); -+} ++extern size_t strlen(const char *); ++extern void *memcpy(void *, const void *, size_t); ++extern void *memset(void *, int, size_t); ++extern int printf(const char *, ...); + -+static void hostfs_read_inode(struct inode *inode) -+{ -+ read_inode(inode); -+} ++EXPORT_SYMBOL(strlen); ++EXPORT_SYMBOL(memcpy); ++EXPORT_SYMBOL(memset); ++EXPORT_SYMBOL(printf); + -+static struct super_operations hostfs_sbops = { -+ .alloc_inode = hostfs_alloc_inode, -+ .destroy_inode = hostfs_destroy_inode, -+ .read_inode = hostfs_read_inode, -+ .statfs = hostfs_statfs, -+}; ++EXPORT_SYMBOL(strstr); + -+int hostfs_readdir(struct file *file, void *ent, filldir_t filldir) -+{ -+ void *dir; -+ char *name; -+ unsigned long long next, ino; -+ int error, len; ++/* Here, instead, I can provide a fake prototype. Yes, someone cares: genksyms. ++ * However, the modules will use the CRC defined *here*, no matter if it is ++ * good; so the versions of these symbols will always match ++ */ ++#define EXPORT_SYMBOL_PROTO(sym) \ ++ int sym(void); \ ++ EXPORT_SYMBOL(sym); + -+ name = dentry_name(file->f_dentry, 0); -+ if(name == NULL) return(-ENOMEM); -+ dir = open_dir(name, &error); -+ kfree(name); -+ if(dir == NULL) return(-error); -+ next = file->f_pos; -+ while((name = read_dir(dir, &next, &ino, &len)) != NULL){ -+ error = (*filldir)(ent, name, len, file->f_pos, -+ ino, DT_UNKNOWN); -+ if(error) break; -+ file->f_pos = next; -+ } -+ close_dir(dir); -+ return(0); -+} ++EXPORT_SYMBOL_PROTO(__errno_location); + -+int hostfs_file_open(struct inode *ino, struct file *file) -+{ -+ char *name; -+ int mode = 0, r = 0, w = 0, fd; ++EXPORT_SYMBOL_PROTO(access); ++EXPORT_SYMBOL_PROTO(open); ++EXPORT_SYMBOL_PROTO(open64); ++EXPORT_SYMBOL_PROTO(close); ++EXPORT_SYMBOL_PROTO(read); ++EXPORT_SYMBOL_PROTO(write); ++EXPORT_SYMBOL_PROTO(dup2); ++EXPORT_SYMBOL_PROTO(__xstat); ++EXPORT_SYMBOL_PROTO(__lxstat); ++EXPORT_SYMBOL_PROTO(__lxstat64); ++EXPORT_SYMBOL_PROTO(lseek); ++EXPORT_SYMBOL_PROTO(lseek64); ++EXPORT_SYMBOL_PROTO(chown); ++EXPORT_SYMBOL_PROTO(truncate); ++EXPORT_SYMBOL_PROTO(utime); ++EXPORT_SYMBOL_PROTO(chmod); ++EXPORT_SYMBOL_PROTO(rename); ++EXPORT_SYMBOL_PROTO(__xmknod); + -+ mode = file->f_mode & (FMODE_READ | FMODE_WRITE); -+ if((mode & HOSTFS_I(ino)->mode) == mode) -+ return(0); ++EXPORT_SYMBOL_PROTO(symlink); ++EXPORT_SYMBOL_PROTO(link); ++EXPORT_SYMBOL_PROTO(unlink); ++EXPORT_SYMBOL_PROTO(readlink); + -+ /* The file may already have been opened, but with the wrong access, -+ * so this resets things and reopens the file with the new access. -+ */ -+ if(HOSTFS_I(ino)->fd != -1){ -+ close_file(&HOSTFS_I(ino)->fd); -+ HOSTFS_I(ino)->fd = -1; -+ } ++EXPORT_SYMBOL_PROTO(mkdir); ++EXPORT_SYMBOL_PROTO(rmdir); ++EXPORT_SYMBOL_PROTO(opendir); ++EXPORT_SYMBOL_PROTO(readdir); ++EXPORT_SYMBOL_PROTO(closedir); ++EXPORT_SYMBOL_PROTO(seekdir); ++EXPORT_SYMBOL_PROTO(telldir); + -+ HOSTFS_I(ino)->mode |= mode; -+ if(HOSTFS_I(ino)->mode & FMODE_READ) -+ r = 1; -+ if(HOSTFS_I(ino)->mode & FMODE_WRITE) -+ w = 1; -+ if(w) -+ r = 1; ++EXPORT_SYMBOL_PROTO(ioctl); + -+ name = dentry_name(file->f_dentry, 0); -+ if(name == NULL) -+ return(-ENOMEM); ++EXPORT_SYMBOL_PROTO(pread64); ++EXPORT_SYMBOL_PROTO(pwrite64); + -+ fd = open_file(name, r, w, append); -+ kfree(name); -+ if(fd < 0) return(fd); -+ FILE_HOSTFS_I(file)->fd = fd; ++EXPORT_SYMBOL_PROTO(statfs); ++EXPORT_SYMBOL_PROTO(statfs64); + -+ return(0); -+} ++EXPORT_SYMBOL_PROTO(getuid); + -+int hostfs_fsync(struct file *file, struct dentry *dentry, int datasync) -+{ -+ return(0); -+} ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/arch/um/include/irq_kern.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/irq_kern.h 2004-07-16 19:47:23.612221608 +0300 ++++ uml-2.6.7/arch/um/include/irq_kern.h 2004-07-16 19:47:23.701208080 +0300 +@@ -0,0 +1,28 @@ ++/* ++ * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Licensed under the GPL ++ */ + -+static struct file_operations hostfs_file_fops = { -+ .llseek = generic_file_llseek, -+ .read = generic_file_read, -+ .write = generic_file_write, -+ .mmap = generic_file_mmap, -+ .open = hostfs_file_open, -+ .release = NULL, -+ .fsync = hostfs_fsync, -+}; ++#ifndef __IRQ_KERN_H__ ++#define __IRQ_KERN_H__ + -+static struct file_operations hostfs_dir_fops = { -+ .readdir = hostfs_readdir, -+ .read = generic_read_dir, -+}; ++#include "linux/interrupt.h" + -+int hostfs_writepage(struct page *page, struct writeback_control *wbc) -+{ -+ struct address_space *mapping = page->mapping; -+ struct inode *inode = mapping->host; -+ char *buffer; -+ unsigned long long base; -+ int count = PAGE_CACHE_SIZE; -+ int end_index = inode->i_size >> PAGE_CACHE_SHIFT; -+ int err; ++extern int um_request_irq(unsigned int irq, int fd, int type, ++ irqreturn_t (*handler)(int, void *, ++ struct pt_regs *), ++ unsigned long irqflags, const char * devname, ++ void *dev_id); + -+ if (page->index >= end_index) -+ count = inode->i_size & (PAGE_CACHE_SIZE-1); ++#endif + -+ buffer = kmap(page); -+ base = ((unsigned long long) page->index) << PAGE_CACHE_SHIFT; ++/* ++ * 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-file-style: "linux" ++ * End: ++ */ +Index: uml-2.6.7/fs/hppfs/hppfs_kern.c +=================================================================== +--- uml-2.6.7.orig/fs/hppfs/hppfs_kern.c 2004-07-16 19:47:23.632218568 +0300 ++++ uml-2.6.7/fs/hppfs/hppfs_kern.c 2004-07-16 19:47:23.785195312 +0300 +@@ -0,0 +1,811 @@ ++/* ++ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Licensed under the GPL ++ */ + -+ err = write_file(HOSTFS_I(inode)->fd, &base, buffer, count); -+ if(err != count){ -+ ClearPageUptodate(page); -+ goto out; -+ } ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "os.h" + -+ if (base > inode->i_size) -+ inode->i_size = base; ++static int init_inode(struct inode *inode, struct dentry *dentry); + -+ if (PageError(page)) -+ ClearPageError(page); -+ err = 0; ++struct hppfs_data { ++ struct list_head list; ++ char contents[PAGE_SIZE - sizeof(struct list_head)]; ++}; + -+ out: -+ kunmap(page); ++struct hppfs_private { ++ struct file proc_file; ++ int host_fd; ++ loff_t len; ++ struct hppfs_data *contents; ++}; + -+ unlock_page(page); -+ return err; -+} ++struct hppfs_inode_info { ++ struct dentry *proc_dentry; ++ struct inode vfs_inode; ++}; + -+int hostfs_readpage(struct file *file, struct page *page) ++static inline struct hppfs_inode_info *HPPFS_I(struct inode *inode) +{ -+ char *buffer; -+ long long start; -+ int err = 0; -+ -+ start = (long long) page->index << PAGE_CACHE_SHIFT; -+ buffer = kmap(page); -+ err = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer, -+ PAGE_CACHE_SIZE); -+ if(err < 0) goto out; ++ return(list_entry(inode, struct hppfs_inode_info, vfs_inode)); ++} + -+ memset(&buffer[err], 0, PAGE_CACHE_SIZE - err); ++#define HPPFS_SUPER_MAGIC 0xb00000ee + -+ flush_dcache_page(page); -+ SetPageUptodate(page); -+ if (PageError(page)) ClearPageError(page); -+ err = 0; -+ out: -+ kunmap(page); -+ unlock_page(page); -+ return(err); -+} ++static struct super_operations hppfs_sbops; + -+int hostfs_prepare_write(struct file *file, struct page *page, -+ unsigned int from, unsigned int to) ++static int is_pid(struct dentry *dentry) +{ -+ char *buffer; -+ long long start, tmp; -+ int err; ++ struct super_block *sb; ++ int i; + -+ start = (long long) page->index << PAGE_CACHE_SHIFT; -+ buffer = kmap(page); -+ if(from != 0){ -+ tmp = start; -+ err = read_file(FILE_HOSTFS_I(file)->fd, &tmp, buffer, -+ from); -+ if(err < 0) goto out; -+ } -+ if(to != PAGE_CACHE_SIZE){ -+ start += to; -+ err = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer + to, -+ PAGE_CACHE_SIZE - to); -+ if(err < 0) goto out; ++ sb = dentry->d_sb; ++ if((sb->s_op != &hppfs_sbops) || (dentry->d_parent != sb->s_root)) ++ return(0); ++ ++ for(i = 0; i < dentry->d_name.len; i++){ ++ if(!isdigit(dentry->d_name.name[i])) ++ return(0); + } -+ err = 0; -+ out: -+ kunmap(page); -+ return(err); ++ return(1); +} + -+int hostfs_commit_write(struct file *file, struct page *page, unsigned from, -+ unsigned to) ++static char *dentry_name(struct dentry *dentry, int extra) +{ -+ struct address_space *mapping = page->mapping; -+ struct inode *inode = mapping->host; -+ char *buffer; -+ long long start; -+ int err = 0; ++ struct dentry *parent; ++ char *root, *name; ++ const char *seg_name; ++ int len, seg_len; + -+ start = (long long) (page->index << PAGE_CACHE_SHIFT) + from; -+ buffer = kmap(page); -+ err = write_file(FILE_HOSTFS_I(file)->fd, &start, buffer + from, -+ to - from); -+ if(err > 0) err = 0; -+ if(!err && (start > inode->i_size)) -+ inode->i_size = start; ++ len = 0; ++ parent = dentry; ++ while(parent->d_parent != parent){ ++ if(is_pid(parent)) ++ len += strlen("pid") + 1; ++ else len += parent->d_name.len + 1; ++ parent = parent->d_parent; ++ } ++ ++ root = "proc"; ++ len += strlen(root); ++ name = kmalloc(len + extra + 1, GFP_KERNEL); ++ if(name == NULL) return(NULL); + -+ kunmap(page); -+ return(err); ++ name[len] = '\0'; ++ parent = dentry; ++ while(parent->d_parent != parent){ ++ if(is_pid(parent)){ ++ seg_name = "pid"; ++ seg_len = strlen("pid"); ++ } ++ else { ++ seg_name = parent->d_name.name; ++ seg_len = parent->d_name.len; ++ } ++ ++ len -= seg_len + 1; ++ name[len] = '/'; ++ strncpy(&name[len + 1], seg_name, seg_len); ++ parent = parent->d_parent; ++ } ++ strncpy(name, root, strlen(root)); ++ return(name); +} + -+static struct address_space_operations hostfs_aops = { -+ .writepage = hostfs_writepage, -+ .readpage = hostfs_readpage, -+/* .set_page_dirty = __set_page_dirty_nobuffers, */ -+ .prepare_write = hostfs_prepare_write, -+ .commit_write = hostfs_commit_write ++struct dentry_operations hppfs_dentry_ops = { +}; + -+static int init_inode(struct inode *inode, struct dentry *dentry) ++static int file_removed(struct dentry *dentry, const char *file) +{ -+ char *name; -+ int type, err = -ENOMEM, rdev; -+ -+ if(dentry){ -+ name = dentry_name(dentry, 0); -+ if(name == NULL) -+ goto out; -+ type = file_type(name, &rdev); -+ kfree(name); -+ } -+ else type = OS_TYPE_DIR; ++ char *host_file; ++ int extra, fd; + -+ err = 0; -+ if(type == OS_TYPE_SYMLINK) -+ inode->i_op = &page_symlink_inode_operations; -+ else if(type == OS_TYPE_DIR) -+ inode->i_op = &hostfs_dir_iops; -+ else inode->i_op = &hostfs_iops; ++ extra = 0; ++ if(file != NULL) extra += strlen(file) + 1; + -+ if(type == OS_TYPE_DIR) inode->i_fop = &hostfs_dir_fops; -+ else inode->i_fop = &hostfs_file_fops; ++ host_file = dentry_name(dentry, extra + strlen("/remove")); ++ if(host_file == NULL){ ++ printk("file_removed : allocation failed\n"); ++ return(-ENOMEM); ++ } + -+ if(type == OS_TYPE_SYMLINK) -+ inode->i_mapping->a_ops = &hostfs_link_aops; -+ else inode->i_mapping->a_ops = &hostfs_aops; ++ if(file != NULL){ ++ strcat(host_file, "/"); ++ strcat(host_file, file); ++ } ++ strcat(host_file, "/remove"); + -+ switch (type) { -+ case OS_TYPE_CHARDEV: -+ init_special_inode(inode, S_IFCHR, rdev); -+ break; -+ case OS_TYPE_BLOCKDEV: -+ init_special_inode(inode, S_IFBLK, rdev); -+ break; -+ case OS_TYPE_FIFO: -+ init_special_inode(inode, S_IFIFO, 0); -+ break; -+ case OS_TYPE_SOCK: -+ init_special_inode(inode, S_IFSOCK, 0); -+ break; ++ fd = os_open_file(host_file, of_read(OPENFLAGS()), 0); ++ kfree(host_file); ++ if(fd > 0){ ++ os_close_file(fd); ++ return(1); + } -+ out: -+ return(err); ++ return(0); +} + -+int hostfs_create(struct inode *dir, struct dentry *dentry, int mode, -+ struct nameidata *nd) ++static void hppfs_read_inode(struct inode *ino) +{ -+ struct inode *inode; -+ char *name; -+ int error, fd; -+ -+ error = -ENOMEM; -+ inode = iget(dir->i_sb, 0); -+ if(inode == NULL) goto out; -+ -+ error = init_inode(inode, dentry); -+ if(error) -+ goto out_put; -+ -+ error = -ENOMEM; -+ name = dentry_name(dentry, 0); -+ if(name == NULL) -+ goto out_put; -+ -+ fd = file_create(name, -+ mode & S_IRUSR, mode & S_IWUSR, mode & S_IXUSR, -+ mode & S_IRGRP, mode & S_IWGRP, mode & S_IXGRP, -+ mode & S_IROTH, mode & S_IWOTH, mode & S_IXOTH); -+ if(fd < 0) -+ error = fd; -+ else error = read_name(inode, name); -+ -+ kfree(name); -+ if(error) -+ goto out_put; ++ struct inode *proc_ino; + -+ HOSTFS_I(inode)->fd = fd; -+ HOSTFS_I(inode)->mode = FMODE_READ | FMODE_WRITE; -+ d_instantiate(dentry, inode); -+ return(0); ++ if(HPPFS_I(ino)->proc_dentry == NULL) ++ return; + -+ out_put: -+ iput(inode); -+ out: -+ return(error); ++ proc_ino = HPPFS_I(ino)->proc_dentry->d_inode; ++ ino->i_uid = proc_ino->i_uid; ++ ino->i_gid = proc_ino->i_gid; ++ ino->i_atime = proc_ino->i_atime; ++ ino->i_mtime = proc_ino->i_mtime; ++ ino->i_ctime = proc_ino->i_ctime; ++ ino->i_ino = proc_ino->i_ino; ++ ino->i_mode = proc_ino->i_mode; ++ ino->i_nlink = proc_ino->i_nlink; ++ ino->i_size = proc_ino->i_size; ++ ino->i_blksize = proc_ino->i_blksize; ++ ino->i_blocks = proc_ino->i_blocks; +} + -+struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry, -+ struct nameidata *nd) ++static struct dentry *hppfs_lookup(struct inode *ino, struct dentry *dentry, ++ struct nameidata *nd) +{ ++ struct dentry *proc_dentry, *new, *parent; + struct inode *inode; -+ char *name; -+ int err; ++ int err, deleted; + -+ err = -ENOMEM; -+ inode = iget(ino->i_sb, 0); -+ if(inode == NULL) -+ goto out; -+ -+ err = init_inode(inode, dentry); -+ if(err) -+ goto out_put; ++ deleted = file_removed(dentry, NULL); ++ if(deleted < 0) ++ return(ERR_PTR(deleted)); ++ else if(deleted) ++ return(ERR_PTR(-ENOENT)); + + err = -ENOMEM; -+ name = dentry_name(dentry, 0); -+ if(name == NULL) -+ goto out_put; -+ -+ err = read_name(inode, name); -+ kfree(name); -+ if(err == -ENOENT){ -+ iput(inode); -+ inode = NULL; ++ parent = HPPFS_I(ino)->proc_dentry; ++ down(&parent->d_inode->i_sem); ++ proc_dentry = d_lookup(parent, &dentry->d_name); ++ if(proc_dentry == NULL){ ++ proc_dentry = d_alloc(parent, &dentry->d_name); ++ if(proc_dentry == NULL){ ++ up(&parent->d_inode->i_sem); ++ goto out; ++ } ++ new = (*parent->d_inode->i_op->lookup)(parent->d_inode, ++ proc_dentry, NULL); ++ if(new){ ++ dput(proc_dentry); ++ proc_dentry = new; ++ } + } -+ else if(err) ++ up(&parent->d_inode->i_sem); ++ ++ if(IS_ERR(proc_dentry)) ++ return(proc_dentry); ++ ++ inode = iget(ino->i_sb, 0); ++ if(inode == NULL) ++ goto out_dput; ++ ++ err = init_inode(inode, proc_dentry); ++ if(err) + goto out_put; ++ ++ hppfs_read_inode(inode); + -+ d_add(dentry, inode); -+ dentry->d_op = &hostfs_dentry_ops; ++ d_add(dentry, inode); ++ dentry->d_op = &hppfs_dentry_ops; + return(NULL); + + out_put: + iput(inode); ++ out_dput: ++ dput(proc_dentry); + out: + return(ERR_PTR(err)); +} + -+static char *inode_dentry_name(struct inode *ino, struct dentry *dentry) ++static struct inode_operations hppfs_file_iops = { ++}; ++ ++static ssize_t read_proc(struct file *file, char *buf, ssize_t count, ++ loff_t *ppos, int is_user) +{ -+ char *file; -+ int len; ++ ssize_t (*read)(struct file *, char *, size_t, loff_t *); ++ ssize_t n; + -+ file = inode_name(ino, dentry->d_name.len + 1); -+ if(file == NULL) return(NULL); -+ strcat(file, "/"); -+ len = strlen(file); -+ strncat(file, dentry->d_name.name, dentry->d_name.len); -+ file[len + dentry->d_name.len] = '\0'; -+ return(file); ++ read = file->f_dentry->d_inode->i_fop->read; ++ ++ if(!is_user) ++ set_fs(KERNEL_DS); ++ ++ n = (*read)(file, buf, count, &file->f_pos); ++ ++ if(!is_user) ++ set_fs(USER_DS); ++ ++ if(ppos) *ppos = file->f_pos; ++ return(n); +} + -+int hostfs_link(struct dentry *to, struct inode *ino, struct dentry *from) ++static ssize_t hppfs_read_file(int fd, char *buf, ssize_t count) +{ -+ char *from_name, *to_name; -+ int err; ++ ssize_t n; ++ int cur, err; ++ char *new_buf; + -+ if((from_name = inode_dentry_name(ino, from)) == NULL) -+ return(-ENOMEM); -+ to_name = dentry_name(to, 0); -+ if(to_name == NULL){ -+ kfree(from_name); -+ return(-ENOMEM); ++ n = -ENOMEM; ++ new_buf = kmalloc(PAGE_SIZE, GFP_KERNEL); ++ if(new_buf == NULL){ ++ printk("hppfs_read_file : kmalloc failed\n"); ++ goto out; + } -+ err = link_file(to_name, from_name); -+ kfree(from_name); -+ kfree(to_name); -+ return(err); ++ n = 0; ++ while(count > 0){ ++ cur = min_t(ssize_t, count, PAGE_SIZE); ++ err = os_read_file(fd, new_buf, cur); ++ if(err < 0){ ++ printk("hppfs_read : read failed, errno = %d\n", ++ count); ++ n = err; ++ goto out_free; ++ } ++ else if(err == 0) ++ break; ++ ++ if(copy_to_user(buf, new_buf, err)){ ++ n = -EFAULT; ++ goto out_free; ++ } ++ n += err; ++ count -= err; ++ } ++ out_free: ++ kfree(new_buf); ++ out: ++ return(n); +} + -+int hostfs_unlink(struct inode *ino, struct dentry *dentry) ++static ssize_t hppfs_read(struct file *file, char *buf, size_t count, ++ loff_t *ppos) +{ -+ char *file; ++ struct hppfs_private *hppfs = file->private_data; ++ struct hppfs_data *data; ++ loff_t off; + int err; + -+ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); -+ if(append) -+ return(-EPERM); ++ if(hppfs->contents != NULL){ ++ if(*ppos >= hppfs->len) return(0); + -+ err = unlink_file(file); -+ kfree(file); -+ return(err); -+} ++ data = hppfs->contents; ++ off = *ppos; ++ while(off >= sizeof(data->contents)){ ++ data = list_entry(data->list.next, struct hppfs_data, ++ list); ++ off -= sizeof(data->contents); ++ } + -+int hostfs_symlink(struct inode *ino, struct dentry *dentry, const char *to) -+{ -+ char *file; -+ int err; ++ if(off + count > hppfs->len) ++ count = hppfs->len - off; ++ copy_to_user(buf, &data->contents[off], count); ++ *ppos += count; ++ } ++ else if(hppfs->host_fd != -1){ ++ err = os_seek_file(hppfs->host_fd, *ppos); ++ if(err){ ++ printk("hppfs_read : seek failed, errno = %d\n", err); ++ return(err); ++ } ++ count = hppfs_read_file(hppfs->host_fd, buf, count); ++ if(count > 0) ++ *ppos += count; ++ } ++ else count = read_proc(&hppfs->proc_file, buf, count, ppos, 1); + -+ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); -+ err = make_symlink(file, to); -+ kfree(file); -+ return(err); ++ return(count); +} + -+int hostfs_mkdir(struct inode *ino, struct dentry *dentry, int mode) ++static ssize_t hppfs_write(struct file *file, const char *buf, size_t len, ++ loff_t *ppos) +{ -+ char *file; ++ struct hppfs_private *data = file->private_data; ++ struct file *proc_file = &data->proc_file; ++ ssize_t (*write)(struct file *, const char *, size_t, loff_t *); + int err; + -+ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); -+ err = do_mkdir(file, mode); -+ kfree(file); ++ write = proc_file->f_dentry->d_inode->i_fop->write; ++ ++ proc_file->f_pos = file->f_pos; ++ err = (*write)(proc_file, buf, len, &proc_file->f_pos); ++ file->f_pos = proc_file->f_pos; ++ + return(err); +} + -+int hostfs_rmdir(struct inode *ino, struct dentry *dentry) ++static int open_host_sock(char *host_file, int *filter_out) +{ -+ char *file; -+ int err; ++ char *end; ++ int fd; + -+ if((file = inode_dentry_name(ino, dentry)) == NULL) return(-ENOMEM); -+ err = do_rmdir(file); -+ kfree(file); -+ return(err); ++ end = &host_file[strlen(host_file)]; ++ strcpy(end, "/rw"); ++ *filter_out = 1; ++ fd = os_connect_socket(host_file); ++ if(fd > 0) ++ return(fd); ++ ++ strcpy(end, "/r"); ++ *filter_out = 0; ++ fd = os_connect_socket(host_file); ++ return(fd); +} + -+int hostfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) ++static void free_contents(struct hppfs_data *head) +{ -+ struct inode *inode; -+ char *name; -+ int err = -ENOMEM; -+ -+ inode = iget(dir->i_sb, 0); -+ if(inode == NULL) -+ goto out; ++ struct hppfs_data *data; ++ struct list_head *ele, *next; + -+ err = init_inode(inode, dentry); -+ if(err) -+ goto out_put; ++ if(head == NULL) return; + -+ err = -ENOMEM; -+ name = dentry_name(dentry, 0); -+ if(name == NULL) -+ goto out_put; ++ list_for_each_safe(ele, next, &head->list){ ++ data = list_entry(ele, struct hppfs_data, list); ++ kfree(data); ++ } ++ kfree(head); ++} + -+ init_special_inode(inode, mode, dev); -+ err = do_mknod(name, mode, dev); -+ if(err) -+ goto out_free; ++static struct hppfs_data *hppfs_get_data(int fd, int filter, ++ struct file *proc_file, ++ struct file *hppfs_file, ++ loff_t *size_out) ++{ ++ struct hppfs_data *data, *new, *head; ++ int n, err; + -+ err = read_name(inode, name); -+ kfree(name); -+ if(err) -+ goto out_put; ++ err = -ENOMEM; ++ data = kmalloc(sizeof(*data), GFP_KERNEL); ++ if(data == NULL){ ++ printk("hppfs_get_data : head allocation failed\n"); ++ goto failed; ++ } + -+ d_instantiate(dentry, inode); -+ return(0); ++ INIT_LIST_HEAD(&data->list); + -+ out_free: -+ kfree(name); -+ out_put: -+ iput(inode); -+ out: -+ return(err); -+} ++ head = data; ++ *size_out = 0; + -+int hostfs_rename(struct inode *from_ino, struct dentry *from, -+ struct inode *to_ino, struct dentry *to) -+{ -+ char *from_name, *to_name; -+ int err; ++ if(filter){ ++ while((n = read_proc(proc_file, data->contents, ++ sizeof(data->contents), NULL, 0)) > 0) ++ os_write_file(fd, data->contents, n); ++ err = os_shutdown_socket(fd, 0, 1); ++ if(err){ ++ printk("hppfs_get_data : failed to shut down " ++ "socket\n"); ++ goto failed_free; ++ } ++ } ++ while(1){ ++ n = os_read_file(fd, data->contents, sizeof(data->contents)); ++ if(n < 0){ ++ err = n; ++ printk("hppfs_get_data : read failed, errno = %d\n", ++ err); ++ goto failed_free; ++ } ++ else if(n == 0) ++ break; + -+ if((from_name = inode_dentry_name(from_ino, from)) == NULL) -+ return(-ENOMEM); -+ if((to_name = inode_dentry_name(to_ino, to)) == NULL){ -+ kfree(from_name); -+ return(-ENOMEM); -+ } -+ err = rename_file(from_name, to_name); -+ kfree(from_name); -+ kfree(to_name); -+ return(err); -+} ++ *size_out += n; + -+void hostfs_truncate(struct inode *ino) -+{ -+ not_implemented(); -+} ++ if(n < sizeof(data->contents)) ++ break; + -+int hostfs_permission(struct inode *ino, int desired, struct nameidata *nd) -+{ -+ char *name; -+ int r = 0, w = 0, x = 0, err; ++ new = kmalloc(sizeof(*data), GFP_KERNEL); ++ if(new == 0){ ++ printk("hppfs_get_data : data allocation failed\n"); ++ err = -ENOMEM; ++ goto failed_free; ++ } ++ ++ INIT_LIST_HEAD(&new->list); ++ list_add(&new->list, &data->list); ++ data = new; ++ } ++ return(head); + -+ if(desired & MAY_READ) r = 1; -+ if(desired & MAY_WRITE) w = 1; -+ if(desired & MAY_EXEC) x = 1; -+ name = inode_name(ino, 0); -+ if(name == NULL) return(-ENOMEM); -+ err = access_file(name, r, w, x); -+ kfree(name); -+ if(!err) err = vfs_permission(ino, desired); -+ return(err); ++ failed_free: ++ free_contents(head); ++ failed: ++ return(ERR_PTR(err)); +} + -+int hostfs_setattr(struct dentry *dentry, struct iattr *attr) ++static struct hppfs_private *hppfs_data(void) +{ -+ struct hostfs_iattr attrs; -+ char *name; -+ int err; -+ -+ if(append) -+ attr->ia_valid &= ~ATTR_SIZE; ++ struct hppfs_private *data; + -+ attrs.ia_valid = 0; -+ if(attr->ia_valid & ATTR_MODE){ -+ attrs.ia_valid |= HOSTFS_ATTR_MODE; -+ attrs.ia_mode = attr->ia_mode; -+ } -+ if(attr->ia_valid & ATTR_UID){ -+ if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) && -+ (attr->ia_uid == 0)) -+ attr->ia_uid = getuid(); -+ attrs.ia_valid |= HOSTFS_ATTR_UID; -+ attrs.ia_uid = attr->ia_uid; -+ } -+ if(attr->ia_valid & ATTR_GID){ -+ if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) && -+ (attr->ia_gid == 0)) -+ attr->ia_gid = getuid(); -+ attrs.ia_valid |= HOSTFS_ATTR_GID; -+ attrs.ia_gid = attr->ia_gid; -+ } -+ if(attr->ia_valid & ATTR_SIZE){ -+ attrs.ia_valid |= HOSTFS_ATTR_SIZE; -+ attrs.ia_size = attr->ia_size; -+ } -+ if(attr->ia_valid & ATTR_ATIME){ -+ attrs.ia_valid |= HOSTFS_ATTR_ATIME; -+ attrs.ia_atime = attr->ia_atime; -+ } -+ if(attr->ia_valid & ATTR_MTIME){ -+ attrs.ia_valid |= HOSTFS_ATTR_MTIME; -+ attrs.ia_mtime = attr->ia_mtime; -+ } -+ if(attr->ia_valid & ATTR_CTIME){ -+ attrs.ia_valid |= HOSTFS_ATTR_CTIME; -+ attrs.ia_ctime = attr->ia_ctime; -+ } -+ if(attr->ia_valid & ATTR_ATIME_SET){ -+ attrs.ia_valid |= HOSTFS_ATTR_ATIME_SET; -+ } -+ if(attr->ia_valid & ATTR_MTIME_SET){ -+ attrs.ia_valid |= HOSTFS_ATTR_MTIME_SET; -+ } -+ name = dentry_name(dentry, 0); -+ if(name == NULL) return(-ENOMEM); -+ err = set_attr(name, &attrs); -+ kfree(name); -+ if(err) -+ return(err); ++ data = kmalloc(sizeof(*data), GFP_KERNEL); ++ if(data == NULL) ++ return(data); + -+ return(inode_setattr(dentry->d_inode, attr)); ++ *data = ((struct hppfs_private ) { .host_fd = -1, ++ .len = -1, ++ .contents = NULL } ); ++ return(data); +} + -+int hostfs_getattr(struct vfsmount *mnt, struct dentry *dentry, -+ struct kstat *stat) ++static int file_mode(int fmode) +{ -+ generic_fillattr(dentry->d_inode, stat); ++ if(fmode == (FMODE_READ | FMODE_WRITE)) ++ return(O_RDWR); ++ if(fmode == FMODE_READ) ++ return(O_RDONLY); ++ if(fmode == FMODE_WRITE) ++ return(O_WRONLY); + return(0); +} + -+static struct inode_operations hostfs_iops = { -+ .create = hostfs_create, -+ .link = hostfs_link, -+ .unlink = hostfs_unlink, -+ .symlink = hostfs_symlink, -+ .mkdir = hostfs_mkdir, -+ .rmdir = hostfs_rmdir, -+ .mknod = hostfs_mknod, -+ .rename = hostfs_rename, -+ .truncate = hostfs_truncate, -+ .permission = hostfs_permission, -+ .setattr = hostfs_setattr, -+ .getattr = hostfs_getattr, -+}; -+ -+static struct inode_operations hostfs_dir_iops = { -+ .create = hostfs_create, -+ .lookup = hostfs_lookup, -+ .link = hostfs_link, -+ .unlink = hostfs_unlink, -+ .symlink = hostfs_symlink, -+ .mkdir = hostfs_mkdir, -+ .rmdir = hostfs_rmdir, -+ .mknod = hostfs_mknod, -+ .rename = hostfs_rename, -+ .truncate = hostfs_truncate, -+ .permission = hostfs_permission, -+ .setattr = hostfs_setattr, -+ .getattr = hostfs_getattr, -+}; -+ -+int hostfs_link_readpage(struct file *file, struct page *page) ++static int hppfs_open(struct inode *inode, struct file *file) +{ -+ char *buffer, *name; -+ long long start; -+ int err; -+ -+ start = page->index << PAGE_CACHE_SHIFT; -+ buffer = kmap(page); -+ name = inode_name(page->mapping->host, 0); -+ if(name == NULL) return(-ENOMEM); -+ err = do_readlink(name, buffer, PAGE_CACHE_SIZE); -+ kfree(name); -+ if(err == PAGE_CACHE_SIZE) -+ err = -E2BIG; -+ else if(err > 0){ -+ flush_dcache_page(page); -+ SetPageUptodate(page); -+ if (PageError(page)) ClearPageError(page); -+ err = 0; -+ } -+ kunmap(page); -+ unlock_page(page); -+ return(err); -+} ++ struct hppfs_private *data; ++ struct dentry *proc_dentry; ++ char *host_file; ++ int err, fd, type, filter; + -+static struct address_space_operations hostfs_link_aops = { -+ .readpage = hostfs_link_readpage, -+}; ++ err = -ENOMEM; ++ data = hppfs_data(); ++ if(data == NULL) ++ goto out; + -+static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent) -+{ -+ struct inode *root_inode; -+ char *name, *data = d; -+ int err; ++ host_file = dentry_name(file->f_dentry, strlen("/rw")); ++ if(host_file == NULL) ++ goto out_free2; + -+ sb->s_blocksize = 1024; -+ sb->s_blocksize_bits = 10; -+ sb->s_magic = HOSTFS_SUPER_MAGIC; -+ sb->s_op = &hostfs_sbops; ++ proc_dentry = HPPFS_I(inode)->proc_dentry; + -+ if((data == NULL) || (*data == '\0')) -+ data = root_ino; ++ /* XXX This isn't closed anywhere */ ++ err = open_private_file(&data->proc_file, proc_dentry, ++ file_mode(file->f_mode)); ++ if(err) ++ goto out_free1; + -+ err = -ENOMEM; -+ name = kmalloc(strlen(data) + 1, GFP_KERNEL); -+ if(name == NULL) -+ goto out; ++ type = os_file_type(host_file); ++ if(type == OS_TYPE_FILE){ ++ fd = os_open_file(host_file, of_read(OPENFLAGS()), 0); ++ if(fd >= 0) ++ data->host_fd = fd; ++ else printk("hppfs_open : failed to open '%s', errno = %d\n", ++ host_file, -fd); + -+ strcpy(name, data); ++ data->contents = NULL; ++ } ++ else if(type == OS_TYPE_DIR){ ++ fd = open_host_sock(host_file, &filter); ++ if(fd > 0){ ++ data->contents = hppfs_get_data(fd, filter, ++ &data->proc_file, ++ file, &data->len); ++ if(!IS_ERR(data->contents)) ++ data->host_fd = fd; ++ } ++ else printk("hppfs_open : failed to open a socket in " ++ "'%s', errno = %d\n", host_file, -fd); ++ } ++ kfree(host_file); + -+ root_inode = iget(sb, 0); -+ if(root_inode == NULL) -+ goto out_free; ++ file->private_data = data; ++ return(0); + -+ err = init_inode(root_inode, NULL); -+ if(err) -+ goto out_put; ++ out_free1: ++ kfree(host_file); ++ out_free2: ++ free_contents(data->contents); ++ kfree(data); ++ out: ++ return(err); ++} + -+ HOSTFS_I(root_inode)->host_filename = name; ++static int hppfs_dir_open(struct inode *inode, struct file *file) ++{ ++ struct hppfs_private *data; ++ struct dentry *proc_dentry; ++ int err; + + err = -ENOMEM; -+ sb->s_root = d_alloc_root(root_inode); -+ if(sb->s_root == NULL) -+ goto out_put; ++ data = hppfs_data(); ++ if(data == NULL) ++ goto out; + -+ err = read_inode(root_inode); ++ proc_dentry = HPPFS_I(inode)->proc_dentry; ++ err = open_private_file(&data->proc_file, proc_dentry, ++ file_mode(file->f_mode)); + if(err) -+ goto out_put; ++ goto out_free; + ++ file->private_data = data; + return(0); + -+ out_put: -+ iput(root_inode); + out_free: -+ kfree(name); ++ kfree(data); + out: + return(err); +} + -+static struct super_block *hostfs_read_sb(struct file_system_type *type, -+ int flags, const char *dev_name, -+ void *data) ++static loff_t hppfs_llseek(struct file *file, loff_t off, int where) +{ -+ return(get_sb_nodev(type, flags, data, hostfs_fill_sb_common)); -+} -+ -+static struct file_system_type hostfs_type = { -+ .owner = THIS_MODULE, -+ .name = "hostfs", -+ .get_sb = hostfs_read_sb, -+ .kill_sb = kill_anon_super, -+ .fs_flags = 0, -+}; ++ struct hppfs_private *data = file->private_data; ++ struct file *proc_file = &data->proc_file; ++ loff_t (*llseek)(struct file *, loff_t, int); ++ loff_t ret; + -+static int __init init_hostfs(void) -+{ -+ return(register_filesystem(&hostfs_type)); -+} ++ llseek = proc_file->f_dentry->d_inode->i_fop->llseek; ++ if(llseek != NULL){ ++ ret = (*llseek)(proc_file, off, where); ++ if(ret < 0) ++ return(ret); ++ } + -+static void __exit exit_hostfs(void) -+{ -+ unregister_filesystem(&hostfs_type); ++ return(default_llseek(file, off, where)); +} + -+module_init(init_hostfs) -+module_exit(exit_hostfs) -+MODULE_LICENSE("GPL"); -+ -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/fs/hostfs/hostfs_user.c b/fs/hostfs/hostfs_user.c ---- a/fs/hostfs/hostfs_user.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hostfs/hostfs_user.c 2004-03-10 08:35:31.000000000 -0500 -@@ -0,0 +1,361 @@ -+/* -+ * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) -+ * Licensed under the GPL -+ */ ++static struct file_operations hppfs_file_fops = { ++ .owner = NULL, ++ .llseek = hppfs_llseek, ++ .read = hppfs_read, ++ .write = hppfs_write, ++ .open = hppfs_open, ++}; + -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "hostfs.h" -+#include "kern_util.h" -+#include "user.h" ++struct hppfs_dirent { ++ void *vfs_dirent; ++ filldir_t filldir; ++ struct dentry *dentry; ++}; + -+int stat_file(const char *path, unsigned long long *inode_out, int *mode_out, -+ int *nlink_out, int *uid_out, int *gid_out, -+ unsigned long long *size_out, struct timespec *atime_out, -+ struct timespec *mtime_out, struct timespec *ctime_out, -+ int *blksize_out, unsigned long long *blocks_out) ++static int hppfs_filldir(void *d, const char *name, int size, ++ loff_t offset, ino_t inode, unsigned int type) +{ -+ struct stat64 buf; ++ struct hppfs_dirent *dirent = d; + -+ if(lstat64(path, &buf) < 0) -+ return(-errno); ++ if(file_removed(dirent->dentry, name)) ++ return(0); + -+ /* See the Makefile for why STAT64_INO_FIELD is passed in -+ * by the build -+ */ -+ if(inode_out != NULL) *inode_out = buf.STAT64_INO_FIELD; -+ if(mode_out != NULL) *mode_out = buf.st_mode; -+ if(nlink_out != NULL) *nlink_out = buf.st_nlink; -+ if(uid_out != NULL) *uid_out = buf.st_uid; -+ if(gid_out != NULL) *gid_out = buf.st_gid; -+ if(size_out != NULL) *size_out = buf.st_size; -+ if(atime_out != NULL) { -+ atime_out->tv_sec = buf.st_atime; -+ atime_out->tv_nsec = 0; -+ } -+ if(mtime_out != NULL) { -+ mtime_out->tv_sec = buf.st_mtime; -+ mtime_out->tv_nsec = 0; -+ } -+ if(ctime_out != NULL) { -+ ctime_out->tv_sec = buf.st_ctime; -+ ctime_out->tv_nsec = 0; -+ } -+ if(blksize_out != NULL) *blksize_out = buf.st_blksize; -+ if(blocks_out != NULL) *blocks_out = buf.st_blocks; -+ return(0); ++ return((*dirent->filldir)(dirent->vfs_dirent, name, size, offset, ++ inode, type)); +} + -+int file_type(const char *path, int *rdev) ++static int hppfs_readdir(struct file *file, void *ent, filldir_t filldir) +{ -+ struct stat64 buf; ++ struct hppfs_private *data = file->private_data; ++ struct file *proc_file = &data->proc_file; ++ int (*readdir)(struct file *, void *, filldir_t); ++ struct hppfs_dirent dirent = ((struct hppfs_dirent) ++ { .vfs_dirent = ent, ++ .filldir = filldir, ++ .dentry = file->f_dentry } ); ++ int err; + -+ if(lstat64(path, &buf) < 0) -+ return(-errno); -+ if(rdev != NULL) -+ *rdev = buf.st_rdev; ++ readdir = proc_file->f_dentry->d_inode->i_fop->readdir; + -+ if(S_ISDIR(buf.st_mode)) return(OS_TYPE_DIR); -+ else if(S_ISLNK(buf.st_mode)) return(OS_TYPE_SYMLINK); -+ else if(S_ISCHR(buf.st_mode)) return(OS_TYPE_CHARDEV); -+ else if(S_ISBLK(buf.st_mode)) return(OS_TYPE_BLOCKDEV); -+ else if(S_ISFIFO(buf.st_mode))return(OS_TYPE_FIFO); -+ else if(S_ISSOCK(buf.st_mode))return(OS_TYPE_SOCK); -+ else return(OS_TYPE_FILE); ++ proc_file->f_pos = file->f_pos; ++ err = (*readdir)(proc_file, &dirent, hppfs_filldir); ++ file->f_pos = proc_file->f_pos; ++ ++ return(err); +} + -+int access_file(char *path, int r, int w, int x) ++static int hppfs_fsync(struct file *file, struct dentry *dentry, int datasync) +{ -+ int mode = 0; ++ return(0); ++} + -+ if(r) mode = R_OK; -+ if(w) mode |= W_OK; -+ if(x) mode |= X_OK; -+ if(access(path, mode) != 0) return(-errno); -+ else return(0); ++static struct file_operations hppfs_dir_fops = { ++ .owner = NULL, ++ .readdir = hppfs_readdir, ++ .open = hppfs_dir_open, ++ .fsync = hppfs_fsync, ++}; ++ ++static int hppfs_statfs(struct super_block *sb, struct kstatfs *sf) ++{ ++ sf->f_blocks = 0; ++ sf->f_bfree = 0; ++ sf->f_bavail = 0; ++ sf->f_files = 0; ++ sf->f_ffree = 0; ++ sf->f_type = HPPFS_SUPER_MAGIC; ++ return(0); +} + -+int open_file(char *path, int r, int w, int append) ++static struct inode *hppfs_alloc_inode(struct super_block *sb) +{ -+ int mode = 0, fd; ++ struct hppfs_inode_info *hi; + -+ if(r && !w) -+ mode = O_RDONLY; -+ else if(!r && w) -+ mode = O_WRONLY; -+ else if(r && w) -+ mode = O_RDWR; -+ else panic("Impossible mode in open_file"); ++ hi = kmalloc(sizeof(*hi), GFP_KERNEL); ++ if(hi == NULL) ++ return(NULL); + -+ if(append) -+ mode |= O_APPEND; -+ fd = open64(path, mode); -+ if(fd < 0) return(-errno); -+ else return(fd); ++ *hi = ((struct hppfs_inode_info) { .proc_dentry = NULL }); ++ inode_init_once(&hi->vfs_inode); ++ return(&hi->vfs_inode); +} + -+void *open_dir(char *path, int *err_out) ++void hppfs_delete_inode(struct inode *ino) +{ -+ DIR *dir; -+ -+ dir = opendir(path); -+ *err_out = errno; -+ if(dir == NULL) return(NULL); -+ return(dir); ++ clear_inode(ino); +} + -+char *read_dir(void *stream, unsigned long long *pos, -+ unsigned long long *ino_out, int *len_out) ++static void hppfs_destroy_inode(struct inode *inode) +{ -+ DIR *dir = stream; -+ struct dirent *ent; -+ -+ seekdir(dir, *pos); -+ ent = readdir(dir); -+ if(ent == NULL) return(NULL); -+ *len_out = strlen(ent->d_name); -+ *ino_out = ent->d_ino; -+ *pos = telldir(dir); -+ return(ent->d_name); ++ kfree(HPPFS_I(inode)); +} + -+int read_file(int fd, unsigned long long *offset, char *buf, int len) ++static struct super_operations hppfs_sbops = { ++ .alloc_inode = hppfs_alloc_inode, ++ .destroy_inode = hppfs_destroy_inode, ++ .read_inode = hppfs_read_inode, ++ .delete_inode = hppfs_delete_inode, ++ .statfs = hppfs_statfs, ++}; ++ ++static int hppfs_readlink(struct dentry *dentry, char *buffer, int buflen) +{ -+ int n; ++ struct file proc_file; ++ struct dentry *proc_dentry; ++ int (*readlink)(struct dentry *, char *, int); ++ int err, n; + -+ n = pread64(fd, buf, len, *offset); -+ if(n < 0) return(-errno); -+ *offset += n; -+ return(n); -+} ++ proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; ++ err = open_private_file(&proc_file, proc_dentry, O_RDONLY); ++ if(err) ++ return(err); + -+int write_file(int fd, unsigned long long *offset, const char *buf, int len) -+{ -+ int n; ++ readlink = proc_dentry->d_inode->i_op->readlink; ++ n = (*readlink)(proc_dentry, buffer, buflen); + -+ n = pwrite64(fd, buf, len, *offset); -+ if(n < 0) return(-errno); -+ *offset += n; ++ close_private_file(&proc_file); ++ + return(n); +} + -+int lseek_file(int fd, long long offset, int whence) ++static int hppfs_follow_link(struct dentry *dentry, struct nameidata *nd) +{ -+ int ret; ++ struct file proc_file; ++ struct dentry *proc_dentry; ++ int (*follow_link)(struct dentry *, struct nameidata *); ++ int err, n; + -+ ret = lseek64(fd, offset, whence); -+ if(ret < 0) return(-errno); -+ return(0); -+} ++ proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; ++ err = open_private_file(&proc_file, proc_dentry, O_RDONLY); ++ if(err) ++ return(err); + -+void close_file(void *stream) -+{ -+ close(*((int *) stream)); -+} ++ follow_link = proc_dentry->d_inode->i_op->follow_link; ++ n = (*follow_link)(proc_dentry, nd); + -+void close_dir(void *stream) -+{ -+ closedir(stream); ++ close_private_file(&proc_file); ++ ++ return(n); +} + -+int file_create(char *name, int ur, int uw, int ux, int gr, -+ int gw, int gx, int or, int ow, int ox) -+{ -+ int mode, fd; ++static struct inode_operations hppfs_dir_iops = { ++ .lookup = hppfs_lookup, ++}; + -+ mode = 0; -+ mode |= ur ? S_IRUSR : 0; -+ mode |= uw ? S_IWUSR : 0; -+ mode |= ux ? S_IXUSR : 0; -+ mode |= gr ? S_IRGRP : 0; -+ mode |= gw ? S_IWGRP : 0; -+ mode |= gx ? S_IXGRP : 0; -+ mode |= or ? S_IROTH : 0; -+ mode |= ow ? S_IWOTH : 0; -+ mode |= ox ? S_IXOTH : 0; -+ fd = open64(name, O_CREAT | O_RDWR, mode); -+ if(fd < 0) -+ return(-errno); -+ return(fd); -+} ++static struct inode_operations hppfs_link_iops = { ++ .readlink = hppfs_readlink, ++ .follow_link = hppfs_follow_link, ++}; + -+int set_attr(const char *file, struct hostfs_iattr *attrs) ++static int init_inode(struct inode *inode, struct dentry *dentry) +{ -+ struct utimbuf buf; -+ int err, ma; -+ -+ if(attrs->ia_valid & HOSTFS_ATTR_MODE){ -+ if(chmod(file, attrs->ia_mode) != 0) return(-errno); -+ } -+ if(attrs->ia_valid & HOSTFS_ATTR_UID){ -+ if(chown(file, attrs->ia_uid, -1)) return(-errno); -+ } -+ if(attrs->ia_valid & HOSTFS_ATTR_GID){ -+ if(chown(file, -1, attrs->ia_gid)) return(-errno); -+ } -+ if(attrs->ia_valid & HOSTFS_ATTR_SIZE){ -+ if(truncate(file, attrs->ia_size)) return(-errno); ++ if(S_ISDIR(dentry->d_inode->i_mode)){ ++ inode->i_op = &hppfs_dir_iops; ++ inode->i_fop = &hppfs_dir_fops; + } -+ ma = HOSTFS_ATTR_ATIME_SET | HOSTFS_ATTR_MTIME_SET; -+ if((attrs->ia_valid & ma) == ma){ -+ buf.actime = attrs->ia_atime.tv_sec; -+ buf.modtime = attrs->ia_mtime.tv_sec; -+ if(utime(file, &buf) != 0) return(-errno); ++ else if(S_ISLNK(dentry->d_inode->i_mode)){ ++ inode->i_op = &hppfs_link_iops; ++ inode->i_fop = &hppfs_file_fops; + } + else { -+ struct timespec ts; -+ -+ if(attrs->ia_valid & HOSTFS_ATTR_ATIME_SET){ -+ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, -+ NULL, NULL, &ts, NULL, NULL, NULL); -+ if(err != 0) -+ return(err); -+ buf.actime = attrs->ia_atime.tv_sec; -+ buf.modtime = ts.tv_sec; -+ if(utime(file, &buf) != 0) -+ return(-errno); -+ } -+ if(attrs->ia_valid & HOSTFS_ATTR_MTIME_SET){ -+ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, -+ NULL, &ts, NULL, NULL, NULL, NULL); -+ if(err != 0) -+ return(err); -+ buf.actime = ts.tv_sec; -+ buf.modtime = attrs->ia_mtime.tv_sec; -+ if(utime(file, &buf) != 0) -+ return(-errno); -+ } -+ } -+ if(attrs->ia_valid & HOSTFS_ATTR_CTIME) ; -+ if(attrs->ia_valid & (HOSTFS_ATTR_ATIME | HOSTFS_ATTR_MTIME)){ -+ err = stat_file(file, NULL, NULL, NULL, NULL, NULL, NULL, -+ &attrs->ia_atime, &attrs->ia_mtime, NULL, -+ NULL, NULL); -+ if(err != 0) return(err); ++ inode->i_op = &hppfs_file_iops; ++ inode->i_fop = &hppfs_file_fops; + } -+ return(0); -+} + -+int make_symlink(const char *from, const char *to) -+{ -+ int err; ++ HPPFS_I(inode)->proc_dentry = dentry; + -+ err = symlink(to, from); -+ if(err) return(-errno); + return(0); +} + -+int unlink_file(const char *file) ++static int hppfs_fill_super(struct super_block *sb, void *d, int silent) +{ ++ struct inode *root_inode; ++ struct file_system_type *procfs; ++ struct super_block *proc_sb; + int err; + -+ err = unlink(file); -+ if(err) return(-errno); -+ return(0); -+} -+ -+int do_mkdir(const char *file, int mode) -+{ -+ int err; ++ err = -ENOENT; ++ procfs = get_fs_type("proc"); ++ if(procfs == NULL) ++ goto out; + -+ err = mkdir(file, mode); -+ if(err) return(-errno); -+ return(0); -+} ++ if(list_empty(&procfs->fs_supers)) ++ goto out; + -+int do_rmdir(const char *file) -+{ -+ int err; ++ proc_sb = list_entry(procfs->fs_supers.next, struct super_block, ++ s_instances); ++ ++ sb->s_blocksize = 1024; ++ sb->s_blocksize_bits = 10; ++ sb->s_magic = HPPFS_SUPER_MAGIC; ++ sb->s_op = &hppfs_sbops; + -+ err = rmdir(file); -+ if(err) return(-errno); -+ return(0); -+} ++ root_inode = iget(sb, 0); ++ if(root_inode == NULL) ++ goto out; + -+int do_mknod(const char *file, int mode, int dev) -+{ -+ int err; ++ err = init_inode(root_inode, proc_sb->s_root); ++ if(err) ++ goto out_put; + -+ err = mknod(file, mode, dev); -+ if(err) return(-errno); -+ return(0); -+} ++ err = -ENOMEM; ++ sb->s_root = d_alloc_root(root_inode); ++ if(sb->s_root == NULL) ++ goto out_put; + -+int link_file(const char *to, const char *from) -+{ -+ int err; ++ hppfs_read_inode(root_inode); + -+ err = link(to, from); -+ if(err) return(-errno); + return(0); ++ ++ out_put: ++ iput(root_inode); ++ out: ++ return(err); +} + -+int do_readlink(char *file, char *buf, int size) ++static struct super_block *hppfs_read_super(struct file_system_type *type, ++ int flags, const char *dev_name, ++ void *data) +{ -+ int n; -+ -+ n = readlink(file, buf, size); -+ if(n < 0) -+ return(-errno); -+ if(n < size) -+ buf[n] = '\0'; -+ return(n); ++ return(get_sb_nodev(type, flags, data, hppfs_fill_super)); +} + -+int rename_file(char *from, char *to) -+{ -+ int err; ++static struct file_system_type hppfs_type = { ++ .owner = THIS_MODULE, ++ .name = "hppfs", ++ .get_sb = hppfs_read_super, ++ .kill_sb = kill_anon_super, ++ .fs_flags = 0, ++}; + -+ err = rename(from, to); -+ if(err < 0) return(-errno); -+ return(0); ++static int __init init_hppfs(void) ++{ ++ return(register_filesystem(&hppfs_type)); +} + -+int do_statfs(char *root, long *bsize_out, long long *blocks_out, -+ long long *bfree_out, long long *bavail_out, -+ long long *files_out, long long *ffree_out, -+ void *fsid_out, int fsid_size, long *namelen_out, -+ long *spare_out) ++static void __exit exit_hppfs(void) +{ -+ struct statfs64 buf; -+ int err; -+ -+ err = statfs64(root, &buf); -+ if(err < 0) return(-errno); -+ *bsize_out = buf.f_bsize; -+ *blocks_out = buf.f_blocks; -+ *bfree_out = buf.f_bfree; -+ *bavail_out = buf.f_bavail; -+ *files_out = buf.f_files; -+ *ffree_out = buf.f_ffree; -+ memcpy(fsid_out, &buf.f_fsid, -+ sizeof(buf.f_fsid) > fsid_size ? fsid_size : -+ sizeof(buf.f_fsid)); -+ *namelen_out = buf.f_namelen; -+ spare_out[0] = buf.f_spare[0]; -+ spare_out[1] = buf.f_spare[1]; -+ spare_out[2] = buf.f_spare[2]; -+ spare_out[3] = buf.f_spare[3]; -+ spare_out[4] = buf.f_spare[4]; -+ spare_out[5] = buf.f_spare[5]; -+ return(0); ++ unregister_filesystem(&hppfs_type); +} + ++module_init(init_hppfs) ++module_exit(exit_hppfs) ++MODULE_LICENSE("GPL"); ++ +/* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically @@ -17310,2487 +14951,5440 @@ diff -Naur a/fs/hostfs/hostfs_user.c b/fs/hostfs/hostfs_user.c + * c-file-style: "linux" + * End: + */ -diff -Naur a/fs/hostfs/Makefile b/fs/hostfs/Makefile ---- a/fs/hostfs/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hostfs/Makefile 2004-03-10 08:33:49.000000000 -0500 -@@ -0,0 +1,26 @@ -+# -+# Copyright (C) 2000 Jeff Dike (jdike@karaya.com) -+# Licensed under the GPL -+# -+ -+# struct stat64 changed the inode field name between 2.2 and 2.4 from st_ino -+# to __st_ino. It stayed in the same place, so as long as the correct name -+# is used, hostfs compiled on 2.2 should work on 2.4 and vice versa. -+ -+STAT64_INO_FIELD := $(shell grep -q __st_ino /usr/include/bits/stat.h && \ -+ echo __)st_ino +Index: uml-2.6.7/arch/um/drivers/ssl.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/ssl.c 2004-07-16 19:36:42.449693128 +0300 ++++ uml-2.6.7/arch/um/drivers/ssl.c 2004-07-16 19:47:23.694209144 +0300 +@@ -10,6 +10,7 @@ + #include "linux/major.h" + #include "linux/mm.h" + #include "linux/init.h" ++#include "linux/console.h" + #include "asm/termbits.h" + #include "asm/irq.h" + #include "line.h" +@@ -53,8 +54,9 @@ + + static struct line_driver driver = { + .name = "UML serial line", +- .devfs_name = "tts/%d", +- .major = TTYAUX_MAJOR, ++ .device_name = "ttS", ++ .devfs_name = "tts/", ++ .major = TTY_MAJOR, + .minor_start = 64, + .type = TTY_DRIVER_TYPE_SERIAL, + .subtype = 0, +@@ -149,6 +151,9 @@ + case TCSETSW: + case TCGETA: + case TIOCMGET: ++ case TCSBRK: ++ case TCSBRKP: ++ case TIOCMSET: + ret = -ENOIOCTLCMD; + break; + default: +@@ -212,6 +217,37 @@ + */ + static int ssl_init_done = 0; + ++static void ssl_console_write(struct console *c, const char *string, ++ unsigned len) ++{ ++ struct line *line = &serial_lines[c->index]; ++ if(ssl_init_done) ++ down(&line->sem); ++ console_write_chan(&line->chan_list, string, len); ++ if(ssl_init_done) ++ up(&line->sem); ++} + -+hostfs-objs := hostfs_kern.o hostfs_user.o ++static struct tty_driver *ssl_console_device(struct console *c, int *index) ++{ ++ *index = c->index; ++ return ssl_driver; ++} + -+obj-y = -+obj-$(CONFIG_HOSTFS) += hostfs.o ++static int ssl_console_setup(struct console *co, char *options) ++{ ++ return(0); ++} + -+SINGLE_OBJS = $(foreach f,$(patsubst %.o,%,$(obj-y) $(obj-m)),$($(f)-objs)) ++static struct console ssl_cons = { ++ name: "ttyS", ++ write: ssl_console_write, ++ device: ssl_console_device, ++ setup: ssl_console_setup, ++ flags: CON_PRINTBUFFER, ++ index: -1, ++}; + -+USER_OBJS := $(filter %_user.o,$(obj-y) $(obj-m) $(SINGLE_OBJS)) -+USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) + int ssl_init(void) + { + char *new_title; +@@ -227,17 +263,18 @@ + new_title = add_xterm_umid(opts.xterm_title); + if(new_title != NULL) opts.xterm_title = new_title; + ++ register_console(&ssl_cons); + ssl_init_done = 1; + return(0); + } + +-__initcall(ssl_init); ++late_initcall(ssl_init); + + static int ssl_chan_setup(char *str) + { +- line_setup(serial_lines, sizeof(serial_lines)/sizeof(serial_lines[0]), +- str, 1); +- return(1); ++ return(line_setup(serial_lines, ++ sizeof(serial_lines)/sizeof(serial_lines[0]), ++ str, 1)); + } + + __setup("ssl", ssl_chan_setup); +Index: uml-2.6.7/arch/um/kernel/tt/Makefile +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/Makefile 2004-07-16 19:36:45.804183168 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/Makefile 2004-07-16 19:47:23.744201544 +0300 +@@ -1,5 +1,5 @@ + # +-# Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++# Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com) + # Licensed under the GPL + # + +@@ -7,7 +7,7 @@ + + obj-y = exec_kern.o exec_user.o gdb.o ksyms.o mem.o mem_user.o process_kern.o \ + syscall_kern.o syscall_user.o time.o tlb.o tracer.o trap_user.o \ +- uaccess_user.o sys-$(SUBARCH)/ ++ uaccess.o uaccess_user.o sys-$(SUBARCH)/ + + obj-$(CONFIG_PT_PROXY) += gdb_kern.o ptproxy/ + +@@ -27,5 +27,3 @@ + + $(obj)/unmap_fin.o : $(src)/unmap.o + ld -r -o $@ $< -lc -L/usr/lib +- +-clean : +Index: uml-2.6.7/fs/Makefile +=================================================================== +--- uml-2.6.7.orig/fs/Makefile 2004-07-16 19:36:51.434327256 +0300 ++++ uml-2.6.7/fs/Makefile 2004-07-16 19:47:23.786195160 +0300 +@@ -91,3 +91,5 @@ + obj-$(CONFIG_XFS_FS) += xfs/ + obj-$(CONFIG_AFS_FS) += afs/ + obj-$(CONFIG_BEFS_FS) += befs/ ++obj-$(CONFIG_HOSTFS) += hostfs/ ++obj-$(CONFIG_HPPFS) += hppfs/ +Index: uml-2.6.7/arch/um/kernel/tt/tlb.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/tlb.c 2004-07-16 19:35:58.497374896 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/tlb.c 2004-07-16 19:47:23.750200632 +0300 +@@ -10,6 +10,7 @@ + #include "asm/page.h" + #include "asm/pgtable.h" + #include "asm/uaccess.h" ++#include "asm/tlbflush.h" + #include "user_util.h" + #include "mem_user.h" + #include "os.h" +Index: uml-2.6.7/arch/um/kernel/reboot.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/reboot.c 2004-07-16 19:36:45.791185144 +0300 ++++ uml-2.6.7/arch/um/kernel/reboot.c 2004-07-16 19:47:23.724204584 +0300 +@@ -15,6 +15,7 @@ + #ifdef CONFIG_SMP + static void kill_idlers(int me) + { ++#ifdef CONFIG_MODE_TT + struct task_struct *p; + int i; + +@@ -23,6 +24,7 @@ + if((p != NULL) && (p->thread.mode.tt.extern_pid != me)) + os_kill_process(p->thread.mode.tt.extern_pid, 0); + } ++#endif + } + #endif + +Index: uml-2.6.7/arch/um/kernel/ptrace.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/ptrace.c 2004-07-16 19:36:04.815414408 +0300 ++++ uml-2.6.7/arch/um/kernel/ptrace.c 2004-07-16 19:47:23.724204584 +0300 +@@ -24,11 +24,6 @@ + { + } + +-extern long do_mmap2(struct task_struct *task, unsigned long addr, +- unsigned long len, unsigned long prot, +- unsigned long flags, unsigned long fd, +- unsigned long pgoff); +- + int sys_ptrace(long request, long pid, long addr, long data) + { + struct task_struct *child; +@@ -302,8 +297,17 @@ + return ret; + } + +-void syscall_trace(void) ++void syscall_trace(union uml_pt_regs *regs, int entryexit) + { ++ if (unlikely(current->audit_context)) { ++ if (!entryexit) ++ audit_syscall_entry(current, regs->orig_eax, ++ regs->ebx, regs->ecx, ++ regs->edx, regs->esi); ++ else ++ audit_syscall_exit(current, regs->eax); ++ } + -+USER_CFLAGS += -DSTAT64_INO_FIELD=$(STAT64_INO_FIELD) + if (!test_thread_flag(TIF_SYSCALL_TRACE)) + return; + if (!(current->ptrace & PT_PTRACED)) +@@ -311,11 +315,8 @@ + + /* the 0x80 provides a way for the tracing parent to distinguish + between a syscall stop and SIGTRAP delivery */ +- current->exit_code = SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) +- ? 0x80 : 0); +- current->state = TASK_STOPPED; +- notify_parent(current, SIGCHLD); +- schedule(); ++ ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) ++ ? 0x80 : 0)); + + /* + * this isn't the same as continuing with a signal, but it will do +Index: uml-2.6.7/arch/um/include/um_uaccess.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/um_uaccess.h 2004-07-16 19:37:08.610716048 +0300 ++++ uml-2.6.7/arch/um/include/um_uaccess.h 2004-07-16 19:47:23.709206864 +0300 +@@ -38,22 +38,73 @@ + from, n)); + } + ++/* ++ * strncpy_from_user: - Copy a NUL terminated string from userspace. ++ * @dst: Destination address, in kernel space. This buffer must be at ++ * least @count bytes long. ++ * @src: Source address, in user space. ++ * @count: Maximum number of bytes to copy, including the trailing NUL. ++ * ++ * Copies a NUL-terminated string from userspace to kernel space. ++ * ++ * On success, returns the length of the string (not including the trailing ++ * NUL). ++ * ++ * If access to userspace fails, returns -EFAULT (some data may have been ++ * copied). ++ * ++ * If @count is smaller than the length of the string, copies @count bytes ++ * and returns @count. ++ */ + -+$(USER_OBJS) : %.o: %.c -+ $(CC) $(CFLAGS_$(notdir $@)) $(USER_CFLAGS) -c -o $@ $< -diff -Naur a/fs/hppfs/hppfs_kern.c b/fs/hppfs/hppfs_kern.c ---- a/fs/hppfs/hppfs_kern.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hppfs/hppfs_kern.c 2004-03-10 08:38:41.000000000 -0500 -@@ -0,0 +1,811 @@ -+/* -+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Licensed under the GPL + static inline int strncpy_from_user(char *dst, const char *src, int count) + { + return(CHOOSE_MODE_PROC(strncpy_from_user_tt, strncpy_from_user_skas, + dst, src, count)); + } + ++/* ++ * __clear_user: - Zero a block of memory in user space, with less checking. ++ * @to: Destination address, in user space. ++ * @n: Number of bytes to zero. ++ * ++ * Zero a block of memory in user space. Caller must check ++ * the specified block with access_ok() before calling this function. ++ * ++ * Returns number of bytes that could not be cleared. ++ * On success, this will be zero. ++ */ + static inline int __clear_user(void *mem, int len) + { + return(CHOOSE_MODE_PROC(__clear_user_tt, __clear_user_skas, mem, len)); + } + ++/* ++ * clear_user: - Zero a block of memory in user space. ++ * @to: Destination address, in user space. ++ * @n: Number of bytes to zero. ++ * ++ * Zero a block of memory in user space. ++ * ++ * Returns number of bytes that could not be cleared. ++ * On success, this will be zero. ++ */ + static inline int clear_user(void *mem, int len) + { + return(CHOOSE_MODE_PROC(clear_user_tt, clear_user_skas, mem, len)); + } + ++/* ++ * strlen_user: - Get the size of a string in user space. ++ * @str: The string to measure. ++ * @n: The maximum valid length ++ * ++ * Get the size of a NUL-terminated string in user space. ++ * ++ * Returns the size of the string INCLUDING the terminating NUL. ++ * On exception, returns 0. ++ * If the string is too long, returns a value greater than @n. + */ + static inline int strnlen_user(const void *str, int len) + { + return(CHOOSE_MODE_PROC(strnlen_user_tt, strnlen_user_skas, str, len)); +Index: uml-2.6.7/include/asm-um/current.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/current.h 2004-07-16 19:35:58.909312272 +0300 ++++ uml-2.6.7/include/asm-um/current.h 2004-07-16 19:47:23.788194856 +0300 +@@ -16,8 +16,10 @@ + #define CURRENT_THREAD(dummy) (((unsigned long) &dummy) & \ + (PAGE_MASK << CONFIG_KERNEL_STACK_ORDER)) + +-#define current ({ int dummy; \ +- ((struct thread_info *) CURRENT_THREAD(dummy))->task; }) ++#define current_thread \ ++ ({ int dummy; ((struct thread_info *) CURRENT_THREAD(dummy)); }) + -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include ++#define current (current_thread->task) + + #endif /* __ASSEMBLY__ */ + +Index: uml-2.6.7/arch/um/sys-i386/bugs.c +=================================================================== +--- uml-2.6.7.orig/arch/um/sys-i386/bugs.c 2004-07-16 19:37:17.366384984 +0300 ++++ uml-2.6.7/arch/um/sys-i386/bugs.c 2004-07-16 19:47:23.770197592 +0300 +@@ -4,20 +4,21 @@ + */ + + #include +-#include + #include + #include + #include ++#include + #include "kern_util.h" + #include "user.h" + #include "sysdep/ptrace.h" + #include "task.h" +#include "os.h" -+ -+static int init_inode(struct inode *inode, struct dentry *dentry); -+ -+struct hppfs_data { -+ struct list_head list; -+ char contents[PAGE_SIZE - sizeof(struct list_head)]; -+}; -+ -+struct hppfs_private { -+ struct file proc_file; -+ int host_fd; -+ loff_t len; -+ struct hppfs_data *contents; -+}; -+ -+struct hppfs_inode_info { -+ struct dentry *proc_dentry; -+ struct inode vfs_inode; -+}; -+ -+static inline struct hppfs_inode_info *HPPFS_I(struct inode *inode) -+{ -+ return(list_entry(inode, struct hppfs_inode_info, vfs_inode)); + + #define MAXTOKEN 64 + + /* Set during early boot */ +-int cpu_has_cmov = 1; +-int cpu_has_xmm = 0; ++int host_has_cmov = 1; ++int host_has_xmm = 0; + + static char token(int fd, char *buf, int len, char stop) + { +@@ -27,13 +28,15 @@ + ptr = buf; + end = &buf[len]; + do { +- n = read(fd, ptr, sizeof(*ptr)); ++ n = os_read_file(fd, ptr, sizeof(*ptr)); + c = *ptr++; +- if(n == 0) return(0); +- else if(n != sizeof(*ptr)){ +- printk("Reading /proc/cpuinfo failed, " +- "errno = %d\n", errno); +- return(-errno); ++ if(n != sizeof(*ptr)){ ++ if(n == 0) return(0); ++ printk("Reading /proc/cpuinfo failed, err = %d\n", -n); ++ if(n < 0) ++ return(n); ++ else ++ return(-EIO); + } + } while((c != '\n') && (c != stop) && (ptr < end)); + +@@ -45,45 +48,79 @@ + return(c); + } + +-static int check_cpu_feature(char *feature, int *have_it) ++static int find_cpuinfo_line(int fd, char *key, char *scratch, int len) + { +- char buf[MAXTOKEN], c; +- int fd, len = sizeof(buf)/sizeof(buf[0]), n; +- +- printk("Checking for host processor %s support...", feature); +- fd = open("/proc/cpuinfo", O_RDONLY); +- if(fd < 0){ +- printk("Couldn't open /proc/cpuinfo, errno = %d\n", errno); +- return(0); +- } ++ int n; ++ char c; + +- *have_it = 0; +- buf[len - 1] = '\0'; ++ scratch[len - 1] = '\0'; + while(1){ +- c = token(fd, buf, len - 1, ':'); +- if(c <= 0) goto out; ++ c = token(fd, scratch, len - 1, ':'); ++ if(c <= 0) ++ return(0); + else if(c != ':'){ + printk("Failed to find ':' in /proc/cpuinfo\n"); +- goto out; ++ return(0); + } + +- if(!strncmp(buf, "flags", strlen("flags"))) break; ++ if(!strncmp(scratch, key, strlen(key))) ++ return(1); + + do { +- n = read(fd, &c, sizeof(c)); ++ n = os_read_file(fd, &c, sizeof(c)); + if(n != sizeof(c)){ + printk("Failed to find newline in " +- "/proc/cpuinfo, n = %d, errno = %d\n", +- n, errno); +- goto out; ++ "/proc/cpuinfo, err = %d\n", -n); ++ return(0); + } + } while(c != '\n'); + } ++ return(0); +} + -+#define HPPFS_SUPER_MAGIC 0xb00000ee -+ -+static struct super_operations hppfs_sbops; -+ -+static int is_pid(struct dentry *dentry) ++int cpu_feature(char *what, char *buf, int len) +{ -+ struct super_block *sb; -+ int i; ++ int fd, ret = 0; + -+ sb = dentry->d_sb; -+ if((sb->s_op != &hppfs_sbops) || (dentry->d_parent != sb->s_root)) ++ fd = os_open_file("/proc/cpuinfo", of_read(OPENFLAGS()), 0); ++ if(fd < 0){ ++ printk("Couldn't open /proc/cpuinfo, err = %d\n", -fd); + return(0); ++ } + -+ for(i = 0; i < dentry->d_name.len; i++){ -+ if(!isdigit(dentry->d_name.name[i])) -+ return(0); ++ if(!find_cpuinfo_line(fd, what, buf, len)){ ++ printk("Couldn't find '%s' line in /proc/cpuinfo\n", what); ++ goto out_close; + } -+ return(1); ++ ++ token(fd, buf, len, '\n'); ++ ret = 1; ++ ++ out_close: ++ os_close_file(fd); ++ return(ret); +} + -+static char *dentry_name(struct dentry *dentry, int extra) ++static int check_cpu_flag(char *feature, int *have_it) +{ -+ struct dentry *parent; -+ char *root, *name; -+ const char *seg_name; -+ int len, seg_len; ++ char buf[MAXTOKEN], c; ++ int fd, len = sizeof(buf)/sizeof(buf[0]); + -+ len = 0; -+ parent = dentry; -+ while(parent->d_parent != parent){ -+ if(is_pid(parent)) -+ len += strlen("pid") + 1; -+ else len += parent->d_name.len + 1; -+ parent = parent->d_parent; ++ printk("Checking for host processor %s support...", feature); ++ fd = os_open_file("/proc/cpuinfo", of_read(OPENFLAGS()), 0); ++ if(fd < 0){ ++ printk("Couldn't open /proc/cpuinfo, err = %d\n", -fd); ++ return(0); + } -+ -+ root = "proc"; -+ len += strlen(root); -+ name = kmalloc(len + extra + 1, GFP_KERNEL); -+ if(name == NULL) return(NULL); + -+ name[len] = '\0'; -+ parent = dentry; -+ while(parent->d_parent != parent){ -+ if(is_pid(parent)){ -+ seg_name = "pid"; -+ seg_len = strlen("pid"); -+ } -+ else { -+ seg_name = parent->d_name.name; -+ seg_len = parent->d_name.len; -+ } ++ *have_it = 0; ++ if(!find_cpuinfo_line(fd, "flags", buf, sizeof(buf) / sizeof(buf[0]))) ++ goto out; + + c = token(fd, buf, len - 1, ' '); + if(c < 0) goto out; + else if(c != ' '){ +- printk("Failed to find ':' in /proc/cpuinfo\n"); ++ printk("Failed to find ' ' in /proc/cpuinfo\n"); + goto out; + } + +@@ -100,21 +137,48 @@ + out: + if(*have_it == 0) printk("No\n"); + else if(*have_it == 1) printk("Yes\n"); +- close(fd); ++ os_close_file(fd); + return(1); + } + ++#if 0 /* This doesn't work in tt mode, plus it's causing compilation problems ++ * for some people. ++ */ ++static void disable_lcall(void) ++{ ++ struct modify_ldt_ldt_s ldt; ++ int err; + -+ len -= seg_len + 1; -+ name[len] = '/'; -+ strncpy(&name[len + 1], seg_name, seg_len); -+ parent = parent->d_parent; -+ } -+ strncpy(name, root, strlen(root)); -+ return(name); ++ bzero(&ldt, sizeof(ldt)); ++ ldt.entry_number = 7; ++ ldt.base_addr = 0; ++ ldt.limit = 0; ++ err = modify_ldt(1, &ldt, sizeof(ldt)); ++ if(err) ++ printk("Failed to disable lcall7 - errno = %d\n", errno); +} ++#endif + -+struct dentry_operations hppfs_dentry_ops = { -+}; -+ -+static int file_removed(struct dentry *dentry, const char *file) ++void arch_init_thread(void) +{ -+ char *host_file; -+ int extra, fd; -+ -+ extra = 0; -+ if(file != NULL) extra += strlen(file) + 1; -+ -+ host_file = dentry_name(dentry, extra + strlen("/remove")); -+ if(host_file == NULL){ -+ printk("file_removed : allocation failed\n"); -+ return(-ENOMEM); -+ } ++#if 0 ++ disable_lcall(); ++#endif ++} + -+ if(file != NULL){ -+ strcat(host_file, "/"); -+ strcat(host_file, file); -+ } -+ strcat(host_file, "/remove"); + void arch_check_bugs(void) + { + int have_it; + +- if(access("/proc/cpuinfo", R_OK)){ ++ if(os_access("/proc/cpuinfo", OS_ACC_R_OK) < 0){ + printk("/proc/cpuinfo not available - skipping CPU capability " + "checks\n"); + return; + } +- if(check_cpu_feature("cmov", &have_it)) cpu_has_cmov = have_it; +- if(check_cpu_feature("xmm", &have_it)) cpu_has_xmm = have_it; ++ if(check_cpu_flag("cmov", &have_it)) ++ host_has_cmov = have_it; ++ if(check_cpu_flag("xmm", &have_it)) ++ host_has_xmm = have_it; + } + + int arch_handle_signal(int sig, union uml_pt_regs *regs) +@@ -130,18 +194,18 @@ + if((*((char *) ip) != 0x0f) || ((*((char *) (ip + 1)) & 0xf0) != 0x40)) + return(0); + +- if(cpu_has_cmov == 0) ++ if(host_has_cmov == 0) + panic("SIGILL caused by cmov, which this processor doesn't " + "implement, boot a filesystem compiled for older " + "processors"); +- else if(cpu_has_cmov == 1) ++ else if(host_has_cmov == 1) + panic("SIGILL caused by cmov, which this processor claims to " + "implement"); +- else if(cpu_has_cmov == -1) ++ else if(host_has_cmov == -1) + panic("SIGILL caused by cmov, couldn't tell if this processor " + "implements it, boot a filesystem compiled for older " + "processors"); +- else panic("Bad value for cpu_has_cmov (%d)", cpu_has_cmov); ++ else panic("Bad value for host_has_cmov (%d)", host_has_cmov); + return(0); + } + +Index: uml-2.6.7/arch/um/kernel/skas/include/mode.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/include/mode.h 2004-07-16 19:36:48.253810768 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/include/mode.h 2004-07-16 19:47:23.727204128 +0300 +@@ -12,14 +12,16 @@ + extern int have_fpx_regs; + + extern void user_time_init_skas(void); +-extern int copy_sc_from_user_skas(union uml_pt_regs *regs, void *from_ptr); +-extern int copy_sc_to_user_skas(void *to_ptr, void *fp, ++extern int copy_sc_from_user_skas(int pid, union uml_pt_regs *regs, ++ void *from_ptr); ++extern int copy_sc_to_user_skas(int pid, void *to_ptr, void *fp, + union uml_pt_regs *regs, + unsigned long fault_addr, int fault_type); + extern void sig_handler_common_skas(int sig, void *sc_ptr); + extern void halt_skas(void); + extern void reboot_skas(void); + extern void kill_off_processes_skas(void); ++extern int is_skas_winch(int pid, int fd, void *data); + + #endif + +Index: uml-2.6.7/arch/um/include/sysdep-i386/sigcontext.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/sysdep-i386/sigcontext.h 2004-07-16 19:37:08.763692792 +0300 ++++ uml-2.6.7/arch/um/include/sysdep-i386/sigcontext.h 2004-07-16 19:47:23.707207168 +0300 +@@ -28,8 +28,8 @@ + */ + #define SC_START_SYSCALL(sc) do SC_EAX(sc) = -ENOSYS; while(0) + +-/* These are General Protection and Page Fault */ +-#define SEGV_IS_FIXABLE(trap) ((trap == 13) || (trap == 14)) ++/* This is Page Fault */ ++#define SEGV_IS_FIXABLE(trap) (trap == 14) + + #define SC_SEGV_IS_FIXABLE(sc) (SEGV_IS_FIXABLE(SC_TRAPNO(sc))) + +Index: uml-2.6.7/arch/um/drivers/net_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/net_user.c 2004-07-16 19:36:10.505549376 +0300 ++++ uml-2.6.7/arch/um/drivers/net_user.c 2004-07-16 19:47:24.796041640 +0300 +@@ -26,8 +26,7 @@ + if(gate_addr == NULL) return(0); + if(sscanf(gate_addr, "%d.%d.%d.%d", &tap_addr[0], + &tap_addr[1], &tap_addr[2], &tap_addr[3]) != 4){ +- printk("Invalid tap IP address - '%s'\n", +- gate_addr); ++ printk("Invalid tap IP address - '%s'\n", gate_addr); + return(-EINVAL); + } + return(0); +@@ -60,18 +59,18 @@ + } + + *output = '\0'; +- if(read(fd, &remain, sizeof(remain)) != sizeof(remain)){ +- printk("read_output - read of length failed, errno = %d\n", +- errno); ++ n = os_read_file(fd, &remain, sizeof(remain)); ++ if(n != sizeof(remain)){ ++ printk("read_output - read of length failed, err = %d\n", -n); + return; + } + + while(remain != 0){ + n = (remain < len) ? remain : len; +- actual = read(fd, output, n); ++ actual = os_read_file(fd, output, n); + if(actual != n){ + printk("read_output - read of data failed, " +- "errno = %d\n", errno); ++ "err = %d\n", -actual); + return; + } + remain -= actual; +@@ -83,13 +82,12 @@ + { + int n; + +- while(((n = read(fd, buf, len)) < 0) && (errno == EINTR)) ; ++ n = os_read_file(fd, buf, len); + +- if(n < 0){ +- if(errno == EAGAIN) return(0); +- return(-errno); +- } +- else if(n == 0) return(-ENOTCONN); ++ if(n == -EAGAIN) ++ return(0); ++ else if(n == 0) ++ return(-ENOTCONN); + return(n); + } + +@@ -112,13 +110,13 @@ + { + int n; + +- while(((n = write(fd, buf, len)) < 0) && (errno == EINTR)) ; +- if(n < 0){ +- if(errno == EAGAIN) return(0); +- return(-errno); +- } +- else if(n == 0) return(-ENOTCONN); +- return(n); ++ n = os_write_file(fd, buf, len); + -+ fd = os_open_file(host_file, of_read(OPENFLAGS()), 0); -+ kfree(host_file); -+ if(fd > 0){ -+ os_close_file(fd); -+ return(1); -+ } -+ return(0); -+} ++ if(n == -EAGAIN) ++ return(0); ++ else if(n == 0) ++ return(-ENOTCONN); ++ return(n); + } + + int net_send(int fd, void *buf, int len) +@@ -157,7 +155,7 @@ + { + struct change_pre_exec_data *data = arg; + +- close(data->close_me); ++ os_close_file(data->close_me); + dup2(data->stdout, 1); + } + +@@ -167,17 +165,18 @@ + struct change_pre_exec_data pe_data; + + err = os_pipe(fds, 1, 0); +- if(err){ +- printk("change_tramp - pipe failed, errno = %d\n", -err); ++ if(err < 0){ ++ printk("change_tramp - pipe failed, err = %d\n", -err); + return(err); + } + pe_data.close_me = fds[0]; + pe_data.stdout = fds[1]; + pid = run_helper(change_pre_exec, &pe_data, argv, NULL); + +- close(fds[1]); ++ os_close_file(fds[1]); + read_output(fds[0], output, output_len); +- waitpid(pid, NULL, 0); + -+static void hppfs_read_inode(struct inode *ino) ++ CATCH_EINTR(err = waitpid(pid, NULL, 0)); + return(pid); + } + +Index: uml-2.6.7/include/asm-um/processor-generic.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/processor-generic.h 2004-07-16 19:36:07.621987744 +0300 ++++ uml-2.6.7/include/asm-um/processor-generic.h 2004-07-16 19:47:23.794193944 +0300 +@@ -11,33 +11,14 @@ + struct task_struct; + + #include "linux/config.h" +-#include "linux/signal.h" + #include "asm/ptrace.h" +-#include "asm/siginfo.h" + #include "choose-mode.h" + + struct mm_struct; + + #define current_text_addr() ((void *) 0) + +-#define cpu_relax() do ; while (0) +- +-#ifdef CONFIG_MODE_TT +-struct proc_tt_mode { +- int extern_pid; +- int tracing; +- int switch_pipe[2]; +- int singlestep_syscall; +- int vm_seq; +-}; +-#endif +- +-#ifdef CONFIG_MODE_SKAS +-struct proc_skas_mode { +- void *switch_buf; +- void *fork_buf; +-}; +-#endif ++#define cpu_relax() barrier() + + struct thread_struct { + int forking; +@@ -46,6 +27,7 @@ + struct pt_regs regs; + unsigned long cr2; + int err; ++ unsigned long trap_no; + void *fault_addr; + void *fault_catcher; + struct task_struct *prev_sched; +@@ -54,10 +36,20 @@ + struct arch_thread arch; + union { + #ifdef CONFIG_MODE_TT +- struct proc_tt_mode tt; ++ struct { ++ int extern_pid; ++ int tracing; ++ int switch_pipe[2]; ++ int singlestep_syscall; ++ int vm_seq; ++ } tt; + #endif + #ifdef CONFIG_MODE_SKAS +- struct proc_skas_mode skas; ++ struct { ++ void *switch_buf; ++ void *fork_buf; ++ int mm_count; ++ } skas; + #endif + } mode; + struct { +@@ -99,14 +91,19 @@ + } mm_segment_t; + + extern struct task_struct *alloc_task_struct(void); +-extern void free_task_struct(struct task_struct *task); + + extern void release_thread(struct task_struct *); + extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + extern void dump_thread(struct pt_regs *regs, struct user *u); ++extern void prepare_to_copy(struct task_struct *tsk); + + extern unsigned long thread_saved_pc(struct task_struct *t); + ++static inline void mm_copy_segments(struct mm_struct *from_mm, ++ struct mm_struct *new_mm) +{ -+ struct inode *proc_ino; -+ -+ if(HPPFS_I(ino)->proc_dentry == NULL) -+ return; -+ -+ proc_ino = HPPFS_I(ino)->proc_dentry->d_inode; -+ ino->i_uid = proc_ino->i_uid; -+ ino->i_gid = proc_ino->i_gid; -+ ino->i_atime = proc_ino->i_atime; -+ ino->i_mtime = proc_ino->i_mtime; -+ ino->i_ctime = proc_ino->i_ctime; -+ ino->i_ino = proc_ino->i_ino; -+ ino->i_mode = proc_ino->i_mode; -+ ino->i_nlink = proc_ino->i_nlink; -+ ino->i_size = proc_ino->i_size; -+ ino->i_blksize = proc_ino->i_blksize; -+ ino->i_blocks = proc_ino->i_blocks; +} + -+static struct dentry *hppfs_lookup(struct inode *ino, struct dentry *dentry, -+ struct nameidata *nd) -+{ -+ struct dentry *proc_dentry, *new, *parent; -+ struct inode *inode; -+ int err, deleted; -+ -+ deleted = file_removed(dentry, NULL); -+ if(deleted < 0) -+ return(ERR_PTR(deleted)); -+ else if(deleted) -+ return(ERR_PTR(-ENOENT)); -+ -+ err = -ENOMEM; -+ parent = HPPFS_I(ino)->proc_dentry; -+ down(&parent->d_inode->i_sem); -+ proc_dentry = d_lookup(parent, &dentry->d_name); -+ if(proc_dentry == NULL){ -+ proc_dentry = d_alloc(parent, &dentry->d_name); -+ if(proc_dentry == NULL){ -+ up(&parent->d_inode->i_sem); -+ goto out; -+ } -+ new = (*parent->d_inode->i_op->lookup)(parent->d_inode, -+ proc_dentry, NULL); -+ if(new){ -+ dput(proc_dentry); -+ proc_dentry = new; -+ } -+ } -+ up(&parent->d_inode->i_sem); -+ -+ if(IS_ERR(proc_dentry)) -+ return(proc_dentry); -+ -+ inode = iget(ino->i_sb, 0); -+ if(inode == NULL) -+ goto out_dput; -+ -+ err = init_inode(inode, proc_dentry); -+ if(err) -+ goto out_put; -+ -+ hppfs_read_inode(inode); + #define init_stack (init_thread_union.stack) + + /* +Index: uml-2.6.7/include/asm-um/fixmap.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/fixmap.h 2004-07-16 19:37:31.708204696 +0300 ++++ uml-2.6.7/include/asm-um/fixmap.h 2004-07-16 19:47:23.790194552 +0300 +@@ -34,6 +34,7 @@ + FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ + FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, + #endif ++ FIX_VSYSCALL, + __end_of_fixed_addresses + }; + +@@ -63,6 +64,13 @@ + #define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) + #define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) + ++/* ++ * This is the range that is readable by user mode, and things ++ * acting like user mode such as get_user_pages. ++ */ ++#define FIXADDR_USER_START (__fix_to_virt(FIX_VSYSCALL)) ++#define FIXADDR_USER_END (FIXADDR_USER_START + PAGE_SIZE) + -+ d_add(dentry, inode); -+ dentry->d_op = &hppfs_dentry_ops; -+ return(NULL); + extern void __this_fixmap_does_not_exist(void); + + /* +Index: uml-2.6.7/arch/um/os-Linux/drivers/ethertap_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/drivers/ethertap_kern.c 2004-07-16 19:35:55.747792896 +0300 ++++ uml-2.6.7/arch/um/os-Linux/drivers/ethertap_kern.c 2004-07-16 19:47:23.765198352 +0300 +@@ -8,7 +8,6 @@ + #include "linux/init.h" + #include "linux/netdevice.h" + #include "linux/etherdevice.h" +-#include "linux/init.h" + #include "net_kern.h" + #include "net_user.h" + #include "etap.h" +Index: uml-2.6.7/arch/um/kernel/tt/syscall_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/syscall_user.c 2004-07-16 19:37:02.608628504 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/syscall_user.c 2004-07-16 19:47:23.749200784 +0300 +@@ -33,7 +33,7 @@ + SC_START_SYSCALL(sc); + + index = record_syscall_start(syscall); +- syscall_trace(); ++ syscall_trace(regs, 1); + result = execute_syscall(regs); + + /* regs->sc may have changed while the system call ran (there may +@@ -46,7 +46,7 @@ + (result == -ERESTARTNOINTR)) + do_signal(result); + +- syscall_trace(); ++ syscall_trace(regs, 0); + record_syscall_end(index, result); + } + +Index: uml-2.6.7/arch/um/drivers/ubd_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/ubd_kern.c 2004-07-16 19:36:39.996066136 +0300 ++++ uml-2.6.7/arch/um/drivers/ubd_kern.c 2004-07-16 19:47:23.697208688 +0300 +@@ -8,6 +8,13 @@ + * old style ubd by setting UBD_SHIFT to 0 + * 2002-09-27...2002-10-18 massive tinkering for 2.5 + * partitions have changed in 2.5 ++ * 2003-01-29 more tinkering for 2.5.59-1 ++ * This should now address the sysfs problems and has ++ * the symlink for devfs to allow for booting with ++ * the common /dev/ubd/discX/... names rather than ++ * only /dev/ubdN/discN this version also has lots of ++ * clean ups preparing for ubd-many. ++ * James McMechan + */ + + #define MAJOR_NR UBD_MAJOR +@@ -40,9 +47,12 @@ + #include "mconsole_kern.h" + #include "init.h" + #include "irq_user.h" ++#include "irq_kern.h" + #include "ubd_user.h" + #include "2_5compat.h" + #include "os.h" ++#include "mem.h" ++#include "mem_kern.h" + + static spinlock_t ubd_io_lock = SPIN_LOCK_UNLOCKED; + static spinlock_t ubd_lock = SPIN_LOCK_UNLOCKED; +@@ -56,6 +66,10 @@ + + #define MAX_DEV (8) + ++/* Changed in early boot */ ++static int ubd_do_mmap = 0; ++#define UBD_MMAP_BLOCK_SIZE PAGE_SIZE + -+ out_put: -+ iput(inode); -+ out_dput: -+ dput(proc_dentry); -+ out: -+ return(ERR_PTR(err)); -+} + static struct block_device_operations ubd_blops = { + .owner = THIS_MODULE, + .open = ubd_open, +@@ -67,7 +81,7 @@ + static request_queue_t *ubd_queue; + + /* Protected by ubd_lock */ +-static int fake_major = 0; ++static int fake_major = MAJOR_NR; + + static struct gendisk *ubd_gendisk[MAX_DEV]; + static struct gendisk *fake_gendisk[MAX_DEV]; +@@ -96,13 +110,19 @@ + + struct ubd { + char *file; +- int is_dir; + int count; + int fd; + __u64 size; + struct openflags boot_openflags; + struct openflags openflags; ++ int no_cow; + struct cow cow; + -+static struct inode_operations hppfs_file_iops = { -+}; ++ int map_writes; ++ int map_reads; ++ int nomap_writes; ++ int nomap_reads; ++ int write_maps; + }; + + #define DEFAULT_COW { \ +@@ -115,21 +135,28 @@ + + #define DEFAULT_UBD { \ + .file = NULL, \ +- .is_dir = 0, \ + .count = 0, \ + .fd = -1, \ + .size = -1, \ + .boot_openflags = OPEN_FLAGS, \ + .openflags = OPEN_FLAGS, \ ++ .no_cow = 0, \ + .cow = DEFAULT_COW, \ ++ .map_writes = 0, \ ++ .map_reads = 0, \ ++ .nomap_writes = 0, \ ++ .nomap_reads = 0, \ ++ .write_maps = 0, \ + } + + struct ubd ubd_dev[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD }; + + static int ubd0_init(void) + { +- if(ubd_dev[0].file == NULL) +- ubd_dev[0].file = "root_fs"; ++ struct ubd *dev = &ubd_dev[0]; + -+static ssize_t read_proc(struct file *file, char *buf, ssize_t count, -+ loff_t *ppos, int is_user) ++ if(dev->file == NULL) ++ dev->file = "root_fs"; + return(0); + } + +@@ -196,19 +223,46 @@ + " Create ide0 entries that map onto ubd devices.\n\n" + ); + ++static int parse_unit(char **ptr) +{ -+ ssize_t (*read)(struct file *, char *, size_t, loff_t *); -+ ssize_t n; -+ -+ read = file->f_dentry->d_inode->i_fop->read; -+ -+ if(!is_user) -+ set_fs(KERNEL_DS); -+ -+ n = (*read)(file, buf, count, &file->f_pos); -+ -+ if(!is_user) -+ set_fs(USER_DS); ++ char *str = *ptr, *end; ++ int n = -1; + -+ if(ppos) *ppos = file->f_pos; ++ if(isdigit(*str)) { ++ n = simple_strtoul(str, &end, 0); ++ if(end == str) ++ return(-1); ++ *ptr = end; ++ } ++ else if (('a' <= *str) && (*str <= 'h')) { ++ n = *str - 'a'; ++ str++; ++ *ptr = str; ++ } + return(n); +} + -+static ssize_t hppfs_read_file(int fd, char *buf, ssize_t count) -+{ -+ ssize_t n; -+ int cur, err; -+ char *new_buf; + static int ubd_setup_common(char *str, int *index_out) + { ++ struct ubd *dev; + struct openflags flags = global_openflags; + char *backing_file; + int n, err; + + if(index_out) *index_out = -1; +- n = *str++; ++ n = *str; + if(n == '='){ +- static int fake_major_allowed = 1; + char *end; + int major; + ++ str++; ++ if(!strcmp(str, "mmap")){ ++ CHOOSE_MODE(printk("mmap not supported by the ubd " ++ "driver in tt mode\n"), ++ ubd_do_mmap = 1); ++ return(0); ++ } + -+ n = -ENOMEM; -+ new_buf = kmalloc(PAGE_SIZE, GFP_KERNEL); -+ if(new_buf == NULL){ -+ printk("hppfs_read_file : kmalloc failed\n"); -+ goto out; + if(!strcmp(str, "sync")){ + global_openflags.s = 1; + return(0); +@@ -220,20 +274,14 @@ + return(1); + } + +- if(!fake_major_allowed){ +- printk(KERN_ERR "Can't assign a fake major twice\n"); +- return(1); +- } +- + err = 1; + spin_lock(&ubd_lock); +- if(!fake_major_allowed){ ++ if(fake_major != MAJOR_NR){ + printk(KERN_ERR "Can't assign a fake major twice\n"); + goto out1; + } + + fake_major = major; +- fake_major_allowed = 0; + + printk(KERN_INFO "Setting extra ubd major number to %d\n", + major); +@@ -243,25 +291,23 @@ + return(err); + } + +- if(n < '0'){ +- printk(KERN_ERR "ubd_setup : index out of range\n"); } +- +- if((n >= '0') && (n <= '9')) n -= '0'; +- else if((n >= 'a') && (n <= 'z')) n -= 'a'; +- else { +- printk(KERN_ERR "ubd_setup : device syntax invalid\n"); ++ n = parse_unit(&str); ++ if(n < 0){ ++ printk(KERN_ERR "ubd_setup : couldn't parse unit number " ++ "'%s'\n", str); + return(1); + } + if(n >= MAX_DEV){ +- printk(KERN_ERR "ubd_setup : index out of range " +- "(%d devices)\n", MAX_DEV); ++ printk(KERN_ERR "ubd_setup : index %d out of range " ++ "(%d devices)\n", n, MAX_DEV); + return(1); + } + + err = 1; + spin_lock(&ubd_lock); + +- if(ubd_dev[n].file != NULL){ ++ dev = &ubd_dev[n]; ++ if(dev->file != NULL){ + printk(KERN_ERR "ubd_setup : device already configured\n"); + goto out2; + } +@@ -276,6 +322,11 @@ + flags.s = 1; + str++; + } ++ if (*str == 'd'){ ++ dev->no_cow = 1; ++ str++; + } -+ n = 0; -+ while(count > 0){ -+ cur = min_t(ssize_t, count, PAGE_SIZE); -+ err = os_read_file(fd, new_buf, cur); -+ if(err < 0){ -+ printk("hppfs_read : read failed, errno = %d\n", -+ count); -+ n = err; -+ goto out_free; ++ + if(*str++ != '='){ + printk(KERN_ERR "ubd_setup : Expected '='\n"); + goto out2; +@@ -284,14 +335,17 @@ + err = 0; + backing_file = strchr(str, ','); + if(backing_file){ +- *backing_file = '\0'; +- backing_file++; ++ if(dev->no_cow) ++ printk(KERN_ERR "Can't specify both 'd' and a " ++ "cow file\n"); ++ else { ++ *backing_file = '\0'; ++ backing_file++; + } -+ else if(err == 0) -+ break; + } +- ubd_dev[n].file = str; +- if(ubd_is_dir(ubd_dev[n].file)) +- ubd_dev[n].is_dir = 1; +- ubd_dev[n].cow.file = backing_file; +- ubd_dev[n].boot_openflags = flags; ++ dev->file = str; ++ dev->cow.file = backing_file; ++ dev->boot_openflags = flags; + out2: + spin_unlock(&ubd_lock); + return(err); +@@ -321,8 +375,7 @@ + static int fakehd_set = 0; + static int fakehd(char *str) + { +- printk(KERN_INFO +- "fakehd : Changing ubd name to \"hd\".\n"); ++ printk(KERN_INFO "fakehd : Changing ubd name to \"hd\".\n"); + fakehd_set = 1; + return 1; + } +@@ -368,32 +421,42 @@ + { + struct io_thread_req req; + struct request *rq = elv_next_request(ubd_queue); +- int n; ++ int n, err; + + do_ubd = NULL; + intr_count++; + n = read_ubd_fs(thread_fd, &req, sizeof(req)); + if(n != sizeof(req)){ + printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " +- "errno = %d\n", os_getpid(), -n); ++ "err = %d\n", os_getpid(), -n); + spin_lock(&ubd_io_lock); + end_request(rq, 0); + spin_unlock(&ubd_io_lock); + return; + } + +- if((req.offset != ((__u64) (rq->sector)) << 9) || +- (req.length != (rq->current_nr_sectors) << 9)) ++ if((req.op != UBD_MMAP) && ++ ((req.offset != ((__u64) (rq->sector)) << 9) || ++ (req.length != (rq->current_nr_sectors) << 9))) + panic("I/O op mismatch"); + ++ if(req.map_fd != -1){ ++ err = physmem_subst_mapping(req.buffer, req.map_fd, ++ req.map_offset, 1); ++ if(err) ++ printk("ubd_handler - physmem_subst_mapping failed, " ++ "err = %d\n", -err); ++ } + -+ if(copy_to_user(buf, new_buf, err)){ -+ n = -EFAULT; -+ goto out_free; + ubd_finish(rq, req.error); + reactivate_fd(thread_fd, UBD_IRQ); + do_ubd_request(ubd_queue); + } + +-static void ubd_intr(int irq, void *dev, struct pt_regs *unused) ++static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) + { + ubd_handler(); ++ return(IRQ_HANDLED); + } + + /* Only changed by ubd_init, which is an initcall. */ +@@ -417,10 +480,14 @@ + + static void ubd_close(struct ubd *dev) + { ++ if(ubd_do_mmap) ++ physmem_forget_descriptor(dev->fd); + os_close_file(dev->fd); + if(dev->cow.file == NULL) + return; + ++ if(ubd_do_mmap) ++ physmem_forget_descriptor(dev->cow.fd); + os_close_file(dev->cow.fd); + vfree(dev->cow.bitmap); + dev->cow.bitmap = NULL; +@@ -429,18 +496,20 @@ + static int ubd_open_dev(struct ubd *dev) + { + struct openflags flags; +- int err, n, create_cow, *create_ptr; ++ char **back_ptr; ++ int err, create_cow, *create_ptr; + ++ dev->openflags = dev->boot_openflags; + create_cow = 0; + create_ptr = (dev->cow.file != NULL) ? &create_cow : NULL; +- dev->fd = open_ubd_file(dev->file, &dev->openflags, &dev->cow.file, ++ back_ptr = dev->no_cow ? NULL : &dev->cow.file; ++ dev->fd = open_ubd_file(dev->file, &dev->openflags, back_ptr, + &dev->cow.bitmap_offset, &dev->cow.bitmap_len, + &dev->cow.data_offset, create_ptr); + + if((dev->fd == -ENOENT) && create_cow){ +- n = dev - ubd_dev; + dev->fd = create_cow_file(dev->file, dev->cow.file, +- dev->openflags, 1 << 9, ++ dev->openflags, 1 << 9, PAGE_SIZE, + &dev->cow.bitmap_offset, + &dev->cow.bitmap_len, + &dev->cow.data_offset); +@@ -455,13 +524,17 @@ + if(dev->cow.file != NULL){ + err = -ENOMEM; + dev->cow.bitmap = (void *) vmalloc(dev->cow.bitmap_len); +- if(dev->cow.bitmap == NULL) goto error; ++ if(dev->cow.bitmap == NULL){ ++ printk(KERN_ERR "Failed to vmalloc COW bitmap\n"); ++ goto error; + } -+ n += err; -+ count -= err; -+ } -+ out_free: -+ kfree(new_buf); -+ out: -+ return(n); -+} -+ -+static ssize_t hppfs_read(struct file *file, char *buf, size_t count, -+ loff_t *ppos) -+{ -+ struct hppfs_private *hppfs = file->private_data; -+ struct hppfs_data *data; -+ loff_t off; + flush_tlb_kernel_vm(); + + err = read_cow_bitmap(dev->fd, dev->cow.bitmap, + dev->cow.bitmap_offset, + dev->cow.bitmap_len); +- if(err) goto error; ++ if(err < 0) ++ goto error; + + flags = dev->openflags; + flags.w = 0; +@@ -481,17 +554,31 @@ + + { + struct gendisk *disk; ++ char from[sizeof("ubd/nnnnn\0")], to[sizeof("discnnnnn/disc\0")]; + int err; -+ -+ if(hppfs->contents != NULL){ -+ if(*ppos >= hppfs->len) return(0); -+ -+ data = hppfs->contents; -+ off = *ppos; -+ while(off >= sizeof(data->contents)){ -+ data = list_entry(data->list.next, struct hppfs_data, -+ list); -+ off -= sizeof(data->contents); -+ } -+ -+ if(off + count > hppfs->len) -+ count = hppfs->len - off; -+ copy_to_user(buf, &data->contents[off], count); -+ *ppos += count; + + disk = alloc_disk(1 << UBD_SHIFT); +- if (!disk) +- return -ENOMEM; ++ if(disk == NULL) ++ return(-ENOMEM); + + disk->major = major; + disk->first_minor = unit << UBD_SHIFT; + disk->fops = &ubd_blops; + set_capacity(disk, size / 512); +- sprintf(disk->disk_name, "ubd"); +- sprintf(disk->devfs_name, "ubd/disc%d", unit); ++ if(major == MAJOR_NR){ ++ sprintf(disk->disk_name, "ubd%c", 'a' + unit); ++ sprintf(disk->devfs_name, "ubd/disc%d", unit); ++ sprintf(from, "ubd/%d", unit); ++ sprintf(to, "disc%d/disc", unit); ++ err = devfs_mk_symlink(from, to); ++ if(err) ++ printk("ubd_new_disk failed to make link from %s to " ++ "%s, error = %d\n", from, to, err); + } -+ else if(hppfs->host_fd != -1){ -+ err = os_seek_file(hppfs->host_fd, *ppos); -+ if(err){ -+ printk("hppfs_read : seek failed, errno = %d\n", err); -+ return(err); -+ } -+ count = hppfs_read_file(hppfs->host_fd, buf, count); -+ if(count > 0) -+ *ppos += count; ++ else { ++ sprintf(disk->disk_name, "ubd_fake%d", unit); ++ sprintf(disk->devfs_name, "ubd_fake/disc%d", unit); + } -+ else count = read_proc(&hppfs->proc_file, buf, count, ppos, 1); -+ -+ return(count); -+} -+ -+static ssize_t hppfs_write(struct file *file, const char *buf, size_t len, -+ loff_t *ppos) -+{ -+ struct hppfs_private *data = file->private_data; -+ struct file *proc_file = &data->proc_file; -+ ssize_t (*write)(struct file *, const char *, size_t, loff_t *); -+ int err; -+ -+ write = proc_file->f_dentry->d_inode->i_fop->write; -+ -+ proc_file->f_pos = file->f_pos; -+ err = (*write)(proc_file, buf, len, &proc_file->f_pos); -+ file->f_pos = proc_file->f_pos; -+ -+ return(err); -+} -+ -+static int open_host_sock(char *host_file, int *filter_out) -+{ -+ char *end; -+ int fd; -+ -+ end = &host_file[strlen(host_file)]; -+ strcpy(end, "/rw"); -+ *filter_out = 1; -+ fd = os_connect_socket(host_file); -+ if(fd > 0) -+ return(fd); -+ -+ strcpy(end, "/r"); -+ *filter_out = 0; -+ fd = os_connect_socket(host_file); -+ return(fd); -+} -+ -+static void free_contents(struct hppfs_data *head) + + disk->private_data = &ubd_dev[unit]; + disk->queue = ubd_queue; +@@ -506,24 +593,21 @@ + struct ubd *dev = &ubd_dev[n]; + int err; + +- if(dev->is_dir) +- return(-EISDIR); +- +- if (!dev->file) ++ if(dev->file == NULL) + return(-ENODEV); + + if (ubd_open_dev(dev)) + return(-ENODEV); + + err = ubd_file_size(dev, &dev->size); +- if(err) ++ if(err < 0) + return(err); + + err = ubd_new_disk(MAJOR_NR, dev->size, n, &ubd_gendisk[n]); + if(err) + return(err); + +- if(fake_major) ++ if(fake_major != MAJOR_NR) + ubd_new_disk(fake_major, dev->size, n, + &fake_gendisk[n]); + +@@ -561,42 +645,42 @@ + return(err); + } + +-static int ubd_get_config(char *dev, char *str, int size, char **error_out) ++static int ubd_get_config(char *name, char *str, int size, char **error_out) + { +- struct ubd *ubd; ++ struct ubd *dev; + char *end; +- int major, n = 0; ++ int n, len = 0; + +- major = simple_strtoul(dev, &end, 0); +- if((*end != '\0') || (end == dev)){ +- *error_out = "ubd_get_config : didn't parse major number"; ++ n = simple_strtoul(name, &end, 0); ++ if((*end != '\0') || (end == name)){ ++ *error_out = "ubd_get_config : didn't parse device number"; + return(-1); + } + +- if((major >= MAX_DEV) || (major < 0)){ +- *error_out = "ubd_get_config : major number out of range"; ++ if((n >= MAX_DEV) || (n < 0)){ ++ *error_out = "ubd_get_config : device number out of range"; + return(-1); + } + +- ubd = &ubd_dev[major]; ++ dev = &ubd_dev[n]; + spin_lock(&ubd_lock); + +- if(ubd->file == NULL){ +- CONFIG_CHUNK(str, size, n, "", 1); ++ if(dev->file == NULL){ ++ CONFIG_CHUNK(str, size, len, "", 1); + goto out; + } + +- CONFIG_CHUNK(str, size, n, ubd->file, 0); ++ CONFIG_CHUNK(str, size, len, dev->file, 0); + +- if(ubd->cow.file != NULL){ +- CONFIG_CHUNK(str, size, n, ",", 0); +- CONFIG_CHUNK(str, size, n, ubd->cow.file, 1); ++ if(dev->cow.file != NULL){ ++ CONFIG_CHUNK(str, size, len, ",", 0); ++ CONFIG_CHUNK(str, size, len, dev->cow.file, 1); + } +- else CONFIG_CHUNK(str, size, n, "", 1); ++ else CONFIG_CHUNK(str, size, len, "", 1); + + out: + spin_unlock(&ubd_lock); +- return(n); ++ return(len); + } + + static int ubd_remove(char *str) +@@ -604,11 +688,9 @@ + struct ubd *dev; + int n, err = -ENODEV; + +- if(!isdigit(*str)) +- return(err); /* it should be a number 0-7/a-h */ ++ n = parse_unit(&str); + +- n = *str - '0'; +- if(n >= MAX_DEV) ++ if((n < 0) || (n >= MAX_DEV)) + return(err); + + dev = &ubd_dev[n]; +@@ -669,7 +751,7 @@ + + elevator_init(ubd_queue, &elevator_noop); + +- if (fake_major != 0) { ++ if (fake_major != MAJOR_NR) { + char name[sizeof("ubd_nnn\0")]; + + snprintf(name, sizeof(name), "ubd_%d", fake_major); +@@ -696,6 +778,7 @@ + io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *), + &thread_fd); + if(io_pid < 0){ ++ io_pid = -1; + printk(KERN_ERR + "ubd : Failed to start I/O thread (errno = %d) - " + "falling back to synchronous I/O\n", -io_pid); +@@ -703,8 +786,8 @@ + } + err = um_request_irq(UBD_IRQ, thread_fd, IRQ_READ, ubd_intr, + SA_INTERRUPT, "ubd", ubd_dev); +- if(err != 0) printk(KERN_ERR +- "um_request_irq failed - errno = %d\n", -err); ++ if(err != 0) ++ printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); + return(err); + } + +@@ -714,15 +797,9 @@ + { + struct gendisk *disk = inode->i_bdev->bd_disk; + struct ubd *dev = disk->private_data; +- int err = -EISDIR; +- +- if(dev->is_dir == 1) +- goto out; ++ int err = 0; + +- err = 0; + if(dev->count == 0){ +- dev->openflags = dev->boot_openflags; +- + err = ubd_open_dev(dev); + if(err){ + printk(KERN_ERR "%s: Can't open \"%s\": errno = %d\n", +@@ -749,62 +826,156 @@ + return(0); + } + +-void cowify_req(struct io_thread_req *req, struct ubd *dev) ++static void cowify_bitmap(__u64 io_offset, int length, unsigned long *cow_mask, ++ __u64 *cow_offset, unsigned long *bitmap, ++ __u64 bitmap_offset, unsigned long *bitmap_words, ++ __u64 bitmap_len) +{ -+ struct hppfs_data *data; -+ struct list_head *ele, *next; -+ -+ if(head == NULL) return; -+ -+ list_for_each_safe(ele, next, &head->list){ -+ data = list_entry(ele, struct hppfs_data, list); -+ kfree(data); -+ } -+ kfree(head); -+} ++ __u64 sector = io_offset >> 9; ++ int i, update_bitmap = 0; + -+static struct hppfs_data *hppfs_get_data(int fd, int filter, -+ struct file *proc_file, -+ struct file *hppfs_file, -+ loff_t *size_out) -+{ -+ struct hppfs_data *data, *new, *head; -+ int n, err; ++ for(i = 0; i < length >> 9; i++){ ++ if(cow_mask != NULL) ++ ubd_set_bit(i, (unsigned char *) cow_mask); ++ if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) ++ continue; + -+ err = -ENOMEM; -+ data = kmalloc(sizeof(*data), GFP_KERNEL); -+ if(data == NULL){ -+ printk("hppfs_get_data : head allocation failed\n"); -+ goto failed; ++ update_bitmap = 1; ++ ubd_set_bit(sector + i, (unsigned char *) bitmap); + } + -+ INIT_LIST_HEAD(&data->list); -+ -+ head = data; -+ *size_out = 0; -+ -+ if(filter){ -+ while((n = read_proc(proc_file, data->contents, -+ sizeof(data->contents), NULL, 0)) > 0) -+ os_write_file(fd, data->contents, n); -+ err = os_shutdown_socket(fd, 0, 1); -+ if(err){ -+ printk("hppfs_get_data : failed to shut down " -+ "socket\n"); -+ goto failed_free; -+ } -+ } -+ while(1){ -+ n = os_read_file(fd, data->contents, sizeof(data->contents)); -+ if(n < 0){ -+ err = n; -+ printk("hppfs_get_data : read failed, errno = %d\n", -+ err); -+ goto failed_free; -+ } -+ else if(n == 0) -+ break; ++ if(!update_bitmap) ++ return; + -+ *size_out += n; ++ *cow_offset = sector / (sizeof(unsigned long) * 8); + -+ if(n < sizeof(data->contents)) -+ break; ++ /* This takes care of the case where we're exactly at the end of the ++ * device, and *cow_offset + 1 is off the end. So, just back it up ++ * by one word. Thanks to Lynn Kerby for the fix and James McMechan ++ * for the original diagnosis. ++ */ ++ if(*cow_offset == ((bitmap_len + sizeof(unsigned long) - 1) / ++ sizeof(unsigned long) - 1)) ++ (*cow_offset)--; + -+ new = kmalloc(sizeof(*data), GFP_KERNEL); -+ if(new == 0){ -+ printk("hppfs_get_data : data allocation failed\n"); -+ err = -ENOMEM; -+ goto failed_free; -+ } -+ -+ INIT_LIST_HEAD(&new->list); -+ list_add(&new->list, &data->list); -+ data = new; -+ } -+ return(head); ++ bitmap_words[0] = bitmap[*cow_offset]; ++ bitmap_words[1] = bitmap[*cow_offset + 1]; + -+ failed_free: -+ free_contents(head); -+ failed: -+ return(ERR_PTR(err)); ++ *cow_offset *= sizeof(unsigned long); ++ *cow_offset += bitmap_offset; +} + -+static struct hppfs_private *hppfs_data(void) -+{ -+ struct hppfs_private *data; -+ -+ data = kmalloc(sizeof(*data), GFP_KERNEL); -+ if(data == NULL) -+ return(data); -+ -+ *data = ((struct hppfs_private ) { .host_fd = -1, -+ .len = -1, -+ .contents = NULL } ); -+ return(data); -+} ++static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, ++ __u64 bitmap_offset, __u64 bitmap_len) + { +- int i, update_bitmap, sector = req->offset >> 9; ++ __u64 sector = req->offset >> 9; ++ int i; + + if(req->length > (sizeof(req->sector_mask) * 8) << 9) + panic("Operation too long"); + -+static int file_mode(int fmode) -+{ -+ if(fmode == (FMODE_READ | FMODE_WRITE)) -+ return(O_RDWR); -+ if(fmode == FMODE_READ) -+ return(O_RDONLY); -+ if(fmode == FMODE_WRITE) -+ return(O_WRONLY); -+ return(0); + if(req->op == UBD_READ) { + for(i = 0; i < req->length >> 9; i++){ +- if(ubd_test_bit(sector + i, (unsigned char *) +- dev->cow.bitmap)){ ++ if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) + ubd_set_bit(i, (unsigned char *) + &req->sector_mask); +- } + } +- } +- else { +- update_bitmap = 0; +- for(i = 0; i < req->length >> 9; i++){ +- ubd_set_bit(i, (unsigned char *) +- &req->sector_mask); +- if(!ubd_test_bit(sector + i, (unsigned char *) +- dev->cow.bitmap)) +- update_bitmap = 1; +- ubd_set_bit(sector + i, (unsigned char *) +- dev->cow.bitmap); +- } +- if(update_bitmap){ +- req->cow_offset = sector / (sizeof(unsigned long) * 8); +- req->bitmap_words[0] = +- dev->cow.bitmap[req->cow_offset]; +- req->bitmap_words[1] = +- dev->cow.bitmap[req->cow_offset + 1]; +- req->cow_offset *= sizeof(unsigned long); +- req->cow_offset += dev->cow.bitmap_offset; ++ } ++ else cowify_bitmap(req->offset, req->length, &req->sector_mask, ++ &req->cow_offset, bitmap, bitmap_offset, ++ req->bitmap_words, bitmap_len); +} + -+static int hppfs_open(struct inode *inode, struct file *file) ++static int mmap_fd(struct request *req, struct ubd *dev, __u64 offset) +{ -+ struct hppfs_private *data; -+ struct dentry *proc_dentry; -+ char *host_file; -+ int err, fd, type, filter; ++ __u64 sector; ++ unsigned char *bitmap; ++ int bit, i; + -+ err = -ENOMEM; -+ data = hppfs_data(); -+ if(data == NULL) -+ goto out; ++ /* mmap must have been requested on the command line */ ++ if(!ubd_do_mmap) ++ return(-1); + -+ host_file = dentry_name(file->f_dentry, strlen("/rw")); -+ if(host_file == NULL) -+ goto out_free2; ++ /* The buffer must be page aligned */ ++ if(((unsigned long) req->buffer % UBD_MMAP_BLOCK_SIZE) != 0) ++ return(-1); + -+ proc_dentry = HPPFS_I(inode)->proc_dentry; ++ /* The request must be a page long */ ++ if((req->current_nr_sectors << 9) != PAGE_SIZE) ++ return(-1); + -+ /* XXX This isn't closed anywhere */ -+ err = open_private_file(&data->proc_file, proc_dentry, -+ file_mode(file->f_mode)); -+ if(err) -+ goto out_free1; ++ if(dev->cow.file == NULL) ++ return(dev->fd); + -+ type = os_file_type(host_file); -+ if(type == OS_TYPE_FILE){ -+ fd = os_open_file(host_file, of_read(OPENFLAGS()), 0); -+ if(fd >= 0) -+ data->host_fd = fd; -+ else printk("hppfs_open : failed to open '%s', errno = %d\n", -+ host_file, -fd); ++ sector = offset >> 9; ++ bitmap = (unsigned char *) dev->cow.bitmap; ++ bit = ubd_test_bit(sector, bitmap); + -+ data->contents = NULL; -+ } -+ else if(type == OS_TYPE_DIR){ -+ fd = open_host_sock(host_file, &filter); -+ if(fd > 0){ -+ data->contents = hppfs_get_data(fd, filter, -+ &data->proc_file, -+ file, &data->len); -+ if(!IS_ERR(data->contents)) -+ data->host_fd = fd; -+ } -+ else printk("hppfs_open : failed to open a socket in " -+ "'%s', errno = %d\n", host_file, -fd); ++ for(i = 1; i < req->current_nr_sectors; i++){ ++ if(ubd_test_bit(sector + i, bitmap) != bit) ++ return(-1); + } -+ kfree(host_file); + -+ file->private_data = data; -+ return(0); ++ if(bit || (rq_data_dir(req) == WRITE)) ++ offset += dev->cow.data_offset; + -+ out_free1: -+ kfree(host_file); -+ out_free2: -+ free_contents(data->contents); -+ kfree(data); -+ out: -+ return(err); ++ /* The data on disk must be page aligned */ ++ if((offset % UBD_MMAP_BLOCK_SIZE) != 0) ++ return(-1); ++ ++ return(bit ? dev->fd : dev->cow.fd); +} + -+static int hppfs_dir_open(struct inode *inode, struct file *file) ++static int prepare_mmap_request(struct ubd *dev, int fd, __u64 offset, ++ struct request *req, ++ struct io_thread_req *io_req) +{ -+ struct hppfs_private *data; -+ struct dentry *proc_dentry; + int err; + -+ err = -ENOMEM; -+ data = hppfs_data(); -+ if(data == NULL) -+ goto out; ++ if(rq_data_dir(req) == WRITE){ ++ /* Writes are almost no-ops since the new data is already in the ++ * host page cache ++ */ ++ dev->map_writes++; ++ if(dev->cow.file != NULL) ++ cowify_bitmap(io_req->offset, io_req->length, ++ &io_req->sector_mask, &io_req->cow_offset, ++ dev->cow.bitmap, dev->cow.bitmap_offset, ++ io_req->bitmap_words, ++ dev->cow.bitmap_len); ++ } ++ else { ++ int w; + -+ proc_dentry = HPPFS_I(inode)->proc_dentry; -+ err = open_private_file(&data->proc_file, proc_dentry, -+ file_mode(file->f_mode)); -+ if(err) -+ goto out_free; ++ if((dev->cow.file != NULL) && (fd == dev->cow.fd)) ++ w = 0; ++ else w = dev->openflags.w; + -+ file->private_data = data; ++ if((dev->cow.file != NULL) && (fd == dev->fd)) ++ offset += dev->cow.data_offset; ++ ++ err = physmem_subst_mapping(req->buffer, fd, offset, w); ++ if(err){ ++ printk("physmem_subst_mapping failed, err = %d\n", ++ -err); ++ return(1); + } ++ dev->map_reads++; + } ++ io_req->op = UBD_MMAP; ++ io_req->buffer = req->buffer; + return(0); + } + + static int prepare_request(struct request *req, struct io_thread_req *io_req) + { + struct gendisk *disk = req->rq_disk; + struct ubd *dev = disk->private_data; +- __u64 block; +- int nsect; ++ __u64 offset; ++ int len, fd; + + if(req->rq_status == RQ_INACTIVE) return(1); + +- if(dev->is_dir){ +- strcpy(req->buffer, "HOSTFS:"); +- strcat(req->buffer, dev->file); +- spin_lock(&ubd_io_lock); +- end_request(req, 1); +- spin_unlock(&ubd_io_lock); +- return(1); +- } +- + if((rq_data_dir(req) == WRITE) && !dev->openflags.w){ + printk("Write attempted on readonly ubd device %s\n", + disk->disk_name); +@@ -814,23 +985,49 @@ + return(1); + } + +- block = req->sector; +- nsect = req->current_nr_sectors; ++ offset = ((__u64) req->sector) << 9; ++ len = req->current_nr_sectors << 9; + +- io_req->op = rq_data_dir(req) == READ ? UBD_READ : UBD_WRITE; + io_req->fds[0] = (dev->cow.file != NULL) ? dev->cow.fd : dev->fd; + io_req->fds[1] = dev->fd; ++ io_req->map_fd = -1; ++ io_req->cow_offset = -1; ++ io_req->offset = offset; ++ io_req->length = len; ++ io_req->error = 0; ++ io_req->sector_mask = 0; + -+ out_free: -+ kfree(data); -+ out: -+ return(err); -+} ++ fd = mmap_fd(req, dev, io_req->offset); ++ if(fd > 0){ ++ /* If mmapping is otherwise OK, but the first access to the ++ * page is a write, then it's not mapped in yet. So we have ++ * to write the data to disk first, then we can map the disk ++ * page in and continue normally from there. ++ */ ++ if((rq_data_dir(req) == WRITE) && !is_remapped(req->buffer)){ ++ io_req->map_fd = dev->fd; ++ io_req->map_offset = io_req->offset + ++ dev->cow.data_offset; ++ dev->write_maps++; ++ } ++ else return(prepare_mmap_request(dev, fd, io_req->offset, req, ++ io_req)); ++ } + -+static loff_t hppfs_llseek(struct file *file, loff_t off, int where) ++ if(rq_data_dir(req) == READ) ++ dev->nomap_reads++; ++ else dev->nomap_writes++; ++ ++ io_req->op = (rq_data_dir(req) == READ) ? UBD_READ : UBD_WRITE; + io_req->offsets[0] = 0; + io_req->offsets[1] = dev->cow.data_offset; +- io_req->offset = ((__u64) block) << 9; +- io_req->length = nsect << 9; + io_req->buffer = req->buffer; + io_req->sectorsize = 1 << 9; +- io_req->sector_mask = 0; +- io_req->cow_offset = -1; +- io_req->error = 0; + +- if(dev->cow.file != NULL) cowify_req(io_req, dev); ++ if(dev->cow.file != NULL) ++ cowify_req(io_req, dev->cow.bitmap, dev->cow.bitmap_offset, ++ dev->cow.bitmap_len); ++ + return(0); + } + +@@ -841,7 +1038,7 @@ + int err, n; + + if(thread_fd == -1){ +- while(!list_empty(&q->queue_head)){ ++ while(!elv_queue_empty(q)){ + req = elv_next_request(q); + err = prepare_request(req, &io_req); + if(!err){ +@@ -851,7 +1048,8 @@ + } + } + else { +- if(do_ubd || list_empty(&q->queue_head)) return; ++ if(do_ubd || elv_queue_empty(q)) ++ return; + req = elv_next_request(q); + err = prepare_request(req, &io_req); + if(!err){ +@@ -885,7 +1083,7 @@ + g.heads = 128; + g.sectors = 32; + g.cylinders = dev->size / (128 * 32 * 512); +- g.start = 2; ++ g.start = get_start_sect(inode->i_bdev); + return(copy_to_user(loc, &g, sizeof(g)) ? -EFAULT : 0); + + case HDIO_SET_UNMASKINTR: +@@ -935,6 +1133,142 @@ + return(-EINVAL); + } + ++static int ubd_check_remapped(int fd, unsigned long address, int is_write, ++ __u64 offset) +{ -+ struct hppfs_private *data = file->private_data; -+ struct file *proc_file = &data->proc_file; -+ loff_t (*llseek)(struct file *, loff_t, int); -+ loff_t ret; ++ __u64 bitmap_offset; ++ unsigned long new_bitmap[2]; ++ int i, err, n; + -+ llseek = proc_file->f_dentry->d_inode->i_fop->llseek; -+ if(llseek != NULL){ -+ ret = (*llseek)(proc_file, off, where); -+ if(ret < 0) -+ return(ret); -+ } ++ /* If it's not a write access, we can't do anything about it */ ++ if(!is_write) ++ return(0); + -+ return(default_llseek(file, off, where)); -+} ++ /* We have a write */ ++ for(i = 0; i < sizeof(ubd_dev) / sizeof(ubd_dev[0]); i++){ ++ struct ubd *dev = &ubd_dev[i]; + -+static struct file_operations hppfs_file_fops = { -+ .owner = NULL, -+ .llseek = hppfs_llseek, -+ .read = hppfs_read, -+ .write = hppfs_write, -+ .open = hppfs_open, -+}; ++ if((dev->fd != fd) && (dev->cow.fd != fd)) ++ continue; + -+struct hppfs_dirent { -+ void *vfs_dirent; -+ filldir_t filldir; -+ struct dentry *dentry; -+}; ++ /* It's a write to a ubd device */ + -+static int hppfs_filldir(void *d, const char *name, int size, -+ loff_t offset, ino_t inode, unsigned int type) -+{ -+ struct hppfs_dirent *dirent = d; ++ if(!dev->openflags.w){ ++ /* It's a write access on a read-only device - probably ++ * shouldn't happen. If the kernel is trying to change ++ * something with no intention of writing it back out, ++ * then this message will clue us in that this needs ++ * fixing ++ */ ++ printk("Write access to mapped page from readonly ubd " ++ "device %d\n", i); ++ return(0); ++ } + -+ if(file_removed(dirent->dentry, name)) -+ return(0); ++ /* It's a write to a writeable ubd device - it must be COWed ++ * because, otherwise, the page would have been mapped in ++ * writeable ++ */ + -+ return((*dirent->filldir)(dirent->vfs_dirent, name, size, offset, -+ inode, type)); -+} ++ if(!dev->cow.file) ++ panic("Write fault on writeable non-COW ubd device %d", ++ i); + -+static int hppfs_readdir(struct file *file, void *ent, filldir_t filldir) -+{ -+ struct hppfs_private *data = file->private_data; -+ struct file *proc_file = &data->proc_file; -+ int (*readdir)(struct file *, void *, filldir_t); -+ struct hppfs_dirent dirent = ((struct hppfs_dirent) -+ { .vfs_dirent = ent, -+ .filldir = filldir, -+ .dentry = file->f_dentry } ); -+ int err; ++ /* It should also be an access to the backing file since the ++ * COW pages should be mapped in read-write ++ */ ++ ++ if(fd == dev->fd) ++ panic("Write fault on a backing page of ubd " ++ "device %d\n", i); ++ ++ /* So, we do the write, copying the backing data to the COW ++ * file... ++ */ + -+ readdir = proc_file->f_dentry->d_inode->i_fop->readdir; ++ err = os_seek_file(dev->fd, offset + dev->cow.data_offset); ++ if(err < 0) ++ panic("Couldn't seek to %lld in COW file of ubd " ++ "device %d, err = %d", ++ offset + dev->cow.data_offset, i, -err); + -+ proc_file->f_pos = file->f_pos; -+ err = (*readdir)(proc_file, &dirent, hppfs_filldir); -+ file->f_pos = proc_file->f_pos; ++ n = os_write_file(dev->fd, (void *) address, PAGE_SIZE); ++ if(n != PAGE_SIZE) ++ panic("Couldn't copy data to COW file of ubd " ++ "device %d, err = %d", i, -n); + -+ return(err); -+} ++ /* ... updating the COW bitmap... */ + -+static int hppfs_fsync(struct file *file, struct dentry *dentry, int datasync) -+{ -+ return(0); -+} ++ cowify_bitmap(offset, PAGE_SIZE, NULL, &bitmap_offset, ++ dev->cow.bitmap, dev->cow.bitmap_offset, ++ new_bitmap, dev->cow.bitmap_len); + -+static struct file_operations hppfs_dir_fops = { -+ .owner = NULL, -+ .readdir = hppfs_readdir, -+ .open = hppfs_dir_open, -+ .fsync = hppfs_fsync, -+}; ++ err = os_seek_file(dev->fd, bitmap_offset); ++ if(err < 0) ++ panic("Couldn't seek to %lld in COW file of ubd " ++ "device %d, err = %d", bitmap_offset, i, -err); + -+static int hppfs_statfs(struct super_block *sb, struct kstatfs *sf) -+{ -+ sf->f_blocks = 0; -+ sf->f_bfree = 0; -+ sf->f_bavail = 0; -+ sf->f_files = 0; -+ sf->f_ffree = 0; -+ sf->f_type = HPPFS_SUPER_MAGIC; -+ return(0); -+} ++ n = os_write_file(dev->fd, new_bitmap, sizeof(new_bitmap)); ++ if(n != sizeof(new_bitmap)) ++ panic("Couldn't update bitmap of ubd device %d, " ++ "err = %d", i, -n); ++ ++ /* Maybe we can map the COW page in, and maybe we can't. If ++ * it is a pre-V3 COW file, we can't, since the alignment will ++ * be wrong. If it is a V3 or later COW file which has been ++ * moved to a system with a larger page size, then maybe we ++ * can't, depending on the exact location of the page. ++ */ + -+static struct inode *hppfs_alloc_inode(struct super_block *sb) -+{ -+ struct hppfs_inode_info *hi; ++ offset += dev->cow.data_offset; + -+ hi = kmalloc(sizeof(*hi), GFP_KERNEL); -+ if(hi == NULL) -+ return(NULL); ++ /* Remove the remapping, putting the original anonymous page ++ * back. If the COW file can be mapped in, that is done. ++ * Otherwise, the COW page is read in. ++ */ + -+ *hi = ((struct hppfs_inode_info) { .proc_dentry = NULL }); -+ inode_init_once(&hi->vfs_inode); -+ return(&hi->vfs_inode); -+} ++ if(!physmem_remove_mapping((void *) address)) ++ panic("Address 0x%lx not remapped by ubd device %d", ++ address, i); ++ if((offset % UBD_MMAP_BLOCK_SIZE) == 0) ++ physmem_subst_mapping((void *) address, dev->fd, ++ offset, 1); ++ else { ++ err = os_seek_file(dev->fd, offset); ++ if(err < 0) ++ panic("Couldn't seek to %lld in COW file of " ++ "ubd device %d, err = %d", offset, i, ++ -err); + -+void hppfs_delete_inode(struct inode *ino) -+{ -+ clear_inode(ino); -+} ++ n = os_read_file(dev->fd, (void *) address, PAGE_SIZE); ++ if(n != PAGE_SIZE) ++ panic("Failed to read page from offset %llx of " ++ "COW file of ubd device %d, err = %d", ++ offset, i, -n); ++ } + -+static void hppfs_destroy_inode(struct inode *inode) -+{ -+ kfree(HPPFS_I(inode)); ++ return(1); ++ } ++ ++ /* It's not a write on a ubd device */ ++ return(0); +} + -+static struct super_operations hppfs_sbops = { -+ .alloc_inode = hppfs_alloc_inode, -+ .destroy_inode = hppfs_destroy_inode, -+ .read_inode = hppfs_read_inode, -+ .delete_inode = hppfs_delete_inode, -+ .statfs = hppfs_statfs, ++static struct remapper ubd_remapper = { ++ .list = LIST_HEAD_INIT(ubd_remapper.list), ++ .proc = ubd_check_remapped, +}; + -+static int hppfs_readlink(struct dentry *dentry, char *buffer, int buflen) ++static int ubd_remapper_setup(void) +{ -+ struct file proc_file; -+ struct dentry *proc_dentry; -+ int (*readlink)(struct dentry *, char *, int); -+ int err, n; -+ -+ proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; -+ err = open_private_file(&proc_file, proc_dentry, O_RDONLY); -+ if(err) -+ return(err); -+ -+ readlink = proc_dentry->d_inode->i_op->readlink; -+ n = (*readlink)(proc_dentry, buffer, buflen); ++ if(ubd_do_mmap) ++ register_remapper(&ubd_remapper); + -+ close_private_file(&proc_file); -+ -+ return(n); ++ return(0); +} + -+static int hppfs_follow_link(struct dentry *dentry, struct nameidata *nd) ++__initcall(ubd_remapper_setup); ++ + /* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically +Index: uml-2.6.7/arch/um/drivers/xterm.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/xterm.c 2004-07-16 19:35:55.930765080 +0300 ++++ uml-2.6.7/arch/um/drivers/xterm.c 2004-07-16 19:47:23.699208384 +0300 +@@ -8,7 +8,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -36,7 +35,8 @@ + { + struct xterm_chan *data; + +- if((data = malloc(sizeof(*data))) == NULL) return(NULL); ++ data = malloc(sizeof(*data)); ++ if(data == NULL) return(NULL); + *data = ((struct xterm_chan) { .pid = -1, + .helper_pid = -1, + .device = device, +@@ -93,7 +93,7 @@ + "/usr/lib/uml/port-helper", "-uml-socket", + file, NULL }; + +- if(access(argv[4], X_OK)) ++ if(os_access(argv[4], OS_ACC_X_OK) < 0) + argv[4] = "port-helper"; + + fd = mkstemp(file); +@@ -106,13 +106,13 @@ + printk("xterm_open : unlink failed, errno = %d\n", errno); + return(-errno); + } +- close(fd); ++ os_close_file(fd); + +- fd = create_unix_socket(file, sizeof(file)); ++ fd = os_create_unix_socket(file, sizeof(file), 1); + if(fd < 0){ + printk("xterm_open : create_unix_socket failed, errno = %d\n", + -fd); +- return(-fd); ++ return(fd); + } + + sprintf(title, data->title, data->device); +@@ -128,15 +128,16 @@ + if(data->direct_rcv) + new = os_rcv_fd(fd, &data->helper_pid); + else { +- if((err = os_set_fd_block(fd, 0)) != 0){ ++ err = os_set_fd_block(fd, 0); ++ if(err < 0){ + printk("xterm_open : failed to set descriptor " +- "non-blocking, errno = %d\n", err); ++ "non-blocking, err = %d\n", -err); + return(err); + } + new = xterm_fd(fd, &data->helper_pid); + } + if(new < 0){ +- printk("xterm_open : os_rcv_fd failed, errno = %d\n", -new); ++ printk("xterm_open : os_rcv_fd failed, err = %d\n", -new); + goto out; + } + +@@ -160,7 +161,7 @@ + if(data->helper_pid != -1) + os_kill_process(data->helper_pid, 0); + data->helper_pid = -1; +- close(fd); ++ os_close_file(fd); + } + + void xterm_free(void *d) +Index: uml-2.6.7/arch/um/drivers/mconsole_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/mconsole_kern.c 2004-07-16 19:35:52.654263184 +0300 ++++ uml-2.6.7/arch/um/drivers/mconsole_kern.c 2004-07-16 19:47:23.687210208 +0300 +@@ -1,6 +1,6 @@ + /* + * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) +- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +@@ -15,6 +15,9 @@ + #include "linux/sysrq.h" + #include "linux/workqueue.h" + #include "linux/module.h" ++#include "linux/file.h" ++#include "linux/fs.h" ++#include "linux/namei.h" + #include "linux/proc_fs.h" + #include "asm/irq.h" + #include "asm/uaccess.h" +@@ -27,6 +30,7 @@ + #include "init.h" + #include "os.h" + #include "umid.h" ++#include "irq_kern.h" + + static int do_unlink_socket(struct notifier_block *notifier, + unsigned long what, void *data) +@@ -67,7 +71,7 @@ + + DECLARE_WORK(mconsole_work, mc_work_proc, NULL); + +-void mconsole_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++irqreturn_t mconsole_interrupt(int irq, void *dev_id, struct pt_regs *regs) + { + int fd; + struct mconsole_entry *new; +@@ -75,9 +79,10 @@ + + fd = (int) dev_id; + while (mconsole_get_request(fd, &req)){ +- if(req.cmd->as_interrupt) (*req.cmd->handler)(&req); ++ if(req.cmd->context == MCONSOLE_INTR) ++ (*req.cmd->handler)(&req); + else { +- new = kmalloc(sizeof(req), GFP_ATOMIC); ++ new = kmalloc(sizeof(*new), GFP_ATOMIC); + if(new == NULL) + mconsole_reply(&req, "Out of memory", 1, 0); + else { +@@ -88,6 +93,7 @@ + } + if(!list_empty(&mc_requests)) schedule_work(&mconsole_work); + reactivate_fd(fd, MCONSOLE_IRQ); ++ return(IRQ_HANDLED); + } + + void mconsole_version(struct mc_request *req) +@@ -100,20 +106,109 @@ + mconsole_reply(req, version, 0, 0); + } + ++void mconsole_log(struct mc_request *req) +{ -+ struct file proc_file; -+ struct dentry *proc_dentry; -+ int (*follow_link)(struct dentry *, struct nameidata *); -+ int err, n; -+ -+ proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry; -+ err = open_private_file(&proc_file, proc_dentry, O_RDONLY); -+ if(err) -+ return(err); -+ -+ follow_link = proc_dentry->d_inode->i_op->follow_link; -+ n = (*follow_link)(proc_dentry, nd); -+ -+ close_private_file(&proc_file); ++ int len; ++ char *ptr = req->request.data; + -+ return(n); -+} -+ -+static struct inode_operations hppfs_dir_iops = { -+ .lookup = hppfs_lookup, -+}; -+ -+static struct inode_operations hppfs_link_iops = { -+ .readlink = hppfs_readlink, -+ .follow_link = hppfs_follow_link, -+}; -+ -+static int init_inode(struct inode *inode, struct dentry *dentry) -+{ -+ if(S_ISDIR(dentry->d_inode->i_mode)){ -+ inode->i_op = &hppfs_dir_iops; -+ inode->i_fop = &hppfs_dir_fops; -+ } -+ else if(S_ISLNK(dentry->d_inode->i_mode)){ -+ inode->i_op = &hppfs_link_iops; -+ inode->i_fop = &hppfs_file_fops; -+ } -+ else { -+ inode->i_op = &hppfs_file_iops; -+ inode->i_fop = &hppfs_file_fops; -+ } -+ -+ HPPFS_I(inode)->proc_dentry = dentry; ++ ptr += strlen("log "); + -+ return(0); ++ len = req->len - (ptr - req->request.data); ++ printk("%.*s", len, ptr); ++ mconsole_reply(req, "", 0, 0); +} + -+static int hppfs_fill_super(struct super_block *sb, void *d, int silent) ++void mconsole_proc(struct mc_request *req) +{ -+ struct inode *root_inode; -+ struct file_system_type *procfs; -+ struct super_block *proc_sb; -+ int err; -+ -+ err = -ENOENT; -+ procfs = get_fs_type("proc"); -+ if(procfs == NULL) -+ goto out; -+ -+ if(list_empty(&procfs->fs_supers)) -+ goto out; -+ -+ proc_sb = list_entry(procfs->fs_supers.next, struct super_block, -+ s_instances); ++ struct nameidata nd; ++ struct file_system_type *proc; ++ struct super_block *super; ++ struct file *file; ++ int n, err; ++ char *ptr = req->request.data, *buf; + -+ sb->s_blocksize = 1024; -+ sb->s_blocksize_bits = 10; -+ sb->s_magic = HPPFS_SUPER_MAGIC; -+ sb->s_op = &hppfs_sbops; ++ ptr += strlen("proc"); ++ while(isspace(*ptr)) ptr++; + -+ root_inode = iget(sb, 0); -+ if(root_inode == NULL) ++ proc = get_fs_type("proc"); ++ if(proc == NULL){ ++ mconsole_reply(req, "procfs not registered", 1, 0); + goto out; ++ } + -+ err = init_inode(root_inode, proc_sb->s_root); -+ if(err) -+ goto out_put; -+ -+ err = -ENOMEM; -+ sb->s_root = d_alloc_root(root_inode); -+ if(sb->s_root == NULL) -+ goto out_put; -+ -+ hppfs_read_inode(root_inode); ++ super = (*proc->get_sb)(proc, 0, NULL, NULL); ++ put_filesystem(proc); ++ if(super == NULL){ ++ mconsole_reply(req, "Failed to get procfs superblock", 1, 0); ++ goto out; ++ } ++ up_write(&super->s_umount); + -+ return(0); ++ nd.dentry = super->s_root; ++ nd.mnt = NULL; ++ nd.flags = O_RDONLY + 1; ++ nd.last_type = LAST_ROOT; + -+ out_put: -+ iput(root_inode); -+ out: -+ return(err); -+} ++ err = link_path_walk(ptr, &nd); ++ if(err){ ++ mconsole_reply(req, "Failed to look up file", 1, 0); ++ goto out_kill; ++ } + -+static struct super_block *hppfs_read_super(struct file_system_type *type, -+ int flags, const char *dev_name, -+ void *data) -+{ -+ return(get_sb_nodev(type, flags, data, hppfs_fill_super)); -+} ++ file = dentry_open(nd.dentry, nd.mnt, O_RDONLY); ++ if(IS_ERR(file)){ ++ mconsole_reply(req, "Failed to open file", 1, 0); ++ goto out_kill; ++ } + -+static struct file_system_type hppfs_type = { -+ .owner = THIS_MODULE, -+ .name = "hppfs", -+ .get_sb = hppfs_read_super, -+ .kill_sb = kill_anon_super, -+ .fs_flags = 0, -+}; ++ buf = kmalloc(PAGE_SIZE, GFP_KERNEL); ++ if(buf == NULL){ ++ mconsole_reply(req, "Failed to allocate buffer", 1, 0); ++ goto out_fput; ++ } + -+static int __init init_hppfs(void) -+{ -+ return(register_filesystem(&hppfs_type)); -+} ++ if((file->f_op != NULL) && (file->f_op->read != NULL)){ ++ do { ++ n = (*file->f_op->read)(file, buf, PAGE_SIZE - 1, ++ &file->f_pos); ++ if(n >= 0){ ++ buf[n] = '\0'; ++ mconsole_reply(req, buf, 0, (n > 0)); ++ } ++ else { ++ mconsole_reply(req, "Read of file failed", ++ 1, 0); ++ goto out_free; ++ } ++ } while(n > 0); ++ } ++ else mconsole_reply(req, "", 0, 0); + -+static void __exit exit_hppfs(void) -+{ -+ unregister_filesystem(&hppfs_type); ++ out_free: ++ kfree(buf); ++ out_fput: ++ fput(file); ++ out_kill: ++ deactivate_super(super); ++ out: ; +} + -+module_init(init_hppfs) -+module_exit(exit_hppfs) -+MODULE_LICENSE("GPL"); -+ -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/fs/hppfs/Makefile b/fs/hppfs/Makefile ---- a/fs/hppfs/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ b/fs/hppfs/Makefile 2004-03-10 08:39:13.000000000 -0500 -@@ -0,0 +1,19 @@ -+# -+# Copyright (C) 2002, 2003 Jeff Dike (jdike@karaya.com) -+# Licensed under the GPL -+# -+ -+hppfs-objs := hppfs_kern.o + #define UML_MCONSOLE_HELPTEXT \ +-"Commands: +- version - Get kernel version +- help - Print this message +- halt - Halt UML +- reboot - Reboot UML +- config = - Add a new device to UML; +- same syntax as command line +- config - Query the configuration of a device +- remove - Remove a device from UML +- sysrq - Performs the SysRq action controlled by the letter +- cad - invoke the Ctl-Alt-Del handler +- stop - pause the UML; it will do nothing until it receives a 'go' +- go - continue the UML after a 'stop' ++"Commands: \n\ ++ version - Get kernel version \n\ ++ help - Print this message \n\ ++ halt - Halt UML \n\ ++ reboot - Reboot UML \n\ ++ config = - Add a new device to UML; \n\ ++ same syntax as command line \n\ ++ config - Query the configuration of a device \n\ ++ remove - Remove a device from UML \n\ ++ sysrq - Performs the SysRq action controlled by the letter \n\ ++ cad - invoke the Ctl-Alt-Del handler \n\ ++ stop - pause the UML; it will do nothing until it receives a 'go' \n\ ++ go - continue the UML after a 'stop' \n\ ++ log - make UML enter into the kernel log\n\ ++ proc - returns the contents of the UML's /proc/\n\ + " + + void mconsole_help(struct mc_request *req) +@@ -302,7 +397,7 @@ + if(umid_file_name("mconsole", file, sizeof(file))) return(-1); + snprintf(mconsole_socket_name, sizeof(file), "%s", file); + +- sock = create_unix_socket(file, sizeof(file)); ++ sock = os_create_unix_socket(file, sizeof(file), 1); + if (sock < 0){ + printk("Failed to initialize management console\n"); + return(1); +@@ -344,11 +439,16 @@ + if(buf == NULL) + return(-ENOMEM); + +- if(copy_from_user(buf, buffer, count)) +- return(-EFAULT); ++ if(copy_from_user(buf, buffer, count)){ ++ count = -EFAULT; ++ goto out; ++ } + -+obj-y = -+obj-$(CONFIG_HPPFS) += hppfs.o + buf[count] = '\0'; + + mconsole_notify(notify_socket, MCONSOLE_USER_NOTIFY, buf, count); ++ out: ++ kfree(buf); + return(count); + } + +Index: uml-2.6.7/arch/um/Makefile-skas +=================================================================== +--- uml-2.6.7.orig/arch/um/Makefile-skas 2004-07-16 19:36:37.092507544 +0300 ++++ uml-2.6.7/arch/um/Makefile-skas 2004-07-16 19:47:23.764198504 +0300 +@@ -14,7 +14,7 @@ + LINK_SKAS = -Wl,-rpath,/lib + LD_SCRIPT_SKAS = dyn.lds.s + +-GEN_HEADERS += $(ARCH_DIR)/kernel/skas/include/skas_ptregs.h ++GEN_HEADERS += $(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h + +-$(ARCH_DIR)/kernel/skas/include/skas_ptregs.h : +- $(MAKE) -C $(ARCH_DIR)/kernel/skas include/skas_ptregs.h ++$(TOPDIR)/$(ARCH_DIR)/include/skas_ptregs.h : ++ $(Q)$(MAKE) $(build)=$(ARCH_DIR)/kernel/skas $@ +Index: uml-2.6.7/arch/um/kernel/sys_call_table.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/sys_call_table.c 2004-07-16 19:37:20.386925792 +0300 ++++ uml-2.6.7/arch/um/kernel/sys_call_table.c 2004-07-16 19:47:23.739202304 +0300 +@@ -5,7 +5,6 @@ + + #include "linux/config.h" + #include "linux/unistd.h" +-#include "linux/version.h" + #include "linux/sys.h" + #include "linux/swap.h" + #include "linux/syscalls.h" +@@ -14,251 +13,50 @@ + #include "sysdep/syscalls.h" + #include "kern_util.h" + +-extern syscall_handler_t sys_restart_syscall; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_exit; ++#ifdef CONFIG_NFSD ++#define NFSSERVCTL sys_nfsservctl ++#else ++#define NFSSERVCTL sys_ni_syscall ++#endif + -+clean: ++#define LAST_GENERIC_SYSCALL __NR_vserver + -+modules: ++#if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL ++#define LAST_SYSCALL LAST_GENERIC_SYSCALL ++#else ++#define LAST_SYSCALL LAST_ARCH_SYSCALL ++#endif + -+fastdep: + extern syscall_handler_t sys_fork; +-extern syscall_handler_t sys_creat; +-extern syscall_handler_t sys_link; +-extern syscall_handler_t sys_unlink; +-extern syscall_handler_t sys_chdir; +-extern syscall_handler_t sys_mknod; +-extern syscall_handler_t sys_chmod; +-extern syscall_handler_t sys_lchown16; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_stat; +-extern syscall_handler_t sys_getpid; +-extern syscall_handler_t sys_oldumount; +-extern syscall_handler_t sys_setuid16; +-extern syscall_handler_t sys_getuid16; ++extern syscall_handler_t sys_execve; ++extern syscall_handler_t um_time; ++extern syscall_handler_t um_mount; ++extern syscall_handler_t um_stime; + extern syscall_handler_t sys_ptrace; +-extern syscall_handler_t sys_alarm; +-extern syscall_handler_t sys_fstat; +-extern syscall_handler_t sys_pause; +-extern syscall_handler_t sys_utime; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_access; +-extern syscall_handler_t sys_nice; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_sync; +-extern syscall_handler_t sys_kill; +-extern syscall_handler_t sys_rename; +-extern syscall_handler_t sys_mkdir; +-extern syscall_handler_t sys_rmdir; + extern syscall_handler_t sys_pipe; +-extern syscall_handler_t sys_times; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_brk; +-extern syscall_handler_t sys_setgid16; +-extern syscall_handler_t sys_getgid16; +-extern syscall_handler_t sys_signal; +-extern syscall_handler_t sys_geteuid16; +-extern syscall_handler_t sys_getegid16; +-extern syscall_handler_t sys_acct; +-extern syscall_handler_t sys_umount; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_ioctl; +-extern syscall_handler_t sys_fcntl; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_setpgid; +-extern syscall_handler_t sys_ni_syscall; + extern syscall_handler_t sys_olduname; +-extern syscall_handler_t sys_umask; +-extern syscall_handler_t sys_chroot; +-extern syscall_handler_t sys_ustat; +-extern syscall_handler_t sys_dup2; +-extern syscall_handler_t sys_getppid; +-extern syscall_handler_t sys_getpgrp; + extern syscall_handler_t sys_sigaction; +-extern syscall_handler_t sys_sgetmask; +-extern syscall_handler_t sys_ssetmask; +-extern syscall_handler_t sys_setreuid16; +-extern syscall_handler_t sys_setregid16; + extern syscall_handler_t sys_sigsuspend; +-extern syscall_handler_t sys_sigpending; +-extern syscall_handler_t sys_sethostname; +-extern syscall_handler_t sys_setrlimit; +-extern syscall_handler_t sys_old_getrlimit; +-extern syscall_handler_t sys_getrusage; +-extern syscall_handler_t sys_gettimeofday; +-extern syscall_handler_t sys_settimeofday; +-extern syscall_handler_t sys_getgroups16; +-extern syscall_handler_t sys_setgroups16; +-extern syscall_handler_t sys_symlink; +-extern syscall_handler_t sys_lstat; +-extern syscall_handler_t sys_readlink; +-extern syscall_handler_t sys_swapon; +-extern syscall_handler_t sys_uselib; +-extern syscall_handler_t sys_reboot; + extern syscall_handler_t old_readdir; +-extern syscall_handler_t sys_munmap; +-extern syscall_handler_t sys_truncate; +-extern syscall_handler_t sys_ftruncate; +-extern syscall_handler_t sys_fchmod; +-extern syscall_handler_t sys_fchown16; +-extern syscall_handler_t sys_getpriority; +-extern syscall_handler_t sys_setpriority; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_statfs; +-extern syscall_handler_t sys_fstatfs; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_socketcall; +-extern syscall_handler_t sys_syslog; +-extern syscall_handler_t sys_setitimer; +-extern syscall_handler_t sys_getitimer; +-extern syscall_handler_t sys_newstat; +-extern syscall_handler_t sys_newlstat; +-extern syscall_handler_t sys_newfstat; + extern syscall_handler_t sys_uname; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_vhangup; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_swapoff; +-extern syscall_handler_t sys_sysinfo; + extern syscall_handler_t sys_ipc; +-extern syscall_handler_t sys_fsync; + extern syscall_handler_t sys_sigreturn; +-extern syscall_handler_t sys_rt_sigreturn; + extern syscall_handler_t sys_clone; +-extern syscall_handler_t sys_setdomainname; +-extern syscall_handler_t sys_newuname; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_adjtimex; +-extern syscall_handler_t sys_mprotect; +-extern syscall_handler_t sys_sigprocmask; +-extern syscall_handler_t sys_init_module; +-extern syscall_handler_t sys_delete_module; +-extern syscall_handler_t sys_quotactl; +-extern syscall_handler_t sys_getpgid; +-extern syscall_handler_t sys_fchdir; +-extern syscall_handler_t sys_bdflush; +-extern syscall_handler_t sys_sysfs; +-extern syscall_handler_t sys_personality; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_setfsuid16; +-extern syscall_handler_t sys_setfsgid16; +-extern syscall_handler_t sys_llseek; +-extern syscall_handler_t sys_getdents; +-extern syscall_handler_t sys_flock; +-extern syscall_handler_t sys_msync; +-extern syscall_handler_t sys_readv; +-extern syscall_handler_t sys_writev; +-extern syscall_handler_t sys_getsid; +-extern syscall_handler_t sys_fdatasync; +-extern syscall_handler_t sys_mlock; +-extern syscall_handler_t sys_munlock; +-extern syscall_handler_t sys_mlockall; +-extern syscall_handler_t sys_munlockall; +-extern syscall_handler_t sys_sched_setparam; +-extern syscall_handler_t sys_sched_getparam; +-extern syscall_handler_t sys_sched_setscheduler; +-extern syscall_handler_t sys_sched_getscheduler; +-extern syscall_handler_t sys_sched_get_priority_max; +-extern syscall_handler_t sys_sched_get_priority_min; +-extern syscall_handler_t sys_sched_rr_get_interval; +-extern syscall_handler_t sys_nanosleep; +-extern syscall_handler_t sys_mremap; +-extern syscall_handler_t sys_setresuid16; +-extern syscall_handler_t sys_getresuid16; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_poll; +-extern syscall_handler_t sys_nfsservctl; +-extern syscall_handler_t sys_setresgid16; +-extern syscall_handler_t sys_getresgid16; +-extern syscall_handler_t sys_prctl; +-extern syscall_handler_t sys_ni_syscall; ++extern syscall_handler_t sys_rt_sigreturn; + extern syscall_handler_t sys_rt_sigaction; +-extern syscall_handler_t sys_rt_sigprocmask; +-extern syscall_handler_t sys_rt_sigpending; +-extern syscall_handler_t sys_rt_sigtimedwait; +-extern syscall_handler_t sys_rt_sigqueueinfo; +-extern syscall_handler_t sys_rt_sigsuspend; +-extern syscall_handler_t sys_pread64; +-extern syscall_handler_t sys_pwrite64; +-extern syscall_handler_t sys_chown16; +-extern syscall_handler_t sys_getcwd; +-extern syscall_handler_t sys_capget; +-extern syscall_handler_t sys_capset; + extern syscall_handler_t sys_sigaltstack; +-extern syscall_handler_t sys_sendfile; +-extern syscall_handler_t sys_ni_syscall; +-extern syscall_handler_t sys_ni_syscall; + extern syscall_handler_t sys_vfork; +-extern syscall_handler_t sys_getrlimit; + extern syscall_handler_t sys_mmap2; +-extern syscall_handler_t sys_truncate64; +-extern syscall_handler_t sys_ftruncate64; +-extern syscall_handler_t sys_stat64; +-extern syscall_handler_t sys_lstat64; +-extern syscall_handler_t sys_fstat64; +-extern syscall_handler_t sys_lchown; +-extern syscall_handler_t sys_getuid; +-extern syscall_handler_t sys_getgid; +-extern syscall_handler_t sys_geteuid; +-extern syscall_handler_t sys_getegid; +-extern syscall_handler_t sys_setreuid; +-extern syscall_handler_t sys_setregid; +-extern syscall_handler_t sys_getgroups; +-extern syscall_handler_t sys_setgroups; +-extern syscall_handler_t sys_fchown; +-extern syscall_handler_t sys_setresuid; +-extern syscall_handler_t sys_getresuid; +-extern syscall_handler_t sys_setresgid; +-extern syscall_handler_t sys_getresgid; +-extern syscall_handler_t sys_chown; +-extern syscall_handler_t sys_setuid; +-extern syscall_handler_t sys_setgid; +-extern syscall_handler_t sys_setfsuid; +-extern syscall_handler_t sys_setfsgid; +-extern syscall_handler_t sys_pivot_root; +-extern syscall_handler_t sys_mincore; +-extern syscall_handler_t sys_madvise; +-extern syscall_handler_t sys_fcntl64; +-extern syscall_handler_t sys_getdents64; +-extern syscall_handler_t sys_gettid; +-extern syscall_handler_t sys_readahead; +-extern syscall_handler_t sys_tkill; +-extern syscall_handler_t sys_sendfile64; +-extern syscall_handler_t sys_futex; +-extern syscall_handler_t sys_sched_setaffinity; +-extern syscall_handler_t sys_sched_getaffinity; +-extern syscall_handler_t sys_io_setup; +-extern syscall_handler_t sys_io_destroy; +-extern syscall_handler_t sys_io_getevents; +-extern syscall_handler_t sys_io_submit; +-extern syscall_handler_t sys_io_cancel; +-extern syscall_handler_t sys_exit_group; +-extern syscall_handler_t sys_lookup_dcookie; +-extern syscall_handler_t sys_epoll_create; +-extern syscall_handler_t sys_epoll_ctl; +-extern syscall_handler_t sys_epoll_wait; +-extern syscall_handler_t sys_remap_file_pages; +-extern syscall_handler_t sys_set_tid_address; +- +-#ifdef CONFIG_NFSD +-#define NFSSERVCTL sys_nfsservctl +-#else +-#define NFSSERVCTL sys_ni_syscall +-#endif +- +-extern syscall_handler_t um_mount; +-extern syscall_handler_t um_time; +-extern syscall_handler_t um_stime; +- +-#define LAST_GENERIC_SYSCALL __NR_set_tid_address +- +-#if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL +-#define LAST_SYSCALL LAST_GENERIC_SYSCALL +-#else +-#define LAST_SYSCALL LAST_ARCH_SYSCALL +-#endif ++extern syscall_handler_t sys_timer_create; ++extern syscall_handler_t old_mmap_i386; ++extern syscall_handler_t old_select; ++extern syscall_handler_t sys_modify_ldt; ++extern syscall_handler_t sys_rt_sigsuspend; + + syscall_handler_t *sys_call_table[] = { +- [ __NR_restart_syscall ] = sys_restart_syscall, +- [ __NR_exit ] = sys_exit, +- [ __NR_fork ] = sys_fork, ++ [ __NR_restart_syscall ] = (syscall_handler_t *) sys_restart_syscall, ++ [ __NR_exit ] (syscall_handler_t *) sys_exit, ++ [ __NR_fork ] (syscall_handler_t *) sys_fork, + [ __NR_read ] = (syscall_handler_t *) sys_read, + [ __NR_write ] = (syscall_handler_t *) sys_write, + +@@ -266,229 +64,249 @@ + [ __NR_open ] = (syscall_handler_t *) sys_open, + [ __NR_close ] = (syscall_handler_t *) sys_close, + [ __NR_waitpid ] = (syscall_handler_t *) sys_waitpid, +- [ __NR_creat ] = sys_creat, +- [ __NR_link ] = sys_link, +- [ __NR_unlink ] = sys_unlink, ++ [ __NR_creat ] (syscall_handler_t *) sys_creat, ++ [ __NR_link ] (syscall_handler_t *) sys_link, ++ [ __NR_unlink ] (syscall_handler_t *) sys_unlink, + [ __NR_execve ] = (syscall_handler_t *) sys_execve, + + /* declared differently in kern_util.h */ +- [ __NR_chdir ] = sys_chdir, ++ [ __NR_chdir ] (syscall_handler_t *) sys_chdir, + [ __NR_time ] = um_time, +- [ __NR_mknod ] = sys_mknod, +- [ __NR_chmod ] = sys_chmod, +- [ __NR_lchown ] = sys_lchown16, +- [ __NR_break ] = sys_ni_syscall, +- [ __NR_oldstat ] = sys_stat, ++ [ __NR_mknod ] (syscall_handler_t *) sys_mknod, ++ [ __NR_chmod ] (syscall_handler_t *) sys_chmod, ++ [ __NR_lchown ] (syscall_handler_t *) sys_lchown16, ++ [ __NR_break ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_oldstat ] (syscall_handler_t *) sys_stat, + [ __NR_lseek ] = (syscall_handler_t *) sys_lseek, +- [ __NR_getpid ] = sys_getpid, ++ [ __NR_getpid ] (syscall_handler_t *) sys_getpid, + [ __NR_mount ] = um_mount, +- [ __NR_umount ] = sys_oldumount, +- [ __NR_setuid ] = sys_setuid16, +- [ __NR_getuid ] = sys_getuid16, ++ [ __NR_umount ] (syscall_handler_t *) sys_oldumount, ++ [ __NR_setuid ] (syscall_handler_t *) sys_setuid16, ++ [ __NR_getuid ] (syscall_handler_t *) sys_getuid16, + [ __NR_stime ] = um_stime, +- [ __NR_ptrace ] = sys_ptrace, +- [ __NR_alarm ] = sys_alarm, +- [ __NR_oldfstat ] = sys_fstat, +- [ __NR_pause ] = sys_pause, +- [ __NR_utime ] = sys_utime, +- [ __NR_stty ] = sys_ni_syscall, +- [ __NR_gtty ] = sys_ni_syscall, +- [ __NR_access ] = sys_access, +- [ __NR_nice ] = sys_nice, +- [ __NR_ftime ] = sys_ni_syscall, +- [ __NR_sync ] = sys_sync, +- [ __NR_kill ] = sys_kill, +- [ __NR_rename ] = sys_rename, +- [ __NR_mkdir ] = sys_mkdir, +- [ __NR_rmdir ] = sys_rmdir, ++ [ __NR_ptrace ] (syscall_handler_t *) sys_ptrace, ++ [ __NR_alarm ] (syscall_handler_t *) sys_alarm, ++ [ __NR_oldfstat ] (syscall_handler_t *) sys_fstat, ++ [ __NR_pause ] (syscall_handler_t *) sys_pause, ++ [ __NR_utime ] (syscall_handler_t *) sys_utime, ++ [ __NR_stty ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_gtty ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_access ] (syscall_handler_t *) sys_access, ++ [ __NR_nice ] (syscall_handler_t *) sys_nice, ++ [ __NR_ftime ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_sync ] (syscall_handler_t *) sys_sync, ++ [ __NR_kill ] (syscall_handler_t *) sys_kill, ++ [ __NR_rename ] (syscall_handler_t *) sys_rename, ++ [ __NR_mkdir ] (syscall_handler_t *) sys_mkdir, ++ [ __NR_rmdir ] (syscall_handler_t *) sys_rmdir, + + /* Declared differently in asm/unistd.h */ + [ __NR_dup ] = (syscall_handler_t *) sys_dup, +- [ __NR_pipe ] = sys_pipe, +- [ __NR_times ] = sys_times, +- [ __NR_prof ] = sys_ni_syscall, +- [ __NR_brk ] = sys_brk, +- [ __NR_setgid ] = sys_setgid16, +- [ __NR_getgid ] = sys_getgid16, +- [ __NR_signal ] = sys_signal, +- [ __NR_geteuid ] = sys_geteuid16, +- [ __NR_getegid ] = sys_getegid16, +- [ __NR_acct ] = sys_acct, +- [ __NR_umount2 ] = sys_umount, +- [ __NR_lock ] = sys_ni_syscall, +- [ __NR_ioctl ] = sys_ioctl, +- [ __NR_fcntl ] = sys_fcntl, +- [ __NR_mpx ] = sys_ni_syscall, +- [ __NR_setpgid ] = sys_setpgid, +- [ __NR_ulimit ] = sys_ni_syscall, +- [ __NR_oldolduname ] = sys_olduname, +- [ __NR_umask ] = sys_umask, +- [ __NR_chroot ] = sys_chroot, +- [ __NR_ustat ] = sys_ustat, +- [ __NR_dup2 ] = sys_dup2, +- [ __NR_getppid ] = sys_getppid, +- [ __NR_getpgrp ] = sys_getpgrp, ++ [ __NR_pipe ] (syscall_handler_t *) sys_pipe, ++ [ __NR_times ] (syscall_handler_t *) sys_times, ++ [ __NR_prof ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_brk ] (syscall_handler_t *) sys_brk, ++ [ __NR_setgid ] (syscall_handler_t *) sys_setgid16, ++ [ __NR_getgid ] (syscall_handler_t *) sys_getgid16, ++ [ __NR_signal ] (syscall_handler_t *) sys_signal, ++ [ __NR_geteuid ] (syscall_handler_t *) sys_geteuid16, ++ [ __NR_getegid ] (syscall_handler_t *) sys_getegid16, ++ [ __NR_acct ] (syscall_handler_t *) sys_acct, ++ [ __NR_umount2 ] (syscall_handler_t *) sys_umount, ++ [ __NR_lock ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_ioctl ] (syscall_handler_t *) sys_ioctl, ++ [ __NR_fcntl ] (syscall_handler_t *) sys_fcntl, ++ [ __NR_mpx ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_setpgid ] (syscall_handler_t *) sys_setpgid, ++ [ __NR_ulimit ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_oldolduname ] (syscall_handler_t *) sys_olduname, ++ [ __NR_umask ] (syscall_handler_t *) sys_umask, ++ [ __NR_chroot ] (syscall_handler_t *) sys_chroot, ++ [ __NR_ustat ] (syscall_handler_t *) sys_ustat, ++ [ __NR_dup2 ] (syscall_handler_t *) sys_dup2, ++ [ __NR_getppid ] (syscall_handler_t *) sys_getppid, ++ [ __NR_getpgrp ] (syscall_handler_t *) sys_getpgrp, + [ __NR_setsid ] = (syscall_handler_t *) sys_setsid, +- [ __NR_sigaction ] = sys_sigaction, +- [ __NR_sgetmask ] = sys_sgetmask, +- [ __NR_ssetmask ] = sys_ssetmask, +- [ __NR_setreuid ] = sys_setreuid16, +- [ __NR_setregid ] = sys_setregid16, +- [ __NR_sigsuspend ] = sys_sigsuspend, +- [ __NR_sigpending ] = sys_sigpending, +- [ __NR_sethostname ] = sys_sethostname, +- [ __NR_setrlimit ] = sys_setrlimit, +- [ __NR_getrlimit ] = sys_old_getrlimit, +- [ __NR_getrusage ] = sys_getrusage, +- [ __NR_gettimeofday ] = sys_gettimeofday, +- [ __NR_settimeofday ] = sys_settimeofday, +- [ __NR_getgroups ] = sys_getgroups16, +- [ __NR_setgroups ] = sys_setgroups16, +- [ __NR_symlink ] = sys_symlink, +- [ __NR_oldlstat ] = sys_lstat, +- [ __NR_readlink ] = sys_readlink, +- [ __NR_uselib ] = sys_uselib, ++ [ __NR_sigaction ] (syscall_handler_t *) sys_sigaction, ++ [ __NR_sgetmask ] (syscall_handler_t *) sys_sgetmask, ++ [ __NR_ssetmask ] (syscall_handler_t *) sys_ssetmask, ++ [ __NR_setreuid ] (syscall_handler_t *) sys_setreuid16, ++ [ __NR_setregid ] (syscall_handler_t *) sys_setregid16, ++ [ __NR_sigsuspend ] (syscall_handler_t *) sys_sigsuspend, ++ [ __NR_sigpending ] (syscall_handler_t *) sys_sigpending, ++ [ __NR_sethostname ] (syscall_handler_t *) sys_sethostname, ++ [ __NR_setrlimit ] (syscall_handler_t *) sys_setrlimit, ++ [ __NR_getrlimit ] (syscall_handler_t *) sys_old_getrlimit, ++ [ __NR_getrusage ] (syscall_handler_t *) sys_getrusage, ++ [ __NR_gettimeofday ] (syscall_handler_t *) sys_gettimeofday, ++ [ __NR_settimeofday ] (syscall_handler_t *) sys_settimeofday, ++ [ __NR_getgroups ] (syscall_handler_t *) sys_getgroups16, ++ [ __NR_setgroups ] (syscall_handler_t *) sys_setgroups16, ++ [ __NR_symlink ] (syscall_handler_t *) sys_symlink, ++ [ __NR_oldlstat ] (syscall_handler_t *) sys_lstat, ++ [ __NR_readlink ] (syscall_handler_t *) sys_readlink, ++ [ __NR_uselib ] (syscall_handler_t *) sys_uselib, + [ __NR_swapon ] = (syscall_handler_t *) sys_swapon, +- [ __NR_reboot ] = sys_reboot, ++ [ __NR_reboot ] (syscall_handler_t *) sys_reboot, + [ __NR_readdir ] = old_readdir, +- [ __NR_munmap ] = sys_munmap, +- [ __NR_truncate ] = sys_truncate, +- [ __NR_ftruncate ] = sys_ftruncate, +- [ __NR_fchmod ] = sys_fchmod, +- [ __NR_fchown ] = sys_fchown16, +- [ __NR_getpriority ] = sys_getpriority, +- [ __NR_setpriority ] = sys_setpriority, +- [ __NR_profil ] = sys_ni_syscall, +- [ __NR_statfs ] = sys_statfs, +- [ __NR_fstatfs ] = sys_fstatfs, +- [ __NR_ioperm ] = sys_ni_syscall, +- [ __NR_socketcall ] = sys_socketcall, +- [ __NR_syslog ] = sys_syslog, +- [ __NR_setitimer ] = sys_setitimer, +- [ __NR_getitimer ] = sys_getitimer, +- [ __NR_stat ] = sys_newstat, +- [ __NR_lstat ] = sys_newlstat, +- [ __NR_fstat ] = sys_newfstat, +- [ __NR_olduname ] = sys_uname, +- [ __NR_iopl ] = sys_ni_syscall, +- [ __NR_vhangup ] = sys_vhangup, +- [ __NR_idle ] = sys_ni_syscall, ++ [ __NR_munmap ] (syscall_handler_t *) sys_munmap, ++ [ __NR_truncate ] (syscall_handler_t *) sys_truncate, ++ [ __NR_ftruncate ] (syscall_handler_t *) sys_ftruncate, ++ [ __NR_fchmod ] (syscall_handler_t *) sys_fchmod, ++ [ __NR_fchown ] (syscall_handler_t *) sys_fchown16, ++ [ __NR_getpriority ] (syscall_handler_t *) sys_getpriority, ++ [ __NR_setpriority ] (syscall_handler_t *) sys_setpriority, ++ [ __NR_profil ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_statfs ] (syscall_handler_t *) sys_statfs, ++ [ __NR_fstatfs ] (syscall_handler_t *) sys_fstatfs, ++ [ __NR_ioperm ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_socketcall ] (syscall_handler_t *) sys_socketcall, ++ [ __NR_syslog ] (syscall_handler_t *) sys_syslog, ++ [ __NR_setitimer ] (syscall_handler_t *) sys_setitimer, ++ [ __NR_getitimer ] (syscall_handler_t *) sys_getitimer, ++ [ __NR_stat ] (syscall_handler_t *) sys_newstat, ++ [ __NR_lstat ] (syscall_handler_t *) sys_newlstat, ++ [ __NR_fstat ] (syscall_handler_t *) sys_newfstat, ++ [ __NR_olduname ] (syscall_handler_t *) sys_uname, ++ [ __NR_iopl ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_vhangup ] (syscall_handler_t *) sys_vhangup, ++ [ __NR_idle ] (syscall_handler_t *) sys_ni_syscall, + [ __NR_wait4 ] = (syscall_handler_t *) sys_wait4, + [ __NR_swapoff ] = (syscall_handler_t *) sys_swapoff, +- [ __NR_sysinfo ] = sys_sysinfo, +- [ __NR_ipc ] = sys_ipc, +- [ __NR_fsync ] = sys_fsync, +- [ __NR_sigreturn ] = sys_sigreturn, +- [ __NR_clone ] = sys_clone, +- [ __NR_setdomainname ] = sys_setdomainname, +- [ __NR_uname ] = sys_newuname, +- [ __NR_adjtimex ] = sys_adjtimex, +- [ __NR_mprotect ] = sys_mprotect, +- [ __NR_sigprocmask ] = sys_sigprocmask, +- [ __NR_create_module ] = sys_ni_syscall, +- [ __NR_init_module ] = sys_init_module, +- [ __NR_delete_module ] = sys_delete_module, +- [ __NR_get_kernel_syms ] = sys_ni_syscall, +- [ __NR_quotactl ] = sys_quotactl, +- [ __NR_getpgid ] = sys_getpgid, +- [ __NR_fchdir ] = sys_fchdir, +- [ __NR_bdflush ] = sys_bdflush, +- [ __NR_sysfs ] = sys_sysfs, +- [ __NR_personality ] = sys_personality, +- [ __NR_afs_syscall ] = sys_ni_syscall, +- [ __NR_setfsuid ] = sys_setfsuid16, +- [ __NR_setfsgid ] = sys_setfsgid16, +- [ __NR__llseek ] = sys_llseek, +- [ __NR_getdents ] = sys_getdents, ++ [ __NR_sysinfo ] (syscall_handler_t *) sys_sysinfo, ++ [ __NR_ipc ] (syscall_handler_t *) sys_ipc, ++ [ __NR_fsync ] (syscall_handler_t *) sys_fsync, ++ [ __NR_sigreturn ] (syscall_handler_t *) sys_sigreturn, ++ [ __NR_clone ] (syscall_handler_t *) sys_clone, ++ [ __NR_setdomainname ] (syscall_handler_t *) sys_setdomainname, ++ [ __NR_uname ] (syscall_handler_t *) sys_newuname, ++ [ __NR_adjtimex ] (syscall_handler_t *) sys_adjtimex, ++ [ __NR_mprotect ] (syscall_handler_t *) sys_mprotect, ++ [ __NR_sigprocmask ] (syscall_handler_t *) sys_sigprocmask, ++ [ __NR_create_module ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_init_module ] (syscall_handler_t *) sys_init_module, ++ [ __NR_delete_module ] (syscall_handler_t *) sys_delete_module, ++ [ __NR_get_kernel_syms ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_quotactl ] (syscall_handler_t *) sys_quotactl, ++ [ __NR_getpgid ] (syscall_handler_t *) sys_getpgid, ++ [ __NR_fchdir ] (syscall_handler_t *) sys_fchdir, ++ [ __NR_bdflush ] (syscall_handler_t *) sys_bdflush, ++ [ __NR_sysfs ] (syscall_handler_t *) sys_sysfs, ++ [ __NR_personality ] (syscall_handler_t *) sys_personality, ++ [ __NR_afs_syscall ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_setfsuid ] (syscall_handler_t *) sys_setfsuid16, ++ [ __NR_setfsgid ] (syscall_handler_t *) sys_setfsgid16, ++ [ __NR__llseek ] (syscall_handler_t *) sys_llseek, ++ [ __NR_getdents ] (syscall_handler_t *) sys_getdents, + [ __NR__newselect ] = (syscall_handler_t *) sys_select, +- [ __NR_flock ] = sys_flock, +- [ __NR_msync ] = sys_msync, +- [ __NR_readv ] = sys_readv, +- [ __NR_writev ] = sys_writev, +- [ __NR_getsid ] = sys_getsid, +- [ __NR_fdatasync ] = sys_fdatasync, ++ [ __NR_flock ] (syscall_handler_t *) sys_flock, ++ [ __NR_msync ] (syscall_handler_t *) sys_msync, ++ [ __NR_readv ] (syscall_handler_t *) sys_readv, ++ [ __NR_writev ] (syscall_handler_t *) sys_writev, ++ [ __NR_getsid ] (syscall_handler_t *) sys_getsid, ++ [ __NR_fdatasync ] (syscall_handler_t *) sys_fdatasync, + [ __NR__sysctl ] = (syscall_handler_t *) sys_sysctl, +- [ __NR_mlock ] = sys_mlock, +- [ __NR_munlock ] = sys_munlock, +- [ __NR_mlockall ] = sys_mlockall, +- [ __NR_munlockall ] = sys_munlockall, +- [ __NR_sched_setparam ] = sys_sched_setparam, +- [ __NR_sched_getparam ] = sys_sched_getparam, +- [ __NR_sched_setscheduler ] = sys_sched_setscheduler, +- [ __NR_sched_getscheduler ] = sys_sched_getscheduler, ++ [ __NR_mlock ] (syscall_handler_t *) sys_mlock, ++ [ __NR_munlock ] (syscall_handler_t *) sys_munlock, ++ [ __NR_mlockall ] (syscall_handler_t *) sys_mlockall, ++ [ __NR_munlockall ] (syscall_handler_t *) sys_munlockall, ++ [ __NR_sched_setparam ] (syscall_handler_t *) sys_sched_setparam, ++ [ __NR_sched_getparam ] (syscall_handler_t *) sys_sched_getparam, ++ [ __NR_sched_setscheduler ] (syscall_handler_t *) sys_sched_setscheduler, ++ [ __NR_sched_getscheduler ] (syscall_handler_t *) sys_sched_getscheduler, + [ __NR_sched_yield ] = (syscall_handler_t *) yield, +- [ __NR_sched_get_priority_max ] = sys_sched_get_priority_max, +- [ __NR_sched_get_priority_min ] = sys_sched_get_priority_min, +- [ __NR_sched_rr_get_interval ] = sys_sched_rr_get_interval, +- [ __NR_nanosleep ] = sys_nanosleep, +- [ __NR_mremap ] = sys_mremap, +- [ __NR_setresuid ] = sys_setresuid16, +- [ __NR_getresuid ] = sys_getresuid16, +- [ __NR_vm86 ] = sys_ni_syscall, +- [ __NR_query_module ] = sys_ni_syscall, +- [ __NR_poll ] = sys_poll, +- [ __NR_nfsservctl ] = NFSSERVCTL, +- [ __NR_setresgid ] = sys_setresgid16, +- [ __NR_getresgid ] = sys_getresgid16, +- [ __NR_prctl ] = sys_prctl, +- [ __NR_rt_sigreturn ] = sys_rt_sigreturn, +- [ __NR_rt_sigaction ] = sys_rt_sigaction, +- [ __NR_rt_sigprocmask ] = sys_rt_sigprocmask, +- [ __NR_rt_sigpending ] = sys_rt_sigpending, +- [ __NR_rt_sigtimedwait ] = sys_rt_sigtimedwait, +- [ __NR_rt_sigqueueinfo ] = sys_rt_sigqueueinfo, +- [ __NR_rt_sigsuspend ] = sys_rt_sigsuspend, +- [ __NR_pread64 ] = sys_pread64, +- [ __NR_pwrite64 ] = sys_pwrite64, +- [ __NR_chown ] = sys_chown16, +- [ __NR_getcwd ] = sys_getcwd, +- [ __NR_capget ] = sys_capget, +- [ __NR_capset ] = sys_capset, +- [ __NR_sigaltstack ] = sys_sigaltstack, +- [ __NR_sendfile ] = sys_sendfile, +- [ __NR_getpmsg ] = sys_ni_syscall, +- [ __NR_putpmsg ] = sys_ni_syscall, +- [ __NR_vfork ] = sys_vfork, +- [ __NR_ugetrlimit ] = sys_getrlimit, +- [ __NR_mmap2 ] = sys_mmap2, +- [ __NR_truncate64 ] = sys_truncate64, +- [ __NR_ftruncate64 ] = sys_ftruncate64, +- [ __NR_stat64 ] = sys_stat64, +- [ __NR_lstat64 ] = sys_lstat64, +- [ __NR_fstat64 ] = sys_fstat64, +- [ __NR_fcntl64 ] = sys_fcntl64, +- [ __NR_getdents64 ] = sys_getdents64, +- [ __NR_gettid ] = sys_gettid, +- [ __NR_readahead ] = sys_readahead, +- [ __NR_setxattr ] = sys_ni_syscall, +- [ __NR_lsetxattr ] = sys_ni_syscall, +- [ __NR_fsetxattr ] = sys_ni_syscall, +- [ __NR_getxattr ] = sys_ni_syscall, +- [ __NR_lgetxattr ] = sys_ni_syscall, +- [ __NR_fgetxattr ] = sys_ni_syscall, +- [ __NR_listxattr ] = sys_ni_syscall, +- [ __NR_llistxattr ] = sys_ni_syscall, +- [ __NR_flistxattr ] = sys_ni_syscall, +- [ __NR_removexattr ] = sys_ni_syscall, +- [ __NR_lremovexattr ] = sys_ni_syscall, +- [ __NR_fremovexattr ] = sys_ni_syscall, +- [ __NR_tkill ] = sys_tkill, +- [ __NR_sendfile64 ] = sys_sendfile64, +- [ __NR_futex ] = sys_futex, +- [ __NR_sched_setaffinity ] = sys_sched_setaffinity, +- [ __NR_sched_getaffinity ] = sys_sched_getaffinity, +- [ __NR_io_setup ] = sys_io_setup, +- [ __NR_io_destroy ] = sys_io_destroy, +- [ __NR_io_getevents ] = sys_io_getevents, +- [ __NR_io_submit ] = sys_io_submit, +- [ __NR_io_cancel ] = sys_io_cancel, +- [ __NR_exit_group ] = sys_exit_group, +- [ __NR_lookup_dcookie ] = sys_lookup_dcookie, +- [ __NR_epoll_create ] = sys_epoll_create, +- [ __NR_epoll_ctl ] = sys_epoll_ctl, +- [ __NR_epoll_wait ] = sys_epoll_wait, +- [ __NR_remap_file_pages ] = sys_remap_file_pages, +- [ __NR_set_tid_address ] = sys_set_tid_address, ++ [ __NR_sched_get_priority_max ] (syscall_handler_t *) sys_sched_get_priority_max, ++ [ __NR_sched_get_priority_min ] (syscall_handler_t *) sys_sched_get_priority_min, ++ [ __NR_sched_rr_get_interval ] (syscall_handler_t *) sys_sched_rr_get_interval, ++ [ __NR_nanosleep ] (syscall_handler_t *) sys_nanosleep, ++ [ __NR_mremap ] (syscall_handler_t *) sys_mremap, ++ [ __NR_setresuid ] (syscall_handler_t *) sys_setresuid16, ++ [ __NR_getresuid ] (syscall_handler_t *) sys_getresuid16, ++ [ __NR_vm86 ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_query_module ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_poll ] (syscall_handler_t *) sys_poll, ++ [ __NR_nfsservctl ] = (syscall_handler_t *) NFSSERVCTL, ++ [ __NR_setresgid ] (syscall_handler_t *) sys_setresgid16, ++ [ __NR_getresgid ] (syscall_handler_t *) sys_getresgid16, ++ [ __NR_prctl ] (syscall_handler_t *) sys_prctl, ++ [ __NR_rt_sigreturn ] (syscall_handler_t *) sys_rt_sigreturn, ++ [ __NR_rt_sigaction ] (syscall_handler_t *) sys_rt_sigaction, ++ [ __NR_rt_sigprocmask ] (syscall_handler_t *) sys_rt_sigprocmask, ++ [ __NR_rt_sigpending ] (syscall_handler_t *) sys_rt_sigpending, ++ [ __NR_rt_sigtimedwait ] (syscall_handler_t *) sys_rt_sigtimedwait, ++ [ __NR_rt_sigqueueinfo ] (syscall_handler_t *) sys_rt_sigqueueinfo, ++ [ __NR_rt_sigsuspend ] (syscall_handler_t *) sys_rt_sigsuspend, ++ [ __NR_pread64 ] (syscall_handler_t *) sys_pread64, ++ [ __NR_pwrite64 ] (syscall_handler_t *) sys_pwrite64, ++ [ __NR_chown ] (syscall_handler_t *) sys_chown16, ++ [ __NR_getcwd ] (syscall_handler_t *) sys_getcwd, ++ [ __NR_capget ] (syscall_handler_t *) sys_capget, ++ [ __NR_capset ] (syscall_handler_t *) sys_capset, ++ [ __NR_sigaltstack ] (syscall_handler_t *) sys_sigaltstack, ++ [ __NR_sendfile ] (syscall_handler_t *) sys_sendfile, ++ [ __NR_getpmsg ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_putpmsg ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_vfork ] (syscall_handler_t *) sys_vfork, ++ [ __NR_ugetrlimit ] (syscall_handler_t *) sys_getrlimit, ++ [ __NR_mmap2 ] (syscall_handler_t *) sys_mmap2, ++ [ __NR_truncate64 ] (syscall_handler_t *) sys_truncate64, ++ [ __NR_ftruncate64 ] (syscall_handler_t *) sys_ftruncate64, ++ [ __NR_stat64 ] (syscall_handler_t *) sys_stat64, ++ [ __NR_lstat64 ] (syscall_handler_t *) sys_lstat64, ++ [ __NR_fstat64 ] (syscall_handler_t *) sys_fstat64, ++ [ __NR_getdents64 ] (syscall_handler_t *) sys_getdents64, ++ [ __NR_fcntl64 ] (syscall_handler_t *) sys_fcntl64, ++ [ 223 ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_gettid ] (syscall_handler_t *) sys_gettid, ++ [ __NR_readahead ] (syscall_handler_t *) sys_readahead, ++ [ __NR_setxattr ] (syscall_handler_t *) sys_setxattr, ++ [ __NR_lsetxattr ] (syscall_handler_t *) sys_lsetxattr, ++ [ __NR_fsetxattr ] (syscall_handler_t *) sys_fsetxattr, ++ [ __NR_getxattr ] (syscall_handler_t *) sys_getxattr, ++ [ __NR_lgetxattr ] (syscall_handler_t *) sys_lgetxattr, ++ [ __NR_fgetxattr ] (syscall_handler_t *) sys_fgetxattr, ++ [ __NR_listxattr ] (syscall_handler_t *) sys_listxattr, ++ [ __NR_llistxattr ] (syscall_handler_t *) sys_llistxattr, ++ [ __NR_flistxattr ] (syscall_handler_t *) sys_flistxattr, ++ [ __NR_removexattr ] (syscall_handler_t *) sys_removexattr, ++ [ __NR_lremovexattr ] (syscall_handler_t *) sys_lremovexattr, ++ [ __NR_fremovexattr ] (syscall_handler_t *) sys_fremovexattr, ++ [ __NR_tkill ] (syscall_handler_t *) sys_tkill, ++ [ __NR_sendfile64 ] (syscall_handler_t *) sys_sendfile64, ++ [ __NR_futex ] (syscall_handler_t *) sys_futex, ++ [ __NR_sched_setaffinity ] (syscall_handler_t *) sys_sched_setaffinity, ++ [ __NR_sched_getaffinity ] (syscall_handler_t *) sys_sched_getaffinity, ++ [ __NR_set_thread_area ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_get_thread_area ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_io_setup ] (syscall_handler_t *) sys_io_setup, ++ [ __NR_io_destroy ] (syscall_handler_t *) sys_io_destroy, ++ [ __NR_io_getevents ] (syscall_handler_t *) sys_io_getevents, ++ [ __NR_io_submit ] (syscall_handler_t *) sys_io_submit, ++ [ __NR_io_cancel ] (syscall_handler_t *) sys_io_cancel, ++ [ __NR_fadvise64 ] (syscall_handler_t *) sys_fadvise64, ++ [ 251 ] (syscall_handler_t *) sys_ni_syscall, ++ [ __NR_exit_group ] (syscall_handler_t *) sys_exit_group, ++ [ __NR_lookup_dcookie ] (syscall_handler_t *) sys_lookup_dcookie, ++ [ __NR_epoll_create ] (syscall_handler_t *) sys_epoll_create, ++ [ __NR_epoll_ctl ] (syscall_handler_t *) sys_epoll_ctl, ++ [ __NR_epoll_wait ] (syscall_handler_t *) sys_epoll_wait, ++ [ __NR_remap_file_pages ] (syscall_handler_t *) sys_remap_file_pages, ++ [ __NR_set_tid_address ] (syscall_handler_t *) sys_set_tid_address, ++ [ __NR_timer_create ] (syscall_handler_t *) sys_timer_create, ++ [ __NR_timer_settime ] (syscall_handler_t *) sys_timer_settime, ++ [ __NR_timer_gettime ] (syscall_handler_t *) sys_timer_gettime, ++ [ __NR_timer_getoverrun ] (syscall_handler_t *) sys_timer_getoverrun, ++ [ __NR_timer_delete ] (syscall_handler_t *) sys_timer_delete, ++ [ __NR_clock_settime ] (syscall_handler_t *) sys_clock_settime, ++ [ __NR_clock_gettime ] (syscall_handler_t *) sys_clock_gettime, ++ [ __NR_clock_getres ] (syscall_handler_t *) sys_clock_getres, ++ [ __NR_clock_nanosleep ] (syscall_handler_t *) sys_clock_nanosleep, ++ [ __NR_statfs64 ] (syscall_handler_t *) sys_statfs64, ++ [ __NR_fstatfs64 ] (syscall_handler_t *) sys_fstatfs64, ++ [ __NR_tgkill ] (syscall_handler_t *) sys_tgkill, ++ [ __NR_utimes ] (syscall_handler_t *) sys_utimes, ++ [ __NR_fadvise64_64 ] (syscall_handler_t *) sys_fadvise64_64, ++ [ __NR_vserver ] (syscall_handler_t *) sys_ni_syscall, + + ARCH_SYSCALLS + [ LAST_SYSCALL + 1 ... NR_syscalls ] = +Index: uml-2.6.7/arch/um/kernel/exec_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/exec_kern.c 2004-07-16 19:36:16.769597096 +0300 ++++ uml-2.6.7/arch/um/kernel/exec_kern.c 2004-07-16 19:47:23.713206256 +0300 +@@ -32,10 +32,15 @@ + CHOOSE_MODE_PROC(start_thread_tt, start_thread_skas, regs, eip, esp); + } + ++extern void log_exec(char **argv, void *tty); + -+dep: + static int execve1(char *file, char **argv, char **env) + { + int error; + ++#ifdef CONFIG_TTY_LOG ++ log_exec(argv, current->tty); ++#endif + error = do_execve(file, argv, env, ¤t->thread.regs); + if (error == 0){ + current->ptrace &= ~PT_DTRACE; +Index: uml-2.6.7/arch/um/drivers/daemon_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/daemon_user.c 2004-07-16 19:36:30.112568656 +0300 ++++ uml-2.6.7/arch/um/drivers/daemon_user.c 2004-07-16 19:47:23.681211120 +0300 +@@ -53,7 +53,8 @@ + struct request_v3 req; + int fd, n, err; + +- if((pri->control = socket(AF_UNIX, SOCK_STREAM, 0)) < 0){ ++ pri->control = socket(AF_UNIX, SOCK_STREAM, 0); ++ if(pri->control < 0){ + printk("daemon_open : control socket failed, errno = %d\n", + errno); + return(-errno); +@@ -67,7 +68,8 @@ + goto out; + } + +- if((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){ ++ fd = socket(AF_UNIX, SOCK_DGRAM, 0); ++ if(fd < 0){ + printk("daemon_open : data socket failed, errno = %d\n", + errno); + err = -errno; +@@ -91,18 +93,18 @@ + req.version = SWITCH_VERSION; + req.type = REQ_NEW_CONTROL; + req.sock = *local_addr; +- n = write(pri->control, &req, sizeof(req)); ++ n = os_write_file(pri->control, &req, sizeof(req)); + if(n != sizeof(req)){ +- printk("daemon_open : control setup request returned %d, " +- "errno = %d\n", n, errno); ++ printk("daemon_open : control setup request failed, err = %d\n", ++ -n); + err = -ENOTCONN; + goto out; + } + +- n = read(pri->control, sun, sizeof(*sun)); ++ n = os_read_file(pri->control, sun, sizeof(*sun)); + if(n != sizeof(*sun)){ +- printk("daemon_open : read of data socket returned %d, " +- "errno = %d\n", n, errno); ++ printk("daemon_open : read of data socket failed, err = %d\n", ++ -n); + err = -ENOTCONN; + goto out_close; + } +@@ -111,9 +113,9 @@ + return(fd); + + out_close: +- close(fd); ++ os_close_file(fd); + out: +- close(pri->control); ++ os_close_file(pri->control); + return(err); + } + +@@ -153,8 +155,8 @@ + { + struct daemon_data *pri = data; + +- close(pri->fd); +- close(pri->control); ++ os_close_file(pri->fd); ++ os_close_file(pri->control); + if(pri->data_addr != NULL) kfree(pri->data_addr); + if(pri->ctl_addr != NULL) kfree(pri->ctl_addr); + if(pri->local_addr != NULL) kfree(pri->local_addr); +Index: uml-2.6.7/include/asm-um/elf.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/elf.h 2004-07-16 19:37:00.001024920 +0300 ++++ uml-2.6.7/include/asm-um/elf.h 2004-07-16 19:47:23.789194704 +0300 +@@ -15,4 +15,17 @@ + + #define USE_ELF_CORE_DUMP + ++#define R_386_NONE 0 ++#define R_386_32 1 ++#define R_386_PC32 2 ++#define R_386_GOT32 3 ++#define R_386_PLT32 4 ++#define R_386_COPY 5 ++#define R_386_GLOB_DAT 6 ++#define R_386_JMP_SLOT 7 ++#define R_386_RELATIVE 8 ++#define R_386_GOTOFF 9 ++#define R_386_GOTPC 10 ++#define R_386_NUM 11 + -+archmrproper: clean -diff -Naur a/fs/Makefile b/fs/Makefile ---- a/fs/Makefile 2004-03-10 08:21:31.000000000 -0500 -+++ b/fs/Makefile 2004-03-10 08:40:05.000000000 -0500 -@@ -92,3 +92,5 @@ - obj-$(CONFIG_XFS_FS) += xfs/ - obj-$(CONFIG_AFS_FS) += afs/ - obj-$(CONFIG_BEFS_FS) += befs/ -+obj-$(CONFIG_HOSTFS) += hostfs/ -+obj-$(CONFIG_HPPFS) += hppfs/ -diff -Naur a/include/asm-um/archparam-i386.h b/include/asm-um/archparam-i386.h ---- a/include/asm-um/archparam-i386.h 2004-03-10 08:22:36.000000000 -0500 -+++ b/include/asm-um/archparam-i386.h 2004-03-10 08:42:36.000000000 -0500 -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) - * Licensed under the GPL - */ + #endif +Index: uml-2.6.7/arch/um/kernel/skas/include/uaccess.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/skas/include/uaccess.h 2004-07-16 19:36:33.265089400 +0300 ++++ uml-2.6.7/arch/um/kernel/skas/include/uaccess.h 2004-07-16 19:47:23.728203976 +0300 +@@ -6,20 +6,12 @@ + #ifndef __SKAS_UACCESS_H + #define __SKAS_UACCESS_H + +-#include "linux/string.h" +-#include "linux/sched.h" +-#include "linux/err.h" +-#include "asm/processor.h" +-#include "asm/pgtable.h" + #include "asm/errno.h" +-#include "asm/current.h" +-#include "asm/a.out.h" +-#include "kern_util.h" + + #define access_ok_skas(type, addr, size) \ + ((segment_eq(get_fs(), KERNEL_DS)) || \ + (((unsigned long) (addr) < TASK_SIZE) && \ +- ((unsigned long) (addr) + (size) < TASK_SIZE))) ++ ((unsigned long) (addr) + (size) <= TASK_SIZE))) + + static inline int verify_area_skas(int type, const void * addr, + unsigned long size) +@@ -27,197 +19,12 @@ + return(access_ok_skas(type, addr, size) ? 0 : -EFAULT); + } + +-static inline unsigned long maybe_map(unsigned long virt, int is_write) +-{ +- pte_t pte; +- +- void *phys = um_virt_to_phys(current, virt, &pte); +- int dummy_code; +- +- if(IS_ERR(phys) || (is_write && !pte_write(pte))){ +- if(handle_page_fault(virt, 0, is_write, 0, &dummy_code)) +- return(0); +- phys = um_virt_to_phys(current, virt, NULL); +- } +- return((unsigned long) __va((unsigned long) phys)); +-} +- +-static inline int buffer_op(unsigned long addr, int len, +- int (*op)(unsigned long addr, int len, void *arg), +- void *arg) +-{ +- int size = min(PAGE_ALIGN(addr) - addr, (unsigned long) len); +- int remain = len, n; +- +- n = (*op)(addr, size, arg); +- if(n != 0) +- return(n < 0 ? remain : 0); +- +- addr += size; +- remain -= size; +- if(remain == 0) +- return(0); +- +- while(addr < ((addr + remain) & PAGE_MASK)){ +- n = (*op)(addr, PAGE_SIZE, arg); +- if(n != 0) +- return(n < 0 ? remain : 0); +- +- addr += PAGE_SIZE; +- remain -= PAGE_SIZE; +- } +- if(remain == 0) +- return(0); +- +- n = (*op)(addr, remain, arg); +- if(n != 0) +- return(n < 0 ? remain : 0); +- return(0); +-} +- +-static inline int copy_chunk_from_user(unsigned long from, int len, void *arg) +-{ +- unsigned long *to_ptr = arg, to = *to_ptr; +- +- from = maybe_map(from, 0); +- if(from == 0) +- return(-1); +- +- memcpy((void *) to, (void *) from, len); +- *to_ptr += len; +- return(0); +-} +- +-static inline int copy_from_user_skas(void *to, const void *from, int n) +-{ +- if(segment_eq(get_fs(), KERNEL_DS)){ +- memcpy(to, from, n); +- return(0); +- } +- +- return(access_ok_skas(VERIFY_READ, from, n) ? +- buffer_op((unsigned long) from, n, copy_chunk_from_user, &to) : +- n); +-} +- +-static inline int copy_chunk_to_user(unsigned long to, int len, void *arg) +-{ +- unsigned long *from_ptr = arg, from = *from_ptr; +- +- to = maybe_map(to, 1); +- if(to == 0) +- return(-1); +- +- memcpy((void *) to, (void *) from, len); +- *from_ptr += len; +- return(0); +-} +- +-static inline int copy_to_user_skas(void *to, const void *from, int n) +-{ +- if(segment_eq(get_fs(), KERNEL_DS)){ +- memcpy(to, from, n); +- return(0); +- } +- +- return(access_ok_skas(VERIFY_WRITE, to, n) ? +- buffer_op((unsigned long) to, n, copy_chunk_to_user, &from) : +- n); +-} +- +-static inline int strncpy_chunk_from_user(unsigned long from, int len, +- void *arg) +-{ +- char **to_ptr = arg, *to = *to_ptr; +- int n; +- +- from = maybe_map(from, 0); +- if(from == 0) +- return(-1); +- +- strncpy(to, (void *) from, len); +- n = strnlen(to, len); +- *to_ptr += n; +- +- if(n < len) +- return(1); +- return(0); +-} +- +-static inline int strncpy_from_user_skas(char *dst, const char *src, int count) +-{ +- int n; +- char *ptr = dst; +- +- if(segment_eq(get_fs(), KERNEL_DS)){ +- strncpy(dst, src, count); +- return(strnlen(dst, count)); +- } +- +- if(!access_ok_skas(VERIFY_READ, src, 1)) +- return(-EFAULT); +- +- n = buffer_op((unsigned long) src, count, strncpy_chunk_from_user, +- &ptr); +- if(n != 0) +- return(-EFAULT); +- return(strnlen(dst, count)); +-} +- +-static inline int clear_chunk(unsigned long addr, int len, void *unused) +-{ +- addr = maybe_map(addr, 1); +- if(addr == 0) +- return(-1); +- +- memset((void *) addr, 0, len); +- return(0); +-} +- +-static inline int __clear_user_skas(void *mem, int len) +-{ +- return(buffer_op((unsigned long) mem, len, clear_chunk, NULL)); +-} +- +-static inline int clear_user_skas(void *mem, int len) +-{ +- if(segment_eq(get_fs(), KERNEL_DS)){ +- memset(mem, 0, len); +- return(0); +- } +- +- return(access_ok_skas(VERIFY_WRITE, mem, len) ? +- buffer_op((unsigned long) mem, len, clear_chunk, NULL) : len); +-} +- +-static inline int strnlen_chunk(unsigned long str, int len, void *arg) +-{ +- int *len_ptr = arg, n; +- +- str = maybe_map(str, 0); +- if(str == 0) +- return(-1); +- +- n = strnlen((void *) str, len); +- *len_ptr += n; +- +- if(n < len) +- return(1); +- return(0); +-} +- +-static inline int strnlen_user_skas(const void *str, int len) +-{ +- int count = 0, n; +- +- if(segment_eq(get_fs(), KERNEL_DS)) +- return(strnlen(str, len) + 1); +- +- n = buffer_op((unsigned long) str, len, strnlen_chunk, &count); +- if(n == 0) +- return(count + 1); +- return(-EFAULT); +-} ++extern int copy_from_user_skas(void *to, const void *from, int n); ++extern int copy_to_user_skas(void *to, const void *from, int n); ++extern int strncpy_from_user_skas(char *dst, const char *src, int count); ++extern int __clear_user_skas(void *mem, int len); ++extern int clear_user_skas(void *mem, int len); ++extern int strnlen_user_skas(const void *str, int len); -@@ -56,6 +56,87 @@ - pr_reg[16] = PT_REGS_SS(regs); \ - } while(0); + #endif -+#if 0 /* Turn this back on when UML has VSYSCALL working */ -+#define VSYSCALL_BASE (__fix_to_virt(FIX_VSYSCALL)) -+#else -+#define VSYSCALL_BASE 0 -+#endif -+ -+#define VSYSCALL_EHDR ((const struct elfhdr *) VSYSCALL_BASE) -+#define VSYSCALL_ENTRY ((unsigned long) &__kernel_vsyscall) -+extern void *__kernel_vsyscall; -+ -+/* -+ * Architecture-neutral AT_ values in 0-17, leave some room -+ * for more of them, start the x86-specific ones at 32. -+ */ -+#define AT_SYSINFO 32 -+#define AT_SYSINFO_EHDR 33 -+ -+#define ARCH_DLINFO \ -+do { \ -+ NEW_AUX_ENT(AT_SYSINFO, VSYSCALL_ENTRY); \ -+ NEW_AUX_ENT(AT_SYSINFO_EHDR, VSYSCALL_BASE); \ -+} while (0) -+ -+/* -+ * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out -+ * extra segments containing the vsyscall DSO contents. Dumping its -+ * contents makes post-mortem fully interpretable later without matching up -+ * the same kernel and hardware config to see what PC values meant. -+ * Dumping its extra ELF program headers includes all the other information -+ * a debugger needs to easily find how the vsyscall DSO was being used. -+ */ -+#if 0 -+#define ELF_CORE_EXTRA_PHDRS (VSYSCALL_EHDR->e_phnum) -+#endif -+ -+#define ELF_CORE_EXTRA_PHDRS 0 -+#define ELF_CORE_WRITE_EXTRA_PHDRS \ -+do { \ -+ const struct elf_phdr *const vsyscall_phdrs = \ -+ (const struct elf_phdr *) (VSYSCALL_BASE \ -+ + VSYSCALL_EHDR->e_phoff); \ -+ int i; \ -+ Elf32_Off ofs = 0; \ -+ for (i = 0; i < VSYSCALL_EHDR->e_phnum; ++i) { \ -+ struct elf_phdr phdr = vsyscall_phdrs[i]; \ -+ if (phdr.p_type == PT_LOAD) { \ -+ ofs = phdr.p_offset = offset; \ -+ offset += phdr.p_filesz; \ -+ } \ -+ else \ -+ phdr.p_offset += ofs; \ -+ phdr.p_paddr = 0; /* match other core phdrs */ \ -+ DUMP_WRITE(&phdr, sizeof(phdr)); \ -+ } \ -+} while (0) -+#define ELF_CORE_WRITE_EXTRA_DATA \ -+do { \ -+ const struct elf_phdr *const vsyscall_phdrs = \ -+ (const struct elf_phdr *) (VSYSCALL_BASE \ -+ + VSYSCALL_EHDR->e_phoff); \ -+ int i; \ -+ for (i = 0; i < VSYSCALL_EHDR->e_phnum; ++i) { \ -+ if (vsyscall_phdrs[i].p_type == PT_LOAD) \ -+ DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr, \ -+ vsyscall_phdrs[i].p_filesz); \ -+ } \ -+} while (0) +Index: uml-2.6.7/arch/um/Kconfig +=================================================================== +--- uml-2.6.7.orig/arch/um/Kconfig 2004-07-16 19:36:40.087052304 +0300 ++++ uml-2.6.7/arch/um/Kconfig 2004-07-16 19:47:23.711206560 +0300 +@@ -61,6 +61,20 @@ + + config NET + bool "Networking support" ++ help ++ Unless you really know what you are doing, you should say Y here. ++ The reason is that some programs need kernel networking support even ++ when running on a stand-alone machine that isn't connected to any ++ other computer. If you are upgrading from an older kernel, you ++ should consider updating your networking tools too because changes ++ in the kernel and the tools often go hand in hand. The tools are ++ contained in the package net-tools, the location and version number ++ of which are given in Documentation/Changes. + -+#define R_386_NONE 0 -+#define R_386_32 1 -+#define R_386_PC32 2 -+#define R_386_GOT32 3 -+#define R_386_PLT32 4 -+#define R_386_COPY 5 -+#define R_386_GLOB_DAT 6 -+#define R_386_JMP_SLOT 7 -+#define R_386_RELATIVE 8 -+#define R_386_GOTOFF 9 -+#define R_386_GOTPC 10 -+#define R_386_NUM 11 ++ For a general introduction to Linux networking, it is highly ++ recommended to read the NET-HOWTO, available from ++ . + - /********* Bits for asm-um/delay.h **********/ - typedef unsigned long um_udelay_t; -diff -Naur a/include/asm-um/common.lds.S b/include/asm-um/common.lds.S ---- a/include/asm-um/common.lds.S 2004-03-10 08:20:30.000000000 -0500 -+++ b/include/asm-um/common.lds.S 2004-03-10 08:35:55.000000000 -0500 -@@ -1,3 +1,5 @@ -+#include + source "fs/Kconfig.binfmt" + +@@ -85,6 +99,19 @@ + If you'd like to be able to work with files stored on the host, + say Y or M here; otherwise say N. + ++config HPPFS ++ tristate "HoneyPot ProcFS" ++ help ++ hppfs (HoneyPot ProcFS) is a filesystem which allows UML /proc ++ entries to be overridden, removed, or fabricated from the host. ++ Its purpose is to allow a UML to appear to be a physical machine ++ by removing or changing anything in /proc which gives away the ++ identity of a UML. + - .fini : { *(.fini) } =0x9090 - _etext = .; - PROVIDE (etext = .); -@@ -13,18 +15,6 @@ ++ See http://user-mode-linux.sf.net/hppfs.html for more information. ++ ++ You only need this if you are setting up a UML honeypot. Otherwise, ++ it is safe to say 'N' here. - RODATA + config MCONSOLE + bool "Management console" +@@ -105,6 +132,16 @@ + config MAGIC_SYSRQ + bool "Magic SysRq key" + depends on MCONSOLE ++ help ++ If you say Y here, you will have some control over the system even ++ if the system crashes for example during kernel debugging (e.g., you ++ will be able to flush the buffer cache to disk, reboot the system ++ immediately or dump some status information). This is accomplished ++ by pressing various keys while holding SysRq (Alt+PrintScreen). It ++ also works on a serial console (on PC hardware at least), if you ++ send a BREAK and then within 5 seconds a command keypress. The ++ keys are documented in Documentation/sysrq.txt. Don't say Y ++ unless you really know what this hack does. -- __start___ksymtab = .; /* Kernel symbol table */ -- __ksymtab : { *(__ksymtab) } -- __stop___ksymtab = .; -- -- __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */ -- __gpl_ksymtab : { *(__gpl_ksymtab) } -- __stop___gpl_ksymtab = .; -- -- __start___kallsyms = .; /* All kernel symbols */ -- __kallsyms : { *(__kallsyms) } -- __stop___kallsyms = .; -- - .unprotected : { *(.unprotected) } - . = ALIGN(4096); - PROVIDE (_unprotected_end = .); -@@ -67,11 +57,17 @@ - } - __initcall_end = .; + config HOST_2G_2G + bool "2G/2G host address space split" +@@ -168,6 +205,17 @@ + be 1 << order pages. The default is OK unless you're running Valgrind + on UML, in which case, set this to 3. -+ __con_initcall_start = .; -+ .con_initcall.init : { *(.con_initcall.init) } -+ __con_initcall_end = .; ++config UML_REAL_TIME_CLOCK ++ bool "Real-time Clock" ++ default y ++ help ++ This option makes UML time deltas match wall clock deltas. This should ++ normally be enabled. The exception would be if you are debugging with ++ UML and spend long times with UML stopped at a breakpoint. In this ++ case, when UML is restarted, it will call the timer enough times to make ++ up for the time spent at the breakpoint. This could result in a ++ noticable lag. If this is a problem, then disable this option. + - __uml_initcall_start = .; - .uml.initcall.init : { *(.uml.initcall.init) } - __uml_initcall_end = .; - __init_end = .; + endmenu + + source "init/Kconfig" +@@ -240,6 +288,10 @@ + config PT_PROXY + bool "Enable ptrace proxy" + depends on XTERM_CHAN && DEBUG_INFO ++ help ++ This option enables a debugging interface which allows gdb to debug ++ the kernel without needing to actually attach to kernel threads. ++ If you want to do kernel debugging, say Y here; otherwise say N. -+ SECURITY_INIT -+ - __exitcall_begin = .; - .exitcall : { *(.exitcall.exit) } - __exitcall_end = .; -@@ -80,7 +76,33 @@ - .uml.exitcall : { *(.uml.exitcall.exit) } - __uml_exitcall_end = .; + config GPROF + bool "Enable gprof support" +Index: uml-2.6.7/arch/um/drivers/hostaudio_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/hostaudio_kern.c 2004-07-16 19:37:40.179916800 +0300 ++++ uml-2.6.7/arch/um/drivers/hostaudio_kern.c 2004-07-16 19:47:24.525082832 +0300 +@@ -5,44 +5,64 @@ -- . = ALIGN(4096); -+ . = ALIGN(4); -+ __alt_instructions = .; -+ .altinstructions : { *(.altinstructions) } -+ __alt_instructions_end = .; -+ .altinstr_replacement : { *(.altinstr_replacement) } -+ /* .exit.text is discard at runtime, not link time, to deal with references -+ from .altinstructions and .eh_frame */ -+ .exit.text : { *(.exit.text) } -+ .exit.data : { *(.exit.data) } -+ -+ __preinit_array_start = .; -+ .preinit_array : { *(.preinit_array) } -+ __preinit_array_end = .; -+ __init_array_start = .; -+ .init_array : { *(.init_array) } -+ __init_array_end = .; -+ __fini_array_start = .; -+ .fini_array : { *(.fini_array) } -+ __fini_array_end = .; -+ -+ . = ALIGN(4096); - __initramfs_start = .; - .init.ramfs : { *(.init.ramfs) } - __initramfs_end = .; + #include "linux/config.h" + #include "linux/module.h" +-#include "linux/version.h" + #include "linux/init.h" + #include "linux/slab.h" + #include "linux/fs.h" + #include "linux/sound.h" + #include "linux/soundcard.h" ++#include "asm/uaccess.h" + #include "kern_util.h" + #include "init.h" +-#include "hostaudio.h" ++#include "os.h" + -+ /* Sections to be discarded */ -+ /DISCARD/ : { -+ *(.exitcall.exit) -+ } -+ -diff -Naur a/include/asm-um/cpufeature.h b/include/asm-um/cpufeature.h ---- a/include/asm-um/cpufeature.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/asm-um/cpufeature.h 2004-03-10 08:33:51.000000000 -0500 -@@ -0,0 +1,6 @@ -+#ifndef __UM_CPUFEATURE_H -+#define __UM_CPUFEATURE_H ++struct hostaudio_state { ++ int fd; ++}; + -+#include "asm/arch/cpufeature.h" ++struct hostmixer_state { ++ int fd; ++}; + -+#endif -diff -Naur a/include/asm-um/current.h b/include/asm-um/current.h ---- a/include/asm-um/current.h 2004-03-10 08:20:21.000000000 -0500 -+++ b/include/asm-um/current.h 2004-03-10 08:34:24.000000000 -0500 -@@ -16,8 +16,10 @@ - #define CURRENT_THREAD(dummy) (((unsigned long) &dummy) & \ - (PAGE_MASK << CONFIG_KERNEL_STACK_ORDER)) ++#define HOSTAUDIO_DEV_DSP "/dev/sound/dsp" ++#define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer" --#define current ({ int dummy; \ -- ((struct thread_info *) CURRENT_THREAD(dummy))->task; }) -+#define current_thread \ -+ ({ int dummy; ((struct thread_info *) CURRENT_THREAD(dummy)); }) + /* Only changed from linux_main at boot time */ + char *dsp = HOSTAUDIO_DEV_DSP; + char *mixer = HOSTAUDIO_DEV_MIXER; + ++#define DSP_HELP \ ++" This is used to specify the host dsp device to the hostaudio driver.\n" \ ++" The default is \"" HOSTAUDIO_DEV_DSP "\".\n\n" + -+#define current (current_thread->task) ++#define MIXER_HELP \ ++" This is used to specify the host mixer device to the hostaudio driver.\n" \ ++" The default is \"" HOSTAUDIO_DEV_MIXER "\".\n\n" ++ + #ifndef MODULE + static int set_dsp(char *name, int *add) + { +- dsp = uml_strdup(name); ++ dsp = name; + return(0); + } - #endif /* __ASSEMBLY__ */ +-__uml_setup("dsp=", set_dsp, +-"dsp=\n" +-" This is used to specify the host dsp device to the hostaudio driver.\n" +-" The default is \"" HOSTAUDIO_DEV_DSP "\".\n\n" +-); ++__uml_setup("dsp=", set_dsp, "dsp=\n" DSP_HELP); -diff -Naur a/include/asm-um/dma-mapping.h b/include/asm-um/dma-mapping.h ---- a/include/asm-um/dma-mapping.h 2004-03-10 08:20:24.000000000 -0500 -+++ b/include/asm-um/dma-mapping.h 2004-03-10 08:35:03.000000000 -0500 -@@ -1 +1,119 @@ --#include -+#ifndef _ASM_DMA_MAPPING_H -+#define _ASM_DMA_MAPPING_H -+ -+static inline int -+dma_supported(struct device *dev, u64 mask) -+{ -+ BUG(); -+ return(0); -+} + static int set_mixer(char *name, int *add) + { +- mixer = uml_strdup(name); ++ mixer = name; + return(0); + } + +-__uml_setup("mixer=", set_mixer, +-"mixer=\n" +-" This is used to specify the host mixer device to the hostaudio driver.\n" +-" The default is \"" HOSTAUDIO_DEV_MIXER "\".\n\n" +-); ++__uml_setup("mixer=", set_mixer, "mixer=\n" MIXER_HELP); + -+static inline int -+dma_set_mask(struct device *dev, u64 dma_mask) -+{ -+ BUG(); -+ return(0); -+} ++#else /*MODULE*/ + -+static inline void * -+dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, -+ int flag) -+{ -+ BUG(); -+ return((void *) 0); -+} ++MODULE_PARM(dsp, "s"); ++MODULE_PARM_DESC(dsp, DSP_HELP); + -+static inline void -+dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, -+ dma_addr_t dma_handle) -+{ -+ BUG(); -+} ++MODULE_PARM(mixer, "s"); ++MODULE_PARM_DESC(mixer, MIXER_HELP); + -+static inline dma_addr_t -+dma_map_single(struct device *dev, void *cpu_addr, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+ return(0); -+} + #endif + + /* /dev/dsp file operations */ +@@ -51,23 +71,55 @@ + loff_t *ppos) + { + struct hostaudio_state *state = file->private_data; ++ void *kbuf; ++ int ret; + + #ifdef DEBUG + printk("hostaudio: read called, count = %d\n", count); + #endif + +- return(hostaudio_read_user(state, buffer, count, ppos)); ++ kbuf = kmalloc(count, GFP_KERNEL); ++ if(kbuf == NULL) ++ return(-ENOMEM); + -+static inline void -+dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} ++ ret = os_read_file(state->fd, kbuf, count); ++ if(ret < 0) ++ goto out; + -+static inline dma_addr_t -+dma_map_page(struct device *dev, struct page *page, -+ unsigned long offset, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+ return(0); -+} ++ if(copy_to_user(buffer, kbuf, ret)) ++ ret = -EFAULT; + -+static inline void -+dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} ++ out: ++ kfree(kbuf); ++ return(ret); + } + + static ssize_t hostaudio_write(struct file *file, const char *buffer, + size_t count, loff_t *ppos) + { + struct hostaudio_state *state = file->private_data; ++ void *kbuf; ++ int ret; + + #ifdef DEBUG + printk("hostaudio: write called, count = %d\n", count); + #endif +- return(hostaudio_write_user(state, buffer, count, ppos)); + -+static inline int -+dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+ return(0); -+} ++ kbuf = kmalloc(count, GFP_KERNEL); ++ if(kbuf == NULL) ++ return(-ENOMEM); + -+static inline void -+dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} ++ ret = -EFAULT; ++ if(copy_from_user(kbuf, buffer, count)) ++ goto out; + -+static inline void -+dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} ++ ret = os_write_file(state->fd, kbuf, count); ++ if(ret < 0) ++ goto out; + -+static inline void -+dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} ++ out: ++ kfree(kbuf); ++ return(ret); + } + + static unsigned int hostaudio_poll(struct file *file, +@@ -86,12 +138,43 @@ + unsigned int cmd, unsigned long arg) + { + struct hostaudio_state *state = file->private_data; ++ unsigned long data = 0; ++ int ret; + + #ifdef DEBUG + printk("hostaudio: ioctl called, cmd = %u\n", cmd); + #endif ++ switch(cmd){ ++ case SNDCTL_DSP_SPEED: ++ case SNDCTL_DSP_STEREO: ++ case SNDCTL_DSP_GETBLKSIZE: ++ case SNDCTL_DSP_CHANNELS: ++ case SNDCTL_DSP_SUBDIVIDE: ++ case SNDCTL_DSP_SETFRAGMENT: ++ if(get_user(data, (int *) arg)) ++ return(-EFAULT); ++ break; ++ default: ++ break; ++ } + -+#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) -+#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) -+#define dma_is_consistent(d) (1) ++ ret = os_ioctl_generic(state->fd, cmd, (unsigned long) &data); + -+static inline int -+dma_get_cache_alignment(void) -+{ -+ BUG(); -+ return(0); -+} ++ switch(cmd){ ++ case SNDCTL_DSP_SPEED: ++ case SNDCTL_DSP_STEREO: ++ case SNDCTL_DSP_GETBLKSIZE: ++ case SNDCTL_DSP_CHANNELS: ++ case SNDCTL_DSP_SUBDIVIDE: ++ case SNDCTL_DSP_SETFRAGMENT: ++ if(put_user(data, (int *) arg)) ++ return(-EFAULT); ++ break; ++ default: ++ break; ++ } + +- return(hostaudio_ioctl_user(state, cmd, arg)); ++ return(ret); + } + + static int hostaudio_open(struct inode *inode, struct file *file) +@@ -110,12 +193,17 @@ + if(file->f_mode & FMODE_READ) r = 1; + if(file->f_mode & FMODE_WRITE) w = 1; + +- ret = hostaudio_open_user(state, r, w, dsp); ++ ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); ++ + if(ret < 0){ ++ printk("hostaudio_open failed to open '%s', err = %d\n", ++ dsp, -ret); + kfree(state); + return(ret); + } + ++ state->fd = ret; + -+static inline void -+dma_sync_single_range(struct device *dev, dma_addr_t dma_handle, -+ unsigned long offset, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} + file->private_data = state; + return(0); + } +@@ -123,16 +211,19 @@ + static int hostaudio_release(struct inode *inode, struct file *file) + { + struct hostaudio_state *state = file->private_data; +- int ret; + + #ifdef DEBUG + printk("hostaudio: release called\n"); + #endif + +- ret = hostaudio_release_user(state); ++ if(state->fd >= 0){ ++ os_close_file(state->fd); ++ state->fd = -1; ++ } + -+static inline void -+dma_cache_sync(void *vaddr, size_t size, -+ enum dma_data_direction direction) -+{ -+ BUG(); -+} + kfree(state); + +- return(ret); ++ return(0); + } + + /* /dev/mixer file operations */ +@@ -146,7 +237,7 @@ + printk("hostmixer: ioctl called\n"); + #endif + +- return(hostmixer_ioctl_mixdev_user(state, cmd, arg)); ++ return(os_ioctl_generic(state->fd, cmd, arg)); + } + + static int hostmixer_open_mixdev(struct inode *inode, struct file *file) +@@ -165,13 +256,17 @@ + if(file->f_mode & FMODE_READ) r = 1; + if(file->f_mode & FMODE_WRITE) w = 1; + +- ret = hostmixer_open_mixdev_user(state, r, w, mixer); ++ ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); + + if(ret < 0){ ++ printk("hostaudio_open_mixdev failed to open '%s', err = %d\n", ++ dsp, -ret); + kfree(state); + return(ret); + } + ++ state->fd = ret; + -+#endif -diff -Naur a/include/asm-um/elf.h b/include/asm-um/elf.h ---- a/include/asm-um/elf.h 2004-03-10 08:21:54.000000000 -0500 -+++ b/include/asm-um/elf.h 2004-03-10 08:40:56.000000000 -0500 -@@ -15,4 +15,17 @@ + file->private_data = state; + return(0); + } +@@ -179,16 +274,18 @@ + static int hostmixer_release(struct inode *inode, struct file *file) + { + struct hostmixer_state *state = file->private_data; +- int ret; + + #ifdef DEBUG + printk("hostmixer: release called\n"); + #endif + +- ret = hostmixer_release_mixdev_user(state); ++ if(state->fd >= 0){ ++ os_close_file(state->fd); ++ state->fd = -1; ++ } + kfree(state); + +- return(ret); ++ return(0); + } + + +@@ -225,7 +322,8 @@ + + static int __init hostaudio_init_module(void) + { +- printk(KERN_INFO "UML Audio Relay\n"); ++ printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", ++ dsp, mixer); + + module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); + if(module_data.dev_audio < 0){ +Index: uml-2.6.7/arch/um/include/user.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/user.h 2004-07-16 19:35:55.750792440 +0300 ++++ uml-2.6.7/arch/um/include/user.h 2004-07-16 19:47:23.709206864 +0300 +@@ -14,6 +14,7 @@ + extern void kfree(void *ptr); + extern int in_aton(char *str); + extern int open_gdb_chan(void); ++extern int strlcpy(char *, const char *, int); + + #endif + +Index: uml-2.6.7/arch/um/include/skas_ptrace.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/skas_ptrace.h 2004-07-16 19:37:26.080060304 +0300 ++++ uml-2.6.7/arch/um/include/skas_ptrace.h 2004-07-16 19:47:23.706207320 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) + * Licensed under the GPL + */ + +Index: uml-2.6.7/arch/um/kernel/tt/ptproxy/sysdep.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/ptproxy/sysdep.c 2004-07-16 19:37:13.940905736 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/ptproxy/sysdep.c 2004-07-16 19:47:23.747201088 +0300 +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +Index: uml-2.6.7/arch/um/kernel/tt/ptproxy/proxy.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/ptproxy/proxy.c 2004-07-16 19:36:56.795512232 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/ptproxy/proxy.c 2004-07-16 19:47:24.800041032 +0300 +@@ -15,7 +15,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -273,7 +272,7 @@ + + child_proxy(1, W_EXITCODE(0, 0)); + while(debugger.waiting == 1){ +- pid = waitpid(debugger.pid, &status, WUNTRACED); ++ CATCH_EINTR(pid = waitpid(debugger.pid, &status, WUNTRACED)); + if(pid != debugger.pid){ + printk("fake_child_exit - waitpid failed, " + "errno = %d\n", errno); +@@ -281,7 +280,7 @@ + } + debugger_proxy(status, debugger.pid); + } +- pid = waitpid(debugger.pid, &status, WUNTRACED); ++ CATCH_EINTR(pid = waitpid(debugger.pid, &status, WUNTRACED)); + if(pid != debugger.pid){ + printk("fake_child_exit - waitpid failed, " + "errno = %d\n", errno); +@@ -293,10 +292,10 @@ + } + + char gdb_init_string[] = +-"att 1 +-b panic +-b stop +-handle SIGWINCH nostop noprint pass ++"att 1 \n\ ++b panic \n\ ++b stop \n\ ++handle SIGWINCH nostop noprint pass \n\ + "; + + int start_debugger(char *prog, int startup, int stop, int *fd_out) +@@ -304,7 +303,8 @@ + int slave, child; + + slave = open_gdb_chan(); +- if((child = fork()) == 0){ ++ child = fork(); ++ if(child == 0){ + char *tempname = NULL; + int fd; + +@@ -327,18 +327,19 @@ + exit(1); + #endif + } +- if((fd = make_tempfile("/tmp/gdb_init-XXXXXX", &tempname, 0)) < 0){ +- printk("start_debugger : make_tempfile failed, errno = %d\n", +- errno); ++ fd = make_tempfile("/tmp/gdb_init-XXXXXX", &tempname, 0); ++ if(fd < 0){ ++ printk("start_debugger : make_tempfile failed," ++ "err = %d\n", -fd); + exit(1); + } +- write(fd, gdb_init_string, sizeof(gdb_init_string) - 1); ++ os_write_file(fd, gdb_init_string, sizeof(gdb_init_string) - 1); + if(startup){ + if(stop){ +- write(fd, "b start_kernel\n", ++ os_write_file(fd, "b start_kernel\n", + strlen("b start_kernel\n")); + } +- write(fd, "c\n", strlen("c\n")); ++ os_write_file(fd, "c\n", strlen("c\n")); + } + if(ptrace(PTRACE_TRACEME, 0, 0, 0) < 0){ + printk("start_debugger : PTRACE_TRACEME failed, " +Index: uml-2.6.7/arch/um/kernel/tt/include/uaccess.h +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/include/uaccess.h 2004-07-16 19:37:00.052017168 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/include/uaccess.h 2004-07-16 19:47:23.744201544 +0300 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +@@ -43,65 +43,19 @@ + + extern int __do_copy_from_user(void *to, const void *from, int n, + void **fault_addr, void **fault_catcher); +- +-static inline int copy_from_user_tt(void *to, const void *from, int n) +-{ +- return(access_ok_tt(VERIFY_READ, from, n) ? +- __do_copy_from_user(to, from, n, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher) : n); +-} +- +-static inline int copy_to_user_tt(void *to, const void *from, int n) +-{ +- return(access_ok_tt(VERIFY_WRITE, to, n) ? +- __do_copy_to_user(to, from, n, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher) : n); +-} +- + extern int __do_strncpy_from_user(char *dst, const char *src, size_t n, + void **fault_addr, void **fault_catcher); +- +-static inline int strncpy_from_user_tt(char *dst, const char *src, int count) +-{ +- int n; +- +- if(!access_ok_tt(VERIFY_READ, src, 1)) return(-EFAULT); +- n = __do_strncpy_from_user(dst, src, count, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher); +- if(n < 0) return(-EFAULT); +- return(n); +-} +- + extern int __do_clear_user(void *mem, size_t len, void **fault_addr, + void **fault_catcher); +- +-static inline int __clear_user_tt(void *mem, int len) +-{ +- return(__do_clear_user(mem, len, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher)); +-} +- +-static inline int clear_user_tt(void *mem, int len) +-{ +- return(access_ok_tt(VERIFY_WRITE, mem, len) ? +- __do_clear_user(mem, len, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher) : len); +-} +- + extern int __do_strnlen_user(const char *str, unsigned long n, + void **fault_addr, void **fault_catcher); - #define USE_ELF_CORE_DUMP +-static inline int strnlen_user_tt(const void *str, int len) +-{ +- return(__do_strnlen_user(str, len, +- ¤t->thread.fault_addr, +- ¤t->thread.fault_catcher)); +-} ++extern int copy_from_user_tt(void *to, const void *from, int n); ++extern int copy_to_user_tt(void *to, const void *from, int n); ++extern int strncpy_from_user_tt(char *dst, const char *src, int count); ++extern int __clear_user_tt(void *mem, int len); ++extern int clear_user_tt(void *mem, int len); ++extern int strnlen_user_tt(const void *str, int len); -+#define R_386_NONE 0 -+#define R_386_32 1 -+#define R_386_PC32 2 -+#define R_386_GOT32 3 -+#define R_386_PLT32 4 -+#define R_386_COPY 5 -+#define R_386_GLOB_DAT 6 -+#define R_386_JMP_SLOT 7 -+#define R_386_RELATIVE 8 -+#define R_386_GOTOFF 9 -+#define R_386_GOTPC 10 -+#define R_386_NUM 11 -+ - #endif -diff -Naur a/include/asm-um/fixmap.h b/include/asm-um/fixmap.h ---- a/include/asm-um/fixmap.h 2004-03-10 08:23:06.000000000 -0500 -+++ b/include/asm-um/fixmap.h 2004-03-10 08:43:41.000000000 -0500 -@@ -34,6 +34,7 @@ - FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ - FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, #endif -+ FIX_VSYSCALL, - __end_of_fixed_addresses - }; - -@@ -63,6 +64,13 @@ - #define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) - #define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) -+/* -+ * This is the range that is readable by user mode, and things -+ * acting like user mode such as get_user_pages. -+ */ -+#define FIXADDR_USER_START (__fix_to_virt(FIX_VSYSCALL)) -+#define FIXADDR_USER_END (FIXADDR_USER_START + PAGE_SIZE) -+ - extern void __this_fixmap_does_not_exist(void); +Index: uml-2.6.7/arch/um/drivers/null.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/null.c 2004-07-16 19:35:59.203267584 +0300 ++++ uml-2.6.7/arch/um/drivers/null.c 2004-07-16 19:47:23.690209752 +0300 +@@ -5,7 +5,6 @@ - /* -diff -Naur a/include/asm-um/irq.h b/include/asm-um/irq.h ---- a/include/asm-um/irq.h 2004-03-10 08:23:16.000000000 -0500 -+++ b/include/asm-um/irq.h 2004-03-10 08:44:44.000000000 -0500 -@@ -4,12 +4,6 @@ - /* The i386 irq.h has a struct task_struct in a prototype without including - * sched.h. This forward declaration kills the resulting warning. - */ --struct task_struct; -- --#include "asm/ptrace.h" -- --#undef NR_IRQS -- - #define TIMER_IRQ 0 - #define UMN_IRQ 1 - #define CONSOLE_IRQ 2 -@@ -28,10 +22,6 @@ - #define LAST_IRQ XTERM_IRQ - #define NR_IRQS (LAST_IRQ + 1) + #include + #include +-#include + #include "chan_user.h" + #include "os.h" --extern int um_request_irq(unsigned int irq, int fd, int type, -- void (*handler)(int, void *, struct pt_regs *), -- unsigned long irqflags, const char * devname, -- void *dev_id); +Index: uml-2.6.7/arch/um/kernel/frame_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/frame_kern.c 2004-07-16 19:37:51.994120768 +0300 ++++ uml-2.6.7/arch/um/kernel/frame_kern.c 2004-07-16 19:47:23.714206104 +0300 +@@ -6,7 +6,6 @@ + #include "asm/ptrace.h" + #include "asm/uaccess.h" + #include "asm/signal.h" +-#include "asm/uaccess.h" + #include "asm/ucontext.h" + #include "frame_kern.h" + #include "sigcontext.h" +@@ -29,12 +28,15 @@ + sizeof(restorer))); + } - struct irqaction; - struct pt_regs; -diff -Naur a/include/asm-um/local.h b/include/asm-um/local.h ---- a/include/asm-um/local.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/asm-um/local.h 2004-03-10 08:40:48.000000000 -0500 -@@ -0,0 +1,6 @@ -+#ifndef __UM_LOCAL_H -+#define __UM_LOCAL_H -+ -+#include "asm/arch/local.h" -+ -+#endif -diff -Naur a/include/asm-um/module-generic.h b/include/asm-um/module-generic.h ---- a/include/asm-um/module-generic.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/asm-um/module-generic.h 2004-03-10 08:39:56.000000000 -0500 -@@ -0,0 +1,6 @@ -+#ifndef __UM_MODULE_GENERIC_H -+#define __UM_MODULE_GENERIC_H -+ -+#include "asm/arch/module.h" -+ -+#endif -diff -Naur a/include/asm-um/module-i386.h b/include/asm-um/module-i386.h ---- a/include/asm-um/module-i386.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/asm-um/module-i386.h 2004-03-10 08:39:54.000000000 -0500 -@@ -0,0 +1,13 @@ -+#ifndef __UM_MODULE_I386_H -+#define __UM_MODULE_I386_H -+ -+/* UML is simple */ -+struct mod_arch_specific -+{ -+}; -+ -+#define Elf_Shdr Elf32_Shdr -+#define Elf_Sym Elf32_Sym -+#define Elf_Ehdr Elf32_Ehdr -+ -+#endif -diff -Naur a/include/asm-um/page.h b/include/asm-um/page.h ---- a/include/asm-um/page.h 2004-03-10 08:21:31.000000000 -0500 -+++ b/include/asm-um/page.h 2004-03-10 08:40:04.000000000 -0500 -@@ -1,10 +1,14 @@ -+/* -+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com) -+ * Licensed under the GPL -+ */ ++extern int userspace_pid[]; + - #ifndef __UM_PAGE_H - #define __UM_PAGE_H + static int copy_sc_to_user(void *to, void *fp, struct pt_regs *from, + struct arch_frame_data *arch) + { + return(CHOOSE_MODE(copy_sc_to_user_tt(to, fp, UPT_SC(&from->regs), + arch), +- copy_sc_to_user_skas(to, fp, &from->regs, ++ copy_sc_to_user_skas(userspace_pid[0], to, fp, ++ &from->regs, + current->thread.cr2, + current->thread.err))); + } +Index: uml-2.6.7/arch/um/include/mem.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/mem.h 2004-07-16 19:37:46.189003280 +0300 ++++ uml-2.6.7/arch/um/include/mem.h 2004-07-16 19:47:23.703207776 +0300 +@@ -1,19 +1,18 @@ + /* +- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2002, 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ - struct page; + #ifndef __MEM_H__ + #define __MEM_H__ - #include "asm/arch/page.h" --#include "asm/bug.h" +-struct vm_reserved { +- struct list_head list; +- unsigned long start; +- unsigned long end; +-}; ++#include "linux/types.h" - #undef __pa - #undef __va -@@ -24,25 +28,36 @@ +-extern void set_usable_vm(unsigned long start, unsigned long end); +-extern void set_kmem_end(unsigned long new); ++extern int phys_mapping(unsigned long phys, __u64 *offset_out); ++extern int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w); ++extern int is_remapped(void *virt); ++extern int physmem_remove_mapping(void *virt); ++extern void physmem_forget_descriptor(int fd); - #define __va_space (8*1024*1024) + #endif --extern unsigned long region_pa(void *virt); --extern void *region_va(unsigned long phys); -- --#define __pa(virt) region_pa((void *) (virt)) --#define __va(phys) region_va((unsigned long) (phys)) -- --extern unsigned long page_to_pfn(struct page *page); --extern struct page *pfn_to_page(unsigned long pfn); -+extern unsigned long to_phys(void *virt); -+extern void *to_virt(unsigned long phys); +Index: uml-2.6.7/arch/um/include/ubd_user.h +=================================================================== +--- uml-2.6.7.orig/arch/um/include/ubd_user.h 2004-07-16 19:36:48.255810464 +0300 ++++ uml-2.6.7/arch/um/include/ubd_user.h 2004-07-16 19:47:23.708207016 +0300 +@@ -9,7 +9,7 @@ --extern struct page *phys_to_page(unsigned long phys); -+#define __pa(virt) to_phys((void *) virt) -+#define __va(phys) to_virt((unsigned long) phys) + #include "os.h" --#define virt_to_page(v) (phys_to_page(__pa(v))) -+#define page_to_pfn(page) ((page) - mem_map) -+#define pfn_to_page(pfn) (mem_map + (pfn)) +-enum ubd_req { UBD_READ, UBD_WRITE }; ++enum ubd_req { UBD_READ, UBD_WRITE, UBD_MMAP }; --extern struct page *page_mem_map(struct page *page); -+#define phys_to_pfn(p) ((p) >> PAGE_SHIFT) -+#define pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) + struct io_thread_req { + enum ubd_req op; +@@ -20,8 +20,10 @@ + char *buffer; + int sectorsize; + unsigned long sector_mask; +- unsigned long cow_offset; ++ unsigned long long cow_offset; + unsigned long bitmap_words[2]; ++ int map_fd; ++ unsigned long long map_offset; + int error; + }; --#define pfn_valid(pfn) (page_mem_map(pfn_to_page(pfn)) != NULL) --#define virt_addr_valid(v) pfn_valid(__pa(v) >> PAGE_SHIFT) -+#define pfn_valid(pfn) ((pfn) < max_mapnr) -+#define virt_addr_valid(v) pfn_valid(phys_to_pfn(__pa(v))) +@@ -31,7 +33,7 @@ + int *create_cow_out); + extern int create_cow_file(char *cow_file, char *backing_file, + struct openflags flags, int sectorsize, +- int *bitmap_offset_out, ++ int alignment, int *bitmap_offset_out, + unsigned long *bitmap_len_out, + int *data_offset_out); + extern int read_cow_bitmap(int fd, void *buf, int offset, int len); +@@ -39,7 +41,6 @@ + extern int write_ubd_fs(int fd, char *buffer, int len); + extern int start_io_thread(unsigned long sp, int *fds_out); + extern void do_io(struct io_thread_req *req); +-extern int ubd_is_dir(char *file); - extern struct page *arch_validate(struct page *page, int mask, int order); - #define HAVE_ARCH_VALIDATE + static inline int ubd_test_bit(__u64 bit, unsigned char *data) + { +Index: uml-2.6.7/arch/um/uml.lds.S +=================================================================== +--- uml-2.6.7.orig/arch/um/uml.lds.S 2004-07-16 19:36:36.401612576 +0300 ++++ uml-2.6.7/arch/um/uml.lds.S 2004-07-16 19:47:23.780196072 +0300 +@@ -9,7 +9,6 @@ + { + . = START + SIZEOF_HEADERS; -+extern void arch_free_page(struct page *page, int order); -+#define HAVE_ARCH_FREE_PAGE -+ - #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-file-style: "linux" -+ * End: -+ */ -diff -Naur a/include/asm-um/pgtable.h b/include/asm-um/pgtable.h ---- a/include/asm-um/pgtable.h 2004-03-10 08:23:29.000000000 -0500 -+++ b/include/asm-um/pgtable.h 2004-03-10 08:45:36.000000000 -0500 -@@ -12,8 +12,6 @@ - #include "asm/page.h" - #include "asm/fixmap.h" +- . = ALIGN(4096); + __binary_start = .; + #ifdef MODE_TT + .thread_private : { +@@ -26,11 +25,16 @@ + . = ALIGN(4096); /* Init code and data */ + _stext = .; + __init_begin = .; +- .text.init : { *(.text.init) } ++ .init.text : { ++ _sinittext = .; ++ *(.init.text) ++ _einittext = .; ++ } + . = ALIGN(4096); + .text : + { + *(.text) ++ SCHED_TEXT + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) +@@ -38,7 +42,7 @@ --extern pgd_t swapper_pg_dir[1024]; -- - extern void *um_virt_to_phys(struct task_struct *task, unsigned long virt, - pte_t *pte_out); + #include "asm/common.lds.S" -@@ -49,6 +47,8 @@ - #define pgd_ERROR(e) \ - printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) +- .data.init : { *(.data.init) } ++ init.data : { *(init.data) } + .data : + { + . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ +Index: uml-2.6.7/arch/um/os-Linux/drivers/ethertap_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/os-Linux/drivers/ethertap_user.c 2004-07-16 19:36:42.453692520 +0300 ++++ uml-2.6.7/arch/um/os-Linux/drivers/ethertap_user.c 2004-07-16 19:47:24.801040880 +0300 +@@ -8,7 +8,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -17,6 +16,7 @@ + #include + #include "user.h" + #include "kern_util.h" ++#include "user_util.h" + #include "net_user.h" + #include "etap.h" + #include "helper.h" +@@ -42,13 +42,14 @@ + { + struct addr_change change; + void *output; ++ int n; -+extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; -+ - /* - * pgd entries used up by user/kernel: - */ -@@ -65,10 +65,10 @@ - * area for the same reason. ;) - */ + change.what = op; + memcpy(change.addr, addr, sizeof(change.addr)); + memcpy(change.netmask, netmask, sizeof(change.netmask)); +- if(write(fd, &change, sizeof(change)) != sizeof(change)) +- printk("etap_change - request failed, errno = %d\n", +- errno); ++ n = os_write_file(fd, &change, sizeof(change)); ++ if(n != sizeof(change)) ++ printk("etap_change - request failed, err = %d\n", -n); + output = um_kmalloc(page_size()); + if(output == NULL) + printk("etap_change : Failed to allocate output buffer\n"); +@@ -82,15 +83,15 @@ + struct etap_pre_exec_data *data = arg; --extern unsigned long high_physmem; -+extern unsigned long end_iomem; + dup2(data->control_remote, 1); +- close(data->data_me); +- close(data->control_me); ++ os_close_file(data->data_me); ++ os_close_file(data->control_me); + } - #define VMALLOC_OFFSET (__va_space) --#define VMALLOC_START (((unsigned long) high_physmem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) -+#define VMALLOC_START ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) + static int etap_tramp(char *dev, char *gate, int control_me, + int control_remote, int data_me, int data_remote) + { + struct etap_pre_exec_data pe_data; +- int pid, status, err; ++ int pid, status, err, n; + char version_buf[sizeof("nnnnn\0")]; + char data_fd_buf[sizeof("nnnnnn\0")]; + char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; +@@ -114,21 +115,22 @@ + pe_data.data_me = data_me; + pid = run_helper(etap_pre_exec, &pe_data, args, NULL); - #ifdef CONFIG_HIGHMEM - # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) -@@ -78,12 +78,13 @@ +- if(pid < 0) err = errno; +- close(data_remote); +- close(control_remote); +- if(read(control_me, &c, sizeof(c)) != sizeof(c)){ +- printk("etap_tramp : read of status failed, errno = %d\n", +- errno); +- return(EINVAL); ++ if(pid < 0) err = pid; ++ os_close_file(data_remote); ++ os_close_file(control_remote); ++ n = os_read_file(control_me, &c, sizeof(c)); ++ if(n != sizeof(c)){ ++ printk("etap_tramp : read of status failed, err = %d\n", -n); ++ return(-EINVAL); + } + if(c != 1){ + printk("etap_tramp : uml_net failed\n"); +- err = EINVAL; +- if(waitpid(pid, &status, 0) < 0) err = errno; +- else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 1)){ ++ err = -EINVAL; ++ CATCH_EINTR(n = waitpid(pid, &status, 0)); ++ if(n < 0) ++ err = -errno; ++ else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 1)) + printk("uml_net didn't exit with status 1\n"); +- } + } + return(err); + } +@@ -143,14 +145,14 @@ + if(err) return(err); - #define _PAGE_PRESENT 0x001 - #define _PAGE_NEWPAGE 0x002 --#define _PAGE_PROTNONE 0x004 /* If not present */ --#define _PAGE_RW 0x008 --#define _PAGE_USER 0x010 --#define _PAGE_ACCESSED 0x020 --#define _PAGE_DIRTY 0x040 --#define _PAGE_NEWPROT 0x080 -+#define _PAGE_NEWPROT 0x004 -+#define _PAGE_FILE 0x008 /* set:pagecache unset:swap */ -+#define _PAGE_PROTNONE 0x010 /* If not present */ -+#define _PAGE_RW 0x020 -+#define _PAGE_USER 0x040 -+#define _PAGE_ACCESSED 0x080 -+#define _PAGE_DIRTY 0x100 + err = os_pipe(data_fds, 0, 0); +- if(err){ +- printk("data os_pipe failed - errno = %d\n", -err); ++ if(err < 0){ ++ printk("data os_pipe failed - err = %d\n", -err); + return(err); + } - #define REGION_MASK 0xf0000000 - #define REGION_SHIFT 28 -@@ -143,7 +144,8 @@ + err = os_pipe(control_fds, 1, 0); +- if(err){ +- printk("control os_pipe failed - errno = %d\n", -err); ++ if(err < 0){ ++ printk("control os_pipe failed - err = %d\n", -err); + return(err); + } + +@@ -167,9 +169,9 @@ + kfree(output); + } - #define BAD_PAGETABLE __bad_pagetable() - #define BAD_PAGE __bad_page() --#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) -+ -+#define ZERO_PAGE(vaddr) virt_to_page(empty_zero_page) +- if(err != 0){ +- printk("etap_tramp failed - errno = %d\n", err); +- return(-err); ++ if(err < 0){ ++ printk("etap_tramp failed - err = %d\n", -err); ++ return(err); + } - /* number of bits that fit into a memory pointer */ - #define BITS_PER_PTR (8*sizeof(unsigned long)) -@@ -164,9 +166,6 @@ + pri->data_fd = data_fds[0]; +@@ -183,11 +185,11 @@ + struct ethertap_data *pri = data; - #define pte_clear(xp) do { pte_val(*(xp)) = _PAGE_NEWPAGE; } while (0) + iter_addresses(pri->dev, etap_close_addr, &pri->control_fd); +- close(fd); ++ os_close_file(fd); + os_shutdown_socket(pri->data_fd, 1, 1); +- close(pri->data_fd); ++ os_close_file(pri->data_fd); + pri->data_fd = -1; +- close(pri->control_fd); ++ os_close_file(pri->control_fd); + pri->control_fd = -1; + } --#define phys_region_index(x) (((x) & REGION_MASK) >> REGION_SHIFT) --#define pte_region_index(x) phys_region_index(pte_val(x)) +Index: uml-2.6.7/arch/um/drivers/ubd_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/ubd_user.c 2004-07-16 19:36:13.849041088 +0300 ++++ uml-2.6.7/arch/um/drivers/ubd_user.c 2004-07-16 19:47:23.698208536 +0300 +@@ -11,11 +11,8 @@ + #include + #include + #include +-#include + #include +-#include + #include +-#include + #include + #include + #include "asm/types.h" +@@ -24,146 +21,30 @@ + #include "user.h" + #include "ubd_user.h" + #include "os.h" ++#include "cow.h" + + #include + #include +-#if __BYTE_ORDER == __BIG_ENDIAN +-# define ntohll(x) (x) +-# define htonll(x) (x) +-#elif __BYTE_ORDER == __LITTLE_ENDIAN +-# define ntohll(x) bswap_64(x) +-# define htonll(x) bswap_64(x) +-#else +-#error "__BYTE_ORDER not defined" +-#endif +- +-#define PATH_LEN_V1 256 +- +-struct cow_header_v1 { +- int magic; +- int version; +- char backing_file[PATH_LEN_V1]; +- time_t mtime; +- __u64 size; +- int sectorsize; +-}; +- +-#define PATH_LEN_V2 MAXPATHLEN +- +-struct cow_header_v2 { +- unsigned long magic; +- unsigned long version; +- char backing_file[PATH_LEN_V2]; +- time_t mtime; +- __u64 size; +- int sectorsize; +-}; +- +-union cow_header { +- struct cow_header_v1 v1; +- struct cow_header_v2 v2; +-}; +- +-#define COW_MAGIC 0x4f4f4f4d /* MOOO */ +-#define COW_VERSION 2 +- +-static void sizes(__u64 size, int sectorsize, int bitmap_offset, +- unsigned long *bitmap_len_out, int *data_offset_out) +-{ +- *bitmap_len_out = (size + sectorsize - 1) / (8 * sectorsize); +- +- *data_offset_out = bitmap_offset + *bitmap_len_out; +- *data_offset_out = (*data_offset_out + sectorsize - 1) / sectorsize; +- *data_offset_out *= sectorsize; +-} +- +-static int read_cow_header(int fd, int *magic_out, char **backing_file_out, +- time_t *mtime_out, __u64 *size_out, +- int *sectorsize_out, int *bitmap_offset_out) +-{ +- union cow_header *header; +- char *file; +- int err, n; +- unsigned long version, magic; +- +- header = um_kmalloc(sizeof(*header)); +- if(header == NULL){ +- printk("read_cow_header - Failed to allocate header\n"); +- return(-ENOMEM); +- } +- err = -EINVAL; +- n = read(fd, header, sizeof(*header)); +- if(n < offsetof(typeof(header->v1), backing_file)){ +- printk("read_cow_header - short header\n"); +- goto out; +- } - - #define pmd_none(x) (!(pmd_val(x) & ~_PAGE_NEWPAGE)) - #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) - #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT) -@@ -188,19 +187,25 @@ - - #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) - --extern struct page *pte_mem_map(pte_t pte); --extern struct page *phys_mem_map(unsigned long phys); --extern unsigned long phys_to_pfn(unsigned long p); --extern unsigned long pfn_to_phys(unsigned long pfn); +- magic = header->v1.magic; +- if(magic == COW_MAGIC) { +- version = header->v1.version; +- } +- else if(magic == ntohl(COW_MAGIC)){ +- version = ntohl(header->v1.version); +- } +- else goto out; - --#define pte_page(x) pfn_to_page(pte_pfn(x)) --#define pte_address(x) (__va(pte_val(x) & PAGE_MASK)) --#define mk_phys(a, r) ((a) + (r << REGION_SHIFT)) --#define phys_addr(p) ((p) & ~REGION_MASK) --#define phys_page(p) (phys_mem_map(p) + ((phys_addr(p)) >> PAGE_SHIFT)) -+#define pte_page(pte) phys_to_page(pte_val(pte)) -+#define pmd_page(pmd) phys_to_page(pmd_val(pmd) & PAGE_MASK) -+ - #define pte_pfn(x) phys_to_pfn(pte_val(x)) - #define pfn_pte(pfn, prot) __pte(pfn_to_phys(pfn) | pgprot_val(prot)) --#define pfn_pmd(pfn, prot) __pmd(pfn_to_phys(pfn) | pgprot_val(prot)) -+ -+extern struct page *phys_to_page(const unsigned long phys); -+extern struct page *__virt_to_page(const unsigned long virt); -+#define virt_to_page(addr) __virt_to_page((const unsigned long) addr) -+ -+/* -+ * Bits 0 through 3 are taken -+ */ -+#define PTE_FILE_MAX_BITS 28 -+ -+#define pte_to_pgoff(pte) ((pte).pte_low >> 4) -+ -+#define pgoff_to_pte(off) \ -+ ((pte_t) { ((off) << 4) + _PAGE_FILE }) - - static inline pte_t pte_mknewprot(pte_t pte) - { -@@ -235,6 +240,12 @@ - * The following only work if pte_present() is true. - * Undefined behaviour if not.. - */ -+static inline int pte_user(pte_t pte) -+{ -+ return((pte_val(pte) & _PAGE_USER) && -+ !(pte_val(pte) & _PAGE_PROTNONE)); -+} -+ - static inline int pte_read(pte_t pte) - { - return((pte_val(pte) & _PAGE_USER) && -@@ -252,6 +263,14 @@ - !(pte_val(pte) & _PAGE_PROTNONE)); - } - -+/* -+ * The following only works if pte_present() is not true. -+ */ -+static inline int pte_file(pte_t pte) -+{ -+ return (pte).pte_low & _PAGE_FILE; -+} -+ - static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } - static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } - static inline int pte_newpage(pte_t pte) { return pte_val(pte) & _PAGE_NEWPAGE; } -@@ -334,14 +353,7 @@ - * and a page entry and page directory to the page they refer to. - */ - --#define mk_pte(page, pgprot) \ --({ \ -- pte_t __pte; \ -- \ -- pte_val(__pte) = page_to_phys(page) + pgprot_val(pgprot);\ -- if(pte_present(__pte)) pte_mknewprot(pte_mknewpage(__pte)); \ -- __pte; \ --}) -+extern pte_t mk_pte(struct page *page, pgprot_t pgprot); +- *magic_out = COW_MAGIC; +- +- if(version == 1){ +- if(n < sizeof(header->v1)){ +- printk("read_cow_header - failed to read V1 header\n"); +- goto out; +- } +- *mtime_out = header->v1.mtime; +- *size_out = header->v1.size; +- *sectorsize_out = header->v1.sectorsize; +- *bitmap_offset_out = sizeof(header->v1); +- file = header->v1.backing_file; +- } +- else if(version == 2){ +- if(n < sizeof(header->v2)){ +- printk("read_cow_header - failed to read V2 header\n"); +- goto out; +- } +- *mtime_out = ntohl(header->v2.mtime); +- *size_out = ntohll(header->v2.size); +- *sectorsize_out = ntohl(header->v2.sectorsize); +- *bitmap_offset_out = sizeof(header->v2); +- file = header->v2.backing_file; +- } +- else { +- printk("read_cow_header - invalid COW version\n"); +- goto out; +- } +- err = -ENOMEM; +- *backing_file_out = uml_strdup(file); +- if(*backing_file_out == NULL){ +- printk("read_cow_header - failed to allocate backing file\n"); +- goto out; +- } +- err = 0; +- out: +- kfree(header); +- return(err); +-} - static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) + static int same_backing_files(char *from_cmdline, char *from_cow, char *cow) { -@@ -351,17 +363,27 @@ - } - - #define pmd_page_kernel(pmd) ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK)) --#define pmd_page(pmd) (phys_mem_map(pmd_val(pmd) & PAGE_MASK) + \ -- ((phys_addr(pmd_val(pmd)) >> PAGE_SHIFT))) +- struct stat buf1, buf2; ++ struct uml_stat buf1, buf2; ++ int err; --/* to find an entry in a page-table-directory. */ -+/* -+ * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD] -+ * -+ * this macro returns the index of the entry in the pgd page which would -+ * control the given virtual address -+ */ - #define pgd_index(address) ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) + if(from_cmdline == NULL) return(1); + if(!strcmp(from_cmdline, from_cow)) return(1); --/* to find an entry in a page-table-directory */ -+/* -+ * pgd_offset() returns a (pgd_t *) -+ * pgd_index() is used get the offset into the pgd page's array of pgd_t's; -+ */ - #define pgd_offset(mm, address) \ - ((mm)->pgd + ((address) >> PGDIR_SHIFT)) +- if(stat(from_cmdline, &buf1) < 0){ +- printk("Couldn't stat '%s', errno = %d\n", from_cmdline, +- errno); ++ err = os_stat_file(from_cmdline, &buf1); ++ if(err < 0){ ++ printk("Couldn't stat '%s', err = %d\n", from_cmdline, -err); + return(1); + } +- if(stat(from_cow, &buf2) < 0){ +- printk("Couldn't stat '%s', errno = %d\n", from_cow, errno); ++ err = os_stat_file(from_cow, &buf2); ++ if(err < 0){ ++ printk("Couldn't stat '%s', err = %d\n", from_cow, -err); + return(1); + } +- if((buf1.st_dev == buf2.st_dev) && (buf1.st_ino == buf2.st_ino)) ++ if((buf1.ust_dev == buf2.ust_dev) && (buf1.ust_ino == buf2.ust_ino)) + return(1); --/* to find an entry in a kernel page-table-directory */ -+ -+/* -+ * a shortcut which implies the use of the kernel's pgd, instead -+ * of a process's -+ */ - #define pgd_offset_k(address) pgd_offset(&init_mm, address) + printk("Backing file mismatch - \"%s\" requested,\n" +@@ -174,20 +55,21 @@ - #define pmd_index(address) \ -@@ -373,7 +395,12 @@ - return (pmd_t *) dir; - } + static int backing_file_mismatch(char *file, __u64 size, time_t mtime) + { +- struct stat64 buf; ++ unsigned long modtime; + long long actual; + int err; --/* Find an entry in the third-level page table.. */ -+/* -+ * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE] -+ * -+ * this macro returns the index of the entry in the pte page which would -+ * control the given virtual address -+ */ - #define pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) - #define pte_offset_kernel(dir, address) \ - ((pte_t *) pmd_page_kernel(*(dir)) + pte_index(address)) -@@ -399,11 +426,11 @@ - #define update_mmu_cache(vma,address,pte) do ; while (0) +- if(stat64(file, &buf) < 0){ +- printk("Failed to stat backing file \"%s\", errno = %d\n", +- file, errno); +- return(-errno); ++ err = os_file_modtime(file, &modtime); ++ if(err < 0){ ++ printk("Failed to get modification time of backing file " ++ "\"%s\", err = %d\n", file, -err); ++ return(err); + } - /* Encode and de-code a swap entry */ --#define __swp_type(x) (((x).val >> 3) & 0x7f) --#define __swp_offset(x) ((x).val >> 10) -+#define __swp_type(x) (((x).val >> 4) & 0x3f) -+#define __swp_offset(x) ((x).val >> 11) + err = os_file_size(file, &actual); +- if(err){ ++ if(err < 0){ + printk("Failed to get size of backing file \"%s\", " +- "errno = %d\n", file, -err); ++ "err = %d\n", file, -err); + return(err); + } - #define __swp_entry(type, offset) \ -- ((swp_entry_t) { ((type) << 3) | ((offset) << 10) }) -+ ((swp_entry_t) { ((type) << 4) | ((offset) << 11) }) - #define __pte_to_swp_entry(pte) \ - ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) }) - #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) -diff -Naur a/include/asm-um/processor-generic.h b/include/asm-um/processor-generic.h ---- a/include/asm-um/processor-generic.h 2004-03-10 08:20:28.000000000 -0500 -+++ b/include/asm-um/processor-generic.h 2004-03-10 08:35:28.000000000 -0500 -@@ -11,33 +11,14 @@ - struct task_struct; +@@ -196,9 +78,9 @@ + "file\n", size, actual); + return(-EINVAL); + } +- if(buf.st_mtime != mtime){ ++ if(modtime != mtime){ + printk("mtime mismatch (%ld vs %ld) of COW header vs backing " +- "file\n", mtime, buf.st_mtime); ++ "file\n", mtime, modtime); + return(-EINVAL); + } + return(0); +@@ -209,124 +91,16 @@ + int err; - #include "linux/config.h" --#include "linux/signal.h" - #include "asm/ptrace.h" --#include "asm/siginfo.h" - #include "choose-mode.h" + err = os_seek_file(fd, offset); +- if(err != 0) return(-errno); +- err = read(fd, buf, len); +- if(err < 0) return(-errno); +- return(0); +-} ++ if(err < 0) ++ return(err); - struct mm_struct; +-static int absolutize(char *to, int size, char *from) +-{ +- char save_cwd[256], *slash; +- int remaining; ++ err = os_read_file(fd, buf, len); ++ if(err < 0) ++ return(err); - #define current_text_addr() ((void *) 0) +- if(getcwd(save_cwd, sizeof(save_cwd)) == NULL) { +- printk("absolutize : unable to get cwd - errno = %d\n", errno); +- return(-1); +- } +- slash = strrchr(from, '/'); +- if(slash != NULL){ +- *slash = '\0'; +- if(chdir(from)){ +- *slash = '/'; +- printk("absolutize : Can't cd to '%s' - errno = %d\n", +- from, errno); +- return(-1); +- } +- *slash = '/'; +- if(getcwd(to, size) == NULL){ +- printk("absolutize : unable to get cwd of '%s' - " +- "errno = %d\n", from, errno); +- return(-1); +- } +- remaining = size - strlen(to); +- if(strlen(slash) + 1 > remaining){ +- printk("absolutize : unable to fit '%s' into %d " +- "chars\n", from, size); +- return(-1); +- } +- strcat(to, slash); +- } +- else { +- if(strlen(save_cwd) + 1 + strlen(from) + 1 > size){ +- printk("absolutize : unable to fit '%s' into %d " +- "chars\n", from, size); +- return(-1); +- } +- strcpy(to, save_cwd); +- strcat(to, "/"); +- strcat(to, from); +- } +- chdir(save_cwd); + return(0); + } --#define cpu_relax() do ; while (0) +-static int write_cow_header(char *cow_file, int fd, char *backing_file, +- int sectorsize, long long *size) +-{ +- struct cow_header_v2 *header; +- struct stat64 buf; +- int err; - --#ifdef CONFIG_MODE_TT --struct proc_tt_mode { -- int extern_pid; -- int tracing; -- int switch_pipe[2]; -- int singlestep_syscall; -- int vm_seq; --}; --#endif +- err = os_seek_file(fd, 0); +- if(err != 0){ +- printk("write_cow_header - lseek failed, errno = %d\n", errno); +- return(-errno); +- } - --#ifdef CONFIG_MODE_SKAS --struct proc_skas_mode { -- void *switch_buf; -- void *fork_buf; --}; --#endif -+#define cpu_relax() barrier() - - struct thread_struct { - int forking; -@@ -46,6 +27,7 @@ - struct pt_regs regs; - unsigned long cr2; - int err; -+ unsigned long trap_no; - void *fault_addr; - void *fault_catcher; - struct task_struct *prev_sched; -@@ -54,10 +36,20 @@ - struct arch_thread arch; - union { - #ifdef CONFIG_MODE_TT -- struct proc_tt_mode tt; -+ struct { -+ int extern_pid; -+ int tracing; -+ int switch_pipe[2]; -+ int singlestep_syscall; -+ int vm_seq; -+ } tt; - #endif - #ifdef CONFIG_MODE_SKAS -- struct proc_skas_mode skas; -+ struct { -+ void *switch_buf; -+ void *fork_buf; -+ int mm_count; -+ } skas; - #endif - } mode; - struct { -@@ -99,14 +91,19 @@ - } mm_segment_t; +- err = -ENOMEM; +- header = um_kmalloc(sizeof(*header)); +- if(header == NULL){ +- printk("Failed to allocate COW V2 header\n"); +- goto out; +- } +- header->magic = htonl(COW_MAGIC); +- header->version = htonl(COW_VERSION); +- +- err = -EINVAL; +- if(strlen(backing_file) > sizeof(header->backing_file) - 1){ +- printk("Backing file name \"%s\" is too long - names are " +- "limited to %d characters\n", backing_file, +- sizeof(header->backing_file) - 1); +- goto out_free; +- } +- +- if(absolutize(header->backing_file, sizeof(header->backing_file), +- backing_file)) +- goto out_free; +- +- err = stat64(header->backing_file, &buf); +- if(err < 0){ +- printk("Stat of backing file '%s' failed, errno = %d\n", +- header->backing_file, errno); +- err = -errno; +- goto out_free; +- } +- +- err = os_file_size(header->backing_file, size); +- if(err){ +- printk("Couldn't get size of backing file '%s', errno = %d\n", +- header->backing_file, -*size); +- goto out_free; +- } +- +- header->mtime = htonl(buf.st_mtime); +- header->size = htonll(*size); +- header->sectorsize = htonl(sectorsize); +- +- err = write(fd, header, sizeof(*header)); +- if(err != sizeof(*header)){ +- printk("Write of header to new COW file '%s' failed, " +- "errno = %d\n", cow_file, errno); +- goto out_free; +- } +- err = 0; +- out_free: +- kfree(header); +- out: +- return(err); +-} +- + int open_ubd_file(char *file, struct openflags *openflags, + char **backing_file_out, int *bitmap_offset_out, + unsigned long *bitmap_len_out, int *data_offset_out, +@@ -334,26 +108,36 @@ + { + time_t mtime; + __u64 size; ++ __u32 version, align; + char *backing_file; +- int fd, err, sectorsize, magic, same, mode = 0644; ++ int fd, err, sectorsize, same, mode = 0644; - extern struct task_struct *alloc_task_struct(void); --extern void free_task_struct(struct task_struct *task); +- if((fd = os_open_file(file, *openflags, mode)) < 0){ ++ fd = os_open_file(file, *openflags, mode); ++ if(fd < 0){ + if((fd == -ENOENT) && (create_cow_out != NULL)) + *create_cow_out = 1; + if(!openflags->w || + ((errno != EROFS) && (errno != EACCES))) return(-errno); + openflags->w = 0; +- if((fd = os_open_file(file, *openflags, mode)) < 0) ++ fd = os_open_file(file, *openflags, mode); ++ if(fd < 0) + return(fd); + } ++ ++ err = os_lock_file(fd, openflags->w); ++ if(err < 0){ ++ printk("Failed to lock '%s', err = %d\n", file, -err); ++ goto out_close; ++ } ++ + if(backing_file_out == NULL) return(fd); - extern void release_thread(struct task_struct *); - extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); - extern void dump_thread(struct pt_regs *regs, struct user *u); -+extern void prepare_to_copy(struct task_struct *tsk); +- err = read_cow_header(fd, &magic, &backing_file, &mtime, &size, +- §orsize, bitmap_offset_out); ++ err = read_cow_header(file_reader, &fd, &version, &backing_file, &mtime, ++ &size, §orsize, &align, bitmap_offset_out); + if(err && (*backing_file_out != NULL)){ + printk("Failed to read COW header from COW file \"%s\", " +- "errno = %d\n", file, err); +- goto error; ++ "errno = %d\n", file, -err); ++ goto out_close; + } + if(err) return(fd); - extern unsigned long thread_saved_pc(struct task_struct *t); +@@ -363,36 +147,33 @@ -+static inline void mm_copy_segments(struct mm_struct *from_mm, -+ struct mm_struct *new_mm) -+{ -+} -+ - #define init_stack (init_thread_union.stack) + if(!same && !backing_file_mismatch(*backing_file_out, size, mtime)){ + printk("Switching backing file to '%s'\n", *backing_file_out); +- err = write_cow_header(file, fd, *backing_file_out, +- sectorsize, &size); ++ err = write_cow_header(file, fd, *backing_file_out, ++ sectorsize, align, &size); + if(err){ +- printk("Switch failed, errno = %d\n", err); ++ printk("Switch failed, errno = %d\n", -err); + return(err); + } + } + else { + *backing_file_out = backing_file; + err = backing_file_mismatch(*backing_file_out, size, mtime); +- if(err) goto error; ++ if(err) goto out_close; + } - /* -diff -Naur a/include/asm-um/processor-i386.h b/include/asm-um/processor-i386.h ---- a/include/asm-um/processor-i386.h 2004-03-10 08:20:17.000000000 -0500 -+++ b/include/asm-um/processor-i386.h 2004-03-10 08:34:15.000000000 -0500 -@@ -6,8 +6,8 @@ - #ifndef __UM_PROCESSOR_I386_H - #define __UM_PROCESSOR_I386_H +- sizes(size, sectorsize, *bitmap_offset_out, bitmap_len_out, +- data_offset_out); ++ cow_sizes(version, size, sectorsize, align, *bitmap_offset_out, ++ bitmap_len_out, data_offset_out); --extern int cpu_has_xmm; --extern int cpu_has_cmov; -+extern int host_has_xmm; -+extern int host_has_cmov; + return(fd); +- error: +- close(fd); ++ out_close: ++ os_close_file(fd); + return(err); + } - struct arch_thread { - unsigned long debugregs[8]; -diff -Naur a/include/asm-um/sections.h b/include/asm-um/sections.h ---- a/include/asm-um/sections.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/asm-um/sections.h 2004-03-10 08:41:04.000000000 -0500 -@@ -0,0 +1,7 @@ -+#ifndef _UM_SECTIONS_H -+#define _UM_SECTIONS_H -+ -+/* nothing to see, move along */ -+#include -+ -+#endif -diff -Naur a/include/asm-um/smp.h b/include/asm-um/smp.h ---- a/include/asm-um/smp.h 2004-03-10 08:20:12.000000000 -0500 -+++ b/include/asm-um/smp.h 2004-03-10 08:33:38.000000000 -0500 -@@ -10,7 +10,7 @@ + int create_cow_file(char *cow_file, char *backing_file, struct openflags flags, +- int sectorsize, int *bitmap_offset_out, ++ int sectorsize, int alignment, int *bitmap_offset_out, + unsigned long *bitmap_len_out, int *data_offset_out) + { +- __u64 blocks; +- long zero; +- int err, fd, i; +- long long size; ++ int err, fd; - extern cpumask_t cpu_online_map; + flags.c = 1; + fd = open_ubd_file(cow_file, &flags, NULL, NULL, NULL, NULL, NULL); +@@ -403,57 +184,49 @@ + goto out; + } --#define smp_processor_id() (current->thread_info->cpu) -+#define smp_processor_id() (current_thread->cpu) - #define cpu_logical_map(n) (n) - #define cpu_number_map(n) (n) - #define PROC_CHANGE_PENALTY 15 /* Pick a number, any number */ -diff -Naur a/include/asm-um/smplock.h b/include/asm-um/smplock.h ---- a/include/asm-um/smplock.h 2004-03-10 08:20:26.000000000 -0500 -+++ b/include/asm-um/smplock.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,6 +0,0 @@ --#ifndef __UM_SMPLOCK_H --#define __UM_SMPLOCK_H -- --#include "asm/arch/smplock.h" +- err = write_cow_header(cow_file, fd, backing_file, sectorsize, &size); +- if(err) goto out_close; - --#endif -diff -Naur a/include/asm-um/spinlock.h b/include/asm-um/spinlock.h ---- a/include/asm-um/spinlock.h 2004-03-10 08:23:05.000000000 -0500 -+++ b/include/asm-um/spinlock.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,10 +0,0 @@ --#ifndef __UM_SPINLOCK_H --#define __UM_SPINLOCK_H +- blocks = (size + sectorsize - 1) / sectorsize; +- blocks = (blocks + sizeof(long) * 8 - 1) / (sizeof(long) * 8); +- zero = 0; +- for(i = 0; i < blocks; i++){ +- err = write(fd, &zero, sizeof(zero)); +- if(err != sizeof(zero)){ +- printk("Write of bitmap to new COW file '%s' failed, " +- "errno = %d\n", cow_file, errno); +- goto out_close; +- } +- } - --#include "linux/config.h" +- sizes(size, sectorsize, sizeof(struct cow_header_v2), +- bitmap_len_out, data_offset_out); +- *bitmap_offset_out = sizeof(struct cow_header_v2); - --#ifdef CONFIG_SMP --#include "asm/arch/spinlock.h" --#endif +- return(fd); - --#endif -diff -Naur a/include/asm-um/system-generic.h b/include/asm-um/system-generic.h ---- a/include/asm-um/system-generic.h 2004-03-10 08:23:25.000000000 -0500 -+++ b/include/asm-um/system-generic.h 2004-03-10 08:44:55.000000000 -0500 -@@ -23,8 +23,10 @@ - extern void block_signals(void); - extern void unblock_signals(void); +- out_close: +- close(fd); ++ err = init_cow_file(fd, cow_file, backing_file, sectorsize, alignment, ++ bitmap_offset_out, bitmap_len_out, ++ data_offset_out); ++ if(!err) ++ return(fd); ++ os_close_file(fd); + out: + return(err); + } --#define local_save_flags(flags) do { (flags) = get_signals(); } while(0) --#define local_irq_restore(flags) do { set_signals(flags); } while(0) -+#define local_save_flags(flags) do { typecheck(unsigned long, flags); \ -+ (flags) = get_signals(); } while(0) -+#define local_irq_restore(flags) do { typecheck(unsigned long, flags); \ -+ set_signals(flags); } while(0) ++/* XXX Just trivial wrappers around os_read_file and os_write_file */ + int read_ubd_fs(int fd, void *buffer, int len) + { +- int n; +- +- n = read(fd, buffer, len); +- if(n < 0) return(-errno); +- else return(n); ++ return(os_read_file(fd, buffer, len)); + } - #define local_irq_save(flags) do { local_save_flags(flags); \ - local_irq_disable(); } while(0) -@@ -39,4 +41,7 @@ - (flags == 0); \ - }) + int write_ubd_fs(int fd, char *buffer, int len) + { +- int n; +- +- n = write(fd, buffer, len); +- if(n < 0) return(-errno); +- else return(n); ++ return(os_write_file(fd, buffer, len)); + } -+extern void *_switch_to(void *prev, void *next, void *last); -+#define switch_to(prev, next, last) prev = _switch_to(prev, next, last) +-int ubd_is_dir(char *file) ++static int update_bitmap(struct io_thread_req *req) + { +- struct stat64 buf; ++ int n; + - #endif -diff -Naur a/include/asm-um/thread_info.h b/include/asm-um/thread_info.h ---- a/include/asm-um/thread_info.h 2004-03-10 08:20:55.000000000 -0500 -+++ b/include/asm-um/thread_info.h 2004-03-10 08:37:10.000000000 -0500 -@@ -9,6 +9,7 @@ - #ifndef __ASSEMBLY__ - - #include -+#include ++ if(req->cow_offset == -1) ++ return(0); ++ ++ n = os_seek_file(req->fds[1], req->cow_offset); ++ if(n < 0){ ++ printk("do_io - bitmap lseek failed : err = %d\n", -n); ++ return(1); ++ } ++ ++ n = os_write_file(req->fds[1], &req->bitmap_words, ++ sizeof(req->bitmap_words)); ++ if(n != sizeof(req->bitmap_words)){ ++ printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, ++ req->fds[1]); ++ return(1); ++ } - struct thread_info { - struct task_struct *task; /* main task structure */ -@@ -43,15 +44,18 @@ - static inline struct thread_info *current_thread_info(void) - { - struct thread_info *ti; -- __asm__("andl %%esp,%0; ":"=r" (ti) : "0" (~16383UL)); -+ unsigned long mask = PAGE_SIZE * -+ (1 << CONFIG_KERNEL_STACK_ORDER) - 1; -+ __asm__("andl %%esp,%0; ":"=r" (ti) : "0" (~mask)); - return ti; +- if(stat64(file, &buf) < 0) return(0); +- return(S_ISDIR(buf.st_mode)); ++ return(0); } - /* thread information allocation */ --#define THREAD_SIZE (4*PAGE_SIZE) --#define alloc_thread_info(tsk) ((struct thread_info *) \ -- __get_free_pages(GFP_KERNEL,2)) --#define free_thread_info(ti) free_pages((unsigned long) (ti), 2) -+#define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE) -+#define alloc_thread_info(tsk) \ -+ ((struct thread_info *) kmalloc(THREAD_SIZE, GFP_KERNEL)) -+#define free_thread_info(ti) kfree(ti) -+ - #define get_thread_info(ti) get_task_struct((ti)->task) - #define put_thread_info(ti) put_task_struct((ti)->task) + void do_io(struct io_thread_req *req) +@@ -461,8 +234,18 @@ + char *buf; + unsigned long len; + int n, nsectors, start, end, bit; ++ int err; + __u64 off; -@@ -65,11 +69,13 @@ - #define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling - * TIF_NEED_RESCHED - */ -+#define TIF_RESTART_BLOCK 4 ++ if(req->op == UBD_MMAP){ ++ /* Touch the page to force the host to do any necessary IO to ++ * get it into memory ++ */ ++ n = *((volatile int *) req->buffer); ++ req->error = update_bitmap(req); ++ return; ++ } ++ + nsectors = req->length / req->sectorsize; + start = 0; + do { +@@ -473,15 +256,14 @@ + &req->sector_mask) == bit)) + end++; - #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) - #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) - #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) - #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) -+#define _TIF_RESTART_BLOCK (1 << TIF_RESTART_BLOCK) +- if(end != nsectors) +- printk("end != nsectors\n"); + off = req->offset + req->offsets[bit] + + start * req->sectorsize; + len = (end - start) * req->sectorsize; + buf = &req->buffer[start * req->sectorsize]; - #endif +- if(os_seek_file(req->fds[bit], off) != 0){ +- printk("do_io - lseek failed : errno = %d\n", errno); ++ err = os_seek_file(req->fds[bit], off); ++ if(err < 0){ ++ printk("do_io - lseek failed : err = %d\n", -err); + req->error = 1; + return; + } +@@ -490,11 +272,10 @@ + do { + buf = &buf[n]; + len -= n; +- n = read(req->fds[bit], buf, len); ++ n = os_read_file(req->fds[bit], buf, len); + if (n < 0) { +- printk("do_io - read returned %d : " +- "errno = %d fd = %d\n", n, +- errno, req->fds[bit]); ++ printk("do_io - read failed, err = %d " ++ "fd = %d\n", -n, req->fds[bit]); + req->error = 1; + return; + } +@@ -502,11 +283,10 @@ + if (n < len) memset(&buf[n], 0, len - n); + } + else { +- n = write(req->fds[bit], buf, len); ++ n = os_write_file(req->fds[bit], buf, len); + if(n != len){ +- printk("do_io - write returned %d : " +- "errno = %d fd = %d\n", n, +- errno, req->fds[bit]); ++ printk("do_io - write failed err = %d " ++ "fd = %d\n", -n, req->fds[bit]); + req->error = 1; + return; + } +@@ -515,24 +295,7 @@ + start = end; + } while(start < nsectors); + +- if(req->cow_offset != -1){ +- if(os_seek_file(req->fds[1], req->cow_offset) != 0){ +- printk("do_io - bitmap lseek failed : errno = %d\n", +- errno); +- req->error = 1; +- return; +- } +- n = write(req->fds[1], &req->bitmap_words, +- sizeof(req->bitmap_words)); +- if(n != sizeof(req->bitmap_words)){ +- printk("do_io - bitmap update returned %d : " +- "errno = %d fd = %d\n", n, errno, req->fds[1]); +- req->error = 1; +- return; +- } +- } +- req->error = 0; +- return; ++ req->error = update_bitmap(req); + } -diff -Naur a/include/asm-um/timex.h b/include/asm-um/timex.h ---- a/include/asm-um/timex.h 2004-03-10 08:21:51.000000000 -0500 -+++ b/include/asm-um/timex.h 2004-03-10 08:40:50.000000000 -0500 -@@ -1,8 +1,6 @@ - #ifndef __UM_TIMEX_H - #define __UM_TIMEX_H + /* Changed in start_io_thread, which is serialized by being called only +@@ -550,19 +313,23 @@ --#include "linux/time.h" -- - typedef unsigned long cycles_t; + signal(SIGWINCH, SIG_IGN); + while(1){ +- n = read(kernel_fd, &req, sizeof(req)); +- if(n < 0) printk("io_thread - read returned %d, errno = %d\n", +- n, errno); +- else if(n < sizeof(req)){ +- printk("io_thread - short read : length = %d\n", n); ++ n = os_read_file(kernel_fd, &req, sizeof(req)); ++ if(n != sizeof(req)){ ++ if(n < 0) ++ printk("io_thread - read failed, fd = %d, " ++ "err = %d\n", kernel_fd, -n); ++ else { ++ printk("io_thread - short read, fd = %d, " ++ "length = %d\n", kernel_fd, n); ++ } + continue; + } + io_count++; + do_io(&req); +- n = write(kernel_fd, &req, sizeof(req)); ++ n = os_write_file(kernel_fd, &req, sizeof(req)); + if(n != sizeof(req)) +- printk("io_thread - write failed, errno = %d\n", +- errno); ++ printk("io_thread - write failed, fd = %d, err = %d\n", ++ kernel_fd, -n); + } + } - #define cacheflush_time (0) -diff -Naur a/include/asm-um/uaccess.h b/include/asm-um/uaccess.h ---- a/include/asm-um/uaccess.h 2004-03-10 08:22:00.000000000 -0500 -+++ b/include/asm-um/uaccess.h 2004-03-10 08:41:14.000000000 -0500 -@@ -6,6 +6,8 @@ - #ifndef __UM_UACCESS_H - #define __UM_UACCESS_H +@@ -571,10 +338,11 @@ + int pid, fds[2], err; -+#include "linux/sched.h" + err = os_pipe(fds, 1, 1); +- if(err){ +- printk("start_io_thread - os_pipe failed, errno = %d\n", -err); +- return(-1); ++ if(err < 0){ ++ printk("start_io_thread - os_pipe failed, err = %d\n", -err); ++ goto out; + } + - #define VERIFY_READ 0 - #define VERIFY_WRITE 1 + kernel_fd = fds[0]; + *fd_out = fds[1]; -diff -Naur a/include/asm-um/unistd.h b/include/asm-um/unistd.h ---- a/include/asm-um/unistd.h 2004-03-10 08:22:38.000000000 -0500 -+++ b/include/asm-um/unistd.h 2004-03-10 08:42:45.000000000 -0500 -@@ -23,7 +23,10 @@ - set_fs(KERNEL_DS); \ - ret = sys(args); \ - set_fs(fs); \ -- return ret; -+ if (ret >= 0) \ -+ return ret; \ -+ errno = -(long)ret; \ -+ return -1; +@@ -582,32 +350,19 @@ + NULL); + if(pid < 0){ + printk("start_io_thread - clone failed : errno = %d\n", errno); +- return(-errno); ++ goto out_close; + } +- return(pid); +-} +- +-#ifdef notdef +-int start_io_thread(unsigned long sp, int *fd_out) +-{ +- int pid; - static inline long open(const char *pathname, int flags, int mode) - { -diff -Naur a/include/linux/gfp.h b/include/linux/gfp.h ---- a/include/linux/gfp.h 2004-03-10 08:20:49.000000000 -0500 -+++ b/include/linux/gfp.h 2004-03-10 08:36:19.000000000 -0500 -@@ -69,6 +69,11 @@ - * For the normal case of non-DISCONTIGMEM systems the NODE_DATA() gets - * optimized to &contig_page_data at compile-time. - */ -+ -+#ifndef HAVE_ARCH_FREE_PAGE -+static inline void arch_free_page(struct page *page, int order) { } -+#endif -+ - extern struct page * FASTCALL(__alloc_pages(unsigned int, unsigned int, struct zonelist *)); - static inline struct page * alloc_pages_node(int nid, unsigned int gfp_mask, unsigned int order) - { -diff -Naur a/include/linux/ghash.h b/include/linux/ghash.h ---- a/include/linux/ghash.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/linux/ghash.h 2004-03-10 08:36:10.000000000 -0500 -@@ -0,0 +1,236 @@ -+/* -+ * include/linux/ghash.h -- generic hashing with fuzzy retrieval -+ * -+ * (C) 1997 Thomas Schoebel-Theuer -+ * -+ * The algorithms implemented here seem to be a completely new invention, -+ * and I'll publish the fundamentals in a paper. -+ */ -+ -+#ifndef _GHASH_H -+#define _GHASH_H -+/* HASHSIZE _must_ be a power of two!!! */ -+ -+ -+#define DEF_HASH_FUZZY_STRUCTS(NAME,HASHSIZE,TYPE) \ -+\ -+struct NAME##_table {\ -+ TYPE * hashtable[HASHSIZE];\ -+ TYPE * sorted_list;\ -+ int nr_entries;\ -+};\ -+\ -+struct NAME##_ptrs {\ -+ TYPE * next_hash;\ -+ TYPE * prev_hash;\ -+ TYPE * next_sorted;\ -+ TYPE * prev_sorted;\ -+}; -+ -+#define DEF_HASH_FUZZY(LINKAGE,NAME,HASHSIZE,TYPE,PTRS,KEYTYPE,KEY,KEYCMP,KEYEQ,HASHFN)\ -+\ -+LINKAGE void insert_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ -+{\ -+ int ix = HASHFN(elem->KEY);\ -+ TYPE ** base = &tbl->hashtable[ix];\ -+ TYPE * ptr = *base;\ -+ TYPE * prev = NULL;\ -+\ -+ tbl->nr_entries++;\ -+ while(ptr && KEYCMP(ptr->KEY, elem->KEY)) {\ -+ base = &ptr->PTRS.next_hash;\ -+ prev = ptr;\ -+ ptr = *base;\ -+ }\ -+ elem->PTRS.next_hash = ptr;\ -+ elem->PTRS.prev_hash = prev;\ -+ if(ptr) {\ -+ ptr->PTRS.prev_hash = elem;\ -+ }\ -+ *base = elem;\ -+\ -+ ptr = prev;\ -+ if(!ptr) {\ -+ ptr = tbl->sorted_list;\ -+ prev = NULL;\ -+ } else {\ -+ prev = ptr->PTRS.prev_sorted;\ -+ }\ -+ while(ptr) {\ -+ TYPE * next = ptr->PTRS.next_hash;\ -+ if(next && KEYCMP(next->KEY, elem->KEY)) {\ -+ prev = ptr;\ -+ ptr = next;\ -+ } else if(KEYCMP(ptr->KEY, elem->KEY)) {\ -+ prev = ptr;\ -+ ptr = ptr->PTRS.next_sorted;\ -+ } else\ -+ break;\ -+ }\ -+ elem->PTRS.next_sorted = ptr;\ -+ elem->PTRS.prev_sorted = prev;\ -+ if(ptr) {\ -+ ptr->PTRS.prev_sorted = elem;\ -+ }\ -+ if(prev) {\ -+ prev->PTRS.next_sorted = elem;\ -+ } else {\ -+ tbl->sorted_list = elem;\ -+ }\ -+}\ -+\ -+LINKAGE void remove_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ -+{\ -+ TYPE * next = elem->PTRS.next_hash;\ -+ TYPE * prev = elem->PTRS.prev_hash;\ -+\ -+ tbl->nr_entries--;\ -+ if(next)\ -+ next->PTRS.prev_hash = prev;\ -+ if(prev)\ -+ prev->PTRS.next_hash = next;\ -+ else {\ -+ int ix = HASHFN(elem->KEY);\ -+ tbl->hashtable[ix] = next;\ -+ }\ -+\ -+ next = elem->PTRS.next_sorted;\ -+ prev = elem->PTRS.prev_sorted;\ -+ if(next)\ -+ next->PTRS.prev_sorted = prev;\ -+ if(prev)\ -+ prev->PTRS.next_sorted = next;\ -+ else\ -+ tbl->sorted_list = next;\ -+}\ -+\ -+LINKAGE TYPE * find_##NAME##_hash(struct NAME##_table * tbl, KEYTYPE pos)\ -+{\ -+ int ix = hashfn(pos);\ -+ TYPE * ptr = tbl->hashtable[ix];\ -+ while(ptr && KEYCMP(ptr->KEY, pos))\ -+ ptr = ptr->PTRS.next_hash;\ -+ if(ptr && !KEYEQ(ptr->KEY, pos))\ -+ ptr = NULL;\ -+ return ptr;\ -+}\ -+\ -+LINKAGE TYPE * find_##NAME##_hash_fuzzy(struct NAME##_table * tbl, KEYTYPE pos)\ -+{\ -+ int ix;\ -+ int offset;\ -+ TYPE * ptr;\ -+ TYPE * next;\ -+\ -+ ptr = tbl->sorted_list;\ -+ if(!ptr || KEYCMP(pos, ptr->KEY))\ -+ return NULL;\ -+ ix = HASHFN(pos);\ -+ offset = HASHSIZE;\ -+ do {\ -+ offset >>= 1;\ -+ next = tbl->hashtable[(ix+offset) & ((HASHSIZE)-1)];\ -+ if(next && (KEYCMP(next->KEY, pos) || KEYEQ(next->KEY, pos))\ -+ && KEYCMP(ptr->KEY, next->KEY))\ -+ ptr = next;\ -+ } while(offset);\ -+\ -+ for(;;) {\ -+ next = ptr->PTRS.next_hash;\ -+ if(next) {\ -+ if(KEYCMP(next->KEY, pos)) {\ -+ ptr = next;\ -+ continue;\ -+ }\ -+ }\ -+ next = ptr->PTRS.next_sorted;\ -+ if(next && KEYCMP(next->KEY, pos)) {\ -+ ptr = next;\ -+ continue;\ -+ }\ -+ return ptr;\ -+ }\ -+ return NULL;\ -+} +- if((kernel_fd = get_pty()) < 0) return(-1); +- raw(kernel_fd, 0); +- if((*fd_out = open(ptsname(kernel_fd), O_RDWR)) < 0){ +- printk("Couldn't open tty for IO\n"); +- return(-1); +- } +- +- pid = clone(io_thread, (void *) sp, CLONE_FILES | CLONE_VM | SIGCHLD, +- NULL); +- if(pid < 0){ +- printk("start_io_thread - clone failed : errno = %d\n", errno); +- return(-errno); +- } + return(pid); + -+/* LINKAGE - empty or "static", depending on whether you want the definitions to -+ * be public or not -+ * NAME - a string to stick in names to make this hash table type distinct from -+ * any others -+ * HASHSIZE - number of buckets -+ * TYPE - type of data contained in the buckets - must be a structure, one -+ * field is of type NAME_ptrs, another is the hash key -+ * PTRS - TYPE must contain a field of type NAME_ptrs, PTRS is the name of that -+ * field -+ * KEYTYPE - type of the key field within TYPE -+ * KEY - name of the key field within TYPE -+ * KEYCMP - pointer to function that compares KEYTYPEs to each other - the -+ * prototype is int KEYCMP(KEYTYPE, KEYTYPE), it returns zero for equal, -+ * non-zero for not equal -+ * HASHFN - the hash function - the prototype is int HASHFN(KEYTYPE), -+ * it returns a number in the range 0 ... HASHSIZE - 1 -+ * Call DEF_HASH_STRUCTS, define your hash table as a NAME_table, then call -+ * DEF_HASH. ++ out_close: ++ os_close_file(fds[0]); ++ os_close_file(fds[1]); ++ kernel_fd = -1; ++ *fd_out = -1; ++ out: ++ return(err); + } +-#endif + + /* + * Overrides for Emacs so that we follow Linus's tabbing style. +Index: uml-2.6.7/scripts/basic/fixdep.c +=================================================================== +--- uml-2.6.7.orig/scripts/basic/fixdep.c 2004-07-16 19:36:40.092051544 +0300 ++++ uml-2.6.7/scripts/basic/fixdep.c 2004-07-16 19:47:24.197132688 +0300 +@@ -93,6 +93,14 @@ + * (Note: it'd be easy to port over the complete mkdep state machine, + * but I don't think the added complexity is worth it) + */ ++/* ++ * Note 2: if somebody writes HELLO_CONFIG_BOOM in a file, it will depend onto ++ * CONFIG_BOOM. This could seem a bug (not too hard to fix), but please do not ++ * fix it! Some UserModeLinux files (look at arch/um/) call CONFIG_BOOM as ++ * UML_CONFIG_BOOM, to avoid conflicts with /usr/include/linux/autoconf.h, ++ * through arch/um/include/uml-config.h; this fixdep "bug" makes sure that ++ * those files will have correct dependencies. + */ + + #include + #include +@@ -310,6 +318,7 @@ + } + memcpy(s, m, p-m); s[p-m] = 0; + if (strrcmp(s, "include/linux/autoconf.h") && ++ strrcmp(s, "arch/um/include/uml-config.h") && + strrcmp(s, ".ver")) { + printf(" %s \\\n", s); + do_config_file(s); +Index: uml-2.6.7/include/asm-um/processor-i386.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/processor-i386.h 2004-07-16 19:35:55.931764928 +0300 ++++ uml-2.6.7/include/asm-um/processor-i386.h 2004-07-16 19:47:23.794193944 +0300 +@@ -6,8 +6,8 @@ + #ifndef __UM_PROCESSOR_I386_H + #define __UM_PROCESSOR_I386_H + +-extern int cpu_has_xmm; +-extern int cpu_has_cmov; ++extern int host_has_xmm; ++extern int host_has_cmov; + + struct arch_thread { + unsigned long debugregs[8]; +Index: uml-2.6.7/arch/um/kernel/time.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/time.c 2004-07-16 19:36:10.588536760 +0300 ++++ uml-2.6.7/arch/um/kernel/time.c 2004-07-16 19:47:24.262122808 +0300 +@@ -4,24 +4,34 @@ + */ + + #include ++#include + #include + #include + #include + #include + #include +-#include "linux/module.h" ++#include + #include "user_util.h" + #include "kern_util.h" + #include "user.h" + #include "process.h" + #include "signal_user.h" + #include "time_user.h" ++#include "kern_constants.h" + -+#define DEF_HASH_STRUCTS(NAME,HASHSIZE,TYPE) \ -+\ -+struct NAME##_table {\ -+ TYPE * hashtable[HASHSIZE];\ -+ int nr_entries;\ -+};\ -+\ -+struct NAME##_ptrs {\ -+ TYPE * next_hash;\ -+ TYPE * prev_hash;\ -+}; ++/* XXX This really needs to be declared and initialized in a kernel file since ++ * it's in ++ */ ++extern struct timespec wall_to_monotonic; + + extern struct timeval xtime; + ++struct timeval local_offset = { 0, 0 }; + -+#define DEF_HASH(LINKAGE,NAME,TYPE,PTRS,KEYTYPE,KEY,KEYCMP,HASHFN)\ -+\ -+LINKAGE void insert_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ -+{\ -+ int ix = HASHFN(elem->KEY);\ -+ TYPE ** base = &tbl->hashtable[ix];\ -+ TYPE * ptr = *base;\ -+ TYPE * prev = NULL;\ -+\ -+ tbl->nr_entries++;\ -+ while(ptr && KEYCMP(ptr->KEY, elem->KEY)) {\ -+ base = &ptr->PTRS.next_hash;\ -+ prev = ptr;\ -+ ptr = *base;\ -+ }\ -+ elem->PTRS.next_hash = ptr;\ -+ elem->PTRS.prev_hash = prev;\ -+ if(ptr) {\ -+ ptr->PTRS.prev_hash = elem;\ -+ }\ -+ *base = elem;\ -+}\ -+\ -+LINKAGE void remove_##NAME##_hash(struct NAME##_table * tbl, TYPE * elem)\ -+{\ -+ TYPE * next = elem->PTRS.next_hash;\ -+ TYPE * prev = elem->PTRS.prev_hash;\ -+\ -+ tbl->nr_entries--;\ -+ if(next)\ -+ next->PTRS.prev_hash = prev;\ -+ if(prev)\ -+ prev->PTRS.next_hash = next;\ -+ else {\ -+ int ix = HASHFN(elem->KEY);\ -+ tbl->hashtable[ix] = next;\ -+ }\ -+}\ -+\ -+LINKAGE TYPE * find_##NAME##_hash(struct NAME##_table * tbl, KEYTYPE pos)\ -+{\ -+ int ix = HASHFN(pos);\ -+ TYPE * ptr = tbl->hashtable[ix];\ -+ while(ptr && KEYCMP(ptr->KEY, pos))\ -+ ptr = ptr->PTRS.next_hash;\ -+ return ptr;\ + void timer(void) + { + gettimeofday(&xtime, NULL); ++ timeradd(&xtime, &local_offset, &xtime); + } + + void set_interval(int timer_type) +@@ -66,7 +76,7 @@ + errno); + } + +-void idle_timer(void) ++void uml_idle_timer(void) + { + if(signal(SIGVTALRM, SIG_IGN) == SIG_ERR) + panic("Couldn't unset SIGVTALRM handler"); +@@ -76,14 +86,60 @@ + set_interval(ITIMER_REAL); + } + ++static unsigned long long get_host_hz(void) ++{ ++ char mhzline[16], *end; ++ unsigned long long mhz; ++ int ret, mult, rest, len; ++ ++ ret = cpu_feature("cpu MHz", mhzline, ++ sizeof(mhzline) / sizeof(mhzline[0])); ++ if(!ret) ++ panic ("Could not get host MHZ"); ++ ++ mhz = strtoul(mhzline, &end, 10); ++ ++ /* This business is to parse a floating point number without using ++ * floating types. ++ */ ++ ++ rest = 0; ++ mult = 0; ++ if(*end == '.'){ ++ end++; ++ len = strlen(end); ++ if(len < 6) ++ mult = 6 - len; ++ else if(len > 6) ++ end[6] = '\0'; ++ rest = strtoul(end, NULL, 10); ++ while(mult-- > 0) ++ rest *= 10; ++ } ++ ++ return(1000000 * mhz + rest); +} + ++unsigned long long host_hz = 0; ++ ++extern int do_posix_clock_monotonic_gettime(struct timespec *tp); ++ + void time_init(void) + { ++ struct timespec now; ++ ++ host_hz = get_host_hz(); + if(signal(SIGVTALRM, boot_timer_handler) == SIG_ERR) + panic("Couldn't set SIGVTALRM handler"); + set_interval(ITIMER_VIRTUAL); ++ ++ do_posix_clock_monotonic_gettime(&now); ++ wall_to_monotonic.tv_sec = -now.tv_sec; ++ wall_to_monotonic.tv_nsec = -now.tv_nsec; + } + +-struct timeval local_offset = { 0, 0 }; ++/* Declared in linux/time.h, which can't be included here */ ++extern void clock_was_set(void); + + void do_gettimeofday(struct timeval *tv) + { +@@ -96,15 +152,13 @@ + clock_was_set(); + } + +-EXPORT_SYMBOL(do_gettimeofday); +- + int do_settimeofday(struct timespec *tv) + { + struct timeval now; + unsigned long flags; + struct timeval tv_in; + +- if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) ++ if ((unsigned long) tv->tv_nsec >= UM_NSEC_PER_SEC) + return -EINVAL; + + tv_in.tv_sec = tv->tv_sec; +@@ -114,9 +168,9 @@ + gettimeofday(&now, NULL); + timersub(&tv_in, &now, &local_offset); + time_unlock(flags); +-} + +-EXPORT_SYMBOL(do_settimeofday); ++ return(0); ++} + + void idle_sleep(int secs) + { +Index: uml-2.6.7/arch/um/drivers/mconsole_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/mconsole_user.c 2004-07-16 19:36:07.180054928 +0300 ++++ uml-2.6.7/arch/um/drivers/mconsole_user.c 2004-07-16 19:47:23.687210208 +0300 +@@ -1,6 +1,6 @@ + /* + * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) +- * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) ++ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com) + * Licensed under the GPL + */ + +@@ -18,16 +18,18 @@ + #include "umid.h" + + static struct mconsole_command commands[] = { +- { "version", mconsole_version, 1 }, +- { "halt", mconsole_halt, 0 }, +- { "reboot", mconsole_reboot, 0 }, +- { "config", mconsole_config, 0 }, +- { "remove", mconsole_remove, 0 }, +- { "sysrq", mconsole_sysrq, 1 }, +- { "help", mconsole_help, 1 }, +- { "cad", mconsole_cad, 1 }, +- { "stop", mconsole_stop, 0 }, +- { "go", mconsole_go, 1 }, ++ { "version", mconsole_version, MCONSOLE_INTR }, ++ { "halt", mconsole_halt, MCONSOLE_PROC }, ++ { "reboot", mconsole_reboot, MCONSOLE_PROC }, ++ { "config", mconsole_config, MCONSOLE_PROC }, ++ { "remove", mconsole_remove, MCONSOLE_PROC }, ++ { "sysrq", mconsole_sysrq, MCONSOLE_INTR }, ++ { "help", mconsole_help, MCONSOLE_INTR }, ++ { "cad", mconsole_cad, MCONSOLE_INTR }, ++ { "stop", mconsole_stop, MCONSOLE_PROC }, ++ { "go", mconsole_go, MCONSOLE_INTR }, ++ { "log", mconsole_log, MCONSOLE_INTR }, ++ { "proc", mconsole_proc, MCONSOLE_PROC }, + }; + + /* Initialized in mconsole_init, which is an initcall */ +@@ -139,6 +141,7 @@ + memcpy(reply.data, str, len); + reply.data[len] = '\0'; + total -= len; ++ str += len; + reply.len = len + 1; + + len = sizeof(reply) + reply.len - sizeof(reply.data); +Index: uml-2.6.7/include/asm-um/module-i386.h +=================================================================== +--- uml-2.6.7.orig/include/asm-um/module-i386.h 2004-07-16 19:47:23.634218264 +0300 ++++ uml-2.6.7/include/asm-um/module-i386.h 2004-07-16 19:47:23.792194248 +0300 +@@ -0,0 +1,13 @@ ++#ifndef __UM_MODULE_I386_H ++#define __UM_MODULE_I386_H ++ ++/* UML is simple */ ++struct mod_arch_specific ++{ ++}; ++ ++#define Elf_Shdr Elf32_Shdr ++#define Elf_Sym Elf32_Sym ++#define Elf_Ehdr Elf32_Ehdr ++ +#endif -diff -Naur a/include/linux/mm.h b/include/linux/mm.h ---- a/include/linux/mm.h 2004-03-10 08:20:15.000000000 -0500 -+++ b/include/linux/mm.h 2004-03-10 08:34:08.000000000 -0500 -@@ -505,6 +505,9 @@ - */ - typedef int (*shrinker_t)(int nr_to_scan, unsigned int gfp_mask); +Index: uml-2.6.7/arch/um/kernel/tt/ptproxy/wait.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/tt/ptproxy/wait.c 2004-07-16 19:37:26.029068056 +0300 ++++ uml-2.6.7/arch/um/kernel/tt/ptproxy/wait.c 2004-07-16 19:47:23.748200936 +0300 +@@ -56,21 +56,23 @@ + int real_wait_return(struct debugger *debugger) + { + unsigned long ip; +- int err, pid; ++ int pid; -+extern long do_mprotect(struct mm_struct *mm, unsigned long start, -+ size_t len, unsigned long prot); + pid = debugger->pid; + - /* - * Add an aging callback. The int is the number of 'seeks' it takes - * to recreate one of the objects that these functions age. -@@ -548,9 +551,10 @@ - - extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); - --extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, -- unsigned long len, unsigned long prot, -- unsigned long flag, unsigned long pgoff); -+extern unsigned long do_mmap_pgoff(struct mm_struct *mm, struct file *file, -+ unsigned long addr, unsigned long len, -+ unsigned long prot, unsigned long flag, -+ unsigned long pgoff); - - static inline unsigned long do_mmap(struct file *file, unsigned long addr, - unsigned long len, unsigned long prot, -@@ -560,7 +564,8 @@ - if ((offset + PAGE_ALIGN(len)) < offset) - goto out; - if (!(offset & ~PAGE_MASK)) -- ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT); -+ ret = do_mmap_pgoff(current->mm, file, addr, len, prot, flag, -+ offset >> PAGE_SHIFT); - out: - return ret; + ip = ptrace(PTRACE_PEEKUSER, pid, PT_IP_OFFSET, 0); +- ip = IP_RESTART_SYSCALL(ip); +- err = ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip); ++ IP_RESTART_SYSCALL(ip); ++ + if(ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip) < 0) + tracer_panic("real_wait_return : Failed to restart system " +- "call, errno = %d\n"); ++ "call, errno = %d\n", errno); ++ + if((ptrace(PTRACE_SYSCALL, debugger->pid, 0, SIGCHLD) < 0) || + (ptrace(PTRACE_SYSCALL, debugger->pid, 0, 0) < 0) || + (ptrace(PTRACE_SYSCALL, debugger->pid, 0, 0) < 0) || + debugger_normal_return(debugger, -1)) + tracer_panic("real_wait_return : gdb failed to wait, " +- "errno = %d\n"); ++ "errno = %d\n", errno); + return(0); } -diff -Naur a/include/linux/proc_mm.h b/include/linux/proc_mm.h ---- a/include/linux/proc_mm.h 1969-12-31 19:00:00.000000000 -0500 -+++ b/include/linux/proc_mm.h 2004-03-10 08:33:32.000000000 -0500 -@@ -0,0 +1,48 @@ -+/* -+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Licensed under the GPL + +Index: uml-2.6.7/include/asm-um/common.lds.S +=================================================================== +--- uml-2.6.7.orig/include/asm-um/common.lds.S 2004-07-16 19:36:10.607533872 +0300 ++++ uml-2.6.7/include/asm-um/common.lds.S 2004-07-16 19:47:23.787195008 +0300 +@@ -1,3 +1,5 @@ ++#include ++ + .fini : { *(.fini) } =0x9090 + _etext = .; + PROVIDE (etext = .); +@@ -13,18 +15,6 @@ + + RODATA + +- __start___ksymtab = .; /* Kernel symbol table */ +- __ksymtab : { *(__ksymtab) } +- __stop___ksymtab = .; +- +- __start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only symbols */ +- __gpl_ksymtab : { *(__gpl_ksymtab) } +- __stop___gpl_ksymtab = .; +- +- __start___kallsyms = .; /* All kernel symbols */ +- __kallsyms : { *(__kallsyms) } +- __stop___kallsyms = .; +- + .unprotected : { *(.unprotected) } + . = ALIGN(4096); + PROVIDE (_unprotected_end = .); +@@ -67,11 +57,17 @@ + } + __initcall_end = .; + ++ __con_initcall_start = .; ++ .con_initcall.init : { *(.con_initcall.init) } ++ __con_initcall_end = .; ++ + __uml_initcall_start = .; + .uml.initcall.init : { *(.uml.initcall.init) } + __uml_initcall_end = .; + __init_end = .; + ++ SECURITY_INIT ++ + __exitcall_begin = .; + .exitcall : { *(.exitcall.exit) } + __exitcall_end = .; +@@ -80,7 +76,33 @@ + .uml.exitcall : { *(.uml.exitcall.exit) } + __uml_exitcall_end = .; + +- . = ALIGN(4096); ++ . = ALIGN(4); ++ __alt_instructions = .; ++ .altinstructions : { *(.altinstructions) } ++ __alt_instructions_end = .; ++ .altinstr_replacement : { *(.altinstr_replacement) } ++ /* .exit.text is discard at runtime, not link time, to deal with references ++ from .altinstructions and .eh_frame */ ++ .exit.text : { *(.exit.text) } ++ .exit.data : { *(.exit.data) } ++ ++ __preinit_array_start = .; ++ .preinit_array : { *(.preinit_array) } ++ __preinit_array_end = .; ++ __init_array_start = .; ++ .init_array : { *(.init_array) } ++ __init_array_end = .; ++ __fini_array_start = .; ++ .fini_array : { *(.fini_array) } ++ __fini_array_end = .; ++ ++ . = ALIGN(4096); + __initramfs_start = .; + .init.ramfs : { *(.init.ramfs) } + __initramfs_end = .; ++ ++ /* Sections to be discarded */ ++ /DISCARD/ : { ++ *(.exitcall.exit) ++ } ++ +Index: uml-2.6.7/arch/um/drivers/hostaudio_user.c +=================================================================== +--- uml-2.6.7.orig/arch/um/drivers/hostaudio_user.c 2004-07-16 19:37:08.767692184 +0300 ++++ uml-2.6.7/arch/um/drivers/hostaudio_user.c 1970-01-01 03:00:00.000000000 +0300 +@@ -1,149 +0,0 @@ +-/* +- * Copyright (C) 2002 Steve Schmidtke +- * Licensed under the GPL +- */ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include "hostaudio.h" +-#include "user_util.h" +-#include "kern_util.h" +-#include "user.h" +-#include "os.h" +- +-/* /dev/dsp file operations */ +- +-ssize_t hostaudio_read_user(struct hostaudio_state *state, char *buffer, +- size_t count, loff_t *ppos) +-{ +- ssize_t ret; +- +-#ifdef DEBUG +- printk("hostaudio: read_user called, count = %d\n", count); +-#endif +- +- ret = read(state->fd, buffer, count); +- +- if(ret < 0) return(-errno); +- return(ret); +-} +- +-ssize_t hostaudio_write_user(struct hostaudio_state *state, const char *buffer, +- size_t count, loff_t *ppos) +-{ +- ssize_t ret; +- +-#ifdef DEBUG +- printk("hostaudio: write_user called, count = %d\n", count); +-#endif +- +- ret = write(state->fd, buffer, count); +- +- if(ret < 0) return(-errno); +- return(ret); +-} +- +-int hostaudio_ioctl_user(struct hostaudio_state *state, unsigned int cmd, +- unsigned long arg) +-{ +- int ret; +-#ifdef DEBUG +- printk("hostaudio: ioctl_user called, cmd = %u\n", cmd); +-#endif +- +- ret = ioctl(state->fd, cmd, arg); +- +- if(ret < 0) return(-errno); +- return(ret); +-} +- +-int hostaudio_open_user(struct hostaudio_state *state, int r, int w, char *dsp) +-{ +-#ifdef DEBUG +- printk("hostaudio: open_user called\n"); +-#endif +- +- state->fd = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); +- +- if(state->fd >= 0) return(0); +- +- printk("hostaudio_open_user failed to open '%s', errno = %d\n", +- dsp, errno); +- +- return(-errno); +-} +- +-int hostaudio_release_user(struct hostaudio_state *state) +-{ +-#ifdef DEBUG +- printk("hostaudio: release called\n"); +-#endif +- if(state->fd >= 0){ +- close(state->fd); +- state->fd=-1; +- } +- +- return(0); +-} +- +-/* /dev/mixer file operations */ +- +-int hostmixer_ioctl_mixdev_user(struct hostmixer_state *state, +- unsigned int cmd, unsigned long arg) +-{ +- int ret; +-#ifdef DEBUG +- printk("hostmixer: ioctl_user called cmd = %u\n",cmd); +-#endif +- +- ret = ioctl(state->fd, cmd, arg); +- if(ret < 0) +- return(-errno); +- return(ret); +-} +- +-int hostmixer_open_mixdev_user(struct hostmixer_state *state, int r, int w, +- char *mixer) +-{ +-#ifdef DEBUG +- printk("hostmixer: open_user called\n"); +-#endif +- +- state->fd = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); +- +- if(state->fd >= 0) return(0); +- +- printk("hostaudio_open_mixdev_user failed to open '%s', errno = %d\n", +- mixer, errno); +- +- return(-errno); +-} +- +-int hostmixer_release_mixdev_user(struct hostmixer_state *state) +-{ +-#ifdef DEBUG +- printk("hostmixer: release_user called\n"); +-#endif +- +- if(state->fd >= 0){ +- close(state->fd); +- state->fd = -1; +- } +- +- return 0; +-} +- +-/* +- * 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-file-style: "linux" +- * End: +- */ +Index: uml-2.6.7/arch/um/kernel/time_kern.c +=================================================================== +--- uml-2.6.7.orig/arch/um/kernel/time_kern.c 2004-07-16 19:36:57.116463440 +0300 ++++ uml-2.6.7/arch/um/kernel/time_kern.c 2004-07-16 19:47:24.262122808 +0300 +@@ -30,22 +30,60 @@ + return(HZ); + } + ++/* ++ * Scheduler clock - returns current time in nanosec units. + */ ++unsigned long long sched_clock(void) ++{ ++ return (unsigned long long)jiffies_64 * (1000000000 / HZ); ++} + -+#ifndef __PROC_MM_H -+#define __PROC_MM_H -+ -+#include "linux/sched.h" -+ -+#define MM_MMAP 54 -+#define MM_MUNMAP 55 -+#define MM_MPROTECT 56 -+#define MM_COPY_SEGMENTS 57 -+ -+struct mm_mmap { -+ unsigned long addr; -+ unsigned long len; -+ unsigned long prot; -+ unsigned long flags; -+ unsigned long fd; -+ unsigned long offset; -+}; -+ -+struct mm_munmap { -+ unsigned long addr; -+ unsigned long len; -+}; + /* Changed at early boot */ + int timer_irq_inited = 0; + +-/* missed_ticks will be modified after kernel memory has been +- * write-protected, so this puts it in a section which will be left +- * write-enabled. +- */ +-int __attribute__ ((__section__ (".unprotected"))) missed_ticks[NR_CPUS]; ++static int first_tick; ++static unsigned long long prev_tsc; ++#ifdef CONFIG_UML_REAL_TIME_CLOCK ++static long long delta; /* Deviation per interval */ ++#endif + -+struct mm_mprotect { -+ unsigned long addr; -+ unsigned long len; -+ unsigned int prot; -+}; ++extern unsigned long long host_hz; + + void timer_irq(union uml_pt_regs *regs) + { +- int cpu = current->thread_info->cpu, ticks = missed_ticks[cpu]; ++ unsigned long long ticks = 0; + -+struct proc_mm_op { -+ int op; -+ union { -+ struct mm_mmap mmap; -+ struct mm_munmap munmap; -+ struct mm_mprotect mprotect; -+ int copy_segments; -+ } u; -+}; ++ if(!timer_irq_inited){ ++ /* This is to ensure that ticks don't pile up when ++ * the timer handler is suspended */ ++ first_tick = 0; ++ return; ++ } + +- if(!timer_irq_inited) return; +- missed_ticks[cpu] = 0; +- while(ticks--) do_IRQ(TIMER_IRQ, regs); ++ if(first_tick){ ++#ifdef CONFIG_UML_REAL_TIME_CLOCK ++ unsigned long long tsc; ++ /* We've had 1 tick */ ++ tsc = time_stamp(); + -+extern struct mm_struct *proc_mm_get_mm(int fd); ++ delta += tsc - prev_tsc; ++ prev_tsc = tsc; + ++ ticks += (delta * HZ) / host_hz; ++ delta -= (ticks * host_hz) / HZ; ++#else ++ ticks = 1; +#endif -diff -Naur a/include/linux/time.h b/include/linux/time.h ---- a/include/linux/time.h 2004-03-10 08:21:51.000000000 -0500 -+++ b/include/linux/time.h 2004-03-10 08:40:50.000000000 -0500 -@@ -41,7 +41,7 @@ - * Have the 32 bit jiffies value wrap 5 minutes after boot - * so jiffies wrap bugs show up earlier. - */ --#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ)) -+#define INITIAL_JIFFIES ((unsigned long)(0)) ++ } ++ else { ++ prev_tsc = time_stamp(); ++ first_tick = 1; ++ } ++ ++ while(ticks > 0){ ++ do_IRQ(TIMER_IRQ, regs); ++ ticks--; ++ } + } - /* - * Change timeval to jiffies, trying to avoid the -diff -Naur a/mm/Makefile b/mm/Makefile ---- a/mm/Makefile 2004-03-10 08:21:51.000000000 -0500 -+++ b/mm/Makefile 2004-03-10 08:40:50.000000000 -0500 -@@ -14,2 +14,3 @@ - obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o -+obj-$(CONFIG_PROC_MM) += proc_mm.o - obj-$(CONFIG_HUGETLBFS) += hugetlb.o -diff -Naur a/mm/mmap.c b/mm/mmap.c ---- a/mm/mmap.c 2004-03-10 08:21:49.000000000 -0500 -+++ b/mm/mmap.c 2004-03-10 08:40:45.000000000 -0500 -@@ -480,11 +480,11 @@ - * The caller must hold down_write(current->mm->mmap_sem). - */ + void boot_timer_handler(int sig) +@@ -58,12 +96,15 @@ + do_timer(®s); + } --unsigned long do_mmap_pgoff(struct file * file, unsigned long addr, -- unsigned long len, unsigned long prot, -- unsigned long flags, unsigned long pgoff) -+unsigned long do_mmap_pgoff(struct mm_struct *mm, struct file * file, -+ unsigned long addr, unsigned long len, -+ unsigned long prot, unsigned long flags, -+ unsigned long pgoff) +-void um_timer(int irq, void *dev, struct pt_regs *regs) ++irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) { -- struct mm_struct * mm = current->mm; - struct vm_area_struct * vma, * prev; - struct inode *inode; - unsigned int vm_flags; -diff -Naur a/mm/mprotect.c b/mm/mprotect.c ---- a/mm/mprotect.c 2004-03-10 08:23:29.000000000 -0500 -+++ b/mm/mprotect.c 2004-03-10 08:45:40.000000000 -0500 -@@ -224,7 +224,8 @@ ++ unsigned long flags; ++ + do_timer(regs); +- write_seqlock(&xtime_lock); ++ write_seqlock_irqsave(&xtime_lock, flags); + timer(); +- write_sequnlock(&xtime_lock); ++ write_sequnlock_irqrestore(&xtime_lock, flags); ++ return(IRQ_HANDLED); } - asmlinkage long --sys_mprotect(unsigned long start, size_t len, unsigned long prot) -+do_mprotect(struct mm_struct *mm, unsigned long start, size_t len, -+ unsigned long prot) + long um_time(int * tloc) +@@ -81,12 +122,12 @@ + long um_stime(int * tptr) { - unsigned long vm_flags, nstart, end, tmp; - struct vm_area_struct * vma, * next, * prev; -@@ -247,9 +248,9 @@ - - vm_flags = calc_vm_prot_bits(prot); - -- down_write(¤t->mm->mmap_sem); -+ down_write(&mm->mmap_sem); + int value; +- struct timeval new; ++ struct timespec new; -- vma = find_vma_prev(current->mm, start, &prev); -+ vma = find_vma_prev(mm, start, &prev); - error = -ENOMEM; - if (!vma) - goto out; -@@ -328,6 +329,11 @@ - prev->vm_mm->map_count--; - } - out: -- up_write(¤t->mm->mmap_sem); -+ up_write(&mm->mmap_sem); - return error; + if (get_user(value, tptr)) + return -EFAULT; + new.tv_sec = value; +- new.tv_usec = 0; ++ new.tv_nsec = 0; + do_settimeofday(&new); + return 0; + } +@@ -125,9 +166,11 @@ + void timer_handler(int sig, union uml_pt_regs *regs) + { + #ifdef CONFIG_SMP ++ local_irq_disable(); + update_process_times(user_context(UPT_SP(regs))); ++ local_irq_enable(); + #endif +- if(current->thread_info->cpu == 0) ++ if(current_thread->cpu == 0) + timer_irq(regs); } -+ -+asmlinkage long sys_mprotect(unsigned long start, size_t len, unsigned long prot) -+{ -+ return(do_mprotect(current->mm, start, len, prot)); -+} -diff -Naur a/mm/page_alloc.c b/mm/page_alloc.c ---- a/mm/page_alloc.c 2004-03-10 08:20:20.000000000 -0500 -+++ b/mm/page_alloc.c 2004-03-10 08:34:21.000000000 -0500 -@@ -278,6 +278,8 @@ - LIST_HEAD(list); - int i; -+ arch_free_page(page, order); -+ - mod_page_state(pgfree, 1 << order); - for (i = 0 ; i < (1 << order) ; ++i) - free_pages_check(__FUNCTION__, page + i); -@@ -470,6 +472,8 @@ - struct per_cpu_pages *pcp; +@@ -136,6 +179,7 @@ + unsigned long time_lock(void) + { unsigned long flags; - -+ arch_free_page(page, 0); -+ - kernel_map_pages(page, 1, 0); - inc_page_state(pgfree); - free_pages_check(__FUNCTION__, page); -diff -Naur a/mm/proc_mm.c b/mm/proc_mm.c ---- a/mm/proc_mm.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/mm/proc_mm.c 2004-03-10 08:38:18.000000000 -0500 -@@ -0,0 +1,174 @@ -+/* -+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) -+ * Licensed under the GPL -+ */ -+ -+#include "linux/mm.h" -+#include "linux/init.h" -+#include "linux/proc_fs.h" -+#include "linux/proc_mm.h" -+#include "linux/file.h" -+#include "asm/uaccess.h" -+#include "asm/mmu_context.h" -+ -+static struct file_operations proc_mm_fops; -+ -+struct mm_struct *proc_mm_get_mm(int fd) -+{ -+ struct mm_struct *ret = ERR_PTR(-EBADF); -+ struct file *file; -+ -+ file = fget(fd); -+ if (!file) -+ goto out; -+ -+ ret = ERR_PTR(-EINVAL); -+ if(file->f_op != &proc_mm_fops) -+ goto out_fput; -+ -+ ret = file->private_data; -+ out_fput: -+ fput(file); -+ out: -+ return(ret); -+} -+ -+extern long do_mmap2(struct mm_struct *mm, unsigned long addr, -+ unsigned long len, unsigned long prot, -+ unsigned long flags, unsigned long fd, -+ unsigned long pgoff); -+ -+static ssize_t write_proc_mm(struct file *file, const char *buffer, -+ size_t count, loff_t *ppos) -+{ -+ struct mm_struct *mm = file->private_data; -+ struct proc_mm_op req; -+ int n, ret; -+ -+ if(count > sizeof(req)) -+ return(-EINVAL); -+ -+ n = copy_from_user(&req, buffer, count); -+ if(n != 0) -+ return(-EFAULT); -+ -+ ret = count; -+ switch(req.op){ -+ case MM_MMAP: { -+ struct mm_mmap *map = &req.u.mmap; -+ -+ ret = do_mmap2(mm, map->addr, map->len, map->prot, -+ map->flags, map->fd, map->offset >> PAGE_SHIFT); -+ if((ret & ~PAGE_MASK) == 0) -+ ret = count; -+ -+ break; -+ } -+ case MM_MUNMAP: { -+ struct mm_munmap *unmap = &req.u.munmap; -+ -+ down_write(&mm->mmap_sem); -+ ret = do_munmap(mm, unmap->addr, unmap->len); -+ up_write(&mm->mmap_sem); -+ -+ if(ret == 0) -+ ret = count; -+ break; -+ } -+ case MM_MPROTECT: { -+ struct mm_mprotect *protect = &req.u.mprotect; -+ -+ ret = do_mprotect(mm, protect->addr, protect->len, -+ protect->prot); -+ if(ret == 0) -+ ret = count; -+ break; -+ } -+ -+ case MM_COPY_SEGMENTS: { -+ struct mm_struct *from = proc_mm_get_mm(req.u.copy_segments); -+ -+ if(IS_ERR(from)){ -+ ret = PTR_ERR(from); -+ break; -+ } -+ -+ mm_copy_segments(from, mm); -+ break; -+ } -+ default: -+ ret = -EINVAL; -+ break; -+ } + -+ return(ret); -+} -+ -+static int open_proc_mm(struct inode *inode, struct file *file) -+{ -+ struct mm_struct *mm = mm_alloc(); -+ int ret; -+ -+ ret = -ENOMEM; -+ if(mm == NULL) -+ goto out_mem; -+ -+ ret = init_new_context(current, mm); -+ if(ret) -+ goto out_free; -+ -+ spin_lock(&mmlist_lock); -+ list_add(&mm->mmlist, ¤t->mm->mmlist); -+ mmlist_nr++; -+ spin_unlock(&mmlist_lock); -+ -+ file->private_data = mm; -+ -+ return(0); -+ -+ out_free: -+ mmput(mm); -+ out_mem: -+ return(ret); -+} -+ -+static int release_proc_mm(struct inode *inode, struct file *file) -+{ -+ struct mm_struct *mm = file->private_data; -+ -+ mmput(mm); -+ return(0); -+} -+ -+static struct file_operations proc_mm_fops = { -+ .open = open_proc_mm, -+ .release = release_proc_mm, -+ .write = write_proc_mm, -+}; -+ -+static int make_proc_mm(void) -+{ -+ struct proc_dir_entry *ent; -+ -+ ent = create_proc_entry("mm", 0222, &proc_root); -+ if(ent == NULL){ -+ printk("make_proc_mm : Failed to register /proc/mm\n"); -+ return(0); -+ } -+ ent->proc_fops = &proc_mm_fops; -+ -+ return(0); -+} -+ -+__initcall(make_proc_mm); -+ -+/* -+ * 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-file-style: "linux" -+ * End: -+ */ + spin_lock_irqsave(&timer_spinlock, flags); + return(flags); + } +@@ -150,8 +194,8 @@ + int err; + + CHOOSE_MODE(user_time_init_tt(), user_time_init_skas()); +- if((err = request_irq(TIMER_IRQ, um_timer, SA_INTERRUPT, "timer", +- NULL)) != 0) ++ err = request_irq(TIMER_IRQ, um_timer, SA_INTERRUPT, "timer", NULL); ++ if(err != 0) + printk(KERN_ERR "timer_init : request_irq failed - " + "errno = %d\n", -err); + timer_irq_inited = 1; +@@ -160,7 +204,6 @@ + + __initcall(timer_init); + +- + /* + * Overrides for Emacs so that we follow Linus's tabbing style. + * Emacs will notice this stuff at the end of the file and automatically diff --git a/lustre/kernel_patches/patches/uml-vanilla-2.6.6-p2.patch b/lustre/kernel_patches/patches/uml-vanilla-2.6.6-p2.patch deleted file mode 100644 index 08ba782..0000000 --- a/lustre/kernel_patches/patches/uml-vanilla-2.6.6-p2.patch +++ /dev/null @@ -1,117 +0,0 @@ ---- linux-2.6.6/arch/um/kernel/physmem.c.saved 2004-05-11 19:24:53.000000000 +0200 -+++ linux-2.6.6/arch/um/kernel/physmem.c 2004-05-11 19:25:16.000000000 +0200 -@@ -285,7 +285,7 @@ - p = &map[i]; - set_page_count(p, 0); - SetPageReserved(p); -- INIT_LIST_HEAD(&p->list); -+ INIT_LIST_HEAD(&p->lru); - } - - mem_map = map; ---- linux-2.6.6/arch/um/kernel/sysrq.c.saved 2004-05-11 17:52:41.000000000 +0200 -+++ linux-2.6.6/arch/um/kernel/sysrq.c 2004-05-11 19:55:36.000000000 +0200 -@@ -46,10 +46,7 @@ - - void show_stack(struct task_struct *task, unsigned long *sp) - { -- if(task) -- show_trace_task(task); -- else -- show_trace(sp); -+ show_trace(sp); - } - - /* ---- linux-2.6.6/arch/um/dyn.lds.S.saved 2004-05-11 17:52:40.000000000 +0200 -+++ linux-2.6.6/arch/um/dyn.lds.S 2004-05-11 20:18:36.000000000 +0200 -@@ -1,3 +1,5 @@ -+#include -+ - OUTPUT_FORMAT(ELF_FORMAT) - OUTPUT_ARCH(ELF_ARCH) - ENTRY(_start) -@@ -58,7 +60,9 @@ - } =0x90909090 - .plt : { *(.plt) } - .text : { -- *(.text .stub .text.* .gnu.linkonce.t.*) -+ *(.text) -+ SCHED_TEXT -+ *(.stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } =0x90909090 ---- linux-2.6.6/arch/um/uml.lds.S.saved 2004-05-11 17:52:42.000000000 +0200 -+++ linux-2.6.6/arch/um/uml.lds.S 2004-05-11 20:03:10.000000000 +0200 -@@ -34,6 +34,7 @@ - .text : - { - *(.text) -+ SCHED_TEXT - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - *(.gnu.linkonce.t*) ---- linux-2.6.6/Makefile.saved 2004-05-11 19:20:02.000000000 +0200 -+++ linux-2.6.6/Makefile 2004-05-11 19:20:59.000000000 +0200 -@@ -449,6 +449,10 @@ - - include $(srctree)/arch/$(ARCH)/Makefile - -+# Let architecture Makefiles change CPPFLAGS if needed -+CFLAGS := $(CPPFLAGS) $(CFLAGS) -+AFLAGS := $(CPPFLAGS) $(AFLAGS) -+ - ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE - CFLAGS += -Os - else ---- linux/include/asm-um/system-i386.h 2004-02-04 04:43:42.000000000 +0100 -+++ uml/linux/include/asm-um/system-i386.h 2004-04-08 00:18:09.621333000 +0200 -@@ -2,36 +2,5 @@ - #define __UM_SYSTEM_I386_H - - #include "asm/system-generic.h" -- --static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, -- unsigned long new, int size) --{ -- unsigned long prev; -- switch (size) { -- case 1: -- __asm__ __volatile__(LOCK_PREFIX "cmpxchgb %b1,%2" -- : "=a"(prev) -- : "q"(new), "m"(*__xg(ptr)), "0"(old) -- : "memory"); -- return prev; -- case 2: -- __asm__ __volatile__(LOCK_PREFIX "cmpxchgw %w1,%2" -- : "=a"(prev) -- : "q"(new), "m"(*__xg(ptr)), "0"(old) -- : "memory"); -- return prev; -- case 4: -- __asm__ __volatile__(LOCK_PREFIX "cmpxchgl %1,%2" -- : "=a"(prev) -- : "q"(new), "m"(*__xg(ptr)), "0"(old) -- : "memory"); -- return prev; -- } -- return old; --} -- --#define cmpxchg(ptr,o,n)\ -- ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ -- (unsigned long)(n),sizeof(*(ptr)))) - - #endif ---- linux/arch/um/Makefile-i386 2004-04-08 00:27:50.031333000 +0200 -+++ uml/linux/arch/um/Makefile-i386 2004-04-07 23:22:31.000000000 +0200 -@@ -30,7 +30,7 @@ - $(SYS_DIR)/thread.h: $(SYS_UTIL_DIR)/mk_thread - $(call filechk,$@) - --$(SYS_UTIL_DIR)/mk_sc: scripts/fixdep include/config/MARKER FORCE ; -+$(SYS_UTIL_DIR)/mk_sc: scripts/basic/fixdep include/config/MARKER FORCE ; - $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ - - $(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) sys_prepare FORCE ; diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch index ee976f6..ef327e7 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch @@ -10,7 +10,7 @@ Index: linux-2.6.5-12.1/fs/exec.c + intent_init(&nd.intent, IT_OPEN); - FSHOOK_BEGIN_USER_WALK(open, -+ nd.intent.it_flags = FMODE_READ; ++ nd.intent.it_flags = FMODE_READ|FMODE_EXEC; + FSHOOK_BEGIN_USER_WALK_IT(open, error, library, @@ -31,7 +31,7 @@ Index: linux-2.6.5-12.1/fs/exec.c - nd.intent.open.flags = FMODE_READ; - err = path_lookup(name, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); + intent_init(&nd.intent, IT_OPEN); -+ nd.intent.it_flags = FMODE_READ; ++ nd.intent.it_flags = FMODE_READ|FMODE_EXEC; + err = path_lookup(name, LOOKUP_FOLLOW, &nd); file = ERR_PTR(err); @@ -136,7 +136,7 @@ Index: linux-2.6.5-12.1/fs/namei.c dput(next.dentry); mntput(next.mnt); if (err) -@@ -703,14 +749,24 @@ +@@ -703,14 +749,26 @@ inode = nd->dentry->d_inode; /* fallthrough */ case 1: @@ -145,8 +145,10 @@ Index: linux-2.6.5-12.1/fs/namei.c + nd->flags &= ~LOOKUP_LAST; + if (!nd->dentry->d_inode) + err = -ENOENT; -+ if (err) ++ if (err) { ++ path_release(nd); + goto return_err; ++ } goto return_reval; } + @@ -640,6 +642,14 @@ Index: linux-2.6.5-12.1/include/linux/fs.h =================================================================== --- linux-2.6.5-12.1.orig/include/linux/fs.h 2004-05-10 12:21:56.000000000 -0400 +++ linux-2.6.5-12.1/include/linux/fs.h 2004-06-03 18:31:28.000000000 -0400 +@@ -76,6 +76,7 @@ + + #define FMODE_READ 1 + #define FMODE_WRITE 2 ++#define FMODE_EXEC 4 + + #define RW_MASK 1 + #define RWA_MASK 2 @@ -250,6 +250,8 @@ #define ATTR_ATTR_FLAG 1024 #define ATTR_KILL_SUID 2048 diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch index 761d823..90c1223 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch @@ -1,21 +1,21 @@ -Index: linux-2.6.4-51.0/fs/exec.c +Index: linux-2.6.6-vanilla/fs/exec.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/exec.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/exec.c 2004-04-05 17:36:42.000000000 -0400 -@@ -122,8 +122,11 @@ +--- linux-2.6.6-vanilla.orig/fs/exec.c 2004-05-26 20:25:42.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/exec.c 2004-06-29 13:56:19.131583960 +0300 +@@ -121,9 +121,10 @@ struct file * file; struct nameidata nd; int error; + intent_init(&nd.intent, IT_OPEN); - nd.intent.open.flags = FMODE_READ; -+ error = user_path_walk_it(library, &nd); -+ -+ nd.intent.it_flags = O_RDONLY; - error = __user_walk(library, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); +- error = __user_walk(library, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); ++ nd.intent.it_flags = FMODE_READ|FMODE_EXEC; ++ error = __user_walk_it(library, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); if (error) goto out; -@@ -136,7 +139,7 @@ + +@@ -135,7 +136,7 @@ if (error) goto exit; @@ -24,19 +24,19 @@ Index: linux-2.6.4-51.0/fs/exec.c error = PTR_ERR(file); if (IS_ERR(file)) goto out; -@@ -485,8 +488,9 @@ +@@ -483,8 +484,9 @@ int err; struct file *file; - nd.intent.open.flags = FMODE_READ; - err = path_lookup(name, LOOKUP_FOLLOW|LOOKUP_OPEN, &nd); + intent_init(&nd.intent, IT_OPEN); -+ nd.intent.it_flags = O_RDONLY; ++ nd.intent.it_flags = FMODE_READ|FMODE_EXEC; + err = path_lookup(name, LOOKUP_FOLLOW, &nd); file = ERR_PTR(err); if (!err) { -@@ -499,7 +503,7 @@ +@@ -497,7 +499,7 @@ err = -EACCES; file = ERR_PTR(err); if (!err) { @@ -45,11 +45,11 @@ Index: linux-2.6.4-51.0/fs/exec.c if (!IS_ERR(file)) { err = deny_write_access(file); if (err) { -Index: linux-2.6.4-51.0/fs/namei.c +Index: linux-2.6.6-vanilla/fs/namei.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/namei.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/namei.c 2004-04-05 17:36:42.000000000 -0400 -@@ -269,8 +269,19 @@ +--- linux-2.6.6-vanilla.orig/fs/namei.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/namei.c 2004-06-29 12:25:05.243741400 +0300 +@@ -272,8 +272,19 @@ return 0; } @@ -69,7 +69,7 @@ Index: linux-2.6.4-51.0/fs/namei.c dput(nd->dentry); mntput(nd->mnt); } -@@ -347,7 +358,10 @@ +@@ -350,7 +361,10 @@ { struct dentry * result; struct inode *dir = parent->d_inode; @@ -80,7 +80,7 @@ Index: linux-2.6.4-51.0/fs/namei.c down(&dir->i_sem); /* * First re-do the cached lookup just in case it was created -@@ -386,7 +400,10 @@ +@@ -389,7 +403,10 @@ if (result->d_op && result->d_op->d_revalidate) { if (!result->d_op->d_revalidate(result, nd) && !d_invalidate(result)) { dput(result); @@ -92,7 +92,7 @@ Index: linux-2.6.4-51.0/fs/namei.c } } return result; -@@ -563,6 +580,33 @@ +@@ -566,6 +583,33 @@ return PTR_ERR(dentry); } @@ -126,7 +126,7 @@ Index: linux-2.6.4-51.0/fs/namei.c /* * Name resolution. * -@@ -663,7 +705,9 @@ +@@ -666,7 +710,9 @@ if (inode->i_op->follow_link) { mntget(next.mnt); @@ -136,25 +136,22 @@ Index: linux-2.6.4-51.0/fs/namei.c dput(next.dentry); mntput(next.mnt); if (err) -@@ -702,14 +746,29 @@ +@@ -705,14 +751,26 @@ inode = nd->dentry->d_inode; /* fallthrough */ case 1: + nd->flags |= LOOKUP_LAST; + err = revalidate_special(nd); + nd->flags &= ~LOOKUP_LAST; -+ if (err) -+ break; ++ if (!nd->dentry->d_inode) ++ err = -ENOENT; ++ if (err) { ++ path_release(nd); ++ goto return_err; ++ } goto return_reval; } + -+ if (err) { -+ if (!nd->dentry->d_inode) -+ err = -ENOENT; -+ -+ goto return_err; -+ } -+ if (nd->dentry->d_op && nd->dentry->d_op->d_hash) { err = nd->dentry->d_op->d_hash(nd->dentry, &this); if (err < 0) @@ -166,7 +163,7 @@ Index: linux-2.6.4-51.0/fs/namei.c if (err) break; follow_mount(&next.mnt, &next.dentry); -@@ -935,7 +994,7 @@ +@@ -946,7 +1004,7 @@ } /* SMP-safe */ @@ -175,7 +172,7 @@ Index: linux-2.6.4-51.0/fs/namei.c { unsigned long hash; struct qstr this; -@@ -955,11 +1014,16 @@ +@@ -966,11 +1024,16 @@ } this.hash = end_name_hash(hash); @@ -193,7 +190,7 @@ Index: linux-2.6.4-51.0/fs/namei.c /* * namei() * -@@ -971,7 +1035,7 @@ +@@ -982,7 +1045,7 @@ * that namei follows links, while lnamei does not. * SMP-safe */ @@ -202,7 +199,7 @@ Index: linux-2.6.4-51.0/fs/namei.c { char *tmp = getname(name); int err = PTR_ERR(tmp); -@@ -983,6 +1047,12 @@ +@@ -994,6 +1057,12 @@ return err; } @@ -215,7 +212,7 @@ Index: linux-2.6.4-51.0/fs/namei.c /* * It's inline, so penalty for filesystems that don't use sticky bit is * minimal. -@@ -1255,8 +1325,8 @@ +@@ -1266,8 +1335,8 @@ acc_mode |= MAY_APPEND; /* Fill in the open() intent data */ @@ -226,7 +223,7 @@ Index: linux-2.6.4-51.0/fs/namei.c /* * The simplest case - just a plain lookup. -@@ -1271,6 +1341,7 @@ +@@ -1282,6 +1351,7 @@ /* * Create - we need to know the parent. */ @@ -234,7 +231,7 @@ Index: linux-2.6.4-51.0/fs/namei.c error = path_lookup(pathname, LOOKUP_PARENT|LOOKUP_OPEN|LOOKUP_CREATE, nd); if (error) return error; -@@ -1287,7 +1358,9 @@ +@@ -1298,7 +1368,9 @@ dir = nd->dentry; nd->flags &= ~LOOKUP_PARENT; down(&dir->d_inode->i_sem); @@ -244,7 +241,7 @@ Index: linux-2.6.4-51.0/fs/namei.c do_last: error = PTR_ERR(dentry); -@@ -1392,7 +1465,9 @@ +@@ -1403,7 +1475,9 @@ } dir = nd->dentry; down(&dir->d_inode->i_sem); @@ -254,7 +251,7 @@ Index: linux-2.6.4-51.0/fs/namei.c putname(nd->last.name); goto do_last; } -@@ -2154,7 +2229,9 @@ +@@ -2165,7 +2239,9 @@ __vfs_follow_link(struct nameidata *nd, const char *link) { int res = 0; @@ -264,7 +261,7 @@ Index: linux-2.6.4-51.0/fs/namei.c if (IS_ERR(link)) goto fail; -@@ -2164,6 +2241,10 @@ +@@ -2175,6 +2251,10 @@ /* weird __emul_prefix() stuff did it */ goto out; } @@ -275,11 +272,11 @@ Index: linux-2.6.4-51.0/fs/namei.c res = link_path_walk(link, nd); out: if (current->link_count || res || nd->last_type!=LAST_NORM) -Index: linux-2.6.4-51.0/fs/namespace.c +Index: linux-2.6.6-vanilla/fs/namespace.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/namespace.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/namespace.c 2004-04-07 13:28:23.000000000 -0400 -@@ -107,6 +107,7 @@ +--- linux-2.6.6-vanilla.orig/fs/namespace.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/namespace.c 2004-06-29 13:50:23.793603544 +0300 +@@ -115,6 +115,7 @@ static void detach_mnt(struct vfsmount *mnt, struct nameidata *old_nd) { @@ -287,7 +284,23 @@ Index: linux-2.6.4-51.0/fs/namespace.c old_nd->dentry = mnt->mnt_mountpoint; old_nd->mnt = mnt->mnt_parent; mnt->mnt_parent = mnt; -@@ -748,6 +749,7 @@ +@@ -539,6 +540,7 @@ + return err; + if (!old_name || !*old_name) + return -EINVAL; ++ intent_init(&old_nd.intent, IT_LOOKUP); + err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd); + if (err) + return err; +@@ -607,6 +609,7 @@ + return -EPERM; + if (!old_name || !*old_name) + return -EINVAL; ++ intent_init(&old_nd.intent, IT_LOOKUP); + err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd); + if (err) + return err; +@@ -756,6 +759,7 @@ int retval = 0; int mnt_flags = 0; @@ -295,11 +308,11 @@ Index: linux-2.6.4-51.0/fs/namespace.c /* Discard magic */ if ((flags & MS_MGC_MSK) == MS_MGC_VAL) flags &= ~MS_MGC_MSK; -Index: linux-2.6.4-51.0/fs/open.c +Index: linux-2.6.6-vanilla/fs/open.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/open.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/open.c 2004-04-05 17:36:42.000000000 -0400 -@@ -211,7 +211,7 @@ +--- linux-2.6.6-vanilla.orig/fs/open.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/open.c 2004-06-29 13:52:28.003720736 +0300 +@@ -213,12 +213,12 @@ struct nameidata nd; struct inode * inode; int error; @@ -308,7 +321,13 @@ Index: linux-2.6.4-51.0/fs/open.c error = -EINVAL; if (length < 0) /* sorry, but loff_t says... */ goto out; -@@ -470,6 +470,7 @@ + +- error = user_path_walk(path, &nd); ++ error = user_path_walk_it(path, &nd); + if (error) + goto out; + inode = nd.dentry->d_inode; +@@ -472,6 +472,7 @@ int old_fsuid, old_fsgid; kernel_cap_t old_cap; int res; @@ -316,7 +335,15 @@ Index: linux-2.6.4-51.0/fs/open.c if (mode & ~S_IRWXO) /* where's F_OK, X_OK, W_OK, R_OK? */ return -EINVAL; -@@ -501,6 +502,7 @@ +@@ -496,13 +497,14 @@ + else + current->cap_effective = current->cap_permitted; + +- res = __user_walk(filename, LOOKUP_FOLLOW|LOOKUP_ACCESS, &nd); ++ res = __user_walk_it(filename, LOOKUP_FOLLOW|LOOKUP_ACCESS, &nd); + if (!res) { + res = permission(nd.dentry->d_inode, mode, &nd); + /* SuS v2 requires we report a read only fs too */ if(!res && (mode & S_IWOTH) && IS_RDONLY(nd.dentry->d_inode) && !special_file(nd.dentry->d_inode->i_mode)) res = -EROFS; @@ -324,32 +351,29 @@ Index: linux-2.6.4-51.0/fs/open.c path_release(&nd); } -@@ -515,6 +517,7 @@ +@@ -517,8 +519,9 @@ { struct nameidata nd; int error; + intent_init(&nd.intent, IT_GETATTR); - error = __user_walk(filename, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &nd); +- error = __user_walk(filename, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &nd); ++ error = __user_walk_it(filename, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &nd); if (error) -@@ -566,6 +569,7 @@ + goto out; + +@@ -568,8 +571,9 @@ { struct nameidata nd; int error; + intent_init(&nd.intent, IT_GETATTR); - error = __user_walk(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); +- error = __user_walk(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); ++ error = __user_walk_it(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); if (error) -@@ -638,7 +642,7 @@ - error = -EROFS; - if (IS_RDONLY(inode)) - goto dput_and_out; -- -+ - error = -EPERM; - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) - goto dput_and_out; -@@ -746,27 +750,8 @@ + goto out; + +@@ -748,27 +752,8 @@ * for the internal routines (ie open_namei()/follow_link() etc). 00 is * used by symlinks. */ @@ -379,7 +403,7 @@ Index: linux-2.6.4-51.0/fs/open.c { struct file * f; struct inode *inode; -@@ -778,6 +763,7 @@ +@@ -780,6 +765,7 @@ goto cleanup_dentry; f->f_flags = flags; f->f_mode = (flags+1) & O_ACCMODE; @@ -387,7 +411,7 @@ Index: linux-2.6.4-51.0/fs/open.c inode = dentry->d_inode; if (f->f_mode & FMODE_WRITE) { error = get_write_access(inode); -@@ -797,6 +783,7 @@ +@@ -799,6 +785,7 @@ error = f->f_op->open(inode,f); if (error) goto cleanup_all; @@ -395,7 +419,7 @@ Index: linux-2.6.4-51.0/fs/open.c } f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC); -@@ -821,6 +808,7 @@ +@@ -823,6 +810,7 @@ cleanup_file: put_filp(f); cleanup_dentry: @@ -403,7 +427,7 @@ Index: linux-2.6.4-51.0/fs/open.c dput(dentry); mntput(mnt); return ERR_PTR(error); -@@ -828,6 +816,36 @@ +@@ -830,6 +818,36 @@ EXPORT_SYMBOL(dentry_open); @@ -440,10 +464,10 @@ Index: linux-2.6.4-51.0/fs/open.c /* * Find an empty file descriptor entry, and mark it busy. */ -Index: linux-2.6.4-51.0/fs/stat.c +Index: linux-2.6.6-vanilla/fs/stat.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/stat.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/stat.c 2004-04-05 17:36:42.000000000 -0400 +--- linux-2.6.6-vanilla.orig/fs/stat.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/stat.c 2004-06-29 12:23:41.822423368 +0300 @@ -36,7 +36,7 @@ EXPORT_SYMBOL(generic_fillattr); @@ -513,11 +537,11 @@ Index: linux-2.6.4-51.0/fs/stat.c fput(f); } return error; -Index: linux-2.6.4-51.0/fs/nfs/dir.c +Index: linux-2.6.6-vanilla/fs/nfs/dir.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/nfs/dir.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/nfs/dir.c 2004-04-07 13:27:47.000000000 -0400 -@@ -709,7 +709,7 @@ +--- linux-2.6.6-vanilla.orig/fs/nfs/dir.c 2004-05-26 20:25:50.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/nfs/dir.c 2004-06-29 13:14:46.887462656 +0300 +@@ -705,7 +705,7 @@ return 0; if (!nd || (nd->flags & LOOKUP_CONTINUE) || !(nd->flags & LOOKUP_CREATE)) return 0; @@ -526,7 +550,7 @@ Index: linux-2.6.4-51.0/fs/nfs/dir.c } static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) -@@ -1026,7 +1026,7 @@ +@@ -1022,7 +1022,7 @@ attr.ia_valid = ATTR_MODE; if (nd && (nd->flags & LOOKUP_CREATE)) @@ -535,11 +559,11 @@ Index: linux-2.6.4-51.0/fs/nfs/dir.c /* * The 0 argument passed into the create function should one day -Index: linux-2.6.4-51.0/fs/inode.c +Index: linux-2.6.6-vanilla/fs/inode.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/inode.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/inode.c 2004-04-05 17:36:43.000000000 -0400 -@@ -221,6 +221,7 @@ +--- linux-2.6.6-vanilla.orig/fs/inode.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/inode.c 2004-06-29 12:23:41.844420024 +0300 +@@ -220,6 +220,7 @@ inodes_stat.nr_unused--; } @@ -547,11 +571,11 @@ Index: linux-2.6.4-51.0/fs/inode.c /** * clear_inode - clear an inode * @inode: inode to clear -Index: linux-2.6.4-51.0/fs/super.c +Index: linux-2.6.6-vanilla/fs/super.c =================================================================== ---- linux-2.6.4-51.0.orig/fs/super.c 2004-04-05 12:41:59.000000000 -0400 -+++ linux-2.6.4-51.0/fs/super.c 2004-04-05 17:36:43.000000000 -0400 -@@ -787,6 +787,8 @@ +--- linux-2.6.6-vanilla.orig/fs/super.c 2004-05-26 20:25:43.000000000 +0300 ++++ linux-2.6.6-vanilla/fs/super.c 2004-06-29 12:23:41.846419720 +0300 +@@ -788,6 +788,8 @@ return (struct vfsmount *)sb; } @@ -560,10 +584,10 @@ Index: linux-2.6.4-51.0/fs/super.c struct vfsmount *kern_mount(struct file_system_type *type) { return do_kern_mount(type->name, 0, type->name, NULL); -Index: linux-2.6.4-51.0/include/linux/dcache.h +Index: linux-2.6.6-vanilla/include/linux/dcache.h =================================================================== ---- linux-2.6.4-51.0.orig/include/linux/dcache.h 2004-04-05 12:42:07.000000000 -0400 -+++ linux-2.6.4-51.0/include/linux/dcache.h 2004-04-05 17:36:43.000000000 -0400 +--- linux-2.6.6-vanilla.orig/include/linux/dcache.h 2004-05-26 20:26:11.000000000 +0300 ++++ linux-2.6.6-vanilla/include/linux/dcache.h 2004-06-29 12:23:41.847419568 +0300 @@ -4,6 +4,7 @@ #ifdef __KERNEL__ @@ -581,10 +605,18 @@ Index: linux-2.6.4-51.0/include/linux/dcache.h struct dentry_stat_t { int nr_dentry; int nr_unused; -Index: linux-2.6.4-51.0/include/linux/fs.h +Index: linux-2.6.6-vanilla/include/linux/fs.h =================================================================== ---- linux-2.6.4-51.0.orig/include/linux/fs.h 2004-04-05 12:42:07.000000000 -0400 -+++ linux-2.6.4-51.0/include/linux/fs.h 2004-04-05 17:36:43.000000000 -0400 +--- linux-2.6.6-vanilla.orig/include/linux/fs.h 2004-05-26 20:26:11.000000000 +0300 ++++ linux-2.6.6-vanilla/include/linux/fs.h 2004-06-29 12:23:41.850419112 +0300 +@@ -76,6 +76,7 @@ + + #define FMODE_READ 1 + #define FMODE_WRITE 2 ++#define FMODE_EXEC 4 + + #define RW_MASK 1 + #define RWA_MASK 2 @@ -249,6 +249,8 @@ #define ATTR_ATTR_FLAG 1024 #define ATTR_KILL_SUID 2048 @@ -594,7 +626,7 @@ Index: linux-2.6.4-51.0/include/linux/fs.h /* * This is the Inode Attributes structure, used for notify_change(). It -@@ -422,6 +424,7 @@ +@@ -443,6 +445,7 @@ struct block_device *i_bdev; struct cdev *i_cdev; int i_cindex; @@ -602,7 +634,7 @@ Index: linux-2.6.4-51.0/include/linux/fs.h unsigned long i_dnotify_mask; /* Directory notify events */ struct dnotify_struct *i_dnotify; /* for directory notifications */ -@@ -554,6 +557,7 @@ +@@ -576,6 +579,7 @@ spinlock_t f_ep_lock; #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping; @@ -610,7 +642,7 @@ Index: linux-2.6.4-51.0/include/linux/fs.h }; extern spinlock_t files_lock; #define file_list_lock() spin_lock(&files_lock); -@@ -874,7 +878,9 @@ +@@ -900,7 +904,9 @@ void (*truncate) (struct inode *); int (*permission) (struct inode *, int, struct nameidata *); int (*setattr) (struct dentry *, struct iattr *); @@ -620,7 +652,7 @@ Index: linux-2.6.4-51.0/include/linux/fs.h int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); ssize_t (*listxattr) (struct dentry *, char *, size_t); -@@ -1101,6 +1107,7 @@ +@@ -1126,6 +1132,7 @@ extern int unregister_filesystem(struct file_system_type *); extern struct vfsmount *kern_mount(struct file_system_type *); extern int may_umount(struct vfsmount *); @@ -628,7 +660,7 @@ Index: linux-2.6.4-51.0/include/linux/fs.h extern long do_mount(char *, char *, char *, unsigned long, void *); extern int vfs_statfs(struct super_block *, struct kstatfs *); -@@ -1165,6 +1172,7 @@ +@@ -1190,6 +1197,7 @@ extern int do_truncate(struct dentry *, loff_t start); extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); @@ -636,10 +668,10 @@ Index: linux-2.6.4-51.0/include/linux/fs.h extern int filp_close(struct file *, fl_owner_t id); extern char * getname(const char __user *); -Index: linux-2.6.4-51.0/include/linux/namei.h +Index: linux-2.6.6-vanilla/include/linux/namei.h =================================================================== ---- linux-2.6.4-51.0.orig/include/linux/namei.h 2004-04-05 12:42:07.000000000 -0400 -+++ linux-2.6.4-51.0/include/linux/namei.h 2004-04-05 17:36:43.000000000 -0400 +--- linux-2.6.6-vanilla.orig/include/linux/namei.h 2004-05-26 20:26:11.000000000 +0300 ++++ linux-2.6.6-vanilla/include/linux/namei.h 2004-06-29 12:23:41.852418808 +0300 @@ -2,25 +2,55 @@ #define _LINUX_NAMEI_H @@ -735,11 +767,11 @@ Index: linux-2.6.4-51.0/include/linux/namei.h extern int follow_down(struct vfsmount **, struct dentry **); extern int follow_up(struct vfsmount **, struct dentry **); -Index: linux-2.6.4-51.0/kernel/exit.c +Index: linux-2.6.6-vanilla/kernel/exit.c =================================================================== ---- linux-2.6.4-51.0.orig/kernel/exit.c 2004-04-05 12:42:08.000000000 -0400 -+++ linux-2.6.4-51.0/kernel/exit.c 2004-04-05 17:36:43.000000000 -0400 -@@ -259,6 +259,8 @@ +--- linux-2.6.6-vanilla.orig/kernel/exit.c 2004-05-26 20:26:14.000000000 +0300 ++++ linux-2.6.6-vanilla/kernel/exit.c 2004-06-29 12:23:41.854418504 +0300 +@@ -254,6 +254,8 @@ write_unlock_irq(&tasklist_lock); } @@ -748,7 +780,7 @@ Index: linux-2.6.4-51.0/kernel/exit.c void __set_special_pids(pid_t session, pid_t pgrp) { struct task_struct *curr = current; -@@ -428,6 +430,8 @@ +@@ -434,6 +436,8 @@ __exit_files(tsk); } diff --git a/lustre/kernel_patches/patches/vfs_nointent-2.6-vanilla.patch b/lustre/kernel_patches/patches/vfs_nointent-2.6-vanilla.patch index 9fcec3f..a2dab51 100644 --- a/lustre/kernel_patches/patches/vfs_nointent-2.6-vanilla.patch +++ b/lustre/kernel_patches/patches/vfs_nointent-2.6-vanilla.patch @@ -403,7 +403,7 @@ Index: linux-2.6.4-51.0/fs/open.c - error = -EROFS; - if (IS_RDONLY(inode)) - goto dput_and_out; -- +- - error = -EPERM; - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) - goto dput_and_out; diff --git a/lustre/kernel_patches/patches/vfs_races-2.6-vanilla.patch b/lustre/kernel_patches/patches/vfs_races-2.6-vanilla.patch new file mode 100644 index 0000000..ccca64d --- /dev/null +++ b/lustre/kernel_patches/patches/vfs_races-2.6-vanilla.patch @@ -0,0 +1,65 @@ +Index: linux-2.6.7-vanilla/fs/dcache.c +=================================================================== +--- linux-2.6.7-vanilla.orig/fs/dcache.c 2004-07-01 12:09:19.000000000 +0300 ++++ linux-2.6.7-vanilla/fs/dcache.c 2004-07-01 12:29:12.510193264 +0300 +@@ -219,7 +219,14 @@ + spin_unlock(&dcache_lock); + return 0; + } +- /* ++ ++ /* network invalidation by Lustre */ ++ if (dentry->d_flags & DCACHE_LUSTRE_INVALID) { ++ spin_unlock(&dcache_lock); ++ return 0; ++ } ++ ++ /* + * Check whether to do a partial shrink_dcache + * to get rid of unused child entries. + */ +@@ -1114,19 +1121,28 @@ + * Adds a dentry to the hash according to its name. + */ + +-void d_rehash(struct dentry * entry) ++void __d_rehash(struct dentry * entry, int lock) + { + struct hlist_head *list = d_hash(entry->d_parent, entry->d_name.hash); + +- spin_lock(&dcache_lock); ++ if (lock) ++ spin_lock(&dcache_lock); + spin_lock(&entry->d_lock); + entry->d_flags &= ~DCACHE_UNHASHED; + spin_unlock(&entry->d_lock); + entry->d_bucket = list; + hlist_add_head_rcu(&entry->d_hash, list); +- spin_unlock(&dcache_lock); ++ if (lock) ++ spin_unlock(&dcache_lock); + } + ++EXPORT_SYMBOL(__d_rehash); ++ ++void d_rehash(struct dentry * entry) ++{ ++ __d_rehash(entry, 1); ++ } ++ + #define do_switch(x,y) do { \ + __typeof__ (x) __tmp = x; \ + x = y; y = __tmp; } while (0) +Index: linux-2.6.7-vanilla/include/linux/dcache.h +=================================================================== +--- linux-2.6.7-vanilla.orig/include/linux/dcache.h 2004-07-01 12:24:53.602553208 +0300 ++++ linux-2.6.7-vanilla/include/linux/dcache.h 2004-07-01 12:27:29.757814000 +0300 +@@ -159,6 +159,8 @@ + + #define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */ + #define DCACHE_UNHASHED 0x0010 ++#define DCACHE_LUSTRE_INVALID 0x0020 /* Lustre invalidated */ ++ + + extern spinlock_t dcache_lock; + diff --git a/lustre/kernel_patches/patches/x86-fpu-crash.patch b/lustre/kernel_patches/patches/x86-fpu-crash.patch new file mode 100644 index 0000000..ce6b830 --- /dev/null +++ b/lustre/kernel_patches/patches/x86-fpu-crash.patch @@ -0,0 +1,36 @@ +# This is a BitKeeper generated diff -Nru style patch. +# +# ChangeSet +# 2004/06/14 16:05:28-03:00 marcelo@logos.cnet +# Alexander Nyberg/Andi/Sergey: Fix x86 "clear_cpu()" macro. +# +# Linus's 2.6 changelog: +# +# Fix x86 "clear_cpu()" macro. +# +# We need to clear all exceptions before synchronizing +# with the FPU, since we aren't ready to handle a FP +# exception here and we're getting rid of all FP state. +# +# Special thanks to Alexander Nyberg for reports and +# testing. Alternate patches by Sergey Vlasov and Andi +# Kleen, who both worked on this. +# +# Signed-off-by: Linus Torvalds +# +# include/asm-i386/i387.h +# 2004/06/14 16:04:08-03:00 marcelo@logos.cnet +1 -1 +# Alexander Nyberg/Andi/Sergey: Fix x86 "clear_cpu()" macro. +# +diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h +--- a/include/asm-i386/i387.h 2004-06-16 11:49:16 -07:00 ++++ b/include/asm-i386/i387.h 2004-06-16 11:49:16 -07:00 +@@ -34,7 +34,7 @@ + + #define clear_fpu( tsk ) do { \ + if ( tsk->flags & PF_USEDFPU ) { \ +- asm volatile("fwait"); \ ++ asm volatile("fnclex ; fwait"); \ + tsk->flags &= ~PF_USEDFPU; \ + stts(); \ + } \ diff --git a/lustre/kernel_patches/series/2.6-suse.series b/lustre/kernel_patches/series/2.6-suse.series index c2c88f6..9c559d6 100644 --- a/lustre/kernel_patches/series/2.6-suse.series +++ b/lustre/kernel_patches/series/2.6-suse.series @@ -7,7 +7,6 @@ nfs-cifs-intent-2.6-suse.patch iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch export_symbols-2.6-suse.patch -removepage-2.6-suse.patch dev_read_only-2.6-suse.patch export-2.6-suse.patch header-guards-2.6-suse.patch diff --git a/lustre/kernel_patches/series/2.6-vanilla.series b/lustre/kernel_patches/series/2.6-vanilla.series index 5a8ca3d..82cd152 100644 --- a/lustre/kernel_patches/series/2.6-vanilla.series +++ b/lustre/kernel_patches/series/2.6-vanilla.series @@ -1,15 +1,14 @@ -uml-vanilla-2.6.6-p1.patch -uml-vanilla-2.6.6-p2.patch +uml-2.6.7-01-bb2.patch lustre_version.patch vfs_intent-2.6-vanilla.patch vfs_nointent-2.6-vanilla.patch -vfs_races-2.6-suse.patch +vfs_races-2.6-vanilla.patch ext3-wantedi-misc-2.6-suse.patch -nfs-cifs-intent-2.6-suse.patch +nfs-cifs-intent-2.6-vanilla.patch iopen-misc-2.6-suse.patch export-truncate-2.6-suse.patch export_symbols-2.6-suse.patch -removepage-2.6-vanilla.patch dev_read_only-2.6-suse.patch export-2.6-suse.patch header-guards-2.6-suse.patch +lookup_bdev_init_intent.patch diff --git a/lustre/kernel_patches/series/rh-2.4.20 b/lustre/kernel_patches/series/rh-2.4.20 index 22491a0..4093450 100644 --- a/lustre/kernel_patches/series/rh-2.4.20 +++ b/lustre/kernel_patches/series/rh-2.4.20 @@ -45,3 +45,4 @@ ext3-xattr-ptr-arith-fix.patch procfs-ndynamic-2.4.patch ext3-truncate-buffer-head.patch inode-max-readahead-2.4.24.patch +x86-fpu-crash.patch diff --git a/lustre/kernel_patches/series/suse-2.4.21-2 b/lustre/kernel_patches/series/suse-2.4.21-2 index 65339b1..0db2f07 100644 --- a/lustre/kernel_patches/series/suse-2.4.21-2 +++ b/lustre/kernel_patches/series/suse-2.4.21-2 @@ -30,4 +30,5 @@ ext3-xattr-ptr-arith-fix.patch kernel_text_address-2.4.20-vanilla.patch procfs-ndynamic-2.4.21-suse2.patch ext3-truncate-buffer-head.patch +qlogic-suse-2.4.21-2.patch loop-sync-2.4.21-suse.patch diff --git a/lustre/kernel_patches/targets/rh-2.4.target b/lustre/kernel_patches/targets/rh-2.4.target index 70af4ab..0d8d3b3 100644 --- a/lustre/kernel_patches/targets/rh-2.4.target +++ b/lustre/kernel_patches/targets/rh-2.4.target @@ -1,16 +1,15 @@ KERNEL=linux-2.4.20-31.9.tar.gz SERIES=rh-2.4.20 VERSION=2.4.20 -EXTRA_VERSION=31.9_lustre.1.2.2 +EXTRA_VERSION=31.9_lustre.1.2.4 RHBUILD=1 -BASE_ARCHS="i586" +BASE_ARCHS="i686" BIGMEM_ARCHS="" BOOT_ARCHS="" JENSEN_ARCHS="" -SMP_ARCHS="i586" +SMP_ARCHS="i686" UP_ARCHS="" -SRC_ARCHS="i586" # the modules in this kernel do not build with gcc 3 for cc in i386-redhat-linux-gcc-2.96 gcc296 gcc ; do diff --git a/lustre/kernel_patches/targets/rhel-2.4.target b/lustre/kernel_patches/targets/rhel-2.4.target new file mode 100644 index 0000000..f679d8e --- /dev/null +++ b/lustre/kernel_patches/targets/rhel-2.4.target @@ -0,0 +1,20 @@ +KERNEL=linux-2.4.21-15.0.3.EL.tar.bz2 +SERIES=chaos-2.4.21 +VERSION=2.4.21 +EXTRA_VERSION=15.0.3.EL_lustre.1.2.4 +RHBUILD=1 + +BASE_ARCHS="i686" +BIGMEM_ARCHS="" +BOOT_ARCHS="" +JENSEN_ARCHS="" +SMP_ARCHS="i686" +UP_ARCHS="" + +# the modules in this kernel do not build with gcc 3.3 or 2.96 +for cc in i386-redhat-linux-gcc-3.2.3 gcc32 gcc ; do + if which $cc >/dev/null 2>/dev/null ; then + export CC=$cc + break + fi +done diff --git a/lustre/kernel_patches/targets/suse-2.4.21-2.target b/lustre/kernel_patches/targets/suse-2.4.21-2.target index c27c3de..e82f9a0 100644 --- a/lustre/kernel_patches/targets/suse-2.4.21-2.target +++ b/lustre/kernel_patches/targets/suse-2.4.21-2.target @@ -1,7 +1,7 @@ KERNEL=linux-2.4.21-x86_64.tar.gz SERIES=suse-2.4.21-2 VERSION=2.4.21 -EXTRA_VERSION=lustre.1.2.1 +EXTRA_VERSION=lustre.1.2.4 RHBUILD=0 BASE_ARCHS="x86_64" diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index cdd3b07..5483c78 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -104,7 +104,8 @@ int client_obd_setup(struct obd_device *obddev, obd_count len, void *buf) INIT_LIST_HEAD(&cli->cl_loi_write_list); INIT_LIST_HEAD(&cli->cl_loi_read_list); spin_lock_init(&cli->cl_loi_list_lock); - cli->cl_brw_in_flight = 0; + cli->cl_r_in_flight = 0; + cli->cl_w_in_flight = 0; spin_lock_init(&cli->cl_read_rpc_hist.oh_lock); spin_lock_init(&cli->cl_write_rpc_hist.oh_lock); spin_lock_init(&cli->cl_read_page_hist.oh_lock); @@ -578,6 +579,14 @@ void target_destroy_export(struct obd_export *exp) * Recovery functions */ + +static void target_release_saved_req(struct ptlrpc_request *req) +{ + class_export_put(req->rq_export); + OBD_FREE(req->rq_reqmsg, req->rq_reqlen); + OBD_FREE(req, sizeof *req); +} + static void target_finish_recovery(struct obd_device *obd) { struct list_head *tmp, *n; @@ -601,13 +610,12 @@ static void target_finish_recovery(struct obd_device *obd) list_for_each_safe(tmp, n, &obd->obd_delayed_reply_queue) { struct ptlrpc_request *req; req = list_entry(tmp, struct ptlrpc_request, rq_list); + list_del(&req->rq_list); DEBUG_REQ(D_ERROR, req, "delayed:"); ptlrpc_reply(req); - class_export_put(req->rq_export); - list_del(&req->rq_list); - OBD_FREE(req->rq_reqmsg, req->rq_reqlen); - OBD_FREE(req, sizeof *req); + target_release_saved_req(req); } + obd->obd_recovery_end = LTIME_S(CURRENT_TIME); return; } @@ -619,6 +627,7 @@ static void abort_recovery_queue(struct obd_device *obd) list_for_each_safe(tmp, n, &obd->obd_recovery_queue) { req = list_entry(tmp, struct ptlrpc_request, rq_list); + list_del(&req->rq_list); DEBUG_REQ(D_ERROR, req, "aborted:"); req->rq_status = -ENOTCONN; req->rq_type = PTL_RPC_MSG_ERR; @@ -629,10 +638,48 @@ static void abort_recovery_queue(struct obd_device *obd) DEBUG_REQ(D_ERROR, req, "packing failed for abort-reply; skipping"); } + target_release_saved_req(req); + } +} + +/* Called from a cleanup function if the device is being cleaned up + forcefully. The exports should all have been disconnected already, + the only thing left to do is + - clear the recovery flags + - cancel the timer + - free queued requests and replies, but don't send replies + Because the obd_stopping flag is set, no new requests should be received. + +*/ +void target_cleanup_recovery(struct obd_device *obd) +{ + struct list_head *tmp, *n; + struct ptlrpc_request *req; + + spin_lock_bh(&obd->obd_processing_task_lock); + if (!obd->obd_recovering) { + spin_unlock_bh(&obd->obd_processing_task_lock); + EXIT; + return; + } + obd->obd_recovering = obd->obd_abort_recovery = 0; + target_cancel_recovery_timer(obd); + spin_unlock_bh(&obd->obd_processing_task_lock); + + + list_for_each_safe(tmp, n, &obd->obd_delayed_reply_queue) { + req = list_entry(tmp, struct ptlrpc_request, rq_list); list_del(&req->rq_list); - class_export_put(req->rq_export); - OBD_FREE(req->rq_reqmsg, req->rq_reqlen); - OBD_FREE(req, sizeof *req); + LASSERT (req->rq_reply_state); + lustre_free_reply_state(req->rq_reply_state); + target_release_saved_req(req); + } + + list_for_each_safe(tmp, n, &obd->obd_recovery_queue) { + req = list_entry(tmp, struct ptlrpc_request, rq_list); + list_del(&req->rq_list); + LASSERT (req->rq_reply_state == 0); + target_release_saved_req(req); } } diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index e87096c..ecc7d4a 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -445,12 +445,14 @@ int ldlm_server_completion_ast(struct ldlm_lock *lock, int flags, void *data) total_enqueue_wait = timeval_sub(&granted_time, &lock->l_enqueued_time); if (total_enqueue_wait / 1000000 > obd_timeout) - LDLM_ERROR(lock, "enqueue wait took %ldus", total_enqueue_wait); + LDLM_ERROR(lock, "enqueue wait took %luus", total_enqueue_wait); + down(&lock->l_resource->lr_lvb_sem); if (lock->l_resource->lr_lvb_len) { buffers = 2; size[1] = lock->l_resource->lr_lvb_len; } + up(&lock->l_resource->lr_lvb_sem); req = ptlrpc_prep_req(lock->l_export->exp_imp_reverse, LDLM_CP_CALLBACK, buffers, size, NULL); @@ -464,10 +466,14 @@ int ldlm_server_completion_ast(struct ldlm_lock *lock, int flags, void *data) ldlm_lock2desc(lock, &body->lock_desc); if (buffers == 2) { - void *lvb = lustre_msg_buf(req->rq_reqmsg, 1, - lock->l_resource->lr_lvb_len); + void *lvb; + + down(&lock->l_resource->lr_lvb_sem); + lvb = lustre_msg_buf(req->rq_reqmsg, 1, + lock->l_resource->lr_lvb_len); memcpy(lvb, lock->l_resource->lr_lvb_data, lock->l_resource->lr_lvb_len); + up(&lock->l_resource->lr_lvb_sem); } LDLM_DEBUG(lock, "server preparing completion AST (after %ldus wait)", @@ -514,7 +520,9 @@ int ldlm_server_glimpse_ast(struct ldlm_lock *lock, void *data) sizeof(body->lock_handle1)); ldlm_lock2desc(lock, &body->lock_desc); + down(&lock->l_resource->lr_lvb_sem); size = lock->l_resource->lr_lvb_len; + up(&lock->l_resource->lr_lvb_sem); req->rq_replen = lustre_msg_size(1, &size); req->rq_send_state = LUSTRE_IMP_FULL; @@ -586,10 +594,13 @@ int ldlm_handle_enqueue(struct ptlrpc_request *req, cookie = req; } else { int buffers = 1; + + down(&lock->l_resource->lr_lvb_sem); if (lock->l_resource->lr_lvb_len) { size[1] = lock->l_resource->lr_lvb_len; buffers = 2; } + up(&lock->l_resource->lr_lvb_sem); if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_LDLM_ENQUEUE_EXTENT_ERR)) GOTO(out, rc = -ENOMEM); @@ -642,12 +653,19 @@ int ldlm_handle_enqueue(struct ptlrpc_request *req, LDLM_DEBUG(lock, "server-side enqueue handler, sending reply" "(err=%d, rc=%d)", err, rc); - if (lock->l_resource->lr_lvb_len > 0 && rc == 0) { - void *lvb = lustre_msg_buf(req->rq_repmsg, 1, - lock->l_resource->lr_lvb_len); - LASSERT(lvb != NULL); - memcpy(lvb, lock->l_resource->lr_lvb_data, - lock->l_resource->lr_lvb_len); + if (rc == 0) { + down(&lock->l_resource->lr_lvb_sem); + size[1] = lock->l_resource->lr_lvb_len; + if (size[1] > 0) { + void *lvb = lustre_msg_buf(req->rq_repmsg, + 1, size[1]); + LASSERTF(lvb != NULL, "req %p, lock %p\n", + req, lock); + + memcpy(lvb, lock->l_resource->lr_lvb_data, + size[1]); + } + up(&lock->l_resource->lr_lvb_sem); } if (!err && dlm_req->lock_desc.l_resource.lr_type != LDLM_FLOCK) @@ -1498,6 +1516,7 @@ EXPORT_SYMBOL(client_obd_cleanup); EXPORT_SYMBOL(client_connect_import); EXPORT_SYMBOL(client_disconnect_export); EXPORT_SYMBOL(target_abort_recovery); +EXPORT_SYMBOL(target_cleanup_recovery); EXPORT_SYMBOL(target_handle_connect); EXPORT_SYMBOL(target_destroy_export); EXPORT_SYMBOL(target_cancel_recovery_timer); diff --git a/lustre/ldlm/ldlm_resource.c b/lustre/ldlm/ldlm_resource.c index 7118858..5105afc 100644 --- a/lustre/ldlm/ldlm_resource.c +++ b/lustre/ldlm/ldlm_resource.c @@ -526,13 +526,23 @@ ldlm_resource_get(struct ldlm_namespace *ns, struct ldlm_resource *parent, else res = NULL; - l_unlock(&ns->ns_lock); - if (create && ns->ns_lvbo && ns->ns_lvbo->lvbo_init) { - int rc = ns->ns_lvbo->lvbo_init(res); + int rc; + + /* Although this is technically a lock inversion risk (lvb_sem + * should be taken before DLM lock), this resource was just + * created, so nobody else can take the lvb_sem yet. -p */ + down(&res->lr_lvb_sem); + /* Drop the dlm lock, because lvbo_init can touch the disk */ + l_unlock(&ns->ns_lock); + OBD_FAIL_TIMEOUT(OBD_FAIL_LDLM_CREATE_RESOURCE, 2); + rc = ns->ns_lvbo->lvbo_init(res); + up(&res->lr_lvb_sem); if (rc) CERROR("lvbo_init failed for resource "LPU64": rc %d\n", name.name[0], rc); + } else { + l_unlock(&ns->ns_lock); } RETURN(res); @@ -541,7 +551,7 @@ ldlm_resource_get(struct ldlm_namespace *ns, struct ldlm_resource *parent, struct ldlm_resource *ldlm_resource_getref(struct ldlm_resource *res) { LASSERT(res != NULL); - LASSERT(res != (void *)0x5a5a5a5a); + LASSERT(res != LP_POISON); atomic_inc(&res->lr_refcount); CDEBUG(D_INFO, "getref res: %p count: %d\n", res, atomic_read(&res->lr_refcount)); @@ -557,7 +567,7 @@ int ldlm_resource_putref(struct ldlm_resource *res) CDEBUG(D_INFO, "putref res: %p count: %d\n", res, atomic_read(&res->lr_refcount) - 1); LASSERT(atomic_read(&res->lr_refcount) > 0); - LASSERT(atomic_read(&res->lr_refcount) < 0x5a5a5a5a); + LASSERT(atomic_read(&res->lr_refcount) < LI_POISON); if (atomic_dec_and_test(&res->lr_refcount)) { struct ldlm_namespace *ns = res->lr_namespace; diff --git a/lustre/liblustre/Makefile.am b/lustre/liblustre/Makefile.am index b831bd8..fe1d7d2 100644 --- a/lustre/liblustre/Makefile.am +++ b/lustre/liblustre/Makefile.am @@ -27,6 +27,20 @@ SYSIO_LIBS = $(SYSIO)/drivers/native/libsysio_native.a \ if LIBLUSTRE lib_LIBRARIES = liblustre.a noinst_LIBRARIES = libllite.a + +install-exec-hook: liblustre.so + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list=$< ; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(libLIBRARIES_INSTALL) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done +else +install-exec-hook: + endif libllite_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c llite_lib.h diff --git a/lustre/liblustre/tests/Makefile.am b/lustre/liblustre/tests/Makefile.am index 4be1935..f75fcab 100644 --- a/lustre/liblustre/tests/Makefile.am +++ b/lustre/liblustre/tests/Makefile.am @@ -11,9 +11,9 @@ noinst_LIBRARIES = libtestcommon.a def_tests = echo_test sanity recovery_small replay_single replay_ost_single if MPITESTS -bin_PROGRAMS = $(def_tests) test_lock_cancel +noinst_PROGRAMS = $(def_tests) test_lock_cancel else -bin_PROGRAMS = $(def_tests) +noinst_PROGRAMS = $(def_tests) endif endif # LIBLUSTRE diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index 910abfe..290eb46 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -59,7 +59,6 @@ static int ll_ddelete(struct dentry *de) de->d_name.len, de->d_name.name, de, de->d_parent, de->d_inode, d_unhashed(de) ? "" : "hashed,", list_empty(&de->d_subdirs) ? "" : "subdirs"); - //RETURN(de->d_flags & DCACHE_LUSTRE_INVALID); RETURN(0); } @@ -110,7 +109,7 @@ void ll_intent_release(struct lookup_intent *it) void ll_unhash_aliases(struct inode *inode) { - struct list_head *tmp, *head; + struct list_head *tmp, *head; struct ll_sb_info *sbi; ENTRY; @@ -125,21 +124,21 @@ void ll_unhash_aliases(struct inode *inode) sbi = ll_i2sbi(inode); head = &inode->i_dentry; restart: - spin_lock(&dcache_lock); - tmp = head; - while ((tmp = tmp->next) != head) { - struct dentry *dentry = list_entry(tmp, struct dentry, d_alias); - if (atomic_read(&dentry->d_count) == 0) { + spin_lock(&dcache_lock); + tmp = head; + while ((tmp = tmp->next) != head) { + struct dentry *dentry = list_entry(tmp, struct dentry, d_alias); + if (atomic_read(&dentry->d_count) == 0) { CDEBUG(D_DENTRY, "deleting dentry %*s (%p) parent %p " "inode %p\n", dentry->d_name.len, dentry->d_name.name, dentry, dentry->d_parent, dentry->d_inode); - dget_locked(dentry); - __d_drop(dentry); - spin_unlock(&dcache_lock); - dput(dentry); - goto restart; - } else if (!(dentry->d_flags & DCACHE_LUSTRE_INVALID)) { + dget_locked(dentry); + __d_drop(dentry); + spin_unlock(&dcache_lock); + dput(dentry); + goto restart; + } else if (!(dentry->d_flags & DCACHE_LUSTRE_INVALID)) { CDEBUG(D_DENTRY, "unhashing dentry %*s (%p) parent %p " "inode %p refc %d\n", dentry->d_name.len, dentry->d_name.name, dentry, dentry->d_parent, @@ -149,8 +148,8 @@ restart: hlist_add_head(&dentry->d_hash, &sbi->ll_orphan_dentry_list); } - } - spin_unlock(&dcache_lock); + } + spin_unlock(&dcache_lock); EXIT; } @@ -205,12 +204,10 @@ void ll_frob_intent(struct lookup_intent **itp, struct lookup_intent *deft) { struct lookup_intent *it = *itp; #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) - if (it && it->it_magic != INTENT_MAGIC) { - CERROR("WARNING: uninitialized intent\n"); - LBUG(); + if (it) { + LASSERTF(it->it_magic == INTENT_MAGIC, "bad intent magic: %x\n", + it->it_magic); } - if (it && (it->it_op == IT_GETATTR || it->it_op == 0)) - it->it_op = IT_LOOKUP; #endif if (!it || it->it_op == IT_GETXATTR) diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index 7b9eef7..132f7ab 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -201,7 +201,6 @@ Eend: fail: SetPageChecked(page); SetPageError(page); - LBUG(); } static struct page *ll_get_dir_page(struct inode *dir, unsigned long n) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 8498bea..fec8e34 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -178,11 +178,10 @@ int ll_local_open(struct file *file, struct lookup_intent *it) int ll_file_open(struct inode *inode, struct file *file) { struct ll_inode_info *lli = ll_i2info(inode); - struct lookup_intent *it; + struct lookup_intent *it, oit = { .it_op = IT_OPEN, + .it_flags = file->f_flags }; struct lov_stripe_md *lsm; struct ptlrpc_request *req; - struct lookup_intent oit = { .it_op = IT_OPEN, - .it_flags = file->f_flags }; int rc = 0; ENTRY; @@ -414,6 +413,7 @@ void ll_pgcache_remove_extent(struct inode *inode, struct lov_stripe_md *lsm, if (rc2 == 0 && page->mapping != NULL) { // checking again to account for writeback's lock_page() LL_CDEBUG_PAGE(D_PAGE, page, "truncating\n"); + ll_ra_accounting(page, inode->i_mapping); ll_truncate_complete_page(page); } unlock_page(page); @@ -614,6 +614,8 @@ int ll_glimpse_size(struct inode *inode) LCK_PR, &flags, ll_extent_lock_callback, ldlm_completion_ast, ll_glimpse_callback, inode, sizeof(struct ost_lvb), lustre_swab_ost_lvb, &lockh); + if (rc == -ENOENT) + RETURN(rc); if (rc != 0) { CERROR("obd_enqueue returned rc %d, returning -EIO\n", rc); RETURN(rc > 0 ? -EIO : rc); @@ -740,8 +742,8 @@ static ssize_t ll_file_read(struct file *filp, char *buf, size_t count, inode->i_size = kms; } - CDEBUG(D_PAGE,"ino %lu count %lu offset %llu i_size %llu kms "LPU64"\n", - inode->i_ino, (long)count, *ppos, inode->i_size, kms); + CDEBUG(D_INFO, "Read ino %lu, "LPSZ" bytes, offset %lld, i_size %llu\n", + inode->i_ino, count, *ppos, inode->i_size); /* turn off the kernel's read-ahead */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) @@ -768,8 +770,8 @@ static ssize_t ll_file_write(struct file *file, const char *buf, size_t count, struct lustre_handle lockh = { 0 }; ldlm_policy_data_t policy; loff_t maxbytes = ll_file_maxbytes(inode); - int rc; ssize_t retval; + int rc; ENTRY; CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),size="LPSZ",offset=%Ld\n", inode->i_ino, inode->i_generation, inode, count, *ppos); @@ -848,26 +850,19 @@ static int ll_lov_recreate_obj(struct inode *inode, struct file *file, RETURN(-EFAULT); } oa = obdo_alloc(); - if (oa == NULL) { + if (oa == NULL) RETURN(-ENOMEM); - } down(&lli->lli_open_sem); lsm = lli->lli_smd; - if (lsm == NULL) { - up(&lli->lli_open_sem); - obdo_free(oa); - RETURN (-ENOENT); - } + if (lsm == NULL) + GOTO(out, rc = -ENOENT); lsm_size = sizeof(*lsm) + (sizeof(struct lov_oinfo) * (lsm->lsm_stripe_count)); OBD_ALLOC(lsm2, lsm_size); - if (lsm2 == NULL) { - up(&lli->lli_open_sem); - obdo_free(oa); - RETURN(-ENOMEM); - } + if (lsm2 == NULL) + GOTO(out, rc = -ENOMEM); oa->o_id = ucreatp.lrc_id; oa->o_nlink = ucreatp.lrc_ost_idx; @@ -880,10 +875,12 @@ static int ll_lov_recreate_obj(struct inode *inode, struct file *file, memcpy(lsm2, lsm, lsm_size); rc = obd_create(exp, oa, &lsm2, &oti); - up(&lli->lli_open_sem); OBD_FREE(lsm2, lsm_size); + GOTO(out, rc); +out: + up(&lli->lli_open_sem); obdo_free(oa); - RETURN (rc); + return rc; } static int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file, @@ -1072,9 +1069,10 @@ loff_t ll_file_seek(struct file *file, loff_t offset, int origin) struct lustre_handle lockh = {0}; loff_t retval; ENTRY; - CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),to=%llu\n", inode->i_ino, - inode->i_generation, inode, - offset + ((origin==2) ? inode->i_size : file->f_pos)); + CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),to=%llu(%s)\n", + inode->i_ino, inode->i_generation, inode, + offset + ((origin==2) ? inode->i_size : file->f_pos), + origin == 2 ? "SEEK_END": origin == 1 ? "SEEK_CUR": "SEEK_SET"); lprocfs_counter_incr(ll_i2sbi(inode)->ll_stats, LPROC_LL_LLSEEK); if (origin == 2) { /* SEEK_END */ diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index 2ef66ad..c4b3f87 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -10,27 +10,43 @@ #ifndef LLITE_INTERNAL_H #define LLITE_INTERNAL_H +/* default to about 40meg of readahead on a given system. That much tied + * up in 512k readahead requests serviced at 40ms each is about 1GB/s. */ +#define SBI_DEFAULT_RA_MAX ((40 << 20) >> PAGE_CACHE_SHIFT) +enum ra_stat { + RA_STAT_HIT = 0, + RA_STAT_MISS, + RA_STAT_DISTANT_READPAGE, + RA_STAT_MISS_IN_WINDOW, + RA_STAT_FAILED_MATCH, + RA_STAT_DISCARDED, + RA_STAT_ZERO_LEN, + RA_STAT_ZERO_WINDOW, + RA_STAT_EOF, + RA_STAT_MAX_IN_FLIGHT, + _NR_RA_STAT, +}; + +struct ll_ra_info { + unsigned long ra_cur_pages; + unsigned long ra_max_pages; + unsigned long ra_stats[_NR_RA_STAT]; +}; + struct ll_sb_info { + /* this protects pglist and ra_info. It isn't safe to + * grab from interrupt contexts */ + spinlock_t ll_lock; struct obd_uuid ll_sb_uuid; -// struct lustre_handle ll_mdc_conn; struct obd_export *ll_mdc_exp; struct obd_export *ll_osc_exp; struct proc_dir_entry* ll_proc_root; obd_id ll_rootino; /* number of root inode */ - struct obd_uuid ll_mds_uuid; - struct obd_uuid ll_mds_peer_uuid; struct lustre_mount_data *ll_lmd; char *ll_instance; int ll_flags; - wait_queue_head_t ll_commitcbd_waitq; - wait_queue_head_t ll_commitcbd_ctl_waitq; - int ll_commitcbd_flags; - struct task_struct *ll_commitcbd_thread; - time_t ll_commitcbd_waketime; - time_t ll_commitcbd_timeout; - spinlock_t ll_commitcbd_lock; struct list_head ll_conn_chain; /* per-conn chain of SBs */ struct hlist_head ll_orphan_dentry_list; /*please don't ask -p*/ @@ -38,14 +54,18 @@ struct ll_sb_info { struct lprocfs_stats *ll_stats; /* lprocfs stats counter */ - spinlock_t ll_pglist_lock; unsigned long ll_pglist_gen; struct list_head ll_pglist; + + struct ll_ra_info ll_ra_info; }; struct ll_readahead_state { spinlock_t ras_lock; - unsigned long ras_last, ras_window, ras_next_index; + unsigned long ras_last_readpage, ras_consecutive; + unsigned long ras_window_start, ras_window_len; + unsigned long ras_next_readahead; + }; extern kmem_cache_t *ll_file_data_slab; @@ -110,8 +130,9 @@ struct ll_async_page { struct page *llap_page; struct list_head llap_pending_write; /* only trust these if the page lock is providing exclusion */ - int llap_write_queued:1, - llap_defer_uptodate:1; + unsigned llap_write_queued:1, + llap_defer_uptodate:1, + llap_ra_used:1; struct list_head llap_proc_item; }; @@ -147,13 +168,12 @@ int ll_commit_write(struct file *, struct page *, unsigned from, unsigned to); void ll_inode_fill_obdo(struct inode *inode, int cmd, struct obdo *oa); void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc); void ll_removepage(struct page *page); -int ll_sync_page(struct page *page); int ll_readpage(struct file *file, struct page *page); struct ll_async_page *llap_from_cookie(void *cookie); struct ll_async_page *llap_from_page(struct page *page); struct ll_async_page *llap_cast_private(struct page *page); void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras); - +void ll_ra_accounting(struct page *page, struct address_space *mapping); void ll_truncate(struct inode *inode); /* llite/file.c */ @@ -248,9 +268,6 @@ void ll_queue_done_writing(struct inode *inode); void ll_close_thread_shutdown(struct ll_close_queue *lcq); int ll_close_thread_start(struct ll_close_queue **lcq_ret); -/* generic */ -#define LL_SUPER_MAGIC 0x0BD00BD0 - #define LL_SBI_NOLCK 0x1 #define LL_SBI_READAHEAD 0x2 diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 13a2f9b..901985a 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -53,9 +53,10 @@ struct ll_sb_info *lustre_init_sbi(struct super_block *sb) if (!sbi) RETURN(NULL); - spin_lock_init(&sbi->ll_pglist_lock); + spin_lock_init(&sbi->ll_lock); INIT_LIST_HEAD(&sbi->ll_pglist); sbi->ll_pglist_gen = 0; + sbi->ll_ra_info.ra_max_pages = SBI_DEFAULT_RA_MAX; INIT_LIST_HEAD(&sbi->ll_conn_chain); INIT_HLIST_HEAD(&sbi->ll_orphan_dentry_list); ll_s2sbi(sb) = sbi; diff --git a/lustre/llite/llite_nfs.c b/lustre/llite/llite_nfs.c index 93638fd..1bbe9c7 100644 --- a/lustre/llite/llite_nfs.c +++ b/lustre/llite/llite_nfs.c @@ -115,7 +115,7 @@ static struct dentry *ll_iget_for_nfs(struct super_block *sb, unsigned long ino, result = list_entry(lp,struct dentry, d_alias); if (!(result->d_flags & DCACHE_DISCONNECTED)) { dget_locked(result); - result->d_vfs_flags |= DCACHE_REFERENCED; + ll_set_dflags(result, DCACHE_REFERENCED); spin_unlock(&dcache_lock); iput(inode); return result; diff --git a/lustre/llite/lproc_llite.c b/lustre/llite/lproc_llite.c index e9a3e39..41c3ea5 100644 --- a/lustre/llite/lproc_llite.c +++ b/lustre/llite/lproc_llite.c @@ -32,6 +32,7 @@ /* /proc/lustre/llite mount point registration */ struct proc_dir_entry *proc_lustre_fs_root; struct file_operations llite_dump_pgcache_fops; +struct file_operations ll_ra_stats_fops; #ifndef LPROCFS int lprocfs_register_mountpoint(struct proc_dir_entry *parent, @@ -203,7 +204,7 @@ static int ll_wr_read_ahead(struct file *file, const char *buffer, int readahead; ENTRY; - if (1 != sscanf(buffer, "%d", &readahead)) + if (sscanf(buffer, "%d", &readahead) != 1) RETURN(-EINVAL); if (readahead) @@ -214,6 +215,41 @@ static int ll_wr_read_ahead(struct file *file, const char *buffer, RETURN(count); } +static int ll_rd_max_read_ahead_mb(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct super_block *sb = data; + struct ll_sb_info *sbi = ll_s2sbi(sb); + unsigned val; + + spin_lock(&sbi->ll_lock); + val = (sbi->ll_ra_info.ra_max_pages << PAGE_CACHE_SHIFT) >> 20; + spin_unlock(&sbi->ll_lock); + + return snprintf(page, count, "%u\n", val); +} + +static int ll_wr_max_read_ahead_mb(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct super_block *sb = data; + struct ll_sb_info *sbi = ll_s2sbi(sb); + int val, rc; + + rc = lprocfs_write_helper(buffer, count, &val); + if (rc) + return rc; + + if (val < 0 || val > (num_physpages << PAGE_SHIFT) >> 20) + return -ERANGE; + + spin_lock(&sbi->ll_lock); + sbi->ll_ra_info.ra_max_pages = (val << 20) >> PAGE_CACHE_SHIFT; + spin_unlock(&sbi->ll_lock); + + return count; +} + static struct lprocfs_vars lprocfs_obd_vars[] = { { "uuid", ll_rd_sb_uuid, 0, 0 }, //{ "mntpt_path", ll_rd_path, 0, 0 }, @@ -226,6 +262,8 @@ static struct lprocfs_vars lprocfs_obd_vars[] = { { "filesfree", ll_rd_filesfree, 0, 0 }, //{ "filegroups", lprocfs_rd_filegroups, 0, 0 }, { "read_ahead", ll_rd_read_ahead, ll_wr_read_ahead, 0 }, + { "max_read_ahead_mb", ll_rd_max_read_ahead_mb, + ll_wr_max_read_ahead_mb, 0 }, { 0 } }; @@ -318,6 +356,12 @@ int lprocfs_register_mountpoint(struct proc_dir_entry *parent, entry->proc_fops = &llite_dump_pgcache_fops; entry->data = sbi; + entry = create_proc_entry("read_ahead_stats", 0444, sbi->ll_proc_root); + if (entry == NULL) + GOTO(out, err = -ENOMEM); + entry->proc_fops = &ll_ra_stats_fops; + entry->data = sbi; + svc_stats = lprocfs_alloc_stats(LPROC_LL_FILE_OPCODES); if (svc_stats == NULL) { err = -ENOMEM; @@ -455,7 +499,7 @@ static int llite_dump_pgcache_seq_show(struct seq_file *seq, void *v) return 0; } - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); llap = llite_pglist_next_llap(sbi, &dummy_llap->llap_proc_item); if (llap != NULL) { @@ -478,7 +522,7 @@ static int llite_dump_pgcache_seq_show(struct seq_file *seq, void *v) seq_puts(seq, "]\n"); } - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); return 0; } @@ -508,14 +552,14 @@ static void *llite_dump_pgcache_seq_next(struct seq_file *seq, void *v, /* we've just displayed the llap that is after us in the list. * we advance to a position beyond it, returning null if there * isn't another llap in the list beyond that new position. */ - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); llap = llite_pglist_next_llap(sbi, &dummy_llap->llap_proc_item); list_del_init(&dummy_llap->llap_proc_item); if (llap) { list_add(&dummy_llap->llap_proc_item, &llap->llap_proc_item); llap = llite_pglist_next_llap(sbi, &dummy_llap->llap_proc_item); } - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); ++*pos; if (llap == NULL) { @@ -570,9 +614,9 @@ static int llite_dump_pgcache_seq_open(struct inode *inode, struct file *file) seq = file->private_data; seq->private = llap; - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); list_add(&llap->llap_proc_item, &sbi->ll_pglist); - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); return 0; } @@ -584,10 +628,10 @@ static int llite_dump_pgcache_seq_release(struct inode *inode, struct ll_async_page *llap = seq->private; struct ll_sb_info *sbi = llap->llap_cookie; - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); if (!list_empty(&llap->llap_proc_item)) list_del_init(&llap->llap_proc_item); - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); OBD_FREE(llap, sizeof(*llap)); return seq_release(inode, file); @@ -600,4 +644,99 @@ struct file_operations llite_dump_pgcache_fops = { .release = llite_dump_pgcache_seq_release, }; +static int ll_ra_stats_seq_show(struct seq_file *seq, void *v) +{ + struct timeval now; + struct ll_sb_info *sbi = seq->private; + struct ll_ra_info *ra = &sbi->ll_ra_info; + int i; + static char *ra_stat_strings[] = { + [RA_STAT_HIT] = "hits", + [RA_STAT_MISS] = "misses", + [RA_STAT_DISTANT_READPAGE] = "readpage not consecutive", + [RA_STAT_MISS_IN_WINDOW] = "miss inside window", + [RA_STAT_FAILED_MATCH] = "failed lock match", + [RA_STAT_DISCARDED] = "read but discarded", + [RA_STAT_ZERO_LEN] = "zero length file", + [RA_STAT_ZERO_WINDOW] = "zero size window", + [RA_STAT_EOF] = "read-ahead to EOF", + [RA_STAT_MAX_IN_FLIGHT] = "hit max r-a issue", + }; + + do_gettimeofday(&now); + + spin_lock(&sbi->ll_lock); + + seq_printf(seq, "snapshot_time: %lu:%lu (secs:usecs)\n", + now.tv_sec, now.tv_usec); + seq_printf(seq, "pending issued pages: %lu\n", + ra->ra_cur_pages); + + for(i = 0; i < _NR_RA_STAT; i++) + seq_printf(seq, "%-25s %lu\n", ra_stat_strings[i], + ra->ra_stats[i]); + + spin_unlock(&sbi->ll_lock); + + return 0; +} + +static void *ll_ra_stats_seq_start(struct seq_file *p, loff_t *pos) +{ + if (*pos == 0) + return (void *)1; + return NULL; +} +static void *ll_ra_stats_seq_next(struct seq_file *p, void *v, loff_t *pos) +{ + ++*pos; + return NULL; +} +static void ll_ra_stats_seq_stop(struct seq_file *p, void *v) +{ +} +struct seq_operations ll_ra_stats_seq_sops = { + .start = ll_ra_stats_seq_start, + .stop = ll_ra_stats_seq_stop, + .next = ll_ra_stats_seq_next, + .show = ll_ra_stats_seq_show, +}; + +static int ll_ra_stats_seq_open(struct inode *inode, struct file *file) +{ + struct proc_dir_entry *dp = PDE(inode); + struct seq_file *seq; + int rc; + + rc = seq_open(file, &ll_ra_stats_seq_sops); + if (rc) + return rc; + seq = file->private_data; + seq->private = dp->data; + return 0; +} + +static ssize_t ll_ra_stats_seq_write(struct file *file, const char *buf, + size_t len, loff_t *off) +{ + struct seq_file *seq = file->private_data; + struct ll_sb_info *sbi = seq->private; + struct ll_ra_info *ra = &sbi->ll_ra_info; + + spin_lock(&sbi->ll_lock); + memset(ra->ra_stats, 0, sizeof(ra->ra_stats)); + spin_unlock(&sbi->ll_lock); + + return len; +} + +struct file_operations ll_ra_stats_fops = { + .owner = THIS_MODULE, + .open = ll_ra_stats_seq_open, + .read = seq_read, + .write = ll_ra_stats_seq_write, + .llseek = seq_lseek, + .release = seq_release, +}; + #endif /* LPROCFS */ diff --git a/lustre/llite/namei.c b/lustre/llite/namei.c index 4bd90e2..e0bfe21 100644 --- a/lustre/llite/namei.c +++ b/lustre/llite/namei.c @@ -168,8 +168,8 @@ int ll_mdc_blocking_ast(struct ldlm_lock *lock, struct ldlm_lock_desc *desc, if (lock->l_resource->lr_name.name[0] != inode->i_ino || lock->l_resource->lr_name.name[1] != inode->i_generation) { - LDLM_ERROR(lock, "data mismatch with ino %lu/%u", - inode->i_ino, inode->i_generation); + LDLM_ERROR(lock, "data mismatch with ino %lu/%u (%p)", + inode->i_ino, inode->i_generation, inode); } if (S_ISDIR(inode->i_mode)) { CDEBUG(D_INODE, "invalidating inode %lu\n", diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index d94ad24..4e09d2f 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -228,8 +228,7 @@ static int ll_ap_make_ready(void *data, int cmd) page = llap->llap_page; - if (cmd == OBD_BRW_READ) - RETURN(0); + LASSERT(cmd != OBD_BRW_READ); /* we're trying to write, but the page is locked.. come back later */ if (TryLockPage(page)) @@ -249,15 +248,15 @@ static int ll_ap_make_ready(void *data, int cmd) RETURN(0); } -/* We have two reasons for giving llite the opportunity to change the +/* We have two reasons for giving llite the opportunity to change the * write length of a given queued page as it builds the RPC containing - * the page: + * the page: * * 1) Further extending writes may have landed in the page cache * since a partial write first queued this page requiring us * to write more from the page cache. * 2) We might have raced with truncate and want to avoid performing - * write RPCs that are just going to be thrown away by the + * write RPCs that are just going to be thrown away by the * truncate's punch on the storage targets. * * The kms serves these purposes as it is set at both truncate and extending @@ -380,13 +379,13 @@ struct ll_async_page *llap_from_page(struct page *page) CDEBUG(D_CACHE, "llap %p page %p cookie %p obj off "LPU64"\n", llap, page, llap->llap_cookie, (obd_off)page->index << PAGE_SHIFT); /* also zeroing the PRIVBITS low order bitflags */ - page->private = (unsigned long)llap; + __set_page_ll_data(page, llap); llap->llap_page = page; - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); sbi->ll_pglist_gen++; list_add_tail(&llap->llap_proc_item, &sbi->ll_pglist); - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); RETURN(llap); } @@ -483,6 +482,30 @@ out: RETURN(rc); } +static unsigned long ll_ra_count_get(struct ll_sb_info *sbi, unsigned long len) +{ + struct ll_ra_info *ra = &sbi->ll_ra_info; + unsigned long ret; + ENTRY; + + spin_lock(&sbi->ll_lock); + ret = min(ra->ra_max_pages - ra->ra_cur_pages, len); + ra->ra_cur_pages += ret; + spin_unlock(&sbi->ll_lock); + + RETURN(ret); +} + +static void ll_ra_count_put(struct ll_sb_info *sbi, unsigned long len) +{ + struct ll_ra_info *ra = &sbi->ll_ra_info; + spin_lock(&sbi->ll_lock); + LASSERTF(ra->ra_cur_pages >= len, "r_c_p %lu len %lu\n", + ra->ra_cur_pages, len); + ra->ra_cur_pages -= len; + spin_unlock(&sbi->ll_lock); +} + /* called for each page in a completed rpc.*/ void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc) { @@ -501,6 +524,9 @@ void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc) LL_CDEBUG_PAGE(D_PAGE, page, "completing cmd %d with %d\n", cmd, rc); + if (cmd == OBD_BRW_READ && llap->llap_defer_uptodate) + ll_ra_count_put(ll_i2sbi(page->mapping->host), 1); + if (rc == 0) { if (cmd == OBD_BRW_READ) { if (!llap->llap_defer_uptodate) @@ -515,7 +541,6 @@ void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc) SetPageError(page); } - unlock_page(page); if (0 && cmd == OBD_BRW_WRITE) { @@ -523,6 +548,9 @@ void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc) ll_try_done_writing(page->mapping->host); } + if (PageWriteback(page)) { + end_page_writeback(page); + } page_cache_release(page); EXIT; } @@ -574,13 +602,13 @@ void ll_removepage(struct page *page) /* this unconditional free is only safe because the page lock * is providing exclusivity to memory pressure/truncate/writeback..*/ - page->private = 0; + __clear_page_ll_data(page); - spin_lock(&sbi->ll_pglist_lock); + spin_lock(&sbi->ll_lock); if (!list_empty(&llap->llap_proc_item)) list_del_init(&llap->llap_proc_item); sbi->ll_pglist_gen++; - spin_unlock(&sbi->ll_pglist_lock); + spin_unlock(&sbi->ll_lock); OBD_FREE(llap, sizeof(*llap)); EXIT; } @@ -613,9 +641,11 @@ static int ll_issue_page_read(struct obd_export *exp, page_cache_get(page); llap->llap_defer_uptodate = defer; + llap->llap_ra_used = 0; rc = obd_queue_group_io(exp, ll_i2info(page->mapping->host)->lli_smd, NULL, oig, llap->llap_cookie, OBD_BRW_READ, 0, - PAGE_SIZE, 0, ASYNC_COUNT_STABLE); + PAGE_SIZE, 0, ASYNC_COUNT_STABLE | ASYNC_READY + | ASYNC_URGENT); if (rc) { LL_CDEBUG_PAGE(D_ERROR, page, "read queue failed: rc %d\n", rc); page_cache_release(page); @@ -623,171 +653,246 @@ static int ll_issue_page_read(struct obd_export *exp, RETURN(rc); } -#define LL_RA_MIN(inode) ((unsigned long)PTLRPC_MAX_BRW_PAGES / 2) -#define LL_RA_MAX(inode) ((ll_i2info(inode)->lli_smd->lsm_xfersize * 3) >> \ - PAGE_CACHE_SHIFT) +static void ll_ra_stats_inc_unlocked(struct ll_ra_info *ra, enum ra_stat which) +{ + LASSERTF(which >= 0 && which < _NR_RA_STAT, "which: %u\n", which); + ra->ra_stats[which]++; +} + +static void ll_ra_stats_inc(struct address_space *mapping, enum ra_stat which) +{ + struct ll_sb_info *sbi = ll_i2sbi(mapping->host); + struct ll_ra_info *ra = &ll_i2sbi(mapping->host)->ll_ra_info; -static void ll_readahead(struct ll_readahead_state *ras, - struct obd_export *exp, struct address_space *mapping, - struct obd_io_group *oig) + spin_lock(&sbi->ll_lock); + ll_ra_stats_inc_unlocked(ra, which); + spin_unlock(&sbi->ll_lock); +} + +void ll_ra_accounting(struct page *page, struct address_space *mapping) { - unsigned long i, start, end; struct ll_async_page *llap; - struct page *page; - int rc; - if (mapping->host->i_size == 0) + llap = llap_from_page(page); + if (IS_ERR(llap)) return; - spin_lock(&ras->ras_lock); + if (!llap->llap_defer_uptodate || llap->llap_ra_used) + return; + + ll_ra_stats_inc(mapping, RA_STAT_DISCARDED); +} + +#define RAS_CDEBUG(ras) \ + CDEBUG(D_READA, "lrp %lu c %lu ws %lu wl %lu nra %lu\n", \ + ras->ras_last_readpage, ras->ras_consecutive, \ + ras->ras_window_start, ras->ras_window_len, \ + ras->ras_next_readahead); + +static int index_in_window(unsigned long index, unsigned long point, + unsigned long before, unsigned long after) +{ + unsigned long start = point - before, end = point + after; + + if (start > point) + start = 0; + if (end < point) + end = ~0; - /* make sure to issue a window's worth of read-ahead pages */ - end = ras->ras_last; - start = end - ras->ras_window; - if (start > end) - start = 0; + return start <= index && index <= end; +} - /* but don't iterate over pages that we've already issued. this - * will set start to end + 1 if we've already read-ahead up to - * ras_last sothe for() won't be entered */ - if (ras->ras_next_index > start) - start = ras->ras_next_index; - if (end != ~0UL) - ras->ras_next_index = end + 1; +static int ll_readahead(struct ll_readahead_state *ras, + struct obd_export *exp, struct address_space *mapping, + struct obd_io_group *oig, int flags) +{ + unsigned long i, start = 0, end = 0, reserved; + struct ll_async_page *llap; + struct page *page; + int rc, ret = 0, match_failed = 0; + __u64 kms; + ENTRY; - CDEBUG(D_READA, "ni %lu last %lu win %lu: reading from %lu to %lu\n", - ras->ras_next_index, ras->ras_last, ras->ras_window, - start, end); + kms = lov_merge_size(ll_i2info(mapping->host)->lli_smd, 1); + if (kms == 0) { + ll_ra_stats_inc(mapping, RA_STAT_ZERO_LEN); + RETURN(0); + } + spin_lock(&ras->ras_lock); + /* reserve a part of the read-ahead window that we'll be issuing */ + if (ras->ras_window_len) { + start = ras->ras_next_readahead; + end = ras->ras_window_start + ras->ras_window_len - 1; + end = min(end, (unsigned long)(kms >> PAGE_CACHE_SHIFT)); + ras->ras_next_readahead = max(end, end + 1); + + RAS_CDEBUG(ras); + } spin_unlock(&ras->ras_lock); - /* clamp to filesize */ - i = (mapping->host->i_size - 1) >> PAGE_CACHE_SHIFT; - end = min(end, i); + if (end == 0) { + ll_ra_stats_inc(mapping, RA_STAT_ZERO_WINDOW); + RETURN(0); + } + + reserved = ll_ra_count_get(ll_i2sbi(mapping->host), end - start + 1); + if (reserved < end - start + 1) + ll_ra_stats_inc(mapping, RA_STAT_MAX_IN_FLIGHT); - for (i = start; i <= end; i++) { - /* grab_cache_page_nowait returns null if this races with - * truncating the page (page->mapping == NULL) */ + for (i = start; reserved > 0 && !match_failed && i <= end; i++) { + /* skip locked pages from previous readpage calls */ page = grab_cache_page_nowait(mapping, i); - if (page == NULL) - break; + if (page == NULL) { + CDEBUG(D_READA, "g_c_p_n failed\n"); + continue; + } + + /* we do this first so that we can see the page in the /proc + * accounting */ + llap = llap_from_page(page); + if (IS_ERR(llap) || llap->llap_defer_uptodate) + goto next_page; - /* the book-keeping above promises that we've tried - * all the indices from start to end, so we don't - * stop if anyone returns an error. This may not be good. */ + /* skip completed pages */ if (Page_Uptodate(page)) goto next_page; + /* bail when we hit the end of the lock. */ if ((rc = ll_page_matches(page)) <= 0) { LL_CDEBUG_PAGE(D_READA | D_PAGE, page, "lock match failed: rc %d\n", rc); + ll_ra_stats_inc(mapping, RA_STAT_FAILED_MATCH); + match_failed = 1; goto next_page; } - llap = llap_from_page(page); - if (IS_ERR(llap) || llap->llap_defer_uptodate) - goto next_page; - rc = ll_issue_page_read(exp, llap, oig, 1); - if (rc == 0) - LL_CDEBUG_PAGE(D_PAGE, page, "started read-ahead\n"); + if (rc == 0) { + reserved--; + ret++; + LL_CDEBUG_PAGE(D_READA| D_PAGE, page, + "started read-ahead\n"); + } if (rc) { next_page: - LL_CDEBUG_PAGE(D_PAGE, page, "skipping read-ahead\n"); + LL_CDEBUG_PAGE(D_READA | D_PAGE, page, + "skipping read-ahead\n"); unlock_page(page); } page_cache_release(page); } + + LASSERTF(reserved >= 0, "reserved %lu\n", reserved); + if (reserved != 0) + ll_ra_count_put(ll_i2sbi(mapping->host), reserved); + if (i == end + 1 && end == (kms >> PAGE_CACHE_SHIFT)) + ll_ra_stats_inc(mapping, RA_STAT_EOF); + + /* if we didn't get to the end of the region we reserved from + * the ras we need to go back and update the ras so that the + * next read-ahead tries from where we left off. we only do so + * if the region we failed to issue read-ahead on is still ahead + * of the app and behind the next index to start read-ahead from */ + if (i != end + 1) { + spin_lock(&ras->ras_lock); + if (i < ras->ras_next_readahead && + index_in_window(i, ras->ras_window_start, 0, + ras->ras_window_len)) { + ras->ras_next_readahead = i; + RAS_CDEBUG(ras); + } + spin_unlock(&ras->ras_lock); + } + + RETURN(ret); +} + +static void ras_set_start(struct ll_readahead_state *ras, unsigned long index) +{ + ras->ras_window_start = index & (~(PTLRPC_MAX_BRW_PAGES - 1)); } /* called with the ras_lock held or from places where it doesn't matter */ -static void ll_readahead_set(struct inode *inode, - struct ll_readahead_state *ras, - unsigned long index) +static void ras_reset(struct ll_readahead_state *ras, unsigned long index) { - ras->ras_next_index = index; - if (ras->ras_next_index != ~0UL) - ras->ras_next_index++; - ras->ras_window = LL_RA_MIN(inode); - ras->ras_last = ras->ras_next_index + ras->ras_window; - if (ras->ras_last < ras->ras_next_index) - ras->ras_last = ~0UL; - CDEBUG(D_READA, "ni %lu last %lu win %lu: set %lu\n", - ras->ras_next_index, ras->ras_last, ras->ras_window, - index); + ras->ras_last_readpage = index; + ras->ras_consecutive = 1; + ras->ras_window_len = 0; + ras_set_start(ras, index); + ras->ras_next_readahead = ras->ras_window_start; + + RAS_CDEBUG(ras); } void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras) { spin_lock_init(&ras->ras_lock); - ll_readahead_set(inode, ras, 0); + ras_reset(ras, 0); } -static void ll_readahead_update(struct inode *inode, - struct ll_readahead_state *ras, - unsigned long index, int hit) +static void ras_update(struct ll_sb_info *sbi, struct ll_readahead_state *ras, + unsigned long index, unsigned hit) { - unsigned long issued_start, new_last; + struct ll_ra_info *ra = &sbi->ll_ra_info; + int zero = 0; + ENTRY; + spin_lock(&sbi->ll_lock); spin_lock(&ras->ras_lock); - /* we're interested in noticing the index's relation to the - * previously issued read-ahead pages */ - issued_start = ras->ras_next_index - ras->ras_window - 1; - if (issued_start > ras->ras_next_index) - issued_start = 0; - - CDEBUG(D_READA, "ni %lu last %lu win %lu: %s ind %lu start %lu\n", - ras->ras_next_index, ras->ras_last, ras->ras_window, - hit ? "hit" : "miss", index, issued_start); - if (!hit && - index == ras->ras_next_index && index == ras->ras_last + 1) { - /* special case the kernel's read-ahead running into the - * page just beyond our read-ahead window as an extension - * of our read-ahead. sigh. wishing it was easier to - * turn off 2.4's read-ahead. */ - ras->ras_window = min(LL_RA_MAX(inode), ras->ras_window + 1); - if (index != ~0UL) - ras->ras_next_index = index + 1; - ras->ras_last = index; - } else if (!hit && - (index > issued_start || ras->ras_next_index >= index)) { - /* deal with a miss way out of the window. we interpret - * this as a seek and restart the window */ - ll_readahead_set(inode, ras, index); - - } else if (!hit && - issued_start <= index && index < ras->ras_next_index) { - /* a miss inside the window? surely its memory pressure - * evicting our read pages before the app can see them. - * we shrink the window aggressively */ - unsigned long old_window = ras->ras_window; - - ras->ras_window = max(ras->ras_window / 2, LL_RA_MIN(inode)); - ras->ras_last -= old_window - ras->ras_window; - if (ras->ras_next_index > ras->ras_last) - ras->ras_next_index = ras->ras_last + 1; - CDEBUG(D_READA, "ni %lu last %lu win %lu: miss inside\n", - ras->ras_next_index, ras->ras_last, ras->ras_window); - - } else if (hit && - issued_start <= index && index < ras->ras_next_index) { - /* a hit inside the window. grow the window by twice the - * number of pages that are satisified within the window. */ - ras->ras_window = min(LL_RA_MAX(inode), ras->ras_window + 2); - - /* we want the next readahead pass to issue a windows worth - * beyond where the app currently is */ - new_last = index + ras->ras_window; - if (new_last > ras->ras_last) - ras->ras_last = new_last; - - CDEBUG(D_READA, "ni %lu last %lu win %lu: extended window/last\n", - ras->ras_next_index, ras->ras_last, ras->ras_window); + ll_ra_stats_inc_unlocked(ra, hit ? RA_STAT_HIT : RA_STAT_MISS); + + /* reset the read-ahead window in two cases. First when the app seeks + * or reads to some other part of the file. Secondly if we get a + * read-ahead miss that we think we've previously issued. This can + * be a symptom of there being so many read-ahead pages that the VM is + * reclaiming it before we get to it. */ + if (!index_in_window(index, ras->ras_last_readpage, 8, 8)) { + zero = 1; + ll_ra_stats_inc_unlocked(ra, RA_STAT_DISTANT_READPAGE); + } else if (!hit && ras->ras_window_len && + index < ras->ras_next_readahead && + index_in_window(index, ras->ras_window_start, 0, + ras->ras_window_len)) { + zero = 1; + ll_ra_stats_inc_unlocked(ra, RA_STAT_MISS_IN_WINDOW); + } + + if (zero) { + ras_reset(ras, index); + GOTO(out_unlock, 0); + } + + ras->ras_last_readpage = index; + ras->ras_consecutive++; + ras_set_start(ras, index); + ras->ras_next_readahead = max(ras->ras_window_start, + ras->ras_next_readahead); + + /* wait for a few pages to arrive before issuing readahead to avoid + * the worst overutilization */ + if (ras->ras_consecutive == 3) { + ras->ras_window_len = PTLRPC_MAX_BRW_PAGES; + GOTO(out_unlock, 0); } + /* we need to increase the window sometimes. we'll arbitrarily + * do it half-way through the pages in an rpc */ + if ((index & (PTLRPC_MAX_BRW_PAGES - 1)) == + (PTLRPC_MAX_BRW_PAGES >> 1)) { + ras->ras_window_len += PTLRPC_MAX_BRW_PAGES; + ras->ras_window_len = min(ras->ras_window_len, + ra->ra_max_pages); + } + + EXIT; +out_unlock: + RAS_CDEBUG(ras); spin_unlock(&ras->ras_lock); + spin_unlock(&sbi->ll_lock); + return; } /* @@ -828,19 +933,23 @@ int ll_readpage(struct file *filp, struct page *page) if (IS_ERR(llap)) GOTO(out, rc = PTR_ERR(llap)); + if (ll_i2sbi(inode)->ll_flags & LL_SBI_READAHEAD) + ras_update(ll_i2sbi(inode), &fd->fd_ras, page->index, + llap->llap_defer_uptodate); + if (llap->llap_defer_uptodate) { - ll_readahead_update(inode, &fd->fd_ras, page->index, 1); - ll_readahead(&fd->fd_ras, exp, page->mapping, oig); - obd_trigger_group_io(exp, ll_i2info(inode)->lli_smd, NULL, - oig); + llap->llap_ra_used = 1; + rc = ll_readahead(&fd->fd_ras, exp, page->mapping, oig, + fd->fd_flags); + if (rc > 0) + obd_trigger_group_io(exp, ll_i2info(inode)->lli_smd, + NULL, oig); LL_CDEBUG_PAGE(D_PAGE, page, "marking uptodate from defer\n"); SetPageUptodate(page); unlock_page(page); GOTO(out_oig, rc = 0); } - ll_readahead_update(inode, &fd->fd_ras, page->index, 0); - rc = ll_page_matches(page); if (rc < 0) { LL_CDEBUG_PAGE(D_ERROR, page, "lock match failed: rc %d\n", rc); @@ -866,8 +975,9 @@ int ll_readpage(struct file *filp, struct page *page) GOTO(out, rc); LL_CDEBUG_PAGE(D_PAGE, page, "queued readpage\n"); - if ((ll_i2sbi(inode)->ll_flags & LL_SBI_READAHEAD)) - ll_readahead(&fd->fd_ras, exp, page->mapping, oig); + if (ll_i2sbi(inode)->ll_flags & LL_SBI_READAHEAD) + ll_readahead(&fd->fd_ras, exp, page->mapping, oig, + fd->fd_flags); rc = obd_trigger_group_io(exp, ll_i2info(inode)->lli_smd, NULL, oig); @@ -879,38 +989,3 @@ out_oig: oig_release(oig); RETURN(rc); } - -#if 0 -/* this is for read pages. we issue them as ready but not urgent. when - * someone waits on them we fire them off, hopefully merged with adjacent - * reads that were queued by read-ahead. */ -int ll_sync_page(struct page *page) -{ - struct obd_export *exp; - struct ll_async_page *llap; - int rc; - ENTRY; - - /* we're using a low bit flag to signify that a queued read should - * be issued once someone goes to lock it. it is also cleared - * as the page is built into an RPC */ - if (!test_and_clear_bit(LL_PRIVBITS_READ, &page->private)) - RETURN(0); - - /* careful to only deref page->mapping after checking the bit */ - exp = ll_i2obdexp(page->mapping->host); - if (exp == NULL) - RETURN(-EINVAL); - - llap = llap_from_page(page); - if (IS_ERR(llap)) - RETURN(PTR_ERR(llap)); - - LL_CDEBUG_PAGE(D_PAGE, page, "setting ready|urgent\n"); - - rc = obd_set_async_flags(exp, ll_i2info(page->mapping->host)->lli_smd, - NULL, llap->llap_cookie, - ASYNC_READY|ASYNC_URGENT); - return rc; -} -#endif diff --git a/lustre/llite/rw26.c b/lustre/llite/rw26.c index b9193e8..71964de 100644 --- a/lustre/llite/rw26.c +++ b/lustre/llite/rw26.c @@ -91,9 +91,28 @@ static int ll_writepage_26(struct page *page, struct writeback_control *wbc) out: if (rc) unlock_page(page); + else + set_page_writeback(page); RETURN(rc); } +/* It is safe to not check anything in invalidatepage/releasepage below + because they are run with page locked and all our io is happening with + locked page too */ +static int ll_invalidatepage(struct page *page, unsigned long offset) +{ + if (PagePrivate(page)) + ll_removepage(page); + return 1; +} + +static int ll_releasepage(struct page *page, int gfp_mask) +{ + if (PagePrivate(page)) + ll_removepage(page); + return 1; +} + struct address_space_operations ll_aops = { .readpage = ll_readpage, // .readpages = ll_readpages, @@ -104,6 +123,7 @@ struct address_space_operations ll_aops = { .sync_page = NULL, .prepare_write = ll_prepare_write, .commit_write = ll_commit_write, - .removepage = ll_removepage, + .invalidatepage = ll_invalidatepage, + .releasepage = ll_releasepage, .bmap = NULL }; diff --git a/lustre/llite/super.c b/lustre/llite/super.c index 45fe591..0b3ef4f 100644 --- a/lustre/llite/super.c +++ b/lustre/llite/super.c @@ -34,6 +34,7 @@ #include #include #include "llite_internal.h" +#include extern struct address_space_operations ll_aops; extern struct address_space_operations ll_dir_aops; diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c index d46bd23..eea7e8f 100644 --- a/lustre/lvfs/fsfilt_ext3.c +++ b/lustre/lvfs/fsfilt_ext3.c @@ -428,6 +428,8 @@ static int fsfilt_ext3_set_md(struct inode *inode, void *handle, { int rc, old_ea = 0; + LASSERT(down_trylock(&inode->i_sem) != 0); + #ifdef INLINE_EA /* can go away before 1.0 - just for testing bug 2097 now */ /* Nasty hack city - store stripe MD data in the block pointers if * it will fit, because putting it in an EA currently kills the MDS @@ -917,7 +919,6 @@ static int __init fsfilt_ext3_init(void) { int rc; - //rc = ext3_xattr_register(); fcb_cache = kmem_cache_create("fsfilt_ext3_fcb", sizeof(struct fsfilt_cb_data), 0, 0, NULL, NULL); @@ -940,8 +941,6 @@ static void __exit fsfilt_ext3_exit(void) LASSERTF(kmem_cache_destroy(fcb_cache) == 0, "can't free fsfilt callback cache: count %d\n", atomic_read(&fcb_cache_count)); - - //rc = ext3_xattr_unregister(); } module_init(fsfilt_ext3_init); diff --git a/lustre/mdc/mdc_reint.c b/lustre/mdc/mdc_reint.c index a845347..7de0ca5 100644 --- a/lustre/mdc/mdc_reint.c +++ b/lustre/mdc/mdc_reint.c @@ -156,7 +156,7 @@ int mdc_create(struct obd_export *exp, struct mdc_op_data *op_data, int mdc_unlink(struct obd_export *exp, struct mdc_op_data *data, struct ptlrpc_request **request) { - struct obd_device *obddev = class_exp2obd(exp); + struct obd_device *obd = class_exp2obd(exp); struct ptlrpc_request *req = *request; int rc, size[2] = {sizeof(struct mds_rec_unlink), data->namelen + 1}; ENTRY; @@ -169,13 +169,13 @@ int mdc_unlink(struct obd_export *exp, struct mdc_op_data *data, *request = req; size[0] = sizeof(struct mds_body); - size[1] = obddev->u.cli.cl_max_mds_easize; - size[2] = obddev->u.cli.cl_max_mds_cookiesize; + size[1] = obd->u.cli.cl_max_mds_easize; + size[2] = obd->u.cli.cl_max_mds_cookiesize; req->rq_replen = lustre_msg_size(3, size); mdc_unlink_pack(req, 0, data); - rc = mdc_reint(req, obddev->u.cli.cl_rpc_lock, LUSTRE_IMP_FULL); + rc = mdc_reint(req, obd->u.cli.cl_rpc_lock, LUSTRE_IMP_FULL); if (rc == -ERESTARTSYS) rc = 0; RETURN(rc); @@ -226,7 +226,8 @@ int mdc_rename(struct obd_export *exp, struct mdc_op_data *data, size[0] = sizeof(struct mds_body); size[1] = obd->u.cli.cl_max_mds_easize; - req->rq_replen = lustre_msg_size(2, size); + size[2] = obd->u.cli.cl_max_mds_cookiesize; + req->rq_replen = lustre_msg_size(3, size); rc = mdc_reint(req, obd->u.cli.cl_rpc_lock, LUSTRE_IMP_FULL); *request = req; diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index 208256f..f0bb758 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -405,18 +405,21 @@ static void mdc_commit_close(struct ptlrpc_request *req) static int mdc_close_interpret(struct ptlrpc_request *req, void *data, int rc) { union ptlrpc_async_args *aa = data; - struct mdc_rpc_lock *rpc_lock = aa->pointer_arg[0]; + struct mdc_rpc_lock *rpc_lock; struct obd_device *obd = aa->pointer_arg[1]; + unsigned long flags; + + spin_lock_irqsave(&req->rq_lock, flags); + rpc_lock = aa->pointer_arg[0]; + aa->pointer_arg[0] = NULL; + spin_unlock_irqrestore(&req->rq_lock, flags); if (rpc_lock == NULL) { CERROR("called with NULL rpc_lock\n"); } else { mdc_put_rpc_lock(rpc_lock, NULL); - LASSERTF(req->rq_async_args.pointer_arg[0] == - obd->u.cli.cl_rpc_lock, "%p != %p\n", - req->rq_async_args.pointer_arg[0], - obd->u.cli.cl_rpc_lock); - aa->pointer_arg[0] = NULL; + LASSERTF(rpc_lock == obd->u.cli.cl_rpc_lock, "%p != %p\n", + rpc_lock, obd->u.cli.cl_rpc_lock); } wake_up(&req->rq_reply_waitq); RETURN(rc); @@ -430,9 +433,8 @@ static int mdc_close_check_reply(struct ptlrpc_request *req) unsigned long flags; spin_lock_irqsave(&req->rq_lock, flags); - if (PTLRPC_REQUEST_COMPLETE(req)) { + if (req->rq_async_args.pointer_arg[0] == NULL) rc = 1; - } spin_unlock_irqrestore (&req->rq_lock, flags); return rc; } @@ -466,7 +468,8 @@ int mdc_close(struct obd_export *exp, struct obdo *oa, if (likely(mod != NULL)) { mod->mod_close_req = req; LASSERT(mod->mod_open_req->rq_type != LI_POISON); - DEBUG_REQ(D_HA, mod->mod_open_req, "matched open"); + DEBUG_REQ(D_HA, mod->mod_open_req, "matched open req %p", + mod->mod_open_req); } else { CDEBUG(D_HA, "couldn't find open req; expecting close error\n"); } @@ -515,7 +518,6 @@ int mdc_close(struct obd_export *exp, struct obdo *oa, if (req->rq_async_args.pointer_arg[0] != NULL) { CERROR("returned without dropping rpc_lock: rc %d\n", rc); mdc_close_interpret(req, &req->rq_async_args, rc); - //portals_debug_dumplog(); } EXIT; diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 43865fe..cf590e4 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -101,7 +101,8 @@ static int mds_sendpage(struct ptlrpc_request *req, struct file *file, file->f_dentry->d_inode->i_size); rc = fsfilt_readpage(req->rq_export->exp_obd, file, - page_address(pages[i]), tmpsize, &offset); + kmap(pages[i]), tmpsize, &offset); + kunmap(pages[i]); if (rc != tmpsize) GOTO(cleanup_buf, rc = -EIO); @@ -130,7 +131,7 @@ static int mds_sendpage(struct ptlrpc_request *req, struct file *file, rc = -ETIMEDOUT; /* XXX should this be a different errno? */ } - + DEBUG_REQ(D_ERROR, req, "bulk failed: %s %d(%d), evicting %s@%s\n", (rc == -ETIMEDOUT) ? "timeout" : "network error", desc->bd_nob_transferred, count, @@ -218,6 +219,13 @@ struct dentry *mds_fid2dentry(struct mds_obd *mds, struct ll_fid *fid, if (!inode) RETURN(ERR_PTR(-ENOENT)); + if (is_bad_inode(inode)) { + CERROR("bad inode returned %lu/%u\n", + inode->i_ino, inode->i_generation); + dput(result); + RETURN(ERR_PTR(-ENOENT)); + } + if (generation && inode->i_generation != generation) { /* we didn't find the right inode.. */ CERROR("bad inode %lu, link: %lu ct: %d or generation %u/%u\n", @@ -345,7 +353,10 @@ static int mds_destroy_export(struct obd_export *export) dentry->d_name.len, dentry->d_name.name, ll_bdevname(dentry->d_inode->i_sb, btmp), dentry->d_inode->i_ino); - rc = mds_mfd_close(NULL, obd, mfd, + /* child inode->i_alloc_sem protects orphan_dec_test and + * is_orphan race, mds_mfd_close drops it */ + DOWN_WRITE_I_ALLOC_SEM(dentry->d_inode); + rc = mds_mfd_close(NULL, obd, mfd, !(export->exp_flags & OBD_OPT_FAILOVER)); if (rc) @@ -691,7 +702,7 @@ static int mds_getattr_name(int offset, struct ptlrpc_request *req, LASSERT (offset == 0 || offset == 2); /* if requests were at offset 2, the getattr reply goes back at 1 */ - if (offset) { + if (offset) { rep = lustre_msg_buf(req->rq_repmsg, 0, sizeof (*rep)); offset = 1; } @@ -1086,11 +1097,10 @@ int mds_handle(struct ptlrpc_request *req) obd = req->rq_export->exp_obd; mds = &obd->u.mds; - /* sanity check: if the xid matches, the request must * be marked as a resent or replayed */ if (req->rq_xid == med->med_mcd->mcd_last_xid) - LASSERTF(lustre_msg_get_flags(req->rq_reqmsg) & + LASSERTF(lustre_msg_get_flags(req->rq_reqmsg) & (MSG_RESENT | MSG_REPLAY), "rq_xid "LPU64" matches last_xid, " "expected RESENT flag\n", @@ -1208,9 +1218,9 @@ int mds_handle(struct ptlrpc_request *req) OBD_FAIL_RETURN(OBD_FAIL_MDS_REINT_NET, 0); - if (opc == REINT_UNLINK) + if (opc == REINT_UNLINK || opc == REINT_RENAME) bufcount = 3; - else if (opc == REINT_OPEN || opc == REINT_RENAME) + else if (opc == REINT_OPEN) bufcount = 2; else bufcount = 1; @@ -1385,8 +1395,9 @@ static int mds_setup(struct obd_device *obd, obd_count len, void *buf) struct lustre_cfg* lcfg = buf; struct mds_obd *mds = &obd->u.mds; struct vfsmount *mnt; - int rc = 0; + char ns_name[48]; unsigned long page; + int rc = 0; ENTRY; dev_clear_rdonly(2); @@ -1398,7 +1409,8 @@ static int mds_setup(struct obd_device *obd, obd_count len, void *buf) if (IS_ERR(obd->obd_fsops)) RETURN(rc = PTR_ERR(obd->obd_fsops)); - if (!(page = __get_free_page(GFP_KERNEL))) + page = __get_free_page(GFP_KERNEL); + if (!page) RETURN(-ENOMEM); memset((void *)page, 0, PAGE_SIZE); @@ -1422,8 +1434,8 @@ static int mds_setup(struct obd_device *obd, obd_count len, void *buf) mds->mds_max_cookiesize = sizeof(struct llog_cookie); atomic_set(&mds->mds_open_count, 0); - obd->obd_namespace = ldlm_namespace_new("mds_server", - LDLM_NAMESPACE_SERVER); + sprintf(ns_name, "mds-%s", obd->obd_uuid.uuid); + obd->obd_namespace = ldlm_namespace_new(ns_name, LDLM_NAMESPACE_SERVER); if (obd->obd_namespace == NULL) { mds_cleanup(obd, 0); GOTO(err_put, rc = -ENOMEM); @@ -1490,7 +1502,6 @@ static int mds_postsetup(struct obd_device *obd) int rc = 0; ENTRY; - rc = llog_setup(obd, LLOG_CONFIG_ORIG_CTXT, obd, 0, NULL, &llog_lvfs_ops); if (rc) @@ -1529,10 +1540,10 @@ err_llog: RETURN(rc); } -int mds_postrecov(struct obd_device *obd) +int mds_postrecov(struct obd_device *obd) { struct mds_obd *mds = &obd->u.mds; - int rc; + int rc, item = 0; LASSERT(!obd->obd_recovering); LASSERT(llog_get_context(obd, LLOG_UNLINK_ORIG_CTXT) != NULL); @@ -1547,10 +1558,17 @@ int mds_postrecov(struct obd_device *obd) /* clean PENDING dir */ rc = mds_cleanup_orphans(obd); - if (rc) { + if (rc < 0) { GOTO(out, rc); + } else { + item = rc; } + rc = obd_set_info(mds->mds_osc_exp, strlen("mds_conn"), "mds_conn", + 0, NULL); + if (rc) + GOTO(out, rc); + rc = llog_connect(llog_get_context(obd, LLOG_UNLINK_ORIG_CTXT), obd->u.mds.mds_lov_desc.ld_tgt_count, NULL, NULL, NULL); @@ -1567,7 +1585,7 @@ int mds_postrecov(struct obd_device *obd) } out: - RETURN(rc); + RETURN(rc < 0 ? rc: item); err_llog: /* cleanup all llogging subsystems */ @@ -1790,11 +1808,11 @@ static int mds_intent_policy(struct ldlm_namespace *ns, rep->lock_policy_res2 = mds_getattr_name(offset, req, &lockh); /* FIXME: LDLM can set req->rq_status. MDS sets policy_res{1,2} with disposition and status. - - replay: returns 0 & req->status is old status + - replay: returns 0 & req->status is old status - otherwise: returns req->status */ if (intent_disposition(rep, DISP_LOOKUP_NEG)) rep->lock_policy_res2 = 0; - if (!intent_disposition(rep, DISP_LOOKUP_POS) || + if (!intent_disposition(rep, DISP_LOOKUP_POS) || rep->lock_policy_res2) RETURN(ELDLM_LOCK_ABORTED); if (req->rq_status != 0) { @@ -1877,8 +1895,7 @@ static int mdt_setup(struct obd_device *obd, obd_count len, void *buf) mds->mds_service = ptlrpc_init_svc(MDS_NBUFS, MDS_BUFSIZE, MDS_MAXREQSIZE, MDS_REQUEST_PORTAL, MDC_REPLY_PORTAL, - mds_handle, "mds", - obd->obd_proc_entry); + mds_handle, "mds", obd->obd_proc_entry); if (!mds->mds_service) { CERROR("failed to start service\n"); diff --git a/lustre/mds/lproc_mds.c b/lustre/mds/lproc_mds.c index 52225be..9c9bd12 100644 --- a/lustre/mds/lproc_mds.c +++ b/lustre/mds/lproc_mds.c @@ -60,64 +60,6 @@ static int lprocfs_mds_rd_filesopen(char *page, char **start, off_t off, atomic_read(&obd->u.mds.mds_open_count)); } -static int lprocfs_mds_rd_recovery_status(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - struct obd_device *obd = data; - int len = 0, n, - connected = obd->obd_connected_clients, - max_recoverable = obd->obd_max_recoverable_clients, - recoverable = obd->obd_recoverable_clients, - completed = max_recoverable - recoverable, - queue_len = obd->obd_requests_queued_for_recovery, - replayed = obd->obd_replayed_requests; - __u64 next_transno = obd->obd_next_recovery_transno; - - LASSERT(obd != NULL); - *eof = 1; - - n = snprintf(page, count, "status: "); - page += n; len += n; count -= n; - if (obd->obd_max_recoverable_clients == 0) { - n = snprintf(page, count, "INACTIVE\n"); - return len + n; - } - - if (obd->obd_recoverable_clients == 0) { - n = snprintf(page, count, "COMPLETE\n"); - page += n; len += n; count -= n; - n = snprintf(page, count, "recovered_clients: %d\n", - max_recoverable); - page += n; len += n; count -= n; - n = snprintf(page, count, "last_transno: "LPD64"\n", - next_transno - 1); - page += n; len += n; count -= n; - n = snprintf(page, count, "replayed_requests: %d\n", replayed); - return len + n; - } - - /* sampled unlocked, but really... */ - if (obd->obd_recovering == 0) { - n = snprintf(page, count, "ABORTED\n"); - return len + n; - } - - n = snprintf(page, count, "RECOVERING\n"); - page += n; len += n; count -= n; - n = snprintf(page, count, "connected_clients: %d/%d\n", - connected, max_recoverable); - page += n; len += n; count -= n; - n = snprintf(page, count, "completed_clients: %d/%d\n", - completed, max_recoverable); - page += n; len += n; count -= n; - n = snprintf(page, count, "replayed_requests: %d/??\n", replayed); - page += n; len += n; count -= n; - n = snprintf(page, count, "queued_requests: %d\n", queue_len); - page += n; len += n; count -= n; - n = snprintf(page, count, "next_transno: "LPD64"\n", next_transno); - return len + n; -} - static int lprocfs_mds_wr_evict_client(struct file *file, const char *buffer, unsigned long count, void *data) { @@ -164,7 +106,7 @@ struct lprocfs_vars lprocfs_mds_obd_vars[] = { { "filesfree", lprocfs_rd_filesfree, 0, 0 }, { "filesopen", lprocfs_mds_rd_filesopen, 0, 0 }, { "mntdev", lprocfs_mds_rd_mntdev, 0, 0 }, - { "recovery_status", lprocfs_mds_rd_recovery_status, 0, 0 }, + { "recovery_status", lprocfs_obd_rd_recovery_status, 0, 0 }, { "evict_client", 0, lprocfs_mds_wr_evict_client, 0 }, { "num_exports", lprocfs_rd_num_exports, 0, 0 }, { 0 } diff --git a/lustre/mds/mds_fs.c b/lustre/mds/mds_fs.c index 5505329..7d8dc6d 100644 --- a/lustre/mds/mds_fs.c +++ b/lustre/mds/mds_fs.c @@ -349,6 +349,7 @@ static int mds_init_server_data(struct obd_device *obd, struct file *file) obd->obd_recoverable_clients, mds->mds_last_transno); obd->obd_next_recovery_transno = obd->obd_last_committed + 1; obd->obd_recovering = 1; + obd->obd_recovery_start = LTIME_S(CURRENT_TIME); } mds->mds_mount_count = mount_count + 1; @@ -514,6 +515,7 @@ int mds_fs_cleanup(struct obd_device *obd, int flags) " be preserved.\n", obd->obd_name); class_disconnect_exports(obd, flags); /* cleans up client info too */ + target_cleanup_recovery(obd); mds_server_free_data(mds); push_ctxt(&saved, &obd->obd_ctxt, NULL); @@ -552,7 +554,7 @@ int mds_fs_cleanup(struct obd_device *obd, int flags) * performance sensitive, it is accomplished by creating a file, checking the * fid, and renaming it. */ int mds_obd_create(struct obd_export *exp, struct obdo *oa, - struct lov_stripe_md **ea, struct obd_trans_info *oti) + struct lov_stripe_md **ea, struct obd_trans_info *oti) { struct mds_obd *mds = &exp->exp_obd->u.mds; struct inode *parent_inode = mds->mds_objects_dir->d_inode; @@ -652,8 +654,9 @@ int mds_obd_destroy(struct obd_export *exp, struct obdo *oa, down(&parent_inode->i_sem); de = lookup_one_len(fidname, mds->mds_objects_dir, namelen); - if (de == NULL || de->d_inode == NULL) { - CERROR("destroying non-existent object "LPU64" %s\n", + if (IS_ERR(de) || de->d_inode == NULL) { + rc = IS_ERR(de) ? PTR_ERR(de) : -ENOENT; + CERROR("destroying non-existent object "LPU64" %s\n", oa->o_id, fidname); GOTO(out_dput, rc = IS_ERR(de) ? PTR_ERR(de) : -ENOENT); } @@ -665,12 +668,12 @@ int mds_obd_destroy(struct obd_export *exp, struct obdo *oa, if (IS_ERR(handle)) { GOTO(out_dput, rc = PTR_ERR(handle)); } - + rc = vfs_unlink(mds->mds_objects_dir->d_inode, de); - if (rc) + if (rc) CERROR("error destroying object "LPU64":%u: rc %d\n", oa->o_id, oa->o_generation, rc); - + err = fsfilt_commit(obd, mds->mds_objects_dir->d_inode, handle, 0); if (err && !rc) rc = err; diff --git a/lustre/mds/mds_internal.h b/lustre/mds/mds_internal.h index 2829812..892f315 100644 --- a/lustre/mds/mds_internal.h +++ b/lustre/mds/mds_internal.h @@ -20,6 +20,45 @@ static inline struct mds_obd *mds_req2mds(struct ptlrpc_request *req) return &req->rq_export->exp_obd->u.mds; } +#ifdef __KERNEL__ +/* Open counts for files. No longer atomic, must hold inode->i_sem */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) +# define mds_inode_oatomic(inode) ((inode)->i_cindex) +#else +# define mds_inode_oatomic(inode) ((inode)->i_attr_flags) +#endif + +static inline int mds_orphan_open_count(struct inode *inode) +{ + LASSERT_MDS_ORPHAN_READ_LOCKED(inode); + return mds_inode_oatomic(inode); +} + +static inline int mds_orphan_open_inc(struct inode *inode) +{ + LASSERT_MDS_ORPHAN_WRITE_LOCKED(inode); + return ++mds_inode_oatomic(inode); +} + +static inline int mds_orphan_open_dec_test(struct inode *inode) +{ + LASSERT_MDS_ORPHAN_WRITE_LOCKED(inode); + return --mds_inode_oatomic(inode) == 0; +} + +#define mds_inode_is_orphan(inode) ((inode)->i_flags & 0x4000000) +#define mds_inode_set_orphan(inode) \ +do { \ + (inode)->i_flags |= 0x4000000; \ + CDEBUG(D_VFSTRACE, "setting orphan flag on inode %p\n", inode); \ +} while (0) +#define mds_inode_unset_orphan(inode) \ +do { \ + (inode)->i_flags &= ~(0x4000000); \ + CDEBUG(D_VFSTRACE, "removing orphan flag from inode %p\n", inode); \ +} while (0) +#endif /* __KERNEL__ */ + /* mds/mds_reint.c */ int res_gt(struct ldlm_res_id *res1, struct ldlm_res_id *res2); int enqueue_ordered_locks(struct obd_device *obd, struct ldlm_res_id *p1_res_id, @@ -46,9 +85,6 @@ int mds_update_unpack(struct ptlrpc_request *, int offset, struct mds_update_record *); /* mds/mds_unlink_open.c */ -int mds_open_unlink_rename(struct mds_update_record *rec, - struct obd_device *obd, struct dentry *dparent, - struct dentry *dchild, void **handle); int mds_cleanup_orphans(struct obd_device *obd); diff --git a/lustre/mds/mds_lib.c b/lustre/mds/mds_lib.c index 66d182c..7d4a614 100644 --- a/lustre/mds/mds_lib.c +++ b/lustre/mds/mds_lib.c @@ -47,7 +47,7 @@ #include #include -#include +#include "mds_internal.h" void mds_pack_inode2fid(struct ll_fid *fid, struct inode *inode) { diff --git a/lustre/mds/mds_lov.c b/lustre/mds/mds_lov.c index f0bf35b..7bb492f 100644 --- a/lustre/mds/mds_lov.c +++ b/lustre/mds/mds_lov.c @@ -228,12 +228,6 @@ int mds_lov_connect(struct obd_device *obd, char * lov_name) GOTO(err_reg, rc); } - /* FIXME before set info call is made, we must initialize logging */ - rc = obd_set_info(mds->mds_osc_exp, strlen("mds_conn"), "mds_conn", - 0, NULL); - if (rc) - GOTO(err_reg, rc); - /* If we're mounting this code for the first time on an existing FS, * we need to populate the objids array from the real OST values */ if (!mds->mds_lov_objids_valid) { @@ -451,8 +445,8 @@ int mds_iocontrol(unsigned int cmd, struct obd_export *exp, int len, rc = llog_ioctl(ctxt, cmd, data); pop_ctxt(&saved, &ctxt->loc_exp->exp_obd->obd_ctxt, NULL); llog_cat_initialize(obd, mds->mds_lov_desc.ld_tgt_count); - rc2 = obd_set_info(mds->mds_osc_exp, strlen("mds_conn"), "mds_conn", - 0, NULL); + rc2 = obd_set_info(mds->mds_osc_exp, strlen("mds_conn"), + "mds_conn", 0, NULL); if (!rc) rc = rc2; RETURN(rc); @@ -514,7 +508,7 @@ int mds_lov_synchronize(void *data) "mds_conn", 0, uuid); if (rc != 0) RETURN(rc); - + rc = llog_connect(llog_get_context(obd, LLOG_UNLINK_ORIG_CTXT), obd->u.mds.mds_lov_desc.ld_tgt_count, NULL, NULL, uuid); @@ -523,7 +517,7 @@ int mds_lov_synchronize(void *data) obd->obd_name, rc); RETURN(rc); } - + CWARN("MDS %s: %s now active, resetting orphans\n", obd->obd_name, uuid->uuid); rc = mds_lov_clearorphans(&obd->u.mds, uuid); @@ -540,7 +534,7 @@ int mds_lov_start_synchronize(struct obd_device *obd, struct obd_uuid *uuid) { struct mds_lov_sync_info *mlsi; int rc; - + ENTRY; OBD_ALLOC(mlsi, sizeof(*mlsi)); diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c index 805a256..641c423e 100644 --- a/lustre/mds/mds_open.c +++ b/lustre/mds/mds_open.c @@ -40,7 +40,6 @@ #endif #include -#include #include #include #include @@ -233,7 +232,7 @@ int mds_query_write_access(struct inode *inode) RETURN(atomic_read(&inode->i_writecount)); } -/* This replaces the VFS mds_dentry_open, it manages mfd and writecount */ +/* This replaces the VFS dentry_open, it manages mfd and writecount */ static struct mds_file_data *mds_dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, struct ptlrpc_request *req) @@ -268,7 +267,9 @@ static struct mds_file_data *mds_dentry_open(struct dentry *dentry, dget(dentry); /* Mark the file as open to handle open-unlink. */ - mds_open_orphan_inc(dentry->d_inode); + DOWN_WRITE_I_ALLOC_SEM(dentry->d_inode); + mds_orphan_open_inc(dentry->d_inode); + UP_WRITE_I_ALLOC_SEM(dentry->d_inode); mfd->mfd_mode = flags; mfd->mfd_dentry = dentry; @@ -460,7 +461,7 @@ static int mds_create_objects(struct ptlrpc_request *req, int offset, if (IS_ERR(*handle)) { rc = PTR_ERR(*handle); *handle = NULL; - GOTO(out_ids, rc); + GOTO(out_oa, rc); } rc = fsfilt_set_md(obd, inode, *handle, lmm, lmm_size); @@ -491,7 +492,7 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, struct mds_obd *mds = mds_req2mds(req); struct mds_file_data *mfd; struct obd_device *obd = req->rq_export->exp_obd; - struct dentry *parent, *child; + struct dentry *parent, *dchild; struct ldlm_reply *rep; struct mds_body *body; int rc; @@ -516,12 +517,11 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, parent = mds_fid2dentry(mds, rec->ur_fid1, NULL); LASSERT(!IS_ERR(parent)); - child = ll_lookup_one_len(rec->ur_name, parent, rec->ur_namelen - 1); - LASSERT(!IS_ERR(child)); + dchild = ll_lookup_one_len(rec->ur_name, parent, rec->ur_namelen - 1); + LASSERT(!IS_ERR(dchild)); - if (!child->d_inode) { + if (!dchild->d_inode) GOTO(out_dput, 0); /* child not present to open */ - } /* At this point, we know we have a child. We'll send * it back _unless_ it not created and open failed. @@ -534,11 +534,11 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, /* get lock (write for O_CREAT, read otherwise) */ - mds_pack_inode2fid(&body->fid1, child->d_inode); - mds_pack_inode2body(body, child->d_inode); - if (S_ISREG(child->d_inode->i_mode)) { + mds_pack_inode2fid(&body->fid1, dchild->d_inode); + mds_pack_inode2body(body, dchild->d_inode); + if (S_ISREG(dchild->d_inode->i_mode)) { rc = mds_pack_md(obd, req->rq_repmsg, 2, body, - child->d_inode, 1); + dchild->d_inode, 1); if (rc) LASSERT(rc == req->rq_status); @@ -547,13 +547,8 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, if (!(body->valid & OBD_MD_FLEASIZE)) body->valid |= (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | OBD_MD_FLATIME | OBD_MD_FLMTIME); - } else { - /* XXX need to check this case */ } - /* If we're opening a file without an EA, change to a write - lock (unless we already have one). */ - /* If we have -EEXIST as the status, and we were asked to create * exclusively, we can tell we failed because the file already existed. */ @@ -590,7 +585,7 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, if (mfd == NULL) { mntget(mds->mds_vfsmnt); CERROR("Re-opened file \n"); - mfd = mds_dentry_open(child, mds->mds_vfsmnt, + mfd = mds_dentry_open(dchild, mds->mds_vfsmnt, rec->ur_flags & ~MDS_OPEN_TRUNC, req); if (!mfd) { CERROR("mds: out of memory\n"); @@ -605,7 +600,7 @@ static void reconstruct_open(struct mds_update_record *rec, int offset, out_dput: if (put_child) - l_dput(child); + l_dput(dchild); l_dput(parent); EXIT; } @@ -1042,7 +1037,7 @@ int mds_open(struct mds_update_record *rec, int offset, } /* Close a "file descriptor" and possibly unlink an orphan from the - * PENDING directory. + * PENDING directory. Caller must hold child->i_sem, this drops it. * * If we are being called from mds_disconnect() because the client has * disappeared, then req == NULL and we do not update last_rcvd because @@ -1074,8 +1069,12 @@ int mds_mfd_close(struct ptlrpc_request *req, struct obd_device *obd, fidlen = ll_fid2str(fidname, inode->i_ino, inode->i_generation); - last_orphan = mds_open_orphan_dec_test(inode) && + CDEBUG(D_INODE, "inode %p ino %s nlink %d orphan %d\n", inode, fidname, + inode->i_nlink, mds_orphan_open_count(inode)); + + last_orphan = mds_orphan_open_dec_test(inode) && mds_inode_is_orphan(inode); + UP_WRITE_I_ALLOC_SEM(inode); /* this is half of the actual "close" */ if (mfd->mfd_mode & FMODE_WRITE) { @@ -1092,12 +1091,17 @@ int mds_mfd_close(struct ptlrpc_request *req, struct obd_device *obd, CDEBUG(D_HA, "destroying orphan object %s\n", fidname); + if ((S_ISREG(inode->i_mode) && inode->i_nlink != 1) || + (S_ISDIR(inode->i_mode) && inode->i_nlink != 2)) + CERROR("found \"orphan\" %s %s with link count %d\n", + S_ISREG(inode->i_mode) ? "file" : "dir", + fidname, inode->i_nlink); + /* Sadly, there is no easy way to save pending_child from * mds_reint_unlink() into mfd, so we need to re-lookup, * but normally it will still be in the dcache. */ - pending_dir = mds->mds_pending_dir->d_inode; down(&pending_dir->i_sem); - cleanup_phase = 1; /* up(i_sem) when finished */ + cleanup_phase = 1; /* up(&pending_dir->i_sem) when finished */ pending_child = lookup_one_len(fidname, mds->mds_pending_dir, fidlen); if (IS_ERR(pending_child)) @@ -1140,6 +1144,7 @@ int mds_mfd_close(struct ptlrpc_request *req, struct obd_device *obd, goto out; /* Don't bother updating attrs on unlinked inode */ } +#if 0 if (request_body != NULL && mfd->mfd_mode & FMODE_WRITE && rc == 0) { /* Update the on-disk attributes if this was the last write * close, and all information was provided (i.e., rc == 0) @@ -1147,7 +1152,6 @@ int mds_mfd_close(struct ptlrpc_request *req, struct obd_device *obd, * XXX this should probably be abstracted with mds_reint_setattr */ -#if 0 if (request_body->valid & OBD_MD_FLMTIME && LTIME_S(iattr.ia_mtime) > LTIME_S(inode->i_mtime)) { LTIME_S(iattr.ia_mtime) = request_body->mtime; @@ -1166,8 +1170,8 @@ int mds_mfd_close(struct ptlrpc_request *req, struct obd_device *obd, } /* iattr.ia_blocks = request_body->blocks */ -#endif } +#endif if (request_body != NULL && request_body->valid & OBD_MD_FLATIME) { /* Only start a transaction to write out only the atime if * it is more out-of-date than the specified limit. If we @@ -1258,13 +1262,15 @@ int mds_close(struct ptlrpc_request *req) } inode = mfd->mfd_dentry->d_inode; - if (mds_inode_is_orphan(inode) && mds_open_orphan_count(inode) == 1) { + /* child i_alloc_sem protects orphan_dec_test && is_orphan race */ + DOWN_WRITE_I_ALLOC_SEM(inode); /* mds_mfd_close drops this */ + if (mds_inode_is_orphan(inode) && mds_orphan_open_count(inode) == 1) { body = lustre_msg_buf(req->rq_repmsg, 0, sizeof (*body)); LASSERT(body != NULL); mds_pack_inode2fid(&body->fid1, inode); mds_pack_inode2body(body, inode); - mds_pack_md(obd, req->rq_repmsg, 1, body, inode, 1); + mds_pack_md(obd, req->rq_repmsg, 1, body, inode, MDS_PACK_MD_LOCK); } spin_lock(&med->med_open_lock); list_del(&mfd->mfd_list); diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c index ac15d0c..563790a 100644 --- a/lustre/mds/mds_reint.c +++ b/lustre/mds/mds_reint.c @@ -619,7 +619,7 @@ static int mds_reint_create(struct mds_update_record *rec, int offset, if (rec->ur_tgt == NULL) /* no target supplied */ rc = -EINVAL; /* -EPROTO? */ else - rc = vfs_symlink(dir, dchild, rec->ur_tgt); + rc = ll_vfs_symlink(dir, dchild, rec->ur_tgt, S_IALLUGO); EXIT; break; } @@ -1059,7 +1059,7 @@ retry_locks: /* Step 3: Lock parent and child in resource order. If child doesn't * exist, we still have to lock the parent and re-lookup. */ - rc = enqueue_ordered_locks(obd, &parent_res_id,parent_lockh,parent_mode, + rc = enqueue_ordered_locks(obd,&parent_res_id,parent_lockh,parent_mode, &child_res_id, child_lockh, child_mode); if (rc) GOTO(cleanup, rc); @@ -1104,18 +1104,98 @@ void mds_reconstruct_generic(struct ptlrpc_request *req) mds_req_from_mcd(req, med->med_mcd); } +/* If we are unlinking an open file/dir (i.e. creating an orphan) then + * we instead link the inode into the PENDING directory until it is + * finally released. We can't simply call mds_reint_rename() or some + * part thereof, because we don't have the inode to check for link + * count/open status until after it is locked. + * + * For lock ordering, caller must get child->i_sem first, then pending->i_sem + * before starting journal transaction. + * + * returns 1 on success + * returns 0 if we lost a race and didn't make a new link + * returns negative on error + */ +static int mds_orphan_add_link(struct mds_update_record *rec, + struct obd_device *obd, struct dentry *dentry) +{ + struct mds_obd *mds = &obd->u.mds; + struct inode *pending_dir = mds->mds_pending_dir->d_inode; + struct inode *inode = dentry->d_inode; + struct dentry *pending_child; + char fidname[LL_FID_NAMELEN]; + int fidlen = 0, rc, mode; + ENTRY; + + LASSERT(inode != NULL); + LASSERT(!mds_inode_is_orphan(inode)); +#ifndef HAVE_I_ALLOC_SEM + LASSERT(down_trylock(&inode->i_sem) != 0); +#endif + LASSERT(down_trylock(&pending_dir->i_sem) != 0); + + fidlen = ll_fid2str(fidname, inode->i_ino, inode->i_generation); + + CDEBUG(D_ERROR, "pending destroy of %dx open %d linked %s %s = %s\n", + mds_orphan_open_count(inode), inode->i_nlink, + S_ISDIR(inode->i_mode) ? "dir" : + S_ISREG(inode->i_mode) ? "file" : "other",rec->ur_name,fidname); + + if (mds_orphan_open_count(inode) == 0 || inode->i_nlink != 0) + RETURN(0); + + pending_child = lookup_one_len(fidname, mds->mds_pending_dir, fidlen); + if (IS_ERR(pending_child)) + RETURN(PTR_ERR(pending_child)); + + if (pending_child->d_inode != NULL) { + CERROR("re-destroying orphan file %s?\n", rec->ur_name); + LASSERT(pending_child->d_inode == inode); + GOTO(out_dput, rc = 0); + } + + /* link() is semanticaly-wrong for S_IFDIR, so we set S_IFREG + * for linking and return real mode back then -bzzz */ + mode = inode->i_mode; + inode->i_mode = S_IFREG; + rc = vfs_link(dentry, pending_dir, pending_child); + if (rc) + CERROR("error linking orphan %s to PENDING: rc = %d\n", + rec->ur_name, rc); + else + mds_inode_set_orphan(inode); + + /* return mode and correct i_nlink if inode is directory */ + inode->i_mode = mode; + LASSERTF(inode->i_nlink == 1, "%s nlink == %d\n", + S_ISDIR(mode) ? "dir" : S_ISREG(mode) ? "file" : "other", + inode->i_nlink); + if (S_ISDIR(mode)) { + inode->i_nlink++; + pending_dir->i_nlink++; + mark_inode_dirty(inode); + mark_inode_dirty(pending_dir); + } + + GOTO(out_dput, rc = 1); +out_dput: + l_dput(pending_child); + RETURN(rc); +} + static int mds_reint_unlink(struct mds_update_record *rec, int offset, struct ptlrpc_request *req, struct lustre_handle *lh) { - struct dentry *dparent, *dchild; + struct dentry *dparent = NULL, *dchild; struct mds_obd *mds = mds_req2mds(req); struct obd_device *obd = req->rq_export->exp_obd; struct mds_body *body = NULL; - struct inode *child_inode; + struct inode *child_inode = NULL; struct lustre_handle parent_lockh, child_lockh, child_reuse_lockh; void *handle = NULL; - int rc = 0, log_unlink = 0, cleanup_phase = 0; + int rc = 0, cleanup_phase = 0; ENTRY; LASSERT(offset == 0 || offset == 2); @@ -1164,31 +1244,30 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, body = lustre_msg_buf(req->rq_repmsg, offset, sizeof (*body)); LASSERT(body != NULL); - /* If this is the last reference to this inode, get the OBD EA - * data first so the client can destroy OST objects. - * we only do the object removal if no open files remain. - * Nobody can get at this name anymore because of the locks so - * we make decisions here as to whether to remove the inode */ - if (S_ISREG(child_inode->i_mode) && child_inode->i_nlink == 1 && - mds_open_orphan_count(child_inode) == 0) { - mds_pack_inode2fid(&body->fid1, child_inode); - mds_pack_inode2body(body, child_inode); - mds_pack_md(obd, req->rq_repmsg, offset + 1, body, - child_inode, 1); - if (!(body->valid & OBD_MD_FLEASIZE)) { - body->valid |= (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | - OBD_MD_FLATIME | OBD_MD_FLMTIME); - } else { - log_unlink = 1; + /* child i_alloc_sem protects orphan_dec_test && is_orphan race */ + DOWN_READ_I_ALLOC_SEM(child_inode); + cleanup_phase = 4; /* up(&child_inode->i_sem) when finished */ + + /* If this is potentially the last reference to this inode, get the + * OBD EA data first so the client can destroy OST objects. We + * only do the object removal later if no open files/links remain. */ + if ((S_ISDIR(child_inode->i_mode) && child_inode->i_nlink == 2) || + child_inode->i_nlink == 1) { + if (mds_orphan_open_count(child_inode) > 0) { + /* need to lock pending_dir before transaction */ + down(&mds->mds_pending_dir->d_inode->i_sem); + cleanup_phase = 5; /* up(&pending_dir->i_sem) */ + } else if (S_ISREG(child_inode->i_mode)) { + mds_pack_inode2fid(&body->fid1, child_inode); + mds_pack_inode2body(body, child_inode); + mds_pack_md(obd, req->rq_repmsg, offset + 1, body, + child_inode, MDS_PACK_MD_LOCK); } } /* We have to do these checks ourselves, in case we are making an * orphan. The client tells us whether rmdir() or unlink() was called, - * so we need to return appropriate errors (bug 72). - * - * We don't have to check permissions, because vfs_rename (called from - * mds_open_unlink_rename) also calls may_delete. */ + * so we need to return appropriate errors (bug 72). */ if ((rec->ur_mode & S_IFMT) == S_IFDIR) { if (!S_ISDIR(child_inode->i_mode)) GOTO(cleanup, rc = -ENOTDIR); @@ -1208,7 +1287,6 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - cleanup_phase = 4; /* transaction */ rc = vfs_rmdir(dparent->d_inode, dchild); break; case S_IFREG: { @@ -1219,17 +1297,7 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, le32_to_cpu(lmm->lmm_stripe_count)); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - - cleanup_phase = 4; /* transaction */ rc = vfs_unlink(dparent->d_inode, dchild); - - if (!rc && log_unlink) - if (mds_log_op_unlink(obd, child_inode, - lustre_msg_buf(req->rq_repmsg, offset + 1, 0), - req->rq_repmsg->buflens[offset + 1], - lustre_msg_buf(req->rq_repmsg, offset + 2, 0), - req->rq_repmsg->buflens[offset + 2]) > 0) - body->valid |= OBD_MD_FLCOOKIE; break; } case S_IFLNK: @@ -1241,7 +1309,6 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - cleanup_phase = 4; /* transaction */ rc = vfs_unlink(dparent->d_inode, dchild); break; default: @@ -1251,7 +1318,30 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, GOTO(cleanup, rc = -EINVAL); } - cleanup: + if (rc == 0 && child_inode->i_nlink == 0) { + if (mds_orphan_open_count(child_inode) > 0) + rc = mds_orphan_add_link(rec, obd, dchild); + + if (rc == 1) + GOTO(cleanup, rc = 0); + + if (!S_ISREG(child_inode->i_mode)) + GOTO(cleanup, rc); + + if (!(body->valid & OBD_MD_FLEASIZE)) { + body->valid |=(OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | + OBD_MD_FLATIME | OBD_MD_FLMTIME); + } else if (mds_log_op_unlink(obd, child_inode, + lustre_msg_buf(req->rq_repmsg, offset + 1, 0), + req->rq_repmsg->buflens[offset + 1], + lustre_msg_buf(req->rq_repmsg, offset + 2, 0), + req->rq_repmsg->buflens[offset+2]) > 0){ + body->valid |= OBD_MD_FLCOOKIE; + } + } + + GOTO(cleanup, rc); +cleanup: if (rc == 0) { struct iattr iattr; int err; @@ -1265,21 +1355,16 @@ static int mds_reint_unlink(struct mds_update_record *rec, int offset, CERROR("error on parent setattr: rc = %d\n", err); } + rc = mds_finish_transno(mds, dparent ? dparent->d_inode : NULL, + handle, req, rc, 0); + if (!rc) + (void)obd_set_info(mds->mds_osc_exp, strlen("unlinked"), + "unlinked", 0, NULL); switch(cleanup_phase) { - case 4: - LASSERT(dchild != NULL && dchild->d_inode != NULL); - LASSERT(atomic_read(&dchild->d_inode->i_count) > 0); - if (rc == 0 && dchild->d_inode->i_nlink == 0 && - mds_open_orphan_count(dchild->d_inode) > 0) { - /* filesystem is really going to destroy an inode - * we have to delay this till inode is opened -bzzz */ - mds_open_unlink_rename(rec, obd, dparent, dchild, NULL); - } - rc = mds_finish_transno(mds, dparent->d_inode, handle, req, - rc, 0); - if (!rc) - (void)obd_set_info(mds->mds_osc_exp, strlen("unlinked"), - "unlinked", 0, NULL); + case 5: /* pending_dir semaphore */ + up(&mds->mds_pending_dir->d_inode->i_sem); + case 4: /* child inode semaphore */ + UP_READ_I_ALLOC_SEM(child_inode); case 3: /* child ino-reuse lock */ if (rc && body != NULL) { // Don't unlink the OST objects if the MDS unlink failed @@ -1428,58 +1513,6 @@ cleanup: return 0; } -/* - * add a hard link in the PENDING directory, only used by rename() - */ -static int mds_add_link_orphan(struct mds_update_record *rec, - struct obd_device *obd, - struct dentry *dentry) -{ - struct mds_obd *mds = &obd->u.mds; - struct inode *pending_dir = mds->mds_pending_dir->d_inode; - struct dentry *pending_child; - char fidname[LL_FID_NAMELEN]; - int fidlen = 0, rc; - ENTRY; - - LASSERT(dentry->d_inode); - LASSERT(!mds_inode_is_orphan(dentry->d_inode)); - - down(&pending_dir->i_sem); - fidlen = ll_fid2str(fidname, dentry->d_inode->i_ino, - dentry->d_inode->i_generation); - - CDEBUG(D_ERROR, "pending destroy of %dx open %s %s = %s\n", - mds_open_orphan_count(dentry->d_inode), - S_ISDIR(dentry->d_inode->i_mode) ? "dir" : - S_ISREG(dentry->d_inode->i_mode) ? "file" : "other", - rec->ur_name, fidname); - - pending_child = lookup_one_len(fidname, mds->mds_pending_dir, fidlen); - if (IS_ERR(pending_child)) - GOTO(out_lock, rc = PTR_ERR(pending_child)); - - if (pending_child->d_inode != NULL) { - CERROR("re-destroying orphan file %s?\n", rec->ur_name); - LASSERT(pending_child->d_inode == dentry->d_inode); - GOTO(out_dput, rc = 0); - } - - lock_kernel(); - rc = vfs_link(dentry, pending_dir, pending_child); - unlock_kernel(); - if (rc) - CERROR("error addlink orphan %s to PENDING: rc = %d\n", - rec->ur_name, rc); - else - mds_inode_set_orphan(dentry->d_inode); -out_dput: - l_dput(pending_child); -out_lock: - up(&pending_dir->i_sem); - RETURN(rc); -} - /* The idea here is that we need to get four locks in the end: * one on each parent directory, one on each child. We need to take * these locks in some kind of order (to avoid deadlocks), and the order @@ -1571,6 +1604,7 @@ static int mds_get_parents_children_locked(struct obd_device *obd, c1_res_id.name[0] = inode->i_ino; c1_res_id.name[1] = inode->i_generation; + iput(inode); /* Step 4: Lookup the target child entry */ @@ -1679,11 +1713,11 @@ static int mds_reint_rename(struct mds_update_record *rec, int offset, struct dentry *de_tgtdir = NULL; struct dentry *de_old = NULL; struct dentry *de_new = NULL; + struct inode *old_inode = NULL, *new_inode = NULL; struct mds_obd *mds = mds_req2mds(req); struct lustre_handle dlm_handles[4]; struct mds_body *body = NULL; - int rc = 0, lock_count = 3; - int cleanup_phase = 0; + int rc = 0, lock_count = 3, cleanup_phase = 0; void *handle = NULL; ENTRY; @@ -1706,74 +1740,107 @@ static int mds_reint_rename(struct mds_update_record *rec, int offset, cleanup_phase = 1; /* parent(s), children, locks */ - if (de_new->d_inode) + old_inode = de_old->d_inode; + new_inode = de_new->d_inode; + + if (new_inode != NULL) lock_count = 4; /* sanity check for src inode */ - if (de_old->d_inode->i_ino == de_srcdir->d_inode->i_ino || - de_old->d_inode->i_ino == de_tgtdir->d_inode->i_ino) + if (old_inode->i_ino == de_srcdir->d_inode->i_ino || + old_inode->i_ino == de_tgtdir->d_inode->i_ino) GOTO(cleanup, rc = -EINVAL); + if (new_inode == NULL) + goto no_unlink; + + igrab(new_inode); + cleanup_phase = 2; /* iput(new_inode) when finished */ + /* sanity check for dest inode */ - if (de_new->d_inode && - (de_new->d_inode->i_ino == de_srcdir->d_inode->i_ino || - de_new->d_inode->i_ino == de_tgtdir->d_inode->i_ino)) + if (new_inode->i_ino == de_srcdir->d_inode->i_ino || + new_inode->i_ino == de_tgtdir->d_inode->i_ino) GOTO(cleanup, rc = -EINVAL); - if (de_old->d_inode == de_new->d_inode) { + if (old_inode == new_inode) GOTO(cleanup, rc = 0); - } /* if we are about to remove the target at first, pass the EA of * that inode to client to perform and cleanup on OST */ body = lustre_msg_buf(req->rq_repmsg, 0, sizeof (*body)); LASSERT(body != NULL); - if (de_new->d_inode && - S_ISREG(de_new->d_inode->i_mode) && - de_new->d_inode->i_nlink == 1 && - mds_open_orphan_count(de_new->d_inode) == 0) { - mds_pack_inode2fid(&body->fid1, de_new->d_inode); - mds_pack_inode2body(body, de_new->d_inode); - mds_pack_md(obd, req->rq_repmsg, 1, body, de_new->d_inode, 1); - if (!(body->valid & OBD_MD_FLEASIZE)) { - body->valid |= (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | - OBD_MD_FLATIME | OBD_MD_FLMTIME); - } else { - /* XXX need log unlink? */ + /* child i_alloc_sem protects orphan_dec_test && is_orphan race */ + DOWN_READ_I_ALLOC_SEM(new_inode); + cleanup_phase = 3; /* up(&new_inode->i_sem) when finished */ + + if ((S_ISDIR(new_inode->i_mode) && new_inode->i_nlink == 2) || + new_inode->i_nlink == 1) { + if (mds_orphan_open_count(new_inode) > 0) { + /* need to lock pending_dir before transaction */ + down(&mds->mds_pending_dir->d_inode->i_sem); + cleanup_phase = 4; /* up(&pending_dir->i_sem) */ + } else if (S_ISREG(new_inode->i_mode)) { + mds_pack_inode2fid(&body->fid1, new_inode); + mds_pack_inode2body(body, new_inode); + mds_pack_md(obd, req->rq_repmsg, 1, body, new_inode, MDS_PACK_MD_LOCK); } } +no_unlink: OBD_FAIL_WRITE(OBD_FAIL_MDS_REINT_RENAME_WRITE, de_srcdir->d_inode->i_sb); + /* Check if we are moving old entry into its child. 2.6 does not + check for this in vfs_rename() anymore */ + if (is_subdir(de_new, de_old)) + GOTO(cleanup, rc = -EINVAL); + handle = fsfilt_start(obd, de_tgtdir->d_inode, FSFILT_OP_RENAME, NULL); if (IS_ERR(handle)) GOTO(cleanup, rc = PTR_ERR(handle)); - /* FIXME need adjust the journal block count? */ - /* if the target should be moved to PENDING, we at first increase the - * link and later vfs_rename() will decrease the link count again */ - if (de_new->d_inode && - S_ISREG(de_new->d_inode->i_mode) && - de_new->d_inode->i_nlink == 1 && - mds_open_orphan_count(de_new->d_inode) > 0) { - rc = mds_add_link_orphan(rec, obd, de_new); - if (rc) - GOTO(cleanup, rc); - } - lock_kernel(); de_old->d_fsdata = req; de_new->d_fsdata = req; + rc = vfs_rename(de_srcdir->d_inode, de_old, de_tgtdir->d_inode, de_new); unlock_kernel(); + if (rc == 0 && new_inode != NULL && new_inode->i_nlink == 0) { + if (mds_orphan_open_count(new_inode) > 0) + rc = mds_orphan_add_link(rec, obd, de_new); + + if (rc == 1) + GOTO(cleanup, rc = 0); + + if (!S_ISREG(new_inode->i_mode)) + GOTO(cleanup, rc); + + if (!(body->valid & OBD_MD_FLEASIZE)) { + body->valid |= (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | + OBD_MD_FLATIME | OBD_MD_FLMTIME); + } else if (mds_log_op_unlink(obd, new_inode, + lustre_msg_buf(req->rq_repmsg,1,0), + req->rq_repmsg->buflens[1], + lustre_msg_buf(req->rq_repmsg,2,0), + req->rq_repmsg->buflens[2]) > 0) { + body->valid |= OBD_MD_FLCOOKIE; + } + } + GOTO(cleanup, rc); cleanup: rc = mds_finish_transno(mds, de_tgtdir ? de_tgtdir->d_inode : NULL, handle, req, rc, 0); + switch (cleanup_phase) { + case 4: + up(&mds->mds_pending_dir->d_inode->i_sem); + case 3: + UP_READ_I_ALLOC_SEM(new_inode); + case 2: + iput(new_inode); case 1: if (rc) { if (lock_count == 4) @@ -1783,8 +1850,7 @@ cleanup: ldlm_lock_decref(&(dlm_handles[0]), LCK_PW); } else { if (lock_count == 4) - ptlrpc_save_lock(req, - &(dlm_handles[3]), LCK_EX); + ptlrpc_save_lock(req,&(dlm_handles[3]), LCK_EX); ptlrpc_save_lock(req, &(dlm_handles[2]), LCK_EX); ptlrpc_save_lock(req, &(dlm_handles[1]), LCK_PW); ptlrpc_save_lock(req, &(dlm_handles[0]), LCK_PW); diff --git a/lustre/mds/mds_unlink_open.c b/lustre/mds/mds_unlink_open.c index a79e44c..0de3f3b 100644 --- a/lustre/mds/mds_unlink_open.c +++ b/lustre/mds/mds_unlink_open.c @@ -40,75 +40,6 @@ #include "mds_internal.h" - -/* If we are unlinking an open file/dir (i.e. creating an orphan) then - * we instead link the inode into the PENDING directory until it is - * finally released. We can't simply call mds_reint_rename() or some - * part thereof, because we don't have the inode to check for link - * count/open status until after it is locked. - * - * For lock ordering, we always get the PENDING, then pending_child lock - * last to avoid deadlocks. - */ - -int mds_open_unlink_rename(struct mds_update_record *rec, - struct obd_device *obd, struct dentry *dparent, - struct dentry *dchild, void **handle) -{ - struct mds_obd *mds = &obd->u.mds; - struct inode *pending_dir = mds->mds_pending_dir->d_inode; - struct dentry *pending_child; - char fidname[LL_FID_NAMELEN]; - int fidlen = 0, rc; - unsigned mode; - ENTRY; - - LASSERT(!mds_inode_is_orphan(dchild->d_inode)); - - down(&pending_dir->i_sem); - fidlen = ll_fid2str(fidname, dchild->d_inode->i_ino, - dchild->d_inode->i_generation); - - CDEBUG(D_HA, "pending destroy of %dx open file %s = %s\n", - mds_open_orphan_count(dchild->d_inode), rec->ur_name, fidname); - - pending_child = lookup_one_len(fidname, mds->mds_pending_dir, fidlen); - if (IS_ERR(pending_child)) - GOTO(out_lock, rc = PTR_ERR(pending_child)); - - if (pending_child->d_inode != NULL) { - CERROR("re-destroying orphan file %s?\n", rec->ur_name); - LASSERT(pending_child->d_inode == dchild->d_inode); - GOTO(out_dput, rc = 0); - } - - /* link() is semanticaly-wrong for S_IFDIR, so we set S_IFREG - * for linking and return real mode back then -bzzz */ - mode = dchild->d_inode->i_mode; - dchild->d_inode->i_mode = S_IFREG; - rc = vfs_link(dchild, pending_dir, pending_child); - if (rc) - CERROR("error linking orphan %s to PENDING: rc = %d\n", - rec->ur_name, rc); - else - mds_inode_set_orphan(dchild->d_inode); - - /* return mode and correct i_nlink if inode is directory */ - LASSERT(dchild->d_inode->i_nlink == 1); - dchild->d_inode->i_mode = mode; - if ((mode & S_IFMT) == S_IFDIR) { - dchild->d_inode->i_nlink++; - pending_dir->i_nlink++; - } - mark_inode_dirty(dchild->d_inode); - -out_dput: - dput(pending_child); -out_lock: - up(&pending_dir->i_sem); - RETURN(rc); -} - static int mds_osc_destroy_orphan(struct mds_obd *mds, struct inode *inode, struct lov_mds_md *lmm, @@ -149,7 +80,7 @@ static int mds_osc_destroy_orphan(struct mds_obd *mds, rc = obd_destroy(mds->mds_osc_exp, oa, lsm, &oti); obdo_free(oa); if (rc) - CERROR("destroy orphan objid 0x"LPX64" on ost error " + CDEBUG(D_INODE, "destroy orphan objid 0x"LPX64" on ost error " "%d\n", lsm->lsm_object_id, rc); out_free_memmd: obd_free_memmd(mds->mds_osc_exp, &lsm); @@ -198,19 +129,6 @@ static int mds_unlink_orphan(struct obd_device *obd, struct dentry *dchild, GOTO(out_free_lmm, rc); } - down(&inode->i_sem); - rc = fsfilt_get_md(obd, inode, lmm, mds->mds_max_mdsize); - up(&inode->i_sem); - - if (rc < 0) { - CERROR("Error %d reading eadata for ino %lu\n", - rc, inode->i_ino); - GOTO(out_free_lmm, rc); - } else if (rc > 0) { - lmm_size = rc; - rc = 0; - } - if (S_ISDIR(inode->i_mode)) rc = vfs_rmdir(pending_dir, dchild); else @@ -309,18 +227,21 @@ int mds_cleanup_orphans(struct obd_device *obd) } child_inode = dchild->d_inode; + DOWN_READ_I_ALLOC_SEM(child_inode); if (mds_inode_is_orphan(child_inode) && - mds_open_orphan_count(child_inode)) { - CWARN("orphan %s was re-opened during recovery\n", d_name); + mds_orphan_open_count(child_inode)) { + UP_READ_I_ALLOC_SEM(child_inode); + CWARN("orphan %s re-opened during recovery\n", d_name); GOTO(next, rc = 0); } + UP_READ_I_ALLOC_SEM(child_inode); rc = mds_unlink_orphan(obd, dchild, child_inode, pending_dir); if (rc == 0) { item ++; CWARN("removed orphan %s from MDS and OST\n", d_name); } else { - CERROR("removed orphan %s from MDS and OST failed," + CDEBUG(D_INODE, "removed orphan %s from MDS/OST failed," " rc = %d\n", d_name, rc); rc = 0; } diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c index 0429ceb..451a5e9 100644 --- a/lustre/obdclass/genops.c +++ b/lustre/obdclass/genops.c @@ -534,7 +534,7 @@ struct obd_import *class_new_import(void) void class_destroy_import(struct obd_import *import) { LASSERT(import != NULL); - LASSERT((unsigned long)import != 0x5a5a5a5a); + LASSERT(import != LP_POISON); class_handle_unhash(&import->imp_handle); diff --git a/lustre/obdclass/llog_ioctl.c b/lustre/obdclass/llog_ioctl.c index 6c53036..86bee78 100644 --- a/lustre/obdclass/llog_ioctl.c +++ b/lustre/obdclass/llog_ioctl.c @@ -341,7 +341,7 @@ int llog_ioctl(struct llog_ctxt *ctxt, int cmd, struct obd_ioctl_data *data) case OBD_IOC_LLOG_REMOVE: { struct llog_logid plain; - if (handle->lgh_hdr->llh_flags & cpu_to_le32(LLOG_F_IS_PLAIN)) { + if (handle->lgh_hdr->llh_flags & LLOG_F_IS_PLAIN) { err = llog_destroy(handle); if (!err) llog_free_handle(handle); @@ -378,7 +378,7 @@ out: EXPORT_SYMBOL(llog_ioctl); int llog_catalog_list(struct obd_device *obd, int count, - struct obd_ioctl_data *data) + struct obd_ioctl_data *data) { int size, i; struct llog_catid *idarray; diff --git a/lustre/obdclass/llog_test.c b/lustre/obdclass/llog_test.c index 049db79..88ac16c 100644 --- a/lustre/obdclass/llog_test.c +++ b/lustre/obdclass/llog_test.c @@ -364,8 +364,6 @@ static int llog_cancel_rec_cb(struct llog_handle *llh, struct llog_rec_hdr *rec, RETURN(0); } - - /* Test log and catalogue processing */ static int llog_test_5(struct obd_device *obd) { diff --git a/lustre/obdclass/lprocfs_status.c b/lustre/obdclass/lprocfs_status.c index d5ef04c..9933871 100644 --- a/lustre/obdclass/lprocfs_status.c +++ b/lustre/obdclass/lprocfs_status.c @@ -647,13 +647,13 @@ int lprocfs_alloc_obd_stats(struct obd_device *obd, unsigned num_private_stats) LPROCFS_OBD_OP_INIT(num_private_stats, stats, san_preprw); LPROCFS_OBD_OP_INIT(num_private_stats, stats, init_export); LPROCFS_OBD_OP_INIT(num_private_stats, stats, destroy_export); - LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_init); - LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_finish); - LPROCFS_OBD_OP_INIT(num_private_stats, stats, pin); + LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_init); + LPROCFS_OBD_OP_INIT(num_private_stats, stats, llog_finish); + LPROCFS_OBD_OP_INIT(num_private_stats, stats, pin); LPROCFS_OBD_OP_INIT(num_private_stats, stats, unpin); LPROCFS_OBD_OP_INIT(num_private_stats, stats, import_event); LPROCFS_OBD_OP_INIT(num_private_stats, stats, notify); - + for (i = num_private_stats; i < num_stats; i++) { /* If this LBUGs, it is likely that an obd * operation was added to struct obd_ops in @@ -787,6 +787,73 @@ void lprocfs_oh_clear(struct obd_histogram *oh) } EXPORT_SYMBOL(lprocfs_oh_clear); +int lprocfs_obd_rd_recovery_status(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = data; + int len = 0, n, + connected = obd->obd_connected_clients, + max_recoverable = obd->obd_max_recoverable_clients, + recoverable = obd->obd_recoverable_clients, + completed = max_recoverable - recoverable, + queue_len = obd->obd_requests_queued_for_recovery, + replayed = obd->obd_replayed_requests; + __u64 next_transno = obd->obd_next_recovery_transno; + + LASSERT(obd != NULL); + *eof = 1; + + n = snprintf(page, count, "status: "); + page += n; len += n; count -= n; + if (obd->obd_max_recoverable_clients == 0) { + n = snprintf(page, count, "INACTIVE\n"); + return len + n; + } + + /* sampled unlocked, but really... */ + if (obd->obd_recovering == 0) { + n = snprintf(page, count, "COMPLETE\n"); + page += n; len += n; count -= n; + + n = snprintf(page, count, "recovery_start: %lu\n", + obd->obd_recovery_start); + page += n; len += n; count -= n; + n = snprintf(page, count, "recovery_end: %lu\n", + obd->obd_recovery_end); + page += n; len += n; count -= n; + n = snprintf(page, count, "recovered_clients: %d\n", + completed); + page += n; len += n; count -= n; + n = snprintf(page, count, "unrecovered_clients: %d\n", + obd->obd_recoverable_clients); + page += n; len += n; count -= n; + n = snprintf(page, count, "last_transno: "LPD64"\n", + next_transno - 1); + page += n; len += n; count -= n; + n = snprintf(page, count, "replayed_requests: %d\n", replayed); + return len + n; + } + + n = snprintf(page, count, "RECOVERING\n"); + page += n; len += n; count -= n; + n = snprintf(page, count, "recovery_start: %lu\n", + obd->obd_recovery_start); + page += n; len += n; count -= n; + n = snprintf(page, count, "connected_clients: %d/%d\n", + connected, max_recoverable); + page += n; len += n; count -= n; + n = snprintf(page, count, "completed_clients: %d/%d\n", + completed, max_recoverable); + page += n; len += n; count -= n; + n = snprintf(page, count, "replayed_requests: %d/??\n", replayed); + page += n; len += n; count -= n; + n = snprintf(page, count, "queued_requests: %d\n", queue_len); + page += n; len += n; count -= n; + n = snprintf(page, count, "next_transno: "LPD64"\n", next_transno); + return len + n; +} +EXPORT_SYMBOL(lprocfs_obd_rd_recovery_status); + #endif /* LPROCFS*/ EXPORT_SYMBOL(lprocfs_register); diff --git a/lustre/obdclass/sysctl.c b/lustre/obdclass/sysctl.c index f07cc45..b7fa894 100644 --- a/lustre/obdclass/sysctl.c +++ b/lustre/obdclass/sysctl.c @@ -52,6 +52,7 @@ enum { OBD_TIMEOUT, /* RPC timeout before recovery/intr */ OBD_DUMP_ON_TIMEOUT, /* dump kernel debug log upon eviction */ OBD_UPCALL, /* path to recovery upcall */ + OBD_MEMUSED, /* bytes currently OBD_ALLOCated */ OBD_SYNCFILTER, /* XXX temporary, as we play with sync osts.. */ OBD_LDLM_TIMEOUT, /* LDLM timeout for ASTs before client eviction */ }; @@ -69,6 +70,8 @@ static ctl_table obd_table[] = { /* XXX need to lock so we avoid update races with recovery upcall! */ {OBD_UPCALL, "upcall", obd_lustre_upcall, 128, 0644, NULL, &proc_dostring, &sysctl_string }, + {OBD_MEMUSED, "memused", (int *)&obd_memory.counter, + sizeof(int), 0644, NULL, &proc_dointvec}, {OBD_SYNCFILTER, "filter_sync_on_commit", &obd_sync_filter, sizeof(int), 0644, NULL, &proc_dointvec}, {OBD_LDLM_TIMEOUT, "ldlm_timeout", &ldlm_timeout, sizeof(int), 0644, diff --git a/lustre/obdecho/.cvsignore b/lustre/obdecho/.cvsignore index d09de6b..5d26f00 100644 --- a/lustre/obdecho/.cvsignore +++ b/lustre/obdecho/.cvsignore @@ -4,7 +4,6 @@ config.status configure Makefile .deps -.depend TAGS .*.cmd autoMakefile.in @@ -13,3 +12,4 @@ autoMakefile *.mod.c .*.flags .tmp_versions +.depend diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index dd4e563..eabd4a8 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -162,8 +162,6 @@ static int filter_client_add(struct obd_device *obd, struct filter_obd *filter, RETURN(-ENOMEM); } if (test_and_set_bit(cl_idx, bitmap)) { - CERROR("FILTER client %d: found bit is set in bitmap\n", - cl_idx); cl_idx = find_next_zero_bit(bitmap, FILTER_LR_MAX_CLIENTS, cl_idx); @@ -479,6 +477,7 @@ static int filter_init_server_data(struct obd_device *obd, struct file * filp) fcd = NULL; exp->exp_replay_needed = 1; obd->obd_recoverable_clients++; + obd->obd_max_recoverable_clients++; class_export_put(exp); CDEBUG(D_OTHER, "client at idx %d has last_rcvd = "LPU64"\n", @@ -500,6 +499,7 @@ static int filter_init_server_data(struct obd_device *obd, struct file * filp) le64_to_cpu(fsd->fsd_last_transno)); obd->obd_next_recovery_transno = obd->obd_last_committed + 1; obd->obd_recovering = 1; + obd->obd_recovery_start = LTIME_S(CURRENT_TIME); } out: @@ -978,10 +978,17 @@ struct dentry *filter_fid2dentry(struct obd_device *obd, if (dir_dentry == NULL) filter_parent_unlock(dparent); if (IS_ERR(dchild)) { - CERROR("child lookup error %ld\n", PTR_ERR(dchild)); + CERROR("%s: child lookup error %ld\n", obd->obd_name, + PTR_ERR(dchild)); RETURN(dchild); } + if (dchild->d_inode != NULL && is_bad_inode(dchild->d_inode)) { + CERROR("%s: got bad inode "LPU64"\n", obd->obd_name, id); + f_dput(dchild); + RETURN(ERR_PTR(-ENOENT)); + } + CDEBUG(D_INODE, "got child objid %s: %p, count = %d\n", name, dchild, atomic_read(&dchild->d_count)); @@ -1048,10 +1055,10 @@ static int filter_intent_policy(struct ldlm_namespace *ns, struct ldlm_resource *res = lock->l_resource; ldlm_processing_policy policy; struct ost_lvb *res_lvb, *reply_lvb; + struct ldlm_reply *rep; struct list_head *tmp; ldlm_error_t err; - int tmpflags = 0, rc, repsize[2] = {sizeof(struct ldlm_reply), - sizeof(struct ost_lvb) }; + int tmpflags = 0, rc, repsize[2] = {sizeof(*rep), sizeof(*reply_lvb)}; ENTRY; policy = ldlm_get_processing_policy(res); @@ -1062,6 +1069,9 @@ static int filter_intent_policy(struct ldlm_namespace *ns, if (rc) RETURN(req->rq_status = rc); + rep = lustre_msg_buf(req->rq_repmsg, 0, sizeof(*rep)); + LASSERT(rep != NULL); + reply_lvb = lustre_msg_buf(req->rq_repmsg, 1, sizeof(*reply_lvb)); LASSERT(reply_lvb != NULL); @@ -1103,7 +1113,7 @@ static int filter_intent_policy(struct ldlm_namespace *ns, down(&res->lr_lvb_sem); res_lvb = res->lr_lvb_data; LASSERT(res_lvb != NULL); - memcpy(reply_lvb, res_lvb, sizeof(*reply_lvb)); + *reply_lvb = *res_lvb; up(&res->lr_lvb_sem); list_for_each(tmp, &res->lr_granted) { @@ -1134,7 +1144,13 @@ static int filter_intent_policy(struct ldlm_namespace *ns, if (l == NULL) RETURN(ELDLM_LOCK_ABORTED); - LASSERT(l->l_glimpse_ast != NULL); + if (l->l_glimpse_ast == NULL) { + /* We are racing with unlink(); just return -ENOENT */ + rep->lock_policy_res1 = -ENOENT; + goto out; + } + + LASSERTF(l->l_glimpse_ast != NULL, "l == %p", l); rc = l->l_glimpse_ast(l, NULL); /* this will update the LVB */ if (rc != 0 && res->lr_namespace->ns_lvbo && res->lr_namespace->ns_lvbo->lvbo_update) { @@ -1142,10 +1158,10 @@ static int filter_intent_policy(struct ldlm_namespace *ns, } down(&res->lr_lvb_sem); - reply_lvb->lvb_size = res_lvb->lvb_size; - reply_lvb->lvb_blocks = res_lvb->lvb_blocks; + *reply_lvb = *res_lvb; up(&res->lr_lvb_sem); + out: LDLM_LOCK_PUT(l); RETURN(ELDLM_LOCK_ABORTED); @@ -1158,6 +1174,7 @@ int filter_common_setup(struct obd_device *obd, obd_count len, void *buf, struct lustre_cfg* lcfg = buf; struct filter_obd *filter = &obd->u.filter; struct vfsmount *mnt; + char ns_name[48]; int rc = 0; ENTRY; @@ -1221,8 +1238,8 @@ int filter_common_setup(struct obd_device *obd, obd_count len, void *buf, spin_lock_init(&filter->fo_w_discont_blocks.oh_lock); filter->fo_readcache_max_filesize = FILTER_MAX_CACHE_SIZE; - obd->obd_namespace = ldlm_namespace_new("filter-tgt", - LDLM_NAMESPACE_SERVER); + sprintf(ns_name, "filter-%s", obd->obd_uuid.uuid); + obd->obd_namespace = ldlm_namespace_new(ns_name, LDLM_NAMESPACE_SERVER); if (obd->obd_namespace == NULL) GOTO(err_post, rc = -ENOMEM); obd->obd_namespace->ns_lvbp = obd; @@ -1317,6 +1334,7 @@ static int filter_cleanup(struct obd_device *obd, int flags) RETURN(-EBUSY); } } + target_cleanup_recovery(obd); ldlm_namespace_free(obd->obd_namespace, flags & OBD_OPT_FORCE); @@ -1579,7 +1597,7 @@ struct dentry *__filter_oa2dentry(struct obd_device *obd, } if (dchild->d_inode == NULL) { - CERROR("%s: %s on non-existent object: "LPU64"\n", + CERROR("%s: %s on non-existent object: "LPU64"\n", obd->obd_name, what, oa->o_id); f_dput(dchild); RETURN(ERR_PTR(-ENOENT)); @@ -2375,7 +2393,7 @@ static struct llog_operations filter_size_orig_logops = { }; static int filter_llog_init(struct obd_device *obd, struct obd_device *tgt, - int count, struct llog_catid *logid) + int count, struct llog_catid *catid) { struct llog_ctxt *ctxt; int rc; diff --git a/lustre/obdfilter/filter_internal.h b/lustre/obdfilter/filter_internal.h index 6203418..688f28d 100644 --- a/lustre/obdfilter/filter_internal.h +++ b/lustre/obdfilter/filter_internal.h @@ -92,7 +92,7 @@ enum { LPROC_FILTER_LAST, }; -#define FILTER_MAX_CACHE_SIZE OBD_OBJECT_EOF +#define FILTER_MAX_CACHE_SIZE (32 * 1024 * 1024) /* was OBD_OBJECT_EOF */ /* filter.c */ void f_dput(struct dentry *); diff --git a/lustre/obdfilter/filter_io_24.c b/lustre/obdfilter/filter_io_24.c index 4181c55..8d43c7cc 100644 --- a/lustre/obdfilter/filter_io_24.c +++ b/lustre/obdfilter/filter_io_24.c @@ -252,6 +252,7 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, unsigned long now = jiffies; /* DEBUGGING OST TIMEOUTS */ void *wait_handle; ENTRY; + LASSERT(oti != NULL); LASSERT(objcount == 1); LASSERT(current->journal_info == NULL); @@ -307,6 +308,7 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso, niocount, res, oti); if (IS_ERR(oti->oti_handle)) { + up(&inode->i_sem); rc = PTR_ERR(oti->oti_handle); CDEBUG(rc == -ENOSPC ? D_INODE : D_ERROR, "error starting transaction: rc = %d\n", rc); @@ -318,6 +320,7 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, CERROR("slow brw_start %lus\n", (jiffies - now) / HZ); iattr_from_obdo(&iattr,oa,OBD_MD_FLATIME|OBD_MD_FLMTIME|OBD_MD_FLCTIME); + /* filter_direct_io drops i_sem */ rc = filter_direct_io(OBD_BRW_WRITE, res->dentry, iobuf, exp, &iattr, oti, &wait_handle); if (rc == 0) diff --git a/lustre/obdfilter/filter_io_26.c b/lustre/obdfilter/filter_io_26.c index 9787aaa..77eb003 100644 --- a/lustre/obdfilter/filter_io_26.c +++ b/lustre/obdfilter/filter_io_26.c @@ -228,9 +228,9 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, if (iattr.ia_size > inode->i_size) { CDEBUG(D_INFO, "setting i_size to "LPU64"\n", iattr.ia_size); - + iattr.ia_valid |= ATTR_SIZE; - + fsfilt_setattr(obd, res->dentry, oti->oti_handle, &iattr, 0); } diff --git a/lustre/obdfilter/filter_log.c b/lustre/obdfilter/filter_log.c index eb3df7a..f462007 100644 --- a/lustre/obdfilter/filter_log.c +++ b/lustre/obdfilter/filter_log.c @@ -97,9 +97,11 @@ void filter_cancel_cookies_cb(struct obd_device *obd, __u64 transno, void *cb_data, int error) { struct llog_cookie *cookie = cb_data; - llog_cancel(llog_get_context(obd, cookie->lgc_subsys + 1), - NULL, 1, cookie, 0); - //NULL, 1, cookie, OBD_LLOG_FL_SENDNOW); + int rc; + rc = llog_cancel(llog_get_context(obd, cookie->lgc_subsys + 1), + NULL, 1, cookie, 0); + if (rc) + CERROR("error cancelling log cookies: rc = %d\n", rc); OBD_FREE(cb_data, sizeof(struct llog_cookie)); } @@ -119,7 +121,7 @@ int filter_recov_log_unlink_cb(struct llog_handle *llh, obd_id oid; int rc = 0; ENTRY; - + if (!(le32_to_cpu(llh->lgh_hdr->llh_flags) & LLOG_F_IS_PLAIN)) { CERROR("log is not plain\n"); RETURN(-EINVAL); diff --git a/lustre/obdfilter/filter_lvb.c b/lustre/obdfilter/filter_lvb.c index 3ca1fad..bba72c7 100644 --- a/lustre/obdfilter/filter_lvb.c +++ b/lustre/obdfilter/filter_lvb.c @@ -36,6 +36,7 @@ #include "filter_internal.h" +/* Called with res->lr_lvb_sem held */ static int filter_lvbo_init(struct ldlm_resource *res) { int rc = 0; @@ -45,13 +46,13 @@ static int filter_lvbo_init(struct ldlm_resource *res) ENTRY; LASSERT(res); + LASSERT(down_trylock(&res->lr_lvb_sem) != 0); /* we only want lvb's for object resources */ /* check for internal locks: these have name[1] != 0 */ if (res->lr_name.name[1]) RETURN(0); - down(&res->lr_lvb_sem); if (res->lr_lvb_data) GOTO(out, rc = 0); @@ -85,7 +86,6 @@ static int filter_lvbo_init(struct ldlm_resource *res) f_dput(dentry); out: /* Don't free lvb data on lookup error */ - up(&res->lr_lvb_sem); return rc; } diff --git a/lustre/obdfilter/lproc_obdfilter.c b/lustre/obdfilter/lproc_obdfilter.c index 8f64926..f5ba5ec 100644 --- a/lustre/obdfilter/lproc_obdfilter.c +++ b/lustre/obdfilter/lproc_obdfilter.c @@ -140,6 +140,7 @@ static struct lprocfs_vars lprocfs_obd_vars[] = { { "readcache_max_filesize", lprocfs_filter_rd_readcache, lprocfs_filter_wr_readcache, 0 }, + { "recovery_status", lprocfs_obd_rd_recovery_status, 0, 0 }, { 0 } }; diff --git a/lustre/osc/lproc_osc.c b/lustre/osc/lproc_osc.c index 078d0d1..7060ee1 100644 --- a/lustre/osc/lproc_osc.c +++ b/lustre/osc/lproc_osc.c @@ -296,21 +296,22 @@ static int osc_rpc_stats_seq_show(struct seq_file *seq, void *v) struct client_obd *cli = &dev->u.cli; unsigned long flags; unsigned long read_tot = 0, write_tot = 0, read_cum, write_cum; - int i, rpcs, r, w; + int i; do_gettimeofday(&now); spin_lock_irqsave(&cli->cl_loi_list_lock, flags); - rpcs = cli->cl_brw_in_flight; - r = cli->cl_pending_r_pages; - w = cli->cl_pending_w_pages; - seq_printf(seq, "snapshot_time: %lu:%lu (secs:usecs)\n", now.tv_sec, now.tv_usec); - seq_printf(seq, "RPCs in flight: %d\n", rpcs); - seq_printf(seq, "pending write pages: %d\n", w); - seq_printf(seq, "pending read pages: %d\n", r); + seq_printf(seq, "read RPCs in flight: %d\n", + cli->cl_r_in_flight); + seq_printf(seq, "write RPCs in flight: %d\n", + cli->cl_w_in_flight); + seq_printf(seq, "pending write pages: %d\n", + cli->cl_pending_w_pages); + seq_printf(seq, "pending read pages: %d\n", + cli->cl_pending_r_pages); seq_printf(seq, "\n\t\t\tread\t\t\twrite\n"); seq_printf(seq, "pages per rpc rpcs %% cum %% |"); diff --git a/lustre/osc/osc_create.c b/lustre/osc/osc_create.c index 754b46e..d5a6141 100644 --- a/lustre/osc/osc_create.c +++ b/lustre/osc/osc_create.c @@ -72,20 +72,24 @@ static int osc_interpret_create(struct ptlrpc_request *req, void *data, oscc = req->rq_async_args.pointer_arg[0]; spin_lock(&oscc->oscc_lock); + oscc->oscc_flags &= ~OSCC_FLAG_CREATING; if (body) oscc->oscc_last_id = body->oa.o_id; if (rc == -ENOSPC) { DEBUG_REQ(D_INODE, req, "OST out of space, flagging"); oscc->oscc_flags |= OSCC_FLAG_NOSPC; + spin_unlock(&oscc->oscc_lock); } else if (rc != 0 && rc != -EIO) { DEBUG_REQ(D_ERROR, req, "unknown rc %d from async create: failing oscc", rc); oscc->oscc_flags |= OSCC_FLAG_RECOVERING; + spin_unlock(&oscc->oscc_lock); ptlrpc_fail_import(req->rq_import, req->rq_import_generation); + } else { + spin_unlock(&oscc->oscc_lock); } - oscc->oscc_flags &= ~OSCC_FLAG_CREATING; - spin_unlock(&oscc->oscc_lock); + CDEBUG(D_HA, "preallocated through id "LPU64" (last used "LPU64")\n", oscc->oscc_last_id, oscc->oscc_next_id); @@ -221,19 +225,22 @@ int osc_create(struct obd_export *exp, struct obdo *oa, RETURN(osc_real_create(exp, oa, ea, oti)); } - lsm = *ea; - if (lsm == NULL) { - rc = obd_alloc_memmd(exp, &lsm); - if (rc < 0) - RETURN(rc); - } - /* this is the special case where create removes orphans */ if ((oa->o_valid & OBD_MD_FLFLAGS) && oa->o_flags == OBD_FL_DELORPHAN) { + spin_lock(&oscc->oscc_lock); + if (oscc->oscc_flags & OSCC_FLAG_SYNC_IN_PROGRESS) { + spin_unlock(&oscc->oscc_lock); + return -EBUSY; + } + if (!(oscc->oscc_flags & OSCC_FLAG_RECOVERING)) { + spin_unlock(&oscc->oscc_lock); + return 0; + } + oscc->oscc_flags |= OSCC_FLAG_SYNC_IN_PROGRESS; CDEBUG(D_HA, "%s: oscc recovery started\n", exp->exp_obd->obd_name); - LASSERT(oscc->oscc_flags & OSCC_FLAG_RECOVERING); + spin_unlock(&oscc->oscc_lock); /* delete from next_id on up */ oa->o_valid |= OBD_MD_FLID; @@ -245,17 +252,17 @@ int osc_create(struct obd_export *exp, struct obdo *oa, rc = osc_real_create(exp, oa, ea, NULL); spin_lock(&oscc->oscc_lock); + oscc->oscc_flags &= ~OSCC_FLAG_SYNC_IN_PROGRESS; if (rc == 0 || rc == -ENOSPC) { if (rc == -ENOSPC) oscc->oscc_flags |= OSCC_FLAG_NOSPC; oscc->oscc_flags &= ~OSCC_FLAG_RECOVERING; oscc->oscc_last_id = oa->o_id; - CDEBUG(D_HA, "%s: oscc recovery finished: %d\n", + CDEBUG(D_HA, "%s: oscc recovery finished: %d\n", exp->exp_obd->obd_name, rc); wake_up(&oscc->oscc_waitq); - } else { - CDEBUG(D_ERROR, "%s: oscc recovery failed: %d\n", + CDEBUG(D_ERROR, "%s: oscc recovery failed: %d\n", exp->exp_obd->obd_name, rc); } spin_unlock(&oscc->oscc_lock); @@ -264,6 +271,13 @@ int osc_create(struct obd_export *exp, struct obdo *oa, RETURN(rc); } + lsm = *ea; + if (lsm == NULL) { + rc = obd_alloc_memmd(exp, &lsm); + if (rc < 0) + RETURN(rc); + } + while (try_again) { /* If orphans are being recovered, then we must wait until it is finished before we can continue with create. */ diff --git a/lustre/osc/osc_internal.h b/lustre/osc/osc_internal.h index b14d013..bba36c0 100644 --- a/lustre/osc/osc_internal.h +++ b/lustre/osc/osc_internal.h @@ -47,6 +47,7 @@ struct osc_cache_waiter { #define OSCC_FLAG_RECOVERING 1 #define OSCC_FLAG_CREATING 2 #define OSCC_FLAG_NOSPC 4 /* can't create more objects on this OST */ +#define OSCC_FLAG_SYNC_IN_PROGRESS 8 /* only allow one thread to sync */ int osc_create(struct obd_export *exp, struct obdo *oa, struct lov_stripe_md **ea, struct obd_trans_info *oti); diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index e1cc5ab..918ba44 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -533,6 +533,11 @@ static void osc_consume_write_grant(struct client_obd *cli, LASSERT(cli->cl_avail_grant >= 0); } +static unsigned long rpcs_in_flight(struct client_obd *cli) +{ + return cli->cl_r_in_flight + cli->cl_w_in_flight; +} + /* caller must hold loi_list_lock */ void osc_wake_cache_waiters(struct client_obd *cli) { @@ -549,9 +554,9 @@ void osc_wake_cache_waiters(struct client_obd *cli) /* if still dirty cache but no grant wait for pending RPCs that * may yet return us some grant before doing sync writes */ - if (cli->cl_brw_in_flight && cli->cl_avail_grant < PAGE_SIZE) { - CDEBUG(D_CACHE, "%d BRWs in flight, no grant\n", - cli->cl_brw_in_flight); + if (cli->cl_w_in_flight && cli->cl_avail_grant < PAGE_SIZE) { + CDEBUG(D_CACHE, "%u BRW writes in flight, no grant\n", + cli->cl_w_in_flight); return; } @@ -751,7 +756,9 @@ static int osc_brw_prep_request(int cmd, struct obd_import *imp,struct obdo *oa, struct brw_page *pg_prev = pg - 1; LASSERT(pg->count > 0); - LASSERT((pg->off & ~PAGE_MASK) + pg->count <= PAGE_SIZE); + LASSERTF((pg->off & ~PAGE_MASK) + pg->count <= PAGE_SIZE, + "i: %d pg: %p off: "LPU64", count: %u\n", i, pg, + pg->off, pg->count); LASSERTF(i == 0 || pg->off > pg_prev->off, "i %d p_c %u pg %p [pri %lu ind %lu] off "LPU64 " prev_pg %p [pri %lu ind %lu] off "LPU64"\n", @@ -1211,7 +1218,10 @@ static int brw_interpret_oap(struct ptlrpc_request *request, /* We need to decrement before osc_ap_completion->osc_wake_cache_waiters * is called so we know whether to go to sync BRWs or wait for more * RPCs to complete */ - cli->cl_brw_in_flight--; + if (request->rq_reqmsg->opc == OST_WRITE) + cli->cl_w_in_flight--; + else + cli->cl_r_in_flight--; /* the caller may re-use the oap after the completion call so * we need to clean it up a little */ @@ -1387,8 +1397,7 @@ static int osc_send_oap_rpc(struct client_obd *cli, struct lov_oinfo *loi, /* take the page out of our book-keeping */ list_del_init(&oap->oap_pending_item); lop_update_pending(cli, lop, cmd, -1); - if (!list_empty(&oap->oap_urgent_item)) - list_del_init(&oap->oap_urgent_item); + list_del_init(&oap->oap_urgent_item); /* ask the caller for the size of the io as the rpc leaves. */ if (!(oap->oap_async_flags & ASYNC_COUNT_STABLE)) @@ -1455,17 +1464,20 @@ static int osc_send_oap_rpc(struct client_obd *cli, struct lov_oinfo *loi, #ifdef __KERNEL__ if (cmd == OBD_BRW_READ) { lprocfs_oh_tally_log2(&cli->cl_read_page_hist, page_count); - lprocfs_oh_tally(&cli->cl_read_rpc_hist, cli->cl_brw_in_flight); + lprocfs_oh_tally(&cli->cl_read_rpc_hist, cli->cl_r_in_flight); } else { lprocfs_oh_tally_log2(&cli->cl_write_page_hist, page_count); lprocfs_oh_tally(&cli->cl_write_rpc_hist, - cli->cl_brw_in_flight); + cli->cl_w_in_flight); } #endif spin_lock(&cli->cl_loi_list_lock); - cli->cl_brw_in_flight++; + if (cmd == OBD_BRW_READ) + cli->cl_r_in_flight++; + else + cli->cl_w_in_flight++; /* queued sync pages can be torn down while the pages * were between the pending list and the rpc */ list_for_each(pos, &aa->aa_oaps) { @@ -1478,8 +1490,9 @@ static int osc_send_oap_rpc(struct client_obd *cli, struct lov_oinfo *loi, } } - CDEBUG(D_INODE, "req %p: %d pages, aa %p. now %d in flight\n", request, - page_count, aa, cli->cl_brw_in_flight); + CDEBUG(D_INODE, "req %p: %d pages, aa %p. now %dr/%dw in flight\n", + request, page_count, aa, cli->cl_r_in_flight, + cli->cl_w_in_flight); oap->oap_request = ptlrpc_request_addref(request); request->rq_interpret_reply = brw_interpret_oap; @@ -1603,9 +1616,9 @@ static void osc_check_rpcs(struct client_obd *cli) ENTRY; while ((loi = osc_next_loi(cli)) != NULL) { - LOI_DEBUG(loi, "%d in flight\n", cli->cl_brw_in_flight); + LOI_DEBUG(loi, "%lu in flight\n", rpcs_in_flight(cli)); - if (cli->cl_brw_in_flight >= cli->cl_max_rpcs_in_flight) + if (rpcs_in_flight(cli) >= cli->cl_max_rpcs_in_flight) break; /* attempt some read/write balancing by alternating between @@ -1670,7 +1683,7 @@ static int ocw_granted(struct client_obd *cli, struct osc_cache_waiter *ocw) int rc; ENTRY; spin_lock(&cli->cl_loi_list_lock); - rc = list_empty(&ocw->ocw_entry) || cli->cl_brw_in_flight == 0; + rc = list_empty(&ocw->ocw_entry) || rpcs_in_flight(cli) == 0; spin_unlock(&cli->cl_loi_list_lock); RETURN(rc); }; @@ -1701,7 +1714,7 @@ static int osc_enter_cache(struct client_obd *cli, struct lov_oinfo *loi, /* Make sure that there are write rpcs in flight to wait for. This * is a little silly as this object may not have any pending but * other objects sure might. */ - if (cli->cl_brw_in_flight) { + if (cli->cl_w_in_flight) { list_add_tail(&ocw.ocw_entry, &cli->cl_cache_waiters); init_waitqueue_head(&ocw.ocw_waitq); ocw.ocw_oap = oap; @@ -2369,6 +2382,8 @@ static int osc_enqueue(struct obd_export *exp, struct lov_stripe_md *lsm, struct ldlm_res_id res_id = { .name = {lsm->lsm_object_id} }; struct obd_device *obd = exp->exp_obd; struct ost_lvb lvb; + struct ldlm_reply *rep; + struct ptlrpc_request *req = NULL; int rc; ENTRY; @@ -2421,10 +2436,34 @@ static int osc_enqueue(struct obd_export *exp, struct lov_stripe_md *lsm, } no_match: - rc = ldlm_cli_enqueue(exp, NULL, obd->obd_namespace, res_id, type, + if (*flags & LDLM_FL_HAS_INTENT) { + int size[2] = {sizeof(struct ldlm_request), sizeof(lvb)}; + + req = ptlrpc_prep_req(class_exp2cliimp(exp), LDLM_ENQUEUE, 1, + size, NULL); + if (req == NULL) + RETURN(-ENOMEM); + + size[0] = sizeof(*rep); + req->rq_replen = lustre_msg_size(2, size); + } + + rc = ldlm_cli_enqueue(exp, req, obd->obd_namespace, res_id, type, policy, mode, flags, bl_cb, cp_cb, gl_cb, data, &lvb, sizeof(lvb), lustre_swab_ost_lvb, lockh); + if (req != NULL) { + if (rc == ELDLM_LOCK_ABORTED) { + /* swabbed by ldlm_cli_enqueue() */ + LASSERT_REPSWABBED(req, 0); + rep = lustre_msg_buf(req->rq_repmsg, 0, sizeof(*rep)); + LASSERT(rep != NULL); + if (rep->lock_policy_res1) + rc = rep->lock_policy_res1; + } + ptlrpc_req_finished(req); + } + if ((*flags & LDLM_FL_HAS_INTENT && rc == ELDLM_LOCK_ABORTED) || !rc) { CDEBUG(D_INODE, "received kms == "LPU64", blocks == "LPU64"\n", lvb.lvb_size, lvb.lvb_blocks); @@ -2780,9 +2819,11 @@ static int osc_set_info(struct obd_export *exp, obd_count keylen, ctxt = llog_get_context(exp->exp_obd, LLOG_UNLINK_ORIG_CTXT); if (ctxt) { - rc = llog_initiator_connect(ctxt); - if (rc) - RETURN(rc); + if (rc == 0) + rc = llog_initiator_connect(ctxt); + else + CERROR("cannot establish the connect for ctxt %p: %d\n", + ctxt, rc); } imp->imp_server_timeout = 1; @@ -2901,6 +2942,14 @@ static int osc_import_event(struct obd_device *obd, break; } case IMP_EVENT_ACTIVE: { + /* Only do this on the MDS OSC's */ + if (imp->imp_server_timeout) { + struct osc_creator *oscc = &obd->u.cli.cl_oscc; + + spin_lock(&oscc->oscc_lock); + oscc->oscc_flags &= ~OSCC_FLAG_NOSPC; + spin_unlock(&oscc->oscc_lock); + } if (obd->obd_observer) rc = obd_notify(obd->obd_observer, obd, 1); break; diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index b778df5..9ca00f3 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -964,11 +964,17 @@ static int ost_handle(struct ptlrpc_request *req) case OST_CREATE: CDEBUG(D_INODE, "create\n"); OBD_FAIL_RETURN(OBD_FAIL_OST_CREATE_NET, 0); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_ENOSPC)) + GOTO(out, rc = -ENOSPC); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_EROFS)) + GOTO(out, rc = -EROFS); rc = ost_create(exp, req, oti); break; case OST_DESTROY: CDEBUG(D_INODE, "destroy\n"); OBD_FAIL_RETURN(OBD_FAIL_OST_DESTROY_NET, 0); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_EROFS)) + GOTO(out, rc = -EROFS); rc = ost_destroy(exp, req, oti); break; case OST_GETATTR: @@ -984,6 +990,10 @@ static int ost_handle(struct ptlrpc_request *req) case OST_WRITE: CDEBUG(D_INODE, "write\n"); OBD_FAIL_RETURN(OBD_FAIL_OST_BRW_NET, 0); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_ENOSPC)) + GOTO(out, rc = -ENOSPC); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_EROFS)) + GOTO(out, rc = -EROFS); rc = ost_brw_write(req, oti); LASSERT(current->journal_info == NULL); /* ost_brw sends its own replies */ @@ -1010,6 +1020,8 @@ static int ost_handle(struct ptlrpc_request *req) case OST_PUNCH: CDEBUG(D_INODE, "punch\n"); OBD_FAIL_RETURN(OBD_FAIL_OST_PUNCH_NET, 0); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_EROFS)) + GOTO(out, rc = -EROFS); rc = ost_punch(exp, req, oti); break; case OST_STATFS: diff --git a/lustre/portals/archdep.m4 b/lustre/portals/archdep.m4 index c705006..531a5bd 100644 --- a/lustre/portals/archdep.m4 +++ b/lustre/portals/archdep.m4 @@ -258,10 +258,12 @@ if test x$enable_modules != xno ; then AC_SUBST(LINUXRELEASE) moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel - AC_SUBST(moduledir) - modulefsdir='$(moduledir)/fs/$(PACKAGE)' + modulenetdir='$(moduledir)/net/$(PACKAGE)' + + AC_SUBST(moduledir) AC_SUBST(modulefsdir) + AC_SUBST(modulenetdir) # ------------ RELEASE -------------------------------- AC_MSG_CHECKING([for Lustre release]) @@ -402,38 +404,6 @@ if test x$enable_modules != xno ; then AC_SUBST(IBNAL) AC_SUBST(IBCPPFLAGS) - def_scamac=/opt/scali/include - AC_MSG_CHECKING([if ScaMAC support was requested]) - AC_ARG_WITH([scamac], - AC_HELP_STRING([--with-scamac=yes/no/path], - [Path to ScaMAC includes (default=/opt/scali/include)]), - [ - case $with_scamac in - yes) - AC_MSG_RESULT([yes]) - SCIMACCPPFLAGS="-I/opt/scali/include" - SCIMACNAL="scimacnal" - ;; - no) - AC_MSG_RESULT([no]) - SCIMACCPPFLAGS="" - SCIMACNAL="" - ;; - *) - AC_MSG_RESULT([yes]) - SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm" - SCIMACNAL="scimacnal" - ;; - esac - ],[ - AC_MSG_RESULT([no]) - SCIMACCPPFLAGS="" - SCIMACNAL="" - ]) - AC_SUBST(SCIMACCPPFLAGS) - AC_SUBST(SCIMACNAL) - # if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then - # ---------- Red Hat 2.4.18 has iobuf->dovary -------------- # But other kernels don't @@ -530,6 +500,7 @@ if test x$enable_modules != xno ; then ],[ AC_MSG_RESULT([no]) ]) + AC_MSG_CHECKING([if kernel defines cpumask_t]) LUSTRE_MODULE_TRY_COMPILE( [ @@ -543,6 +514,40 @@ if test x$enable_modules != xno ; then AC_MSG_RESULT([no]) ]) + # ---------- RHEL kernels define page_count in mm_inline.h + AC_MSG_CHECKING([if kernel has mm_inline.h header]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef page_count + #error mm_inline.h does not define page_count + #endif + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_MM_INLINE, 1, [mm_inline found]) + ],[ + AC_MSG_RESULT([no]) + ]) + + # ---------- inode->i_alloc_sem -------------- + AC_MSG_CHECKING([if struct inode has i_alloc_sem]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + #include + ],[ + #if defined(CONFIG_X86_64) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,24)) + #error "x86_64 down_read_trylock broken before 2.4.24" + #endif + struct inode i; + return (char *)&i.i_alloc_sem - (char *)&i; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_I_ALLOC_SEM, 1, [struct inode has i_alloc_sem]) + ],[ + AC_MSG_RESULT([no]) + ]) # ---------- modules? ------------------------ AC_MSG_CHECKING([for module support]) @@ -645,7 +650,6 @@ if test x$enable_modules != xno ; then esac # $BACKINGFS fi -AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal") AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal") AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal") AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal") diff --git a/lustre/portals/build.m4 b/lustre/portals/build.m4 index 93a370f..114478c 100644 --- a/lustre/portals/build.m4 +++ b/lustre/portals/build.m4 @@ -15,29 +15,20 @@ if test $ac_cv_sizeof_unsigned_long_long != 8 ; then fi # directories for binaries -ac_default_prefix= -bindir='${exec_prefix}/usr/bin' -sbindir='${exec_prefix}/usr/sbin' -includedir='${prefix}/usr/include' +ac_default_prefix=/usr -rootsbindir='${exec_prefix}/sbin' +# mount.lustre +rootsbindir='/sbin' AC_SUBST(rootsbindir) - # Directories for documentation and demos. -docdir='${prefix}/usr/share/doc/$(PACKAGE)' +docdir='${datadir}/doc/$(PACKAGE)' AC_SUBST(docdir) demodir='$(docdir)/demo' AC_SUBST(demodir) -pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples' +pkgexampledir='${pkglibdir}/examples' AC_SUBST(pkgexampledir) -pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre' +pymoddir='${pkglibdir}/python/Lustre' AC_SUBST(pymoddir) -# for substitution in lconf -PYMOD_DIR="/usr/lib/$PACKAGE/python" -AC_SUBST(PYMOD_DIR) -modulenetdir='$(moduledir)/net/$(PACKAGE)' -AC_SUBST(modulenetdir) - # ---------- BAD gcc? ------------ AC_PROG_RANLIB diff --git a/lustre/portals/include/linux/kp30.h b/lustre/portals/include/linux/kp30.h index 8f572de..69246b2 100644 --- a/lustre/portals/include/linux/kp30.h +++ b/lustre/portals/include/linux/kp30.h @@ -620,14 +620,14 @@ static inline int portal_ioctl_getdata(char *buf, char *end, void *arg) #define IOC_PORTAL_MIN_NR 30 #define IOC_PORTAL_PING _IOWR('e', 30, long) -#define IOC_PORTAL_GET_DEBUG _IOWR('e', 31, long) + #define IOC_PORTAL_CLEAR_DEBUG _IOWR('e', 32, long) #define IOC_PORTAL_MARK_DEBUG _IOWR('e', 33, long) #define IOC_PORTAL_PANIC _IOWR('e', 34, long) #define IOC_PORTAL_NAL_CMD _IOWR('e', 35, long) #define IOC_PORTAL_GET_NID _IOWR('e', 36, long) #define IOC_PORTAL_FAIL_NID _IOWR('e', 37, long) -#define IOC_PORTAL_SET_DAEMON _IOWR('e', 38, long) + #define IOC_PORTAL_LWT_CONTROL _IOWR('e', 39, long) #define IOC_PORTAL_LWT_SNAPSHOT _IOWR('e', 40, long) #define IOC_PORTAL_LWT_LOOKUP_STRING _IOWR('e', 41, long) diff --git a/lustre/portals/include/linux/libcfs.h b/lustre/portals/include/linux/libcfs.h index 6772e82..acf4045 100644 --- a/lustre/portals/include/linux/libcfs.h +++ b/lustre/portals/include/linux/libcfs.h @@ -20,6 +20,24 @@ extern unsigned int portal_stack; extern unsigned int portal_debug; extern unsigned int portal_printk; extern unsigned int portal_cerror; + +#include +struct ptldebug_header { + __u32 ph_len; + __u32 ph_flags; + __u32 ph_subsys; + __u32 ph_mask; + __u32 ph_cpu_id; + __u32 ph_sec; + __u64 ph_usec; + __u32 ph_stack; + __u32 ph_pid; + __u32 ph_extern_pid; + __u32 ph_line_num; +} __attribute__((packed)); + +#define PH_FLAG_FIRST_RECORD 1 + /* Debugging subsystems (32 bits, non-overlapping) */ #define S_UNDEFINED 0x00000001 #define S_MDC 0x00000002 diff --git a/lustre/portals/knals/Makefile.in b/lustre/portals/knals/Makefile.in index 12f0c24..b5ed168 100644 --- a/lustre/portals/knals/Makefile.in +++ b/lustre/portals/knals/Makefile.in @@ -1,7 +1,6 @@ @BUILD_GMNAL_TRUE@subdir-m += gmnal @BUILD_IBNAL_TRUE@subdir-m += ibnal @BUILD_QSWNAL_TRUE@subdir-m += qswnal -@BUILD_SCIMACNAL_TRUE@subdir-m += scimacnal subdir-m += socknal @INCLUDE_RULES@ diff --git a/lustre/portals/knals/autoMakefile.am b/lustre/portals/knals/autoMakefile.am index 60318ee..9d04a46 100644 --- a/lustre/portals/knals/autoMakefile.am +++ b/lustre/portals/knals/autoMakefile.am @@ -3,4 +3,4 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution -SUBDIRS = gmnal ibnal qswnal scimacnal socknal +SUBDIRS = gmnal ibnal qswnal socknal diff --git a/lustre/portals/knals/scimacnal/Makefile.in b/lustre/portals/knals/scimacnal/Makefile.in deleted file mode 100644 index c7eb4ac..0000000 --- a/lustre/portals/knals/scimacnal/Makefile.in +++ /dev/null @@ -1,6 +0,0 @@ -MODULES := kscimacnal -kscimacnal-objs := scimacnal.o scimacnal_cb.o - -EXTRA_PRE_CFLAGS += @SCIMACCPPFLAGS@ - -@INCLUDE_RULES@ diff --git a/lustre/portals/knals/scimacnal/README.scimacnal b/lustre/portals/knals/scimacnal/README.scimacnal deleted file mode 100644 index e1ee3b5..0000000 --- a/lustre/portals/knals/scimacnal/README.scimacnal +++ /dev/null @@ -1,42 +0,0 @@ - -scimacnal - A NAL for the Scali ScaMAC midlayer. - -The ScaMAC midlayer is a simplified API to the SCI high performance -interconnect (http://www.scali.com/, http://www.dolphinics.com/). - -In order to use this NAL you'll need to tune scimac to use larger buffers. -See scimac.conf in this directory for an example. - -You'll also need to edit portals/include/portals/lib-types.h and reduce -the MTU to 64kB (the limit of scimac), this diff should help: - -----------------------8<---------------------------------- ---- portals/include/portals/lib-types.h 27 Jul 2003 02:05:47 -0000 1.1.2.5 -+++ portals/include/portals/lib-types.h 14 Aug 2003 08:32:14 -0000 -@@ -137,8 +137,8 @@ - } lib_counters_t; - - /* temporary expedient: limit number of entries in discontiguous MDs */ --# define PTL_MTU (512<<10) --# define PTL_MD_MAX_IOV 128 -+# define PTL_MTU (64<<10) -+# define PTL_MD_MAX_IOV 16 - - struct lib_msg_t { - struct list_head msg_list; -----------------------8<---------------------------------- - -The NAL itself seems quite stable, though scimac has recovery bugs when -rebooting nodes at times (confirmed by the fact that the IP driver that -also uses scimac loses connectivity when scimacnal does). This is -solved by unloading lustre and reloading the scimac driver on the -affected nodes. - -Performance isn't great when it comes to latency, scimac seems to have -problems with per packet latencies (confirmed with the IP driver which -has similar behaviour). Bandwidth using large packets is pretty OK -(probably due to the fact that it hides the latency issues). - -TODO: -Routing isn't yet implemented. -Need some way to inform portals about our MTU. diff --git a/lustre/portals/knals/scimacnal/autoMakefile.am b/lustre/portals/knals/scimacnal/autoMakefile.am deleted file mode 100644 index 47433cd..0000000 --- a/lustre/portals/knals/scimacnal/autoMakefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -if MODULES -if !CRAY_PORTALS -if BUILD_SCIMACNAL -modulenet_DATA = kscimacnal$(KMODEXT) -endif -endif -endif - -MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(ksimacnal-objs:%.o=%.c) scimacnal.h diff --git a/lustre/portals/knals/scimacnal/scimac.conf b/lustre/portals/knals/scimacnal/scimac.conf deleted file mode 100644 index bfb6d02..0000000 --- a/lustre/portals/knals/scimacnal/scimac.conf +++ /dev/null @@ -1,35 +0,0 @@ -# Configuration file for the scimac driver - lustre friendly settings -# - -# The maximal number of message headers to use in the system. -scimac_max_no_hdrs = 32 - -# The maximal number of eager buffers to use in the system. -scimac_max_no_ebufs = 8 - -# The maximal size in bytes of each eager buffer. -scimac_max_ebuf_size = 65536 - -# Enable use of a kernel thread to defer reception of packets. -# Default is to use a tasklet (sw interrupt). -scimac_use_ulevel_recv = 1 - -# The maximal number of packets queued for transfer per path at any one time. -scimac_max_send_queuelen = 2000 - -# The packet retransmit time in milliseconds. -# The time elapsed since a packet was attempted sent until the packet is resent. -scimac_pkt_rexmit_time = 200 - -# The packet's maximal retransmit time in milliseconds. -# The total time that a packet will be attempted sent before it is dropped. -scimac_max_rexmit_time = 5000 - -# The lowest valid node identifier in the system. -scimac_min_nodeid_number = 0x100 - -# The largest valid node identifier in the system. -scimac_max_nodeid_number = 0xff00 - -# The incremental nodeid step in the system. -scimac_nodeid_increment = 0x100 diff --git a/lustre/portals/knals/scimacnal/scimacnal.c b/lustre/portals/knals/scimacnal/scimacnal.c deleted file mode 100644 index 5ffba31..0000000 --- a/lustre/portals/knals/scimacnal/scimacnal.c +++ /dev/null @@ -1,247 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - - * Based on gmnal, which is based on ksocknal and qswnal - * - * This file is part of Portals, http://www.sf.net/projects/lustre/ - * - * Portals is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * Portals 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 Portals; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - - -#include "scimacnal.h" - -ptl_handle_ni_t kscimacnal_ni; -nal_t kscimacnal_api; - -kscimacnal_data_t kscimacnal_data; - -kpr_nal_interface_t kscimacnal_router_interface = { - kprni_nalid: SCIMACNAL, - kprni_arg: NULL, - kprni_fwd: kscimacnal_fwd_packet, -}; - - -int kscimacnal_cmd (struct portal_ioctl_data *data, void *private) -{ - LASSERT (data != NULL); - - switch (data->ioc_nal_cmd) { - case NAL_CMD_REGISTER_MYNID: - if(kscimacnal_lib.ni.nid == data->ioc_nid) { - break; - } - CDEBUG (D_IOCTL, "Can't change NID from "LPX64" to "LPX64")\n", kscimacnal_lib.ni.nid, data->ioc_nid); - return(-EINVAL); - default: - return(-EINVAL); - } - - return(0); -} - -static int kscimacnal_forward(nal_t *nal, - int id, - void *args, size_t args_len, - void *ret, size_t ret_len) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - lib_dispatch(nal_cb, ksci, id, args, ret); /* nal needs ksci */ - return PTL_OK; -} - - -static void kscimacnal_lock(nal_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - nal_cb->cb_cli(nal_cb,flags); -} - - -static void kscimacnal_unlock(nal_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *ksci = nal->nal_data; - nal_cb_t *nal_cb = ksci->ksci_cb; - - - LASSERT (nal == &kscimacnal_api); - LASSERT (ksci == &kscimacnal_data); - LASSERT (nal_cb == &kscimacnal_lib); - - nal_cb->cb_sti(nal_cb,flags); -} - - -static int kscimacnal_shutdown(nal_t *nal, int ni) -{ - LASSERT (nal == &kscimacnal_api); - return 0; -} - - -static void kscimacnal_yield( nal_t *nal ) -{ - LASSERT (nal == &kscimacnal_api); - - if (current->need_resched) - schedule(); - return; -} - - -static nal_t *kscimacnal_init(int interface, ptl_pt_index_t ptl_size, - ptl_ac_index_t ac_size, ptl_pid_t requested_pid) -{ - int nnids = 512; /* FIXME: Need ScaMac funktion to get #nodes */ - - CDEBUG(D_NET, "calling lib_init with nid "LPX64" nnids %d\n", kscimacnal_data.ksci_nid, nnids); - lib_init(&kscimacnal_lib, kscimacnal_data.ksci_nid, 0, nnids,ptl_size, ac_size); - return &kscimacnal_api; -} - - -/* Called by kernel at module unload time */ -static void /*__exit*/ -kscimacnal_finalize(void) -{ - /* FIXME: How should the shutdown procedure really look? */ - kscimacnal_data.ksci_shuttingdown=1; - - PORTAL_SYMBOL_UNREGISTER(kscimacnal_ni); - - PtlNIFini(kscimacnal_ni); - lib_fini(&kscimacnal_lib); - - mac_finish(kscimacnal_data.ksci_machandle); - - CDEBUG (D_MALLOC, "done kmem %d\n", atomic_read (&portal_kmemory)); - - return; -} - - -/* Called by kernel at module insertion time */ -static int __init -kscimacnal_initialize(void) -{ - int rc; - unsigned long nid=0; - mac_handle_t *machandle = NULL; - - - CDEBUG (D_MALLOC, "start kmem %d\n", atomic_read (&portal_kmemory)); - - kscimacnal_api.forward = kscimacnal_forward; - kscimacnal_api.shutdown = kscimacnal_shutdown; - kscimacnal_api.yield = kscimacnal_yield; - kscimacnal_api.validate = NULL; /* our api validate is a NOOP */ - kscimacnal_api.lock= kscimacnal_lock; - kscimacnal_api.unlock= kscimacnal_unlock; - kscimacnal_api.nal_data = &kscimacnal_data; - - kscimacnal_lib.nal_data = &kscimacnal_data; - - memset(&kscimacnal_data, 0, sizeof(kscimacnal_data)); - - kscimacnal_data.ksci_cb = &kscimacnal_lib; - - /* We're not using this, but cli/sti callbacks does... ??? */ - spin_lock_init(&kscimacnal_data.ksci_dispatch_lock); - - /* FIXME: We only support one adapter for now */ - machandle = mac_init(0, MAC_SAPID_LUSTRE, kscimacnal_rx, - &kscimacnal_data); - - if(!machandle) { - CERROR("mac_init() failed\n"); - return -1; - } - - kscimacnal_data.ksci_machandle = machandle; - - /* Make sure the scimac MTU is tuned */ - if(mac_get_mtusize(machandle) < SCIMACNAL_MTU) { - CERROR("scimac mtu of %ld smaller than SCIMACNAL MTU of %d\n", - mac_get_mtusize(machandle), SCIMACNAL_MTU); - CERROR("Consult README.scimacnal for more information\n"); - mac_finish(machandle); - return -1; - } - - /* Get the node ID */ - /* mac_get_physaddrlen() is a function instead of define, sigh */ - LASSERT(mac_get_physaddrlen(machandle) <= sizeof(nid)); - if(mac_get_physaddr(machandle, (mac_physaddr_t *) &nid)) { - CERROR("mac_get_physaddr() failed\n"); - mac_finish(machandle); - return -1; - } - nid = ntohl(nid); - kscimacnal_data.ksci_nid = nid; - - - /* Initialize Network Interface */ - /* FIXME: What do the magic numbers mean? Documentation anyone? */ - rc = PtlNIInit(kscimacnal_init, 32, 4, 0, &kscimacnal_ni); - if (rc) { - CERROR("PtlNIInit failed %d\n", rc); - mac_finish(machandle); - return (-ENOMEM); - } - - /* Init command interface */ - rc = kportal_nal_register (SCIMACNAL, &kscimacnal_cmd, NULL); - if (rc != 0) { - CERROR ("Can't initialise command interface (rc = %d)\n", rc); - PtlNIFini(kscimacnal_ni); - mac_finish(machandle); - return (rc); - } - - - PORTAL_SYMBOL_REGISTER(kscimacnal_ni); - - /* We're done now, it's OK for the RX callback to do stuff */ - kscimacnal_data.ksci_init = 1; - - return 0; -} - - -MODULE_AUTHOR("Niklas Edmundsson "); -MODULE_DESCRIPTION("Kernel Scali ScaMAC SCI NAL v0.1"); -MODULE_LICENSE("GPL"); - -module_init (kscimacnal_initialize); -module_exit (kscimacnal_finalize); - -EXPORT_SYMBOL(kscimacnal_ni); diff --git a/lustre/portals/knals/scimacnal/scimacnal.h b/lustre/portals/knals/scimacnal/scimacnal.h deleted file mode 100644 index f132769..0000000 --- a/lustre/portals/knals/scimacnal/scimacnal.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - */ - - -#ifndef _SCIMACNAL_H -#define _SCIMACNAL_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include /* For PAGE_SIZE */ - -#define DEBUG_SUBSYSTEM S_UNDEFINED - -#include -#include -#include -#include - -#include - -#ifndef MAC_SAPID_LUSTRE -#define MAC_SAPID_LUSTRE MAC_SAPID_TEST1 -#endif /* MAC_SAPID_LUSTRE */ - -/* scimac has an annoying MTU limit of 64k */ -#define SCIMACNAL_MTU 65536 -#if PTL_MTU > SCIMACNAL_MTU -#error Max MTU of ScaMAC is 64k, PTL_MTU is bigger. -#endif - -typedef struct { - mac_handle_t *handle; - mac_mblk_t *msg; - mac_msg_type_t type; - void *userdata; -} kscimacnal_rx_t; - - -typedef struct { - nal_cb_t *ktx_nal; - void *ktx_private; - lib_msg_t *ktx_cookie; - ptl_hdr_t ktx_hdr; - /* To be able to kunmap() kmap():ed pages */ - struct page *ktx_kpages[PTL_MD_MAX_IOV]; - int ktx_nmapped; -} kscimacnal_tx_t; - - -typedef struct { - char ksci_init; - char ksci_shuttingdown; - ptl_nid_t ksci_nid; - nal_cb_t *ksci_cb; - spinlock_t ksci_dispatch_lock; - mac_handle_t *ksci_machandle; -} kscimacnal_data_t; - -extern kscimacnal_data_t kscimacnal_data; -extern nal_t kscimacnal_api; -extern nal_cb_t kscimacnal_lib; - -void kscimacnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd); -void kscimacnal_rx(mac_handle_t *handle, mac_mblk_t *msg, mac_msg_type_t type, void *userdata); - - -#endif /* _SCIMACNAL_H */ diff --git a/lustre/portals/knals/scimacnal/scimacnal_cb.c b/lustre/portals/knals/scimacnal/scimacnal_cb.c deleted file mode 100644 index 52afb98..0000000 --- a/lustre/portals/knals/scimacnal/scimacnal_cb.c +++ /dev/null @@ -1,601 +0,0 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8:cindent: - * - * Copyright (C) 2003 High Performance Computing Center North (HPC2N) - * Author: Niklas Edmundsson - - * - * This file is part of Portals, http://www.sf.net/projects/lustre/ - * - * Portals is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * Portals 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 Portals; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include "scimacnal.h" - -static int -kscimacnal_read (nal_cb_t *nal, void *private, - void *dst_addr, user_ptr src_addr, size_t len) -{ - CDEBUG(D_NET, "0x%Lx: reading %ld bytes from %p -> %p\n", - nal->ni.nid, (long)len, src_addr, dst_addr ); - memcpy( dst_addr, src_addr, len ); - return 0; -} - - -static int -kscimacnal_write(nal_cb_t *nal, void *private, - user_ptr dst_addr, void *src_addr, size_t len) -{ - CDEBUG(D_NET, "0x%Lx: writing %ld bytes from %p -> %p\n", - nal->ni.nid, (long)len, src_addr, dst_addr ); - memcpy( dst_addr, src_addr, len ); - return 0; -} - - -static void * -kscimacnal_malloc(nal_cb_t *nal, size_t len) -{ - void *buf; - - PORTAL_ALLOC(buf, len); - return buf; -} - - -static void -kscimacnal_free(nal_cb_t *nal, void *buf, size_t len) -{ - PORTAL_FREE(buf, len); -} - - -static void -kscimacnal_printf(nal_cb_t *nal, const char *fmt, ...) -{ - va_list ap; - char msg[256]; - - if (portal_debug & D_NET) { - va_start( ap, fmt ); - vsnprintf( msg, sizeof(msg), fmt, ap ); - va_end( ap ); - - printk("Lustre: CPUId: %d %s",smp_processor_id(), msg); - } -} - - -static void -kscimacnal_cli(nal_cb_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *data= nal->nal_data; - - spin_lock_irqsave(&data->ksci_dispatch_lock,*flags); -} - - -static void -kscimacnal_sti(nal_cb_t *nal, unsigned long *flags) -{ - kscimacnal_data_t *data= nal->nal_data; - - spin_unlock_irqrestore(&data->ksci_dispatch_lock,*flags); -} - - -static int -kscimacnal_dist(nal_cb_t *nal, ptl_nid_t nid, unsigned long *dist) -{ - /* FIXME: Network distance has a meaning, but is there no easy - * way to figure it out (depends on routing) */ - - if ( nal->ni.nid == nid ) { - *dist = 0; - } else { - *dist = 1; - } - - return 0; -} - - -static -char * get_mac_error(mac_status_t status) -{ - switch(status) { - case MAC_MSG_STAT_OK: - return "MAC_MSG_STAT_OK"; - case MAC_MSG_STAT_FREED: - return "MAC_MSG_STAT_FREED"; - case MAC_MSG_STAT_ABORTED: - return "MAC_MSG_STAT_ABORTED"; - case MAC_MSG_STAT_TIMEDOUT: - return "MAC_MSG_STAT_TIMEDOUT"; - case MAC_MSG_STAT_NODEUNREACH: - return "MAC_MSG_STAT_NODEUNREACH"; - case MAC_MSG_STAT_NETDOWN: - return "MAC_MSG_STAT_NETDOWN"; - case MAC_MSG_STAT_RESET: - return "MAC_MSG_STAT_RESET"; - case MAC_MSG_STAT_INITFAILED: - return "MAC_MSG_STAT_INITFAILED"; - case MAC_MSG_STAT_SYNCFAILED: - return "MAC_MSG_STAT_SYNCFAILED"; - case MAC_MSG_STAT_BADPROTO: - return "MAC_MSG_STAT_BADPROTO"; - case MAC_MSG_STAT_NOBUFSPACE: - return "MAC_MSG_STAT_NOBUFSPACE"; - case MAC_MSG_STAT_CONGESTION: - return "MAC_MSG_STAT_CONGESTION"; - case MAC_MSG_STAT_OTHER: - return "MAC_MSG_STAT_OTHER"; - default: - return "Unknown error"; - } -} - - -/* FIXME add routing code here ? */ - -/* Called by ScaMac when transmission is complete (ie. message is released) */ -static void -kscimacnal_txrelease(mac_mblk_t *msg, mac_msg_status_t status, void *context) -{ - kscimacnal_tx_t *ktx = (kscimacnal_tx_t *)context; - int err=0, i; - - LASSERT (ktx != NULL); - /* Unmap any mapped pages */ - for(i=0; iktx_nmapped; i++) { - kunmap(ktx->ktx_kpages[i]); - } - - CDEBUG(D_NET, "kunmapped %d pages\n", ktx->ktx_nmapped); - - /* Euh, there is no feedback when transmission fails?! */ - switch(status) { - case MAC_MSG_STAT_OK: /* normal */ - break; - default: - CERROR("%s (%d):\n", get_mac_error(status), status); - err = -EIO; - break; - } - - lib_finalize(ktx->ktx_nal, ktx->ktx_private, ktx->ktx_cookie, - (err == 0) ? PTL_OK : PTL_FAIL); - - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); -} - - -/* Called by portals when it wants to send a message. - * Since ScaMAC has it's own TX thread we don't bother setting up our own. */ - -/* FIXME: Read comments in qswnal_cb.c for _sendmsg and fix return-on-error - * issues */ -static inline int -kscimacnal_sendmsg(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - struct iovec *payload_iov, - ptl_kiov_t *payload_kiov, - size_t payload_len) -{ - kscimacnal_tx_t *ktx=NULL; - kscimacnal_data_t *ksci = nal->nal_data; - int rc=0; - int buf_len = sizeof(ptl_hdr_t) + payload_len; - mac_mblk_t *msg=NULL, *lastblk, *newblk; - unsigned long physaddr; - - - CDEBUG(D_NET, "sending %d bytes from %p/%p to nid "LPX64" niov: %d\n", - payload_len, payload_iov, payload_kiov, nid, payload_niov); - - /* Basic sanity checks */ - LASSERT(ksci != NULL); - LASSERT(hdr != NULL); - LASSERT (payload_len == 0 || payload_niov > 0); - LASSERT (payload_niov <= PTL_MD_MAX_IOV); - /* It must be OK to kmap() if required */ - LASSERT (payload_kiov == NULL || !in_interrupt ()); - /* payload is either all vaddrs or all pages */ - LASSERT (!(payload_kiov != NULL && payload_iov != NULL)); - - /* Do real check if we can send this */ - if (buf_len > mac_get_mtusize(ksci->ksci_machandle)) { - CERROR("kscimacnal:request exceeds TX MTU size (%ld).\n", - mac_get_mtusize(ksci->ksci_machandle)); - return PTL_FAIL; - } - - - /* save transaction info for later finalize and cleanup */ - PORTAL_ALLOC(ktx, (sizeof(kscimacnal_tx_t))); - if (!ktx) { - return PTL_NOSPACE; - } - - ktx->ktx_nmapped = 0; /* Start with no mapped pages :) */ - - /* *SIGH* hdr is a stack variable in the calling function, so we - * need to copy it to a buffer. Zerocopy magic (or is it just - * deferred memcpy?) is annoying sometimes. */ - memcpy(&ktx->ktx_hdr, hdr, sizeof(ptl_hdr_t)); - - /* First, put the header in the main message mblk */ - msg = mac_alloc_mblk(&ktx->ktx_hdr, sizeof(ptl_hdr_t), - kscimacnal_txrelease, ktx); - if (!msg) { - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_NOSPACE; - } - mac_put_mblk(msg, sizeof(ptl_hdr_t)); - lastblk=msg; - - /* Allocate additional mblks for each iov as needed. - * Essentially lib_copy_(k)iov2buf with a twist or two */ - while (payload_len > 0) - { - ptl_size_t nob; - char *addr; - - LASSERT (payload_niov > 0); - - if(payload_iov != NULL) { - nob = MIN (payload_iov->iov_len, payload_len); - addr = payload_iov->iov_base; - } - else { - nob = MIN (payload_kiov->kiov_len, payload_len); - /* Bollocks. We need to handle paged IO for things to - * work but there is no good way to do this. We - * do it by kmap():ing all pages and keep them - * mapped until scimac is done with them. */ - /* FIXME: kunmap() on error */ - addr = kmap(payload_kiov->kiov_page); - ktx->ktx_kpages[ktx->ktx_nmapped++] = - payload_kiov->kiov_page; - } - /* We don't need a callback on the additional mblks, - * since all release callbacks seems to be called when - * the entire message has been sent */ - newblk=mac_alloc_mblk(addr, nob, NULL, NULL); - - if(!newblk) { - mac_free_msg(msg); - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_NOSPACE; - } - mac_put_mblk(newblk, nob); - mac_link_mblk(lastblk, newblk); - lastblk=newblk; - - payload_len -= nob; - payload_niov--; - if(payload_iov != NULL) { - payload_iov++; - } - else { - payload_kiov++; - } - } - - CDEBUG(D_NET, "kmapped %d pages\n", ktx->ktx_nmapped); - - ktx->ktx_nal = nal; - ktx->ktx_private = private; - ktx->ktx_cookie = cookie; - - CDEBUG(D_NET, "mac_send %d bytes to nid: 0x%Lx\n", buf_len, nid); - - physaddr = htonl(nid); - - if((rc=mac_send(ksci->ksci_machandle, msg, - (mac_physaddr_t *) &physaddr))) { - CERROR("kscimacnal: mac_send() failed, rc=%d\n", rc); - mac_free_msg(msg); - PORTAL_FREE(ktx, (sizeof(kscimacnal_tx_t))); - return PTL_FAIL; - } - - return PTL_OK; -} - - -static int -kscimacnal_send (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - struct iovec *payload_iov, - size_t payload_nob) -{ - return (kscimacnal_sendmsg (nal, private, cookie, hdr, type, nid, pid, - payload_niov, payload_iov, NULL, payload_nob)); -} - -static int -kscimacnal_send_pages (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - ptl_hdr_t *hdr, - int type, - ptl_nid_t nid, - ptl_pid_t pid, - unsigned int payload_niov, - ptl_kiov_t *payload_kiov, - size_t payload_nob) -{ - return (kscimacnal_sendmsg (nal, private, cookie, hdr, type, nid, pid, - payload_niov, NULL, payload_kiov, payload_nob)); -} - - -void -kscimacnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd) -{ - CERROR ("forwarding not implemented\n"); -} - - -/* Process a received portals packet */ -/* Called by the ScaMac RX thread when a packet is received */ -void -kscimacnal_rx(mac_handle_t *handle, mac_mblk_t *msg, mac_msg_type_t type, - void *userdata) -{ - ptl_hdr_t *hdr = NULL; - kscimacnal_rx_t krx; - mac_size_t size; - kscimacnal_data_t *ksci = userdata; - - LASSERT(ksci != NULL); - - if ( !ksci->ksci_init || ksci->ksci_shuttingdown || - type == MAC_MSG_TYPE_CTRL || type == MAC_MSG_TYPE_OTHER ) { - /* We're not interested in messages not for us, ignore */ - mac_free_msg(msg); - return; - } - - size = mac_msg_size(msg); - - CDEBUG(D_NET,"msg %p type %d, size %ld bytes (%ld mblks)\n", - msg, type, size, mac_msg_mblks(msg)); - - if( size < sizeof( ptl_hdr_t ) ) { - /* XXX what's this for? */ - if (ksci->ksci_shuttingdown) - return; - CERROR("kscimacnal: did not receive complete portal header," - "size= %ld\n", size); - /* Free the message before exiting */ - mac_free_msg(msg); - return; - } - - /* Provide everything we know */ - krx.handle = handle; - krx.msg = msg; - krx.type = type; - krx.userdata = userdata; - - /* mac_msg_next returns the next mblk with unread data */ - hdr = mac_get_mblk(mac_msg_next(msg), sizeof(ptl_hdr_t) ); - - if(!hdr) { - CERROR("kscimacnal: no data block in message %p\n", msg); - mac_free_msg(msg); - return; - } - - if ( hdr->dest_nid == kscimacnal_lib.ni.nid ) { - PROF_START(lib_parse); - /* sets wanted_len, iovs etc and calls our callback */ - lib_parse(&kscimacnal_lib, hdr, &krx); - PROF_FINISH(lib_parse); -#if 0 /* FIXME: Is it possible to detect this? */ - } else if (kgmnal_ispeer(hdr->dest_nid)) { - /* should have gone direct to peer */ - CERROR("dropping packet from 0x%llx to 0x%llx:" - "target is a peer\n", - hdr->src_nid, hdr->dest_nid); - kgmnal_requeue_rx(&krx); -#endif /* if 0 FIXME */ - } else { - /* forward to gateway */ - CERROR("forwarding not implemented, mynid=0x%llx dest=0x%llx\n", - kscimacnal_lib.ni.nid, hdr->dest_nid); - } - - mac_free_msg(msg); - - CDEBUG(D_NET, "msg %p: Done\n", msg); -} - - -/* Called by portals to process a recieved packet */ -inline static int -kscimacnal_recvmsg(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - struct iovec *iov, - ptl_kiov_t *kiov, - size_t mlen, - size_t rlen) -{ - kscimacnal_rx_t *krx = private; - mac_mblk_t *mblk; - void *src; - mac_size_t pkt_len; - ptl_size_t iovused=0; - char *base=NULL; - - LASSERT (krx != NULL); - LASSERT (krx->msg != NULL); - - CDEBUG(D_NET,"msg %p: mlen=%d, rlen=%d, niov=%d\n", - krx->msg, mlen, rlen, niov); - - /* What was actually received must be >= what sender claims to have - * sent. */ - LASSERT (mlen <= rlen); /* something is wrong if this isn't true */ - if (mac_msg_size(krx->msg) < sizeof(ptl_hdr_t)+mlen) { - /* We didn't receive everything lib thinks we did */ - CERROR("Bad message size: have %d, need %d + %d\n", - mac_msg_size(krx->msg), sizeof(ptl_hdr_t), mlen); - return (PTL_FAIL); - } - - /* It must be OK to kmap() if required */ - LASSERT (kiov == NULL || !in_interrupt ()); - /* Either all pages or all vaddrs */ - LASSERT (!(kiov != NULL && iov != NULL)); - - PROF_START(memcpy); - - /* mac_msg_next returns next mblk with unread data (ie. can - * be same mblk */ - while (mlen != 0 && (mblk = mac_msg_next(krx->msg))) { - pkt_len = mac_mblk_len(mblk); - src = mac_get_mblk(mblk, pkt_len); /* Next unread block */ - - CDEBUG(D_NET,"msg %p: mblk: %p pkt_len: %ld src: %p\n", - krx->msg, mblk, pkt_len, src); - - LASSERT(src != NULL); - - /* Essentially lib_copy_buf2(k)iov but with continuation - * support, we "gracefully" thrash the argument vars ;) */ - while (pkt_len > 0) { - ptl_size_t nob, len; - - LASSERT (niov > 0); - - if(iov != NULL) { - LASSERT(iovused < iov->iov_len); - len = iov->iov_len; - base = iov->iov_base; - } - else { - LASSERT(iovused < kiov->kiov_len); - len = kiov->kiov_len; - if(base==NULL) { - /* New page */ - base = kmap(kiov->kiov_page); - } - } - - nob = MIN (len-iovused, pkt_len); - CDEBUG(D_NET, "base: %p len: %d src: %p nob: %d " - "iovused: %d\n", - base, len, src, nob, iovused); - - memcpy (base+iovused, src, nob); - pkt_len -= nob; - src += nob; - - if(nob+iovused < len) { - /* We didn't use all of the iov */ - iovused+=nob; - } - else { - niov--; - iovused=0; - if(iov != NULL) { - iov++; - } - else { - kunmap(kiov->kiov_page); - base=NULL; - kiov++; - } - } - } - } - /* Just to make sure the last page is unmapped */ - if(kiov!=NULL && base!=NULL) { - kunmap(kiov->kiov_page); - base=NULL; - } - PROF_FINISH(memcpy); - - CDEBUG(D_NET, "Calling lib_finalize.\n"); - - PROF_START(lib_finalize); - lib_finalize(nal, private, cookie, PTL_OK); - PROF_FINISH(lib_finalize); - - CDEBUG(D_NET, "Done.\n"); - - return PTL_OK; -} - - -static int -kscimacnal_recv(nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - struct iovec *iov, - size_t mlen, - size_t rlen) -{ - return (kscimacnal_recvmsg (nal, private, cookie, niov, iov, NULL, mlen, rlen)); -} - - -static int -kscimacnal_recv_pages (nal_cb_t *nal, - void *private, - lib_msg_t *cookie, - unsigned int niov, - ptl_kiov_t *kiov, - size_t mlen, - size_t rlen) -{ - return (kscimacnal_recvmsg (nal, private, cookie, niov, NULL, kiov, mlen, rlen)); -} - - -nal_cb_t kscimacnal_lib = { - nal_data: &kscimacnal_data, /* NAL private data */ - cb_send: kscimacnal_send, - cb_send_pages: kscimacnal_send_pages, - cb_recv: kscimacnal_recv, - cb_recv_pages: kscimacnal_recv_pages, - cb_read: kscimacnal_read, - cb_write: kscimacnal_write, - cb_malloc: kscimacnal_malloc, - cb_free: kscimacnal_free, - cb_printf: kscimacnal_printf, - cb_cli: kscimacnal_cli, - cb_sti: kscimacnal_sti, - cb_dist: kscimacnal_dist -}; diff --git a/lustre/portals/libcfs/Makefile.in b/lustre/portals/libcfs/Makefile.in index 5d2688e..598adc1 100644 --- a/lustre/portals/libcfs/Makefile.in +++ b/lustre/portals/libcfs/Makefile.in @@ -1,5 +1,5 @@ MODULES = portals -libcfs-objs := debug.o lwt.o module.o proc.o +libcfs-objs := debug.o lwt.o module.o proc.o tracefile.o api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c) lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c) diff --git a/lustre/portals/libcfs/Makefile.mk b/lustre/portals/libcfs/Makefile.mk index c201429..8ecf3c9 100644 --- a/lustre/portals/libcfs/Makefile.mk +++ b/lustre/portals/libcfs/Makefile.mk @@ -6,4 +6,4 @@ include fs/lustre/portals/Kernelenv obj-y += libcfs.o -libcfs-objs := module.o proc.o debug.o lwt.o +libcfs-objs := module.o proc.o debug.o lwt.o tracefile.o diff --git a/lustre/portals/libcfs/autoMakefile.am b/lustre/portals/libcfs/autoMakefile.am index ac83541..cacd769 100644 --- a/lustre/portals/libcfs/autoMakefile.am +++ b/lustre/portals/libcfs/autoMakefile.am @@ -17,4 +17,4 @@ sources: MOSTLYCLEANFILES = *.o *.ko *.mod.c CLEANFILES = sources lib-*.c api-*.c -DIST_SOURCES = $(libcfs-objs:%.o=%.c) +DIST_SOURCES = $(libcfs-objs:%.o=%.c) *.h diff --git a/lustre/portals/libcfs/debug.c b/lustre/portals/libcfs/debug.c index 04a7496..01fbe35 100644 --- a/lustre/portals/libcfs/debug.c +++ b/lustre/portals/libcfs/debug.c @@ -53,6 +53,8 @@ #include #include +#include "tracefile.h" + #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) #include #endif @@ -79,368 +81,32 @@ atomic_t portal_kmemory = ATOMIC_INIT(0); EXPORT_SYMBOL(portal_kmemory); #endif -#define DEBUG_OVERFLOW 1024 -static char *debug_buf = NULL; -static unsigned long debug_size = 0; -static atomic_t debug_off_a = ATOMIC_INIT(0); -static int debug_wrapped; static DECLARE_WAIT_QUEUE_HEAD(debug_ctlwq); -#define DAEMON_SND_SIZE (64 << 10) - -/* - * used by the daemon to keep track the offset into debug_buffer for the next - * write to the file. Usually, the daemon is to write out buffer - * from debug_daemon_next_write upto debug_off - * variable usage - * Reader - portals_debug_msg() - * Writer - portals_debug_daemon() - * portals_debug_daemon_start() during daemon init time - * portals_debug_daemon_continue() to reset to debug_off - * portals_debug_clear_buffer() reset to debug_off for clear - * Note that *_start(), *_continue() & *clear_buffer() should serialized; - */ -static atomic_t debug_daemon_next_write; - -/* - * A debug_daemon can be in following states - * stopped - stopped state means there is no debug_daemon running. - * accordingly, it must be in paused state - * a daemon is in !stopped && !paused state after - * "lctl debug_daemon start" creates debug_daemon successfully - * Variable Usage - * Reader - portals_debug_daemon() - * portals_debug_set_daemon() routines - * Writer - portals_debug_set_daemon() routines - * portals_debug_daemon() on IO error - * paused - a debug_daemon state is changed from !paused into paused - * when "lctl debug_daemon paused" is issued - * "lctl debug_daemon continue" gets a daemon into !paused mode - * Reader - portals_debug_set_daemon() routines - * portals_debug_msg() - * Writer - portals_debug_set_daemon() on init - * portals_debug_daemon() - * - * Daemon state diagram. - * (stopped, paused) - * | <-- debug_daemon start - * V - * (!stopped, !paused) - * | <-- debug_daemon pause - * V - * (!stopped, paused) - * | <-- debug_daemon continue - * V - * (!stopped, !paused) - * | <-- debug_daemon stop - * V - * (stopped, paused) - * Overlapped - this is a state when CDEBUG is too fast for the daemon to - * write out the debug_bufferr. That is, debug_off is to - * overlap debug_daemon_next_write; - * Reader - portals_debug_msg() - * Writer - portals_debug_msg() - */ - -/* - * Description on Trace Daemon Synchronization - * - * Three categories of code are synchronizing between each other - * 1. lctl, portals_debug_set_daemon(), the user debug control code, - * as well as portals_debug_clear_buffer() - * 2. CDEBUG, portals_debug_msg(), the debug put messages routine - * 3. Daemon, portals_debug_daemon(), to write out debug log file - * - * - * Three different controls for synchronizations - * - * 1. debug_daemon_semaphore - * The usage of this semaphore is to serialize multiple lctl controls - * in manipulating debug daemon state. The semaphore serves as the - * gatekeeper to allow only one user control thread, at any giving time, - * to access debug daemon state and keeps the other user control requests - * in wait state until the current control request is serviced. - * - * 2. wait_queue_head_t lctl (paired with lctl_event flag) - * Lctl event is the event between portals_debug_set_daemon() and - * portals_debug_daemon(). Lctl is an indicator for portals_debug_daemon() - * to flush data out to file. portals_debug_daemon() is to use lctl event - * as signal channel to wakeup portals_debug_set_daemon() upon flush - * operation is done. - * - * Producer : - * portals_debug_daemon() uses to wake up - * portals_debug_set_daemon(), pause and stop, routines - * Consumer : - * portals_debug_set_daemon(), stop and pause operations, - * wait and sleep on the event - * - * 3. wait_queue_head_t daemon (paired with daemon_event flag) - * This is an event channel to wakeup portals_debug_daemon. Daemon - * wakes up to run whenever there is an event posted. Daemon handles - * 2 types of operations . 1. Writes data out to debug file, 2. Flushes - * file and terminates base on lctl event. - * File operation - - * Daemon is normally in a sleep state. - * Daemon is woken up through daemon event whenever CDEBUG is - * putting data over any 64K boundary. - * File flush and termination - - * On portals_debug_daemon_stop/pause() operations, lctl control - * is to wake up daemon through daemon event. - * - * We can't use sleep_on() and wake_up() to replace daemon event because - * portals_debug_daemon() must catch the wakeup operation posted by - * portals_debug_daemon_stop/pause(). Otherwise, stop and pause may - * stuck in lctl wait event. - * - * Producer : - * a. portals_debug_daemon_pause() and portals_debug_daemon_stop() - * uses the event to wake up portals_debug_daemon() - * b. portals_debug_msg() uses the event to wake up - * portals_debug_daemon() whenever the data output is acrossing - * a 64K bytes boundary. - * Consumer : - * portals_debug_daemon() wakes up upon daemon event. - * - * Sequence for portals_debug_daemon_stop() operation - * - * _Portals_debug_daemon_stop()_ _Daemon_ - * Wait_event(daemon) or running - * Paused = 1; - * Wakeup_event (daemon) - * Wait_event(lctl) - * Set force_flush flag if lctlevnt - * Flush data - * Wakeup_event (lctl) - * Wait_event(daemon) - * Stopped = 1; - * Wakeup_event (daemon) - * Wait_event(lctl) - * Exit daemon loop if (Stopped) - * Wakeup_event (lctl) - * Exit - * Return to user application - * - * - * _Portals_debug_msg()_ _Daemon_ - * Wait_event(daemon) or running - * If (WriteStart<64Kjournal_info; current->journal_info = NULL; - sprintf(debug_file_name, "%s.%ld", debug_file_path, CURRENT_SECONDS); - file = filp_open(debug_file_name, O_CREAT|O_EXCL|O_RDWR, 0644); - if (!file || IS_ERR(file)) { - CERROR("cannot open %s for dumping: %ld\n", debug_file_name, - PTR_ERR(file)); - GOTO(out, PTR_ERR(file)); - } else { - printk(KERN_ALERT "LustreError: dumping log to %s ...\n", - debug_file_name); - } + snprintf(debug_file_name, sizeof(debug_file_path) - 1, + "%s.%ld.%ld", debug_file_path, CURRENT_SECONDS, (long)arg); + tracefile_dump_all_pages(debug_file_name); - debug_off = atomic_read(&debug_off_a); - oldfs = get_fs(); - set_fs(get_ds()); - if (debug_wrapped) { - rc = file->f_op->write(file, debug_buf + debug_off + 1, - debug_size-debug_off-1, &file->f_pos); - rc += file->f_op->write(file, debug_buf, debug_off + 1, - &file->f_pos); - } else { - rc = file->f_op->write(file, debug_buf, debug_off,&file->f_pos); - } - printk("LustreError: wrote %d bytes\n", rc); - set_fs(oldfs); - - rc = file->f_op->fsync(file, file->f_dentry, 1); - if (rc) - CERROR("sync returns %d\n", rc); - filp_close(file, 0); -out: current->journal_info = journal_info; wake_up(&debug_ctlwq); return 0; } -int portals_debug_daemon(void *arg) -{ - struct file *file; - void *journal_info; - mm_segment_t oldfs; - unsigned long force_flush = 0; - unsigned long size, off, flags; - int rc; - - kportal_daemonize("ldebug_daemon"); - reparent_to_init(); - journal_info = current->journal_info; - current->journal_info = NULL; - - file = filp_open(debug_daemon_file_path, - O_CREAT|O_TRUNC|O_RDWR|O_LARGEFILE, 0644); - - if (!file || IS_ERR(file)) { - CERROR("cannot open %s for logging", debug_daemon_file_path); - GOTO(out1, PTR_ERR(file)); - } - printk(KERN_INFO "daemon dumping log to %s\n", debug_daemon_file_path); - - debug_daemon_state.overlapped = 0; - debug_daemon_state.stopped = 0; - - spin_lock_irqsave(&portals_debug_lock, flags); - off = atomic_read(&debug_off_a) + 1; - if (debug_wrapped) - off = (off >= debug_size)? 0 : off; - else - off = 0; - atomic_set(&debug_daemon_next_write, off); - atomic_set(&debug_daemon_state.paused, 0); - spin_unlock_irqrestore(&portals_debug_lock, flags); - - oldfs = get_fs(); - set_fs(KERNEL_DS); - while (1) { - unsigned long ending; - unsigned long start, tail; - long delta; - - debug_daemon_state.daemon_event = 0; - - ending = atomic_read(&debug_off_a); - start = atomic_read(&debug_daemon_next_write); - - /* check if paused is imposed by lctl ? */ - force_flush = !debug_daemon_state.lctl_event; - - delta = ending - start; - tail = debug_size - start; - size = (delta >= 0) ? delta : tail; - while (size && (force_flush || (delta < 0) || - (size >= DAEMON_SND_SIZE))) { - if (daemon_file_size_limit) { - int ssize = daemon_file_size_limit - file->f_pos; - if (size > ssize) - size = ssize; - } - - rc = file->f_op->write(file, debug_buf+start, - size, &file->f_pos); - if (rc < 0) { - printk(KERN_ALERT "LustreError: Debug_daemon " - "write error %d\n", rc); - goto out; - } - start += rc; - delta = ending - start; - tail = debug_size - start; - if (tail == 0) - start = 0; - if (delta >= 0) - size = delta; - else - size = (tail == 0) ? ending : tail; - if (daemon_file_size_limit == file->f_pos) { - // file wrapped around - file->f_pos = 0; - } - } - atomic_set(&debug_daemon_next_write, start); - if (force_flush) { - rc = file->f_op->fsync(file, file->f_dentry, 1); - if (rc < 0) { - printk(KERN_ALERT "LustreError: Debug_daemon " - "sync error %d\n", rc); - goto out; - } - if (debug_daemon_state.stopped) - break; - debug_daemon_state.lctl_event = 1; - wake_up(&debug_daemon_state.lctl); - } - wait_event(debug_daemon_state.daemon, - debug_daemon_state.daemon_event); - } -out: - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.stopped = 1; - set_fs(oldfs); - filp_close(file, 0); - current->journal_info = journal_info; -out1: - debug_daemon_state.lctl_event = 1; - wake_up(&debug_daemon_state.lctl); - return 0; -} - -void portals_debug_print(void) -{ - unsigned long dumplen = 64 * 1024; - char *start1, *start2; - char *end1, *end2; - unsigned long debug_off = atomic_read(&debug_off_a); - - start1 = debug_buf + debug_off - dumplen; - if (start1 < debug_buf) { - start1 += debug_size; - end1 = debug_buf + debug_size - 1; - start2 = debug_buf; - end2 = debug_buf + debug_off; - } else { - end1 = debug_buf + debug_off; - start2 = debug_buf + debug_off; - end2 = debug_buf + debug_off; - } - - while (start1 < end1) { - int count = MIN(1024, end1 - start1); - printk("LustreError: %*s", count, start1); - start1 += 1024; - } - while (start2 < end2) { - int count = MIN(1024, end2 - start2); - printk("LustreError: %*s", count, start2); - start2 += 1024; - } -} - void portals_debug_dumplog(void) { int rc; @@ -453,8 +119,8 @@ void portals_debug_dumplog(void) set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&debug_ctlwq, &wait); - rc = kernel_thread(portals_do_debug_dumplog, - NULL, CLONE_VM | CLONE_FS | CLONE_FILES); + rc = kernel_thread(portals_do_debug_dumplog, (void *)(long)current->pid, + CLONE_VM | CLONE_FS | CLONE_FILES); if (rc < 0) printk(KERN_ERR "LustreError: cannot start log dump thread: " "%d\n", rc); @@ -466,108 +132,6 @@ void portals_debug_dumplog(void) set_current_state(TASK_RUNNING); } -int portals_debug_daemon_start(char *file, unsigned int size) -{ - int rc; - - if (!debug_daemon_state.stopped) - return -EALREADY; - - if (file != NULL) - strncpy(debug_daemon_file_path, file, 1024); - - init_waitqueue_head(&debug_daemon_state.lctl); - init_waitqueue_head(&debug_daemon_state.daemon); - - daemon_file_size_limit = size << 20; - - debug_daemon_state.lctl_event = 0; - rc = kernel_thread(portals_debug_daemon, NULL, 0); - if (rc < 0) { - printk(KERN_ERR "LustreError: cannot start debug daemon thread\n"); - strncpy(debug_daemon_file_path, "\0", 1); - return rc; - } - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - return 0; -} - -int portals_debug_daemon_pause(void) -{ - if (atomic_read(&debug_daemon_state.paused)) - return -EALREADY; - - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.lctl_event = 0; - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - return 0; -} - -int portals_debug_daemon_continue(void) -{ - if (!atomic_read(&debug_daemon_state.paused)) - return -EINVAL; - if (debug_daemon_state.stopped) - return -EINVAL; - - debug_daemon_state.overlapped = 0; - atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a)); - atomic_set(&debug_daemon_state.paused, 0); - return 0; -} - -int portals_debug_daemon_stop(void) -{ - if (debug_daemon_state.stopped) - return -EALREADY; - - if (!atomic_read(&debug_daemon_state.paused)) - portals_debug_daemon_pause(); - - debug_daemon_state.lctl_event = 0; - debug_daemon_state.stopped = 1; - - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - wait_event(debug_daemon_state.lctl, debug_daemon_state.lctl_event); - - debug_daemon_file_path[0] = '\0'; - return 0; -} - -int portals_debug_set_daemon(unsigned int cmd, unsigned int length, - char *filename, unsigned int size) -{ - int rc = -EINVAL; - - down(&debug_daemon_semaphore); - switch (cmd) { - case DEBUG_DAEMON_START: - if (length && (filename[length -1] != '\0')) { - CERROR("Invalid filename for debug_daemon\n"); - rc = -EINVAL; - break; - } - rc = portals_debug_daemon_start(filename, size); - break; - case DEBUG_DAEMON_STOP: - rc = portals_debug_daemon_stop(); - break; - case DEBUG_DAEMON_PAUSE: - rc = portals_debug_daemon_pause(); - break; - case DEBUG_DAEMON_CONTINUE: - rc = portals_debug_daemon_continue(); - break; - default: - CERROR("unknown set_daemon cmd\n"); - } - up(&debug_daemon_semaphore); - return rc; -} - static int panic_dumplog(struct notifier_block *self, unsigned long unused1, void *unused2) { @@ -577,7 +141,7 @@ static int panic_dumplog(struct notifier_block *self, unsigned long unused1, handled_panic = 1; if (in_interrupt()) { - portals_debug_print(); + trace_debug_print(); return 0; } @@ -595,80 +159,29 @@ static struct notifier_block lustre_panic_notifier = { int portals_debug_init(unsigned long bufsize) { - unsigned long debug_off = atomic_read(&debug_off_a); - if (debug_buf != NULL) - return -EALREADY; - - atomic_set(&debug_daemon_state.paused, 1); - debug_daemon_state.stopped = 1; - - debug_buf = vmalloc(bufsize + DEBUG_OVERFLOW); - if (debug_buf == NULL) - return -ENOMEM; - memset(debug_buf, 0, bufsize + DEBUG_OVERFLOW); - debug_wrapped = 0; - - //printk(KERN_INFO "Portals: allocated %lu byte debug buffer at %p.\n", - //bufsize, debug_buf); - atomic_set(&debug_off_a, debug_off); notifier_chain_register(&panic_notifier_list, &lustre_panic_notifier); - debug_size = bufsize; - - return 0; + return tracefile_init(); } int portals_debug_cleanup(void) { + tracefile_exit(); notifier_chain_unregister(&panic_notifier_list, &lustre_panic_notifier); - if (debug_buf == NULL) - return -EINVAL; - - down(&debug_daemon_semaphore); - portals_debug_daemon_stop(); - - vfree(debug_buf); - atomic_set(&debug_off_a, 0); - up(&debug_daemon_semaphore); - return 0; } int portals_debug_clear_buffer(void) { - unsigned long flags; - unsigned long state; - - if (debug_buf == NULL) - return -EINVAL; - - down(&debug_daemon_semaphore); - state = atomic_read(&debug_daemon_state.paused); - if (!state) - portals_debug_daemon_pause(); - spin_lock_irqsave(&portals_debug_lock, flags); - atomic_set(&debug_off_a, 0); - debug_wrapped = 0; - atomic_set(&debug_daemon_next_write, 0); - debug_daemon_state.overlapped = 0; - spin_unlock_irqrestore(&portals_debug_lock, flags); - - if (!state) - atomic_set(&debug_daemon_state.paused, 0); - up(&debug_daemon_semaphore); - + trace_flush_pages(); return 0; } /* Debug markers, although printed by S_PORTALS - * should not be be marked as such. - */ + * should not be be marked as such. */ #undef DEBUG_SUBSYSTEM #define DEBUG_SUBSYSTEM S_UNDEFINED int portals_debug_mark_buffer(char *text) { - if (debug_buf == NULL) - return -EINVAL; - CDEBUG(D_TRACE,"***************************************************\n"); CWARN("DEBUG MARKER: %s\n", text); CDEBUG(D_TRACE,"***************************************************\n"); @@ -678,228 +191,6 @@ int portals_debug_mark_buffer(char *text) #undef DEBUG_SUBSYSTEM #define DEBUG_SUBSYSTEM S_PORTALS -/* this copies a snapshot of the debug buffer into an array of pages - * before doing the potentially blocking copy into userspace. it could - * be warning userspace if things wrap heavily while its off copying. */ -__s32 portals_debug_copy_to_user(char *buf, unsigned long len) -{ - int rc; - unsigned long total, debug_off, i, off, copied; - unsigned long flags; - struct page *page; - LIST_HEAD(my_pages); - struct list_head *pos, *n; - - if (len < debug_size) - return -ENOSPC; - - for (i = 0 ; i < debug_size; i += PAGE_SIZE) { - page = alloc_page(GFP_NOFS); - if (page == NULL) { - rc = -ENOMEM; - goto cleanup; - } - list_add(&PAGE_LIST(page), &my_pages); - } - - spin_lock_irqsave(&portals_debug_lock, flags); - debug_off = atomic_read(&debug_off_a); - - /* Sigh. If the buffer is empty, then skip to the end. */ - if (debug_off == 0 && !debug_wrapped) { - spin_unlock_irqrestore(&portals_debug_lock, flags); - rc = 0; - goto cleanup; - } - - if (debug_wrapped) { - off = debug_off + 1; - total = debug_size; - } else { - off = 0; - total = debug_off; - } - copied = 0; - list_for_each(pos, &my_pages) { - unsigned long to_copy; - void *addr; - - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - to_copy = min(total - off, PAGE_SIZE); - if (to_copy == 0) { - off = 0; - to_copy = min(debug_size - off, PAGE_SIZE); - } -finish_partial: - addr = kmap_atomic(page, KM_USER0); - memcpy(addr, debug_buf + off, to_copy); - kunmap_atomic(addr, KM_USER0); - copied += to_copy; - if (copied >= total) - break; - - off += to_copy; - if (off >= debug_size) { - off = 0; - if (to_copy != PAGE_SIZE) { - to_copy = PAGE_SIZE - to_copy; - goto finish_partial; - } - } - } - - spin_unlock_irqrestore(&portals_debug_lock, flags); - - off = 0; - list_for_each(pos, &my_pages) { - unsigned long to_copy; - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - - to_copy = min(copied - off, PAGE_SIZE); - rc = copy_to_user(buf + off, kmap(page), to_copy); - kunmap(page); - if (rc) { - rc = -EFAULT; - goto cleanup; - } - off += to_copy; - if (off >= copied) - break; - } - rc = copied; - -cleanup: - list_for_each_safe(pos, n, &my_pages) { - page = list_entry(pos, struct page, PAGE_LIST_ENTRY); - list_del(&PAGE_LIST(page)); - __free_page(page); - } - return rc; -} - -/* FIXME: I'm not very smart; someone smarter should make this better. */ -void -portals_debug_msg(int subsys, int mask, char *file, const char *fn, - const int line, unsigned long stack, char *format, ...) -{ - va_list ap; - unsigned long flags; - int max_nob; - int prefix_nob; - int msg_nob; - struct timeval tv; - unsigned long base_offset; - unsigned long debug_off; - - if (debug_buf == NULL) { - printk("LustreError: portals_debug_msg: debug_buf is NULL!\n"); - return; - } - - spin_lock_irqsave(&portals_debug_lock, flags); - debug_off = atomic_read(&debug_off_a); - if (!atomic_read(&debug_daemon_state.paused)) { - unsigned long available; - long delta; - long v = atomic_read(&debug_daemon_next_write); - - delta = debug_off - v; - available = (delta>=0) ? debug_size-delta : -delta; - // Check if we still have enough debug buffer for CDEBUG - if (available < DAEMON_SND_SIZE) { - /* Drop CDEBUG packets until enough debug_buffer is - * available */ - if (debug_daemon_state.overlapped) - goto out; - /* If this is the first time, leave a marker in the - * output */ - debug_daemon_state.overlapped = 1; - format = "DEBUG MARKER: Debug buffer overlapped\n"; - printk(KERN_ERR "LustreError: debug daemon buffer " - "overlapped\n"); - } else /* More space just became available */ - debug_daemon_state.overlapped = 0; - } - - max_nob = debug_size - debug_off + DEBUG_OVERFLOW; - if (max_nob <= 0) { - spin_unlock_irqrestore(&portals_debug_lock, flags); - printk("LustreError: logic error in portals_debug_msg: " - "< 0 bytes to write\n"); - return; - } - - /* NB since we pass a non-zero sized buffer (at least) on the first - * print, we can be assured that by the end of all the snprinting, - * we _do_ have a terminated buffer, even if our message got truncated. - */ - - do_gettimeofday(&tv); - - prefix_nob = snprintf(debug_buf + debug_off, max_nob, - "%06x:%06x:%d:%lu.%06lu:%lu:%d:", - subsys, mask, smp_processor_id(), - tv.tv_sec, tv.tv_usec, stack, current->pid); - max_nob -= prefix_nob; - - if(*(format + strlen(format) - 1) != '\n') - printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", - file, line, fn); - -#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->thread.extern_pid, file, line, fn); -#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->thread.mode.tt.extern_pid, file, line, fn); -#else - msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, - "%d:(%s:%d:%s()) ", - current->pid, file, line, fn); -#endif - - va_start(ap, format); - msg_nob += vsnprintf(debug_buf + debug_off + prefix_nob + msg_nob, - max_nob, format, ap); - max_nob -= msg_nob; - va_end(ap); - - /* Print to console, while msg is contiguous in debug_buf */ - /* NB safely terminated see above */ - if ((mask & D_EMERG) != 0) - printk(KERN_EMERG "LustreError: %s", - debug_buf + debug_off + prefix_nob); - else if ((mask & D_ERROR) != 0) - printk(KERN_ERR "LustreError: %s", - debug_buf + debug_off + prefix_nob); - else if ((mask & D_WARNING) != 0) - printk(KERN_WARNING "Lustre: %s", - debug_buf + debug_off + prefix_nob); - else if (portal_printk) - printk("<%d>Lustre: %s", portal_printk, - debug_buf+debug_off+prefix_nob); - base_offset = debug_off & 0xFFFF; - - debug_off += prefix_nob + msg_nob; - if (debug_off > debug_size) { - memcpy(debug_buf, debug_buf + debug_size, - debug_off - debug_size + 1); - debug_off -= debug_size; - debug_wrapped = 1; - } - - atomic_set(&debug_off_a, debug_off); - if (!atomic_read(&debug_daemon_state.paused) && - ((base_offset+prefix_nob+msg_nob) >= DAEMON_SND_SIZE)) { - debug_daemon_state.daemon_event = 1; - wake_up(&debug_daemon_state.daemon); - } -out: - spin_unlock_irqrestore(&portals_debug_lock, flags); -} - void portals_debug_set_level(unsigned int debug_level) { printk("Lustre: Setting portals debug level to %08x\n", debug_level); @@ -1079,7 +370,6 @@ EXPORT_SYMBOL(portals_current); #endif /* __KERNEL__ */ EXPORT_SYMBOL(portals_debug_dumplog); -EXPORT_SYMBOL(portals_debug_msg); EXPORT_SYMBOL(portals_debug_set_level); EXPORT_SYMBOL(portals_run_upcall); EXPORT_SYMBOL(portals_run_lbug_upcall); diff --git a/lustre/portals/libcfs/module.c b/lustre/portals/libcfs/module.c index f46c855..c510aa4 100644 --- a/lustre/portals/libcfs/module.c +++ b/lustre/portals/libcfs/module.c @@ -526,23 +526,6 @@ static int kportal_ioctl(struct inode *inode, struct file *file, data = (struct portal_ioctl_data *)buf; switch (cmd) { - case IOC_PORTAL_SET_DAEMON: - RETURN (portals_debug_set_daemon ( - (unsigned int) data->ioc_count, - (unsigned int) data->ioc_inllen1, - (char *) data->ioc_inlbuf1, - (unsigned int) data->ioc_misc)); - case IOC_PORTAL_GET_DEBUG: { - __s32 size = portals_debug_copy_to_user(data->ioc_pbuf1, - data->ioc_plen1); - - if (size < 0) - RETURN(size); - - data->ioc_size = size; - err = copy_to_user((char *)arg, data, sizeof(*data)); - RETURN(err); - } case IOC_PORTAL_CLEAR_DEBUG: portals_debug_clear_buffer(); RETURN(0); @@ -767,7 +750,6 @@ static void exit_kportals_module(void) CDEBUG(D_MALLOC, "before Portals cleanup: kmem %d\n", atomic_read(&portal_kmemory)); - rc = misc_deregister(&portal_dev); if (rc) CERROR("misc_deregister error %d\n", rc); diff --git a/lustre/portals/libcfs/proc.c b/lustre/portals/libcfs/proc.c index c1b2aec..8565939 100644 --- a/lustre/portals/libcfs/proc.c +++ b/lustre/portals/libcfs/proc.c @@ -55,10 +55,10 @@ #include #include +#include "tracefile.h" static struct ctl_table_header *portals_table_header = NULL; extern char debug_file_path[1024]; -extern char debug_daemon_file_path[1024]; extern char portals_upcall[1024]; #define PSDEV_PORTALS (0x100) @@ -82,9 +82,6 @@ static struct ctl_table portals_table[PORTALS_PRIMARY_CTLCNT + 1] = { &proc_dointvec}, {PSDEV_DEBUG_PATH, "debug_path", debug_file_path, sizeof(debug_file_path), 0644, NULL, &proc_dostring, &sysctl_string}, - {PSDEV_DEBUG_DUMP_PATH, "debug_daemon_path", debug_daemon_file_path, - sizeof(debug_daemon_file_path), 0644, NULL, &proc_dostring, - &sysctl_string}, {PSDEV_PORTALS_UPCALL, "upcall", portals_upcall, sizeof(portals_upcall), 0644, NULL, &proc_dostring, &sysctl_string}, @@ -234,9 +231,9 @@ static unsigned char basedir[]="net/portals"; int insert_proc(void) { + struct proc_dir_entry *ent; #if PORTALS_PROFILING unsigned char dir[128]; - struct proc_dir_entry *ent; if (ARRAY_SIZE(prof_ents) != MAX_PROFS) { CERROR("profiling enum and array are out of sync.\n"); @@ -266,6 +263,29 @@ int insert_proc(void) portals_table_header = register_sysctl_table(top_table, 0); #endif + ent = create_proc_entry("sys/portals/dump_kernel", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register dump_kernel\n"); + return -1; + } + ent->write_proc = trace_dk; + + ent = create_proc_entry("sys/portals/daemon_file", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register daemon_file\n"); + return -1; + } + ent->write_proc = trace_write_daemon_file; + ent->read_proc = trace_read_daemon_file; + + ent = create_proc_entry("sys/portals/debug_size", 0, NULL); + if (ent == NULL) { + CERROR("couldn't register debug_size\n"); + return -1; + } + ent->write_proc = trace_write_debug_size; + ent->read_proc = trace_read_debug_size; + return 0; } @@ -281,12 +301,16 @@ void remove_proc(void) end = strlen(dir); strcat(dir, "/cycles"); - remove_proc_entry(dir,0); + remove_proc_entry(dir, 0); dir[end] = '\0'; - remove_proc_entry(dir,0); + remove_proc_entry(dir, 0); #endif /* PORTALS_PROFILING */ + remove_proc_entry("sys/portals/dump_kernel", NULL); + remove_proc_entry("sys/portals/daemon_file", NULL); + remove_proc_entry("sys/portals/debug_size", NULL); + #ifdef CONFIG_SYSCTL if (portals_table_header) unregister_sysctl_table(portals_table_header); diff --git a/lustre/portals/libcfs/tracefile.c b/lustre/portals/libcfs/tracefile.c new file mode 100644 index 0000000..7d79635 --- /dev/null +++ b/lustre/portals/libcfs/tracefile.c @@ -0,0 +1,862 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + * + * Copyright (C) 2004 Cluster File Systems, Inc. + * Author: Zach Brown + * Author: Phil Schwan + * + * This file is part of Lustre, http://www.lustre.org. + * + * Lustre is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * Lustre 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 Lustre; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_MM_INLINE +#include +#endif + +#define DEBUG_SUBSYSTEM S_PORTALS + +#include +#include +#include + +#define TCD_MAX_PAGES 1280 + +/* XXX move things up to the top, comment */ + +static union { + struct trace_cpu_data { + struct list_head tcd_pages; + unsigned long tcd_cur_pages; + + struct list_head tcd_daemon_pages; + unsigned long tcd_cur_daemon_pages; + + unsigned long tcd_max_pages; + int tcd_shutting_down; + } tcd; + char __pad[SMP_CACHE_BYTES]; +} trace_data[NR_CPUS] __cacheline_aligned; + +struct page_collection { + struct list_head pc_pages; + spinlock_t pc_lock; + int pc_want_daemon_pages; +}; + +struct tracefiled_ctl { + struct completion tctl_start; + struct completion tctl_stop; + wait_queue_head_t tctl_waitq; + pid_t tctl_pid; + atomic_t tctl_shutdown; +}; + +static DECLARE_RWSEM(tracefile_sem); +static char *tracefile = NULL; +static struct tracefiled_ctl trace_tctl; +static DECLARE_MUTEX(trace_thread_sem); +static int thread_running = 0; + +#ifndef get_cpu +#define get_cpu() smp_processor_id() +#define put_cpu() do { } while (0) +#endif + +#define trace_get_tcd(FLAGS) ({ \ + struct trace_cpu_data *__ret; \ + int __cpu = get_cpu(); \ + local_irq_save(FLAGS); \ + __ret = &trace_data[__cpu].tcd; \ + __ret; \ +}) + +#define trace_put_tcd(TCD, FLAGS) do { \ + local_irq_restore(FLAGS); \ + put_cpu(); \ +} while (0) + +static void put_pages_on_daemon_list_on_cpu(void *info); + +/* return a page that has 'len' bytes left at the end */ +static struct page *trace_get_page(struct trace_cpu_data *tcd, + unsigned long len) +{ + struct page *page = NULL; + + if (len > PAGE_SIZE) { + printk(KERN_ERR "cowardly refusing to write %lu bytes in a " + "page\n", len); + return NULL; + } + + if (!list_empty(&tcd->tcd_pages)) { + page = list_entry(tcd->tcd_pages.prev, struct page, + PAGE_LIST_ENTRY); + if (page->index + len <= PAGE_SIZE) + return page; + } + + if (tcd->tcd_cur_pages < tcd->tcd_max_pages) { + page = alloc_page(GFP_ATOMIC); + if (page == NULL) { + /* the kernel should print a message for us. fall back + * to using the last page in the ring buffer. */ + goto ring_buffer; + return NULL; + } + page->index = 0; + page->mapping = (void *)smp_processor_id(); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_pages); + tcd->tcd_cur_pages++; + + if (tcd->tcd_cur_pages > 8 && thread_running) { + struct tracefiled_ctl *tctl = &trace_tctl; + wake_up(&tctl->tctl_waitq); + } + return page; + } + + ring_buffer: + if (thread_running) { + int pgcount = tcd->tcd_cur_pages / 10; + struct page_collection pc; + struct list_head *pos, *tmp; + printk(KERN_WARNING "debug daemon buffer overflowed; discarding" + " 10%% of pages (%d)\n", pgcount + 1); + + INIT_LIST_HEAD(&pc.pc_pages); + spin_lock_init(&pc.pc_lock); + + list_for_each_safe(pos, tmp, &tcd->tcd_pages) { + struct page *page; + + if (pgcount-- == 0) + break; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &pc.pc_pages); + tcd->tcd_cur_pages--; + } + put_pages_on_daemon_list_on_cpu(&pc); + } + LASSERT(!list_empty(&tcd->tcd_pages)); + + page = list_entry(tcd->tcd_pages.next, struct page, PAGE_LIST_ENTRY); + page->index = 0; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_pages); + return page; +} + +static void print_to_console(struct ptldebug_header *hdr, int mask, char *buf, + int len, char *file, const char *fn) +{ + char *prefix = NULL, *ptype = NULL; + + if ((mask & D_EMERG) != 0) { + prefix = "LustreError"; + ptype = KERN_EMERG; + } else if ((mask & D_ERROR) != 0) { + prefix = "LustreError"; + ptype = KERN_ERR; + } else if ((mask & D_WARNING) != 0) { + prefix = "Lustre"; + ptype = KERN_WARNING; + } else if (portal_printk) { + prefix = "Lustre"; + ptype = KERN_INFO; + } + + printk("%s%s: %d:%d:(%s:%d:%s()) %*s", ptype, prefix, hdr->ph_pid, + hdr->ph_extern_pid, file, hdr->ph_line_num, fn, len, buf); +} + +void portals_debug_msg(int subsys, int mask, char *file, const char *fn, + const int line, unsigned long stack, char *format, ...) +{ + struct trace_cpu_data *tcd; + struct ptldebug_header header; + struct page *page; + char *debug_buf; + int known_size, needed, max_nob; + va_list ap; + unsigned long flags; + struct timeval tv; + + if (*(format + strlen(format) - 1) != '\n') + printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", + file, line, fn); + + tcd = trace_get_tcd(flags); + if (tcd->tcd_shutting_down) + goto out; + + do_gettimeofday(&tv); + + header.ph_subsys = subsys; + header.ph_mask = mask; + header.ph_cpu_id = smp_processor_id(); + header.ph_sec = (__u32)tv.tv_sec; + header.ph_usec = tv.tv_usec; + header.ph_stack = stack; + header.ph_pid = current->pid; + header.ph_line_num = line; + +#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) + header.ph_extern_pid = current->thread.extern_pid; +#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + header.ph_extern_pid = current->thread.mode.tt.extern_pid; +#else + header.ph_extern_pid = 0; +#endif + + known_size = sizeof(header) + strlen(file) + strlen(fn) + 2; // nulls + + page = trace_get_page(tcd, known_size + 40); /* slop */ + retry: + if (page == NULL) + goto out; + + debug_buf = page_address(page) + page->index + known_size; + + va_start(ap, format); + max_nob = PAGE_SIZE - page->index - known_size; + LASSERT(max_nob > 0); + needed = vsnprintf(debug_buf, max_nob, format, ap); + va_end(ap); + + if (needed > max_nob) { + /* overflow. oh poop. */ + page = trace_get_page(tcd, needed + known_size); + goto retry; + } + + header.ph_len = known_size + needed; + debug_buf = page_address(page) + page->index; + + memcpy(debug_buf, &header, sizeof(header)); + page->index += sizeof(header); + debug_buf += sizeof(header); + + strcpy(debug_buf, file); + page->index += strlen(file) + 1; + debug_buf += strlen(file) + 1; + + strcpy(debug_buf, fn); + page->index += strlen(fn) + 1; + debug_buf += strlen(fn) + 1; + + page->index += needed; + if (page->index > PAGE_SIZE) + printk(KERN_EMERG "page->index == %lu in portals_debug_msg\n", + page->index); + + if ((mask & (D_EMERG | D_ERROR | D_WARNING)) || portal_printk) + print_to_console(&header, mask, debug_buf, needed, file, fn); + + out: + trace_put_tcd(tcd, flags); +} +EXPORT_SYMBOL(portals_debug_msg); + +static void collect_pages_on_cpu(void *info) +{ + struct trace_cpu_data *tcd; + unsigned long flags; + struct page_collection *pc = info; + + tcd = trace_get_tcd(flags); + + spin_lock(&pc->pc_lock); + list_splice(&tcd->tcd_pages, &pc->pc_pages); + INIT_LIST_HEAD(&tcd->tcd_pages); + tcd->tcd_cur_pages = 0; + if (pc->pc_want_daemon_pages) { + list_splice(&tcd->tcd_daemon_pages, &pc->pc_pages); + INIT_LIST_HEAD(&tcd->tcd_daemon_pages); + tcd->tcd_cur_daemon_pages = 0; + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void collect_pages(struct page_collection *pc) +{ + /* needs to be fixed up for preempt */ + INIT_LIST_HEAD(&pc->pc_pages); + collect_pages_on_cpu(pc); + smp_call_function(collect_pages_on_cpu, pc, 0, 1); +} + +static void put_pages_back_on_cpu(void *info) +{ + struct page_collection *pc = info; + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp, *cur_head; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + cur_head = tcd->tcd_pages.next; + + spin_lock(&pc->pc_lock); + list_for_each_safe(pos, tmp, &pc->pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + if ((unsigned long)page->mapping != smp_processor_id()) + continue; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), cur_head); + tcd->tcd_cur_pages++; + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void put_pages_back(struct page_collection *pc) +{ + /* needs to be fixed up for preempt */ + put_pages_back_on_cpu(pc); + smp_call_function(put_pages_back_on_cpu, pc, 0, 1); +} + +/* Add pages to a per-cpu debug daemon ringbuffer. This buffer makes sure that + * we have a good amount of data at all times for dumping during an LBUG, even + * if we have been steadily writing (and otherwise discarding) pages via the + * debug daemon. */ +static void put_pages_on_daemon_list_on_cpu(void *info) +{ + struct page_collection *pc = info; + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + spin_lock(&pc->pc_lock); + list_for_each_safe(pos, tmp, &pc->pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + if ((unsigned long)page->mapping != smp_processor_id()) + continue; + + list_del(&PAGE_LIST(page)); + list_add_tail(&PAGE_LIST(page), &tcd->tcd_daemon_pages); + tcd->tcd_cur_daemon_pages++; + + if (tcd->tcd_cur_daemon_pages > tcd->tcd_max_pages) { + LASSERT(!list_empty(&tcd->tcd_daemon_pages)); + page = list_entry(tcd->tcd_daemon_pages.next, + struct page, PAGE_LIST_ENTRY); + + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + page->index = 0; + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + tcd->tcd_cur_daemon_pages--; + } + } + spin_unlock(&pc->pc_lock); + + trace_put_tcd(tcd, flags); +} + +static void put_pages_on_daemon_list(struct page_collection *pc) +{ + put_pages_on_daemon_list_on_cpu(pc); + smp_call_function(put_pages_on_daemon_list_on_cpu, pc, 0, 1); +} + +void trace_debug_print(void) +{ + struct page_collection pc; + struct list_head *pos, *tmp; + + spin_lock_init(&pc.pc_lock); + + collect_pages(&pc); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + char *p, *file, *fn; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + p = page_address(page); + while (p < ((char *)page_address(page) + PAGE_SIZE)) { + struct ptldebug_header *hdr; + int len; + hdr = (void *)p; + p += sizeof(*hdr); + file = p; + p += strlen(file) + 1; + fn = p; + p += strlen(fn) + 1; + len = hdr->ph_len - (p - (char *)hdr); + + print_to_console(hdr, D_EMERG, p, len, file, fn); + } + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } +} + +int tracefile_dump_all_pages(char *filename) +{ + struct page_collection pc; + struct file *filp; + struct list_head *pos, *tmp; + mm_segment_t oldfs; + int rc; + + down_write(&tracefile_sem); + + filp = filp_open(filename, O_CREAT|O_EXCL|O_WRONLY, 0600); + if (IS_ERR(filp)) { + rc = PTR_ERR(filp); + printk(KERN_ERR "couldn't open %s: %d\n", filename, rc); + goto out; + } + + spin_lock_init(&pc.pc_lock); + pc.pc_want_daemon_pages = 1; + collect_pages(&pc); + if (list_empty(&pc.pc_pages)) { + rc = 0; + goto close; + } + + /* ok, for now, just write the pages. in the future we'll be building + * iobufs with the pages and calling generic_direct_IO */ + oldfs = get_fs(); + set_fs(get_ds()); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + rc = filp->f_op->write(filp, page_address(page), page->index, + &filp->f_pos); + if (rc != page->index) { + printk(KERN_WARNING "wanted to write %lu but wrote " + "%d\n", page->index, rc); + put_pages_back(&pc); + break; + } + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } + set_fs(oldfs); + rc = filp->f_op->fsync(filp, filp->f_dentry, 1); + if (rc) + printk(KERN_ERR "sync returns %d\n", rc); + close: + filp_close(filp, 0); + out: + up_write(&tracefile_sem); + return rc; +} + +void trace_flush_pages(void) +{ + struct page_collection pc; + struct list_head *pos, *tmp; + + spin_lock_init(&pc.pc_lock); + + collect_pages(&pc); + list_for_each_safe(pos, tmp, &pc.pc_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } +} + +int trace_dk(struct file *file, const char *buffer, unsigned long count, + void *data) +{ + char *name; + unsigned long off; + int rc; + + name = kmalloc(count + 1, GFP_KERNEL); + if (name == NULL) + return -ENOMEM; + + if (copy_from_user(name, buffer, count)) { + rc = -EFAULT; + goto out; + } + + if (name[0] != '/') { + rc = -EINVAL; + goto out; + } + + /* be nice and strip out trailing '\n' */ + for (off = count ; off > 2 && isspace(name[off - 1]); off--) + ; + + name[off] = '\0'; + rc = tracefile_dump_all_pages(name); +out: + if (name) + kfree(name); + return count; +} +EXPORT_SYMBOL(trace_dk); + +static int tracefiled(void *arg) +{ + struct page_collection pc; + struct tracefiled_ctl *tctl = arg; + struct list_head *pos, *tmp; + struct ptldebug_header *hdr; + struct file *filp; + struct page *page; + mm_segment_t oldfs; + int rc; + + /* we're started late enough that we pick up init's fs context */ + /* this is so broken in uml? what on earth is going on? */ + kportal_daemonize("ktracefiled"); + reparent_to_init(); + + spin_lock_init(&pc.pc_lock); + complete(&tctl->tctl_start); + + while (1) { + wait_queue_t __wait; + + init_waitqueue_entry(&__wait, current); + add_wait_queue(&tctl->tctl_waitq, &__wait); + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(HZ); + remove_wait_queue(&tctl->tctl_waitq, &__wait); + + if (atomic_read(&tctl->tctl_shutdown)) + break; + + pc.pc_want_daemon_pages = 0; + collect_pages(&pc); + if (list_empty(&pc.pc_pages)) + continue; + + filp = NULL; + down_read(&tracefile_sem); + if (tracefile != NULL) { + filp = filp_open(tracefile, O_CREAT|O_RDWR|O_APPEND, + 0600); + if (IS_ERR(filp)) { + printk("couldn't open %s: %ld\n", tracefile, + PTR_ERR(filp)); + filp = NULL; + } + } + up_read(&tracefile_sem); + if (filp == NULL) { + put_pages_on_daemon_list(&pc); + continue; + } + + oldfs = get_fs(); + set_fs(get_ds()); + + /* mark the first header, so we can sort in chunks */ + page = list_entry(pc.pc_pages.next, struct page, + PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + hdr = page_address(page); + hdr->ph_flags |= PH_FLAG_FIRST_RECORD; + + list_for_each_safe(pos, tmp, &pc.pc_pages) { + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + rc = filp->f_op->write(filp, page_address(page), + page->index, &filp->f_pos); + if (rc != page->index) { + printk(KERN_WARNING "wanted to write %lu but " + "wrote %d\n", page->index, rc); + put_pages_back(&pc); + } + } + set_fs(oldfs); + filp_close(filp, 0); + + put_pages_on_daemon_list(&pc); + } + complete(&tctl->tctl_stop); + return 0; +} + +int trace_start_thread(void) +{ + struct tracefiled_ctl *tctl = &trace_tctl; + int rc = 0; + + down(&trace_thread_sem); + if (thread_running) + goto out; + + init_completion(&tctl->tctl_start); + init_completion(&tctl->tctl_stop); + init_waitqueue_head(&tctl->tctl_waitq); + atomic_set(&tctl->tctl_shutdown, 0); + + if (kernel_thread(tracefiled, tctl, 0) < 0) { + rc = -ECHILD; + goto out; + } + + wait_for_completion(&tctl->tctl_start); + thread_running = 1; +out: + up(&trace_thread_sem); + return rc; +} + +void trace_stop_thread(void) +{ + struct tracefiled_ctl *tctl = &trace_tctl; + + down(&trace_thread_sem); + if (thread_running) { + printk(KERN_INFO "Shutting down debug daemon thread...\n"); + atomic_set(&tctl->tctl_shutdown, 1); + wait_for_completion(&tctl->tctl_stop); + thread_running = 0; + } + up(&trace_thread_sem); +} + +int trace_write_daemon_file(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + char *name; + unsigned long off; + int rc; + + name = kmalloc(count + 1, GFP_KERNEL); + if (name == NULL) + return -ENOMEM; + + if (copy_from_user(name, buffer, count)) { + rc = -EFAULT; + goto out; + } + + /* be nice and strip out trailing '\n' */ + for (off = count ; off > 2 && isspace(name[off - 1]); off--) + ; + + name[off] = '\0'; + + down_write(&tracefile_sem); + if (strcmp(name, "stop") == 0) { + tracefile = NULL; + trace_stop_thread(); + goto out_sem; + } + + if (name[0] != '/') { + rc = -EINVAL; + goto out_sem; + } + + if (tracefile != NULL) + kfree(tracefile); + + tracefile = name; + name = NULL; + + printk(KERN_INFO "Lustre: debug daemon will attempt to start writing " + "to %s\n", name); + + trace_start_thread(); + + out_sem: + up_write(&tracefile_sem); + + out: + if (name) + kfree(name); + return count; +} + +int trace_read_daemon_file(char *page, char **start, off_t off, int count, + int *eof, void *data) +{ + int rc; + + down_read(&tracefile_sem); + rc = snprintf(page, count, "%s", tracefile); + up_read(&tracefile_sem); + + return rc; +} + +int trace_write_debug_size(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + char *string; + int rc, i; + unsigned max; + + string = kmalloc(count + 1, GFP_KERNEL); + if (string == NULL) + return -ENOMEM; + + if (copy_from_user(string, buffer, count)) { + rc = -EFAULT; + goto out; + } + + max = simple_strtoul(string, NULL, 0); + if (max == 0) { + rc = -EINVAL; + goto out; + } + max /= smp_num_cpus; + + if (max > num_physpages / 5 * 4) { + printk(KERN_ERR "Lustre: Refusing to set debug buffer size to " + "%d pages, which is more than 80%% of physical pages " + "(%lu).\n", max * smp_num_cpus, num_physpages / 5 * 4); + return count; + } + + for (i = 0; i < NR_CPUS; i++) { + struct trace_cpu_data *tcd; + tcd = &trace_data[i].tcd; + tcd->tcd_max_pages = max; + } + out: + kfree(string); + return count; +} + +int trace_read_debug_size(char *page, char **start, off_t off, int count, + int *eof, void *data) +{ + struct trace_cpu_data *tcd; + unsigned long flags; + int rc; + + tcd = trace_get_tcd(flags); + rc = snprintf(page, count, "%lu\n", tcd->tcd_max_pages * smp_num_cpus); + trace_put_tcd(tcd, flags); + + return rc; +} + +int tracefile_init(void) +{ + struct trace_cpu_data *tcd; + int i; + + for (i = 0; i < NR_CPUS; i++) { + tcd = &trace_data[i].tcd; + INIT_LIST_HEAD(&tcd->tcd_pages); + INIT_LIST_HEAD(&tcd->tcd_daemon_pages); + tcd->tcd_cur_pages = 0; + tcd->tcd_cur_daemon_pages = 0; + tcd->tcd_max_pages = TCD_MAX_PAGES; + tcd->tcd_shutting_down = 0; + } + return 0; +} + +static void trace_cleanup_on_cpu(void *info) +{ + struct trace_cpu_data *tcd; + struct list_head *pos, *tmp; + unsigned long flags; + + tcd = trace_get_tcd(flags); + + tcd->tcd_shutting_down = 1; + + list_for_each_safe(pos, tmp, &tcd->tcd_pages) { + struct page *page; + + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + LASSERT(page->index <= PAGE_SIZE); + LASSERT(page_count(page) > 0); + + list_del(&PAGE_LIST(page)); + page->mapping = NULL; + __free_page(page); + } + tcd->tcd_cur_pages = 0; + + trace_put_tcd(tcd, flags); +} + +static void trace_cleanup(void) +{ + struct page_collection pc; + + INIT_LIST_HEAD(&pc.pc_pages); + spin_lock_init(&pc.pc_lock); + + trace_cleanup_on_cpu(&pc); + smp_call_function(trace_cleanup_on_cpu, &pc, 0, 1); +} + +void tracefile_exit(void) +{ + trace_stop_thread(); + trace_cleanup(); +} diff --git a/lustre/portals/libcfs/tracefile.h b/lustre/portals/libcfs/tracefile.h new file mode 100644 index 0000000..1b6e7a0 --- /dev/null +++ b/lustre/portals/libcfs/tracefile.h @@ -0,0 +1,22 @@ +#ifndef __PORTALS_TRACEFILE_H +#define __PORTALS_TRACEFILE_H + +int tracefile_dump_all_pages(char *filename); +void trace_debug_print(void); +void trace_flush_pages(void); +int trace_start_thread(void); +void trace_stop_thread(void); +int tracefile_init(void); +void tracefile_exit(void); +int trace_write_daemon_file(struct file *file, const char *buffer, + unsigned long count, void *data); +int trace_read_daemon_file(char *page, char **start, off_t off, int count, + int *eof, void *data); +int trace_write_debug_size(struct file *file, const char *buffer, + unsigned long count, void *data); +int trace_read_debug_size(char *page, char **start, off_t off, int count, + int *eof, void *data); +int trace_dk(struct file *file, const char *buffer, unsigned long count, + void *data); + +#endif /* __PORTALS_TRACEFILE_H */ diff --git a/lustre/portals/utils/debug.c b/lustre/portals/utils/debug.c index 69880ea..d460919 100644 --- a/lustre/portals/utils/debug.c +++ b/lustre/portals/utils/debug.c @@ -25,6 +25,8 @@ #define __USE_FILE_OFFSET64 +#include + #include #include #include @@ -82,8 +84,6 @@ struct debug_daemon_cmd { static const struct debug_daemon_cmd portal_debug_daemon_cmd[] = { {"start", DEBUG_DAEMON_START}, {"stop", DEBUG_DAEMON_STOP}, - {"pause", DEBUG_DAEMON_PAUSE}, - {"continue", DEBUG_DAEMON_CONTINUE}, {0, 0} }; @@ -230,108 +230,230 @@ int jt_dbg_list(int argc, char **argv) return 0; } -/* if 'raw' is true, don't strip the debug information from the front of the - * lines */ -static void dump_buffer(FILE *fd, char *buf, int size, int raw) +/* all strings nul-terminated; only the struct and hdr need to be freed */ +struct dbg_line { + struct ptldebug_header *hdr; + char *file; + char *fn; + char *text; + struct list_head chain; +}; + +/* nurr. */ +static void list_add_ordered(struct dbg_line *new, struct list_head *head) +{ + struct list_head *pos; + struct dbg_line *curr, *next; + + list_for_each(pos, head) { + curr = list_entry(pos, struct dbg_line, chain); + + if (curr->hdr->ph_sec < new->hdr->ph_sec) + continue; + if (curr->hdr->ph_sec == new->hdr->ph_sec && + curr->hdr->ph_usec < new->hdr->ph_usec) + continue; + + list_add(&new->chain, pos->prev); + return; + } + list_add_tail(&new->chain, head); +} + +static void print_saved_records(struct list_head *list, FILE *out) { - char *p, *z; - unsigned long subsystem, debug, dropped = 0, kept = 0; + struct list_head *pos, *tmp; + + list_for_each_safe(pos, tmp, list) { + struct dbg_line *line; + struct ptldebug_header *hdr; + + line = list_entry(pos, struct dbg_line, chain); + list_del(&line->chain); + + hdr = line->hdr; + fprintf(out, "%06x:%06x:%u:%u.%06Lu:%u:%u:%u:(%s:%u:%s()) %s", + hdr->ph_subsys, hdr->ph_mask, hdr->ph_cpu_id, + hdr->ph_sec, (unsigned long long)hdr->ph_usec, + hdr->ph_stack, hdr->ph_pid, hdr->ph_extern_pid, + line->file, hdr->ph_line_num, line->fn, line->text); + free(line->hdr); + free(line); + } +} - while (size) { - p = memchr(buf, '\n', size); - if (!p) +static int parse_buffer(FILE *in, FILE *out) +{ + struct dbg_line *line; + struct ptldebug_header *hdr; + char buf[4097], *p; + int rc; + unsigned long dropped = 0, kept = 0; + struct list_head chunk_list, *pos; + + INIT_LIST_HEAD(&chunk_list); + + while (1) { + rc = fread(buf, sizeof(hdr->ph_len), 1, in); + if (rc <= 0) break; - subsystem = strtoul(buf, &z, 16); - debug = strtoul(z + 1, &z, 16); - - z++; - /* for some reason %*s isn't working. */ - *p = '\0'; - if ((subsystem_mask & subsystem) && - (!debug || (debug_mask & debug))) { - if (raw) - fprintf(fd, "%s\n", buf); - else - fprintf(fd, "%s\n", z); - //printf("%s\n", buf); - kept++; - } else { - //fprintf(stderr, "dropping line (%lx:%lx): %s\n", subsystem, debug, buf); + + hdr = (void *)buf; + if (hdr->ph_len == 0) + break; + if (hdr->ph_len > 4094) { + fprintf(stderr, "unexpected large record: %d bytes. " + "aborting.\n", + hdr->ph_len); + break; + } + + if (hdr->ph_flags & PH_FLAG_FIRST_RECORD) { + print_saved_records(&chunk_list, out); + assert(list_empty(&chunk_list)); + } + + rc = fread(buf + sizeof(hdr->ph_len), 1, + hdr->ph_len - sizeof(hdr->ph_len), in); + if (rc <= 0) + break; + + if (hdr->ph_mask && + (!(subsystem_mask & hdr->ph_subsys) || + (!(debug_mask & hdr->ph_mask)))) { dropped++; + continue; } - *p = '\n'; - p++; - size -= (p - buf); - buf = p; + + line = malloc(sizeof(*line)); + if (line == NULL) { + fprintf(stderr, "malloc failed; printing accumulated " + "records and exiting.\n"); + break; + } + + line->hdr = malloc(hdr->ph_len + 1); + if (line->hdr == NULL) { + fprintf(stderr, "malloc failed; printing accumulated " + "records and exiting.\n"); + break; + } + + p = (void *)line->hdr; + memcpy(line->hdr, buf, hdr->ph_len); + p[hdr->ph_len] = '\0'; + + p += sizeof(*hdr); + line->file = p; + p += strlen(line->file) + 1; + line->fn = p; + p += strlen(line->fn) + 1; + line->text = p; + + list_add_ordered(line, &chunk_list); + kept++; } + print_saved_records(&chunk_list, out); + printf("Debug log: %lu lines, %lu kept, %lu dropped.\n", dropped + kept, kept, dropped); + return 0; } int jt_dbg_debug_kernel(int argc, char **argv) { - int rc, raw = 1; - FILE *fd = stdout; - const int databuf_size = (6 << 20); - struct portal_ioctl_data data, *newdata; - char *databuf = NULL; + char filename[4096]; + int rc, raw = 0, fd; + FILE *in, *out = stdout; if (argc > 3) { fprintf(stderr, "usage: %s [file] [raw]\n", argv[0]); return 0; } + sprintf(filename, "%s-%ld.tmp", argv[1], random); + if (argc > 2) + raw = atoi(argv[2]); + unlink(filename); + + fd = open("/proc/sys/portals/dump_kernel", O_WRONLY); + if (fd < 0) { + fprintf(stderr, "open(dump_kernel) failed: %s\n", + strerror(errno)); + return 1; + } + + rc = write(fd, filename, strlen(filename)); + if (rc != strlen(filename)) { + fprintf(stderr, "write(%s) failed: %s\n", filename, + strerror(errno)); + close(fd); + return 1; + } + close(fd); + if (raw) + return 0; + + in = fopen(filename, "r"); + if (in == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", filename, + strerror(errno)); + return 1; + } if (argc > 1) { - fd = fopen(argv[1], "w"); - if (fd == NULL) { + out = fopen(argv[1], "w"); + if (out == NULL) { fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno)); - return -1; + return 1; } } - if (argc > 2) - raw = atoi(argv[2]); - databuf = malloc(databuf_size); - if (!databuf) { - fprintf(stderr, "No memory for buffer.\n"); - goto out; + rc = parse_buffer(in, out); + if (rc) { + fprintf(stderr, "parse_buffer failed; leaving tmp file %s " + "behind.\n", filename); + } else { + rc = unlink(filename); + if (rc) + fprintf(stderr, "dumped successfully, but couldn't " + "unlink tmp file %s: %s\n", filename, + strerror(errno)); } + return rc; +} - memset(&data, 0, sizeof(data)); - data.ioc_plen1 = databuf_size; - data.ioc_pbuf1 = databuf; - - if (portal_ioctl_pack(&data, &buf, max) != 0) { - fprintf(stderr, "portal_ioctl_pack failed.\n"); - goto out; +int jt_dbg_debug_file(int argc, char **argv) +{ + FILE *in, *out = stdout; + if (argc > 3 || argc < 2) { + fprintf(stderr, "usage: %s [output]\n", argv[0]); + return 0; } - rc = l_ioctl(PORTALS_DEV_ID, IOC_PORTAL_GET_DEBUG, buf); - if (rc) { - fprintf(stderr, "IOC_PORTAL_GET_DEBUG failed: %s\n", + in = fopen(argv[1], "r"); + if (in == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno)); - goto out; + return 1; + } + if (argc > 2) { + out = fopen(argv[2], "w"); + if (out == NULL) { + fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], + strerror(errno)); + return 1; + } } - newdata = (struct portal_ioctl_data *)buf; - if (newdata->ioc_size > 0) - dump_buffer(fd, databuf, newdata->ioc_size, raw); - - out: - if (databuf) - free(databuf); - if (fd != stdout) - fclose(fd); - return 0; + return parse_buffer(in, out); } int jt_dbg_debug_daemon(int argc, char **argv) { - int i, rc; + int i, rc, fd; unsigned int cmd = 0; - FILE *fd = stdout; struct portal_ioctl_data data; if (argc <= 1) { @@ -339,120 +461,42 @@ int jt_dbg_debug_daemon(int argc, char **argv) "continue]\n", argv[0]); return 0; } - for (i = 0; portal_debug_daemon_cmd[i].cmd != NULL; i++) { - if (strcasecmp(argv[1], portal_debug_daemon_cmd[i].cmd) == 0) { - cmd = portal_debug_daemon_cmd[i].cmdv; - break; - } - } - if (portal_debug_daemon_cmd[i].cmd == NULL) { - fprintf(stderr, "usage: %s [start file <#MB>|stop|pause|" - "continue]\n", argv[0]); - return 0; - } - memset(&data, 0, sizeof(data)); - if (cmd == DEBUG_DAEMON_START) { - if (argc < 3) { - fprintf(stderr, "usage: %s [start file <#MB>|stop|" - "pause|continue]\n", argv[0]); - return 0; - } - if (access(argv[2], F_OK) != 0) { - fd = fopen(argv[2], "w"); - if (fd != NULL) { - fclose(fd); - remove(argv[2]); - goto ok; - } - } - if (access(argv[2], W_OK) == 0) - goto ok; - fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], - strerror(errno)); - return -1; -ok: - data.ioc_inllen1 = strlen(argv[2]) + 1; - data.ioc_inlbuf1 = argv[2]; - data.ioc_misc = 0; - if (argc == 4) { - unsigned long size; - errno = 0; - size = strtoul(argv[3], NULL, 0); - if (errno) { - fprintf(stderr, "file size(%s): error %s\n", - argv[3], strerror(errno)); - return -1; - } - data.ioc_misc = size; - } - } - data.ioc_count = cmd; - if (portal_ioctl_pack(&data, &buf, max) != 0) { - fprintf(stderr, "portal_ioctl_pack failed.\n"); - return -1; - } - rc = l_ioctl(PORTALS_DEV_ID, IOC_PORTAL_SET_DAEMON, buf); - if (rc < 0) { - fprintf(stderr, "IOC_PORTAL_SET_DEMON failed: %s\n", - strerror(errno)); - return rc; - } - return 0; -} - -int jt_dbg_debug_file(int argc, char **argv) -{ - int rc, fd = -1, raw = 1; - FILE *output = stdout; - char *databuf = NULL; - struct stat statbuf; - - if (argc > 4 || argc < 2) { - fprintf(stderr, "usage: %s [output] [raw]\n", argv[0]); - return 0; - } - fd = open(argv[1], O_RDONLY); + fd = open("/proc/sys/portals/daemon_file", O_WRONLY); if (fd < 0) { - fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], + fprintf(stderr, "open(daemon_file) failed: %s\n", strerror(errno)); - return -1; + return 1; } - rc = fstat(fd, &statbuf); - if (rc < 0) { - fprintf(stderr, "fstat failed: %s\n", strerror(errno)); - goto out; - } + if (strcasecmp(argv[1], "start") == 0) { + if (argc != 3) { + fprintf(stderr, "usage: %s [start file|stop]\n", + argv[0]); + return 1; + } - if (argc >= 3) { - output = fopen(argv[2], "w"); - if (output == NULL) { - fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], + rc = write(fd, argv[2], strlen(argv[2])); + if (rc != strlen(argv[2])) { + fprintf(stderr, "write(%s) failed: %s\n", argv[2], strerror(errno)); - goto out; + close(fd); + return 1; } + } else if (strcasecmp(argv[1], "stop") == 0) { + rc = write(fd, "stop", 4); + if (rc != 4) { + fprintf(stderr, "write(stop) failed: %s\n", + strerror(errno)); + close(fd); + return 1; + } + } else { + fprintf(stderr, "usage: %s [start file|stop]\n", argv[0]); + return 1; } - if (argc == 4) - raw = atoi(argv[3]); - - databuf = mmap(NULL, statbuf.st_size, PROT_READ | PROT_WRITE, - MAP_PRIVATE, fd, 0); - if (databuf == NULL) { - fprintf(stderr, "mmap failed: %s\n", strerror(errno)); - goto out; - } - - dump_buffer(output, databuf, statbuf.st_size, raw); - - out: - if (databuf) - munmap(databuf, statbuf.st_size); - if (output != stdout) - fclose(output); - if (fd > 0) - close(fd); + close(fd); return 0; } diff --git a/lustre/portals/utils/debugctl.c b/lustre/portals/utils/debugctl.c index 02cb9b4..1b6cd96 100644 --- a/lustre/portals/utils/debugctl.c +++ b/lustre/portals/utils/debugctl.c @@ -32,7 +32,7 @@ command_t list[] = { {"debug_kernel", jt_dbg_debug_kernel, 0, "usage: debug_kernel [file] [raw], get debug buffer and print it [to a file]"}, - {"debug_daemon", jt_dbg_debug_daemon, 0, "usage: debug_daemon [start file [#MB]|stop|pause|continue], control debug daemon to dump debug buffer to a file"}, + {"debug_daemon", jt_dbg_debug_daemon, 0, "usage: debug_daemon [start file|stop], control debug daemon to dump debug buffer to a file"}, {"debug_file", jt_dbg_debug_file, 0, "usage: debug_file [output] [raw], read debug buffer from input and print it [to output]"}, {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer"}, {"mark", jt_dbg_mark_debug_buf, 0, "insert a marker into the kernel debug buffer (args: [marker text])"}, diff --git a/lustre/ptlrpc/Makefile.in b/lustre/ptlrpc/Makefile.in index bd319a4..abc403b 100644 --- a/lustre/ptlrpc/Makefile.in +++ b/lustre/ptlrpc/Makefile.in @@ -4,16 +4,17 @@ LDLM := @top_srcdir@/ldlm/ else LDLM := endif -ptlrpc-objs := $(LDLM)l_lock.o $(LDLM)ldlm_lock.o -ptlrpc-objs += $(LDLM)ldlm_resource.o $(LDLM)ldlm_lib.o -ptlrpc-objs += $(LDLM)ldlm_plain.o $(LDLM)ldlm_extent.o -ptlrpc-objs += $(LDLM)ldlm_request.o $(LDLM)ldlm_lockd.o -ptlrpc-objs += $(LDLM)ldlm_flock.o -ptlrpc-objs += client.o recover.o connection.o niobuf.o pack_generic.o -ptlrpc-objs += events.o ptlrpc_module.o service.o pinger.o recov_thread.o -ptlrpc-objs += llog_net.o llog_client.o llog_server.o import.o ptlrpcd.o -ptlrpc-objs += lproc_ptlrpc.o +ldlm_objs := $(LDLM)l_lock.o $(LDLM)ldlm_lock.o +ldlm_objs += $(LDLM)ldlm_resource.o $(LDLM)ldlm_lib.o +ldlm_objs += $(LDLM)ldlm_plain.o $(LDLM)ldlm_extent.o +ldlm_objs += $(LDLM)ldlm_request.o $(LDLM)ldlm_lockd.o +ldlm_objs += $(LDLM)ldlm_flock.o +ptlrpc_objs := client.o recover.o connection.o niobuf.o pack_generic.o +ptlrpc_objs += events.o ptlrpc_module.o service.o pinger.o recov_thread.o +ptlrpc_objs += llog_net.o llog_client.o llog_server.o import.o ptlrpcd.o +ptlrpc_objs += lproc_ptlrpc.o +ptlrpc-objs := $(ldlm_objs) $(ptlrpc_objs) default: all ldlm_%.c: @LUSTRE@/ldlm/ldlm_%.c diff --git a/lustre/ptlrpc/autoMakefile.am b/lustre/ptlrpc/autoMakefile.am index bac9ea4..0df838d 100644 --- a/lustre/ptlrpc/autoMakefile.am +++ b/lustre/ptlrpc/autoMakefile.am @@ -28,5 +28,4 @@ modulefs_DATA = ptlrpc$(KMODEXT) endif # MODULES MOSTLYCLEANFILES = *.o *.ko *.mod.c ldlm_*.c l_lock.c -DIST_SOURCES = $(filter-out @top_srcdir@/ldlm/%,$(ptlrpc-objs:%.o=%.c)) ptlrpc_internal.h - +DIST_SOURCES = $(ptlrpc_objs:.o=.c) ptlrpc_internal.h diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index e22259f..66f692c 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -668,6 +668,8 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set) if (req->rq_waiting || req->rq_resend) { int status; + ptlrpc_unregister_reply(req); + spin_lock_irqsave(&imp->imp_lock, flags); if (ptlrpc_import_delay_req(imp, req, &status)){ @@ -700,7 +702,6 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set) if (req->rq_resend) { lustre_msg_add_flags(req->rq_reqmsg, MSG_RESENT); - ptlrpc_unregister_reply(req); if (req->rq_bulk) { __u64 old_xid = req->rq_xid; diff --git a/lustre/ptlrpc/events.c b/lustre/ptlrpc/events.c index f702d2d..aab86ea 100644 --- a/lustre/ptlrpc/events.c +++ b/lustre/ptlrpc/events.c @@ -552,8 +552,7 @@ int ptlrpc_init_portals(void) {SOCKNAL, "socknal"}, {GMNAL, "gmnal"}, {IBNAL, "ibnal"}, - {TCPNAL, "tcpnal"}, - {SCIMACNAL, "scimacnal"}}; + {TCPNAL, "tcpnal"}}; int rc; int i; diff --git a/lustre/ptlrpc/import.c b/lustre/ptlrpc/import.c index 0942192..d1806e6 100644 --- a/lustre/ptlrpc/import.c +++ b/lustre/ptlrpc/import.c @@ -162,8 +162,7 @@ void ptlrpc_invalidate_import(struct obd_import *imp, int in_rpc) if (in_rpc) inflight = 1; - /* wait for all requests to error out and call completion - callbacks */ + /* wait for all requests to error out and call completion callbacks */ lwi = LWI_TIMEOUT_INTR(MAX(obd_timeout * HZ, 1), NULL, NULL, NULL); rc = l_wait_event(imp->imp_recovery_waitq, @@ -406,21 +405,18 @@ static int ptlrpc_connect_interpret(struct ptlrpc_request *request, } else { IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER); } - } - else if ((MSG_CONNECT_RECOVERING & msg_flags) && !imp->imp_invalid) { + } else if ((MSG_CONNECT_RECOVERING & msg_flags) && !imp->imp_invalid) { LASSERT(imp->imp_replayable); imp->imp_remote_handle = request->rq_repmsg->handle; imp->imp_last_replay_transno = 0; IMPORT_SET_STATE(imp, LUSTRE_IMP_REPLAY); - } - else { + } else { imp->imp_remote_handle = request->rq_repmsg->handle; IMPORT_SET_STATE(imp, LUSTRE_IMP_EVICTED); } - + /* Sanity checks for a reconnected import. */ - if (!(imp->imp_replayable) != - !(msg_flags & MSG_CONNECT_REPLAYABLE)) { + if (!(imp->imp_replayable) != !(msg_flags & MSG_CONNECT_REPLAYABLE)) { CERROR("imp_replayable flag does not match server " "after reconnect. We should LBUG right here.\n"); } @@ -558,7 +554,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp) imp->imp_obd->obd_name, imp->imp_target_uuid.uuid, imp->imp_connection->c_remote_uuid.uuid); - } + } if (imp->imp_state == LUSTRE_IMP_FULL) { wake_up(&imp->imp_recovery_waitq); diff --git a/lustre/ptlrpc/llog_client.c b/lustre/ptlrpc/llog_client.c index 1098b40..81089ac 100644 --- a/lustre/ptlrpc/llog_client.c +++ b/lustre/ptlrpc/llog_client.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2001-2003 Cluster File Systems, Inc. + * Copyright (C) 2001-2004 Cluster File Systems, Inc. * Author: Andreas Dilger * * This file is part of Lustre, http://www.lustre.org. @@ -85,12 +85,12 @@ static int llog_client_create(struct llog_ctxt *ctxt, struct llog_handle **res, if (rc) GOTO(err_free, rc); - body = lustre_swab_repbuf(req, 0, sizeof(*body), + body = lustre_swab_repbuf(req, 0, sizeof(*body), lustre_swab_llogd_body); - if (body == NULL) { + if (body == NULL) { CERROR ("Can't unpack llogd_body\n"); GOTO(err_free, rc =-EFAULT); - } + } handle->lgh_id = body->lgd_logid; handle->lgh_ctxt = ctxt; @@ -138,18 +138,18 @@ static int llog_client_next_block(struct llog_handle *loghandle, if (rc) GOTO(out, rc); - body = lustre_swab_repbuf(req, 0, sizeof(*body), + body = lustre_swab_repbuf(req, 0, sizeof(*body), lustre_swab_llogd_body); - if (body == NULL) { + if (body == NULL) { CERROR ("Can't unpack llogd_body\n"); GOTO(out, rc =-EFAULT); - } + } ptr = lustre_msg_buf(req->rq_repmsg, 1, len); - if (ptr == NULL) { + if (ptr == NULL) { CERROR ("Can't unpack bitmap\n"); GOTO(out, rc =-EFAULT); - } + } *cur_idx = body->lgd_saved_index; *cur_offset = body->lgd_cur_offset; @@ -189,11 +189,11 @@ static int llog_client_read_header(struct llog_handle *handle) if (rc) GOTO(out, rc); - hdr = lustre_swab_repbuf(req, 0, sizeof(*hdr), lustre_swab_llog_hdr); - if (hdr == NULL) { + hdr = lustre_swab_repbuf(req, 0, sizeof(*hdr), lustre_swab_llog_hdr); + if (hdr == NULL) { CERROR ("Can't unpack llog_hdr\n"); GOTO(out, rc =-EFAULT); - } + } memcpy(handle->lgh_hdr, hdr, sizeof (*hdr)); handle->lgh_last_idx = handle->lgh_hdr->llh_tail.lrt_index; diff --git a/lustre/ptlrpc/lproc_ptlrpc.c b/lustre/ptlrpc/lproc_ptlrpc.c index e567185..68a17bc 100644 --- a/lustre/ptlrpc/lproc_ptlrpc.c +++ b/lustre/ptlrpc/lproc_ptlrpc.c @@ -136,8 +136,6 @@ void ptlrpc_lprocfs_register(struct proc_dir_entry *root, char *dir, svc_counter_config, "req_active", "reqs"); lprocfs_counter_init(svc_stats, PTLRPC_REQBUF_AVAIL_CNTR, svc_counter_config, "reqbuf_avail", "bufs"); - lprocfs_counter_init(svc_stats, PTLRPC_REQBUF_TOTAL_CNTR, - svc_counter_config, "reqbuf_total", "bufs"); for (i = 0; i < LUSTRE_MAX_OPCODES; i++) { __u32 opcode = ll_rpc_opcode_table[i].opcode; lprocfs_counter_init(svc_stats, PTLRPC_LAST_CNTR + i, diff --git a/lustre/ptlrpc/ptlrpc_internal.h b/lustre/ptlrpc/ptlrpc_internal.h index 9e51595..1db774e 100644 --- a/lustre/ptlrpc/ptlrpc_internal.h +++ b/lustre/ptlrpc/ptlrpc_internal.h @@ -102,7 +102,6 @@ enum { PTLRPC_REQQDEPTH_CNTR, PTLRPC_REQACTIVE_CNTR, PTLRPC_REQBUF_AVAIL_CNTR, - PTLRPC_REQBUF_TOTAL_CNTR, PTLRPC_LAST_CNTR }; diff --git a/lustre/ptlrpc/recov_thread.c b/lustre/ptlrpc/recov_thread.c index 490dc36..1bdfbe8 100644 --- a/lustre/ptlrpc/recov_thread.c +++ b/lustre/ptlrpc/recov_thread.c @@ -506,7 +506,8 @@ static int log_process_thread(void *args) up(&data->llpa_sem); lock_kernel(); - ptlrpc_daemonize(); /* thread never needs to do IO */ + ptlrpc_daemonize(); /* thread does IO to log files */ + THREAD_NAME(current->comm, sizeof(current->comm) - 1, "llog_process"); SIGNAL_MASK_LOCK(current, flags); sigfillset(¤t->blocked); diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index c541e30..5b14e36 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -675,8 +675,6 @@ ptlrpc_check_rqbd_pools(struct ptlrpc_service *svc) ptlrpc_grow_req_bufs(sni); } lprocfs_counter_add(svc->srv_stats, PTLRPC_REQBUF_AVAIL_CNTR, avail); - lprocfs_counter_add(svc->srv_stats, PTLRPC_REQBUF_TOTAL_CNTR, - svc->srv_nbufs); } static int diff --git a/lustre/scripts/Makefile.am b/lustre/scripts/Makefile.am index fe13cc7..dfc6d37 100644 --- a/lustre/scripts/Makefile.am +++ b/lustre/scripts/Makefile.am @@ -4,12 +4,12 @@ # See the file COPYING in this distribution EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl.in \ - lustre lustre.spec.in lustre-kernel-2.4.spec.in \ + lustre lustrefs lustre.spec.in lustre-kernel-2.4.spec.in \ lmake linux-merge-config.awk linux-merge-modules.awk \ linux-rhconfig.h initddir = $(sysconfdir)/init.d if UTILS -initd_SCRIPTS = lustre +initd_SCRIPTS = lustre lustrefs endif diff --git a/lustre/scripts/cvsdiffclient b/lustre/scripts/cvsdiffclient index dab1e90..4fa45cb 100755 --- a/lustre/scripts/cvsdiffclient +++ b/lustre/scripts/cvsdiffclient @@ -1,15 +1,33 @@ #!/bin/bash +# Put this script and cvs-modified-files.pl into your PATH (~bin is good) and +# +# export CVSEDITOR=cvsdiffclient +# +# in your .bashrc and you will get a nice bunch of CVS commit reminders: +# +# b= +# r= +# +# Remember to remove the leading "CVS: " part of the comment before saving +# your commit comment if you want those entries to be saved. [ -f .mergeinfo ] && . ./.mergeinfo FILES=`cvs-modified-files.pl $1` TMP=`mktemp /tmp/cvslog-XXXXXXXX` if [ -f $TMP ]; then - [ -f .mergeinfo ] && \ - echo "CVS: Update $child from $parent ($date)" >> $TMP + if [ -f .mergeinfo ]; then + . .mergeinfo + [ "$OPERATION" ] || OPERATION=Update + [ "$OPERWHERE" ] || OPERWHERE=from + echo "CVS: $OPERATION $child $OPERWHERE $parent ($date)" >> $TMP + elif [ -r CVS/Tag ]; then + echo "CVS: Branch: `sed 's/^T//' CVS/Tag`" >> $TMP + fi echo "CVS: did you update the ChangeLog for a bug fix?" >> $TMP - echo "CVS: b=" >> $TMP - echo "CVS: r=" >> $TMP + echo "CVS: did you update the hours spent in Bugzilla?" >> $TMP + echo "CVS: b=" >> $TMP + echo "CVS: r=" >> $TMP cat $1 >> $TMP cp $TMP $1 diff --git a/lustre/scripts/land1.sh b/lustre/scripts/land1.sh index 76ca062..98fd721 100755 --- a/lustre/scripts/land1.sh +++ b/lustre/scripts/land1.sh @@ -27,20 +27,32 @@ module=lustre case $parent in HEAD) : ;; - b_*|b1*) : ;; + b_*|b[1-4]*) : ;; *) parent="b_$parent" ;; esac case $child in HEAD) : ;; - b_*|b1*) : ;; + b_*|b[1-4]*) : ;; *) child="b_$child" esac -if [ "$parent" != "HEAD" -a "`cat CVS/Tag`" != "T$parent" ]; then - echo "This script must be run within the $parent branch" +if [ "$parent" != "HEAD" -a "`cat CVS/Tag 2> /dev/null`" != "T$parent" ]; then + echo "$0: this script must be run within the $parent branch" exit 1 fi +TEST_FILE=${TEST_FILE:-ChangeLog} # does this need to be smarter? +check_tag() { + [ -z "$1" ] && echo "check_tag() missing arg" && exit3 + [ "$1" = "HEAD" ] && return + $CVS log $TEST_FILE 2> /dev/null | grep -q " $1: " && return + echo "$0: tag $1 not found in $TEST_FILE" + exit 2 +} + +check_tag $child +check_tag ${CHILD}_BASE + dir=$3 cat << EOF > .mergeinfo @@ -52,6 +64,8 @@ date=$date module=$module dir=$dir CONFLICTS=$CONFLICTS +OPERATION=Land +OPERWHERE=onto EOF echo PARENT $PARENT parent $parent CHILD $CHILD child $child date $date diff --git a/lustre/scripts/lustre-kernel-2.4.spec.in b/lustre/scripts/lustre-kernel-2.4.spec.in index 3ec63bb..d00807c9 100644 --- a/lustre/scripts/lustre-kernel-2.4.spec.in +++ b/lustre/scripts/lustre-kernel-2.4.spec.in @@ -358,6 +358,8 @@ BuildKernel() -- --enable-modules \ --disable-doc --disable-tests \ --disable-utils --disable-liblustre \ + --sysconfdir=%{_sysconfdir} \ + --mandir=%{_mandir} \ @CONFIGURE_FLAGS@ } @@ -377,6 +379,8 @@ BuildLustre() -- --enable-utils \ --disable-doc --disable-tests \ --disable-modules --disable-liblustre \ + --sysconfdir=%{_sysconfdir} \ + --mandir=%{_mandir} \ @CONFIGURE_FLAGS@ } @@ -611,6 +615,16 @@ fi %endif +%post -n lustre-lite-utils +if [ ! -e /dev/obd ]; then + mknod /dev/obd c 10 241 +fi +if [ ! -e /dev/portals ]; then + mknod /dev/portals c 10 240 +fi +/sbin/chkconfig --add lustre +/sbin/chkconfig --add lustrefs + # Allow clean removal of modules directory %preun /sbin/modprobe loop 2> /dev/null > /dev/null || : @@ -690,6 +704,12 @@ if [ -L /usr/src/%{kslnk} ]; then fi exit 0 +%preun -n lustre-lite-utils +if [ $1 = 0 ]; then + /sbin/chkconfig --del lustre + /sbin/chkconfig --del lustrefs +fi + ### ### file lists ### @@ -756,62 +776,7 @@ exit 0 %files source %defattr(-,root,root) %dir /usr/src/linux-%{KVERREL} -/usr/src/linux-%{KVERREL}/COPYING* -/usr/src/linux-%{KVERREL}/CREDITS -/usr/src/linux-%{KVERREL}/Documentation -/usr/src/linux-%{KVERREL}/MAINTAINERS -/usr/src/linux-%{KVERREL}/Makefile -/usr/src/linux-%{KVERREL}/README -/usr/src/linux-%{KVERREL}/REPORTING-BUGS -/usr/src/linux-%{KVERREL}/arch -%ifarch sparc -/usr/src/linux-%{KVERREL}/arch/sparc64 -%endif -/usr/src/linux-%{KVERREL}/drivers -%if %{rhbuild} -/usr/src/linux-%{KVERREL}/crypto -%endif -/usr/src/linux-%{KVERREL}/fs -/usr/src/linux-%{KVERREL}/init -/usr/src/linux-%{KVERREL}/ipc -/usr/src/linux-%{KVERREL}/kernel -/usr/src/linux-%{KVERREL}/lib -/usr/src/linux-%{KVERREL}/mm -/usr/src/linux-%{KVERREL}/net -/usr/src/linux-%{KVERREL}/scripts -%ifarch %{all_x86} -%{?ibcs_1:/usr/src/linux-%{KVERREL}/abi} -%endif -/usr/src/linux-%{KVERREL}/configs -/usr/src/linux-%{KVERREL}/include -/usr/src/linux-%{KVERREL}/include/asm -%ifarch %{all_x86} -%{?ibcs_1:/usr/src/linux-%{KVERREL}/include/abi} -%endif -/usr/src/linux-%{KVERREL}/include/linux -%if %{rhbuild} -/usr/src/linux-%{KVERREL}/include/rxrpc -%endif -/usr/src/linux-%{KVERREL}/include/net -/usr/src/linux-%{KVERREL}/include/pcmcia -/usr/src/linux-%{KVERREL}/include/scsi -/usr/src/linux-%{KVERREL}/include/video -%if %{rhbuild} -/usr/src/linux-%{KVERREL}/tmp_include_depends -%endif -%dir /usr/src/linux-%{KVERREL}/include -%dir /usr/src/linux-%{KVERREL}/arch -%ifarch alpha sparc -/usr/src/linux-%{KVERREL}/include/math-emu -%endif -%if %{linux26} -%dir /usr/src/linux-%{KVERREL}/crypto -%dir /usr/src/linux-%{KVERREL}/kdb -%dir /usr/src/linux-%{KVERREL}/rpmify -%dir /usr/src/linux-%{KVERREL}/security -%else -/usr/src/linux-%{KVERREL}/Rules.make -%endif +/usr/src/linux-%{KVERREL}/* %endif %files doc @@ -826,10 +791,12 @@ exit 0 /usr/bin/* /usr/lib/lustre/python /etc/init.d/lustre +/etc/init.d/lustrefs /usr/include/lustre/* /usr/include/portals/* /usr/include/linux/* -/lib/lib*.a +/usr/lib/lib*.a +/usr/share/man/man?/* #%files -n lustre-doc #%defattr(-, root, root) diff --git a/lustre/scripts/lustre.spec.in b/lustre/scripts/lustre.spec.in index d1de253..b6d3ee2 100644 --- a/lustre/scripts/lustre.spec.in +++ b/lustre/scripts/lustre.spec.in @@ -83,12 +83,16 @@ rm -rf $RPM_BUILD_ROOT # Set an explicit path to our Linux tree, if we can. cd $RPM_BUILD_DIR/lustre-%{version} -./configure --with-linux='%{linuxdir}' %{disable_doc} --disable-liblustre +./configure \ + --with-linux='%{linuxdir}' \ + %{disable_doc} --disable-liblustre \ + --sysconfdir=%{_sysconfdir} \ + --mandir=%{_mandir} make -j $RPM_BUILD_NCPUS -s %install cd $RPM_BUILD_DIR/lustre-%{version} -make install prefix=$RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT %ifarch alpha # this hurts me @@ -154,12 +158,15 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/ldap/lustre %attr(-, root, root) /usr/lib/lustre/examples/llechocleanup.sh %attr(-, root, root) /etc/init.d/lustre -%attr(-, root, root) /lib/libptlctl.a -%attr(-, root, root) /lib/liblustreapi.a +%attr(-, root, root) /etc/init.d/lustrefs +%attr(-, root, root) /usr/lib/libptlctl.a +%attr(-, root, root) /usr/lib/liblustreapi.a %attr(-, root, root) /usr/include/lustre/*.h %attr(-, root, root) /usr/include/portals/*.h %attr(-, root, root) /usr/include/linux/lustre_idl.h +%attr(-, root, root) /usr/share/man/man?/* + %ifarch alpha %attr(-, root, root) /usr/sbin/mcpload %endif @@ -223,8 +230,16 @@ fi if [ ! -e /dev/portals ]; then mknod /dev/portals c 10 240 fi +/sbin/chkconfig --add lustre +/sbin/chkconfig --add lustrefs depmod -ae || exit 0 +%preun +if [ $1 = 0 ]; then + /sbin/chkconfig --del lustre + /sbin/chkconfig --del lustrefs +fi + %postun -n lustre-modules depmod -ae || exit 0 diff --git a/lustre/scripts/lustrefs b/lustre/scripts/lustrefs new file mode 100644 index 0000000..976e8e7 --- /dev/null +++ b/lustre/scripts/lustrefs @@ -0,0 +1,84 @@ +#!/bin/bash +# +# lustrefs Mount Lustre filesystems. +# +# Authors: Jacob Berkman +# +# Based on the netfs script: +# +# Authors: Bill Nottingham +# Miquel van Smoorenburg, +# +# chkconfig: 345 25 75 +# description: Mounts and unmounts all Lustre mount points. +# +### BEGIN INIT INFO +# Provides: $local_fs $remote_fs +### END INIT INFO + +[ -f /etc/sysconfig/network ] || exit 0 +. /etc/init.d/functions +. /etc/sysconfig/network + +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 0 + +LUSTREFSTAB=`LC_ALL=C awk '!/^#/ && $3 == "lustre" && $4 !~ /noauto/ { print $2 }' /etc/fstab` +LUSTREMTAB=`LC_ALL=C awk '!/^#/ && $3 == "lustre" { print $2 }' /proc/mounts` + +# See how we were called. +case "$1" in + start) + [ -n "$LUSTREFSTAB" ] && action $"Mounting Lustre filesystems: " mount -a -t lustre + touch /var/lock/subsys/lustrefs + ;; + stop) + [ -n "$LUSTREMTAB" ] && { + sig= + retry=3 + remaining=`LC_ALL=C awk '!/^#/ && $3 ~ /^lustre/ && $2 != "/" {print $2}' /proc/mounts` + while [ -n "$remaining" -a "$retry" -gt 0 ] + do + if [ "$retry" -lt 3 ]; then + action $"Unmounting Lustre filesystems (retry): " umount -f -a -t lustre + else + action $"Unmounting Lustre filesystems: " umount -a -t lustre + fi + sleep 2 + remaining=`LC_ALL=C awk '!/^#/ && $3 ~ /^lustre/ && $2 != "/" {print $2}' /proc/mounts` + [ -z "$remaining" ] && break + /sbin/fuser -k -m $sig $remaining >/dev/null + sleep 5 + retry=$(($retry - 1)) + sig=-9 + done + } + rm -f /var/lock/subsys/lustrefs + ;; + status) + if [ -f /proc/mounts ] ; then + [ -n "$LUSTREFSTAB" ] && { + echo $"Configured Lustre mountpoints: " + for fs in $LUSTREFSTAB; do echo $fs ; done + } + [ -n "$LUSTREMTAB" ] && { + echo $"Active Lustre mountpoints: " + for fs in $LUSTREMTAB; do echo $fs ; done + } + else + echo $"/proc filesystem unavailable" + fi + ;; + restart) + $0 stop + $0 start + ;; + reload) + $0 start + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|status}" + exit 1 +esac + +exit 0 diff --git a/lustre/scripts/merge1.sh b/lustre/scripts/merge1.sh index 244c8d1..a862436 100755 --- a/lustre/scripts/merge1.sh +++ b/lustre/scripts/merge1.sh @@ -27,20 +27,32 @@ module=lustre case $parent in HEAD) : ;; - b_*|b1*) : ;; + b_*|b[1-4]*) : ;; *) parent="b_$parent" ;; esac case $child in HEAD) : ;; - b_*|b1*) : ;; + b_*|b[1-4]*) : ;; *) child="b_$child" esac -if [ "$child" != "HEAD" -a "`cat CVS/Tag`" != "T$child" ]; then +if [ "$child" != "HEAD" -a "`cat CVS/Tag 2> /dev/null`" != "T$child" ]; then echo "This script must be run within the $child branch" exit 1 fi +TEST_FILE=${TEST_FILE:-ChangeLog} # does this need to be smarter? +check_tag() { + [ -z "$1" ] && echo "check_tag() missing arg" && exit3 + [ "$1" = "HEAD" ] && return + $CVS log $TEST_FILE 2> /dev/null | grep -q " $1: " && return + echo "$0: tag $1 not found in $TEST_FILE" + exit 2 +} + +check_tag $parent +check_tag ${CHILD}_BASE + cat << EOF > .mergeinfo parent=$parent PARENT=$PARENT @@ -49,6 +61,8 @@ CHILD=$CHILD date=$date module=$module CONFLICTS=$CONFLICTS +OPERATION=Merge +OPERWHERE=from EOF echo PARENT: $PARENT parent: $parent CHILD: $CHILD child: $child date: $date @@ -59,9 +73,12 @@ echo "done" echo -n "tagging $child as '${PARENT}_${CHILD}_UPDATE_CHILD_$date' ...." $CVS rtag -r $child ${PARENT}_${CHILD}_UPDATE_CHILD_$date $module echo "done" + +# Apply all of the changes to your local tree: echo "Updating: -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_UPDATE_PARENT_$date ...." $CVS update -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_UPDATE_PARENT_$date -dP echo "done" + echo -n "Recording conflicts in $CONFLICTS ..." if $CVS update | grep '^C' > $CONFLICTS; then echo "Conflicts found, fix before committing." @@ -70,4 +87,6 @@ else echo "No conflicts found" rm -f $CONFLICTS fi +echo "done" + echo "Build, test, commit and then run merge2.sh (no arguments)" diff --git a/lustre/tests/.cvsignore b/lustre/tests/.cvsignore index a27f828..bc148be 100644 --- a/lustre/tests/.cvsignore +++ b/lustre/tests/.cvsignore @@ -62,5 +62,6 @@ XMLCONFIG logs ostactive ll_dirstripe_verify -rename_many openfilleddirunlink +copy_attr +rename_many diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index c80901a..20f5eef 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -18,67 +18,18 @@ if TESTS pkgexample_SCRIPTS = $(pkgexample_scripts) noinst_PROGRAMS = openunlink testreq truncate directio openme writeme open_delay noinst_PROGRAMS += tchmod toexcl fsx test_brw openclose createdestroy -noinst_PROGRAMS += stat createmany statmany multifstat createtest mlink utime cmknod +noinst_PROGRAMS += stat createmany statmany multifstat createtest mlink utime noinst_PROGRAMS += opendirunlink opendevunlink unlinkmany fchdir_test checkstat noinst_PROGRAMS += wantedi statone runas openfile getdents mkdirdeep o_directory -noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify +noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify cmknod noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify noinst_PROGRAMS += openfilleddirunlink rename_many memhog -# noinst_PROGRAMS += ldaptest +# noinst_PROGRAMS += ldaptest copy_attr bin_PROGRAMS = mcreate munlink mkdirmany iopentest1 iopentest2 endif # TESTS -# ldaptest_SOURCES = ldaptest.c -tchmod_SOURCES = tchmod.c -toexcl_SOURCES = toexcl.c -testreq_SOURCES = testreq.c -mcreate_SOURCES = mcreate.c -iopentest1_SOURCES = iopentest1.c -iopentest2_SOURCES = iopentest2.c -munlink_SOURCES = munlink.c -mlink_SOURCES = mlink.c -truncate_SOURCES = truncate.c -directio_SOURCES = directio.c -openunlink_SOURCES = openunlink.c -openme_SOURCES = openme.c -writeme_SOURCES = writeme.c -fsx_SOURCES = fsx.c -test_brw_SOURCES = test_brw.c -openclose_SOURCES = openclose.c -createdestroy_SOURCES = createdestroy.c stat_SOURCES = stat.c stat_fs.h -createmany_SOURCES = createmany.c -statmany_SOURCES = statmany.c -unlinkmany_SOURCES = unlinkmany.c -statone_SOURCES = statone.c -mkdirmany_SOURCES = mkdirmany.c -multifstat_SOURCES = multifstat.c -checkstat_SOURCES = checkstat.c -runas_SOURCES = runas.c -openfile_SOURCES = openfile.c -wantedi_SOURCES = wantedi.c -createtest_SOURCES = createtest.c -open_delay_SOURCES = open_delay.c -opendirunlink_SOURCES = opendirunlink.c -openfilleddirunlink_SOURCES = openfilleddirunlink.c -opendevunlink_SOURCES = opendevunlink.c -fchdir_test_SOURCES = fchdir_test.c -getdents_SOURCES=getdents.c -o_directory_SOURCES = o_directory.c -utime_SOURCES = utime.c -cmknod_SOURCES = cmknod.c -mkdirdeep_SOURCES = mkdirdeep.c mkdirdeep_LDADD=-L$(top_builddir)/portals/utils -lptlctl $(LIBREADLINE) -small_write_SOURCES = small_write.c -sleeptest_SOURCES = sleeptest.c -rename_many_SOURCES = rename_many.c -memhog_SOURCES = memhog.c -#write_append_truncate_SOURCES=write_append_truncate.c #write_append_truncate_CC=mpicc -#createmany_mpi_SOURCES=createmany_mpi.c #createmany_mpi_CC=mpicc - -#sanity test -ll_sparseness_verify_SOURCES = ll_sparseness_verify.c -ll_sparseness_write_SOURCES = ll_sparseness_write.c -ll_dirstripe_verify_SOURCE = ll_dirstripe_verify.c +#copy_attr_LDADD= -lattr diff --git a/lustre/tests/acceptance-small.sh b/lustre/tests/acceptance-small.sh index abe38c8..ccf4a94 100755 --- a/lustre/tests/acceptance-small.sh +++ b/lustre/tests/acceptance-small.sh @@ -40,7 +40,7 @@ for NAME in $CONFIGS; do if [ "$DBENCH" != "no" ]; then mount | grep $MOUNT || sh llmount.sh - SPACE=`df $MOUNT | tail -1 | awk '{ print $4 }'` + SPACE=`df $MOUNT | tail -n 1 | awk '{ print $4 }'` DB_THREADS=`expr $SPACE / 50000` [ $THREADS -lt $DB_THREADS ] && DB_THREADS=$THREADS @@ -82,7 +82,7 @@ for NAME in $CONFIGS; do fi if [ "$IOZONE_DIR" != "no" ]; then mount | grep $MOUNT || sh llmount.sh - SPACE=`df $MOUNT | tail -1 | awk '{ print $4 }'` + SPACE=`df $MOUNT | tail -n 1 | awk '{ print $4 }'` IOZ_THREADS=`expr $SPACE / \( $SIZE + $SIZE / 512 \)` [ $THREADS -lt $IOZ_THREADS ] && IOZ_THREADS=$THREADS diff --git a/lustre/tests/compile.sh b/lustre/tests/compile.sh index 6b5ccd9..2e719b5 100644 --- a/lustre/tests/compile.sh +++ b/lustre/tests/compile.sh @@ -1,9 +1,10 @@ #!/bin/sh set -evx -MNT=${MNT:-/mnt/lustre} -DIR=${DIR:-$MNT} +MOUNT=${MNT:-/mnt/lustre} +DIR=${DIR:-$MOUNT} SRC=${SRC:-`dirname $0`/../..} +export CC=${CC:-gcc} while date; do for i in lustre; do TGT=$DIR/$i diff --git a/lustre/tests/llmount.sh b/lustre/tests/llmount.sh index 44649ee..6de928f 100755 --- a/lustre/tests/llmount.sh +++ b/lustre/tests/llmount.sh @@ -11,11 +11,11 @@ config=$NAME.xml mkconfig=$NAME.sh if [ "$PORTALS" ]; then - portals_opt="--portals=$PORTALS" + portals_opt="--portals=$PORTALS" fi if [ "$LUSTRE" ]; then - lustre_opt="--lustre=$LUSTRE" + lustre_opt="--lustre=$LUSTRE" fi if [ "$LDAPURL" ]; then diff --git a/lustre/tests/llmountcleanup.sh b/lustre/tests/llmountcleanup.sh index a3ef1ad..c678df8 100755 --- a/lustre/tests/llmountcleanup.sh +++ b/lustre/tests/llmountcleanup.sh @@ -41,8 +41,8 @@ if [ "$BUSY" ]; then mv $TMP/debug $TMP/debug-busy.`date +%s` exit 255 fi -LEAK_LUSTRE=`dmesg | tail -30 | grep "obd mem.*leaked"` -LEAK_PORTALS=`dmesg | tail -20 | grep "Portals memory leaked"` +LEAK_LUSTRE=`dmesg | tail -n 30 | grep "obd mem.*leaked"` +LEAK_PORTALS=`dmesg | tail -n 20 | grep "Portals memory leaked"` if [ "$LEAK_LUSTRE" -o "$LEAK_PORTALS" ]; then echo "$LEAK_LUSTRE" 1>&2 echo "$LEAK_PORTALS" 1>&2 diff --git a/lustre/tests/memhog.c b/lustre/tests/memhog.c index 9e8118d..098e787 100644 --- a/lustre/tests/memhog.c +++ b/lustre/tests/memhog.c @@ -1,3 +1,5 @@ +#include +#include #include #include @@ -52,7 +54,8 @@ int main(int argc, char *argv[]) } alloc = CHUNK; - printf("allocating %lld kbytes in %u kbyte chunks\n", kbtotal, alloc); + printf("[%d] allocating %lld kbytes in %u kbyte chunks\n", + getpid(), kbtotal, alloc); for (i = kballoc = 0; i < numchunk; i++, kballoc += alloc) { if (kbtotal - kballoc < alloc) alloc = kbtotal - kballoc; diff --git a/lustre/tests/multiop.c b/lustre/tests/multiop.c index 0402aff..776eaea 100755 --- a/lustre/tests/multiop.c +++ b/lustre/tests/multiop.c @@ -96,7 +96,8 @@ int main(int argc, char **argv) } break; case 'D': - if (open(fname, O_DIRECTORY) == -1) { + fd = open(fname, O_DIRECTORY); + if (fd == -1) { perror("open(O_DIRECTORY)"); exit(1); } @@ -204,12 +205,14 @@ int main(int argc, char **argv) exit(1); } break; - case 'w': - if (write(fd, "w", 1) == -1) { + case 'w': { + int rc; + if ((rc = write(fd, "w", 1)) == -1) { perror("write"); exit(1); } break; + } case 'W': for (i = 0; i < mmap_len && mmap_ptr; i += 4096) mmap_ptr[i] += junk++; diff --git a/lustre/tests/oos.sh b/lustre/tests/oos.sh index 4e6b261..1d068d5 100755 --- a/lustre/tests/oos.sh +++ b/lustre/tests/oos.sh @@ -22,8 +22,8 @@ sleep 1 # to ensure we get up-to-date statfs info #lctl clear #lctl debug_daemon start /r/tmp/debug 1024 -STRIPECOUNT=`cat /proc/fs/lustre/lov/*/activeobd | head -1` -ORIGFREE=`cat /proc/fs/lustre/llite/*/kbytesavail | head -1` +STRIPECOUNT=`cat /proc/fs/lustre/lov/*/activeobd | head -n 1` +ORIGFREE=`cat /proc/fs/lustre/llite/*/kbytesavail | head -n 1` MAXFREE=${MAXFREE:-$((200000 * $STRIPECOUNT))} if [ $ORIGFREE -gt $MAXFREE ]; then echo "skipping out-of-space test on $OSC" @@ -34,6 +34,9 @@ fi export LANG=C LC_LANG=C # for "No space left on device" message +rm -f $LOG >/dev/null 2>&1 +[ -f $LOG ] && echo "ERROR: log file wasn't removed?" && exit 1 + # make sure we stripe over all OSTs to avoid OOS on only a subset of OSTs $LFS setstripe $OOS 65536 0 $STRIPECOUNT if dd if=/dev/zero of=$OOS count=$(($ORIGFREE + 100)) bs=1k 2> $LOG; then @@ -54,6 +57,7 @@ for OSC in /proc/fs/lustre/osc/OSC*MNT*; do GRANT=`cat $OSC/cur_grant_bytes` [ $(($AVAIL - $GRANT / 1024)) -lt 400 ] && OSCFULL=full done + if [ -z "$OSCFULL" ]; then echo "no OSTs are close to full" grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} diff --git a/lustre/tests/oos2.sh b/lustre/tests/oos2.sh index c9755cb..84c87f1 100644 --- a/lustre/tests/oos2.sh +++ b/lustre/tests/oos2.sh @@ -20,8 +20,8 @@ rm -f $OOS $OOS2 $LOG $LOG2 sleep 1 # to ensure we get up-to-date statfs info -STRIPECOUNT=`cat /proc/fs/lustre/lov/*/activeobd | head -1` -ORIGFREE=`cat /proc/fs/lustre/llite/*/kbytesavail | head -1` +STRIPECOUNT=`cat /proc/fs/lustre/lov/*/activeobd | head -n 1` +ORIGFREE=`cat /proc/fs/lustre/llite/*/kbytesavail | head -n 1` MAXFREE=${MAXFREE:-$((200000 * $STRIPECOUNT))} if [ $ORIGFREE -gt $MAXFREE ]; then echo "skipping out-of-space test on $OSC" diff --git a/lustre/tests/recovery-small.sh b/lustre/tests/recovery-small.sh index 8e7ca55..ed1cec6 100755 --- a/lustre/tests/recovery-small.sh +++ b/lustre/tests/recovery-small.sh @@ -320,6 +320,8 @@ test_19a() { drop_ldlm_cancel "chmod 0777 $f" || echo evicted do_facet client checkstat -v -p 0777 $f || echo evicted + # let the client reconnect + sleep 5 do_facet client "munlink $f" } run_test 19a "test expired_lock_main on mds (2867)" diff --git a/lustre/tests/rename_many.c b/lustre/tests/rename_many.c index faf5085..484cfc4 100644 --- a/lustre/tests/rename_many.c +++ b/lustre/tests/rename_many.c @@ -108,9 +108,8 @@ int main(int argc, char *argv[]) if (end && *end == '\0') { seed = i; } else { - fprintf(stderr, "bad seed '%s'\n", optarg); - usage(argv[0]); - return 1; + seed = random(); + fprintf(stderr, "using random seed %u\n", seed); } break; case 'v': diff --git a/lustre/tests/replay-dual.sh b/lustre/tests/replay-dual.sh index 77e66e7..d44386d 100755 --- a/lustre/tests/replay-dual.sh +++ b/lustre/tests/replay-dual.sh @@ -21,8 +21,8 @@ gen_config() { add_lov lov1 mds --stripe_sz $STRIPE_BYTES\ --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0 - add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE - add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE + add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE --failover + add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE --failover add_client client mds --lov lov1 --path $MOUNT } @@ -311,7 +311,6 @@ test_15() { facet_failover mds df $MOUNT || return 1 - lctl dk dk unlinkmany $MOUNT1/$tfile- 25 || return 2 zconf_mount `hostname` $MOUNT2 @@ -319,6 +318,45 @@ test_15() { } run_test 15 "timeout waiting for lost client during replay, 1 client completes" +test_16() { + replay_barrier mds + createmany -o $MOUNT1/$tfile- 25 + createmany -o $MOUNT2/$tfile-2- 1 + umount $MOUNT2 + + facet_failover mds + sleep $TIMEOUT + facet_failover mds + df $MOUNT || return 1 + + unlinkmany $MOUNT1/$tfile- 25 || return 2 + + zconf_mount `hostname` $MOUNT2 + return 0 + +} +run_test 16 "fail MDS during recovery (3571)" + +test_17() { + createmany -o $MOUNT1/$tfile- 25 + createmany -o $MOUNT2/$tfile-2- 1 + + # Make sure the disconnect is lost + replay_barrier ost + umount $MOUNT2 + + facet_failover ost + sleep $TIMEOUT + facet_failover ost + df $MOUNT || return 1 + + unlinkmany $MOUNT1/$tfile- 25 || return 2 + + zconf_mount `hostname` $MOUNT2 + return 0 + +} +run_test 17 "fail OST during recovery (3571)" if [ "$ONLY" != "setup" ]; then equals_msg test complete, cleaning up diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 5fb43c2..ef785c8 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -936,6 +936,31 @@ test_47() { } run_test 47 "MDS->OSC failure during precreate cleanup (2824)" +test_48() { + + replay_barrier mds + createmany -o $DIR/$tfile 20 || return 1 + # OBD_FAIL_OST_EROFS 0x216 + fail mds + do_facet ost "sysctl -w lustre.fail_loc=0x80000216" + df $MOUNT || return 2 + + createmany -o $DIR/$tfile 20 20 || return 2 + unlinkmany $DIR/$tfile 40 || return 3 + + do_facet ost "sysctl -w lustre.fail_loc=0" + return 0 +} +run_test 48 "MDS->OSC failure during precreate cleanup (2824)" + +test_49() { + local osc_dev=`$LCTL device_list | \ + awk '(/ost_svc_mds_svc/){print $4}' ` + $LCTL --device %$osc_dev recover && $LCTL --device %$osc_dev recover + # give the mds_lov_sync threads a chance to run + sleep 5 +} +run_test 49 "Double OSC recovery, don't LASSERT" + equals_msg test complete, cleaning up $CLEANUP - diff --git a/lustre/tests/run-llog.sh b/lustre/tests/run-llog.sh index 31e9d6a..b7201f2 100644 --- a/lustre/tests/run-llog.sh +++ b/lustre/tests/run-llog.sh @@ -2,10 +2,10 @@ PATH=`dirname $0`:`dirname $0`/../utils:$PATH TMP=${TMP:-/tmp} -MDS=`ls /proc/fs/lustre/mds | grep -v num_refs | head -1` +MDS=`ls /proc/fs/lustre/mds | grep -v num_refs | head -n 1` [ -z "$MDS" ] && echo "no MDS available, skipping llog test" && exit 0 -modprobe llog_test || insmod ../obdclass/llog_test.o || insmod ../obdclass/llog_test.ko || exit 1 +insmod ../obdclass/llog_test.o || exit 1 lctl modules > $TMP/ogdb-`hostname` echo "NOW reload debugging syms.." diff --git a/lustre/tests/runas.c b/lustre/tests/runas.c index f1df775..91c9c7f 100644 --- a/lustre/tests/runas.c +++ b/lustre/tests/runas.c @@ -6,17 +6,22 @@ #include #include #include +#include #include #include #include #define DEBUG 0 +#ifndef NGROUPS_MAX +#define NGROUPS_MAX 32 +#endif + static const char usage[] = "Usage: %s -u user_id [-g grp_id ] [ -G ] command\n" -" -u user_id switch to UID user_id\n" -" -g grp_id switch to GID grp_id\n" -" -G clear supplementary groups\n"; +" -u user_id switch to UID user_id\n" +" -g grp_id switch to GID grp_id\n" +" -G[gid0,gid1,...] set supplementary groups\n"; void Usage_and_abort(const char *name) { @@ -26,20 +31,17 @@ void Usage_and_abort(const char *name) int main(int argc, char **argv) { - char **my_argv, *name = argv[0]; - int status; - int c,i; - int gid_is_set = 0; - int uid_is_set = 0; - int clear_supp_groups = 0; + char **my_argv, *name = argv[0], *grp; + int status, c, i; + int gid_is_set = 0, uid_is_set = 0, num_supp = -1; uid_t user_id = 0; - gid_t grp_id = 0; + gid_t grp_id = 0, supp_groups[NGROUPS_MAX] = { 0 }; if (argc == 1) Usage_and_abort(name); // get UID and GID - while ((c = getopt (argc, argv, "+u:g:hG")) != -1) { + while ((c = getopt(argc, argv, "+u:g:hG::")) != -1) { switch (c) { case 'u': user_id = (uid_t)atoi(optarg); @@ -54,7 +56,15 @@ int main(int argc, char **argv) break; case 'G': - clear_supp_groups = 1; + num_supp = 0; + if (optarg == NULL || !isdigit(optarg[0])) + break; + while ((grp = strsep(&optarg, ",")) != NULL) { + printf("adding supp group %d\n", atoi(grp)); + supp_groups[num_supp++] = atoi(grp); + if (num_supp >= NGROUPS_MAX) + break; + } break; default: @@ -98,14 +108,14 @@ int main(int argc, char **argv) exit(-1); } - if (clear_supp_groups) { - status = setgroups(0, NULL); + if (num_supp >= 0) { + status = setgroups(num_supp, supp_groups); if (status == -1) { - perror("clearing supplementary groups"); + perror("setting supplementary groups"); exit(-1); } } - + // set UID status = setreuid(user_id, user_id ); if(status == -1) { @@ -114,8 +124,10 @@ int main(int argc, char **argv) exit(-1); } - fprintf(stderr, "running as UID %d, GID %d%s:", user_id, grp_id, - clear_supp_groups ? ", cleared groups" : ""); + fprintf(stderr, "running as UID %d, GID %d", user_id, grp_id); + for (i = 0; i < num_supp; i++) + fprintf(stderr, ":%d", supp_groups[i]); + fprintf(stderr, "\n"); for (i = 0; i < argc - optind; i++) fprintf(stderr, " [%s]", my_argv[i]); diff --git a/lustre/tests/runregression-brw.sh b/lustre/tests/runregression-brw.sh index 34a55b0..666b253 100644 --- a/lustre/tests/runregression-brw.sh +++ b/lustre/tests/runregression-brw.sh @@ -9,7 +9,7 @@ COUNT_100=`expr $COUNT / 100` ENDRUN=endrun-`hostname` -ECHONAME="`lctl device_list 2> /dev/null | awk '/ echo_client / { print $4 }' | tail -1`" +ECHONAME="`lctl device_list 2> /dev/null | awk '/ echo_client / { print $4 }' | tail -n 1`" if [ -z "$ECHONAME" ]; then echo "$0: needs an ECHO_CLIENT set up first" 1>&2 diff --git a/lustre/tests/runregression-mds.sh b/lustre/tests/runregression-mds.sh index ecfe0d9..7167d2d 100755 --- a/lustre/tests/runregression-mds.sh +++ b/lustre/tests/runregression-mds.sh @@ -23,11 +23,11 @@ cleanup() { [ -z "$*" ] && fail "usage: $0 [--reformat] .xml" 1 -OSCMT="`mount | awk '/ lustre_lite / { print $3 }' | tail -1`" +OSCMT="`mount | awk '/ lustre_lite / { print $3 }' | tail -n 1`" if [ -z "$OSCMT" ]; then $LCONF $@ || exit 1 trap cleanup 0 - OSCMT="`mount | awk '/ lustre_lite / { print $3 }' | tail -1`" + OSCMT="`mount | awk '/ lustre_lite / { print $3 }' | tail -n 1`" [ -z "$OSCMT" ] && fail "no lustre filesystem mounted" 1 fi @@ -42,7 +42,7 @@ while [ "$1" ]; do done OSCTMP=`echo $OSCMT | tr "/" "."` -USED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -1` +USED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -n 1` USED=`expr $USED + 16` # Some space for the status file THREADS=1 @@ -58,7 +58,7 @@ done rm -f $ENDRUN -NOWUSED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -1` +NOWUSED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -n 1` if [ $NOWUSED -gt $USED ]; then echo "Space not all freed: now ${NOWUSED}kB, was ${USED}kB." 1>&2 echo "This is normal on BA OSTs, because of subdirectories." 1>&2 diff --git a/lustre/tests/runregression-net.sh b/lustre/tests/runregression-net.sh index 73e81ca..77d6768 100644 --- a/lustre/tests/runregression-net.sh +++ b/lustre/tests/runregression-net.sh @@ -9,7 +9,7 @@ COUNT_1000=`expr $COUNT / 1000` ENDRUN=endrun-`hostname` -ECHONAME="`lctl device_list 2> /dev/null | awk '/ echo_client / { print $4 }' | tail -1`" +ECHONAME="`lctl device_list 2> /dev/null | awk '/ echo_client / { print $4 }' | tail -n 1`" if [ -z "$ECHONAME" ]; then echo "$0: needs an ECHO_CLIENT set up first" 1>&2 diff --git a/lustre/tests/runtests b/lustre/tests/runtests index 6a8aac8..77635c3 100755 --- a/lustre/tests/runtests +++ b/lustre/tests/runtests @@ -31,20 +31,21 @@ SRC=/etc while [ "$1" ]; do case $1 in *.xml) export NAME=`echo $1 | sed "s/.xml//"` ;; + *) OPTS="$OPTS $1" ;; esac shift done -MOUNT="`mount | awk '/ lustre_lite / { print $3 }' | tail -1`" +MOUNT="`mount | awk '/ lustre_lite / { print $3 }' | tail -n 1`" if [ -z "$MOUNT" ]; then - sh llmount.sh - MOUNT="`mount | awk '/ lustre_lite / { print $3 }' | tail -1`" + sh llmount.sh $OPTS + MOUNT="`mount | awk '/ lustre_lite / { print $3 }' | tail -n 1`" [ -z "$MOUNT" ] && fail "no lustre filesystem mounted" 1 I_MOUNTED="yes" fi OSCTMP=`echo $MOUNT | tr "/" "."` -USED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -1` +USED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -n 1` USED=`expr $USED + 16` # Some space for the status file # let's start slowly here... @@ -77,7 +78,7 @@ mkdir $DST || fail "can't mkdir $DST" 10 # ok, that hopefully worked, so let's do a little more, with files that # haven't changed in the last day (hopefully they don't change during test) -FILES=`find $SRC -type f -mtime +1 -ctime +1 | head -$COUNT` +FILES=`find $SRC -type f -mtime +1 -ctime +1 | head -n $COUNT` log "copying files from $SRC to $DST$SRC" tar cf - $FILES | tar xvf - -C $DST || fail "copying $SRC" 11 @@ -90,7 +91,7 @@ done [ "$ERROR" ] && fail "old and new files are different" $ERROR sh llmountcleanup.sh || exit 19 -sh llrmount.sh || exit 20 +sh llrmount.sh $OPTS || exit 20 log "comparing previously copied files" for f in $FILES; do @@ -101,7 +102,7 @@ done [ "$ERROR" ] && fail "old and new files are different on second diff" $ERROR sh llmountcleanup.sh || exit 19 -sh llrmount.sh || exit 20 +sh llrmount.sh $OPTS || exit 20 log "removing $DST" rm -r $V $DST || fail "can't remove $DST" 37 @@ -123,7 +124,7 @@ rmdir $MOUNT/base$$* || fail "mkdirmany cleanup failed" log "done" -NOWUSED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -1` +NOWUSED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -n 1` if [ `expr $NOWUSED - $USED` -gt 1024 ]; then echo "Space not all freed: now ${NOWUSED}kB, was ${USED}kB." 1>&2 fi diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 7ba19ad..2f04e06 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -7,12 +7,9 @@ set -e ONLY=${ONLY:-"$*"} -# bug number for skipped test: 2108 +# bug number for skipped test: 2108 3192 ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"42a 68"} # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! -case `uname -r` in -2.6.*) ALWAYS_EXCEPT="$ALWAYS_EXCEPT 54c 55 68" # bug 3117 -esac [ "$ALWAYS_EXCEPT$EXCEPT" ] && echo "Skipping tests: $ALWAYS_EXCEPT $EXCEPT" @@ -574,7 +571,7 @@ run_test 24c "mkdir .../R3/f; rename .../R3/f .../R3/g =========" test_24d() { mkdir $DIR/R4 mkdir $DIR/R4/{f,g} - perl -e "rename \"$DIR/R4/f\", \"$DIR/R4/g\";" + mrename $DIR/R4/f $DIR/R4/g $CHECKSTAT -a $DIR/R4/f || error $CHECKSTAT -t dir $DIR/R4/g || error } @@ -606,23 +603,23 @@ test_24g() { $CHECKSTAT -a $DIR/R7a/d || error $CHECKSTAT -t dir $DIR/R7b/e || error } -run_test 24g "mkdir .../R7a/d; rename .../R7a/d .../R5b/e ======" +run_test 24g "mkdir .../R7{a,b}/d; mv .../R7a/d .../R5b/e ======" test_24h() { mkdir $DIR/R8{a,b} mkdir $DIR/R8a/d $DIR/R8b/e - perl -e "rename \"$DIR/R8a/d\", \"$DIR/R8b/e\";" + mrename $DIR/R8a/d $DIR/R8b/e $CHECKSTAT -a $DIR/R8a/d || error $CHECKSTAT -t dir $DIR/R8b/e || error } -run_test 24h "mkdir .../R8{a,b} R8a/{d,e}; mv .../R8a/d .../R8b/e" +run_test 24h "mkdir .../R8{a,b}/{d,e}; rename .../R8a/d .../R8b/e" test_24i() { echo "-- rename error cases" mkdir $DIR/R9 mkdir $DIR/R9/a touch $DIR/R9/f - perl -e "rename \"$DIR/R9/f\", \"$DIR/R9/a\";" + mrename $DIR/R9/f $DIR/R9/a $CHECKSTAT -t file $DIR/R9/f || error $CHECKSTAT -t dir $DIR/R9/a || error $CHECKSTAT -a file $DIR/R9/a/f || error @@ -631,7 +628,7 @@ run_test 24i "rename file to dir error: touch f ; mkdir a ; rename f a" test_24j() { mkdir $DIR/R10 - perl -e "rename \"$DIR/R10/f\", \"$DIR/R10/g\"" + mrename $DIR/R10/f $DIR/R10/g $CHECKSTAT -t dir $DIR/R10 || error $CHECKSTAT -a $DIR/R10/f || error $CHECKSTAT -a $DIR/R10/g || error @@ -673,10 +670,61 @@ run_test 24n "Statting the old file after renameing (Posix rename 2)" test_24o() { check_kernel_version 37 || return 0 - rename_many -s 3287 -v -n 10 $DIR + rename_many -s random -v -n 10 $DIR } run_test 24o "rename of files during htree split ===============" +test_24p() { + mkdir $DIR/R12{a,b} + DIRINO=`ls -lid $DIR/R12a | awk '{ print $1 }'` + mrename $DIR/R12a $DIR/R12b + $CHECKSTAT -a $DIR/R12a || error + $CHECKSTAT -t dir $DIR/R12b || error + DIRINO2=`ls -lid $DIR/R12b | awk '{ print $1 }'` + [ "$DIRINO" = "$DIRINO2" ] || error "R12a $DIRINO != R12b $DIRINO2" +} +run_test 24p "mkdir .../R12{a,b}; rename .../R12a .../R12b" + +test_24q() { + mkdir $DIR/R13{a,b} + DIRINO=`ls -lid $DIR/R13a | awk '{ print $1 }'` + multiop $DIR/R13b D_c & + MULTIPID=$! + + mrename $DIR/R13a $DIR/R13b + $CHECKSTAT -a $DIR/R13a || error + $CHECKSTAT -t dir $DIR/R13b || error + DIRINO2=`ls -lid $DIR/R13b | awk '{ print $1 }'` + [ "$DIRINO" = "$DIRINO2" ] || error "R13a $DIRINO != R13b $DIRINO2" + kill -USR1 $MULTIPID + wait $MULTIPID || error "multiop close failed" +} +run_test 24q "mkdir .../R13{a,b}; open R13b rename R13a R13b ===" + +test_24r() { #bug 3789 + mkdir $DIR/R14a $DIR/R14a/b + mrename $DIR/R14a $DIR/R14a/b && error "rename to subdir worked!" + $CHECKSTAT -t dir $DIR/R14a || error "$DIR/R14a missing" + $CHECKSTAT -t dir $DIR/R14a/b || error "$DIR/R14a/b missing" +} +run_test 24r "mkdir .../R14a/b; rename .../R14a .../R14a/b =====" + +test_24s() { + mkdir $DIR/R15a $DIR/R15a/b $DIR/R15a/b/c + mrename $DIR/R15a $DIR/R15a/b/c && error "rename to sub-subdir worked!" + $CHECKSTAT -t dir $DIR/R15a || error "$DIR/R15a missing" + $CHECKSTAT -t dir $DIR/R15a/b/c || error "$DIR/R15a/b/c missing" +} +run_test 24s "mkdir .../R15a/b/c; rename .../R15a .../R15a/b/c =" +test_24t() { + mkdir $DIR/R16a $DIR/R16a/b $DIR/R16a/b/c + mrename $DIR/R16a/b/c $DIR/R16a && error "rename to sub-subdir worked!" + $CHECKSTAT -t dir $DIR/R16a || error "$DIR/R16a missing" + $CHECKSTAT -t dir $DIR/R16a/b/c || error "$DIR/R16a/b/c missing" +} +run_test 24t "mkdir .../R16a/b/c; rename .../R16a/b/c .../R16a =" + + test_25a() { echo '== symlink sanity =============================================' mkdir $DIR/d25 @@ -731,8 +779,8 @@ run_test 26e "unlink multiple component recursive symlink ======" test_27a() { echo '== stripe sanity ==============================================' mkdir $DIR/d27 - $LSTRIPE $DIR/d27/f0 65536 0 1 || error - $CHECKSTAT -t file $DIR/d27/f0 || error + $LSTRIPE $DIR/d27/f0 65536 0 1 || error "lstripe failed" + $CHECKSTAT -t file $DIR/d27/f0 || error "checkstat failed" pass log "== test_27b: write to one stripe file =========================" cp /etc/hosts $DIR/d27/f0 || error @@ -744,12 +792,12 @@ test_27c() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $LSTRIPE $DIR/d27/f01 65536 0 2 || error + $LSTRIPE $DIR/d27/f01 65536 0 2 || error "lstripe failed" [ `$LFIND $DIR/d27/f01 | grep -A 10 obdidx | wc -l` -eq 4 ] || error "two-stripe file doesn't have two stripes" pass log "== test_27d: write to two stripe file file f01 ================" - dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4 || error + dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4 || error "dd failed" } run_test 27c "create two stripe file f01 =======================" @@ -757,8 +805,8 @@ test_27d() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $LSTRIPE $DIR/d27/fdef 0 -1 0 || error - $CHECKSTAT -t file $DIR/d27/fdef || error + $LSTRIPE $DIR/d27/fdef 0 -1 0 || error "lstripe failed" + $CHECKSTAT -t file $DIR/d27/fdef || error "checkstat failed" #dd if=/dev/zero of=$DIR/d27/fdef bs=4k count=4 || error } run_test 27d "create file with default settings ================" @@ -767,9 +815,9 @@ test_27e() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $LSTRIPE $DIR/d27/f12 65536 0 2 || error - $LSTRIPE $DIR/d27/f12 65536 0 2 && error - $CHECKSTAT -t file $DIR/d27/f12 || error + $LSTRIPE $DIR/d27/f12 65536 0 2 || error "lstripe failed" + $LSTRIPE $DIR/d27/f12 65536 0 2 && error "lstripe succeeded twice" + $CHECKSTAT -t file $DIR/d27/f12 || error "checkstat failed" } run_test 27e "lstripe existing file (should return error) ======" @@ -777,9 +825,9 @@ test_27f() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $LSTRIPE $DIR/d27/fbad 100 0 1 && error - dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4 || error - $LFIND $DIR/d27/fbad || error + $LSTRIPE $DIR/d27/fbad 100 0 1 && error "lstripe failed" + dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4 || error "dd failed" + $LFIND $DIR/d27/fbad || error "lfind failed" } run_test 27f "lstripe with bad stripe size (should return error)" @@ -787,14 +835,14 @@ test_27g() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $MCREATE $DIR/d27/fnone || error + $MCREATE $DIR/d27/fnone || error "mcreate failed" pass log "== test 27h: lfind with no objects ============================" - $LFIND $DIR/d27/fnone 2>&1 | grep "no stripe info" || error + $LFIND $DIR/d27/fnone 2>&1 | grep "no stripe info" || error "has object" pass log "== test 27i: lfind with some objects ==========================" - touch $DIR/d27/fsome || error - $LFIND $DIR/d27/fsome | grep obdidx || error + touch $DIR/d27/fsome || error "touch failed" + $LFIND $DIR/d27/fsome | grep obdidx || error "missing objects" } run_test 27g "test lfind =======================================" @@ -802,7 +850,7 @@ test_27j() { if [ ! -d $DIR/d27 ]; then mkdir $DIR/d27 fi - $LSTRIPE $DIR/d27/f27j 65536 $OSTCOUNT 1 && error || true + $LSTRIPE $DIR/d27/f27j 65536 $OSTCOUNT 1 && error "lstripe failed"||true } run_test 27j "lstripe with bad stripe offset (should return error)" @@ -1449,7 +1497,7 @@ run_test 43c "md5sum of copy into lustre========================" test_44() { [ "$OSTCOUNT" -lt "2" ] && echo "skipping 2-stripe test" && return - dd if=/dev/zero of=$DIR/f1 bs=4k count=1 seek=127 + dd if=/dev/zero of=$DIR/f1 bs=4k count=1 seek=1023 dd if=$DIR/f1 bs=4k count=1 } run_test 44 "zero length read from a sparse stripe =============" @@ -1526,18 +1574,18 @@ page_size() { getconf PAGE_SIZE } -# in a 2 stripe file (lov.sh), page 63 maps to page 31 in its object. this +# in a 2 stripe file (lov.sh), page 1023 maps to page 511 in its object. this # test tickles a bug where re-dirtying a page was failing to be mapped to the -# objects offset and an assert hit when an rpc was built with 63's mapped -# offset 31 and 31's raw 31 offset. it also found general redirtying bugs. +# objects offset and an assert hit when an rpc was built with 1023's mapped +# offset 511 and 511's raw 511 offset. it also found general redirtying bugs. test_46() { f="$DIR/f46" stop_writeback sync - dd if=/dev/zero of=$f bs=`page_size` seek=31 count=1 + dd if=/dev/zero of=$f bs=`page_size` seek=511 count=1 sync - dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=63 count=1 - dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=31 count=1 + dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=1023 count=1 + dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=511 count=1 sync start_writeback } @@ -1619,7 +1667,7 @@ test_48d() { # bug 2350 $TRACE mkdir . && error "'mkdir .' worked after removing parent" $TRACE rmdir . && error "'rmdir .' worked after removing parent" $TRACE ln -s . foo && error "'ln -s .' worked after removing parent" - $TRACE cd .. && error "'cd ..' worked after recreate parent" || true + $TRACE cd .. && error "'cd ..' worked after removing parent" || true } run_test 48d "Access removed parent subdir (should return errors)" diff --git a/lustre/tests/sanityN.sh b/lustre/tests/sanityN.sh index d568db9..c3e0a80 100644 --- a/lustre/tests/sanityN.sh +++ b/lustre/tests/sanityN.sh @@ -3,7 +3,7 @@ set -e ONLY=${ONLY:-"$*"} -# bug number for skipped test: 1768 +# bug number for skipped test: 1768 3192 ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"4 14b"} # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! @@ -101,8 +101,8 @@ pass() { echo PASS } -export MOUNT1=`mount| awk '/ lustre/ { print $3 }'| head -1` -export MOUNT2=`mount| awk '/ lustre/ { print $3 }'| tail -1` +export MOUNT1=`mount| awk '/ lustre/ { print $3 }'| head -n 1` +export MOUNT2=`mount| awk '/ lustre/ { print $3 }'| tail -n 1` [ -z "$MOUNT1" ] && error "NAME=$NAME not mounted once" [ "$MOUNT1" = "$MOUNT2" ] && error "NAME=$NAME not mounted twice" [ `mount| awk '/ lustre/ { print $3 }'| wc -l` -ne 2 ] && \ @@ -176,7 +176,7 @@ test_3() { run_test 3 "symlink on one mtpt, readlink on another ===========" test_4() { - ./multifstat $DIR1/f4 $DIR2/f4 + multifstat $DIR1/f4 $DIR2/f4 } run_test 4 "fstat validation on multiple mount points ==========" @@ -189,17 +189,17 @@ test_5() { run_test 5 "create a file on one mount, truncate it on the other" test_6() { - ./openunlink $DIR1/f6 $DIR2/f6 || error + openunlink $DIR1/f6 $DIR2/f6 || error } run_test 6 "remove of open file on other node ==================" test_7() { - ./opendirunlink $DIR1/d7 $DIR2/d7 || error + opendirunlink $DIR1/d7 $DIR2/d7 || error } run_test 7 "remove of open directory on other node =============" test_8() { - ./opendevunlink $DIR1/dev8 $DIR2/dev8 || error + opendevunlink $DIR1/dev8 $DIR2/dev8 || error } run_test 8 "remove of open special file on other node ==========" @@ -302,7 +302,7 @@ test_14a() { } run_test 14a "open(RDWR) of executing file returns -ETXTBSY ====" -test_14b() { +test_14b() { # bug 3192 mkdir -p $DIR1/d14 cp -p `which multiop` $DIR1/d14/multiop || error "cp failed" $DIR1/d14/multiop $TMP/test14.junk O_c & @@ -314,7 +314,7 @@ test_14b() { } run_test 14b "truncate of executing file returns -ETXTBSY ======" -test_14c() { +test_14c() { # bug 3430 mkdir -p $DIR1/d14 cp -p `which multiop` $DIR1/d14/multiop || error "cp failed" $DIR1/d14/multiop $TMP/test14.junk O_c & @@ -334,11 +334,31 @@ test_15() { # bug 974 - ENOSPC run_test 15 "test out-of-space with multiple writers ===========" test_16() { - ./fsx -R -W -c 50 -p 100 -N 2500 \ - $MOUNT1/fsxfile $MOUNT2/fsxfile + fsx -R -W -c 50 -p 100 -N 2500 $MOUNT1/fsxfile $MOUNT2/fsxfile } run_test 16 "2500 iterations of dual-mount fsx =================" +cancel_lru_locks() { + for d in /proc/fs/lustre/ldlm/namespaces/$1*; do + echo clear > $d/lru_size + done + grep [0-9] /proc/fs/lustre/ldlm/namespaces/$1*/lock_unused_count /dev/null +} + +test_17() { # bug 3513, 3667 + [ ! -d /proc/fs/lustre/ost ] && echo "skipping OST-only test" && return + + cp /etc/termcap $DIR1/f17 + cancel_lru_locks OSC > /dev/null + #define OBD_FAIL_ONCE|OBD_FAIL_LDLM_CREATE_RESOURCE 0x30a + echo 0x8000030a > /proc/sys/lustre/fail_loc + ls -ls $DIR1/f17 | awk '{ print $1,$6 }' > $DIR1/f17-1 & \ + ls -ls $DIR2/f17 | awk '{ print $1,$6 }' > $DIR2/f17-2 + wait + diff -u $DIR1/f17-1 $DIR2/f17-2 || error "files are different" +} +run_test 17 "resource creation/LVB creation race ===============" + log "cleanup: ======================================================" rm -rf $DIR1/[df][0-9]* $DIR1/lnk || true diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index b63e47d..610f068 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -55,7 +55,10 @@ init_test_env() { \?) usage;; esac done - + + shift $((OPTIND - 1)) + ONLY=${ONLY:-$*} + # save the name of the config file for the upcall echo "XMLCONFIG=$LUSTRE/tests/$XMLCONFIG" > $LUSTRE/tests/XMLCONFIG # echo "CONFIG=`canonical_path $CONFIG`" > $LUSTRE/tests/CONFIG diff --git a/lustre/utils/lconf b/lustre/utils/lconf index 4a7d6df..049491f7 100755 --- a/lustre/utils/lconf +++ b/lustre/utils/lconf @@ -741,8 +741,13 @@ def mkfs(dev, devsize, fstype, jsize, isize, mkfsoptions, isblock=1): ret, out = runcmd("ls -l %s" %dev) devsize = int(string.split(out[0])[4]) / 1024 else: - ret, out = runcmd("sfdisk -s %s" %dev) - devsize = int(out[0]) + devlast = dev.split("/")[-1] + ret, out = runcmd("cat /proc/partitions | grep %s"%devlast) + if ret: + panic("Unable to read the size of block device:", dev) + else: + out = out[0].split() + devsize = int(out[2]) if devsize > 1024 * 1024: jsize = ((devsize / 102400) * 4) if jsize > 400: @@ -1887,7 +1892,7 @@ def my_rstrip(s, chars): ns = s[0:i+1] break return ns - + class Mountpoint(Module): def __init__(self,db): @@ -2204,7 +2209,7 @@ def for_each_profile(db, prof_list, operation): for prof_uuid in prof_list: prof_db = db.lookup(prof_uuid) if not prof_db: - panic("profile:", profile, "not found.") + panic("profile:", prof_uuid, "not found.") services = getServices(prof_db) operation(services) @@ -2277,11 +2282,11 @@ def doHost(lustreDB, hosts): prof_list = node_db.get_refs('profile') if config.write_conf: - lustreDB.close() for_each_profile(node_db, prof_list, doModules) sys_make_devices() for_each_profile(node_db, prof_list, doWriteconf) for_each_profile(node_db, prof_list, doUnloadModules) + lustreDB.close() elif config.recover: if not (config.tgt_uuid and config.client_uuid and config.conn_uuid): diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index b1c8ca5..75a2906 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -65,9 +65,9 @@ command_t cmdlist[] = { /* Network configuration commands */ {"==== network config ====", jt_noop, 0, "network config"}, {"--net", jt_opt_net, 0, "run after setting network to \n" - "usage: --net "}, + "usage: --net "}, {"network", jt_ptl_network, 0, "commands that follow apply to net\n" - "usage: network "}, + "usage: network "}, {"autoconn_list", jt_ptl_print_autoconnects, 0, "print autoconnect entries\n" "usage: print_autoconns"}, {"add_autoconn", jt_ptl_add_autoconnect, 0, "add an autoconnect entry\n" @@ -84,7 +84,7 @@ command_t cmdlist[] = { "usage: active_tx"}, {"mynid", jt_ptl_mynid, 0, "inform the socknal of the local nid. " "The nid defaults to hostname for tcp networks and is automatically " - "setup for elan/myrinet/scimac networks.\n" + "setup for elan/myrinet networks.\n" "usage: mynid []"}, {"shownid", jt_ptl_shownid, 0, "print the local NID\n" "usage: shownid"}, @@ -128,7 +128,7 @@ command_t cmdlist[] = { "usage: device <%name|$name|devno>"}, {"cfg_device", jt_lcfg_device, 0, "set current device being configured to <$name>\n" - "usage: device "}, + "usage: cfg_device "}, {"device_list", jt_obd_list, 0, "show all devices\n" "usage: device_list"}, {"dl", jt_obd_list, 0, "show all devices\n" @@ -254,24 +254,24 @@ command_t cmdlist[] = { " check all records from index 1 by default."}, {"llog_cancel", jt_llog_cancel, 0, "cancel one record in log.\n" - "usage: llog_cancel "}, + "usage: llog_cancel "}, {"llog_remove", jt_llog_remove, 0, - "remove one log from catlog, erase it from disk.\n" - "usage: llog_remove "}, + "remove one log from catalog, erase it from disk.\n" + "usage: llog_remove "}, /* Debug commands */ {"======== debug =========", jt_noop, 0, "debug"}, {"debug_daemon", jt_dbg_debug_daemon, 0, - "debug daemon control and dump to a file" + "debug daemon control and dump to a file\n" "usage: debug_daemon [start file <#MB>|stop|pause|continue]"}, {"debug_kernel", jt_dbg_debug_kernel, 0, - "get debug buffer and dump to a file" + "get debug buffer and dump to a file\n" "usage: debug_kernel [file] [raw]"}, {"dk", jt_dbg_debug_kernel, 0, - "get debug buffer and dump to a file" + "get debug buffer and dump to a file\n" "usage: dk [file] [raw]"}, {"debug_file", jt_dbg_debug_file, 0, - "read debug buffer from input and dump to output" + "read debug buffer from input and dump to output\n" "usage: debug_file [output] [raw]"}, {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer\n" "usage: clear"}, @@ -279,7 +279,7 @@ command_t cmdlist[] = { "usage: mark "}, {"filter", jt_dbg_filter, 0, "filter message type\n" "usage: filter "}, - {"show", jt_dbg_show, 0, "show message type\n" + {"show", jt_dbg_show, 0, "show type of messages\n" "usage: show "}, {"debug_list", jt_dbg_list, 0, "list subsystem and debug types\n" "usage: debug_list "}, diff --git a/lustre/utils/lmc b/lustre/utils/lmc index a341dd8..567689e 100755 --- a/lustre/utils/lmc +++ b/lustre/utils/lmc @@ -74,7 +74,7 @@ Object creation command summary: --node node_name --nid nid --cluster_id - --nettype tcp|elan|gm|scimac + --nettype tcp|elan|gm --hostaddr addr --port port --tcpbuf size @@ -154,7 +154,7 @@ lmc_options = [ ('subsystem', "Specify which Lustre subsystems have debug output recorded in the log", PARAM), # network - ('nettype', "Specify the network type. This can be tcp/elan/gm/scimac.", PARAM), + ('nettype', "Specify the network type. This can be tcp/elan/gm.", PARAM), ('nid', "Give the network ID, e.g ElanID/IP Address as used by portals.", PARAM), ('tcpbuf', "Optional argument to specify the TCP buffer size.", PARAM, "0"), ('port', "Optional argument to specify the TCP port number.", PARAM, DEFAULT_PORT), @@ -637,7 +637,7 @@ def add_net(gen, lustre, options): port = get_option_int(options, 'port') tcpbuf = get_option_int(options, 'tcpbuf') irq_aff = get_option_int(options, 'irq_affinity') - elif net_type in ('elan', 'gm', 'scimac'): + elif net_type in ('elan', 'gm'): port = 0 tcpbuf = 0 irq_aff = 0