diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
commit | 9e30c3705aed9fbec4c3304570e4d6e707856bcb (patch) | |
tree | b19e6acb5a67af31a4e7742e05c2166dc3f1444c /drivers/net/tokenring | |
parent | 72919904796333a20c6a5d5c380091b42e407aa9 (diff) |
Merge with Linux 2.3.22.
Diffstat (limited to 'drivers/net/tokenring')
-rw-r--r-- | drivers/net/tokenring/Config.in | 2 | ||||
-rw-r--r-- | drivers/net/tokenring/Makefile | 8 | ||||
-rw-r--r-- | drivers/net/tokenring/sktr.c | 2707 | ||||
-rw-r--r-- | drivers/net/tokenring/sktr.h | 1103 | ||||
-rw-r--r-- | drivers/net/tokenring/sktr_firmware.h | 3616 | ||||
-rw-r--r-- | drivers/net/tokenring/tms380tr.c | 2749 | ||||
-rw-r--r-- | drivers/net/tokenring/tms380tr.h | 1109 | ||||
-rw-r--r-- | drivers/net/tokenring/tms380tr_microcode.h | 3622 |
8 files changed, 7485 insertions, 7431 deletions
diff --git a/drivers/net/tokenring/Config.in b/drivers/net/tokenring/Config.in index 8b3065c8a..2a4e4907d 100644 --- a/drivers/net/tokenring/Config.in +++ b/drivers/net/tokenring/Config.in @@ -9,7 +9,7 @@ bool 'Token Ring driver support' CONFIG_TR if [ "$CONFIG_TR" = "y" ]; then tristate ' IBM Tropic chipset based adapter support' CONFIG_IBMTR tristate ' IBM Olympic chipset PCI adapter support' CONFIG_IBMOL - tristate ' SysKonnect adapter support' CONFIG_SKTR + tristate ' Generic TMS380 Token Ring ISA/PCI adapter support' CONFIG_TMS380TR fi endmenu diff --git a/drivers/net/tokenring/Makefile b/drivers/net/tokenring/Makefile index 038c58b86..f76e996ff 100644 --- a/drivers/net/tokenring/Makefile +++ b/drivers/net/tokenring/Makefile @@ -39,11 +39,11 @@ else endif endif -ifeq ($(CONFIG_SKTR),y) - L_OBJS += sktr.o +ifeq ($(CONFIG_TMS380TR),y) + L_OBJS += tms380tr.o else - ifeq ($(CONFIG_SKTR),m) - M_OBJS += sktr.o + ifeq ($(CONFIG_TMS380TR),m) + M_OBJS += tms380tr.o endif endif diff --git a/drivers/net/tokenring/sktr.c b/drivers/net/tokenring/sktr.c index 81b2df4bc..e69de29bb 100644 --- a/drivers/net/tokenring/sktr.c +++ b/drivers/net/tokenring/sktr.c @@ -1,2707 +0,0 @@ -/* - * sktr.c: A network driver for the SysKonnect Token Ring ISA/PCI Adapters. - * - * Written 1997 by Christoph Goos - * - * A fine result of the Linux Systems Network Architecture Project. - * http://samba.anu.edu.au/linux-sna/ - * - * This software may be used and distributed according to the terms - * of the GNU Public License, incorporated herein by reference. - * - * This device driver works with the following SysKonnect adapters: - * - SysKonnect TR4/16(+) ISA (SK-4190) - * - SysKonnect TR4/16(+) PCI (SK-4590) - * - SysKonnect TR4/16 PCI (SK-4591) - * - * Sources: - * - The hardware related parts of this driver are take from - * the SysKonnect Token Ring driver for Windows NT. - * - I used the IBM Token Ring driver 'ibmtr.c' as a base for this - * driver, as well as the 'skeleton.c' driver by Donald Becker. - * - Also various other drivers in the linux source tree were taken - * as samples for some tasks. - * - * Maintainer(s): - * JS Jay Schulist jschlst@samba.anu.edu.au - * CG Christoph Goos cgoos@syskonnect.de - * AF Adam Fritzler mid@auk.cx - * - * Modification History: - * 29-Aug-97 CG Created - * 04-Apr-98 CG Fixed problems caused by tok_timer_check - * 10-Apr-98 CG Fixed lockups at cable disconnection - * 27-May-98 JS Formated to Linux Kernel Format - * 31-May-98 JS Hacked in PCI support - * 16-Jun-98 JS Modulized for multiple cards with one driver - * 21-Sep-99 CG Fixed source routing issues for 2.2 kernels - * 21-Sep-99 AF Added multicast changes recommended by - * Jochen Friedrich <jochen@nwe.de> (untested) - * Added detection of compatible Compaq PCI card - * - * To do: - * 1. Selectable 16 Mbps or 4Mbps - * 2. Multi/Broadcast packet handling (might be done) - * - */ - -static const char *version = "sktr.c: v1.01 08/29/97 by Christoph Goos\n"; - -#ifdef MODULE -#include <linux/module.h> -#include <linux/version.h> -#endif - -#include <linux/kernel.h> -#include <linux/sched.h> -#include <linux/types.h> -#include <linux/fcntl.h> -#include <linux/interrupt.h> -#include <linux/ptrace.h> -#include <linux/ioport.h> -#include <linux/in.h> -#include <linux/malloc.h> -#include <linux/string.h> -#include <linux/time.h> -#include <asm/system.h> -#include <asm/bitops.h> -#include <asm/io.h> -#include <asm/dma.h> -#include <asm/irq.h> -#include <linux/errno.h> -#include <linux/init.h> -#include <linux/pci.h> - -#include <linux/netdevice.h> -#include <linux/etherdevice.h> -#include <linux/skbuff.h> -#include <linux/trdevice.h> - -#include "sktr.h" /* Our Stuff */ -#include "sktr_firmware.h" /* SysKonnect adapter firmware */ - -/* A zero-terminated list of I/O addresses to be probed. */ -static unsigned int sktr_portlist[] __initdata = { - 0x0A20, 0x1A20, 0x0B20, 0x1B20, 0x0980, 0x1980, 0x0900, 0x1900, - 0 -}; - -/* A zero-terminated list of IRQs to be probed. - * Used again after initial probe for sktr_chipset_init, called from sktr_open. - */ -static unsigned short sktr_irqlist[] = { - 3, 5, 9, 10, 11, 12, 15, - 0 -}; - -/* A zero-terminated list of DMAs to be probed. */ -static int sktr_dmalist[] __initdata = { - 5, 6, 7, - 0 -}; - -/* Card names */ -static char *pci_cardname = "SK NET TR 4/16 PCI\0"; -static char *isa_cardname = "SK NET TR 4/16 ISA\0"; -static char *AdapterName; - -/* Use 0 for production, 1 for verification, 2 for debug, and - * 3 for very verbose debug. - */ -#ifndef SKTR_DEBUG -#define SKTR_DEBUG 1 -#endif -static unsigned int sktr_debug = SKTR_DEBUG; - -/* The number of low I/O ports used by the tokencard. */ -#define SKTR_IO_EXTENT 32 - -/* Index to functions, as function prototypes. - * Alphabetical by function name. - */ - -/* "B" */ -static int sktr_bringup_diags(struct net_device *dev); -/* "C" */ -static void sktr_cancel_tx_queue(struct net_local* tp); -static int sktr_chipset_init(struct net_device *dev); -static void sktr_chk_irq(struct net_device *dev); -static unsigned char sktr_chk_frame(struct net_device *dev, unsigned char *Addr); -static void sktr_chk_outstanding_cmds(struct net_device *dev); -static void sktr_chk_src_addr(unsigned char *frame, unsigned char *hw_addr); -static unsigned char sktr_chk_ssb(struct net_local *tp, unsigned short IrqType); -static int sktr_close(struct net_device *dev); -static void sktr_cmd_status_irq(struct net_device *dev); -/* "D" */ -static void sktr_disable_interrupts(struct net_device *dev); -static void sktr_dump(unsigned char *Data, int length); -/* "E" */ -static void sktr_enable_interrupts(struct net_device *dev); -static void sktr_exec_cmd(struct net_device *dev, unsigned short Command); -static void sktr_exec_sifcmd(struct net_device *dev, unsigned int WriteValue); -/* "F" */ -/* "G" */ -static struct enet_statistics *sktr_get_stats(struct net_device *dev); -/* "H" */ -static void sktr_hardware_send_packet(struct net_device *dev, - struct net_local* tp); -/* "I" */ -static int sktr_init_adapter(struct net_device *dev); -static int sktr_init_card(struct net_device *dev); -static void sktr_init_ipb(struct net_local *tp); -static void sktr_init_net_local(struct net_device *dev); -static void sktr_init_opb(struct net_local *tp); -static void sktr_interrupt(int irq, void *dev_id, struct pt_regs *regs); -static int sktr_isa_chk_card(struct net_device *dev, int ioaddr); -static int sktr_isa_chk_ioaddr(int ioaddr); -/* "O" */ -static int sktr_open(struct net_device *dev); -static void sktr_open_adapter(struct net_device *dev); -/* "P" */ -static int sktr_pci_chk_card(struct net_device *dev); -int sktr_probe(struct net_device *dev); -static int sktr_probe1(struct net_device *dev, int ioaddr); -/* "R" */ -static void sktr_rcv_status_irq(struct net_device *dev); -static void sktr_read_addr(struct net_device *dev, unsigned char *Address); -static void sktr_read_ptr(struct net_device *dev); -static void sktr_read_ram(struct net_device *dev, unsigned char *Data, - unsigned short Address, int Length); -static int sktr_reset_adapter(struct net_device *dev); -static void sktr_reset_interrupt(struct net_device *dev); -static void sktr_ring_status_irq(struct net_device *dev); -/* "S" */ -static int sktr_send_packet(struct sk_buff *skb, struct net_device *dev); -static void sktr_set_multicast_list(struct net_device *dev); -/* "T" */ -static void sktr_timer_chk(unsigned long data); -static void sktr_timer_end_wait(unsigned long data); -static void sktr_tx_status_irq(struct net_device *dev); -/* "U" */ -static void sktr_update_rcv_stats(struct net_local *tp, - unsigned char DataPtr[], unsigned int Length); -/* "W" */ -static void sktr_wait(unsigned long time); -static void sktr_write_rpl_status(RPL *rpl, unsigned int Status); -static void sktr_write_tpl_status(TPL *tpl, unsigned int Status); - -/* - * Check for a network adapter of this type, and return '0' if one exists. - * If dev->base_addr == 0, probe all likely locations. - * If dev->base_addr == 1, always return failure. - */ -int __init sktr_probe(struct net_device *dev) -{ - int i; - int base_addr = dev ? dev->base_addr : 0; - - if(base_addr > 0x1ff) /* Check a single specified location. */ - return (sktr_probe1(dev, base_addr)); - else if(base_addr != 0) /* Don't probe at all. */ - return (-ENXIO); - - for(i = 0; sktr_portlist[i]; i++) - { - int ioaddr = sktr_portlist[i]; - if(check_region(ioaddr, SKTR_IO_EXTENT)) - continue; - if(sktr_probe1(dev, ioaddr)) - { -#ifndef MODULE - tr_freedev(dev); -#endif - } - else - return (0); - } - - return (-ENODEV); -} - -/* - * Detect and setup the PCI SysKonnect TR cards in slot order. - */ -static int __init sktr_pci_chk_card(struct net_device *dev) -{ - static int pci_index = 0; - unsigned char pci_bus, pci_device_fn; - - if(!pci_present()) - return (-1); /* No PCI present. */ - - for(; pci_index < 0xff; pci_index++) - { - unsigned int pci_irq_line; - struct pci_dev *pdev; - unsigned short pci_command, new_command, vendor, device; - unsigned int pci_ioaddr; - - if(pcibios_find_class(PCI_CLASS_NETWORK_TOKEN_RING << 8, - pci_index, &pci_bus, &pci_device_fn) - != PCIBIOS_SUCCESSFUL) - { - break; - } - - pcibios_read_config_word(pci_bus, pci_device_fn, - PCI_VENDOR_ID, &vendor); - pcibios_read_config_word(pci_bus, pci_device_fn, - PCI_DEVICE_ID, &device); - - pdev = pci_find_slot(pci_bus, pci_device_fn); - pci_irq_line = pdev->irq; - pci_ioaddr = pdev->resource[0].start; - - pcibios_read_config_word(pci_bus, pci_device_fn, - PCI_COMMAND, &pci_command); - - /* Remove I/O space marker in bit 0. */ - pci_ioaddr &= ~3; - - if((vendor != PCI_VENDOR_ID_SK) && - (vendor != PCI_VENDOR_ID_COMPAQ)) - continue; - - if((vendor == PCI_VENDOR_ID_SK) && - (device != PCI_DEVICE_ID_SK_TR)) - continue; - else if((vendor == PCI_VENDOR_ID_COMPAQ) && - (device != PCI_DEVICE_ID_COMPAQ_TOKENRING)) - continue; - - if(check_region(pci_ioaddr, SKTR_IO_EXTENT)) - continue; - request_region(pci_ioaddr, SKTR_IO_EXTENT, pci_cardname); - if(request_irq(pdev->irq, sktr_interrupt, SA_SHIRQ, - pci_cardname, dev)) - return (-ENODEV); /* continue; ?? */ - - AdapterName = pci_cardname; - - new_command = (pci_command|PCI_COMMAND_MASTER|PCI_COMMAND_IO); - - if(pci_command != new_command) - { - printk("The PCI BIOS has not enabled this" - "device! Updating PCI command %4.4x->%4.4x.\n", - pci_command, new_command); - pcibios_write_config_word(pci_bus, pci_device_fn, - PCI_COMMAND, new_command); - } - - /* At this point we have found a valid PCI TR card. */ - dev->base_addr = pci_ioaddr; - dev->irq = pci_irq_line; - dev->dma = 0; - - printk("%s: %s found at %#4x, using IRQ %d.\n", - dev->name, AdapterName, pci_ioaddr, dev->irq); - - return (0); - } - - return (-1); -} - -/* - * Detect and setup the ISA SysKonnect TR cards. - */ -static int __init sktr_isa_chk_card(struct net_device *dev, int ioaddr) -{ - int i, err; - unsigned long flags; - - err = sktr_isa_chk_ioaddr(ioaddr); - if(err < 0) - return (-ENODEV); - - if(virt_to_bus((void*)((unsigned long)dev->priv+sizeof(struct net_local))) - > ISA_MAX_ADDRESS) - { - printk("%s: Memory not accessible for DMA\n", dev->name); - kfree(dev->priv); - return (-EAGAIN); - } - - AdapterName = isa_cardname; - - /* Grab the region so that no one else tries to probe our ioports. */ - request_region(ioaddr, SKTR_IO_EXTENT, AdapterName); - dev->base_addr = ioaddr; - - /* Autoselect IRQ and DMA if dev->irq == 0 */ - if(dev->irq == 0) - { - for(i = 0; sktr_irqlist[i] != 0; i++) - { - dev->irq = sktr_irqlist[i]; - err = request_irq(dev->irq, &sktr_interrupt, 0, AdapterName, dev); - if(!err) - break; - } - - if(sktr_irqlist[i] == 0) - { - printk("%s: AutoSelect no IRQ available\n", dev->name); - return (-EAGAIN); - } - } - else - { - err = request_irq(dev->irq, &sktr_interrupt, 0, AdapterName, dev); - if(err) - { - printk("%s: Selected IRQ not available\n", dev->name); - return (-EAGAIN); - } - } - - /* Always allocate the DMA channel after IRQ and clean up on failure */ - if(dev->dma == 0) - { - for(i = 0; sktr_dmalist[i] != 0; i++) - { - dev->dma = sktr_dmalist[i]; - err = request_dma(dev->dma, AdapterName); - if(!err) - break; - } - - if(dev->dma == 0) - { - printk("%s: AutoSelect no DMA available\n", dev->name); - free_irq(dev->irq, NULL); - return (-EAGAIN); - } - } - else - { - err = request_dma(dev->dma, AdapterName); - if(err) - { - printk("%s: Selected DMA not available\n", dev->name); - free_irq(dev->irq, NULL); - return (-EAGAIN); - } - } - - flags=claim_dma_lock(); - disable_dma(dev->dma); - set_dma_mode(dev->dma, DMA_MODE_CASCADE); - enable_dma(dev->dma); - release_dma_lock(flags); - - printk("%s: %s found at %#4x, using IRQ %d and DMA %d.\n", - dev->name, AdapterName, ioaddr, dev->irq, dev->dma); - - return (0); -} - -static int __init sktr_probe1(struct net_device *dev, int ioaddr) -{ - static unsigned version_printed = 0; - struct net_local *tp; - int DeviceType = SK_PCI; - int err; - - if(sktr_debug && version_printed++ == 0) - printk("%s", version); - -#ifndef MODULE - dev = init_trdev(dev, 0); - if(dev == NULL) - return (-ENOMEM); -#endif - - err = sktr_pci_chk_card(dev); - if(err < 0) - { - err = sktr_isa_chk_card(dev, ioaddr); - if(err < 0) - return (-ENODEV); - DeviceType = SK_ISA; - } - - /* Setup this devices private information structure */ - tp = (struct net_local *)kmalloc(sizeof(struct net_local), GFP_KERNEL | GFP_DMA); - if(tp == NULL) - return (-ENOMEM); - memset(tp, 0, sizeof(struct net_local)); - tp->DeviceType = DeviceType; - init_waitqueue_head(&tp->wait_for_tok_int); - - dev->priv = tp; - dev->init = sktr_init_card; - dev->open = sktr_open; - dev->stop = sktr_close; - dev->hard_start_xmit = sktr_send_packet; - dev->get_stats = sktr_get_stats; - dev->set_multicast_list = &sktr_set_multicast_list; - - return (0); -} - -/* Dummy function */ -static int __init sktr_init_card(struct net_device *dev) -{ - if(sktr_debug > 3) - printk("%s: sktr_init_card\n", dev->name); - - return (0); -} - -/* - * This function tests if an adapter is really installed at the - * given I/O address. Return negative if no adapter at IO addr. - */ -static int __init sktr_isa_chk_ioaddr(int ioaddr) -{ - unsigned char old, chk1, chk2; - - old = inb(ioaddr + SIFADR); /* Get the old SIFADR value */ - - chk1 = 0; /* Begin with check value 0 */ - do { - /* Write new SIFADR value */ - outb(chk1, ioaddr + SIFADR); - - /* Read, invert and write */ - chk2 = inb(ioaddr + SIFADD); - chk2 ^= 0x0FE; - outb(chk2, ioaddr + SIFADR); - - /* Read, invert and compare */ - chk2 = inb(ioaddr + SIFADD); - chk2 ^= 0x0FE; - - if(chk1 != chk2) - return (-1); /* No adapter */ - - chk1 -= 2; - } while(chk1 != 0); /* Repeat 128 times (all byte values) */ - - /* Restore the SIFADR value */ - outb(old, ioaddr + SIFADR); - - return (0); -} - -/* - * Open/initialize the board. This is called sometime after - * booting when the 'ifconfig' program is run. - * - * This routine should set everything up anew at each open, even - * registers that "should" only need to be set once at boot, so that - * there is non-reboot way to recover if something goes wrong. - */ -static int sktr_open(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - int err; - - /* Reset the hardware here. Don't forget to set the station address. */ - err = sktr_chipset_init(dev); - if(err) - { - printk(KERN_INFO "%s: Chipset initialization error\n", - dev->name); - return (-1); - } - - dev->addr_len = 6; - sktr_read_addr(dev, (unsigned char*)dev->dev_addr); - - init_timer(&tp->timer); - tp->timer.expires = jiffies + 30*HZ; - tp->timer.function = sktr_timer_end_wait; - tp->timer.data = (unsigned long)dev; - tp->timer.next = NULL; - tp->timer.prev = NULL; - add_timer(&tp->timer); - - sktr_read_ptr(dev); - sktr_enable_interrupts(dev); - sktr_open_adapter(dev); - - dev->tbusy = 0; - dev->interrupt = 0; - dev->start = 0; - - /* Wait for interrupt from hardware. If interrupt does not come, - * there will be a timeout from the timer. - */ - tp->Sleeping = 1; - interruptible_sleep_on(&tp->wait_for_tok_int); - del_timer(&tp->timer); - - /* If AdapterVirtOpenFlag is 1, the adapter is now open for use */ - if(tp->AdapterVirtOpenFlag == 0) - { - sktr_disable_interrupts(dev); - return (-1); - } - - dev->start = 1; - - tp->StartTime = jiffies; - - /* Start function control timer */ - tp->timer.expires = jiffies + 2*HZ; - tp->timer.function = sktr_timer_chk; - tp->timer.data = (unsigned long)dev; - add_timer(&tp->timer); - -#ifdef MODULE - MOD_INC_USE_COUNT; -#endif - - return (0); -} - -/* - * Timeout function while waiting for event - */ -static void sktr_timer_end_wait(unsigned long data) -{ - struct net_device *dev = (struct net_device*)data; - struct net_local *tp = (struct net_local *)dev->priv; - - if(tp->Sleeping) - { - tp->Sleeping = 0; - wake_up_interruptible(&tp->wait_for_tok_int); - } - - return; -} - -/* - * Initialize the chipset - */ -static int sktr_chipset_init(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned char PosReg, Tmp; - int i, err; - - sktr_init_ipb(tp); - sktr_init_opb(tp); - sktr_init_net_local(dev); - - /* Set pos register: selects irq and dma channel. - * Only for ISA bus adapters. - */ - if(dev->dma > 0) - { - PosReg = 0; - for(i = 0; sktr_irqlist[i] != 0; i++) - { - if(sktr_irqlist[i] == dev->irq) - break; - } - - /* Choose default cycle time, 500 nsec */ - PosReg |= CYCLE_TIME << 2; - PosReg |= i << 4; - i = dev->dma - 5; - PosReg |= i; - - if(tp->DataRate == SPEED_4) - PosReg |= LINE_SPEED_BIT; - else - PosReg &= ~LINE_SPEED_BIT; - - outb(PosReg, dev->base_addr + POSREG); - Tmp = inb(dev->base_addr + POSREG); - if((Tmp & ~CYCLE_TIME) != (PosReg & ~CYCLE_TIME)) - printk(KERN_INFO "%s: POSREG error\n", dev->name); - } - - err = sktr_reset_adapter(dev); - if(err < 0) - return (-1); - - err = sktr_bringup_diags(dev); - if(err < 0) - return (-1); - - err = sktr_init_adapter(dev); - if(err < 0) - return (-1); - - return (0); -} - -/* - * Initializes the net_local structure. - */ -static void sktr_init_net_local(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - int i; - - tp->scb.CMD = 0; - tp->scb.Parm[0] = 0; - tp->scb.Parm[1] = 0; - - tp->ssb.STS = 0; - tp->ssb.Parm[0] = 0; - tp->ssb.Parm[1] = 0; - tp->ssb.Parm[2] = 0; - - tp->CMDqueue = 0; - - tp->AdapterOpenFlag = 0; - tp->AdapterVirtOpenFlag = 0; - tp->ScbInUse = 0; - tp->OpenCommandIssued = 0; - tp->ReOpenInProgress = 0; - tp->HaltInProgress = 0; - tp->TransmitHaltScheduled = 0; - tp->LobeWireFaultLogged = 0; - tp->LastOpenStatus = 0; - tp->MaxPacketSize = DEFAULT_PACKET_SIZE; - - skb_queue_head_init(&tp->SendSkbQueue); - tp->QueueSkb = MAX_TX_QUEUE; - - /* Create circular chain of transmit lists */ - for (i = 0; i < TPL_NUM; i++) - { - tp->Tpl[i].NextTPLAddr = htonl((unsigned long) virt_to_bus(&tp->Tpl[(i+1) % TPL_NUM])); - tp->Tpl[i].Status = 0; - tp->Tpl[i].FrameSize = 0; - tp->Tpl[i].FragList[0].DataCount = 0; - tp->Tpl[i].FragList[0].DataAddr = 0; - tp->Tpl[i].NextTPLPtr = &tp->Tpl[(i+1) % TPL_NUM]; - tp->Tpl[i].MData = NULL; - tp->Tpl[i].TPLIndex = i; - tp->Tpl[i].BusyFlag = 0; - } - - tp->TplFree = tp->TplBusy = &tp->Tpl[0]; - - /* Create circular chain of receive lists */ - for (i = 0; i < RPL_NUM; i++) - { - tp->Rpl[i].NextRPLAddr = htonl((unsigned long) virt_to_bus(&tp->Rpl[(i+1) % RPL_NUM])); - tp->Rpl[i].Status = (RX_VALID | RX_START_FRAME | RX_END_FRAME | RX_FRAME_IRQ); - tp->Rpl[i].FrameSize = 0; - tp->Rpl[i].FragList[0].DataCount = SWAPB(tp->MaxPacketSize); - - /* Alloc skb and point adapter to data area */ - tp->Rpl[i].Skb = dev_alloc_skb(tp->MaxPacketSize); - - /* skb == NULL ? then use local buffer */ - if(tp->Rpl[i].Skb == NULL) - { - tp->Rpl[i].SkbStat = SKB_UNAVAILABLE; - tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[i])); - tp->Rpl[i].MData = tp->LocalRxBuffers[i]; - } - else /* SKB != NULL */ - { - tp->Rpl[i].Skb->dev = dev; - skb_put(tp->Rpl[i].Skb, tp->MaxPacketSize); - - /* data unreachable for DMA ? then use local buffer */ - if(tp->DeviceType == SK_ISA && - virt_to_bus(tp->Rpl[i].Skb->data) + - tp->MaxPacketSize > ISA_MAX_ADDRESS) - { - tp->Rpl[i].SkbStat = SKB_DATA_COPY; - tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[i])); - tp->Rpl[i].MData = tp->LocalRxBuffers[i]; - } - else /* DMA directly in skb->data */ - { - tp->Rpl[i].SkbStat = SKB_DMA_DIRECT; - tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->Rpl[i].Skb->data)); - tp->Rpl[i].MData = tp->Rpl[i].Skb->data; - } - } - - tp->Rpl[i].NextRPLPtr = &tp->Rpl[(i+1) % RPL_NUM]; - tp->Rpl[i].RPLIndex = i; - } - - tp->RplHead = &tp->Rpl[0]; - tp->RplTail = &tp->Rpl[RPL_NUM-1]; - tp->RplTail->Status = (RX_START_FRAME | RX_END_FRAME | RX_FRAME_IRQ); - - return; -} - -/* - * Initializes the initialisation parameter block. - */ -static void sktr_init_ipb(struct net_local *tp) -{ - tp->ipb.Init_Options = BURST_MODE; - tp->ipb.CMD_Status_IV = 0; - tp->ipb.TX_IV = 0; - tp->ipb.RX_IV = 0; - tp->ipb.Ring_Status_IV = 0; - tp->ipb.SCB_Clear_IV = 0; - tp->ipb.Adapter_CHK_IV = 0; - tp->ipb.RX_Burst_Size = BURST_SIZE; - tp->ipb.TX_Burst_Size = BURST_SIZE; - tp->ipb.DMA_Abort_Thrhld = DMA_RETRIES; - tp->ipb.SCB_Addr = 0; - tp->ipb.SSB_Addr = 0; - - return; -} - -/* - * Initializes the open parameter block. - */ -static void sktr_init_opb(struct net_local *tp) -{ - unsigned long Addr; - unsigned short RplSize = RPL_SIZE; - unsigned short TplSize = TPL_SIZE; - unsigned short BufferSize = BUFFER_SIZE; - - tp->ocpl.OPENOptions = 0; - tp->ocpl.OPENOptions |= ENABLE_FULL_DUPLEX_SELECTION; -/* tp->ocpl.OPENOptions |= PAD_ROUTING_FIELD; no more needed */ - tp->ocpl.FullDuplex = 0; - tp->ocpl.FullDuplex |= OPEN_FULL_DUPLEX_OFF; - - /* Fixme: If mac address setable: - * for (i=0; i<LENGTH_OF_ADDRESS; i++) - * mac->Vam->ocpl.NodeAddr[i] = mac->CurrentAddress[i]; - */ - - tp->ocpl.GroupAddr = 0; - tp->ocpl.FunctAddr = 0; - tp->ocpl.RxListSize = SWAPB(RplSize); - tp->ocpl.TxListSize = SWAPB(TplSize); - tp->ocpl.BufSize = SWAPB(BufferSize); - tp->ocpl.Reserved = 0; - tp->ocpl.TXBufMin = TX_BUF_MIN; - tp->ocpl.TXBufMax = TX_BUF_MAX; - - Addr = htonl(virt_to_bus(tp->ProductID)); - - tp->ocpl.ProdIDAddr[0] = LOWORD(Addr); - tp->ocpl.ProdIDAddr[1] = HIWORD(Addr); - - return; -} - -/* - * Send OPEN command to adapter - */ -static void sktr_open_adapter(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - if(tp->OpenCommandIssued) - return; - - tp->OpenCommandIssued = 1; - sktr_exec_cmd(dev, OC_OPEN); - - return; -} - -/* - * Clear the adapter's interrupt flag. Clear system interrupt enable - * (SINTEN): disable adapter to system interrupts. - */ -static void sktr_disable_interrupts(struct net_device *dev) -{ - outb(0, dev->base_addr + SIFACL); - - return; -} - -/* - * Set the adapter's interrupt flag. Set system interrupt enable - * (SINTEN): enable adapter to system interrupts. - */ -static void sktr_enable_interrupts(struct net_device *dev) -{ - outb(ACL_SINTEN, dev->base_addr + SIFACL); - - return; -} - -/* - * Put command in command queue, try to execute it. - */ -static void sktr_exec_cmd(struct net_device *dev, unsigned short Command) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - tp->CMDqueue |= Command; - sktr_chk_outstanding_cmds(dev); - - return; -} - -/* - * Gets skb from system, queues it and checks if it can be sent - */ -static int sktr_send_packet(struct sk_buff *skb, struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - if(dev->tbusy) - { - /* - * If we get here, some higher level has decided we are broken. - * There should really be a "kick me" function call instead. - * - * Resetting the token ring adapter takes a long time so just - * fake transmission time and go on trying. Our own timeout - * routine is in sktr_timer_chk() - */ - dev->tbusy = 0; - dev->trans_start = jiffies; - return (1); - } - - /* - * If some higher layer thinks we've missed an tx-done interrupt we - * are passed NULL. - */ - if(skb == NULL) - return (0); - - /* - * Block a timer-based transmit from overlapping. This could better be - * done with atomic_swap(1, dev->tbusy), but set_bit() works as well. - */ - if(test_and_set_bit(0, (void*)&dev->tbusy) != 0) - { - printk("%s: Transmitter access conflict.\n", dev->name); - return (1); - } - - if(tp->QueueSkb == 0) - return (1); /* Return with tbusy set: queue full */ - - tp->QueueSkb--; - skb_queue_tail(&tp->SendSkbQueue, skb); - sktr_hardware_send_packet(dev, tp); - if(tp->QueueSkb > 0) - dev->tbusy = 0; - - return (0); -} - -/* - * Move frames from internal skb queue into adapter tx queue - */ -static void sktr_hardware_send_packet(struct net_device *dev, struct net_local* tp) -{ - TPL *tpl; - short length; - unsigned char *buf, *newbuf; - struct sk_buff *skb; - int i; - - for(;;) - { - /* Try to get a free TPL from the chain. - * - * NOTE: We *must* always leave one unused TPL in the chain, - * because otherwise the adapter might send frames twice. - */ - if(tp->TplFree->NextTPLPtr->BusyFlag) /* No free TPL */ - { - printk(KERN_INFO "%s: No free TPL\n", dev->name); - return; - } - - /* Send first buffer from queue */ - skb = skb_dequeue(&tp->SendSkbQueue); - if(skb == NULL) - return; - - tp->QueueSkb++; - /* Is buffer reachable for Busmaster-DMA? */ - if(tp->DeviceType == SK_ISA && - virt_to_bus((void*)(((long) skb->data) + skb->len)) - > ISA_MAX_ADDRESS) - { - /* Copy frame to local buffer */ - i = tp->TplFree->TPLIndex; - length = skb->len; - buf = tp->LocalTxBuffers[i]; - memcpy(buf, skb->data, length); - newbuf = buf; - } - else - { - /* Send direct from skb->data */ - length = skb->len; - newbuf = skb->data; - } - - /* Source address in packet? */ - sktr_chk_src_addr(newbuf, dev->dev_addr); - - tp->LastSendTime = jiffies; - tpl = tp->TplFree; /* Get the "free" TPL */ - tpl->BusyFlag = 1; /* Mark TPL as busy */ - tp->TplFree = tpl->NextTPLPtr; - - /* Save the skb for delayed return of skb to system */ - tpl->Skb = skb; - tpl->FragList[0].DataCount = (unsigned short) SWAPB(length); - tpl->FragList[0].DataAddr = htonl(virt_to_bus(newbuf)); - - /* Write the data length in the transmit list. */ - tpl->FrameSize = (unsigned short) SWAPB(length); - tpl->MData = newbuf; - - /* Transmit the frame and set the status values. */ - sktr_write_tpl_status(tpl, TX_VALID | TX_START_FRAME - | TX_END_FRAME | TX_PASS_SRC_ADDR - | TX_FRAME_IRQ); - - /* Let adapter send the frame. */ - sktr_exec_sifcmd(dev, CMD_TX_VALID); - } - - return; -} - -/* - * Write the given value to the 'Status' field of the specified TPL. - * NOTE: This function should be used whenever the status of any TPL must be - * modified by the driver, because the compiler may otherwise change the - * order of instructions such that writing the TPL status may be executed at - * an undesireable time. When this function is used, the status is always - * written when the function is called. - */ -static void sktr_write_tpl_status(TPL *tpl, unsigned int Status) -{ - tpl->Status = Status; -} - -static void sktr_chk_src_addr(unsigned char *frame, unsigned char *hw_addr) -{ - unsigned char SRBit; - - if((((unsigned long)frame[8]) & ~0x80) != 0) /* Compare 4 bytes */ - return; - if((unsigned short)frame[12] != 0) /* Compare 2 bytes */ - return; - - SRBit = frame[8] & 0x80; - memcpy(&frame[8], hw_addr, 6); - frame[8] |= SRBit; - - return; -} - -/* - * The timer routine: Check if adapter still open and working, reopen if not. - */ -static void sktr_timer_chk(unsigned long data) -{ - struct net_device *dev = (struct net_device*)data; - struct net_local *tp = (struct net_local*)dev->priv; - - if(tp->HaltInProgress) - return; - - sktr_chk_outstanding_cmds(dev); - if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) - && (tp->QueueSkb < MAX_TX_QUEUE || tp->TplFree != tp->TplBusy)) - { - /* Anything to send, but stalled to long */ - tp->LastSendTime = jiffies; - sktr_exec_cmd(dev, OC_CLOSE); /* Does reopen automatically */ - } - - tp->timer.expires = jiffies + 2*HZ; - add_timer(&tp->timer); - - if(tp->AdapterOpenFlag || tp->ReOpenInProgress) - return; - tp->ReOpenInProgress = 1; - sktr_open_adapter(dev); - - return; -} - -/* - * The typical workload of the driver: Handle the network interface interrupts. - */ -static void sktr_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - struct net_device *dev = dev_id; - struct net_local *tp; - int ioaddr; - unsigned short irq_type; - - if(dev == NULL) - { - printk("%s: irq %d for unknown device.\n", dev->name, irq); - return; - } - - dev->interrupt = 1; - - ioaddr = dev->base_addr; - tp = (struct net_local *)dev->priv; - - irq_type = inw(ioaddr + SIFSTS); - - while(irq_type & STS_SYSTEM_IRQ) - { - irq_type &= STS_IRQ_MASK; - - if(!sktr_chk_ssb(tp, irq_type)) - { - printk(KERN_INFO "%s: DATA LATE occurred\n", dev->name); - break; - } - - switch(irq_type) - { - case STS_IRQ_RECEIVE_STATUS: - sktr_reset_interrupt(dev); - sktr_rcv_status_irq(dev); - break; - - case STS_IRQ_TRANSMIT_STATUS: - /* Check if TRANSMIT.HALT command is complete */ - if(tp->ssb.Parm[0] & COMMAND_COMPLETE) - { - tp->TransmitCommandActive = 0; - tp->TransmitHaltScheduled = 0; - - /* Issue a new transmit command. */ - sktr_exec_cmd(dev, OC_TRANSMIT); - } - - sktr_reset_interrupt(dev); - sktr_tx_status_irq(dev); - break; - - case STS_IRQ_COMMAND_STATUS: - /* The SSB contains status of last command - * other than receive/transmit. - */ - sktr_cmd_status_irq(dev); - break; - - case STS_IRQ_SCB_CLEAR: - /* The SCB is free for another command. */ - tp->ScbInUse = 0; - sktr_chk_outstanding_cmds(dev); - break; - - case STS_IRQ_RING_STATUS: - sktr_ring_status_irq(dev); - break; - - case STS_IRQ_ADAPTER_CHECK: - sktr_chk_irq(dev); - break; - - default: - printk(KERN_INFO "Unknown Token Ring IRQ\n"); - break; - } - - /* Reset system interrupt if not already done. */ - if(irq_type != STS_IRQ_TRANSMIT_STATUS - && irq_type != STS_IRQ_RECEIVE_STATUS) - { - sktr_reset_interrupt(dev); - } - - irq_type = inw(ioaddr + SIFSTS); - } - - dev->interrupt = 0; - - return; -} - -/* - * Reset the INTERRUPT SYSTEM bit and issue SSB CLEAR command. - */ -static void sktr_reset_interrupt(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - SSB *ssb = &tp->ssb; - - /* - * [Workaround for "Data Late"] - * Set all fields of the SSB to well-defined values so we can - * check if the adapter has written the SSB. - */ - - ssb->STS = (unsigned short) -1; - ssb->Parm[0] = (unsigned short) -1; - ssb->Parm[1] = (unsigned short) -1; - ssb->Parm[2] = (unsigned short) -1; - - /* Free SSB by issuing SSB_CLEAR command after reading IRQ code - * and clear STS_SYSTEM_IRQ bit: enable adapter for further interrupts. - */ - sktr_exec_sifcmd(dev, CMD_SSB_CLEAR | CMD_CLEAR_SYSTEM_IRQ); - - return; -} - -/* - * Check if the SSB has actually been written by the adapter. - */ -static unsigned char sktr_chk_ssb(struct net_local *tp, unsigned short IrqType) -{ - SSB *ssb = &tp->ssb; /* The address of the SSB. */ - - /* C 0 1 2 INTERRUPT CODE - * - - - - -------------- - * 1 1 1 1 TRANSMIT STATUS - * 1 1 1 1 RECEIVE STATUS - * 1 ? ? 0 COMMAND STATUS - * 0 0 0 0 SCB CLEAR - * 1 1 0 0 RING STATUS - * 0 0 0 0 ADAPTER CHECK - * - * 0 = SSB field not affected by interrupt - * 1 = SSB field is affected by interrupt - * - * C = SSB ADDRESS +0: COMMAND - * 0 = SSB ADDRESS +2: STATUS 0 - * 1 = SSB ADDRESS +4: STATUS 1 - * 2 = SSB ADDRESS +6: STATUS 2 - */ - - /* Check if this interrupt does use the SSB. */ - - if(IrqType != STS_IRQ_TRANSMIT_STATUS - && IrqType != STS_IRQ_RECEIVE_STATUS - && IrqType != STS_IRQ_COMMAND_STATUS - && IrqType != STS_IRQ_RING_STATUS) - { - return (1); /* SSB not involved. */ - } - - /* Note: All fields of the SSB have been set to all ones (-1) after it - * has last been used by the software (see DriverIsr()). - * - * Check if the affected SSB fields are still unchanged. - */ - - if(ssb->STS == (unsigned short) -1) - return (0); /* Command field not yet available. */ - if(IrqType == STS_IRQ_COMMAND_STATUS) - return (1); /* Status fields not always affected. */ - if(ssb->Parm[0] == (unsigned short) -1) - return (0); /* Status 1 field not yet available. */ - if(IrqType == STS_IRQ_RING_STATUS) - return (1); /* Status 2 & 3 fields not affected. */ - - /* Note: At this point, the interrupt is either TRANSMIT or RECEIVE. */ - if(ssb->Parm[1] == (unsigned short) -1) - return (0); /* Status 2 field not yet available. */ - if(ssb->Parm[2] == (unsigned short) -1) - return (0); /* Status 3 field not yet available. */ - - return (1); /* All SSB fields have been written by the adapter. */ -} - -/* - * Evaluates the command results status in the SSB status field. - */ -static void sktr_cmd_status_irq(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned short ssb_cmd, ssb_parm_0; - unsigned short ssb_parm_1; - char *open_err = "Open error -"; - char *code_err = "Open code -"; - - /* Copy the ssb values to local variables */ - ssb_cmd = tp->ssb.STS; - ssb_parm_0 = tp->ssb.Parm[0]; - ssb_parm_1 = tp->ssb.Parm[1]; - - if(ssb_cmd == OPEN) - { - tp->Sleeping = 0; - if(!tp->ReOpenInProgress) - wake_up_interruptible(&tp->wait_for_tok_int); - - tp->OpenCommandIssued = 0; - tp->ScbInUse = 0; - - if((ssb_parm_0 & 0x00FF) == GOOD_COMPLETION) - { - /* Success, the adapter is open. */ - tp->LobeWireFaultLogged = 0; - tp->AdapterOpenFlag = 1; - tp->AdapterVirtOpenFlag = 1; - tp->TransmitCommandActive = 0; - sktr_exec_cmd(dev, OC_TRANSMIT); - sktr_exec_cmd(dev, OC_RECEIVE); - - if(tp->ReOpenInProgress) - tp->ReOpenInProgress = 0; - - return; - } - else /* The adapter did not open. */ - { - if(ssb_parm_0 & NODE_ADDR_ERROR) - printk(KERN_INFO "%s: Node address error\n", - dev->name); - if(ssb_parm_0 & LIST_SIZE_ERROR) - printk(KERN_INFO "%s: List size error\n", - dev->name); - if(ssb_parm_0 & BUF_SIZE_ERROR) - printk(KERN_INFO "%s: Buffer size error\n", - dev->name); - if(ssb_parm_0 & TX_BUF_COUNT_ERROR) - printk(KERN_INFO "%s: Tx buffer count error\n", - dev->name); - if(ssb_parm_0 & INVALID_OPEN_OPTION) - printk(KERN_INFO "%s: Invalid open option\n", - dev->name); - if(ssb_parm_0 & OPEN_ERROR) - { - /* Show the open phase. */ - switch(ssb_parm_0 & OPEN_PHASES_MASK) - { - case LOBE_MEDIA_TEST: - if(!tp->LobeWireFaultLogged) - { - tp->LobeWireFaultLogged = 1; - printk(KERN_INFO "%s: %s Lobe wire fault (check cable !).\n", dev->name, open_err); - } - tp->ReOpenInProgress = 1; - tp->AdapterOpenFlag = 0; - tp->AdapterVirtOpenFlag = 1; - sktr_open_adapter(dev); - return; - - case PHYSICAL_INSERTION: - printk(KERN_INFO "%s: %s Physical insertion.\n", dev->name, open_err); - break; - - case ADDRESS_VERIFICATION: - printk(KERN_INFO "%s: %s Address verification.\n", dev->name, open_err); - break; - - case PARTICIPATION_IN_RING_POLL: - printk(KERN_INFO "%s: %s Participation in ring poll.\n", dev->name, open_err); - break; - - case REQUEST_INITIALISATION: - printk(KERN_INFO "%s: %s Request initialisation.\n", dev->name, open_err); - break; - - case FULLDUPLEX_CHECK: - printk(KERN_INFO "%s: %s Full duplex check.\n", dev->name, open_err); - break; - - default: - printk(KERN_INFO "%s: %s Unknown open phase\n", dev->name, open_err); - break; - } - - /* Show the open errors. */ - switch(ssb_parm_0 & OPEN_ERROR_CODES_MASK) - { - case OPEN_FUNCTION_FAILURE: - printk(KERN_INFO "%s: %s OPEN_FUNCTION_FAILURE", dev->name, code_err); - tp->LastOpenStatus = - OPEN_FUNCTION_FAILURE; - break; - - case OPEN_SIGNAL_LOSS: - printk(KERN_INFO "%s: %s OPEN_SIGNAL_LOSS\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_SIGNAL_LOSS; - break; - - case OPEN_TIMEOUT: - printk(KERN_INFO "%s: %s OPEN_TIMEOUT\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_TIMEOUT; - break; - - case OPEN_RING_FAILURE: - printk(KERN_INFO "%s: %s OPEN_RING_FAILURE\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_RING_FAILURE; - break; - - case OPEN_RING_BEACONING: - printk(KERN_INFO "%s: %s OPEN_RING_BEACONING\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_RING_BEACONING; - break; - - case OPEN_DUPLICATE_NODEADDR: - printk(KERN_INFO "%s: %s OPEN_DUPLICATE_NODEADDR\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_DUPLICATE_NODEADDR; - break; - - case OPEN_REQUEST_INIT: - printk(KERN_INFO "%s: %s OPEN_REQUEST_INIT\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_REQUEST_INIT; - break; - - case OPEN_REMOVE_RECEIVED: - printk(KERN_INFO "%s: %s OPEN_REMOVE_RECEIVED", dev->name, code_err); - tp->LastOpenStatus = - OPEN_REMOVE_RECEIVED; - break; - - case OPEN_FULLDUPLEX_SET: - printk(KERN_INFO "%s: %s OPEN_FULLDUPLEX_SET\n", dev->name, code_err); - tp->LastOpenStatus = - OPEN_FULLDUPLEX_SET; - break; - - default: - printk(KERN_INFO "%s: %s Unknown open err code", dev->name, code_err); - tp->LastOpenStatus = - OPEN_FUNCTION_FAILURE; - break; - } - } - - tp->AdapterOpenFlag = 0; - tp->AdapterVirtOpenFlag = 0; - - return; - } - } - else - { - if(ssb_cmd != READ_ERROR_LOG) - return; - - /* Add values from the error log table to the MAC - * statistics counters and update the errorlogtable - * memory. - */ - tp->MacStat.line_errors += tp->errorlogtable.Line_Error; - tp->MacStat.burst_errors += tp->errorlogtable.Burst_Error; - tp->MacStat.A_C_errors += tp->errorlogtable.ARI_FCI_Error; - tp->MacStat.lost_frames += tp->errorlogtable.Lost_Frame_Error; - tp->MacStat.recv_congest_count += tp->errorlogtable.Rx_Congest_Error; - tp->MacStat.rx_errors += tp->errorlogtable.Rx_Congest_Error; - tp->MacStat.frame_copied_errors += tp->errorlogtable.Frame_Copied_Error; - tp->MacStat.token_errors += tp->errorlogtable.Token_Error; - tp->MacStat.dummy1 += tp->errorlogtable.DMA_Bus_Error; - tp->MacStat.dummy1 += tp->errorlogtable.DMA_Parity_Error; - tp->MacStat.abort_delimiters += tp->errorlogtable.AbortDelimeters; - tp->MacStat.frequency_errors += tp->errorlogtable.Frequency_Error; - tp->MacStat.internal_errors += tp->errorlogtable.Internal_Error; - } - - return; -} - -/* - * The inverse routine to sktr_open(). - */ -static int sktr_close(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - dev->tbusy = 1; - dev->start = 0; - - del_timer(&tp->timer); - - /* Flush the Tx and disable Rx here. */ - - tp->HaltInProgress = 1; - sktr_exec_cmd(dev, OC_CLOSE); - tp->timer.expires = jiffies + 1*HZ; - tp->timer.function = sktr_timer_end_wait; - tp->timer.data = (unsigned long)dev; - add_timer(&tp->timer); - - sktr_enable_interrupts(dev); - - tp->Sleeping = 1; - interruptible_sleep_on(&tp->wait_for_tok_int); - tp->TransmitCommandActive = 0; - - del_timer(&tp->timer); - sktr_disable_interrupts(dev); - - if(dev->dma > 0) - { - unsigned long flags=claim_dma_lock(); - disable_dma(dev->dma); - release_dma_lock(flags); - } - - outw(0xFF00, dev->base_addr + SIFCMD); - if(dev->dma > 0) - outb(0xff, dev->base_addr + POSREG); - -#ifdef MODULE - MOD_DEC_USE_COUNT; -#endif - - sktr_cancel_tx_queue(tp); - - return (0); -} - -/* - * Get the current statistics. This may be called with the card open - * or closed. - */ -static struct enet_statistics *sktr_get_stats(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - return ((struct enet_statistics *)&tp->MacStat); -} - -/* - * Set or clear the multicast filter for this adapter. - */ -static void sktr_set_multicast_list(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned int OpenOptions; - - OpenOptions = tp->ocpl.OPENOptions & - ~(PASS_ADAPTER_MAC_FRAMES - | PASS_ATTENTION_FRAMES - | PASS_BEACON_MAC_FRAMES - | COPY_ALL_MAC_FRAMES - | COPY_ALL_NON_MAC_FRAMES); - - tp->ocpl.FunctAddr = 0; - - if(dev->flags & IFF_PROMISC) - /* Enable promiscuous mode */ - OpenOptions |= COPY_ALL_NON_MAC_FRAMES | - COPY_ALL_MAC_FRAMES; - else - { - if(dev->flags & IFF_ALLMULTI) - { - /* Disable promiscuous mode, use normal mode. */ - tp->ocpl.FunctAddr = 0xFFFFFFFF; - - } - else - { - int i; - struct dev_mc_list *mclist = dev->mc_list; - for (i=0; i< dev->mc_count; i++) - { - ((char *)(&tp->ocpl.FunctAddr))[0] |= - mclist->dmi_addr[2]; - ((char *)(&tp->ocpl.FunctAddr))[1] |= - mclist->dmi_addr[3]; - ((char *)(&tp->ocpl.FunctAddr))[2] |= - mclist->dmi_addr[4]; - ((char *)(&tp->ocpl.FunctAddr))[3] |= - mclist->dmi_addr[5]; - mclist = mclist->next; - } - } - sktr_exec_cmd(dev, OC_SET_FUNCT_ADDR); - } - - tp->ocpl.OPENOptions = OpenOptions; - sktr_exec_cmd(dev, OC_MODIFY_OPEN_PARMS); - return; -} - -/* - * Wait for some time (microseconds) - * - * udelay() is a bit harsh, but using a looser timer causes - * the bring-up-diags to stall indefinitly. - * - */ - -static void sktr_wait(unsigned long time) -{ - udelay(time); - return; -} - -/* - * Write a command value to the SIFCMD register - */ -static void sktr_exec_sifcmd(struct net_device *dev, unsigned int WriteValue) -{ - int ioaddr = dev->base_addr; - unsigned short cmd; - unsigned short SifStsValue; - unsigned long loop_counter; - - WriteValue = ((WriteValue ^ CMD_SYSTEM_IRQ) | CMD_INTERRUPT_ADAPTER); - cmd = (unsigned short)WriteValue; - loop_counter = 0,5 * 800000; - do { - SifStsValue = inw(ioaddr + SIFSTS); - } while((SifStsValue & CMD_INTERRUPT_ADAPTER) && loop_counter--); - outw(cmd, ioaddr + SIFCMD); - - return; -} - -/* - * Processes adapter hardware reset, halts adapter and downloads firmware, - * clears the halt bit. - */ -static int sktr_reset_adapter(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned short *fw_ptr = (unsigned short *)&sktr_code; - unsigned short count, c; - int ioaddr = dev->base_addr; - - /* Hardware adapter reset */ - outw(ACL_ARESET, ioaddr + SIFACL); - sktr_wait(40); - - c = inw(ioaddr + SIFACL); - sktr_wait(20); - - if(dev->dma == 0) /* For PCI adapters */ - { - c &= ~(ACL_SPEED4 | ACL_SPEED16); /* Clear bits */ - if(tp->DataRate == SPEED_4) - c |= ACL_SPEED4; /* Set 4Mbps */ - else - c |= ACL_SPEED16; /* Set 16Mbps */ - } - - /* In case a command is pending - forget it */ - tp->ScbInUse = 0; - - c &= ~ACL_ARESET; /* Clear adapter reset bit */ - c |= ACL_CPHALT; /* Halt adapter CPU, allow download */ - c &= ~ACL_PSDMAEN; /* Clear pseudo dma bit */ - outw(c, ioaddr + SIFACL); - sktr_wait(40); - - /* Download firmware via DIO interface: */ - do { - /* Download first address part */ - outw(*fw_ptr, ioaddr + SIFADX); - fw_ptr++; - - /* Download second address part */ - outw(*fw_ptr, ioaddr + SIFADD); - fw_ptr++; - - if((count = *fw_ptr) != 0) /* Load loop counter */ - { - fw_ptr++; /* Download block data */ - for(; count > 0; count--) - { - outw(*fw_ptr, ioaddr + SIFINC); - fw_ptr++; - } - } - else /* Stop, if last block downloaded */ - { - c = inw(ioaddr + SIFACL); - c &= (~ACL_CPHALT | ACL_SINTEN); - - /* Clear CPHALT and start BUD */ - outw(c, ioaddr + SIFACL); - return (1); - } - } while(count == 0); - - return (-1); -} - -/* - * Starts bring up diagnostics of token ring adapter and evaluates - * diagnostic results. - */ -static int sktr_bringup_diags(struct net_device *dev) -{ - int loop_cnt, retry_cnt; - unsigned short Status; - int ioaddr = dev->base_addr; - - sktr_wait(HALF_SECOND); - sktr_exec_sifcmd(dev, EXEC_SOFT_RESET); - sktr_wait(HALF_SECOND); - - retry_cnt = BUD_MAX_RETRIES; /* maximal number of retrys */ - - do { - retry_cnt--; - if(sktr_debug > 3) - printk(KERN_INFO "BUD-Status: \n"); - loop_cnt = BUD_MAX_LOOPCNT; /* maximum: three seconds*/ - do { /* Inspect BUD results */ - loop_cnt--; - sktr_wait(HALF_SECOND); - Status = inw(ioaddr + SIFSTS); - Status &= STS_MASK; - - if(sktr_debug > 3) - printk(KERN_INFO " %04X \n", Status); - /* BUD successfully completed */ - if(Status == STS_INITIALIZE) - return (1); - /* Unrecoverable hardware error, BUD not completed? */ - } while((loop_cnt > 0) && ((Status & (STS_ERROR | STS_TEST)) - != (STS_ERROR | STS_TEST))); - - /* Error preventing completion of BUD */ - if(retry_cnt > 0) - { - printk(KERN_INFO "%s: Adapter Software Reset.\n", - dev->name); - sktr_exec_sifcmd(dev, EXEC_SOFT_RESET); - sktr_wait(HALF_SECOND); - } - } while(retry_cnt > 0); - - Status = inw(ioaddr + SIFSTS); - Status &= STS_ERROR_MASK; /* Hardware error occurred! */ - - printk(KERN_INFO "%s: Bring Up Diagnostics Error (%04X) occurred\n", - dev->name, Status); - - return (-1); -} - -/* - * Copy initialisation data to adapter memory, beginning at address - * 1:0A00; Starting DMA test and evaluating result bits. - */ -static int sktr_init_adapter(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - const unsigned char SCB_Test[6] = {0x00, 0x00, 0xC1, 0xE2, 0xD4, 0x8B}; - const unsigned char SSB_Test[8] = {0xFF, 0xFF, 0xD1, 0xD7, - 0xC5, 0xD9, 0xC3, 0xD4}; - void *ptr = (void *)&tp->ipb; - unsigned short *ipb_ptr = (unsigned short *)ptr; - unsigned char *cb_ptr = (unsigned char *) &tp->scb; - unsigned char *sb_ptr = (unsigned char *) &tp->ssb; - unsigned short Status; - int i, loop_cnt, retry_cnt; - int ioaddr = dev->base_addr; - - /* Normalize: byte order low/high, word order high/low! (only IPB!) */ - tp->ipb.SCB_Addr = SWAPW(virt_to_bus(&tp->scb)); - tp->ipb.SSB_Addr = SWAPW(virt_to_bus(&tp->ssb)); - - /* Maximum: three initialization retries */ - retry_cnt = INIT_MAX_RETRIES; - - do { - retry_cnt--; - - /* Transfer initialization block */ - outw(0x0001, ioaddr + SIFADX); - - /* To address 0001:0A00 of adapter RAM */ - outw(0x0A00, ioaddr + SIFADD); - - /* Write 11 words to adapter RAM */ - for(i = 0; i < 11; i++) - outw(ipb_ptr[i], ioaddr + SIFINC); - - /* Execute SCB adapter command */ - sktr_exec_sifcmd(dev, CMD_EXECUTE); - - loop_cnt = INIT_MAX_LOOPCNT; /* Maximum: 11 seconds */ - - /* While remaining retries, no error and not completed */ - do { - Status = 0; - loop_cnt--; - sktr_wait(HALF_SECOND); - - /* Mask interesting status bits */ - Status = inw(ioaddr + SIFSTS); - Status &= STS_MASK; - } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) - && ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); - - if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) - { - /* Initialization completed without error */ - i = 0; - do { /* Test if contents of SCB is valid */ - if(SCB_Test[i] != *(cb_ptr + i)) - /* DMA data error: wrong data in SCB */ - return (-1); - i++; - } while(i < 6); - - i = 0; - do { /* Test if contents of SSB is valid */ - if(SSB_Test[i] != *(sb_ptr + i)) - /* DMA data error: wrong data in SSB */ - return (-1); - i++; - } while (i < 8); - - return (1); /* Adapter successfully initialized */ - } - else - { - if((Status & STS_ERROR) != 0) - { - /* Initialization error occurred */ - Status = inw(ioaddr + SIFSTS); - Status &= STS_ERROR_MASK; - /* ShowInitialisationErrorCode(Status); */ - return (-1); /* Unrecoverable error */ - } - else - { - if(retry_cnt > 0) - { - /* Reset adapter and try init again */ - sktr_exec_sifcmd(dev, EXEC_SOFT_RESET); - sktr_wait(HALF_SECOND); - } - } - } - } while(retry_cnt > 0); - - return (-1); -} - -/* - * Check for outstanding commands in command queue and tries to execute - * command immediately. Corresponding command flag in command queue is cleared. - */ -static void sktr_chk_outstanding_cmds(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned long Addr = 0; - unsigned char i = 0; - - if(tp->CMDqueue == 0) - return; /* No command execution */ - - /* If SCB in use: no command */ - if(tp->ScbInUse == 1) - return; - - /* Check if adapter is opened, avoiding COMMAND_REJECT - * interrupt by the adapter! - */ - if(tp->AdapterOpenFlag == 0) - { - if(tp->CMDqueue & OC_OPEN) - { - /* Execute OPEN command */ - tp->CMDqueue ^= OC_OPEN; - - /* Copy the 18 bytes of the product ID */ - while((AdapterName[i] != '\0') && (i < PROD_ID_SIZE)) - { - tp->ProductID[i] = AdapterName[i]; - i++; - } - - Addr = htonl(virt_to_bus(&tp->ocpl)); - tp->scb.Parm[0] = LOWORD(Addr); - tp->scb.Parm[1] = HIWORD(Addr); - tp->scb.CMD = OPEN; - } - else - /* No OPEN command queued, but adapter closed. Note: - * We'll try to re-open the adapter in DriverPoll() - */ - return; /* No adapter command issued */ - } - else - { - /* Adapter is open; evaluate command queue: try to execute - * outstanding commands (depending on priority!) CLOSE - * command queued - */ - if(tp->CMDqueue & OC_CLOSE) - { - tp->CMDqueue ^= OC_CLOSE; - tp->AdapterOpenFlag = 0; - tp->scb.Parm[0] = 0; /* Parm[0], Parm[1] are ignored */ - tp->scb.Parm[1] = 0; /* but should be set to zero! */ - tp->scb.CMD = CLOSE; - if(!tp->HaltInProgress) - tp->CMDqueue |= OC_OPEN; /* re-open adapter */ - else - tp->CMDqueue = 0; /* no more commands */ - } - else - { - if(tp->CMDqueue & OC_RECEIVE) - { - tp->CMDqueue ^= OC_RECEIVE; - Addr = htonl(virt_to_bus(tp->RplHead)); - tp->scb.Parm[0] = LOWORD(Addr); - tp->scb.Parm[1] = HIWORD(Addr); - tp->scb.CMD = RECEIVE; - } - else - { - if(tp->CMDqueue & OC_TRANSMIT_HALT) - { - /* NOTE: TRANSMIT.HALT must be checked - * before TRANSMIT. - */ - tp->CMDqueue ^= OC_TRANSMIT_HALT; - tp->scb.CMD = TRANSMIT_HALT; - - /* Parm[0] and Parm[1] are ignored - * but should be set to zero! - */ - tp->scb.Parm[0] = 0; - tp->scb.Parm[1] = 0; - } - else - { - if(tp->CMDqueue & OC_TRANSMIT) - { - /* NOTE: TRANSMIT must be - * checked after TRANSMIT.HALT - */ - if(tp->TransmitCommandActive) - { - if(!tp->TransmitHaltScheduled) - { - tp->TransmitHaltScheduled = 1; - sktr_exec_cmd(dev, OC_TRANSMIT_HALT) ; - } - tp->TransmitCommandActive = 0; - return; - } - - tp->CMDqueue ^= OC_TRANSMIT; - sktr_cancel_tx_queue(tp); - Addr = htonl(virt_to_bus(tp->TplBusy)); - tp->scb.Parm[0] = LOWORD(Addr); - tp->scb.Parm[1] = HIWORD(Addr); - tp->scb.CMD = TRANSMIT; - tp->TransmitCommandActive = 1; - } - else - { - if(tp->CMDqueue & OC_MODIFY_OPEN_PARMS) - { - tp->CMDqueue ^= OC_MODIFY_OPEN_PARMS; - tp->scb.Parm[0] = tp->ocpl.OPENOptions; /* new OPEN options*/ - tp->scb.Parm[0] |= ENABLE_FULL_DUPLEX_SELECTION; - tp->scb.Parm[1] = 0; /* is ignored but should be zero */ - tp->scb.CMD = MODIFY_OPEN_PARMS; - } - else - { - if(tp->CMDqueue & OC_SET_FUNCT_ADDR) - { - tp->CMDqueue ^= OC_SET_FUNCT_ADDR; - tp->scb.Parm[0] = LOWORD(tp->ocpl.FunctAddr); - tp->scb.Parm[1] = HIWORD(tp->ocpl.FunctAddr); - tp->scb.CMD = SET_FUNCT_ADDR; - } - else - { - if(tp->CMDqueue & OC_SET_GROUP_ADDR) - { - tp->CMDqueue ^= OC_SET_GROUP_ADDR; - tp->scb.Parm[0] = LOWORD(tp->ocpl.GroupAddr); - tp->scb.Parm[1] = HIWORD(tp->ocpl.GroupAddr); - tp->scb.CMD = SET_GROUP_ADDR; - } - else - { - if(tp->CMDqueue & OC_READ_ERROR_LOG) - { - tp->CMDqueue ^= OC_READ_ERROR_LOG; - Addr = htonl(virt_to_bus(&tp->errorlogtable)); - tp->scb.Parm[0] = LOWORD(Addr); - tp->scb.Parm[1] = HIWORD(Addr); - tp->scb.CMD = READ_ERROR_LOG; - } - else - { - printk(KERN_WARNING "CheckForOutstandingCommand: unknown Command\n"); - tp->CMDqueue = 0; - return; - } - } - } - } - } - } - } - } - } - - tp->ScbInUse = 1; /* Set semaphore: SCB in use. */ - - /* Execute SCB and generate IRQ when done. */ - sktr_exec_sifcmd(dev, CMD_EXECUTE | CMD_SCB_REQUEST); - - return; -} - -/* - * IRQ conditions: signal loss on the ring, transmit or receive of beacon - * frames (disabled if bit 1 of OPEN option is set); report error MAC - * frame transmit (disabled if bit 2 of OPEN option is set); open or short - * cirquit fault on the lobe is detected; remove MAC frame received; - * error counter overflow (255); opened adapter is the only station in ring. - * After some of the IRQs the adapter is closed! - */ -static void sktr_ring_status_irq(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - - tp->CurrentRingStatus = SWAPB(tp->ssb.Parm[0]); - - /* First: fill up statistics */ - if(tp->ssb.Parm[0] & SIGNAL_LOSS) - { - printk(KERN_INFO "%s: Signal Loss\n", dev->name); - tp->MacStat.line_errors++; - } - - /* Adapter is closed, but initialized */ - if(tp->ssb.Parm[0] & LOBE_WIRE_FAULT) - { - printk(KERN_INFO "%s: Lobe Wire Fault, Reopen Adapter\n", - dev->name); - tp->MacStat.line_errors++; - } - - if(tp->ssb.Parm[0] & RING_RECOVERY) - printk(KERN_INFO "%s: Ring Recovery\n", dev->name); - - /* Counter overflow: read error log */ - if(tp->ssb.Parm[0] & COUNTER_OVERFLOW) - { - printk(KERN_INFO "%s: Counter Overflow\n", dev->name); - sktr_exec_cmd(dev, OC_READ_ERROR_LOG); - } - - /* Adapter is closed, but initialized */ - if(tp->ssb.Parm[0] & REMOVE_RECEIVED) - printk(KERN_INFO "%s: Remove Received, Reopen Adapter\n", - dev->name); - - /* Adapter is closed, but initialized */ - if(tp->ssb.Parm[0] & AUTO_REMOVAL_ERROR) - printk(KERN_INFO "%s: Auto Removal Error, Reopen Adapter\n", - dev->name); - - if(tp->ssb.Parm[0] & HARD_ERROR) - printk(KERN_INFO "%s: Hard Error\n", dev->name); - - if(tp->ssb.Parm[0] & SOFT_ERROR) - printk(KERN_INFO "%s: Soft Error\n", dev->name); - - if(tp->ssb.Parm[0] & TRANSMIT_BEACON) - printk(KERN_INFO "%s: Transmit Beacon\n", dev->name); - - if(tp->ssb.Parm[0] & SINGLE_STATION) - printk(KERN_INFO "%s: Single Station\n", dev->name); - - /* Check if adapter has been closed */ - if(tp->ssb.Parm[0] & ADAPTER_CLOSED) - { - printk(KERN_INFO "%s: Adapter closed (Reopening)," - "QueueSkb %d, CurrentRingStat %x\n", - dev->name, tp->QueueSkb, tp->CurrentRingStatus); - tp->AdapterOpenFlag = 0; - sktr_open_adapter(dev); - } - - return; -} - -/* - * Issued if adapter has encountered an unrecoverable hardware - * or software error. - */ -static void sktr_chk_irq(struct net_device *dev) -{ - int i; - unsigned short AdapterCheckBlock[4]; - unsigned short ioaddr = dev->base_addr; - struct net_local *tp = (struct net_local *)dev->priv; - - tp->AdapterOpenFlag = 0; /* Adapter closed now */ - - /* Page number of adapter memory */ - outw(0x0001, ioaddr + SIFADX); - /* Address offset */ - outw(CHECKADDR, ioaddr + SIFADR); - - /* Reading 8 byte adapter check block. */ - for(i = 0; i < 4; i++) - AdapterCheckBlock[i] = inw(ioaddr + SIFINC); - - if(sktr_debug > 3) - { - printk("%s: AdapterCheckBlock: ", dev->name); - for (i = 0; i < 4; i++) - printk("%04X", AdapterCheckBlock[i]); - printk("\n"); - } - - switch(AdapterCheckBlock[0]) - { - case DIO_PARITY: - printk(KERN_INFO "%s: DIO parity error\n", dev->name); - break; - - case DMA_READ_ABORT: - printk(KERN_INFO "%s DMA read operation aborted:\n", - dev->name); - switch (AdapterCheckBlock[1]) - { - case 0: - printk(KERN_INFO "Timeout\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - case 1: - printk(KERN_INFO "Parity error\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - case 2: - printk(KERN_INFO "Bus error\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - default: - printk(KERN_INFO "Unknown error.\n"); - break; - } - break; - - case DMA_WRITE_ABORT: - printk(KERN_INFO "%s: DMA write operation aborted: \n", - dev->name); - switch (AdapterCheckBlock[1]) - { - case 0: - printk(KERN_INFO "Timeout\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - case 1: - printk(KERN_INFO "Parity error\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - case 2: - printk(KERN_INFO "Bus error\n"); - printk(KERN_INFO "Address: %04X %04X\n", - AdapterCheckBlock[2], - AdapterCheckBlock[3]); - break; - - default: - printk(KERN_INFO "Unknown error.\n"); - break; - } - break; - - case ILLEGAL_OP_CODE: - printk("%s: Illegal operation code in firmware\n", - dev->name); - /* Parm[0-3]: adapter internal register R13-R15 */ - break; - - case PARITY_ERRORS: - printk("%s: Adapter internal bus parity error\n", - dev->name); - /* Parm[0-3]: adapter internal register R13-R15 */ - break; - - case RAM_DATA_ERROR: - printk("%s: RAM data error\n", dev->name); - /* Parm[0-1]: MSW/LSW address of RAM location. */ - break; - - case RAM_PARITY_ERROR: - printk("%s: RAM parity error\n", dev->name); - /* Parm[0-1]: MSW/LSW address of RAM location. */ - break; - - case RING_UNDERRUN: - printk("%s: Internal DMA underrun detected\n", - dev->name); - break; - - case INVALID_IRQ: - printk("%s: Unrecognized interrupt detected\n", - dev->name); - /* Parm[0-3]: adapter internal register R13-R15 */ - break; - - case INVALID_ERROR_IRQ: - printk("%s: Unrecognized error interrupt detected\n", - dev->name); - /* Parm[0-3]: adapter internal register R13-R15 */ - break; - - case INVALID_XOP: - printk("%s: Unrecognized XOP request detected\n", - dev->name); - /* Parm[0-3]: adapter internal register R13-R15 */ - break; - - default: - printk("%s: Unknown status", dev->name); - break; - } - - if(sktr_chipset_init(dev) == 1) - { - /* Restart of firmware successful */ - tp->AdapterOpenFlag = 1; - } - - return; -} - -/* - * Internal adapter pointer to RAM data are copied from adapter into - * host system. - */ -static void sktr_read_ptr(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned short adapterram; - - sktr_read_ram(dev, (unsigned char *)&tp->intptrs.BurnedInAddrPtr, - ADAPTER_INT_PTRS, 16); - sktr_read_ram(dev, (unsigned char *)&adapterram, - (unsigned short)SWAPB(tp->intptrs.AdapterRAMPtr), 2); - - printk(KERN_INFO "%s: Adapter RAM size: %d K\n", - dev->name, SWAPB(adapterram)); - - return; -} - -/* - * Reads a number of bytes from adapter to system memory. - */ -static void sktr_read_ram(struct net_device *dev, unsigned char *Data, - unsigned short Address, int Length) -{ - int i; - unsigned short old_sifadx, old_sifadr, InWord; - unsigned short ioaddr = dev->base_addr; - - /* Save the current values */ - old_sifadx = inw(ioaddr + SIFADX); - old_sifadr = inw(ioaddr + SIFADR); - - /* Page number of adapter memory */ - outw(0x0001, ioaddr + SIFADX); - /* Address offset in adapter RAM */ - outw(Address, ioaddr + SIFADR); - - /* Copy len byte from adapter memory to system data area. */ - i = 0; - for(;;) - { - InWord = inw(ioaddr + SIFINC); - - *(Data + i) = HIBYTE(InWord); /* Write first byte */ - if(++i == Length) /* All is done break */ - break; - - *(Data + i) = LOBYTE(InWord); /* Write second byte */ - if (++i == Length) /* All is done break */ - break; - } - - /* Restore original values */ - outw(old_sifadx, ioaddr + SIFADX); - outw(old_sifadr, ioaddr + SIFADR); - - return; -} - -/* - * Reads MAC address from adapter ROM. - */ -static void sktr_read_addr(struct net_device *dev, unsigned char *Address) -{ - int i, In; - unsigned short ioaddr = dev->base_addr; - - /* Address: 0000:0000 */ - outw(0, ioaddr + SIFADX); - outw(0, ioaddr + SIFADR); - - /* Read six byte MAC address data */ - for(i = 0; i < 6; i++) - { - In = inw(ioaddr + SIFINC); - *(Address + i) = (unsigned char)(In >> 8); - } - - return; -} - -/* - * Cancel all queued packets in the transmission queue. - */ -static void sktr_cancel_tx_queue(struct net_local* tp) -{ - TPL *tpl; - struct sk_buff *skb; - - /* - * NOTE: There must not be an active TRANSMIT command pending, when - * this function is called. - */ - if(tp->TransmitCommandActive) - return; - - for(;;) - { - tpl = tp->TplBusy; - if(!tpl->BusyFlag) - break; - /* "Remove" TPL from busy list. */ - tp->TplBusy = tpl->NextTPLPtr; - sktr_write_tpl_status(tpl, 0); /* Clear VALID bit */ - tpl->BusyFlag = 0; /* "free" TPL */ - - printk(KERN_INFO "Cancel tx (%08lXh).\n", (unsigned long)tpl); - - dev_kfree_skb(tpl->Skb); - } - - for(;;) - { - skb = skb_dequeue(&tp->SendSkbQueue); - if(skb == NULL) - break; - tp->QueueSkb++; - dev_kfree_skb(skb); - } - - return; -} - -/* - * This function is called whenever a transmit interrupt is generated by the - * adapter. For a command complete interrupt, it is checked if we have to - * issue a new transmit command or not. - */ -static void sktr_tx_status_irq(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned char HighByte, HighAc, LowAc; - TPL *tpl; - - /* NOTE: At this point the SSB from TRANSMIT STATUS is no longer - * available, because the CLEAR SSB command has already been issued. - * - * Process all complete transmissions. - */ - - for(;;) - { - tpl = tp->TplBusy; - if(!tpl->BusyFlag || (tpl->Status - & (TX_VALID | TX_FRAME_COMPLETE)) - != TX_FRAME_COMPLETE) - { - break; - } - - /* "Remove" TPL from busy list. */ - tp->TplBusy = tpl->NextTPLPtr ; - - if(sktr_debug > 3) - sktr_dump(tpl->MData, SWAPB(tpl->FrameSize)); - - /* Check the transmit status field only for directed frames*/ - if(DIRECTED_FRAME(tpl) && (tpl->Status & TX_ERROR) == 0) - { - HighByte = GET_TRANSMIT_STATUS_HIGH_BYTE(tpl->Status); - HighAc = GET_FRAME_STATUS_HIGH_AC(HighByte); - LowAc = GET_FRAME_STATUS_LOW_AC(HighByte); - - if((HighAc != LowAc) || (HighAc == AC_NOT_RECOGNIZED)) - { - printk(KERN_INFO "%s: (DA=%08lX not recognized)", - dev->name, - *(unsigned long *)&tpl->MData[2+2]); - } - else - { - if(sktr_debug > 3) - printk("%s: Directed frame tx'd\n", - dev->name); - } - } - else - { - if(!DIRECTED_FRAME(tpl)) - { - if(sktr_debug > 3) - printk("%s: Broadcast frame tx'd\n", - dev->name); - } - } - - tp->MacStat.tx_packets++; - dev_kfree_skb(tpl->Skb); - tpl->BusyFlag = 0; /* "free" TPL */ - } - - dev->tbusy = 0; - if(tp->QueueSkb < MAX_TX_QUEUE) - sktr_hardware_send_packet(dev, tp); - - return; -} - -/* - * Called if a frame receive interrupt is generated by the adapter. - * Check if the frame is valid and indicate it to system. - */ -static void sktr_rcv_status_irq(struct net_device *dev) -{ - struct net_local *tp = (struct net_local *)dev->priv; - unsigned char *ReceiveDataPtr; - struct sk_buff *skb; - unsigned int Length, Length2; - RPL *rpl; - RPL *SaveHead; - - /* NOTE: At this point the SSB from RECEIVE STATUS is no longer - * available, because the CLEAR SSB command has already been issued. - * - * Process all complete receives. - */ - - for(;;) - { - rpl = tp->RplHead; - if(rpl->Status & RX_VALID) - break; /* RPL still in use by adapter */ - - /* Forward RPLHead pointer to next list. */ - SaveHead = tp->RplHead; - tp->RplHead = rpl->NextRPLPtr; - - /* Get the frame size (Byte swap for Intel). - * Do this early (see workaround comment below) - */ - Length = (unsigned short)SWAPB(rpl->FrameSize); - - /* Check if the Frame_Start, Frame_End and - * Frame_Complete bits are set. - */ - if((rpl->Status & VALID_SINGLE_BUFFER_FRAME) - == VALID_SINGLE_BUFFER_FRAME) - { - ReceiveDataPtr = rpl->MData; - - /* Workaround for delayed write of FrameSize on ISA - * (FrameSize is false but valid-bit is reset) - * Frame size is set to zero when the RPL is freed. - * Length2 is there because there have also been - * cases where the FrameSize was partially written - */ - Length2 = (unsigned short)SWAPB(rpl->FrameSize); - - if(Length == 0 || Length != Length2) - { - tp->RplHead = SaveHead; - break; /* Return to sktr_interrupt */ - } - - /* Drop frames sent by myself */ - if(sktr_chk_frame(dev, rpl->MData)) - { - if(rpl->Skb != NULL) - dev_kfree_skb(rpl->Skb); - } - else - { - sktr_update_rcv_stats(tp,ReceiveDataPtr,Length); - - if(sktr_debug > 3) - printk("%s: Packet Length %04X (%d)\n", - dev->name, Length, Length); - - /* Indicate the received frame to system. - * The source routing padding is no more - * necessary with 2.2.x kernel. - * See: OpenOptions in sktr_init_opb() - */ - skb = rpl->Skb; - if(rpl->SkbStat == SKB_UNAVAILABLE) - { - /* Try again to allocate skb */ - skb = dev_alloc_skb(tp->MaxPacketSize); - if(skb == NULL) - { - /* Update Stats ?? */ - } - else - { - skb->dev = dev; - skb_put(skb, tp->MaxPacketSize); - rpl->SkbStat = SKB_DATA_COPY; - ReceiveDataPtr = rpl->MData; - } - } - - if(rpl->SkbStat == SKB_DATA_COPY - || rpl->SkbStat == SKB_DMA_DIRECT) - { - if(rpl->SkbStat == SKB_DATA_COPY) - { - memmove(skb->data, ReceiveDataPtr, Length); - } - - /* Deliver frame to system */ - rpl->Skb = NULL; - skb_trim(skb,Length); - skb->dev = dev; - skb->protocol = tr_type_trans(skb,dev); - netif_rx(skb); - } - } - } - else /* Invalid frame */ - { - if(rpl->Skb != NULL) - dev_kfree_skb(rpl->Skb); - - /* Skip list. */ - if(rpl->Status & RX_START_FRAME) - /* Frame start bit is set -> overflow. */ - tp->MacStat.rx_errors++; - } - - /* Allocate new skb for rpl */ - rpl->Skb = dev_alloc_skb(tp->MaxPacketSize); - - /* skb == NULL ? then use local buffer */ - if(rpl->Skb == NULL) - { - rpl->SkbStat = SKB_UNAVAILABLE; - rpl->FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[rpl->RPLIndex])); - rpl->MData = tp->LocalRxBuffers[rpl->RPLIndex]; - } - else /* skb != NULL */ - { - rpl->Skb->dev = dev; - skb_put(rpl->Skb, tp->MaxPacketSize); - - /* Data unreachable for DMA ? then use local buffer */ - if(tp->DeviceType == SK_ISA && - virt_to_bus(rpl->Skb->data) + tp->MaxPacketSize - > ISA_MAX_ADDRESS) - { - rpl->SkbStat = SKB_DATA_COPY; - rpl->FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[rpl->RPLIndex])); - rpl->MData = tp->LocalRxBuffers[rpl->RPLIndex]; - } - else - { - /* DMA directly in skb->data */ - rpl->SkbStat = SKB_DMA_DIRECT; - rpl->FragList[0].DataAddr = htonl(virt_to_bus(rpl->Skb->data)); - rpl->MData = rpl->Skb->data; - } - } - - rpl->FragList[0].DataCount = SWAPB(tp->MaxPacketSize); - rpl->FrameSize = 0; - - /* Pass the last RPL back to the adapter */ - tp->RplTail->FrameSize = 0; - - /* Reset the CSTAT field in the list. */ - sktr_write_rpl_status(tp->RplTail, RX_VALID | RX_FRAME_IRQ); - - /* Current RPL becomes last one in list. */ - tp->RplTail = tp->RplTail->NextRPLPtr; - - /* Inform adapter about RPL valid. */ - sktr_exec_sifcmd(dev, CMD_RX_VALID); - } - - return; -} - -/* - * This function should be used whenever the status of any RPL must be - * modified by the driver, because the compiler may otherwise change the - * order of instructions such that writing the RPL status may be executed - * at an undesireable time. When this function is used, the status is - * always written when the function is called. - */ -static void sktr_write_rpl_status(RPL *rpl, unsigned int Status) -{ - rpl->Status = Status; - - return; -} - -/* - * The function updates the statistic counters in mac->MacStat. - * It differtiates between directed and broadcast/multicast ( ==functional) - * frames. - */ -static void sktr_update_rcv_stats(struct net_local *tp, unsigned char DataPtr[], - unsigned int Length) -{ - tp->MacStat.rx_packets++; - - /* Test functional bit */ - if(DataPtr[2] & GROUP_BIT) - tp->MacStat.multicast++; - - return; -} - -/* - * Check if it is a frame of myself. Compare source address with my current - * address in reverse direction, and mask out the TR_RII. - */ -static unsigned char sktr_chk_frame(struct net_device *dev, unsigned char *Addr) -{ - int i; - - for(i = 5; i > 0; i--) - { - if(Addr[8 + i] != dev->dev_addr[i]) - return (0); - } - - /* Mask out RIF bit. */ - if((Addr[8] & ~TR_RII) != (unsigned char)(dev->dev_addr[0])) - return (0); - - return (1); /* It is my frame. */ -} - -/* - * Dump Packet (data) - */ -static void sktr_dump(unsigned char *Data, int length) -{ - int i, j; - - for (i = 0, j = 0; i < length / 8; i++, j += 8) - { - printk(KERN_DEBUG "%02x %02x %02x %02x %02x %02x %02x %02x\n", - Data[j+0],Data[j+1],Data[j+2],Data[j+3], - Data[j+4],Data[j+5],Data[j+6],Data[j+7]); - } - - return; -} - -#ifdef MODULE - -static struct net_device* dev_sktr[SKTR_MAX_ADAPTERS]; -static int io[SKTR_MAX_ADAPTERS] = { 0, 0 }; -static int irq[SKTR_MAX_ADAPTERS] = { 0, 0 }; -static int mem[SKTR_MAX_ADAPTERS] = { 0, 0 }; - -MODULE_PARM(io, "1-" __MODULE_STRING(SKTR_MAX_ADAPTERS) "i"); -MODULE_PARM(irq, "1-" __MODULE_STRING(SKTR_MAX_ADAPTERS) "i"); -MODULE_PARM(mem, "1-" __MODULE_STRING(SKTR_MAX_ADAPTERS) "i"); - -int init_module(void) -{ - int i; - - for(i = 0; i < SKTR_MAX_ADAPTERS; i++) - { - irq[i] = 0; - mem[i] = 0; - dev_sktr[i] = NULL; - dev_sktr[i] = init_trdev(dev_sktr[i], 0); - if(dev_sktr[i] == NULL) - return (-ENOMEM); - - dev_sktr[i]->base_addr = io[i]; - dev_sktr[i]->irq = irq[i]; - dev_sktr[i]->mem_start = mem[i]; - dev_sktr[i]->init = &sktr_probe; - - if(register_trdev(dev_sktr[i]) != 0) - { - kfree_s(dev_sktr[i], sizeof(struct net_device)); - dev_sktr[i] = NULL; - if(i == 0) - { - printk("sktr: register_trdev() returned non-zero.\n"); - return (-EIO); - } - else - return (0); - } - } - - return (0); -} - -void cleanup_module(void) -{ - int i; - - for(i = 0; i < SKTR_MAX_ADAPTERS; i++) - { - if(dev_sktr[i]) - { - unregister_trdev(dev_sktr[i]); - release_region(dev_sktr[i]->base_addr, SKTR_IO_EXTENT); - if(dev_sktr[i]->irq) - free_irq(dev_sktr[i]->irq, dev_sktr[i]); - if(dev_sktr[i]->dma > 0) - free_dma(dev_sktr[i]->dma); - if(dev_sktr[i]->priv) - kfree_s(dev_sktr[i]->priv, sizeof(struct net_local)); - kfree_s(dev_sktr[i], sizeof(struct net_device)); - dev_sktr[i] = NULL; - } - } -} -#endif /* MODULE */ diff --git a/drivers/net/tokenring/sktr.h b/drivers/net/tokenring/sktr.h index 90b5c382f..e69de29bb 100644 --- a/drivers/net/tokenring/sktr.h +++ b/drivers/net/tokenring/sktr.h @@ -1,1103 +0,0 @@ -/* sktr.h: SysKonnect TokenRing driver for Linux - * - * Authors: - * - Christoph Goos <cgoos@syskonnect.de> - */ - -#ifndef __LINUX_SKTR_H -#define __LINUX_SKTR_H - -#ifdef __KERNEL__ - -#define SKTR_MAX_ADAPTERS 7 - -#define SEND_TIMEOUT 10*HZ - -#define TR_RCF_LONGEST_FRAME_MASK 0x0070 -#define TR_RCF_FRAME4K 0x0030 - -#define SK_ISA 0 -#define SK_PCI 1 - -/*------------------------------------------------------------------*/ -/* Bit order for adapter communication with DMA */ -/* -------------------------------------------------------------- */ -/* Bit 8 | 9| 10| 11|| 12| 13| 14| 15|| 0| 1| 2| 3|| 4| 5| 6| 7| */ -/* -------------------------------------------------------------- */ -/* The bytes in a word must be byte swapped. Also, if a double */ -/* word is used for storage, then the words, as well as the bytes, */ -/* must be swapped. */ -/* Bit order for adapter communication with DIO */ -/* -------------------------------------------------------------- */ -/* Bit 0 | 1| 2| 3|| 4| 5| 6| 7|| 8| 9| 10| 11|| 12| 13| 14| 15| */ -/* -------------------------------------------------------------- */ -/*------------------------------------------------------------------*/ - -/* Swap bytes of a word. */ -#define SWAPB(x) (((unsigned short)((x) << 8)) | ((unsigned short)((x) >> 8))) - -/* Swap words of a long. */ -#define SWAPW(x) (((x) << 16) | ((x) >> 16)) - -/* Get the low byte of a word. */ -#define LOBYTE(w) ((unsigned char)(w)) - -/* Get the high byte of a word. */ -#define HIBYTE(w) ((unsigned char)((unsigned short)(w) >> 8)) - -/* Get the low word of a long. */ -#define LOWORD(l) ((unsigned short)(l)) - -/* Get the high word of a long. */ -#define HIWORD(l) ((unsigned short)((unsigned long)(l) >> 16)) - - - -/* Token ring adapter I/O addresses for normal mode. */ -#define SIFDAT 0L /* SIF/DMA data. */ -#define SIFINC 2L /* IO Word data with auto increment. */ -#define SIFINH 3L /* IO Byte data with auto increment. */ -#define SIFADR 4L /* SIF/DMA Address. */ -#define SIFCMD 6L /* SIF Command. */ -#define SIFSTS 6L /* SIF Status. */ -#define SIFACL 8L /* SIF Adapter Control Register. */ -#define SIFADD 10L /* SIF/DMA Address. */ -#define SIFADX 12L -#define DMALEN 14L /* SIF DMA length. */ -#define POSREG 16L /* Adapter Program Option Select (POS) - * Register: base IO address + 16 byte. - */ -#define POSREG_2 24L /* only for TR4/16+ adapter - * base IO address + 24 byte. - */ - - -/* SIFCMD command codes (high-low) */ -#define CMD_INTERRUPT_ADAPTER 0x8000 /* Cause internal adapter interrupt */ -#define CMD_ADAPTER_RESET 0x4000 /* Hardware reset of adapter */ -#define CMD_SSB_CLEAR 0x2000 /* Acknowledge to adapter to - * system interrupts. - */ -#define CMD_EXECUTE 0x1000 /* Execute SCB command */ -#define CMD_SCB_REQUEST 0x0800 /* Request adapter to interrupt - * system when SCB is available for - * another command. - */ -#define CMD_RX_CONTINUE 0x0400 /* Continue receive after odd pointer - * stop. (odd pointer receive method) - */ -#define CMD_RX_VALID 0x0200 /* Now actual RPL is valid. */ -#define CMD_TX_VALID 0x0100 /* Now actual TPL is valid. (valid - * bit receive/transmit method) - */ -#define CMD_SYSTEM_IRQ 0x0080 /* Adapter-to-attached-system - * interrupt is reset. - */ -#define CMD_CLEAR_SYSTEM_IRQ 0x0080 /* Clear SYSTEM_INTERRUPT bit. - * (write: 1=ignore, 0=reset) - */ -#define EXEC_SOFT_RESET 0xFF00 /* adapter soft reset. (restart - * adapter after hardware reset) - */ - - -/* ACL commands (high-low) */ -#define ACL_SWHLDA 0x0800 /* Software hold acknowledge. */ -#define ACL_SWDDIR 0x0400 /* Data transfer direction. */ -#define ACL_SWHRQ 0x0200 /* Pseudo DMA operation. */ -#define ACL_PSDMAEN 0x0100 /* Enable pseudo system DMA. */ -#define ACL_ARESET 0x0080 /* Adapter hardware reset command. - * (held in reset condition as - * long as bit is set) - */ -#define ACL_CPHALT 0x0040 /* Communication processor halt. - * (can only be set while ACL_ARESET - * bit is set; prevents adapter - * processor from executing code while - * downloading firmware) - */ -#define ACL_BOOT 0x0020 -#define ACL_SINTEN 0x0008 /* System interrupt enable/disable - * (1/0): can be written if ACL_ARESET - * is zero. - */ -#define ACL_SPEED4 0x0003 -#define ACL_SPEED16 0x0001 -#define PS_DMA_MASK (ACL_SWHRQ | ACL_PSDMAEN) - - -/* SIFSTS register return codes (high-low) */ -#define STS_SYSTEM_IRQ 0x0080 /* Adapter-to-attached-system - * interrupt is valid. - */ -#define STS_INITIALIZE 0x0040 /* INITIALIZE status. (ready to - * initialize) - */ -#define STS_TEST 0x0020 /* TEST status. (BUD not completed) */ -#define STS_ERROR 0x0010 /* ERROR status. (unrecoverable - * HW error occurred) - */ -#define STS_MASK 0x00F0 /* Mask interesting status bits. */ -#define STS_ERROR_MASK 0x000F /* Get Error Code by masking the - * interrupt code bits. - */ -#define ADAPTER_INT_PTRS 0x0A00 /* Address offset of adapter internal - * pointers 01:0a00 (high-low) have to - * be read after init and before open. - */ - - -/* Interrupt Codes (only MAC IRQs) */ -#define STS_IRQ_ADAPTER_CHECK 0x0000 /* unrecoverable hardware or - * software error. - */ -#define STS_IRQ_RING_STATUS 0x0004 /* SSB is updated with ring status. */ -#define STS_IRQ_SCB_CLEAR 0x0006 /* SCB clear, following an - * SCB_REQUEST IRQ. - */ -#define STS_IRQ_COMMAND_STATUS 0x0008 /* SSB is updated with command - * status. - */ -#define STS_IRQ_RECEIVE_STATUS 0x000A /* SSB is updated with receive - * status. - */ -#define STS_IRQ_TRANSMIT_STATUS 0x000C /* SSB is updated with transmit - * status - */ -#define STS_IRQ_MASK 0x000F /* = STS_ERROR_MASK. */ - - -/* TRANSMIT_STATUS completion code: (SSB.Parm[0]) */ -#define COMMAND_COMPLETE 0x0080 /* TRANSMIT command completed - * (avoid this!) issue another transmit - * to send additional frames. - */ -#define FRAME_COMPLETE 0x0040 /* Frame has been transmitted; - * INTERRUPT_FRAME bit was set in the - * CSTAT request; indication of possibly - * more than one frame transmissions! - * SSB.Parm[0-1]: 32 bit pointer to - * TPL of last frame. - */ -#define LIST_ERROR 0x0020 /* Error in one of the TPLs that - * compose the frame; TRANSMIT - * terminated; Parm[1-2]: 32 bit pointer - * to TPL which starts the error - * frame; error details in bits 8-13. - * (14?) - */ -#define FRAME_SIZE_ERROR 0x8000 /* FRAME_SIZE does not equal the sum of - * the valid DATA_COUNT fields; - * FRAME_SIZE less than header plus - * information field. (15 bytes + - * routing field) Or if FRAME_SIZE - * was specified as zero in one list. - */ -#define TX_THRESHOLD 0x4000 /* FRAME_SIZE greater than (BUFFER_SIZE - * - 9) * TX_BUF_MAX. - */ -#define ODD_ADDRESS 0x2000 /* Odd forward pointer value is - * read on a list without END_FRAME - * indication. - */ -#define FRAME_ERROR 0x1000 /* START_FRAME bit is (not) anticipated, - * but (not) set. - */ -#define ACCESS_PRIORITY_ERROR 0x0800 /* Access priority requested has not - * been allowed. - */ -#define UNENABLED_MAC_FRAME 0x0400 /* MAC frame has source class of zero - * or MAC frame PCF ATTN field is - * greater than one. - */ -#define ILLEGAL_FRAME_FORMAT 0x0200 /* Bit 0 or FC field was set to one. */ - - -/* - * Since we need to support some functions even if the adapter is in a - * CLOSED state, we have a (pseudo-) command queue which holds commands - * that are outstandig to be executed. - * - * Each time a command completes, an interrupt occurs and the next - * command is executed. The command queue is actually a simple word with - * a bit for each outstandig command. Therefore the commands will not be - * executed in the order they have been queued. - * - * The following defines the command code bits and the command queue: - */ -#define OC_OPEN 0x0001 /* OPEN command */ -#define OC_TRANSMIT 0x0002 /* TRANSMIT command */ -#define OC_TRANSMIT_HALT 0x0004 /* TRANSMIT_HALT command */ -#define OC_RECEIVE 0x0008 /* RECEIVE command */ -#define OC_CLOSE 0x0010 /* CLOSE command */ -#define OC_SET_GROUP_ADDR 0x0020 /* SET_GROUP_ADDR command */ -#define OC_SET_FUNCT_ADDR 0x0040 /* SET_FUNCT_ADDR command */ -#define OC_READ_ERROR_LOG 0x0080 /* READ_ERROR_LOG command */ -#define OC_READ_ADAPTER 0x0100 /* READ_ADAPTER command */ -#define OC_MODIFY_OPEN_PARMS 0x0400 /* MODIFY_OPEN_PARMS command */ -#define OC_RESTORE_OPEN_PARMS 0x0800 /* RESTORE_OPEN_PARMS command */ -#define OC_SET_FIRST_16_GROUP 0x1000 /* SET_FIRST_16_GROUP command */ -#define OC_SET_BRIDGE_PARMS 0x2000 /* SET_BRIDGE_PARMS command */ -#define OC_CONFIG_BRIDGE_PARMS 0x4000 /* CONFIG_BRIDGE_PARMS command */ - -#define OPEN 0x0300 /* C: open command. S: completion. */ -#define TRANSMIT 0x0400 /* C: transmit command. S: completion - * status. (reject: COMMAND_REJECT if - * adapter not opened, TRANSMIT already - * issued or address passed in the SCB - * not word aligned) - */ -#define TRANSMIT_HALT 0x0500 /* C: interrupt TX TPL chain; if no - * TRANSMIT command issued, the command - * is ignored. (completion with TRANSMIT - * status (0x0400)!) - */ -#define RECEIVE 0x0600 /* C: receive command. S: completion - * status. (reject: COMMAND_REJECT if - * adapter not opened, RECEIVE already - * issued or address passed in the SCB - * not word aligned) - */ -#define CLOSE 0x0700 /* C: close adapter. S: completion. - * (COMMAND_REJECT if adapter not open) - */ -#define SET_GROUP_ADDR 0x0800 /* C: alter adapter group address after - * OPEN. S: completion. (COMMAND_REJECT - * if adapter not open) - */ -#define SET_FUNCT_ADDR 0x0900 /* C: alter adapter functional address - * after OPEN. S: completion. - * (COMMAND_REJECT if adapter not open) - */ -#define READ_ERROR_LOG 0x0A00 /* C: read adapter error counters. - * S: completion. (command ignored - * if adapter not open!) - */ -#define READ_ADAPTER 0x0B00 /* C: read data from adapter memory. - * (important: after init and before - * open!) S: completion. (ADAPTER_CHECK - * interrupt if undefined storage area - * read) - */ -#define MODIFY_OPEN_PARMS 0x0D00 /* C: modify some adapter operational - * parameters. (bit correspondend to - * WRAP_INTERFACE is ignored) - * S: completion. (reject: - * COMMAND_REJECT) - */ -#define RESTORE_OPEN_PARMS 0x0E00 /* C: modify some adapter operational - * parameters. (bit correspondend - * to WRAP_INTERFACE is ignored) - * S: completion. (reject: - * COMMAND_REJECT) - */ -#define SET_FIRST_16_GROUP 0x0F00 /* C: alter the first two bytes in - * adapter group address. - * S: completion. (reject: - * COMMAND_REJECT) - */ -#define SET_BRIDGE_PARMS 0x1000 /* C: values and conditions for the - * adapter hardware to use when frames - * are copied for forwarding. - * S: completion. (reject: - * COMMAND_REJECT) - */ -#define CONFIG_BRIDGE_PARMS 0x1100 /* C: .. - * S: completion. (reject: - * COMMAND_REJECT) - */ - -#define SPEED_4 4 -#define SPEED_16 16 /* Default transmission speed */ - - -/* Initialization Parameter Block (IPB); word alignment necessary! */ -#define BURST_SIZE 0x0018 /* Default burst size */ -#define BURST_MODE 0x9F00 /* Burst mode enable */ -#define DMA_RETRIES 0x0505 /* Magic DMA retry number... */ - -#define CYCLE_TIME 3 /* Default AT-bus cycle time: 500 ns - * (later adapter version: fix cycle time!) - */ -#define LINE_SPEED_BIT 0x80 - -/* Macro definition for the wait function. */ -#define ONE_SECOND_TICKS 1000000 -#define HALF_SECOND (ONE_SECOND_TICKS / 2) -#define ONE_SECOND (ONE_SECOND_TICKS) -#define TWO_SECONDS (ONE_SECOND_TICKS * 2) -#define THREE_SECONDS (ONE_SECOND_TICKS * 3) -#define FOUR_SECONDS (ONE_SECOND_TICKS * 4) -#define FIVE_SECONDS (ONE_SECOND_TICKS * 5) - -#define BUFFER_SIZE 2048 /* Buffers on Adapter */ - -#pragma pack(1) -typedef struct { - unsigned short Init_Options; /* Initialize with burst mode; - * LLC disabled. (MAC only) - */ - - /* Interrupt vectors the adapter places on attached system bus. */ - unsigned char CMD_Status_IV; /* Interrupt vector: command status. */ - unsigned char TX_IV; /* Interrupt vector: transmit. */ - unsigned char RX_IV; /* Interrupt vector: receive. */ - unsigned char Ring_Status_IV; /* Interrupt vector: ring status. */ - unsigned char SCB_Clear_IV; /* Interrupt vector: SCB clear. */ - unsigned char Adapter_CHK_IV; /* Interrupt vector: adapter check. */ - - unsigned short RX_Burst_Size; /* Max. number of transfer cycles. */ - unsigned short TX_Burst_Size; /* During DMA burst; even value! */ - unsigned short DMA_Abort_Thrhld; /* Number of DMA retries. */ - - unsigned long SCB_Addr; /* SCB address: even, word aligned, high-low. */ - unsigned long SSB_Addr; /* SSB address: even, word aligned, high-low. */ -} IPB, *IPB_Ptr; -#pragma pack() - -/* - * OPEN Command Parameter List (OCPL) (can be reused, if the adapter has to - * be reopened) - */ -#define BUFFER_SIZE 2048 /* Buffers on Adapter. */ -#define TPL_SIZE 8+6*TX_FRAG_NUM /* Depending on fragments per TPL. */ -#define RPL_SIZE 14 /* (with TI firmware v2.26 handling - * up to nine fragments possible) - */ -#define TX_BUF_MIN 20 /* ??? (Stephan: calculation with */ -#define TX_BUF_MAX 40 /* BUFFER_SIZE and MAX_FRAME_SIZE) ??? - */ -#define DISABLE_EARLY_TOKEN_RELEASE 0x1000 - -/* OPEN Options (high-low) */ -#define WRAP_INTERFACE 0x0080 /* Inserting omitted for test - * purposes; transmit data appears - * as receive data. (usefull for - * testing; change: CLOSE necessary) - */ -#define DISABLE_HARD_ERROR 0x0040 /* On HARD_ERROR & TRANSMIT_BEACON - * no RING.STATUS interrupt. - */ -#define DISABLE_SOFT_ERROR 0x0020 /* On SOFT_ERROR, no RING.STATUS - * interrupt. - */ -#define PASS_ADAPTER_MAC_FRAMES 0x0010 /* Passing unsupported MAC frames - * to system. - */ -#define PASS_ATTENTION_FRAMES 0x0008 /* All changed attention MAC frames are - * passed to the system. - */ -#define PAD_ROUTING_FIELD 0x0004 /* Routing field is padded to 18 - * bytes. - */ -#define FRAME_HOLD 0x0002 /* Adapter waits for entire frame before - * initiating DMA transfer; otherwise: - * DMA transfer initiation if internal - * buffer filled. - */ -#define CONTENDER 0x0001 /* Adapter participates in the monitor - * contention process. - */ -#define PASS_BEACON_MAC_FRAMES 0x8000 /* Adapter passes beacon MAC frames - * to the system. - */ -#define EARLY_TOKEN_RELEASE 0x1000 /* Only valid in 16 Mbps operation; - * 0 = ETR. (no effect in 4 Mbps - * operation) - */ -#define COPY_ALL_MAC_FRAMES 0x0400 /* All MAC frames are copied to - * the system. (after OPEN: duplicate - * address test (DAT) MAC frame is - * first received frame copied to the - * system) - */ -#define COPY_ALL_NON_MAC_FRAMES 0x0200 /* All non MAC frames are copied to - * the system. - */ -#define PASS_FIRST_BUF_ONLY 0x0100 /* Passes only first internal buffer - * of each received frame; FrameSize - * of RPLs must contain internal - * BUFFER_SIZE bits for promiscous mode. - */ -#define ENABLE_FULL_DUPLEX_SELECTION 0x2000 /* Enable the use of full-duplex - * settings with bits in byte 22 in - * ocpl. (new feature in firmware - * version 3.09) - */ - -/* Full-duplex settings */ -#define OPEN_FULL_DUPLEX_OFF 0x0000 -#define OPEN_FULL_DUPLEX_ON 0x00c0 -#define OPEN_FULL_DUPLEX_AUTO 0x0080 - -#define PROD_ID_SIZE 18 /* Length of product ID. */ - -#define TX_FRAG_NUM 3 /* Number of fragments used in one TPL. */ -#define TX_MORE_FRAGMENTS 0x8000 /* Bit set in DataCount to indicate more - * fragments following. - */ - -#define ISA_MAX_ADDRESS 0x00ffffff - -#pragma pack(1) -typedef struct { - unsigned short OPENOptions; - unsigned char NodeAddr[6]; /* Adapter node address; use ROM - * address - */ - unsigned long GroupAddr; /* Multicast: high order - * bytes = 0xC000 - */ - unsigned long FunctAddr; /* High order bytes = 0xC000 */ - unsigned short RxListSize; /* RPL size: 0 (=26), 14, 20 or - * 26 bytes read by the adapter. - * (Depending on the number of - * fragments/list) - */ - unsigned short TxListSize; /* TPL size */ - unsigned short BufSize; /* Is automatically rounded up to the - * nearest nK boundary. - */ - unsigned short FullDuplex; - unsigned short Reserved; - unsigned char TXBufMin; /* Number of adapter buffers reserved - * for transmission a minimum of 2 - * buffers must be allocated. - */ - unsigned char TXBufMax; /* Maximum number of adapter buffers - * for transmit; a minimum of 2 buffers - * must be available for receive. - * Default: 6 - */ - unsigned short ProdIDAddr[2]; /* Pointer to product ID. */ -} OPB, *OPB_Ptr; -#pragma pack() - -/* - * SCB: adapter commands enabled by the host system started by writing - * CMD_INTERRUPT_ADAPTER | CMD_EXECUTE (|SCB_REQUEST) to the SIFCMD IO - * register. (special case: | CMD_SYSTEM_IRQ for initialization) - */ -#pragma pack(1) -typedef struct { - unsigned short CMD; /* Command code */ - unsigned short Parm[2]; /* Pointer to Command Parameter Block */ -} SCB; /* System Command Block (32 bit physical address; big endian)*/ -#pragma pack() - -/* - * SSB: adapter command return status can be evaluated after COMMAND_STATUS - * adapter to system interrupt after reading SSB, the availability of the SSB - * has to be told the adapter by writing CMD_INTERRUPT_ADAPTER | CMD_SSB_CLEAR - * in the SIFCMD IO register. - */ -#pragma pack(1) -typedef struct { - unsigned short STS; /* Status code */ - unsigned short Parm[3]; /* Parameter or pointer to Status Parameter - * Block. - */ -} SSB; /* System Status Block (big endian - physical address) */ -#pragma pack() - -typedef struct { - unsigned short BurnedInAddrPtr; /* Pointer to adapter burned in - * address. (BIA) - */ - unsigned short SoftwareLevelPtr;/* Pointer to software level data. */ - unsigned short AdapterAddrPtr; /* Pointer to adapter addresses. */ - unsigned short AdapterParmsPtr; /* Pointer to adapter parameters. */ - unsigned short MACBufferPtr; /* Pointer to MAC buffer. (internal) */ - unsigned short LLCCountersPtr; /* Pointer to LLC counters. */ - unsigned short SpeedFlagPtr; /* Pointer to data rate flag. - * (4/16 Mbps) - */ - unsigned short AdapterRAMPtr; /* Pointer to adapter RAM found. (KB) */ -} INTPTRS; /* Adapter internal pointers */ - -#pragma pack(1) -typedef struct { - unsigned char Line_Error; /* Line error: code violation in - * frame or in a token, or FCS error. - */ - unsigned char Internal_Error; /* IBM specific. (Reserved_1) */ - unsigned char Burst_Error; - unsigned char ARI_FCI_Error; /* ARI/FCI bit zero in AMP or - * SMP MAC frame. - */ - unsigned char AbortDelimeters; /* IBM specific. (Reserved_2) */ - unsigned char Reserved_3; - unsigned char Lost_Frame_Error; /* Receive of end of transmitted - * frame failed. - */ - unsigned char Rx_Congest_Error; /* Adapter in repeat mode has not - * enough buffer space to copy incoming - * frame. - */ - unsigned char Frame_Copied_Error;/* ARI bit not zero in frame - * addressed to adapter. - */ - unsigned char Frequency_Error; /* IBM specific. (Reserved_4) */ - unsigned char Token_Error; /* (active only in monitor station) */ - unsigned char Reserved_5; - unsigned char DMA_Bus_Error; /* DMA bus errors not exceeding the - * abort thresholds. - */ - unsigned char DMA_Parity_Error; /* DMA parity errors not exceeding - * the abort thresholds. - */ -} ERRORTAB; /* Adapter error counters */ -#pragma pack() - - -/*--------------------- Send and Receive definitions -------------------*/ -#pragma pack(1) -typedef struct { - unsigned short DataCount; /* Value 0, even and odd values are - * permitted; value is unaltered most - * significant bit set: following - * fragments last fragment: most - * significant bit is not evaluated. - * (???) - */ - unsigned long DataAddr; /* Pointer to frame data fragment; - * even or odd. - */ -} Fragment; -#pragma pack() - -#define MAX_FRAG_NUMBERS 9 /* Maximal number of fragments possible to use - * in one RPL/TPL. (depending on TI firmware - * version) - */ -#define MAX_TX_QUEUE 10 /* Maximal number of skb's queued in driver. */ - -/* - * AC (1), FC (1), Dst (6), Src (6), RIF (18), Data (4472) = 4504 - * The packet size can be one of the follows: 548, 1502, 2084, 4504, 8176, - * 11439, 17832. Refer to TMS380 Second Generation Token Ring User's Guide - * Page 2-27. - */ -#define HEADER_SIZE (1 + 1 + 6 + 6) -#define SRC_SIZE 18 -#define MIN_DATA_SIZE 516 -#define DEFAULT_DATA_SIZE 4472 -#define MAX_DATA_SIZE 17800 - -#define DEFAULT_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + DEFAULT_DATA_SIZE) -#define MIN_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + MIN_DATA_SIZE) -#define MAX_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + MAX_DATA_SIZE) - -/* - * Macros to deal with the frame status field. - */ -#define AC_NOT_RECOGNIZED 0x00 -#define GROUP_BIT 0x80 -#define GET_TRANSMIT_STATUS_HIGH_BYTE(Ts) ((unsigned char)((Ts) >> 8)) -#define GET_FRAME_STATUS_HIGH_AC(Fs) ((unsigned char)(((Fs) & 0xC0) >> 6)) -#define GET_FRAME_STATUS_LOW_AC(Fs) ((unsigned char)(((Fs) & 0x0C) >> 2)) -#define DIRECTED_FRAME(Context) (!((Context)->MData[2] & GROUP_BIT)) - - -/*--------------------- Send Functions ---------------------------------*/ -/* define TX_CSTAT _REQUEST (R) and _COMPLETE (C) values (high-low) */ - -#define TX_VALID 0x0080 /* R: set via TRANSMIT.VALID interrupt. - * C: always reset to zero! - */ -#define TX_FRAME_COMPLETE 0x0040 /* R: must be reset to zero. - * C: set to one. - */ -#define TX_START_FRAME 0x0020 /* R: start of a frame: 1 - * C: unchanged. - */ -#define TX_END_FRAME 0x0010 /* R: end of a frame: 1 - * C: unchanged. - */ -#define TX_FRAME_IRQ 0x0008 /* R: request interrupt generation - * after transmission. - * C: unchanged. - */ -#define TX_ERROR 0x0004 /* R: reserved. - * C: set to one if Error occurred. - */ -#define TX_INTERFRAME_WAIT 0x0004 -#define TX_PASS_CRC 0x0002 /* R: set if CRC value is already - * calculated. (valid only in - * FRAME_START TPL) - * C: unchanged. - */ -#define TX_PASS_SRC_ADDR 0x0001 /* R: adapter uses explicit frame - * source address and does not overwrite - * with the adapter node address. - * (valid only in FRAME_START TPL) - * - * C: unchanged. - */ -#define TX_STRIP_FS 0xFF00 /* R: reserved. - * C: if no Transmission Error, - * field contains copy of FS byte after - * stripping of frame. - */ - -/* - * Structure of Transmit Parameter Lists (TPLs) (only one frame every TPL, - * but possibly multiple TPLs for one frame) the length of the TPLs has to be - * initialized in the OPL. (OPEN parameter list) - */ -#define TPL_NUM 9 /* Number of Transmit Parameter Lists. - * !! MUST BE >= 3 !! - */ - -#pragma pack(1) -typedef struct s_TPL TPL; - -struct s_TPL { /* Transmit Parameter List (align on even word boundaries) */ - unsigned long NextTPLAddr; /* Pointer to next TPL in chain; if - * pointer is odd: this is the last - * TPL. Pointing to itself can cause - * problems! - */ - volatile unsigned short Status; /* Initialized by the adapter: - * CSTAT_REQUEST important: update least - * significant bit first! Set by the - * adapter: CSTAT_COMPLETE status. - */ - unsigned short FrameSize; /* Number of bytes to be transmitted - * as a frame including AC/FC, - * Destination, Source, Routing field - * not including CRC, FS, End Delimiter - * (valid only if START_FRAME bit in - * CSTAT nonzero) must not be zero in - * any list; maximum value: (BUFFER_SIZE - * - 8) * TX_BUF_MAX sum of DataCount - * values in FragmentList must equal - * Frame_Size value in START_FRAME TPL! - * frame data fragment list. - */ - - /* TPL/RPL size in OPEN parameter list depending on maximal - * numbers of fragments used in one parameter list. - */ - Fragment FragList[TX_FRAG_NUM]; /* Maximum: nine frame fragments in one - * TPL actual version of firmware: 9 - * fragments possible. - */ -#pragma pack() - - /* Special proprietary data and precalculations */ - - TPL *NextTPLPtr; /* Pointer to next TPL in chain. */ - unsigned char *MData; - struct sk_buff *Skb; - unsigned char TPLIndex; - volatile unsigned char BusyFlag;/* Flag: TPL busy? */ -}; - -/* ---------------------Receive Functions-------------------------------* - * define RECEIVE_CSTAT_REQUEST (R) and RECEIVE_CSTAT_COMPLETE (C) values. - * (high-low) - */ -#define RX_VALID 0x0080 /* R: set; tell adapter with - * RECEIVE.VALID interrupt. - * C: reset to zero. - */ -#define RX_FRAME_COMPLETE 0x0040 /* R: must be reset to zero, - * C: set to one. - */ -#define RX_START_FRAME 0x0020 /* R: must be reset to zero. - * C: set to one on the list. - */ -#define RX_END_FRAME 0x0010 /* R: must be reset to zero. - * C: set to one on the list - * that ends the frame. - */ -#define RX_FRAME_IRQ 0x0008 /* R: request interrupt generation - * after receive. - * C: unchanged. - */ -#define RX_INTERFRAME_WAIT 0x0004 /* R: after receiving a frame: - * interrupt and wait for a - * RECEIVE.CONTINUE. - * C: unchanged. - */ -#define RX_PASS_CRC 0x0002 /* R: if set, the adapter includes - * the CRC in data passed. (last four - * bytes; valid only if FRAME_START is - * set) - * C: set, if CRC is included in - * received data. - */ -#define RX_PASS_SRC_ADDR 0x0001 /* R: adapter uses explicit frame - * source address and does not - * overwrite with the adapter node - * address. (valid only if FRAME_START - * is set) - * C: unchanged. - */ -#define RX_RECEIVE_FS 0xFC00 /* R: reserved; must be reset to zero. - * C: on lists with START_FRAME, field - * contains frame status field from - * received frame; otherwise cleared. - */ -#define RX_ADDR_MATCH 0x0300 /* R: reserved; must be reset to zero. - * C: address match code mask. - */ -#define RX_STATUS_MASK 0x00FF /* Mask for receive status bits. */ - -#define RX_INTERN_ADDR_MATCH 0x0100 /* C: internally address match. */ -#define RX_EXTERN_ADDR_MATCH 0x0200 /* C: externally matched via - * XMATCH/XFAIL interface. - */ -#define RX_INTEXT_ADDR_MATCH 0x0300 /* C: internally and externally - * matched. - */ -#define RX_READY (RX_VALID | RX_FRAME_IRQ) /* Ready for receive. */ - -/* Constants for Command Status Interrupt. - * COMMAND_REJECT status field bit functions (SSB.Parm[0]) - */ -#define ILLEGAL_COMMAND 0x0080 /* Set if an unknown command - * is issued to the adapter - */ -#define ADDRESS_ERROR 0x0040 /* Set if any address field in - * the SCB is odd. (not word aligned) - */ -#define ADAPTER_OPEN 0x0020 /* Command issued illegal with - * open adapter. - */ -#define ADAPTER_CLOSE 0x0010 /* Command issued illegal with - * closed adapter. - */ -#define SAME_COMMAND 0x0008 /* Command issued with same command - * already executing. - */ - -/* OPEN_COMPLETION values (SSB.Parm[0], MSB) */ -#define NODE_ADDR_ERROR 0x0040 /* Wrong address or BIA read - * zero address. - */ -#define LIST_SIZE_ERROR 0x0020 /* If List_Size value not in 0, - * 14, 20, 26. - */ -#define BUF_SIZE_ERROR 0x0010 /* Not enough available memory for - * two buffers. - */ -#define TX_BUF_COUNT_ERROR 0x0004 /* Remaining receive buffers less than - * two. - */ -#define OPEN_ERROR 0x0002 /* Error during ring insertion; more - * information in bits 8-15. - */ - -/* Standard return codes */ -#define GOOD_COMPLETION 0x0080 /* =OPEN_SUCCESSFULL */ -#define INVALID_OPEN_OPTION 0x0001 /* OPEN options are not supported by - * the adapter. - */ - -/* OPEN phases; details of OPEN_ERROR (SSB.Parm[0], LSB) */ -#define OPEN_PHASES_MASK 0xF000 /* Check only the bits 8-11. */ -#define LOBE_MEDIA_TEST 0x1000 -#define PHYSICAL_INSERTION 0x2000 -#define ADDRESS_VERIFICATION 0x3000 -#define PARTICIPATION_IN_RING_POLL 0x4000 -#define REQUEST_INITIALISATION 0x5000 -#define FULLDUPLEX_CHECK 0x6000 - -/* OPEN error codes; details of OPEN_ERROR (SSB.Parm[0], LSB) */ -#define OPEN_ERROR_CODES_MASK 0x0F00 /* Check only the bits 12-15. */ -#define OPEN_FUNCTION_FAILURE 0x0100 /* Unable to transmit to itself or - * frames received before insertion. - */ -#define OPEN_SIGNAL_LOSS 0x0200 /* Signal loss condition detected at - * receiver. - */ -#define OPEN_TIMEOUT 0x0500 /* Insertion timer expired before - * logical insertion. - */ -#define OPEN_RING_FAILURE 0x0600 /* Unable to receive own ring purge - * MAC frames. - */ -#define OPEN_RING_BEACONING 0x0700 /* Beacon MAC frame received after - * ring insertion. - */ -#define OPEN_DUPLICATE_NODEADDR 0x0800 /* Other station in ring found - * with the same address. - */ -#define OPEN_REQUEST_INIT 0x0900 /* RPS present but does not respond. */ -#define OPEN_REMOVE_RECEIVED 0x0A00 /* Adapter received a remove adapter - * MAC frame. - */ -#define OPEN_FULLDUPLEX_SET 0x0D00 /* Got this with full duplex on when - * trying to connect to a normal ring. - */ - -/* SET_BRIDGE_PARMS return codes: */ -#define BRIDGE_INVALID_MAX_LEN 0x4000 /* MAX_ROUTING_FIELD_LENGTH odd, - * less than 6 or > 30. - */ -#define BRIDGE_INVALID_SRC_RING 0x2000 /* SOURCE_RING number zero, too large - * or = TARGET_RING. - */ -#define BRIDGE_INVALID_TRG_RING 0x1000 /* TARGET_RING number zero, too large - * or = SOURCE_RING. - */ -#define BRIDGE_INVALID_BRDGE_NO 0x0800 /* BRIDGE_NUMBER too large. */ -#define BRIDGE_INVALID_OPTIONS 0x0400 /* Invalid bridge options. */ -#define BRIDGE_DIAGS_FAILED 0x0200 /* Diagnostics of TMS380SRA failed. */ -#define BRIDGE_NO_SRA 0x0100 /* The TMS380SRA does not exist in HW - * configuration. - */ - -/* - * Bring Up Diagnostics error codes. - */ -#define BUD_INITIAL_ERROR 0x0 -#define BUD_CHECKSUM_ERROR 0x1 -#define BUD_ADAPTER_RAM_ERROR 0x2 -#define BUD_INSTRUCTION_ERROR 0x3 -#define BUD_CONTEXT_ERROR 0x4 -#define BUD_PROTOCOL_ERROR 0x5 -#define BUD_INTERFACE_ERROR 0x6 - -/* BUD constants */ -#define BUD_MAX_RETRIES 3 -#define BUD_MAX_LOOPCNT 6 -#define BUD_TIMEOUT 3000 - -/* Initialization constants */ -#define INIT_MAX_RETRIES 3 /* Maximum three retries. */ -#define INIT_MAX_LOOPCNT 22 /* Maximum loop counts. */ - -/* RING STATUS field values (high/low) */ -#define SIGNAL_LOSS 0x0080 /* Loss of signal on the ring - * detected. - */ -#define HARD_ERROR 0x0040 /* Transmitting or receiving beacon - * frames. - */ -#define SOFT_ERROR 0x0020 /* Report error MAC frame - * transmitted. - */ -#define TRANSMIT_BEACON 0x0010 /* Transmitting beacon frames on the - * ring. - */ -#define LOBE_WIRE_FAULT 0x0008 /* Open or short circuit in the - * cable to concentrator; adapter - * closed. - */ -#define AUTO_REMOVAL_ERROR 0x0004 /* Lobe wrap test failed, deinserted; - * adapter closed. - */ -#define REMOVE_RECEIVED 0x0001 /* Received a remove ring station MAC - * MAC frame request; adapter closed. - */ -#define COUNTER_OVERFLOW 0x8000 /* Overflow of one of the adapters - * error counters; READ.ERROR.LOG. - */ -#define SINGLE_STATION 0x4000 /* Adapter is the only station on the - * ring. - */ -#define RING_RECOVERY 0x2000 /* Claim token MAC frames on the ring; - * reset after ring purge frame. - */ - -#define ADAPTER_CLOSED (LOBE_WIRE_FAULT | AUTO_REMOVAL_ERROR |\ - REMOVE_RECEIVED) - -/* Adapter_check_block.Status field bit assignments: */ -#define DIO_PARITY 0x8000 /* Adapter detects bad parity - * through direct I/O access. - */ -#define DMA_READ_ABORT 0x4000 /* Aborting DMA read operation - * from system Parm[0]: 0=timeout, - * 1=parity error, 2=bus error; - * Parm[1]: 32 bit pointer to host - * system address at failure. - */ -#define DMA_WRITE_ABORT 0x2000 /* Aborting DMA write operation - * to system. (parameters analogous to - * DMA_READ_ABORT) - */ -#define ILLEGAL_OP_CODE 0x1000 /* Illegal operation code in the - * the adapters firmware Parm[0]-2: - * communications processor registers - * R13-R15. - */ -#define PARITY_ERRORS 0x0800 /* Adapter detects internal bus - * parity error. - */ -#define RAM_DATA_ERROR 0x0080 /* Valid only during RAM testing; - * RAM data error Parm[0-1]: 32 bit - * pointer to RAM location. - */ -#define RAM_PARITY_ERROR 0x0040 /* Valid only during RAM testing; - * RAM parity error Parm[0-1]: 32 bit - * pointer to RAM location. - */ -#define RING_UNDERRUN 0x0020 /* Internal DMA underrun when - * transmitting onto ring. - */ -#define INVALID_IRQ 0x0008 /* Unrecognized interrupt generated - * internal to adapter Parm[0-2]: - * adapter register R13-R15. - */ -#define INVALID_ERROR_IRQ 0x0004 /* Unrecognized error interrupt - * generated Parm[0-2]: adapter register - * R13-R15. - */ -#define INVALID_XOP 0x0002 /* Unrecognized XOP request in - * communication processor Parm[0-2]: - * adapter register R13-R15. - */ -#define CHECKADDR 0x05E0 /* Adapter check status information - * address offset. - */ -#define ROM_PAGE_0 0x0000 /* Adapter ROM page 0. */ - -/* - * RECEIVE.STATUS interrupt result SSB values: (high-low) - * (RECEIVE_COMPLETE field bit definitions in SSB.Parm[0]) - */ -#define RX_COMPLETE 0x0080 /* SSB.Parm[0]; SSB.Parm[1]: 32 - * bit pointer to last RPL. - */ -#define RX_SUSPENDED 0x0040 /* SSB.Parm[0]; SSB.Parm[1]: 32 - * bit pointer to RPL with odd - * forward pointer. - */ - -/* Valid receive CSTAT: */ -#define RX_FRAME_CONTROL_BITS (RX_VALID | RX_START_FRAME | RX_END_FRAME | \ - RX_FRAME_COMPLETE) -#define VALID_SINGLE_BUFFER_FRAME (RX_START_FRAME | RX_END_FRAME | \ - RX_FRAME_COMPLETE) - -typedef enum SKB_STAT SKB_STAT; -enum SKB_STAT { - SKB_UNAVAILABLE, - SKB_DMA_DIRECT, - SKB_DATA_COPY -}; - -/* Receive Parameter List (RPL) The length of the RPLs has to be initialized - * in the OPL. (OPEN parameter list) - */ -#define RPL_NUM 3 - -#define RX_FRAG_NUM 1 /* Maximal number of used fragments in one RPL. - * (up to firmware v2.24: 3, now: up to 9) - */ - -#pragma pack(1) -typedef struct s_RPL RPL; -struct s_RPL { /* Receive Parameter List */ - unsigned long NextRPLAddr; /* Pointer to next RPL in chain - * (normalized = physical 32 bit - * address) if pointer is odd: this - * is last RPL. Pointing to itself can - * cause problems! - */ - volatile unsigned short Status; /* Set by creation of Receive Parameter - * List RECEIVE_CSTAT_COMPLETE set by - * adapter in lists that start or end - * a frame. - */ - volatile unsigned short FrameSize; /* Number of bytes received as a - * frame including AC/FC, Destination, - * Source, Routing field not including - * CRC, FS (Frame Status), End Delimiter - * (valid only if START_FRAME bit in - * CSTAT nonzero) must not be zero in - * any list; maximum value: (BUFFER_SIZE - * - 8) * TX_BUF_MAX sum of DataCount - * values in FragmentList must equal - * Frame_Size value in START_FRAME TPL! - * frame data fragment list - */ - - /* TPL/RPL size in OPEN parameter list depending on maximal numbers - * of fragments used in one parameter list. - */ - Fragment FragList[RX_FRAG_NUM]; /* Maximum: nine frame fragments in - * one TPL. Actual version of firmware: - * 9 fragments possible. - */ -#pragma pack() - - /* Special proprietary data and precalculations. */ - RPL *NextRPLPtr; /* Logical pointer to next RPL in chain. */ - unsigned char *MData; - struct sk_buff *Skb; - SKB_STAT SkbStat; - int RPLIndex; -}; - -/* Information that need to be kept for each board. */ -typedef struct net_local { -#pragma pack(1) - IPB ipb; /* Initialization Parameter Block. */ - SCB scb; /* System Command Block: system to adapter - * communication. - */ - SSB ssb; /* System Status Block: adapter to system - * communication. - */ - OPB ocpl; /* Open Options Parameter Block. */ - - ERRORTAB errorlogtable; /* Adapter statistic error counters. - * (read from adapter memory) - */ - unsigned char ProductID[PROD_ID_SIZE + 1]; /* Product ID */ -#pragma pack() - - TPL Tpl[TPL_NUM]; - TPL *TplFree; - TPL *TplBusy; - unsigned char LocalTxBuffers[TPL_NUM][DEFAULT_PACKET_SIZE]; - - RPL Rpl[RPL_NUM]; - RPL *RplHead; - RPL *RplTail; - unsigned char LocalRxBuffers[RPL_NUM][DEFAULT_PACKET_SIZE]; - - int DataRate; - unsigned char ScbInUse; - unsigned short CMDqueue; - - unsigned int DeviceType; - - unsigned long AdapterOpenFlag:1; - unsigned long AdapterVirtOpenFlag:1; - unsigned long OpenCommandIssued:1; - unsigned long TransmitCommandActive:1; - unsigned long TransmitHaltScheduled:1; - unsigned long HaltInProgress:1; - unsigned long LobeWireFaultLogged:1; - unsigned long ReOpenInProgress:1; - unsigned long Sleeping:1; - - unsigned long LastOpenStatus; - unsigned short CurrentRingStatus; - unsigned long MaxPacketSize; - - unsigned long StartTime; - unsigned long LastSendTime; - - struct sk_buff_head SendSkbQueue; - unsigned short QueueSkb; - - struct tr_statistics MacStat; /* MAC statistics structure */ - - struct timer_list timer; - - wait_queue_head_t wait_for_tok_int; - - INTPTRS intptrs; /* Internal adapter pointer. Must be read - * before OPEN command. - */ -} NET_LOCAL; - -#endif /* __KERNEL__ */ -#endif /* __LINUX_SKTR_H */ diff --git a/drivers/net/tokenring/sktr_firmware.h b/drivers/net/tokenring/sktr_firmware.h index 25dd973d4..e69de29bb 100644 --- a/drivers/net/tokenring/sktr_firmware.h +++ b/drivers/net/tokenring/sktr_firmware.h @@ -1,3616 +0,0 @@ -/* - * The firmware this driver downloads into the tokenring card is a - * separate program and is not GPL'd source code, even though the Linux - * side driver and the routine that loads this data into the card are. - * - * This firmware is licensed to you strictly for use in conjunction - * with the use of SysKonnect TokenRing adapters. There is no - * waranty expressed or implied about its fitness for any purpose. - */ - -/* sktr_firmware.h: SysKonnect TokenRing driver firmware dump for Linux. - * - * Notes: - * - Loaded from sktr_reset_adapter upon adapter reset. - * - * Authors: - * - Christoph Goos <cgoos@syskonnect.de> - */ - -#include <linux/config.h> - -#if defined(CONFIG_SKTR) || defined(CONFIG_SKTR_MODULE) - -unsigned char sktr_code[] = { - 0x00, 0x00, 0x00, 0xA0, 0x00, 0x20, 0x68, 0x54, - 0x73, 0x69, 0x63, 0x20, 0x64, 0x6F, 0x20, 0x65, - 0x73, 0x69, 0x72, 0x20, 0x6C, 0x65, 0x61, 0x65, - 0x65, 0x73, 0x20, 0x64, 0x6E, 0x75, 0x65, 0x64, - 0x20, 0x72, 0x69, 0x6C, 0x65, 0x63, 0x63, 0x6E, - 0x20, 0x65, 0x6E, 0x4F, 0x79, 0x6C, 0x20, 0x2C, - 0x6C, 0x41, 0x20, 0x6C, 0x69, 0x72, 0x68, 0x67, - 0x73, 0x74, 0x72, 0x20, 0x73, 0x65, 0x72, 0x65, - 0x65, 0x76, 0x2E, 0x64, 0x60, 0x01, 0x42, 0x01, - 0x00, 0x08, 0x08, 0x16, 0xB0, 0x03, 0xE0, 0x04, - 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0xFF, 0xFF, - 0xFC, 0x13, 0x80, 0x03, 0xA0, 0x07, 0x42, 0x01, - 0x00, 0x08, 0x20, 0x07, 0x00, 0x00, 0xE0, 0x04, - 0x00, 0x01, 0x8B, 0x07, 0x00, 0x3D, 0x60, 0x01, - 0x42, 0x01, 0x80, 0x00, 0x09, 0x13, 0x8B, 0x07, - 0x00, 0x2D, 0x20, 0xC0, 0x4E, 0x01, 0x80, 0x02, - 0x41, 0x0F, 0x02, 0x11, 0x8B, 0x07, 0x00, 0x3D, - 0x0B, 0xC8, 0x4A, 0x01, 0x00, 0x02, 0x00, 0x90, - 0xA0, 0x09, 0x00, 0xC8, 0x66, 0x01, 0xE0, 0x02, - 0xA0, 0x00, 0xA0, 0x07, 0x04, 0x01, 0x20, 0x00, - 0xA0, 0x01, 0x40, 0x01, 0x00, 0xFE, 0x20, 0x48, - 0x2A, 0xE0, 0x42, 0x01, 0xE0, 0x04, 0x02, 0x01, - 0xE0, 0x04, 0x60, 0x09, 0xE0, 0x04, 0x82, 0x01, - 0x60, 0x01, 0x1C, 0x01, 0x04, 0x00, 0x03, 0x16, - 0xE0, 0x01, 0x40, 0x01, 0x00, 0x0C, 0xA0, 0x06, - 0xBC, 0xA1, 0xA0, 0x07, 0x04, 0x01, 0x2D, 0x00, - 0x20, 0xC2, 0x00, 0xE0, 0x88, 0x02, 0x11, 0xE3, - 0x14, 0x16, 0xA0, 0x07, 0x04, 0x01, 0x2E, 0x00, - 0x60, 0x01, 0x42, 0x01, 0x00, 0x03, 0x0D, 0x16, - 0xA0, 0x07, 0x04, 0x01, 0x21, 0x00, 0x88, 0x07, - 0x00, 0xA0, 0x89, 0x07, 0xFE, 0xFF, 0xA8, 0x09, - 0xA9, 0x09, 0x8A, 0x07, 0x02, 0xE0, 0xA0, 0x06, - 0x84, 0xEC, 0x56, 0x10, 0x88, 0x07, 0x00, 0x90, - 0x89, 0x07, 0xFE, 0x9F, 0xA8, 0x09, 0xA9, 0x09, - 0x8A, 0x07, 0x78, 0xE0, 0xA0, 0x06, 0x84, 0xEC, - 0x4B, 0x10, 0xA0, 0x05, 0x04, 0x01, 0x88, 0x07, - 0x08, 0x00, 0x89, 0x07, 0x7A, 0x00, 0x00, 0x03, - 0x01, 0x00, 0xA0, 0x06, 0xD2, 0xAC, 0x40, 0x10, - 0xA0, 0x06, 0xBC, 0xA1, 0xE0, 0x02, 0xF4, 0x03, - 0x88, 0x07, 0xA0, 0x00, 0x89, 0x07, 0xFE, 0x00, - 0xA0, 0x06, 0xD2, 0xAC, 0x35, 0x10, 0xE0, 0x02, - 0xA0, 0x00, 0xE0, 0x04, 0x7E, 0x01, 0xC8, 0x04, - 0x09, 0x02, 0xF2, 0x03, 0x48, 0x62, 0xE0, 0xC1, - 0x40, 0x01, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, - 0x18, 0xCE, 0x09, 0x06, 0xFD, 0x16, 0xA0, 0x01, - 0x40, 0x01, 0x00, 0x40, 0x07, 0xC8, 0x40, 0x01, - 0x88, 0x07, 0xF4, 0x03, 0x89, 0x07, 0xFE, 0x3F, - 0xA0, 0x06, 0xD2, 0xAC, 0x19, 0x10, 0xE0, 0x02, - 0xA0, 0x00, 0xA0, 0x06, 0xFA, 0xAD, 0x14, 0x10, - 0x08, 0xC8, 0x44, 0x04, 0x09, 0xC8, 0x46, 0x04, - 0xA0, 0x06, 0x28, 0xAD, 0x0D, 0x10, 0x81, 0x07, - 0x7C, 0xE0, 0xB1, 0xC0, 0x26, 0x13, 0x01, 0xC8, - 0xE0, 0x00, 0xA0, 0x05, 0x04, 0x01, 0x92, 0x06, - 0x03, 0x10, 0x60, 0xC0, 0xE0, 0x00, 0xF5, 0x10, - 0xE0, 0x01, 0x04, 0x01, 0x10, 0x00, 0xB0, 0x03, - 0xFF, 0x10, 0xA0, 0x01, 0x04, 0x01, 0x00, 0x80, - 0x80, 0x03, 0x80, 0x07, 0xA0, 0x00, 0xC2, 0x04, - 0x80, 0xCC, 0x81, 0x07, 0xAA, 0xA1, 0x82, 0x02, - 0x1E, 0x00, 0x02, 0x16, 0x81, 0x07, 0xB4, 0xA1, - 0x81, 0xC4, 0x81, 0x8C, 0xE9, 0x16, 0x82, 0x02, - 0x7C, 0x00, 0xF2, 0x16, 0x00, 0x03, 0x0F, 0x00, - 0x5B, 0x04, 0x81, 0x07, 0x08, 0xE1, 0x82, 0x07, - 0x04, 0x00, 0xE0, 0x04, 0x80, 0x01, 0xE0, 0x04, - 0x82, 0x01, 0x91, 0xC4, 0xB1, 0x8C, 0xD8, 0x16, - 0x82, 0x02, 0x7C, 0x00, 0xFA, 0x16, 0x20, 0xC8, - 0x04, 0xE0, 0x82, 0x01, 0x20, 0xE8, 0x0C, 0xE0, - 0x82, 0x01, 0x20, 0xC8, 0x10, 0xE0, 0x80, 0x01, - 0x81, 0x07, 0x86, 0xE0, 0xB1, 0xC0, 0x07, 0x13, - 0xB1, 0xC4, 0xFC, 0x10, 0xA0, 0x07, 0x04, 0x01, - 0x2E, 0x00, 0x60, 0x04, 0xAA, 0xA1, 0x81, 0x07, - 0x34, 0xE0, 0x82, 0x07, 0xFC, 0x05, 0x83, 0x07, - 0x0A, 0x00, 0xB1, 0xCC, 0x43, 0x06, 0xFD, 0x16, - 0x02, 0x02, 0x00, 0x06, 0x60, 0xD0, 0x4E, 0x01, - 0xED, 0x13, 0x21, 0x02, 0x00, 0xF7, 0x21, 0x02, - 0x00, 0xC0, 0x81, 0xDC, 0x60, 0xD0, 0x4F, 0x01, - 0xC1, 0xC0, 0x41, 0x09, 0x21, 0x02, 0x00, 0xF0, - 0x81, 0xDC, 0x43, 0x02, 0x00, 0x0F, 0x23, 0x02, - 0x00, 0xF0, 0x83, 0xDC, 0x01, 0x02, 0x32, 0x0C, - 0xA0, 0xC0, 0x44, 0x04, 0xE0, 0xC0, 0x46, 0x04, - 0x03, 0xC1, 0x02, 0x61, 0x84, 0x05, 0x04, 0xC8, - 0x48, 0x04, 0x03, 0xC1, 0x84, 0x05, 0x04, 0xA1, - 0x01, 0xA1, 0x04, 0xC8, 0x30, 0x0C, 0x03, 0xC1, - 0x84, 0x05, 0xF1, 0x04, 0x04, 0x06, 0xFD, 0x16, - 0x08, 0x02, 0x00, 0xA0, 0xA8, 0x09, 0x60, 0xC2, - 0x30, 0x0C, 0x29, 0x02, 0xFF, 0x03, 0xA9, 0x09, - 0x29, 0x02, 0x40, 0x00, 0x80, 0x07, 0x00, 0x90, - 0xA0, 0x09, 0x8A, 0x07, 0xFE, 0x9F, 0x2A, 0x02, - 0xFF, 0x03, 0xAA, 0x09, 0x01, 0x02, 0x32, 0x0C, - 0x05, 0x02, 0x00, 0x00, 0x03, 0xC1, 0x84, 0x05, - 0x11, 0x07, 0xC1, 0x05, 0x85, 0x05, 0x04, 0x06, - 0x0B, 0x13, 0x85, 0x80, 0xF9, 0x1A, 0x05, 0x80, - 0xF8, 0x1A, 0x85, 0x82, 0xF5, 0x1A, 0x05, 0x82, - 0xF4, 0x1A, 0x45, 0x82, 0xF1, 0x1A, 0xF1, 0x10, - 0x20, 0x2D, 0x02, 0x00, 0x60, 0x01, 0x40, 0x01, - 0x00, 0x40, 0x06, 0x16, 0x8A, 0x07, 0x00, 0x08, - 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, 0x48, 0x10, - 0x60, 0x01, 0x42, 0x01, 0x00, 0x80, 0x06, 0x16, - 0x8A, 0x07, 0x00, 0x10, 0xA0, 0x01, 0x42, 0x01, - 0x00, 0x80, 0x3E, 0x10, 0x60, 0x01, 0x02, 0x01, - 0x00, 0x10, 0x0A, 0x16, 0x60, 0x01, 0x00, 0x01, - 0x00, 0x04, 0x06, 0x16, 0x8A, 0x07, 0x00, 0x80, - 0xA0, 0x01, 0x02, 0x01, 0x00, 0x10, 0x30, 0x10, - 0x60, 0x01, 0x02, 0x01, 0x00, 0x08, 0x0A, 0x16, - 0x60, 0x01, 0x00, 0x01, 0x00, 0x04, 0x06, 0x16, - 0xA0, 0x01, 0x02, 0x01, 0x00, 0x08, 0x0D, 0x02, - 0x01, 0x00, 0x0D, 0x10, 0x60, 0x01, 0x02, 0x01, - 0x00, 0x04, 0x16, 0x16, 0x60, 0x01, 0x00, 0x01, - 0x00, 0x08, 0x12, 0x16, 0xA0, 0x01, 0x02, 0x01, - 0x00, 0x04, 0x0D, 0x02, 0x02, 0x00, 0xA0, 0xC3, - 0x0E, 0x01, 0xE0, 0xC3, 0x10, 0x01, 0x8A, 0x07, - 0x00, 0x20, 0x60, 0x01, 0x00, 0x01, 0x00, 0x80, - 0x0B, 0x13, 0x8A, 0x07, 0x00, 0x40, 0x08, 0x10, - 0x8A, 0x07, 0x04, 0x00, 0x05, 0x10, 0x8A, 0x07, - 0x02, 0x00, 0x02, 0x10, 0x8A, 0x07, 0x08, 0x00, - 0x00, 0x03, 0x00, 0x00, 0xE0, 0x04, 0x82, 0x01, - 0x8B, 0x07, 0xE0, 0x05, 0xCA, 0xCE, 0xCD, 0xCE, - 0xCE, 0xCE, 0xCF, 0xC6, 0x20, 0xC3, 0x58, 0x07, - 0x20, 0x23, 0x04, 0xE0, 0x12, 0x13, 0x8B, 0x07, - 0x18, 0xFF, 0x8A, 0x02, 0x00, 0x80, 0x0A, 0x13, - 0x8B, 0x05, 0xCD, 0xA2, 0x8A, 0x02, 0x00, 0x40, - 0x05, 0x13, 0x8A, 0x02, 0x00, 0x20, 0x02, 0x13, - 0x8B, 0x07, 0x1D, 0xFF, 0x0B, 0xC8, 0x04, 0x01, - 0x0D, 0x10, 0x20, 0xD3, 0x05, 0x01, 0xFD, 0x11, - 0x20, 0xD8, 0xDF, 0x07, 0x17, 0x01, 0x8B, 0x07, - 0x80, 0xFF, 0x0B, 0xC8, 0x04, 0x01, 0x20, 0xE8, - 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x04, 0x01, - 0xE0, 0x22, 0x86, 0xE1, 0xFB, 0x16, 0xE0, 0x02, - 0xA0, 0x00, 0xE0, 0x04, 0x82, 0x01, 0x20, 0xE8, - 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x00, 0x01, - 0xE0, 0x22, 0x06, 0xE0, 0xF8, 0x13, 0xA0, 0x01, - 0x40, 0x01, 0x00, 0xF6, 0x60, 0x04, 0x90, 0xA0, - 0x00, 0x03, 0x02, 0x00, 0xA0, 0x07, 0x02, 0x01, - 0xFF, 0xDF, 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, - 0x00, 0x03, 0x02, 0x00, 0x09, 0x07, 0xA0, 0xC2, - 0x04, 0x01, 0x8A, 0x01, 0x80, 0x00, 0x4A, 0x52, - 0x89, 0xD2, 0x0A, 0xC8, 0x04, 0x01, 0xA0, 0xD2, - 0x04, 0x01, 0xF9, 0x16, 0x49, 0x05, 0x89, 0x01, - 0x00, 0x80, 0x49, 0x01, 0x00, 0x40, 0x0E, 0x13, - 0x09, 0xF8, 0x3A, 0x07, 0x60, 0xC2, 0x36, 0x07, - 0x03, 0x16, 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, - 0xE0, 0x04, 0x36, 0x07, 0x54, 0x04, 0x90, 0x03, - 0xFF, 0xFF, 0x80, 0x03, 0x60, 0x22, 0x86, 0xE1, - 0xC2, 0x13, 0xE0, 0x04, 0x82, 0x01, 0x60, 0x04, - 0xE0, 0xA3, 0x00, 0x03, 0x02, 0x00, 0xA0, 0x07, - 0x62, 0x09, 0xE8, 0x03, 0xC9, 0x04, 0xA0, 0xC1, - 0x34, 0x06, 0x04, 0x16, 0xA0, 0x06, 0x50, 0xB5, - 0xE0, 0x04, 0x20, 0x09, 0x86, 0x07, 0xE8, 0x05, - 0xA0, 0x01, 0x40, 0x01, 0x00, 0x80, 0x20, 0xC2, - 0x84, 0x01, 0x20, 0x48, 0x08, 0xE0, 0x84, 0x01, - 0x20, 0x22, 0x08, 0xE0, 0x08, 0x13, 0x60, 0x01, - 0xAE, 0x01, 0x01, 0x00, 0x04, 0x16, 0xE0, 0x01, - 0x34, 0x06, 0x00, 0x80, 0x06, 0x10, 0x20, 0xC2, - 0x32, 0x09, 0x06, 0x13, 0xE0, 0x01, 0x34, 0x06, - 0x00, 0x08, 0xE0, 0x04, 0x30, 0x06, 0x09, 0x07, - 0xA0, 0x05, 0xEE, 0x05, 0x20, 0x06, 0xEC, 0x05, - 0x02, 0x16, 0x16, 0xC2, 0x03, 0x16, 0x49, 0xC2, - 0x12, 0x16, 0x80, 0x03, 0x98, 0xC5, 0xE8, 0xC1, - 0x02, 0x00, 0xE0, 0xE9, 0x14, 0xE0, 0x04, 0x00, - 0xD7, 0x04, 0x27, 0x02, 0x08, 0x00, 0xA0, 0x06, - 0xE6, 0xB4, 0x16, 0xC2, 0x04, 0x13, 0x28, 0xC8, - 0x08, 0x00, 0xEC, 0x05, 0xEF, 0x13, 0x54, 0x04, - 0x00, 0x03, 0x02, 0x00, 0xE0, 0xC1, 0x86, 0x01, - 0x47, 0x02, 0x0E, 0x00, 0xA7, 0xC2, 0x90, 0xE1, - 0x5A, 0x04, 0x8A, 0x07, 0x00, 0xA0, 0x0A, 0xC8, - 0x86, 0x01, 0xC7, 0xA1, 0x27, 0x02, 0x98, 0xE1, - 0x37, 0xE8, 0x34, 0x06, 0x17, 0xE8, 0xD2, 0x06, - 0xE0, 0x04, 0x30, 0x06, 0x60, 0x04, 0xF2, 0xA9, - 0x0A, 0xE8, 0xD2, 0x06, 0xE0, 0x01, 0x34, 0x06, - 0x00, 0x08, 0xE0, 0x04, 0x30, 0x06, 0x20, 0xE0, - 0x18, 0xE0, 0x5B, 0x04, 0xA0, 0x05, 0x20, 0x09, - 0x20, 0x88, 0x20, 0x09, 0x16, 0xE0, 0xE5, 0x1A, - 0xE0, 0x04, 0x20, 0x09, 0xA0, 0x06, 0xD0, 0xD5, - 0x80, 0x03, 0xA0, 0x05, 0x32, 0x09, 0x80, 0x03, - 0x01, 0xC3, 0xFB, 0x13, 0x60, 0x01, 0x6A, 0x09, - 0x01, 0x00, 0x78, 0x13, 0xA0, 0x05, 0x32, 0x09, - 0x75, 0x10, 0x41, 0xC0, 0x06, 0x13, 0x01, 0xC8, - 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, 0x01, 0x11, - 0x7B, 0x10, 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, - 0x79, 0x16, 0x20, 0xD8, 0x2F, 0x09, 0x83, 0x01, - 0x41, 0xC0, 0x04, 0x13, 0x01, 0xC8, 0x8A, 0x01, - 0x01, 0xC8, 0x18, 0x09, 0x86, 0x07, 0x43, 0x00, - 0x06, 0xC8, 0x6C, 0x01, 0x07, 0x02, 0x02, 0xFC, - 0x17, 0xC2, 0x60, 0x04, 0xFA, 0xA6, 0xE0, 0x04, - 0x18, 0x09, 0xC7, 0x61, 0x08, 0x07, 0x60, 0x01, - 0x06, 0xFC, 0x40, 0x00, 0x02, 0x13, 0x08, 0x02, - 0x01, 0x00, 0x09, 0x10, 0x4C, 0xC2, 0x20, 0xC3, - 0x00, 0xFC, 0x2A, 0x13, 0x0C, 0xC8, 0x6C, 0x01, - 0xE0, 0xC2, 0x02, 0xFC, 0x1B, 0x11, 0x4B, 0x01, - 0x00, 0x01, 0xF4, 0x16, 0xC8, 0x22, 0x12, 0x13, - 0xCB, 0x01, 0x00, 0x40, 0x0B, 0xC8, 0x02, 0xFC, - 0x0D, 0x10, 0xE0, 0xC1, 0x18, 0x09, 0x01, 0xC3, - 0x21, 0x13, 0x4C, 0xC2, 0x15, 0x13, 0x0C, 0xC8, - 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, 0x06, 0x11, - 0xCC, 0x81, 0xD5, 0x13, 0x4C, 0xC2, 0x20, 0xC3, - 0x00, 0xFC, 0xF4, 0x10, 0x09, 0xC8, 0x6C, 0x01, - 0xE0, 0xC2, 0x02, 0xFC, 0x1E, 0x16, 0xA0, 0x07, - 0x02, 0xFC, 0x00, 0x80, 0x09, 0xC3, 0x19, 0x10, - 0x09, 0xC8, 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, - 0x05, 0x16, 0xA0, 0x07, 0x02, 0xFC, 0x00, 0x80, - 0x09, 0xC3, 0x0F, 0x10, 0xE0, 0xC2, 0x02, 0x0C, - 0x01, 0x11, 0x1E, 0x10, 0x20, 0xD8, 0x00, 0xE2, - 0x83, 0x01, 0x8B, 0x09, 0x8B, 0x09, 0x8B, 0x09, - 0x8B, 0x09, 0xA0, 0x07, 0x8A, 0x01, 0x43, 0x00, - 0x13, 0x10, 0x0C, 0xC8, 0x8A, 0x01, 0x0C, 0xC8, - 0x18, 0x09, 0x0E, 0x10, 0x00, 0x03, 0x02, 0x00, - 0xE0, 0xC0, 0x6C, 0x01, 0x20, 0xC3, 0x8A, 0x01, - 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, 0x81, 0x13, - 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, 0xB9, 0x13, - 0x01, 0x83, 0x31, 0x16, 0x03, 0xC8, 0x6C, 0x01, - 0x40, 0x01, 0x10, 0x00, 0x14, 0x16, 0xE0, 0xC2, - 0x2E, 0x06, 0x11, 0x13, 0xE0, 0xC2, 0xF8, 0x05, - 0x0E, 0x13, 0xE0, 0x01, 0x3A, 0x07, 0x00, 0x80, - 0x80, 0x01, 0x10, 0x00, 0xE0, 0xC2, 0x36, 0x07, - 0x06, 0x13, 0xE0, 0x04, 0x36, 0x07, 0x80, 0x01, - 0x20, 0x00, 0x60, 0x04, 0xF2, 0xA9, 0x40, 0x01, - 0x20, 0x00, 0xF9, 0x13, 0x90, 0x03, 0xFF, 0x11, - 0x80, 0x03, 0x08, 0x01, 0x00, 0x04, 0x19, 0x16, - 0x60, 0x01, 0x6A, 0x09, 0x01, 0x00, 0x15, 0x16, - 0x88, 0x01, 0x00, 0x1A, 0xC8, 0x01, 0x00, 0x01, - 0xC8, 0xC5, 0x0F, 0x10, 0xE0, 0x04, 0x18, 0x09, - 0xC0, 0x01, 0x04, 0x00, 0x15, 0x10, 0x81, 0xC1, - 0x01, 0xC8, 0x6C, 0x01, 0x07, 0x02, 0x00, 0xFC, - 0x77, 0xC0, 0x17, 0xC2, 0x48, 0x01, 0x00, 0x18, - 0xE4, 0x13, 0x40, 0x01, 0x40, 0x00, 0x15, 0x16, - 0x80, 0x01, 0x45, 0x00, 0x46, 0xC1, 0x20, 0xD0, - 0x07, 0xFC, 0x60, 0x81, 0x18, 0x09, 0xE6, 0x13, - 0xE0, 0xC2, 0x08, 0xFC, 0x08, 0x11, 0xE0, 0xC2, - 0x0E, 0xFC, 0x07, 0x15, 0x06, 0x13, 0xE0, 0xC2, - 0x14, 0xFC, 0x03, 0x15, 0x02, 0x13, 0xC0, 0x01, - 0x01, 0x00, 0x48, 0x01, 0x00, 0x01, 0x11, 0x13, - 0x40, 0x01, 0x80, 0x40, 0x69, 0x13, 0x60, 0x04, - 0x66, 0xA6, 0x48, 0x01, 0x01, 0x00, 0x03, 0x16, - 0x40, 0x01, 0x00, 0x40, 0x0B, 0x16, 0xC8, 0x01, - 0x00, 0x40, 0xA0, 0x05, 0x32, 0x09, 0xC8, 0xC5, - 0x05, 0x10, 0xC0, 0x01, 0x40, 0x00, 0x40, 0x01, - 0x04, 0x00, 0xEF, 0x13, 0xB7, 0x01, 0x20, 0x00, - 0xD7, 0xC2, 0xC4, 0x62, 0x0B, 0x05, 0x2B, 0x02, - 0xFC, 0xFF, 0xCB, 0xC5, 0x02, 0x15, 0x46, 0x81, - 0x6A, 0x13, 0x08, 0x01, 0x00, 0x5E, 0x67, 0x16, - 0x08, 0x01, 0x88, 0x00, 0x13, 0x16, 0x86, 0x02, - 0x43, 0x00, 0x25, 0x16, 0x40, 0x01, 0x00, 0x40, - 0x0B, 0x13, 0x08, 0x01, 0x03, 0x00, 0x08, 0x13, - 0x84, 0xC2, 0x2A, 0x02, 0xD8, 0xFF, 0x06, 0xC8, - 0x6C, 0x01, 0x0A, 0x68, 0x04, 0xFC, 0x73, 0x10, - 0x60, 0x04, 0xD2, 0xA8, 0x40, 0x01, 0x01, 0x00, - 0xEA, 0x13, 0x08, 0x01, 0x02, 0x00, 0xE7, 0x16, - 0x48, 0x01, 0x01, 0x00, 0xE4, 0x16, 0x40, 0x01, - 0x00, 0x40, 0x04, 0x16, 0x60, 0x01, 0xA8, 0x09, - 0x80, 0x00, 0xDD, 0x13, 0x8A, 0x07, 0x80, 0x00, - 0xA0, 0x06, 0x32, 0xA5, 0xD8, 0x10, 0x00, 0xC0, - 0xE7, 0x11, 0x60, 0xC2, 0x6A, 0x09, 0x40, 0x01, - 0x00, 0x40, 0x0A, 0x13, 0x48, 0x01, 0x01, 0x00, - 0x34, 0x13, 0x48, 0x01, 0x02, 0x00, 0x0A, 0x13, - 0x49, 0x01, 0x04, 0x00, 0xD9, 0x16, 0x06, 0x10, - 0x49, 0x01, 0x02, 0x00, 0x03, 0x13, 0x08, 0x01, - 0x03, 0x00, 0x6E, 0x13, 0x49, 0x01, 0x01, 0x00, - 0x12, 0x13, 0x40, 0x01, 0x80, 0x40, 0x01, 0x16, - 0x46, 0xC1, 0xE0, 0x04, 0x00, 0xFC, 0x87, 0x07, - 0xF8, 0x05, 0x17, 0xC2, 0x14, 0x13, 0xC7, 0x05, - 0x17, 0xC8, 0x6C, 0x01, 0x05, 0xC8, 0x00, 0xFC, - 0xC6, 0xC5, 0x60, 0x04, 0x66, 0xA6, 0x07, 0x02, - 0x02, 0xFC, 0xE0, 0xA1, 0x2C, 0x09, 0xE0, 0xCD, - 0xEE, 0x05, 0xE0, 0xC5, 0x04, 0xFC, 0x20, 0xC8, - 0x2C, 0x09, 0x04, 0xFC, 0xE2, 0x10, 0xC5, 0xCD, - 0xC6, 0xC5, 0x60, 0x04, 0x66, 0xA6, 0x60, 0x04, - 0xB6, 0xA8, 0x06, 0xC8, 0x6C, 0x01, 0x85, 0x81, - 0x1A, 0x13, 0xE0, 0xC2, 0x04, 0xFC, 0x17, 0x15, - 0x86, 0xC2, 0x8A, 0xA2, 0xAA, 0xC1, 0x32, 0x0C, - 0x06, 0xC8, 0x6C, 0x01, 0x0B, 0xA8, 0x04, 0xFC, - 0x1A, 0x09, 0x0A, 0xC8, 0x6C, 0x01, 0xE0, 0xC2, - 0x02, 0xFC, 0xE0, 0x04, 0x00, 0xFC, 0x06, 0xC8, - 0x6C, 0x01, 0x0B, 0xC8, 0x02, 0xFC, 0xA0, 0x06, - 0x3E, 0xB4, 0x06, 0xC8, 0x6C, 0x01, 0xE0, 0x04, - 0x00, 0xFC, 0xA0, 0x01, 0x02, 0xFC, 0x02, 0x00, - 0x87, 0x07, 0x30, 0x06, 0xE7, 0x01, 0x04, 0x00, - 0x40, 0x00, 0xD7, 0x04, 0x27, 0x02, 0x0C, 0x00, - 0x05, 0xC2, 0x60, 0x01, 0x6A, 0x09, 0x04, 0x00, - 0x03, 0x16, 0xE0, 0x01, 0x02, 0xFC, 0x20, 0x00, - 0xA0, 0x06, 0xFC, 0xB4, 0xC0, 0x01, 0x20, 0x00, - 0x60, 0x04, 0x66, 0xA6, 0x48, 0x01, 0x00, 0x18, - 0x03, 0x13, 0x48, 0x01, 0x00, 0x10, 0x02, 0x16, - 0xA0, 0x05, 0x32, 0x09, 0x86, 0x02, 0x43, 0x00, - 0x03, 0x13, 0x40, 0x01, 0x80, 0x40, 0x98, 0x13, - 0x06, 0xC8, 0x6C, 0x01, 0xE0, 0x04, 0x00, 0xFC, - 0x85, 0xC2, 0xA0, 0x06, 0x3E, 0xB4, 0x20, 0x06, - 0x62, 0x09, 0xE6, 0x16, 0xA0, 0x06, 0xD0, 0xD5, - 0xE3, 0x10, 0xA0, 0xC2, 0xF6, 0x05, 0x56, 0x16, - 0x19, 0xC8, 0xF0, 0x05, 0xA9, 0xC2, 0x0A, 0x00, - 0x0D, 0x11, 0xA0, 0xF2, 0x2E, 0x09, 0x0A, 0xD8, - 0x80, 0x01, 0x29, 0xC8, 0x06, 0x00, 0x8C, 0x01, - 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, 0x09, 0xC8, - 0xF4, 0x05, 0x46, 0x10, 0x29, 0xC8, 0x06, 0x00, - 0x6C, 0x01, 0x20, 0xC8, 0x0E, 0xFC, 0xBC, 0x01, - 0x20, 0xC8, 0x10, 0xFC, 0xB0, 0x01, 0x20, 0xC8, - 0x12, 0xFC, 0xB2, 0x01, 0xA0, 0xF2, 0x2E, 0x09, - 0x8A, 0x01, 0x00, 0x10, 0xA0, 0x01, 0x80, 0x01, - 0x00, 0xC4, 0xE1, 0x10, 0x47, 0x01, 0x08, 0x00, - 0x06, 0x16, 0xA8, 0xC2, 0x06, 0x00, 0xA0, 0x06, - 0x3E, 0xB4, 0xE8, 0x04, 0x06, 0x00, 0x07, 0x01, - 0x20, 0x00, 0x31, 0x13, 0xE8, 0x04, 0x02, 0x00, - 0x3B, 0x10, 0xE0, 0x04, 0x00, 0xFC, 0xA0, 0x06, - 0x3E, 0xB4, 0x29, 0x10, 0x00, 0x03, 0x02, 0x00, - 0x20, 0xC2, 0x8C, 0x01, 0xE0, 0xC0, 0x6C, 0x01, - 0x20, 0xC2, 0xF4, 0x05, 0x28, 0xC8, 0x08, 0x00, - 0x6C, 0x01, 0xE8, 0xC1, 0x0A, 0x00, 0x20, 0xC3, - 0x02, 0xFC, 0x8C, 0x01, 0x20, 0x00, 0x0C, 0xC8, - 0x02, 0xFC, 0x0C, 0x01, 0x00, 0xFE, 0x3B, 0x16, - 0x47, 0x01, 0x40, 0x00, 0x50, 0x13, 0x60, 0xC2, - 0xF0, 0x05, 0xA7, 0x16, 0xE0, 0x04, 0xF4, 0x05, - 0x0C, 0xCA, 0x08, 0x00, 0x47, 0x01, 0x80, 0x00, - 0xC9, 0x16, 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, - 0xA0, 0xC2, 0x00, 0xFC, 0xD2, 0x16, 0xE8, 0xC1, - 0x02, 0x00, 0xD7, 0xC2, 0x0F, 0x16, 0x27, 0x02, - 0x10, 0x00, 0xD8, 0x04, 0x57, 0xC2, 0x0E, 0x13, - 0xC7, 0x05, 0x57, 0xC2, 0x48, 0xC6, 0xC8, 0xC5, - 0x03, 0xC8, 0x6C, 0x01, 0x0D, 0x11, 0x90, 0x03, - 0xFF, 0x11, 0x80, 0x03, 0xD7, 0x04, 0xC3, 0x01, - 0x00, 0x80, 0xED, 0x10, 0xE7, 0x01, 0xF4, 0xFF, - 0x20, 0x00, 0xC8, 0xCD, 0xC8, 0xC5, 0xF0, 0x10, - 0x90, 0x03, 0xF8, 0x11, 0xE0, 0x02, 0xC0, 0x00, - 0x60, 0xC3, 0xFA, 0x00, 0xA0, 0xC3, 0xFC, 0x00, - 0xE0, 0xC3, 0xFE, 0x00, 0x54, 0x04, 0xE8, 0xC2, - 0x08, 0x00, 0xA8, 0xC2, 0x06, 0x00, 0x0C, 0xC3, - 0x33, 0x11, 0x20, 0x23, 0x0A, 0xE0, 0x45, 0x13, - 0x20, 0x23, 0x10, 0xE0, 0x46, 0x13, 0x20, 0x23, - 0x0E, 0xE0, 0x13, 0x13, 0xE0, 0x21, 0x16, 0xE0, - 0xB6, 0x16, 0x20, 0x23, 0x06, 0xE0, 0x03, 0x16, - 0x20, 0x27, 0xA8, 0xE4, 0x0A, 0x13, 0xE8, 0xC2, - 0x08, 0x00, 0xA8, 0xC2, 0x06, 0x00, 0x4C, 0x01, - 0x88, 0x00, 0xA9, 0x16, 0x0C, 0x01, 0x44, 0x00, - 0xA6, 0x16, 0x20, 0x06, 0x16, 0x09, 0xA3, 0x13, - 0x0A, 0xC8, 0x6C, 0x01, 0x20, 0xC8, 0x04, 0xE0, - 0x02, 0xFC, 0x0B, 0xC8, 0x6C, 0x01, 0xA0, 0x07, - 0x02, 0xFC, 0x00, 0x81, 0x20, 0xC3, 0x80, 0x01, - 0xA0, 0x01, 0x80, 0x01, 0x00, 0xC4, 0x0C, 0xC8, - 0x80, 0x01, 0x0A, 0xC8, 0x8C, 0x01, 0xAC, 0x10, - 0x0A, 0xC2, 0x0F, 0x13, 0x08, 0xC8, 0x6C, 0x01, - 0xA0, 0xC2, 0x00, 0xFC, 0x20, 0xC3, 0x02, 0xFC, - 0x20, 0x23, 0x12, 0xE0, 0xF5, 0x16, 0x0B, 0xC8, - 0x6C, 0x01, 0x0C, 0xC8, 0x02, 0xFC, 0x60, 0x04, - 0x72, 0xA9, 0x8A, 0x07, 0x00, 0x04, 0x60, 0x04, - 0x8A, 0xA3, 0x8A, 0x07, 0x20, 0x00, 0x60, 0x04, - 0x8A, 0xA3, 0x8A, 0x07, 0x00, 0x02, 0x20, 0x27, - 0x0E, 0xE0, 0x04, 0x16, 0xA0, 0x06, 0x32, 0xA5, - 0xC3, 0x01, 0x00, 0x80, 0xA8, 0xC2, 0x06, 0x00, - 0x60, 0x04, 0x98, 0xA9, 0x00, 0x03, 0x02, 0x00, - 0xC0, 0x01, 0x10, 0x00, 0xE0, 0xC2, 0x2E, 0x06, - 0x08, 0x13, 0xE0, 0xC2, 0xF8, 0x05, 0x05, 0x13, - 0xE0, 0x01, 0x3A, 0x07, 0x00, 0x80, 0x80, 0x01, - 0x10, 0x00, 0x90, 0x03, 0xFF, 0x7F, 0x80, 0x03, - 0x00, 0x03, 0x02, 0x00, 0x20, 0xC2, 0xF6, 0x05, - 0x20, 0xE2, 0xF4, 0x05, 0x0E, 0x16, 0x20, 0xD8, - 0x2E, 0x09, 0x80, 0x01, 0x2B, 0xC8, 0x06, 0x00, - 0x8C, 0x01, 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, - 0x0B, 0xC8, 0xF4, 0x05, 0x90, 0x03, 0xFF, 0xFF, - 0x80, 0x03, 0x87, 0x07, 0xF0, 0x05, 0xDB, 0x04, - 0x57, 0xC2, 0x05, 0x16, 0xCB, 0xCD, 0xCB, 0xC5, - 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, 0xC7, 0x05, - 0x57, 0xC2, 0x4B, 0xC6, 0xCB, 0xC5, 0x90, 0x03, - 0xFF, 0xFF, 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, - 0x0B, 0xC2, 0x20, 0xC3, 0xF4, 0x05, 0x0F, 0x13, - 0xA8, 0xC2, 0x0A, 0x00, 0x4A, 0x01, 0x10, 0x00, - 0x16, 0x16, 0xA0, 0x22, 0x04, 0xE0, 0x1A, 0x16, - 0x08, 0xC3, 0xA0, 0x06, 0x36, 0xAC, 0x0C, 0xC2, - 0x20, 0xC3, 0xF4, 0x05, 0x13, 0x16, 0x68, 0x01, - 0x0A, 0x00, 0x10, 0x00, 0x03, 0x13, 0xE0, 0xC2, - 0xF6, 0x05, 0x05, 0x16, 0xA0, 0x06, 0x78, 0xAC, - 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, 0x87, 0x07, - 0xF0, 0x05, 0xA0, 0x06, 0xE6, 0xB4, 0x90, 0x03, - 0xFF, 0xFF, 0x80, 0x03, 0x87, 0x07, 0xF0, 0x05, - 0xA0, 0x06, 0x2C, 0xB5, 0x80, 0x03, 0x00, 0x03, - 0x02, 0x00, 0x87, 0x07, 0xF0, 0x05, 0xCB, 0xC2, - 0x08, 0x16, 0xA0, 0x06, 0x36, 0xAC, 0x20, 0x07, - 0xF6, 0x05, 0x60, 0xCB, 0xF4, 0x05, 0x02, 0x00, - 0x80, 0x03, 0xE0, 0x04, 0xF6, 0x05, 0x20, 0xC2, - 0xF4, 0x05, 0x05, 0x16, 0x17, 0xC2, 0x03, 0x13, - 0xD8, 0xC5, 0xA0, 0x06, 0x78, 0xAC, 0x80, 0x03, - 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC3, 0xA0, 0x06, - 0x36, 0xAC, 0x8C, 0xC2, 0xCC, 0xC1, 0x27, 0x02, - 0x10, 0x00, 0x88, 0x07, 0xF0, 0x05, 0x88, 0xC1, - 0x18, 0xC2, 0x26, 0x13, 0xA8, 0x82, 0x02, 0x00, - 0xFA, 0x16, 0xE8, 0xC2, 0x0A, 0x00, 0xE0, 0x22, - 0x1E, 0xE0, 0xF5, 0x16, 0x98, 0xC5, 0xE0, 0x22, - 0x1C, 0xE0, 0x0B, 0x16, 0x28, 0xC8, 0x06, 0x00, - 0xF4, 0x00, 0xE0, 0x02, 0xE0, 0x00, 0xA0, 0x06, - 0x3E, 0xB4, 0xE0, 0x02, 0xC0, 0x00, 0xE8, 0x04, - 0x06, 0x00, 0xE0, 0x22, 0x18, 0xE0, 0xE4, 0x13, - 0x20, 0xEA, 0x22, 0xE0, 0x0A, 0x00, 0xA0, 0xEA, - 0x18, 0xE0, 0x04, 0x00, 0xDA, 0x04, 0xA0, 0x06, - 0xE6, 0xB4, 0x47, 0x06, 0x06, 0xC2, 0xD8, 0x10, - 0x06, 0xC8, 0xF2, 0x05, 0x60, 0xCB, 0xF4, 0x05, - 0x02, 0x00, 0x54, 0x04, 0x20, 0xC2, 0xF4, 0x05, - 0x13, 0x13, 0xE0, 0x01, 0x9C, 0x01, 0x00, 0x40, - 0x8B, 0x0B, 0x8B, 0x0B, 0x60, 0x01, 0x9C, 0x01, - 0x00, 0x40, 0x0A, 0x16, 0x60, 0xC2, 0x6C, 0x01, - 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, 0xA0, 0xC2, - 0x02, 0xFC, 0x03, 0x11, 0x09, 0xC8, 0x6C, 0x01, - 0x5B, 0x04, 0x09, 0xC8, 0x6C, 0x01, 0x4B, 0xC2, - 0x87, 0x07, 0xF0, 0x05, 0xA0, 0x06, 0x2C, 0xB5, - 0xE0, 0x04, 0xF4, 0x05, 0x59, 0x04, 0xA8, 0xC2, - 0x0A, 0x00, 0x0D, 0x11, 0xA0, 0xF2, 0x2E, 0x09, - 0x0A, 0xD8, 0x80, 0x01, 0x28, 0xC8, 0x06, 0x00, - 0x8C, 0x01, 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, - 0x08, 0xC8, 0xF4, 0x05, 0x5B, 0x04, 0x20, 0xC3, - 0x6C, 0x01, 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, - 0x20, 0xC8, 0x0E, 0xFC, 0xBC, 0x01, 0x20, 0xC8, - 0x10, 0xFC, 0xB0, 0x01, 0x20, 0xC8, 0x12, 0xFC, - 0xB2, 0x01, 0x0C, 0xC8, 0x6C, 0x01, 0xA0, 0xF2, - 0x2E, 0x09, 0x8A, 0x01, 0x00, 0x10, 0xA0, 0x01, - 0x80, 0x01, 0x00, 0xC4, 0xDD, 0x10, 0x48, 0xC0, - 0x89, 0xC0, 0x81, 0x60, 0xC2, 0x05, 0x5B, 0x04, - 0x0B, 0xC3, 0xA0, 0x06, 0xC8, 0xAC, 0x41, 0xCC, - 0x42, 0x06, 0xFD, 0x16, 0xA0, 0x06, 0xC8, 0xAC, - 0x01, 0xC1, 0x44, 0x8C, 0x12, 0x16, 0xC4, 0x05, - 0x42, 0x06, 0xFB, 0x16, 0x04, 0x02, 0x0E, 0xAD, - 0x03, 0x02, 0x01, 0x01, 0x94, 0x06, 0x03, 0x02, - 0x5A, 0x5A, 0x94, 0x06, 0x43, 0x05, 0x94, 0x06, - 0x03, 0x07, 0x94, 0x06, 0xC3, 0x04, 0x94, 0x06, - 0xCC, 0x05, 0x5C, 0x04, 0xCB, 0xC1, 0xA0, 0x06, - 0xC8, 0xAC, 0x43, 0xCC, 0x42, 0x06, 0xFD, 0x16, - 0xA0, 0x06, 0xC8, 0xAC, 0x43, 0x8C, 0xF5, 0x16, - 0x42, 0x06, 0xFC, 0x16, 0x57, 0x04, 0x8B, 0xC2, - 0x08, 0xC0, 0x49, 0xC1, 0x85, 0x05, 0x80, 0x02, - 0x40, 0x00, 0x03, 0x11, 0x80, 0x02, 0x4F, 0x00, - 0x45, 0x12, 0x01, 0x02, 0xC8, 0xAC, 0xA1, 0x09, - 0x01, 0x80, 0x40, 0x13, 0x01, 0x02, 0xF8, 0xAD, - 0xA1, 0x09, 0x01, 0x80, 0x3B, 0x13, 0x60, 0xC0, - 0x06, 0x00, 0xA1, 0x09, 0x01, 0x80, 0x36, 0x13, - 0x81, 0x05, 0x01, 0x80, 0x33, 0x13, 0x4A, 0xC0, - 0xA1, 0x09, 0x01, 0x80, 0x2F, 0x13, 0x00, 0xC8, - 0x6A, 0x01, 0x80, 0x02, 0x80, 0x00, 0x17, 0x14, - 0x01, 0x02, 0x00, 0xF8, 0xA0, 0xC1, 0x40, 0x01, - 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, 0x02, 0x02, - 0x00, 0x10, 0x03, 0x02, 0x00, 0x04, 0xB1, 0xCC, - 0x43, 0x06, 0xFD, 0x16, 0xA0, 0x01, 0x40, 0x01, - 0x00, 0x40, 0x08, 0x02, 0x10, 0xF8, 0x06, 0xC8, - 0x40, 0x01, 0x00, 0xC0, 0x02, 0x13, 0x08, 0x02, - 0x00, 0xF8, 0x09, 0x02, 0xFE, 0xFB, 0xA0, 0x06, - 0xD2, 0xAC, 0x25, 0x10, 0x80, 0x02, 0x80, 0x00, - 0x09, 0x14, 0x01, 0x02, 0x00, 0xF8, 0x02, 0x02, - 0x00, 0x10, 0x03, 0x02, 0x00, 0x04, 0x72, 0xCC, - 0x43, 0x06, 0xFD, 0x16, 0x80, 0x05, 0x80, 0x02, - 0x80, 0x00, 0x04, 0x12, 0x60, 0x01, 0x04, 0x01, - 0x20, 0x00, 0x05, 0x13, 0x40, 0x81, 0xAB, 0x16, - 0x80, 0x02, 0x80, 0x00, 0x0B, 0x14, 0xA0, 0x07, - 0x6A, 0x01, 0x7E, 0x00, 0x02, 0x02, 0x00, 0x10, - 0x03, 0x02, 0x00, 0x04, 0xC1, 0x04, 0x81, 0xCC, - 0x43, 0x06, 0xFD, 0x16, 0xCA, 0x05, 0x5A, 0x04, - 0x00, 0x02, 0xEA, 0xAD, 0x01, 0x02, 0x1A, 0xAF, - 0x40, 0x02, 0x00, 0xFC, 0x41, 0x02, 0x00, 0xFC, - 0x40, 0x80, 0x04, 0x13, 0xA0, 0x07, 0x04, 0x01, - 0x3C, 0x00, 0x5B, 0x04, 0xC0, 0x04, 0x01, 0x02, - 0x08, 0x00, 0x02, 0x02, 0x00, 0x12, 0xE0, 0xC1, - 0x40, 0x01, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, - 0x03, 0x02, 0x00, 0x01, 0x00, 0xC8, 0x6A, 0x01, - 0xA0, 0xCC, 0x10, 0xF8, 0x80, 0x05, 0x03, 0x06, - 0xF9, 0x16, 0x22, 0x02, 0x00, 0x02, 0x01, 0x06, - 0xF3, 0x16, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, - 0x07, 0xC8, 0x40, 0x01, 0x00, 0x02, 0x00, 0x08, - 0x40, 0xC0, 0x01, 0x06, 0x01, 0xC8, 0x6A, 0x01, - 0x61, 0x02, 0x00, 0x80, 0x01, 0xC8, 0x10, 0xF8, - 0x00, 0x06, 0xF6, 0x16, 0xC0, 0x04, 0xC8, 0x04, - 0xC9, 0x04, 0x03, 0x02, 0x00, 0x08, 0x00, 0xC8, - 0x6A, 0x01, 0x80, 0xC1, 0x66, 0x02, 0x00, 0x80, - 0x20, 0xC1, 0x10, 0xF8, 0x06, 0x81, 0x15, 0x16, - 0x08, 0xC2, 0x06, 0x13, 0x80, 0x05, 0x03, 0x06, - 0xF2, 0x16, 0x08, 0xC2, 0x0D, 0x13, 0x19, 0x10, - 0xA0, 0x07, 0x10, 0xF8, 0x55, 0x55, 0x20, 0xC1, - 0x10, 0xF8, 0x84, 0x02, 0x55, 0x55, 0x02, 0x16, - 0x06, 0xC2, 0xF0, 0x10, 0x06, 0x81, 0xEE, 0x13, - 0x5B, 0x04, 0xA0, 0x07, 0x10, 0xF8, 0x55, 0x55, - 0x60, 0xC1, 0x10, 0xF8, 0x05, 0x81, 0x03, 0x13, - 0x85, 0x02, 0x55, 0x55, 0xF5, 0x16, 0x08, 0xC2, - 0xE1, 0x13, 0x40, 0xC2, 0x09, 0x06, 0x48, 0x02, - 0xFF, 0x07, 0xC0, 0x04, 0x01, 0x02, 0x08, 0x00, - 0x02, 0x02, 0x00, 0x12, 0x03, 0x02, 0x00, 0x01, - 0x00, 0xC8, 0x6A, 0x01, 0x32, 0xC8, 0x10, 0xF8, - 0x80, 0x05, 0x03, 0x06, 0xF9, 0x16, 0x22, 0x02, - 0x00, 0x02, 0x01, 0x06, 0xF3, 0x16, 0x88, 0x02, - 0x40, 0x00, 0x13, 0x15, 0x89, 0x02, 0x4F, 0x00, - 0x10, 0x11, 0xC0, 0x04, 0x02, 0x02, 0x00, 0x12, - 0x01, 0x02, 0x08, 0x00, 0x03, 0x02, 0x00, 0x01, - 0x80, 0xCC, 0x03, 0x06, 0xFD, 0x16, 0x22, 0x02, - 0x00, 0x02, 0x01, 0x06, 0xF7, 0x16, 0xCB, 0x05, - 0x5B, 0x04, 0xA0, 0x07, 0x04, 0x01, 0x37, 0x00, - 0x5B, 0x04, 0x33, 0x07, 0x33, 0x07, 0x0C, 0x10, - 0x13, 0x07, 0x23, 0x07, 0x02, 0x00, 0xCB, 0xC8, - 0x06, 0x00, 0x23, 0x02, 0x18, 0x00, 0xE0, 0xCC, - 0x6C, 0x01, 0xCD, 0xCC, 0xCE, 0xCC, 0xCF, 0xCC, - 0x83, 0x07, 0x30, 0x06, 0xD3, 0xC1, 0x0A, 0x13, - 0x83, 0x07, 0x36, 0x07, 0xD3, 0xC1, 0x06, 0x13, - 0x83, 0x07, 0xA0, 0x00, 0x93, 0x00, 0x0C, 0xC8, - 0x6C, 0x01, 0x80, 0x03, 0x63, 0x07, 0x02, 0x00, - 0x2A, 0x15, 0x63, 0xC2, 0x04, 0x00, 0x63, 0x42, - 0x06, 0x00, 0xDB, 0x13, 0x63, 0xC3, 0x1A, 0x00, - 0x49, 0xD2, 0x0C, 0x13, 0xC9, 0x06, 0x49, 0x72, - 0x69, 0xD2, 0xC0, 0xE1, 0xC9, 0x06, 0x49, 0x72, - 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, - 0x02, 0x00, 0x52, 0x04, 0x69, 0xC2, 0xC0, 0xE1, - 0x49, 0x72, 0x29, 0x02, 0x10, 0x00, 0xC3, 0xC2, - 0xE9, 0xA2, 0xA8, 0xE1, 0x1B, 0xC3, 0x89, 0x02, - 0x12, 0x00, 0x0F, 0x13, 0xDC, 0xC6, 0x03, 0x16, - 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, - 0x02, 0x00, 0x4C, 0xCB, 0x04, 0x00, 0x90, 0x03, - 0xFF, 0x01, 0x93, 0x00, 0x0C, 0xC8, 0x6C, 0x01, - 0x80, 0x03, 0x0C, 0xC8, 0x6C, 0x01, 0xE0, 0xC6, - 0x00, 0xFC, 0xF1, 0x16, 0xE9, 0x48, 0x04, 0xE0, - 0x04, 0x00, 0x49, 0xCB, 0x02, 0x00, 0x4C, 0xCB, - 0x04, 0x00, 0xED, 0x10, 0x00, 0x03, 0x02, 0x00, - 0xDB, 0xC2, 0x63, 0xC2, 0x04, 0x00, 0x4B, 0x42, - 0x9F, 0x13, 0x49, 0xD2, 0x0E, 0x13, 0xC9, 0x06, - 0x49, 0x72, 0x69, 0xD2, 0xC0, 0xE1, 0xC9, 0x06, - 0x49, 0x72, 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, - 0x49, 0xCB, 0x02, 0x00, 0x90, 0x03, 0xFF, 0xFF, - 0x80, 0x03, 0x69, 0xC2, 0xC0, 0xE1, 0x49, 0x72, - 0x29, 0x02, 0x10, 0x00, 0xC3, 0xC2, 0xE9, 0xA2, - 0xA8, 0xE1, 0x1B, 0xC3, 0x89, 0x02, 0x12, 0x00, - 0x0C, 0x13, 0xDC, 0xC6, 0x03, 0x16, 0xE9, 0x48, - 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, 0x02, 0x00, - 0x4C, 0xCB, 0x04, 0x00, 0x90, 0x03, 0xFF, 0xFF, - 0x80, 0x03, 0x0C, 0xC8, 0x6C, 0x01, 0xE0, 0xC6, - 0x00, 0xFC, 0xF4, 0x16, 0xF0, 0x10, 0x00, 0x03, - 0x02, 0x00, 0xBB, 0xC2, 0xBB, 0xC1, 0x86, 0xD1, - 0x03, 0x13, 0x86, 0xEA, 0x04, 0x00, 0x13, 0x10, - 0xA6, 0xD1, 0xC0, 0xE1, 0xC6, 0x06, 0x86, 0x71, - 0xCA, 0xC1, 0xE6, 0xA1, 0xB8, 0xE1, 0xA6, 0xEA, - 0x14, 0xE0, 0x04, 0x00, 0x1B, 0xC2, 0x86, 0x02, - 0x02, 0x00, 0x03, 0x16, 0xA0, 0x06, 0x0C, 0xB5, - 0x02, 0x10, 0xA0, 0x06, 0xE6, 0xB4, 0xDA, 0x04, - 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0xAB, 0xC2, - 0x06, 0x00, 0x8C, 0x07, 0xE8, 0x05, 0x5C, 0xC2, - 0x16, 0x13, 0xA0, 0xC1, 0xEC, 0x05, 0x8A, 0x81, - 0x1A, 0x1A, 0xC6, 0xC1, 0x09, 0xC2, 0x59, 0xC2, - 0x20, 0x13, 0xE9, 0xA1, 0x08, 0x00, 0x87, 0x82, - 0xF9, 0x12, 0xA9, 0xA2, 0x08, 0x00, 0x87, 0x62, - 0xCA, 0xCA, 0x08, 0x00, 0x4A, 0x6A, 0x08, 0x00, - 0xC9, 0xC6, 0x0B, 0xC6, 0x80, 0x03, 0xCA, 0xCA, - 0x08, 0x00, 0x0A, 0xC8, 0xEC, 0x05, 0xDB, 0x04, - 0x0B, 0xCF, 0x0B, 0xC7, 0x80, 0x03, 0x8A, 0x61, - 0x46, 0xCA, 0x08, 0x00, 0xCA, 0xCA, 0x08, 0x00, - 0x0A, 0xC8, 0xEC, 0x05, 0xC9, 0xC6, 0x0B, 0xC7, - 0x80, 0x03, 0x87, 0x62, 0xCA, 0xCA, 0x08, 0x00, - 0xDB, 0x04, 0x0B, 0xC6, 0x0B, 0xCB, 0x02, 0x00, - 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0xBB, 0xC1, - 0xDB, 0xC2, 0x8C, 0x07, 0xE8, 0x05, 0x4C, 0xC2, - 0xED, 0x04, 0x02, 0x00, 0x09, 0xC2, 0x59, 0xC2, - 0x18, 0x13, 0xA9, 0x81, 0x02, 0x00, 0xFA, 0x16, - 0xE9, 0x82, 0x04, 0x00, 0xF7, 0x16, 0x49, 0xCB, - 0x04, 0x00, 0x99, 0xC2, 0x0A, 0xC6, 0x0A, 0x13, - 0x08, 0x83, 0x04, 0x13, 0xA9, 0xAA, 0x08, 0x00, - 0x08, 0x00, 0x80, 0x03, 0x2A, 0xA8, 0x08, 0x00, - 0xEC, 0x05, 0x80, 0x03, 0x08, 0xCB, 0x02, 0x00, - 0x80, 0x03, 0x2D, 0x07, 0x02, 0x00, 0x8C, 0x07, - 0x08, 0x00, 0x06, 0xA3, 0x4C, 0xC2, 0x09, 0xC2, - 0x59, 0xC2, 0x13, 0x13, 0xE9, 0x82, 0x04, 0x00, - 0xFA, 0x16, 0xAD, 0x07, 0x02, 0x00, 0x01, 0x00, - 0x49, 0xCB, 0x04, 0x00, 0x19, 0xC6, 0x01, 0x13, - 0x80, 0x03, 0x08, 0x83, 0x04, 0x16, 0xA0, 0x49, - 0x14, 0xE0, 0x04, 0x00, 0x80, 0x03, 0x08, 0xCB, - 0x02, 0x00, 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, - 0x0B, 0x06, 0x1F, 0x11, 0x4D, 0x13, 0x8B, 0x07, - 0x00, 0x4E, 0x60, 0x01, 0x42, 0x01, 0x80, 0x00, - 0x09, 0x13, 0x8B, 0x07, 0x00, 0x3A, 0x20, 0xC1, - 0x4E, 0x01, 0x84, 0x02, 0x41, 0x0F, 0x02, 0x11, - 0x8B, 0x07, 0x00, 0x4E, 0x0B, 0xC8, 0x44, 0x01, - 0xA0, 0x07, 0x62, 0x09, 0xE8, 0x03, 0xE0, 0x01, - 0x40, 0x01, 0x00, 0x02, 0xE0, 0x01, 0x40, 0x01, - 0x00, 0x20, 0x84, 0x07, 0x34, 0xAF, 0x60, 0x04, - 0x42, 0xAF, 0x20, 0xC8, 0x16, 0xE0, 0xE0, 0x00, - 0xE0, 0xC2, 0x6A, 0x09, 0xE0, 0x22, 0x10, 0xE0, - 0x03, 0x13, 0x20, 0xE8, 0x14, 0xE0, 0xE0, 0x00, - 0x20, 0xC8, 0x04, 0xE0, 0x82, 0x01, 0x20, 0xC8, - 0xE2, 0x00, 0x8A, 0x01, 0xE0, 0x04, 0x18, 0x09, - 0xE0, 0x04, 0xF4, 0x05, 0xE0, 0x04, 0xF8, 0x05, - 0xE0, 0x04, 0xF0, 0x05, 0xE0, 0x04, 0x42, 0x07, - 0xA0, 0x07, 0x88, 0x01, 0x20, 0x00, 0xE0, 0xC2, - 0x30, 0x09, 0x09, 0x13, 0xA0, 0x07, 0x88, 0x01, - 0x80, 0x00, 0x20, 0xE8, 0x16, 0xE0, 0x80, 0x01, - 0xE0, 0x01, 0x82, 0x01, 0x00, 0x03, 0x8B, 0x07, - 0x00, 0xA0, 0x0B, 0xE8, 0x86, 0x01, 0x80, 0x03, - 0xE0, 0x04, 0x86, 0x01, 0xE0, 0x01, 0x9C, 0x01, - 0x40, 0x00, 0xE0, 0x01, 0x9C, 0x01, 0x00, 0x40, - 0xCB, 0x04, 0xB0, 0x03, 0x0B, 0x06, 0x04, 0x13, - 0x60, 0x01, 0x9C, 0x01, 0x00, 0x40, 0xF9, 0x16, - 0xE0, 0x04, 0x82, 0x01, 0x20, 0xE8, 0x08, 0xE0, - 0x6A, 0x09, 0x8B, 0x07, 0x00, 0x80, 0x0B, 0xC8, - 0x98, 0x07, 0x0B, 0xC8, 0x78, 0x07, 0x20, 0xC8, - 0x04, 0xE0, 0x82, 0x01, 0x8B, 0x07, 0x6F, 0x87, - 0x0B, 0x48, 0x3A, 0x07, 0xE0, 0xC2, 0x50, 0x07, - 0x8B, 0x02, 0x58, 0x07, 0x10, 0x13, 0x20, 0xE8, - 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x00, 0x01, - 0xE0, 0x22, 0x06, 0xE0, 0xF8, 0x13, 0x8B, 0x07, - 0x58, 0x07, 0x0B, 0xC8, 0x50, 0x07, 0x8B, 0x07, - 0x0C, 0xB8, 0x0B, 0xC8, 0x52, 0x07, 0x80, 0x03, - 0x00, 0x03, 0x02, 0x00, 0xE0, 0xC2, 0x1A, 0x09, - 0x0C, 0x13, 0x20, 0x06, 0x1C, 0x09, 0x0B, 0xC8, - 0x6C, 0x01, 0x20, 0xC8, 0x00, 0xFC, 0x1A, 0x09, - 0x4B, 0xCB, 0x02, 0x00, 0x90, 0x03, 0xFF, 0xFF, - 0x80, 0x03, 0x41, 0xC0, 0x0F, 0x13, 0x81, 0x80, - 0x0D, 0x13, 0x82, 0xA0, 0xE2, 0xC2, 0x32, 0x0C, - 0x12, 0x09, 0x0B, 0xC8, 0x6C, 0x01, 0xE0, 0x04, - 0x00, 0xFC, 0x20, 0xC3, 0x02, 0xFC, 0x07, 0x11, - 0x02, 0xC8, 0x00, 0xFC, 0xED, 0x04, 0x02, 0x00, - 0xE0, 0x04, 0x6C, 0x01, 0x80, 0x03, 0x42, 0xCB, - 0x02, 0x00, 0x02, 0xC8, 0x6C, 0x01, 0x8B, 0xC0, - 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0x83, 0x07, - 0x00, 0x80, 0x60, 0xC2, 0x7E, 0x09, 0x09, 0xC1, - 0x24, 0x02, 0xF8, 0xFF, 0xA9, 0x08, 0x01, 0x02, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0B, 0x02, - 0x00, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x07, 0x02, - 0x00, 0x00, 0x2C, 0xCB, 0x32, 0x0C, 0x32, 0x0C, - 0x06, 0x13, 0x8B, 0x05, 0xCC, 0x05, 0x0B, 0x88, - 0x46, 0x04, 0x27, 0x1B, 0xF6, 0x10, 0x09, 0xC2, - 0x8B, 0xC2, 0x08, 0x06, 0x0A, 0x13, 0x8B, 0x05, - 0xCC, 0x05, 0x0B, 0x88, 0x46, 0x04, 0x1D, 0x1B, - 0x2C, 0xCB, 0x32, 0x0C, 0x32, 0x0C, 0xED, 0x16, - 0xF4, 0x10, 0x82, 0xC0, 0x14, 0x13, 0x02, 0xC8, - 0x6C, 0x01, 0x0A, 0xC8, 0x00, 0xFC, 0x0A, 0xC8, - 0x6C, 0x01, 0xE0, 0x04, 0x00, 0xFC, 0xA0, 0x07, - 0x02, 0xFC, 0x00, 0x80, 0x04, 0xC8, 0x04, 0xFC, - 0x0A, 0xC2, 0x08, 0xA2, 0x02, 0xCA, 0x32, 0x0C, - 0x8A, 0xC0, 0x87, 0x05, 0xD6, 0x10, 0x4A, 0xC0, - 0xEE, 0x10, 0x47, 0xCB, 0x02, 0x00, 0xE0, 0x04, - 0x6C, 0x01, 0x8B, 0x07, 0x43, 0x00, 0xE0, 0x04, - 0x00, 0x0C, 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC8, - 0x6C, 0x01, 0x8B, 0x02, 0x43, 0x00, 0x04, 0x13, - 0x60, 0x01, 0x02, 0xFC, 0x20, 0x00, 0x06, 0x13, - 0x8B, 0xC2, 0xA0, 0x06, 0x42, 0xB4, 0x90, 0x03, - 0x7F, 0x00, 0x80, 0x03, 0xA0, 0x01, 0x02, 0xFC, - 0x20, 0x00, 0x60, 0x01, 0x6A, 0x09, 0x01, 0x00, - 0x0B, 0x16, 0x0A, 0x02, 0x02, 0xFC, 0xA0, 0xA2, - 0x2C, 0x09, 0xA0, 0xCE, 0xEE, 0x05, 0xA0, 0xC6, - 0x04, 0xFC, 0x20, 0xC8, 0x2C, 0x09, 0x04, 0xFC, - 0x8A, 0x07, 0xF8, 0x05, 0x5A, 0xC2, 0x08, 0x13, - 0xCA, 0x05, 0x5A, 0xC2, 0x09, 0xC8, 0x6C, 0x01, - 0x0B, 0xC8, 0x00, 0xFC, 0x8B, 0xC6, 0x02, 0x10, - 0x8B, 0xCE, 0x8B, 0xC6, 0x20, 0x20, 0x1A, 0xE0, - 0x05, 0x16, 0x20, 0xE8, 0x04, 0xE0, 0x3A, 0x07, - 0xE0, 0x04, 0x36, 0x07, 0x90, 0x03, 0x7F, 0x00, - 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC8, - 0x6C, 0x01, 0xCC, 0x04, 0xE0, 0x04, 0x00, 0xFC, - 0x8B, 0xC2, 0xA0, 0x06, 0x50, 0xB4, 0x90, 0x03, - 0x7F, 0x00, 0x80, 0x03, 0xA0, 0x07, 0x02, 0xFC, - 0x00, 0x80, 0x20, 0xC8, 0x8C, 0xE1, 0x04, 0xFC, - 0x41, 0xC0, 0x0F, 0x16, 0x20, 0xD8, 0x00, 0xE2, - 0x83, 0x01, 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, - 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, - 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, 0x0A, 0xC8, - 0x8A, 0x01, 0x5B, 0x04, 0x0A, 0xC8, 0x6C, 0x01, - 0x20, 0xC3, 0x00, 0xFC, 0xE0, 0x04, 0x00, 0xFC, - 0x8A, 0x02, 0x43, 0x00, 0xDF, 0x13, 0xA0, 0x07, - 0x02, 0xFC, 0x00, 0x80, 0x04, 0xC8, 0x04, 0xFC, - 0x20, 0x98, 0x84, 0x09, 0x1D, 0x09, 0x0A, 0x13, - 0x20, 0xC8, 0x1A, 0x09, 0x00, 0xFC, 0x0A, 0xC8, - 0x1A, 0x09, 0xA0, 0x05, 0x1C, 0x09, 0x8C, 0xC2, - 0xE5, 0x16, 0x5B, 0x04, 0x41, 0xC0, 0x10, 0x13, - 0x8A, 0xA2, 0x82, 0xCA, 0x32, 0x0C, 0x1A, 0x09, - 0x02, 0xC8, 0x6C, 0x01, 0x0A, 0xC8, 0x00, 0xFC, - 0x8A, 0xC0, 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, - 0x09, 0x13, 0x8C, 0xC2, 0xD3, 0x16, 0x5B, 0x04, - 0x4A, 0xC0, 0x8A, 0xC0, 0x20, 0x98, 0x83, 0x01, - 0x00, 0xE2, 0x1B, 0x16, 0xE0, 0x01, 0x9C, 0x01, - 0x40, 0x00, 0xA0, 0x07, 0x64, 0x09, 0x00, 0x70, - 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, 0x07, 0x13, - 0x20, 0x06, 0x64, 0x09, 0xF9, 0x16, 0x0A, 0x02, - 0x00, 0x01, 0x60, 0x04, 0x8A, 0xA3, 0x60, 0x01, - 0x02, 0x0C, 0x00, 0x01, 0xE2, 0x13, 0x20, 0xD8, - 0x2F, 0x09, 0x83, 0x01, 0xA0, 0x07, 0x02, 0x0C, - 0x00, 0x80, 0x0A, 0xC8, 0x8A, 0x01, 0x0A, 0xC8, - 0x18, 0x09, 0xD7, 0x10, 0xD8, 0x04, 0x57, 0xC2, - 0x03, 0x16, 0xC8, 0xCD, 0xC8, 0xC5, 0x5B, 0x04, - 0xC7, 0x05, 0x57, 0xC2, 0x48, 0xC6, 0xC8, 0xC5, - 0x5B, 0x04, 0x08, 0xC8, 0x6C, 0x01, 0x08, 0xA2, - 0x20, 0xCA, 0x00, 0xFC, 0x32, 0x0C, 0x18, 0x09, - 0x02, 0x10, 0x08, 0xC8, 0x6C, 0x01, 0xE0, 0x04, - 0x00, 0xFC, 0x57, 0xC2, 0x03, 0x16, 0xC8, 0xCD, - 0xC8, 0xC5, 0x5B, 0x04, 0xC7, 0x05, 0x17, 0xC8, - 0x6C, 0x01, 0x08, 0xC8, 0x00, 0xFC, 0xC8, 0xC5, - 0x5B, 0x04, 0x17, 0xC6, 0x02, 0x16, 0xC8, 0xC9, - 0x02, 0x00, 0xC8, 0xC5, 0x5B, 0x04, 0x17, 0xC2, - 0x08, 0xC8, 0x6C, 0x01, 0x07, 0x13, 0xE0, 0xC5, - 0x00, 0xFC, 0x08, 0xA2, 0x28, 0xC8, 0x32, 0x0C, - 0x00, 0xFC, 0x18, 0x09, 0x5B, 0x04, 0x60, 0x01, - 0x82, 0x01, 0x00, 0x20, 0x0A, 0x16, 0x60, 0xC2, - 0x84, 0x01, 0xA0, 0x01, 0x82, 0x01, 0x00, 0x20, - 0xE0, 0x01, 0x82, 0x01, 0x00, 0x20, 0x09, 0xC8, - 0x84, 0x01, 0xC9, 0x04, 0x5B, 0x04, 0xA0, 0x06, - 0xBE, 0xB7, 0xD3, 0x04, 0xE0, 0x04, 0x02, 0x01, - 0x20, 0xE8, 0x14, 0xE0, 0x00, 0x01, 0x20, 0xC8, - 0x16, 0xE0, 0x04, 0x01, 0x05, 0x2C, 0x20, 0x48, - 0x14, 0xE0, 0x00, 0x01, 0x8C, 0x07, 0x00, 0x0A, - 0x8D, 0x07, 0xD8, 0x07, 0x8E, 0x07, 0x18, 0x00, - 0x7C, 0xCF, 0x4E, 0x06, 0xFD, 0x16, 0xE0, 0x02, - 0xD8, 0x07, 0x8F, 0x07, 0x11, 0xFF, 0x8B, 0x02, - 0x3B, 0x59, 0x21, 0x16, 0x8A, 0x02, 0x3B, 0x59, - 0x1E, 0x13, 0x8F, 0x05, 0x20, 0x20, 0x16, 0xE0, - 0x01, 0x16, 0x19, 0x10, 0x20, 0x20, 0x04, 0xE0, - 0x16, 0x16, 0x00, 0x01, 0xBF, 0x00, 0x13, 0x16, - 0x8B, 0x07, 0xC0, 0x40, 0x00, 0x01, 0x00, 0x60, - 0x10, 0x13, 0x40, 0x01, 0x00, 0x60, 0x0B, 0x16, - 0x8B, 0x07, 0xC4, 0x44, 0xA0, 0xC3, 0x02, 0x01, - 0x0E, 0x48, 0x02, 0x01, 0x4E, 0x01, 0x00, 0x10, - 0x04, 0x16, 0x8F, 0x07, 0x18, 0xFF, 0x60, 0x04, - 0x94, 0xB7, 0x0B, 0xC3, 0x4B, 0xC3, 0x20, 0x20, - 0x0A, 0xE0, 0x02, 0x16, 0x6B, 0x02, 0x20, 0x20, - 0x20, 0x20, 0x0C, 0xE0, 0x02, 0x16, 0x6C, 0x02, - 0x00, 0x20, 0x20, 0x20, 0x0E, 0xE0, 0x02, 0x16, - 0x6C, 0x02, 0x20, 0x00, 0x8F, 0x05, 0x20, 0x20, - 0x10, 0xE0, 0x07, 0x16, 0x6D, 0x02, 0x20, 0x00, - 0x20, 0x21, 0x22, 0xE0, 0xE4, 0x13, 0x04, 0xC1, - 0x02, 0x16, 0x84, 0x07, 0xFE, 0x7F, 0x8F, 0x05, - 0x20, 0x20, 0x12, 0xE0, 0x02, 0x16, 0x6D, 0x02, - 0x00, 0x20, 0x60, 0x21, 0x22, 0xE0, 0xD7, 0x13, - 0x45, 0xC1, 0x02, 0x16, 0x85, 0x07, 0xFE, 0x7F, - 0x8F, 0x05, 0x86, 0xD1, 0x0B, 0x13, 0xA0, 0x25, - 0x26, 0xE0, 0x08, 0x13, 0x8F, 0x05, 0x20, 0x26, - 0x22, 0xE0, 0x04, 0x16, 0x8F, 0x05, 0xA0, 0x26, - 0x22, 0xE0, 0x02, 0x13, 0x60, 0x04, 0x94, 0xB7, - 0x01, 0xD8, 0xEC, 0x08, 0x20, 0xD8, 0xDB, 0x07, - 0x00, 0x09, 0x02, 0xD8, 0xF6, 0x08, 0x20, 0xD8, - 0xDD, 0x07, 0xE2, 0x08, 0xE0, 0x02, 0x58, 0x07, - 0x20, 0xD8, 0xEF, 0x07, 0xF4, 0x07, 0x20, 0xD8, - 0xF1, 0x07, 0xF6, 0x07, 0x20, 0xD8, 0xF3, 0x07, - 0xF8, 0x07, 0x09, 0x02, 0x06, 0x00, 0xCB, 0x04, - 0x0F, 0x02, 0xEE, 0x07, 0x8F, 0x05, 0xCB, 0xDF, - 0x09, 0x06, 0xFC, 0x16, 0xA0, 0x06, 0xBE, 0xB7, - 0x89, 0x07, 0x5C, 0xE3, 0xE0, 0x04, 0x1A, 0x01, - 0x20, 0xC8, 0xE4, 0x07, 0x18, 0x01, 0x19, 0xC8, - 0x0C, 0x01, 0x39, 0xC8, 0x0A, 0x01, 0x39, 0xC8, - 0x12, 0x01, 0x09, 0x16, 0x79, 0xC3, 0x0F, 0x02, - 0x00, 0xE0, 0x4F, 0x63, 0x2D, 0x02, 0x00, 0x90, - 0x0D, 0xC8, 0x14, 0x01, 0x02, 0x10, 0x39, 0xC8, - 0x14, 0x01, 0xF9, 0xC3, 0x3F, 0xC8, 0x0E, 0x01, - 0x1F, 0xC8, 0x10, 0x01, 0xE0, 0x04, 0x14, 0x09, - 0xB9, 0xC2, 0x1A, 0xC8, 0x00, 0x01, 0x96, 0x06, - 0x89, 0x02, 0x84, 0xE3, 0xE0, 0x16, 0x8F, 0x07, - 0x1C, 0xFF, 0x8C, 0x07, 0x00, 0x0A, 0x8D, 0x07, - 0x84, 0xE3, 0x8E, 0x07, 0x10, 0x00, 0x7C, 0x8F, - 0x44, 0x16, 0x4E, 0x06, 0xFC, 0x16, 0xA0, 0xC3, - 0xE2, 0x07, 0xE0, 0xC3, 0xE0, 0x07, 0xCE, 0x83, - 0x01, 0x14, 0xCE, 0xC3, 0x0F, 0xC8, 0x1A, 0x01, - 0x8C, 0x07, 0x94, 0xE3, 0x8D, 0x07, 0x00, 0x0A, - 0x8E, 0x07, 0xA4, 0xE3, 0x8C, 0x63, 0x7C, 0xCF, - 0x4E, 0x06, 0xFD, 0x16, 0xE0, 0x04, 0x30, 0x09, - 0x20, 0x01, 0x42, 0x01, 0x00, 0x04, 0x02, 0x16, - 0x20, 0x07, 0x30, 0x09, 0x60, 0xC2, 0x62, 0x01, - 0xE0, 0x04, 0x62, 0x01, 0x8E, 0x07, 0x00, 0x80, - 0x8C, 0x07, 0x34, 0x09, 0x8D, 0x07, 0x06, 0x00, - 0x3E, 0xDF, 0x8E, 0x05, 0x0D, 0x06, 0xFC, 0x16, - 0xFE, 0xD3, 0xCF, 0x06, 0x8E, 0x05, 0xFE, 0xD3, - 0xCF, 0x06, 0x8C, 0x07, 0x34, 0x09, 0x09, 0xC8, - 0x62, 0x01, 0xC9, 0x04, 0x5C, 0xA3, 0x7C, 0xE2, - 0x5C, 0xA3, 0x7C, 0xE2, 0x5C, 0xA3, 0x7C, 0xE2, - 0x02, 0x13, 0xCD, 0x83, 0x09, 0x13, 0x20, 0x07, - 0x34, 0x09, 0x06, 0x10, 0x8F, 0x07, 0x19, 0xFF, - 0xCD, 0xA3, 0x0F, 0xC8, 0x04, 0x01, 0xFF, 0x10, - 0xA0, 0x01, 0x02, 0x01, 0x00, 0x10, 0xE0, 0xC3, - 0xEE, 0x07, 0xE0, 0x43, 0x06, 0xE0, 0x0F, 0xC8, - 0x00, 0x01, 0x20, 0xC0, 0x04, 0xE0, 0xE0, 0x04, - 0xFE, 0x06, 0xD3, 0x04, 0xE0, 0x04, 0x04, 0x01, - 0x60, 0x04, 0x0C, 0xB8, 0x8C, 0x07, 0x00, 0x0A, - 0x8D, 0x07, 0x18, 0x00, 0x8E, 0x07, 0x3B, 0x59, - 0x0E, 0xCF, 0x4D, 0x06, 0xFD, 0x16, 0x5B, 0x04, - 0x93, 0x01, 0x00, 0x80, 0x20, 0x04, 0xC0, 0xE2, - 0x60, 0xD0, 0x98, 0x07, 0x1C, 0x13, 0x00, 0x03, - 0x02, 0x00, 0xA0, 0xC0, 0x46, 0x07, 0x12, 0xC8, - 0x46, 0x07, 0x02, 0x16, 0x93, 0x01, 0x20, 0x00, - 0x00, 0x03, 0x0F, 0x00, 0x20, 0x04, 0xE8, 0xE2, - 0x93, 0x01, 0x00, 0x20, 0x80, 0x01, 0x00, 0x40, - 0x00, 0x01, 0xFE, 0x00, 0x49, 0x16, 0xC4, 0xC3, - 0x25, 0x16, 0xD3, 0xC3, 0xC5, 0x43, 0x0C, 0x16, - 0xE0, 0xC3, 0x98, 0x07, 0x03, 0x11, 0xE0, 0x02, - 0x98, 0x07, 0x51, 0x04, 0xE0, 0xC3, 0x78, 0x07, - 0x0A, 0x11, 0xE0, 0x02, 0x78, 0x07, 0x51, 0x04, - 0xD3, 0x11, 0x4F, 0x01, 0x00, 0x20, 0xE4, 0x13, - 0x4F, 0x01, 0x20, 0x00, 0xD1, 0x13, 0x05, 0x2C, - 0x41, 0xA0, 0x21, 0x04, 0xC0, 0xE2, 0x8B, 0x07, - 0x0C, 0xB8, 0x00, 0x01, 0x00, 0x40, 0x0F, 0x13, - 0xDD, 0xC3, 0x4F, 0x02, 0x0F, 0x00, 0x2F, 0xE1, - 0x14, 0xE0, 0x5B, 0x04, 0xE4, 0xC3, 0xC0, 0xE1, - 0xCF, 0x73, 0x2F, 0x41, 0x14, 0xE0, 0x6F, 0xC3, - 0xEC, 0xEA, 0x8B, 0x07, 0x0C, 0xB8, 0x4B, 0xC2, - 0xA0, 0xC2, 0xF4, 0x07, 0x8C, 0x07, 0x08, 0x00, - 0xBD, 0xC0, 0xA0, 0xC3, 0xEA, 0x07, 0xE0, 0xC3, - 0xEC, 0x07, 0xA0, 0x06, 0x00, 0xBA, 0xC0, 0x01, - 0x00, 0x40, 0x02, 0xD8, 0x17, 0x01, 0x62, 0x02, - 0x80, 0xFF, 0xA0, 0x06, 0x54, 0xBA, 0x02, 0xC8, - 0x04, 0x01, 0x90, 0x03, 0x3F, 0x60, 0x59, 0x04, - 0xC0, 0xC3, 0xCF, 0x73, 0xEF, 0xC3, 0xC0, 0xE1, - 0xCF, 0x73, 0xAF, 0xC3, 0xDE, 0xEA, 0x9E, 0xC3, - 0x4E, 0x02, 0x0F, 0x00, 0x2E, 0x21, 0x14, 0xE0, - 0x08, 0x13, 0x2F, 0x40, 0x14, 0xE0, 0xCF, 0xA3, - 0x2F, 0x04, 0xF0, 0xE2, 0x40, 0x01, 0x00, 0x40, - 0xA4, 0x13, 0xC4, 0xC3, 0xC7, 0x16, 0x00, 0x01, - 0xFE, 0x00, 0xE6, 0x16, 0x9E, 0x10, 0x40, 0x01, - 0x00, 0x40, 0x05, 0x16, 0x20, 0xE0, 0x14, 0xE0, - 0x65, 0x02, 0x00, 0x58, 0x96, 0x10, 0x20, 0xD8, - 0xDE, 0x07, 0x17, 0x01, 0x8F, 0x07, 0x86, 0xFF, - 0x0F, 0xC8, 0x04, 0x01, 0xC0, 0x01, 0x00, 0x40, - 0x45, 0x02, 0xFF, 0xA7, 0x8A, 0x10, 0x20, 0xC3, - 0xFE, 0x06, 0x20, 0x27, 0x38, 0xE3, 0x07, 0x13, - 0x20, 0x23, 0x22, 0xE0, 0x1A, 0x13, 0x65, 0x02, - 0xFF, 0xDF, 0x20, 0x40, 0x14, 0xE0, 0x20, 0xE0, - 0x16, 0xE0, 0x0C, 0xC8, 0xE6, 0x08, 0x8D, 0x07, - 0xE2, 0x08, 0x58, 0x04, 0x20, 0x48, 0x08, 0xE0, - 0xFE, 0x06, 0x20, 0xC3, 0xE6, 0x08, 0x20, 0x27, - 0x38, 0xE3, 0x19, 0x16, 0x80, 0x03, 0x02, 0xC3, - 0x6C, 0xC2, 0x0A, 0x00, 0x99, 0x06, 0x60, 0x04, - 0x0C, 0xB8, 0xA0, 0xC2, 0xF4, 0x07, 0x8C, 0x07, - 0x01, 0x00, 0x8D, 0x07, 0x06, 0x06, 0xCE, 0x04, - 0xE0, 0xC3, 0x08, 0x06, 0x01, 0x13, 0x97, 0x06, - 0x20, 0xD8, 0x07, 0x06, 0x17, 0x01, 0x8B, 0x07, - 0x82, 0xFF, 0x0B, 0xC8, 0x04, 0x01, 0xA0, 0x06, - 0xB4, 0xBE, 0x60, 0x04, 0x0C, 0xB8, 0xA0, 0xC2, - 0xEE, 0x07, 0x8C, 0x07, 0x06, 0x00, 0x8D, 0x07, - 0xEE, 0x08, 0xA0, 0xC3, 0xE6, 0x07, 0xE0, 0xC3, - 0xE8, 0x07, 0x97, 0x06, 0xA0, 0xC2, 0xF4, 0x07, - 0x8D, 0x07, 0xF4, 0x08, 0xDD, 0x04, 0x8C, 0x07, - 0x02, 0x00, 0x97, 0x06, 0x8D, 0x07, 0x00, 0x80, - 0xA0, 0xC2, 0xEE, 0x08, 0x0A, 0x88, 0x0C, 0x06, - 0x14, 0x1B, 0x82, 0x07, 0xD0, 0xB9, 0xA0, 0xC3, - 0xF0, 0x08, 0xE0, 0xC3, 0xF2, 0x08, 0x8B, 0x07, - 0x0C, 0xE3, 0x8A, 0x02, 0x14, 0x00, 0x04, 0x1A, - 0x8B, 0x07, 0xBA, 0xEA, 0x2A, 0x02, 0xEC, 0xFF, - 0x8A, 0xA2, 0xCA, 0xA2, 0xDB, 0xC2, 0x01, 0x13, - 0x9B, 0x06, 0x20, 0xC8, 0xEE, 0x08, 0xF2, 0x08, - 0x20, 0xC8, 0x20, 0xE0, 0xEE, 0x08, 0x0D, 0xC8, - 0xF0, 0x08, 0x8D, 0x07, 0xEC, 0x08, 0x20, 0xE0, - 0x18, 0xE0, 0x65, 0x02, 0x00, 0x58, 0x58, 0x04, - 0x45, 0x02, 0xFF, 0xA7, 0x80, 0x03, 0x60, 0xC0, - 0xEE, 0x05, 0x21, 0x02, 0xE8, 0x03, 0x20, 0x01, - 0x02, 0x01, 0x06, 0x00, 0x07, 0x16, 0x01, 0x88, - 0xEE, 0x05, 0xF9, 0x16, 0x39, 0x10, 0x60, 0xD0, - 0x03, 0x01, 0xF1, 0x13, 0x01, 0x02, 0x0A, 0x01, - 0x4C, 0xCC, 0x4C, 0xCC, 0x4E, 0xCC, 0x4F, 0xCC, - 0xB1, 0x07, 0x40, 0x00, 0x4D, 0xCC, 0x0A, 0xC8, - 0x00, 0x01, 0x5B, 0x04, 0x60, 0xC0, 0xEE, 0x05, - 0x21, 0x02, 0xE8, 0x03, 0x20, 0x01, 0x02, 0x01, - 0x06, 0x00, 0x07, 0x16, 0x01, 0x88, 0xEE, 0x05, - 0xF9, 0x16, 0x1E, 0x10, 0x60, 0xD0, 0x03, 0x01, - 0xF1, 0x13, 0x01, 0x02, 0x0A, 0x01, 0x4C, 0xCC, - 0x4C, 0xCC, 0x4E, 0xCC, 0x4F, 0xCC, 0xB1, 0x07, - 0x40, 0x00, 0x4D, 0xCC, 0x0A, 0xC8, 0x00, 0x01, - 0xA0, 0x03, 0x60, 0xD0, 0x03, 0x01, 0x01, 0x13, - 0x5B, 0x04, 0x60, 0xC0, 0xEE, 0x05, 0x21, 0x02, - 0xE8, 0x03, 0x20, 0x01, 0x02, 0x01, 0x06, 0x00, - 0xF7, 0x16, 0x01, 0x88, 0xEE, 0x05, 0xF9, 0x16, - 0xCD, 0x04, 0x8A, 0x07, 0x00, 0x40, 0x20, 0xC3, - 0x00, 0x01, 0x0C, 0x01, 0x00, 0x80, 0x02, 0x13, - 0x8A, 0x07, 0x00, 0x20, 0xA0, 0xC3, 0x0E, 0x01, - 0xE0, 0xC3, 0x10, 0x01, 0xB0, 0x03, 0x20, 0xC3, - 0x58, 0x07, 0x20, 0x23, 0x04, 0xE0, 0x02, 0x13, - 0x60, 0x04, 0x8E, 0xB7, 0x60, 0x04, 0x8A, 0xA3, - 0x8D, 0x07, 0x00, 0x20, 0x20, 0x20, 0x0A, 0xE0, - 0x01, 0x16, 0x5B, 0x04, 0x0D, 0x02, 0x32, 0x0C, - 0x5D, 0xC2, 0x01, 0x11, 0xDD, 0x04, 0xCD, 0x05, - 0x0D, 0x88, 0x30, 0x0C, 0xF9, 0x16, 0x60, 0xC2, - 0x0A, 0x06, 0x8D, 0x07, 0x6A, 0x09, 0xA0, 0x06, - 0xF4, 0xBE, 0x09, 0x02, 0x48, 0x00, 0xE0, 0xC3, - 0x30, 0x09, 0x03, 0x16, 0xE0, 0x01, 0x6A, 0x09, - 0x10, 0x00, 0xE0, 0xC2, 0x6A, 0x09, 0x0F, 0x02, - 0x00, 0x01, 0xC9, 0x26, 0x02, 0x13, 0x60, 0x04, - 0x86, 0xBD, 0x09, 0x02, 0x00, 0x12, 0x4B, 0x01, - 0x10, 0x00, 0x02, 0x13, 0x09, 0x02, 0x00, 0x13, - 0x09, 0xD8, 0x2E, 0x09, 0x8F, 0x07, 0x00, 0x40, - 0x89, 0x07, 0x6C, 0x09, 0xCB, 0x04, 0xF9, 0xE2, - 0xF9, 0xE2, 0xF9, 0xE2, 0x07, 0x16, 0x8B, 0x07, - 0x34, 0x09, 0x8C, 0x07, 0x6C, 0x09, 0x3B, 0xCF, - 0x3B, 0xCF, 0x1B, 0xC7, 0x20, 0xC3, 0x6C, 0x09, - 0x19, 0x11, 0x8F, 0x07, 0x00, 0x20, 0x89, 0x07, - 0x7A, 0x09, 0xA0, 0x06, 0x3A, 0xBB, 0xA0, 0x06, - 0x3A, 0xBB, 0x12, 0x10, 0x4C, 0xCE, 0x5B, 0x04, - 0x19, 0xC3, 0x02, 0x16, 0x8C, 0x07, 0x1A, 0x00, - 0x4C, 0xC3, 0x2D, 0x02, 0xF8, 0xFF, 0x0A, 0x02, - 0x09, 0x00, 0x2D, 0x02, 0xFA, 0xFF, 0xF2, 0x13, - 0x0A, 0x06, 0xFB, 0x16, 0x60, 0x04, 0x86, 0xBD, - 0x8F, 0x07, 0x00, 0x10, 0xD9, 0xC2, 0xFA, 0x11, - 0x02, 0x16, 0x8B, 0x07, 0x00, 0x04, 0x4B, 0xC3, - 0x8D, 0x02, 0x20, 0x00, 0x02, 0x14, 0x0D, 0x02, - 0x20, 0x00, 0x8D, 0x02, 0x00, 0x04, 0x02, 0x12, - 0x0D, 0x02, 0x00, 0x04, 0x2D, 0x02, 0xF8, 0xFF, - 0x0D, 0xC8, 0x2C, 0x09, 0x2B, 0x02, 0xFF, 0x03, - 0x8B, 0x01, 0xFF, 0x03, 0x4B, 0xCE, 0x60, 0xC3, - 0x6A, 0x09, 0x60, 0x23, 0x18, 0xE0, 0x0C, 0x16, - 0x49, 0xC3, 0xDD, 0xC2, 0x0F, 0x02, 0x01, 0x01, - 0x8B, 0x01, 0x80, 0xC0, 0xD7, 0x16, 0x8F, 0x05, - 0xED, 0xC2, 0x02, 0x00, 0xD3, 0x16, 0x02, 0x10, - 0x8D, 0x07, 0xBA, 0xEA, 0x3D, 0xC8, 0xA8, 0x09, - 0x1D, 0xC8, 0xAA, 0x09, 0xCB, 0x04, 0xE0, 0x04, - 0xF8, 0x05, 0xE0, 0x04, 0x66, 0x09, 0x20, 0xC8, - 0x30, 0x0C, 0x80, 0x09, 0xA0, 0x07, 0x82, 0x09, - 0xFE, 0xDF, 0x8D, 0x07, 0xFE, 0xDF, 0xE0, 0xC3, - 0xD8, 0x07, 0xE0, 0x23, 0x16, 0xE0, 0x24, 0x16, - 0xE0, 0xC3, 0x30, 0x0C, 0x4F, 0x63, 0xFF, 0x04, - 0xFF, 0x04, 0x4D, 0x06, 0xFD, 0x16, 0x8D, 0x07, - 0xFE, 0xDF, 0x20, 0x04, 0xA2, 0xEA, 0xA0, 0xC3, - 0xA2, 0xEA, 0xEE, 0xC3, 0x12, 0x00, 0xAA, 0x16, - 0x6E, 0xC3, 0x18, 0x00, 0xAD, 0x09, 0x8C, 0x07, - 0x00, 0xE0, 0xAC, 0x09, 0x0D, 0x63, 0x0C, 0x13, - 0x6E, 0xC3, 0x18, 0x00, 0xAD, 0x09, 0x2D, 0x02, - 0x40, 0x00, 0x1D, 0x0A, 0x2D, 0x02, 0x32, 0x0C, - 0xBD, 0x07, 0xFF, 0x7F, 0x0C, 0x06, 0xFC, 0x16, - 0x20, 0xC3, 0x46, 0x04, 0x8C, 0x02, 0x80, 0x00, - 0x13, 0x1A, 0xAC, 0x02, 0x0C, 0xC8, 0x9A, 0x00, - 0xE0, 0x02, 0x80, 0x00, 0x88, 0x07, 0x80, 0x00, - 0x60, 0xC2, 0x46, 0x04, 0xA0, 0x06, 0x28, 0xAD, - 0x02, 0x10, 0x9D, 0x00, 0x05, 0x10, 0x9D, 0x00, - 0x8F, 0x07, 0x00, 0x08, 0x60, 0x04, 0x86, 0xBD, - 0x4B, 0x2D, 0x81, 0xC3, 0xC9, 0x05, 0x8F, 0x07, - 0x00, 0x10, 0x8E, 0x02, 0x02, 0x00, 0xF6, 0x11, - 0x8F, 0x07, 0x00, 0x04, 0xC9, 0x05, 0xD9, 0xC2, - 0xE0, 0x26, 0x26, 0xE0, 0x02, 0x16, 0x2B, 0x02, - 0x06, 0x00, 0x4B, 0xC6, 0x4B, 0xC3, 0xCB, 0x72, - 0x2E, 0x02, 0xFE, 0xFF, 0x8B, 0x83, 0xE6, 0x1B, - 0xCD, 0x06, 0x4D, 0x73, 0xCD, 0x82, 0xE2, 0x1B, - 0xE0, 0x04, 0x1A, 0x09, 0xE0, 0x04, 0x1C, 0x09, - 0x4D, 0xC3, 0x02, 0x13, 0x60, 0x66, 0x12, 0xE0, - 0xC9, 0x05, 0xCF, 0x04, 0x81, 0x2D, 0x01, 0xC8, - 0x6C, 0x01, 0xD4, 0x13, 0x0F, 0xC8, 0x00, 0xFC, - 0xC1, 0xC3, 0x0D, 0x06, 0xF7, 0x15, 0x0D, 0x02, - 0x36, 0x07, 0x0E, 0x02, 0x98, 0x08, 0x0C, 0x02, - 0x03, 0x00, 0x8D, 0xCB, 0x02, 0x00, 0x81, 0x2D, - 0x81, 0xCB, 0x06, 0x00, 0xC3, 0x13, 0xEE, 0x04, - 0x0C, 0x00, 0x2E, 0x02, 0x18, 0x00, 0x0C, 0x06, - 0xF4, 0x16, 0xE0, 0x04, 0x96, 0x08, 0x1F, 0x2E, - 0xB9, 0xC3, 0xD9, 0xC3, 0x89, 0x07, 0x12, 0x00, - 0x8D, 0x07, 0x3A, 0x09, 0xA0, 0x06, 0xF4, 0xBE, - 0x60, 0xC3, 0xD8, 0x07, 0x60, 0x23, 0x16, 0xE0, - 0x09, 0x16, 0x20, 0xE8, 0x10, 0xE0, 0x6A, 0x09, - 0x20, 0xE8, 0x18, 0xE0, 0x98, 0x07, 0x20, 0xE8, - 0x12, 0xE0, 0x78, 0x07, 0x60, 0xC3, 0x6A, 0x09, - 0x60, 0x23, 0x1E, 0xE0, 0x03, 0x16, 0x20, 0x48, - 0xA4, 0xE3, 0x6A, 0x09, 0x60, 0x23, 0x22, 0xE0, - 0x06, 0x13, 0x60, 0x27, 0xA6, 0xE3, 0x03, 0x13, - 0x20, 0xE8, 0x10, 0xE0, 0x6A, 0x09, 0x20, 0x2D, - 0x00, 0x00, 0x8E, 0x07, 0x00, 0x00, 0xA0, 0x06, - 0xD4, 0xBE, 0x4E, 0x05, 0x0E, 0x2C, 0xA0, 0xC0, - 0x04, 0x08, 0xEF, 0xC3, 0x06, 0x00, 0x1B, 0x16, - 0xA0, 0xC3, 0x72, 0x09, 0xE0, 0xC3, 0x74, 0x09, - 0xA0, 0x06, 0xC2, 0xBD, 0xA0, 0xC3, 0x76, 0x09, - 0xE0, 0xC3, 0x78, 0x09, 0xA0, 0x06, 0xE0, 0xBD, - 0x20, 0xE0, 0x0A, 0xE0, 0x60, 0xC3, 0xD8, 0x07, - 0x60, 0x23, 0x16, 0xE0, 0x05, 0x16, 0xE0, 0x04, - 0x2E, 0x06, 0x60, 0x41, 0x04, 0xE0, 0x4D, 0x2E, - 0x8D, 0x07, 0x00, 0x80, 0x52, 0x04, 0xCF, 0x73, - 0x2F, 0x02, 0x00, 0x02, 0x4F, 0xC3, 0x52, 0x04, - 0x20, 0x20, 0x0A, 0xE0, 0x03, 0x13, 0x8D, 0x07, - 0x00, 0x10, 0x5B, 0x04, 0x20, 0x40, 0x0A, 0xE0, - 0x40, 0x02, 0xFF, 0xF0, 0x8E, 0x07, 0x02, 0x00, - 0xA0, 0x06, 0xD4, 0xBE, 0x4E, 0x05, 0x0E, 0x2C, - 0xA0, 0xC0, 0x04, 0x08, 0xA0, 0x06, 0xB4, 0xBE, - 0x60, 0xC3, 0xD8, 0x07, 0x60, 0x23, 0x16, 0xE0, - 0x66, 0x16, 0x20, 0x04, 0xB6, 0xEA, 0x63, 0x10, - 0x6E, 0x02, 0x00, 0x80, 0x8D, 0x07, 0x00, 0xC0, - 0x0D, 0xC8, 0xA6, 0x01, 0x0E, 0xC8, 0x72, 0x09, - 0x0F, 0xC8, 0x74, 0x09, 0x0E, 0xC8, 0xA8, 0x01, - 0x0F, 0xC8, 0xAA, 0x01, 0x12, 0x10, 0x8F, 0x01, - 0x01, 0x00, 0x8A, 0x07, 0x76, 0x09, 0xA0, 0xE3, - 0x4E, 0x09, 0x8E, 0xCE, 0x9A, 0x01, 0xFE, 0xFF, - 0xE0, 0xE3, 0x50, 0x09, 0x8F, 0xE6, 0x8A, 0x07, - 0xAC, 0x01, 0x8E, 0xCE, 0x9A, 0x01, 0xFE, 0xFF, - 0x8F, 0xE6, 0x20, 0x20, 0x0A, 0xE0, 0x3F, 0x13, - 0x8D, 0x07, 0x00, 0x10, 0x5B, 0x04, 0x20, 0x20, - 0x0A, 0xE0, 0x03, 0x13, 0x0D, 0x02, 0x00, 0x10, - 0x5B, 0x04, 0x8E, 0xC3, 0x04, 0x13, 0xE0, 0x01, - 0x50, 0x09, 0x00, 0x01, 0x06, 0x10, 0xA0, 0x01, - 0x50, 0x09, 0x00, 0x01, 0xA0, 0x01, 0x78, 0x09, - 0x00, 0x01, 0xA0, 0xC3, 0x76, 0x09, 0xE0, 0xC3, - 0x78, 0x09, 0xA0, 0xE3, 0x4E, 0x09, 0xE0, 0xE3, - 0x50, 0x09, 0x0E, 0xC8, 0xAC, 0x01, 0x0F, 0xC8, - 0xAE, 0x01, 0x0E, 0xC8, 0x76, 0x09, 0x0F, 0xC8, - 0x78, 0x09, 0x19, 0x10, 0x6E, 0x02, 0x00, 0x80, - 0x0E, 0xC8, 0xA6, 0x01, 0x20, 0x20, 0x0A, 0xE0, - 0x12, 0x13, 0x0D, 0x02, 0x00, 0x10, 0x5B, 0x04, - 0x8D, 0x07, 0x28, 0x07, 0x89, 0x07, 0x0E, 0x00, - 0xA0, 0x06, 0xFA, 0xBE, 0x8D, 0x07, 0x28, 0x07, - 0xFD, 0x04, 0x8D, 0x02, 0x36, 0x07, 0xFC, 0x16, - 0x20, 0x48, 0x14, 0xE0, 0xFE, 0x06, 0x8D, 0x07, - 0x00, 0x80, 0x52, 0x04, 0xA0, 0xC2, 0xEE, 0x07, - 0x8C, 0x07, 0x04, 0x00, 0x8D, 0x07, 0xF0, 0x08, - 0x97, 0x06, 0x7D, 0xC2, 0x5D, 0xC3, 0x60, 0x43, - 0x22, 0xE0, 0xA0, 0x06, 0xFA, 0xBE, 0xEF, 0x10, - 0x0E, 0xC8, 0x06, 0x06, 0x0F, 0xC8, 0x08, 0x06, - 0xEA, 0x10, 0xB0, 0x03, 0xA0, 0x01, 0x60, 0x07, - 0x26, 0x00, 0x40, 0x02, 0x00, 0xC0, 0xE0, 0x04, - 0x06, 0x06, 0x8C, 0x07, 0x10, 0x40, 0xCC, 0x44, - 0xE0, 0x04, 0xFE, 0x06, 0x85, 0x07, 0x40, 0x80, - 0x5B, 0x04, 0x02, 0xC8, 0x04, 0x08, 0x8F, 0x07, - 0xFA, 0x07, 0xCE, 0xCB, 0x02, 0x00, 0x8E, 0x07, - 0x36, 0x07, 0xCE, 0xCB, 0x04, 0x00, 0x8D, 0x07, - 0x30, 0x06, 0x8E, 0x07, 0x10, 0x00, 0x4D, 0x2C, - 0x5B, 0x04, 0xA0, 0xC2, 0xF2, 0x07, 0x02, 0x10, - 0xA0, 0xC2, 0xF8, 0x07, 0x0B, 0xC8, 0xEA, 0x08, - 0x09, 0xC3, 0x0A, 0x13, 0xA0, 0x06, 0x36, 0xBA, - 0xA0, 0xC2, 0x00, 0x01, 0xA0, 0xE2, 0x06, 0xE0, - 0x4C, 0xA3, 0xCC, 0xA3, 0x01, 0x17, 0x8E, 0x05, - 0x4C, 0x62, 0xE0, 0xC2, 0xEA, 0x08, 0x5B, 0x04, - 0x8D, 0x07, 0x00, 0x10, 0x20, 0x20, 0x0A, 0xE0, - 0x01, 0x13, 0x5B, 0x04, 0x0D, 0x02, 0x48, 0x00, - 0xE0, 0xC3, 0x30, 0x09, 0x02, 0x16, 0xCE, 0x01, - 0x10, 0x00, 0x8D, 0x27, 0x03, 0x13, 0x0D, 0x02, - 0x00, 0x01, 0x52, 0x04, 0x00, 0x03, 0x02, 0x00, - 0x60, 0xC3, 0x6A, 0x09, 0x4D, 0x02, 0x08, 0x80, - 0x4E, 0x02, 0xF7, 0x7F, 0x8D, 0xE3, 0xE0, 0xC3, - 0xD8, 0x07, 0xE0, 0x23, 0x16, 0xE0, 0x04, 0x13, - 0x8D, 0x07, 0x06, 0x00, 0x8D, 0x27, 0x02, 0x13, - 0xA0, 0xE3, 0x10, 0xE0, 0x0E, 0xC8, 0x6A, 0x09, - 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x09, 0x13, - 0x0D, 0x02, 0x00, 0x12, 0x4E, 0x01, 0x10, 0x00, - 0x02, 0x13, 0x0D, 0x02, 0x00, 0x13, 0x0D, 0xD8, - 0x2E, 0x09, 0x60, 0xC3, 0x80, 0x01, 0x4E, 0x02, - 0x01, 0x00, 0x4D, 0x02, 0xFE, 0xFF, 0x4E, 0xE3, - 0x0D, 0xC8, 0x80, 0x01, 0x20, 0xD8, 0x40, 0xE2, - 0x2F, 0x09, 0x20, 0x01, 0x6A, 0x09, 0x06, 0x00, - 0x03, 0x13, 0x20, 0xD8, 0xD0, 0xE1, 0x2F, 0x09, - 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, 0x03, 0x13, - 0x20, 0xD8, 0x2F, 0x09, 0x83, 0x01, 0x00, 0x03, - 0x0F, 0x00, 0x60, 0x04, 0x88, 0xBE, 0x20, 0x20, - 0x0A, 0xE0, 0x03, 0x13, 0x0D, 0x02, 0x00, 0x10, - 0x5B, 0x04, 0x09, 0x02, 0x08, 0x00, 0x0D, 0x02, - 0x58, 0x09, 0xA0, 0x06, 0xF4, 0xBE, 0xA0, 0x07, - 0x02, 0x02, 0x00, 0x00, 0x0D, 0x02, 0x00, 0x04, - 0xE0, 0xC3, 0x58, 0x09, 0x0F, 0x01, 0x00, 0x7C, - 0x01, 0x13, 0x52, 0x04, 0x8F, 0xC3, 0x4E, 0x02, - 0x0F, 0x00, 0xFB, 0x13, 0x8E, 0x02, 0x0F, 0x00, - 0xF8, 0x13, 0x0D, 0x02, 0x00, 0x40, 0x4F, 0xC2, - 0x49, 0x09, 0x49, 0x02, 0x3F, 0x00, 0x09, 0x01, - 0x01, 0x00, 0xEF, 0x16, 0x89, 0x02, 0x06, 0x00, - 0xEC, 0x1A, 0x89, 0x02, 0x20, 0x00, 0xE9, 0x14, - 0xC9, 0x06, 0x1F, 0x09, 0x4F, 0x02, 0x00, 0x40, - 0x4F, 0xE2, 0x69, 0x02, 0x00, 0x80, 0x09, 0xC8, - 0x58, 0x09, 0x0F, 0x02, 0xFF, 0xFF, 0x4E, 0xC2, - 0x1F, 0x09, 0x09, 0x06, 0xFD, 0x16, 0x4F, 0x05, - 0x0D, 0x02, 0x00, 0x20, 0x60, 0xC2, 0x5A, 0x09, - 0xD4, 0x13, 0x4F, 0x26, 0xD2, 0x16, 0x0D, 0x02, - 0x00, 0x10, 0x60, 0xC2, 0x5C, 0x09, 0xCD, 0x13, - 0x4F, 0x26, 0xCB, 0x16, 0x0D, 0x02, 0x00, 0x30, - 0x20, 0x88, 0x5A, 0x09, 0x5C, 0x09, 0xC5, 0x13, - 0xE0, 0xC3, 0x5A, 0x09, 0x4E, 0xC2, 0x1F, 0x0A, - 0x09, 0x06, 0xFD, 0x16, 0xE0, 0xE3, 0x5E, 0x09, - 0x0F, 0xC8, 0x5A, 0x09, 0xE0, 0xC3, 0x5C, 0x09, - 0x4E, 0xC2, 0x1F, 0x0A, 0x09, 0x06, 0xFD, 0x16, - 0xE0, 0xE3, 0x5E, 0x09, 0x0F, 0xC8, 0x5C, 0x09, - 0x0F, 0x02, 0xFF, 0xFF, 0x4E, 0xC2, 0x1F, 0x0A, - 0x09, 0x06, 0xFD, 0x16, 0x0D, 0x02, 0x00, 0x08, - 0x60, 0xC2, 0x5E, 0x09, 0x4F, 0x26, 0xA5, 0x16, - 0x4F, 0x05, 0x0F, 0xC8, 0x5E, 0x09, 0x0F, 0x02, - 0x02, 0x02, 0x0E, 0x02, 0x03, 0x00, 0x60, 0xC3, - 0x40, 0x01, 0x0C, 0x02, 0xFE, 0xC0, 0xA0, 0x01, - 0x40, 0x01, 0x00, 0x04, 0xCF, 0x05, 0x09, 0x02, - 0x55, 0x55, 0x9C, 0x06, 0x49, 0x05, 0x9C, 0x06, - 0x09, 0x07, 0x9C, 0x06, 0x49, 0x05, 0x9C, 0x06, - 0x0E, 0x06, 0xF4, 0x16, 0xA0, 0x01, 0x40, 0x01, - 0x00, 0x40, 0x0D, 0xC8, 0x40, 0x01, 0x09, 0x02, - 0x08, 0x00, 0x0E, 0x02, 0x58, 0x09, 0x0F, 0x02, - 0x02, 0x02, 0xFE, 0xCF, 0x49, 0x06, 0xFD, 0x16, - 0x60, 0x04, 0x88, 0xBE, 0xC9, 0xC7, 0x5F, 0x82, - 0x01, 0x16, 0x5B, 0x04, 0xA0, 0x01, 0x40, 0x01, - 0x00, 0x40, 0x0D, 0xC8, 0x40, 0x01, 0x0D, 0x02, - 0x00, 0x01, 0x52, 0x04, 0x8D, 0x07, 0x00, 0x10, - 0x20, 0x20, 0x0A, 0xE0, 0x0A, 0x16, 0x8D, 0x07, - 0x00, 0x08, 0x20, 0x20, 0x10, 0xE0, 0x05, 0x13, - 0x8D, 0x07, 0x00, 0x40, 0x4F, 0x01, 0x01, 0x00, - 0x01, 0x16, 0x5B, 0x04, 0x20, 0xE0, 0x10, 0xE0, - 0x20, 0x07, 0x9C, 0x08, 0x20, 0x07, 0xB4, 0x08, - 0x20, 0x07, 0xCC, 0x08, 0xA0, 0x07, 0xA2, 0x08, - 0x84, 0x02, 0xA0, 0x07, 0xBA, 0x08, 0x84, 0x02, - 0xA0, 0x07, 0xD2, 0x08, 0x84, 0x02, 0xA0, 0x07, - 0x04, 0x09, 0x00, 0x40, 0xE0, 0x04, 0x06, 0x09, - 0xE0, 0x04, 0x08, 0x09, 0x0E, 0xC8, 0x4C, 0x08, - 0x0F, 0xC8, 0x4E, 0x08, 0x0E, 0xC8, 0x8E, 0x08, - 0x0F, 0xC8, 0x90, 0x08, 0xE0, 0x04, 0x5A, 0x08, - 0xE0, 0x04, 0x60, 0x08, 0xE0, 0x02, 0x78, 0x07, - 0xE0, 0x04, 0x94, 0x08, 0x20, 0x40, 0x40, 0xE3, - 0x20, 0xE0, 0x0C, 0xE0, 0x60, 0x04, 0xBC, 0xC6, - 0x80, 0x01, 0x00, 0xF0, 0xC0, 0x01, 0x00, 0x40, - 0x10, 0x10, 0x80, 0x01, 0x00, 0xF0, 0x0D, 0x10, - 0xC0, 0x01, 0x00, 0xF0, 0x20, 0x40, 0x06, 0xE0, - 0x08, 0x10, 0xC0, 0x01, 0x00, 0xF0, 0x80, 0x01, - 0x00, 0x20, 0xE0, 0xC3, 0x94, 0x08, 0x01, 0x16, - 0x5B, 0x04, 0x4B, 0xC0, 0x20, 0x04, 0xDA, 0xEA, - 0x40, 0x01, 0x00, 0x20, 0xFB, 0x16, 0x51, 0x04, - 0xA0, 0xC2, 0xD8, 0x07, 0x4A, 0x01, 0x40, 0x00, - 0x01, 0x16, 0x5B, 0x04, 0xE0, 0x02, 0x78, 0x07, - 0x20, 0x20, 0x0C, 0xE0, 0xEF, 0x16, 0x43, 0xC2, - 0x02, 0x13, 0xA0, 0x06, 0x1A, 0xC3, 0x20, 0x2F, - 0x36, 0x07, 0x20, 0x40, 0x0C, 0xE0, 0xA0, 0x06, - 0xAC, 0xC1, 0xA0, 0xC3, 0x94, 0x08, 0xFB, 0x16, - 0xA0, 0x06, 0x3A, 0xC2, 0x8E, 0x07, 0x04, 0x09, - 0x9E, 0x07, 0x00, 0x80, 0x20, 0x20, 0x10, 0xE0, - 0x05, 0x16, 0x8F, 0x07, 0x4C, 0x08, 0xBF, 0xCF, - 0xBF, 0xCF, 0x9F, 0xC7, 0xA0, 0x06, 0x5A, 0xC2, - 0x20, 0xE8, 0x3C, 0xE3, 0x62, 0x07, 0xA0, 0x06, - 0x3A, 0xC2, 0x20, 0x48, 0x3C, 0xE3, 0x62, 0x07, - 0x20, 0x40, 0x40, 0xE3, 0x20, 0xE0, 0x04, 0xE0, - 0x20, 0x48, 0x10, 0xE0, 0x58, 0x07, 0x5B, 0x04, - 0x80, 0x01, 0x00, 0xF0, 0x20, 0xE0, 0x04, 0xE0, - 0x60, 0x01, 0x60, 0x07, 0x02, 0x00, 0x02, 0x13, - 0x9B, 0x06, 0xB8, 0x10, 0x20, 0xE8, 0x1E, 0xE0, - 0x58, 0x07, 0xB4, 0x10, 0x9B, 0x06, 0x80, 0x03, - 0xE0, 0x02, 0x58, 0x07, 0x00, 0x01, 0x00, 0x40, - 0x07, 0x16, 0x8D, 0x07, 0x00, 0x09, 0xA0, 0x06, - 0x68, 0xB8, 0xE0, 0x02, 0x78, 0x07, 0x5B, 0x04, - 0xC4, 0x01, 0x02, 0x00, 0xE0, 0x02, 0x78, 0x07, - 0x5B, 0x04, 0x0E, 0x68, 0x96, 0x08, 0xE9, 0x04, - 0x0C, 0x00, 0x11, 0x10, 0x0E, 0x02, 0x00, 0x23, - 0x4E, 0xDB, 0x01, 0x00, 0xCC, 0x01, 0x00, 0x04, - 0x4C, 0xD7, 0x1C, 0x10, 0x60, 0xC2, 0x5C, 0x07, - 0x20, 0x06, 0x94, 0x08, 0xA9, 0xC2, 0x08, 0x00, - 0xA9, 0xC3, 0x0C, 0x00, 0xEA, 0x16, 0x29, 0x07, - 0x04, 0x00, 0x69, 0x01, 0x0A, 0x00, 0x01, 0x00, - 0x2D, 0x13, 0x49, 0xC3, 0x2D, 0x02, 0x0E, 0x00, - 0x0A, 0xC3, 0x1D, 0xD3, 0x8C, 0x01, 0x00, 0x84, - 0xCC, 0x01, 0x00, 0x40, 0x0A, 0x01, 0x00, 0x5E, - 0xDD, 0x16, 0x4C, 0xC7, 0xA9, 0xC3, 0x10, 0x00, - 0xE9, 0xC3, 0x12, 0x00, 0x41, 0xCA, 0x10, 0x00, - 0x2F, 0x02, 0x04, 0x00, 0x01, 0x17, 0x8E, 0x05, - 0x8C, 0x07, 0x02, 0x00, 0xA0, 0xC2, 0xF6, 0x07, - 0xA0, 0x06, 0x00, 0xBA, 0x69, 0xC0, 0x10, 0x00, - 0x29, 0xC8, 0x14, 0x00, 0x06, 0x09, 0x29, 0xC8, - 0x16, 0x00, 0x08, 0x09, 0x69, 0x01, 0x0E, 0x00, - 0x00, 0x08, 0x04, 0x16, 0x90, 0x03, 0x7F, 0x00, - 0xA0, 0x06, 0x5A, 0xC2, 0x40, 0x01, 0x00, 0x40, - 0x01, 0x16, 0x51, 0x04, 0x60, 0x04, 0xBE, 0xC1, - 0xA9, 0xC3, 0x0C, 0x00, 0x0B, 0x13, 0x0E, 0x68, - 0x96, 0x08, 0xE9, 0x04, 0x0C, 0x00, 0x29, 0xC8, - 0x06, 0x00, 0x6C, 0x01, 0xA0, 0xC3, 0x00, 0xFC, - 0x01, 0x13, 0x1E, 0x2E, 0x29, 0x07, 0x04, 0x00, - 0x5B, 0x04, 0x81, 0x07, 0x20, 0x20, 0x89, 0x07, - 0x4C, 0x08, 0x41, 0xCE, 0x63, 0xCE, 0x10, 0x00, - 0x63, 0xC6, 0x12, 0x00, 0xA0, 0x06, 0x54, 0xBA, - 0x43, 0xC2, 0x02, 0x13, 0xA0, 0x06, 0x1A, 0xC3, - 0x20, 0xE0, 0x10, 0xE0, 0x60, 0x04, 0xEC, 0xC1, - 0x40, 0x01, 0x00, 0x04, 0xEA, 0x16, 0xA0, 0x06, - 0xAC, 0xC1, 0xA0, 0xC2, 0xF0, 0x07, 0x8C, 0x07, - 0x04, 0x00, 0x8D, 0x07, 0x4C, 0x08, 0xA0, 0xC3, - 0x8E, 0x08, 0xE0, 0xC3, 0x90, 0x08, 0xA0, 0x06, - 0x36, 0xBA, 0xE0, 0xC3, 0x4E, 0x08, 0x4F, 0x01, - 0x01, 0x00, 0x13, 0x16, 0xE0, 0xC2, 0x94, 0x08, - 0xEA, 0x16, 0x60, 0x04, 0xEC, 0xC1, 0xE0, 0xC3, - 0x4E, 0x08, 0x4F, 0x01, 0x01, 0x00, 0x09, 0x16, - 0x60, 0x04, 0xEC, 0xC1, 0xA0, 0x06, 0x54, 0xBA, - 0xE0, 0xC3, 0x4E, 0x08, 0x4F, 0x01, 0x01, 0x00, - 0xD7, 0x13, 0xA0, 0xC2, 0xF0, 0x07, 0x20, 0xC3, - 0x7C, 0x09, 0x8D, 0x07, 0x4C, 0x08, 0x9D, 0xC3, - 0xA0, 0x06, 0x36, 0xBA, 0xC0, 0x06, 0x20, 0xD0, - 0x50, 0x08, 0xC0, 0x06, 0x40, 0x01, 0x00, 0x04, - 0x0A, 0x16, 0x40, 0x01, 0x80, 0x00, 0x07, 0x13, - 0x0E, 0xC8, 0x4C, 0x08, 0x0F, 0xC8, 0x4E, 0x08, - 0xA0, 0x06, 0xA2, 0xC1, 0xD8, 0x10, 0x0E, 0xC8, - 0x8E, 0x08, 0x0F, 0xC8, 0x90, 0x08, 0x40, 0x01, - 0x00, 0x04, 0x0C, 0x13, 0x40, 0x01, 0x20, 0x00, - 0x58, 0x16, 0x81, 0x07, 0x10, 0x20, 0x9F, 0x10, - 0xA0, 0x06, 0xAC, 0xC1, 0xA0, 0xC3, 0x8E, 0x08, - 0xE0, 0xC3, 0x90, 0x08, 0x83, 0x07, 0x98, 0x08, - 0x63, 0x07, 0x04, 0x00, 0x2D, 0x11, 0x83, 0x07, - 0xB0, 0x08, 0x63, 0x07, 0x04, 0x00, 0x28, 0x11, - 0x83, 0x07, 0xC8, 0x08, 0x63, 0x07, 0x04, 0x00, - 0x23, 0x11, 0xC3, 0x60, 0x60, 0xC2, 0x46, 0x07, - 0xE7, 0x13, 0x69, 0x01, 0x0E, 0x00, 0x00, 0x08, - 0xE3, 0x13, 0x00, 0x03, 0x02, 0x00, 0x19, 0xC8, - 0x46, 0x07, 0x03, 0x16, 0xA0, 0x01, 0x3A, 0x07, - 0x20, 0x00, 0x00, 0x03, 0x0F, 0x00, 0xC0, 0x01, - 0x00, 0xF0, 0x80, 0x01, 0x00, 0x20, 0x01, 0x02, - 0x06, 0xC4, 0x60, 0x04, 0x9A, 0xC2, 0x81, 0x07, - 0x80, 0x20, 0xE0, 0xC8, 0x8E, 0x08, 0x14, 0x00, - 0xE0, 0xC8, 0x90, 0x08, 0x16, 0x00, 0xC7, 0x10, - 0xE0, 0xC8, 0x50, 0x08, 0x0E, 0x00, 0xCE, 0xC8, - 0x10, 0x00, 0xCF, 0xC8, 0x12, 0x00, 0x40, 0x01, - 0x20, 0x00, 0xBB, 0x16, 0xE3, 0xC1, 0x06, 0x00, - 0xC7, 0xC8, 0x08, 0x00, 0x07, 0xC8, 0x6C, 0x01, - 0x07, 0xC8, 0xE0, 0x08, 0x08, 0x02, 0x02, 0xFC, - 0xB8, 0x07, 0x00, 0x81, 0xE0, 0xC1, 0xE8, 0x00, - 0x07, 0xCE, 0x20, 0xC8, 0x52, 0x08, 0x92, 0x08, - 0xDA, 0x13, 0xCE, 0xC8, 0x14, 0x00, 0xCF, 0xC8, - 0x16, 0x00, 0x80, 0x01, 0x00, 0x04, 0x82, 0x07, - 0x54, 0x08, 0x32, 0xC1, 0x08, 0x11, 0x72, 0xC1, - 0x92, 0xC1, 0x82, 0x07, 0x8A, 0x08, 0x04, 0xC1, - 0x07, 0x16, 0x60, 0x04, 0x8E, 0xC5, 0x72, 0xC1, - 0xB2, 0xC1, 0x84, 0x01, 0x00, 0x80, 0xF9, 0x13, - 0x04, 0x68, 0x92, 0x08, 0xC7, 0xC1, 0x37, 0x16, - 0x20, 0x98, 0x97, 0x08, 0x85, 0x09, 0x16, 0x16, - 0x81, 0x07, 0x40, 0x20, 0xE0, 0xC1, 0x94, 0x08, - 0x57, 0x13, 0xA0, 0x06, 0xAC, 0xC1, 0xF4, 0x10, - 0xE0, 0xC2, 0x3A, 0x07, 0xE0, 0x42, 0x62, 0x07, - 0xE0, 0x26, 0x3A, 0xE3, 0x02, 0x13, 0xA0, 0x06, - 0x92, 0xC1, 0xA0, 0x06, 0x54, 0xBA, 0x22, 0x10, - 0xA0, 0x06, 0x9C, 0xC1, 0x81, 0x2D, 0x01, 0xC2, - 0xFB, 0x13, 0xA0, 0x05, 0x96, 0x08, 0x23, 0xC8, - 0x08, 0x00, 0x6C, 0x01, 0xA0, 0x07, 0x02, 0xFC, - 0x00, 0x80, 0xC3, 0xC1, 0x27, 0x02, 0x06, 0x00, - 0xA0, 0x06, 0x0C, 0xB5, 0xA3, 0x05, 0x0C, 0x00, - 0x08, 0xC8, 0x6C, 0x01, 0x08, 0xC8, 0xE0, 0x08, - 0x08, 0x02, 0x02, 0xFC, 0xB8, 0x07, 0x00, 0x81, - 0xF8, 0xC1, 0x04, 0xC1, 0x37, 0x13, 0xE0, 0xD2, - 0x03, 0x01, 0xD2, 0x13, 0x0B, 0x02, 0x0A, 0x01, - 0xC4, 0xCE, 0xC7, 0xCE, 0xC5, 0xCE, 0xC6, 0xCE, - 0xFB, 0x04, 0x09, 0x02, 0x00, 0x04, 0x48, 0xA2, - 0xC9, 0xC6, 0x20, 0xA8, 0xE0, 0x08, 0x12, 0x01, - 0x20, 0xC8, 0xF2, 0x07, 0x00, 0x01, 0x47, 0xC2, - 0xC4, 0x81, 0x01, 0x14, 0x44, 0xC2, 0xC9, 0x61, - 0x09, 0xA2, 0x89, 0xA1, 0x01, 0x17, 0x85, 0x05, - 0x09, 0x61, 0xA8, 0x16, 0x82, 0x02, 0x8A, 0x08, - 0x05, 0x16, 0x40, 0x01, 0x10, 0x00, 0x12, 0x13, - 0x60, 0x04, 0xA6, 0xC3, 0x60, 0x04, 0xBC, 0xC4, - 0x60, 0x04, 0x40, 0xC3, 0x81, 0x07, 0x80, 0x20, - 0xFB, 0x10, 0x81, 0x07, 0x80, 0x20, 0xF8, 0x10, - 0x81, 0x07, 0x02, 0x20, 0xF5, 0x10, 0x81, 0x07, - 0x04, 0x20, 0xF2, 0x10, 0x23, 0xC8, 0x08, 0x00, - 0x6C, 0x01, 0x07, 0x05, 0xE0, 0xA1, 0xE8, 0x00, - 0x0C, 0x02, 0x04, 0xFC, 0x07, 0xCF, 0xE0, 0xC2, - 0x92, 0x08, 0xE8, 0x16, 0xE0, 0xD2, 0x03, 0x01, - 0x10, 0x16, 0xE0, 0xC2, 0x3A, 0x07, 0xE0, 0x42, - 0x62, 0x07, 0xE0, 0x26, 0x3A, 0xE3, 0x07, 0x13, - 0x90, 0x03, 0xC8, 0x2F, 0xA0, 0x06, 0x92, 0xC1, - 0xE0, 0xD2, 0x03, 0x01, 0x02, 0x16, 0xA0, 0x06, - 0x54, 0xBA, 0x23, 0xC8, 0x06, 0x00, 0x6C, 0x01, - 0xA3, 0xC2, 0x0E, 0x00, 0x4A, 0x01, 0x00, 0x01, - 0x0B, 0x13, 0x0C, 0x02, 0x0E, 0xFC, 0x5C, 0xC2, - 0x49, 0x02, 0x00, 0x80, 0x0D, 0x02, 0x6C, 0x09, - 0x7D, 0xE2, 0x09, 0xCF, 0x3D, 0xCF, 0x3D, 0xCF, - 0x0C, 0x02, 0x00, 0xFC, 0x6C, 0xC3, 0x06, 0x00, - 0x4D, 0x02, 0xFF, 0xE0, 0x4A, 0x02, 0x00, 0x02, - 0x8A, 0xA2, 0x8A, 0xA2, 0x4A, 0xE3, 0x60, 0xE3, - 0x9E, 0x09, 0x0D, 0xCB, 0x06, 0x00, 0xCD, 0x06, - 0x0B, 0x02, 0x0F, 0x00, 0xEC, 0x82, 0x04, 0x00, - 0xAD, 0x11, 0xEC, 0xC3, 0x0E, 0x00, 0x11, 0x15, - 0x10, 0x13, 0x6C, 0xC2, 0x14, 0x00, 0x49, 0x02, - 0x00, 0x1F, 0xA7, 0x13, 0xC9, 0x06, 0x89, 0x02, - 0x12, 0x00, 0xA3, 0x1B, 0x49, 0x01, 0x01, 0x00, - 0xA0, 0x13, 0xC9, 0xA2, 0xEC, 0x82, 0x04, 0x00, - 0x9C, 0x11, 0x4D, 0xA3, 0x9D, 0x18, 0x14, 0x11, - 0x60, 0x01, 0x6A, 0x09, 0x00, 0x80, 0x18, 0x13, - 0x1D, 0x09, 0xCC, 0xA2, 0xEB, 0xC2, 0x08, 0x00, - 0x7B, 0x09, 0x4B, 0x02, 0x1E, 0x00, 0xA0, 0xC3, - 0xF0, 0x06, 0xAB, 0x23, 0x04, 0xE0, 0x8F, 0x16, - 0x60, 0x27, 0x3E, 0xE3, 0x8C, 0x16, 0x4D, 0xA3, - 0x4D, 0xA3, 0x4D, 0xA3, 0xCD, 0x06, 0x4D, 0x02, - 0x07, 0x00, 0x0D, 0x88, 0xEE, 0x06, 0x0A, 0x15, - 0x90, 0x03, 0xFF, 0x6F, 0x53, 0x2F, 0xA0, 0x05, - 0x94, 0x08, 0xC3, 0x04, 0xC0, 0x01, 0x00, 0x04, - 0x60, 0x04, 0xAA, 0xC3, 0x60, 0x01, 0x6A, 0x09, - 0x00, 0x80, 0xF2, 0x13, 0x01, 0x02, 0x08, 0x20, - 0x60, 0x04, 0xA2, 0xC5, 0x8D, 0x07, 0x00, 0x10, - 0x20, 0x20, 0x0A, 0xE0, 0x0A, 0x16, 0x8D, 0x07, - 0x00, 0x08, 0x20, 0x20, 0x0E, 0xE0, 0x05, 0x13, - 0x8D, 0x07, 0x00, 0x40, 0x4F, 0x01, 0x01, 0x00, - 0x01, 0x16, 0x5B, 0x04, 0x20, 0xE0, 0x0E, 0xE0, - 0xA0, 0x07, 0xFA, 0x08, 0x00, 0x80, 0x0E, 0xC8, - 0xFA, 0x07, 0x0F, 0xC8, 0xFC, 0x07, 0x0E, 0xC8, - 0x3C, 0x08, 0x0F, 0xC8, 0x3E, 0x08, 0xE0, 0x04, - 0x08, 0x08, 0xE0, 0x04, 0x0E, 0x08, 0xE0, 0x02, - 0x98, 0x07, 0x20, 0x40, 0x4C, 0xE3, 0x20, 0x07, - 0x2E, 0x06, 0x60, 0x04, 0x12, 0xCA, 0x00, 0x70, - 0x4B, 0xC0, 0xE0, 0x04, 0x2E, 0x06, 0x0B, 0x10, - 0x20, 0xF0, 0x4B, 0xE3, 0x02, 0x10, 0x20, 0xF0, - 0x4A, 0xE3, 0x4B, 0xC0, 0xE0, 0x04, 0x2E, 0x06, - 0xE0, 0x01, 0x62, 0x07, 0x40, 0x00, 0x20, 0xE8, - 0x46, 0xE3, 0x62, 0x07, 0x20, 0x04, 0xDA, 0xEA, - 0x40, 0x01, 0x00, 0x20, 0x04, 0x13, 0xFA, 0x10, - 0x40, 0x01, 0x00, 0x40, 0xF7, 0x16, 0x20, 0x07, - 0x2E, 0x06, 0x20, 0x50, 0x50, 0xE3, 0x51, 0x04, - 0xF1, 0x10, 0xE0, 0x02, 0x58, 0x07, 0x00, 0x01, - 0x00, 0x40, 0x07, 0x16, 0x8D, 0x07, 0xF6, 0x08, - 0xA0, 0x06, 0x68, 0xB8, 0xE0, 0x02, 0x98, 0x07, - 0x5B, 0x04, 0xC4, 0x01, 0x04, 0x00, 0xE0, 0x02, - 0x98, 0x07, 0x5B, 0x04, 0x60, 0x01, 0x60, 0x07, - 0x04, 0x00, 0x06, 0x16, 0x20, 0xE8, 0x1C, 0xE0, - 0x58, 0x07, 0x80, 0x03, 0xE0, 0x02, 0x98, 0x07, - 0x20, 0xD8, 0xDC, 0x07, 0x17, 0x01, 0x8F, 0x07, - 0x8E, 0xFF, 0x0F, 0xC8, 0x04, 0x01, 0x20, 0xE8, - 0x06, 0xE0, 0x58, 0x07, 0x80, 0x01, 0x00, 0x80, - 0x5B, 0x04, 0xE0, 0xC2, 0x4A, 0x08, 0xC3, 0x82, - 0x03, 0x13, 0xDB, 0x2D, 0x03, 0xC8, 0x4A, 0x08, - 0x49, 0x01, 0x00, 0x01, 0x02, 0x16, 0x60, 0x04, - 0x52, 0xC9, 0xE0, 0xC0, 0xF8, 0x05, 0xFD, 0x13, - 0x03, 0xC8, 0x6C, 0x01, 0x20, 0xC8, 0x00, 0xFC, - 0xF8, 0x05, 0x88, 0x07, 0x02, 0xFC, 0x78, 0xC2, - 0xF8, 0xC1, 0x28, 0x02, 0x00, 0x04, 0x49, 0x01, - 0x00, 0x01, 0x4D, 0x16, 0x09, 0x01, 0x00, 0x5E, - 0x29, 0x16, 0x49, 0x01, 0x02, 0x00, 0x0B, 0x16, - 0x60, 0x01, 0x46, 0x08, 0x00, 0x02, 0x0A, 0x16, - 0x27, 0x02, 0x04, 0x00, 0x07, 0x88, 0x7E, 0x09, - 0x05, 0x12, 0x27, 0x02, 0xFC, 0xFF, 0xA0, 0x01, - 0x46, 0x08, 0x00, 0x02, 0xC7, 0xC1, 0x37, 0x15, - 0xD3, 0x2D, 0xE0, 0xC0, 0x4A, 0x08, 0x07, 0xA8, - 0x48, 0x08, 0x07, 0xA8, 0x44, 0x08, 0x0C, 0x15, - 0x20, 0xC8, 0x3C, 0x08, 0xFA, 0x07, 0x20, 0xC8, - 0x3E, 0x08, 0xFC, 0x07, 0x20, 0xC8, 0x40, 0x08, - 0x3C, 0x08, 0x20, 0xC8, 0x42, 0x08, 0x3E, 0x08, - 0x60, 0x04, 0x52, 0xC9, 0xA0, 0x06, 0x54, 0xBA, - 0xD3, 0x2D, 0xE0, 0xC2, 0x4A, 0x08, 0xC3, 0x82, - 0x01, 0x13, 0xDB, 0x2D, 0x20, 0x88, 0x3E, 0x08, - 0x3A, 0x08, 0x0D, 0x16, 0x20, 0x88, 0x3C, 0x08, - 0x38, 0x08, 0x09, 0x16, 0xE0, 0x04, 0x44, 0x08, - 0x82, 0x07, 0x02, 0x08, 0x04, 0x61, 0xE0, 0x04, - 0x48, 0x08, 0x60, 0x04, 0x1E, 0xCA, 0x20, 0xC8, - 0x38, 0x08, 0xFA, 0x07, 0x20, 0xC8, 0x3A, 0x08, - 0xFC, 0x07, 0x60, 0x04, 0x12, 0xCA, 0x07, 0xA8, - 0x48, 0x08, 0x04, 0xC1, 0x1B, 0x16, 0x82, 0x02, - 0x38, 0x08, 0x0A, 0x16, 0x60, 0x01, 0xFC, 0x07, - 0x01, 0x00, 0x02, 0x16, 0xA0, 0x06, 0x6E, 0xCB, - 0xA0, 0x06, 0xFC, 0xCA, 0x80, 0x01, 0x10, 0x00, - 0x32, 0xC1, 0x07, 0x11, 0x72, 0xC1, 0x92, 0xC1, - 0x82, 0x07, 0x38, 0x08, 0x04, 0xC1, 0x06, 0x16, - 0xEA, 0x10, 0x72, 0xC1, 0xB2, 0xC1, 0x84, 0x01, - 0x00, 0x80, 0xE5, 0x13, 0xE0, 0xD2, 0x03, 0x01, - 0x34, 0x13, 0x0B, 0x02, 0x0A, 0x01, 0xC4, 0xCE, - 0xC7, 0xCE, 0xC5, 0xCE, 0xC6, 0xCE, 0xFB, 0x04, - 0xC8, 0xC6, 0x03, 0xA8, 0x12, 0x01, 0x20, 0xC8, - 0xF8, 0x07, 0x00, 0x01, 0xC7, 0xC2, 0xC4, 0x81, - 0x01, 0x14, 0xC4, 0xC2, 0x0B, 0xA8, 0x44, 0x08, - 0x0B, 0x61, 0x0B, 0xA2, 0x8B, 0xA1, 0x01, 0x17, - 0x85, 0x05, 0xCB, 0x61, 0xC6, 0x16, 0x40, 0x01, - 0x40, 0x00, 0x15, 0x16, 0x87, 0x07, 0x20, 0x00, - 0xE0, 0x61, 0x44, 0x08, 0xC4, 0x81, 0x08, 0x1A, - 0x07, 0xA8, 0x48, 0x08, 0x07, 0xA8, 0x44, 0x08, - 0x07, 0x61, 0x87, 0xA1, 0x01, 0x17, 0x85, 0x05, - 0x80, 0x01, 0x40, 0x00, 0x03, 0xC8, 0x6C, 0x01, - 0xE0, 0xC1, 0x04, 0xFC, 0xAC, 0x10, 0x60, 0x04, - 0xBC, 0xC7, 0x20, 0x01, 0x3A, 0x07, 0x00, 0x70, - 0x04, 0x13, 0xA0, 0x06, 0x28, 0xC7, 0x20, 0x07, - 0x2E, 0x06, 0xA0, 0x06, 0x54, 0xBA, 0xC1, 0x10, - 0xE0, 0xD2, 0x03, 0x01, 0x0A, 0x16, 0x20, 0x01, - 0x3A, 0x07, 0x00, 0x70, 0x04, 0x13, 0xA0, 0x06, - 0x28, 0xC7, 0x20, 0x07, 0x2E, 0x06, 0xA0, 0x06, - 0x54, 0xBA, 0x90, 0x03, 0xBF, 0x4F, 0xD3, 0x2D, - 0x60, 0x01, 0xFC, 0x07, 0x01, 0x00, 0x02, 0x16, - 0xA0, 0x06, 0x6E, 0xCB, 0x60, 0xD2, 0x46, 0x08, - 0x89, 0x01, 0x00, 0xF1, 0xC9, 0x01, 0x00, 0x70, - 0x40, 0x01, 0x10, 0x00, 0x1C, 0x13, 0x20, 0x88, - 0x3E, 0x08, 0x3A, 0x08, 0x04, 0x16, 0x20, 0x88, - 0x3C, 0x08, 0x38, 0x08, 0x14, 0x13, 0x89, 0x01, - 0x00, 0x10, 0x8D, 0x07, 0x44, 0x08, 0x9D, 0x07, - 0x00, 0x50, 0xA0, 0xC2, 0xF6, 0x07, 0x8C, 0x07, - 0x02, 0x00, 0xA0, 0xC3, 0x3C, 0x08, 0xE0, 0xC3, - 0x3E, 0x08, 0x2F, 0x02, 0x04, 0x00, 0x01, 0x17, - 0x8E, 0x05, 0xA0, 0x06, 0x00, 0xBA, 0x8D, 0x07, - 0x46, 0x08, 0x49, 0xC7, 0xA0, 0xC2, 0xF6, 0x07, - 0x8C, 0x07, 0x04, 0x00, 0xA0, 0xC3, 0x38, 0x08, - 0xE0, 0xC3, 0x3A, 0x08, 0xCC, 0xA3, 0x01, 0x17, - 0x8E, 0x05, 0xA0, 0x06, 0x00, 0xBA, 0x20, 0xC8, - 0x3C, 0x08, 0xFC, 0x08, 0x20, 0xC8, 0x3E, 0x08, - 0xFE, 0x08, 0x09, 0x01, 0x00, 0x0C, 0x0C, 0x13, - 0x49, 0x01, 0x00, 0x04, 0x05, 0x16, 0xA0, 0x06, - 0x6C, 0xC7, 0xA0, 0x06, 0x38, 0xC7, 0x04, 0x10, - 0x90, 0x03, 0x7F, 0x40, 0xA0, 0x06, 0x6C, 0xC7, - 0xC0, 0x01, 0x90, 0x00, 0xA0, 0x06, 0xFC, 0xCA, - 0x0B, 0xC8, 0x46, 0x08, 0xE0, 0xC2, 0x42, 0x07, - 0x2D, 0x13, 0xE0, 0xC2, 0x2E, 0x06, 0x2A, 0x13, - 0xE0, 0x02, 0x58, 0x07, 0x8F, 0x07, 0xBF, 0xFF, - 0x0F, 0x2C, 0xE0, 0x02, 0x98, 0x07, 0xE0, 0xC0, - 0x5C, 0x07, 0x03, 0xC8, 0x4A, 0x08, 0x03, 0xC8, - 0x6C, 0x01, 0xC3, 0xC2, 0xCB, 0xA2, 0xEB, 0xC2, - 0x32, 0x0C, 0x32, 0x13, 0x0B, 0xC8, 0x00, 0xFC, - 0x0B, 0xC3, 0x4B, 0xC3, 0x0B, 0xC8, 0x6C, 0x01, - 0xE0, 0xC2, 0x00, 0xFC, 0xFA, 0x16, 0x00, 0x03, - 0x02, 0x00, 0x20, 0xC8, 0xF8, 0x05, 0x00, 0xFC, - 0x02, 0x16, 0x0D, 0xC8, 0xFA, 0x05, 0x0C, 0xC8, - 0xF8, 0x05, 0x00, 0x03, 0x0F, 0x00, 0x03, 0xC8, - 0x6C, 0x01, 0x1A, 0x10, 0xA0, 0xC3, 0x2E, 0x06, - 0x03, 0x13, 0xE0, 0xC0, 0xF8, 0x05, 0x0D, 0x16, - 0x4F, 0x2E, 0xC0, 0x01, 0x00, 0x80, 0xA0, 0x01, - 0x62, 0x07, 0x00, 0x80, 0x8E, 0xC3, 0x03, 0x13, - 0xA0, 0x01, 0x62, 0x07, 0x40, 0x00, 0x60, 0x04, - 0x4E, 0xC7, 0x03, 0xC8, 0x6C, 0x01, 0x20, 0xC8, - 0x00, 0xFC, 0xF8, 0x05, 0x03, 0xC8, 0x4A, 0x08, - 0x60, 0x01, 0x6A, 0x09, 0x00, 0x04, 0x02, 0x13, - 0x60, 0x04, 0xE4, 0xC7, 0x8C, 0x07, 0x0E, 0x00, - 0x20, 0xC2, 0x0E, 0xFC, 0x0A, 0x15, 0x09, 0x13, - 0x20, 0xC2, 0x14, 0xFC, 0x48, 0x02, 0x00, 0x1F, - 0xC8, 0x06, 0x88, 0x02, 0x12, 0x00, 0xF0, 0x1B, - 0x08, 0xA3, 0x88, 0x07, 0x02, 0xFC, 0x78, 0xC2, - 0xF8, 0xC1, 0x28, 0x02, 0x00, 0x04, 0x07, 0x83, - 0xE7, 0x1A, 0xCC, 0x61, 0x07, 0xC8, 0x04, 0xFC, - 0xCC, 0xC1, 0xC0, 0x01, 0x40, 0x00, 0x60, 0x04, - 0xF0, 0xC7, 0x4B, 0xC1, 0xA0, 0xC2, 0xF0, 0x07, - 0x20, 0xC3, 0x7A, 0x09, 0x8D, 0x07, 0xFA, 0x07, - 0x9D, 0xC3, 0xE0, 0xC3, 0xFC, 0x07, 0xA0, 0x06, - 0x00, 0xBA, 0x20, 0xC8, 0x3C, 0x08, 0x40, 0x08, - 0x20, 0xC8, 0x3E, 0x08, 0x42, 0x08, 0x0E, 0xC8, - 0x3C, 0x08, 0x0F, 0xC8, 0x3E, 0x08, 0xC4, 0x04, - 0x82, 0x07, 0x02, 0x08, 0xE0, 0x04, 0x44, 0x08, - 0x40, 0x01, 0x80, 0x00, 0x06, 0x16, 0x0E, 0xC8, - 0x38, 0x08, 0x0F, 0xC8, 0x3A, 0x08, 0xE0, 0x04, - 0x48, 0x08, 0xA0, 0x06, 0x54, 0xBA, 0xE0, 0xC2, - 0xFE, 0x07, 0x0D, 0x11, 0x0E, 0xC8, 0xFA, 0x07, - 0x0F, 0xC8, 0xFC, 0x07, 0x20, 0xC8, 0x40, 0x08, - 0x3C, 0x08, 0x20, 0xC8, 0x42, 0x08, 0x3E, 0x08, - 0xA0, 0x06, 0x32, 0xC7, 0xCB, 0x10, 0x80, 0x01, - 0x80, 0x00, 0x55, 0x04, 0x8B, 0xC0, 0xA0, 0xC2, - 0xF0, 0x07, 0x8C, 0x07, 0x04, 0x00, 0x8D, 0x07, - 0xFA, 0x07, 0xA0, 0xC3, 0x3C, 0x08, 0xE0, 0xC3, - 0x3E, 0x08, 0xA0, 0x06, 0x36, 0xBA, 0x60, 0x01, - 0xFC, 0x07, 0x01, 0x00, 0x04, 0x13, 0xA0, 0x07, - 0xFA, 0x08, 0x00, 0x80, 0x52, 0x04, 0x60, 0x01, - 0x60, 0x07, 0x04, 0x00, 0x07, 0x16, 0x20, 0xD0, - 0x04, 0xE0, 0x20, 0xE8, 0x1A, 0xE0, 0x58, 0x07, - 0x60, 0x04, 0x3E, 0xC7, 0xA0, 0x07, 0xFA, 0x08, - 0x00, 0x40, 0x20, 0xC8, 0x3C, 0x08, 0xFC, 0x08, - 0x20, 0xC8, 0x3E, 0x08, 0xFE, 0x08, 0xA0, 0x06, - 0x6C, 0xC7, 0xA0, 0x06, 0x38, 0xC7, 0xD3, 0x10, - 0xAD, 0xC2, 0x02, 0x00, 0x6D, 0xC2, 0x00, 0x00, - 0x05, 0x16, 0xAA, 0x07, 0x02, 0x00, 0x36, 0x07, - 0x9A, 0x2C, 0x80, 0x03, 0xEA, 0x2C, 0x02, 0x00, - 0x41, 0xCB, 0x00, 0x00, 0x80, 0x03, 0x2D, 0xC3, - 0x18, 0x00, 0xAC, 0x07, 0x02, 0x00, 0x36, 0x07, - 0x20, 0x4B, 0x06, 0xEB, 0x0A, 0x00, 0x20, 0xEB, - 0x00, 0xEB, 0x0A, 0x00, 0x9C, 0x2E, 0x80, 0x03, - 0xA0, 0xC2, 0x22, 0xE0, 0x60, 0x04, 0x8A, 0xA3, - 0xED, 0xC0, 0x18, 0x00, 0xA0, 0x06, 0x3A, 0xCC, - 0x80, 0x03, 0x44, 0xC2, 0xC3, 0xC0, 0x02, 0x13, - 0xA0, 0x06, 0x3A, 0xCC, 0x19, 0xC3, 0x09, 0xCB, - 0x18, 0x00, 0xC9, 0x05, 0x19, 0xCB, 0x16, 0x00, - 0x4C, 0xC2, 0x2C, 0x02, 0x1A, 0x00, 0x0D, 0xCF, - 0x0E, 0xCF, 0x0F, 0xC7, 0x99, 0x00, 0x5B, 0x04, - 0x8C, 0x07, 0x0A, 0x09, 0x9C, 0xC2, 0xA0, 0x22, - 0x14, 0xE0, 0x06, 0x13, 0xA0, 0xC2, 0x58, 0x07, - 0xA0, 0x22, 0x20, 0xE0, 0x01, 0x16, 0x80, 0x03, - 0x03, 0xC1, 0xC3, 0x04, 0x8A, 0x07, 0x04, 0x00, - 0x84, 0xA2, 0x3A, 0xCF, 0x3A, 0xCF, 0x3A, 0xCF, - 0x3A, 0xCF, 0x3A, 0xCF, 0xE0, 0x02, 0x58, 0x07, - 0x8D, 0x07, 0x0A, 0x09, 0x0B, 0xC8, 0xC2, 0x07, - 0xA0, 0x06, 0x44, 0xB8, 0xE0, 0xC2, 0xC2, 0x07, - 0x20, 0xE0, 0x20, 0xE0, 0xE0, 0x02, 0xB8, 0x07, - 0x5B, 0x04, 0x2D, 0xC3, 0x18, 0x00, 0x8C, 0xC2, - 0x60, 0xC2, 0x6C, 0x01, 0x0A, 0xC8, 0x6C, 0x01, - 0xE0, 0xC2, 0x00, 0xFC, 0x02, 0x13, 0x8B, 0xC2, - 0xF9, 0x10, 0x09, 0xC8, 0x6C, 0x01, 0x8B, 0x07, - 0xF8, 0x05, 0x5B, 0xC2, 0x0C, 0x13, 0xCB, 0x05, - 0x5B, 0xC2, 0xCA, 0xC6, 0xE0, 0xC2, 0x6C, 0x01, - 0x09, 0xC8, 0x6C, 0x01, 0x0C, 0xC8, 0x00, 0xFC, - 0x0B, 0xC8, 0x6C, 0x01, 0x02, 0x10, 0xCC, 0xCE, - 0xCA, 0xC6, 0xA0, 0xC2, 0xE0, 0x00, 0xA0, 0x22, - 0x1A, 0xE0, 0x06, 0x16, 0x20, 0xE8, 0x04, 0xE0, - 0x3A, 0x07, 0x20, 0x48, 0x1A, 0xE0, 0xE0, 0x00, - 0x80, 0x03, 0xE0, 0xD3, 0xAB, 0xE3, 0xE0, 0x04, - 0x8E, 0x09, 0xE0, 0xC1, 0xA8, 0x06, 0x05, 0x16, - 0x07, 0x02, 0xA2, 0x06, 0xA0, 0x06, 0x38, 0xB5, - 0x0B, 0x16, 0xE0, 0xC1, 0xBA, 0x06, 0x23, 0x16, - 0x07, 0x02, 0xB4, 0x06, 0xA0, 0x06, 0x38, 0xB5, - 0x1E, 0x13, 0x07, 0x02, 0xB8, 0x06, 0x02, 0x10, - 0x07, 0x02, 0xA6, 0x06, 0x60, 0xC1, 0x02, 0xFC, - 0x25, 0xC8, 0x0C, 0x00, 0x02, 0xFC, 0xC5, 0xC9, - 0x0C, 0x00, 0xF5, 0xCD, 0xF5, 0xCD, 0xF5, 0xCD, - 0xF5, 0xCD, 0xF5, 0xCD, 0xF5, 0xC5, 0xB7, 0x01, - 0x28, 0x00, 0x27, 0x02, 0xF4, 0xFF, 0xA7, 0x07, - 0x04, 0x00, 0x52, 0xCE, 0x20, 0xE8, 0x9E, 0x09, - 0x06, 0xFC, 0x97, 0x2E, 0xD2, 0x10, 0x00, 0x03, - 0x02, 0x00, 0xA0, 0x06, 0x50, 0xB5, 0x00, 0x03, - 0x0F, 0x00, 0x20, 0x2C, 0xF0, 0xED, 0xE0, 0x93, - 0xAB, 0xE3, 0x03, 0x16, 0x81, 0x02, 0x16, 0x00, - 0xC4, 0x16, 0x21, 0xC1, 0x10, 0xEB, 0x54, 0x04, - 0xE0, 0x93, 0x10, 0xE0, 0x03, 0x16, 0xA0, 0xD2, - 0xA8, 0xE3, 0x0B, 0x10, 0xCF, 0xD3, 0x09, 0x16, - 0xA0, 0x23, 0x08, 0xE0, 0x06, 0x16, 0x84, 0x07, - 0x20, 0x00, 0x04, 0xE8, 0xD2, 0x06, 0xA0, 0xD2, - 0x0C, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0x60, 0x04, - 0x70, 0xD1, 0x22, 0xC1, 0x04, 0x00, 0xE2, 0x04, - 0x02, 0x00, 0x54, 0x04, 0x02, 0xC8, 0x6C, 0x01, - 0x82, 0xA0, 0x22, 0xC8, 0x32, 0x0C, 0x00, 0xFC, - 0x02, 0x02, 0x00, 0xFC, 0xE0, 0x93, 0xAA, 0xE3, - 0x13, 0x16, 0xB0, 0x03, 0x20, 0x98, 0xAA, 0xE3, - 0x65, 0x06, 0x0D, 0x16, 0x8B, 0x07, 0x17, 0xFC, - 0xDB, 0xD2, 0x8B, 0x09, 0x8B, 0x02, 0x15, 0x00, - 0x7B, 0x1B, 0xEB, 0xD2, 0xC4, 0xEA, 0x06, 0x13, - 0x77, 0x15, 0x20, 0x07, 0xA0, 0x09, 0x74, 0x10, - 0xA0, 0x06, 0x02, 0xD0, 0xA0, 0x48, 0x04, 0xE0, - 0x0E, 0x00, 0x85, 0x02, 0x07, 0x00, 0x0E, 0x13, - 0x0E, 0x01, 0x03, 0x00, 0x0B, 0x13, 0xA0, 0x23, - 0x22, 0xE0, 0x03, 0x16, 0xA0, 0xD2, 0x0E, 0xE0, - 0x02, 0x10, 0xA0, 0xD2, 0xA8, 0xE3, 0x8E, 0x01, - 0x03, 0x00, 0x5E, 0x10, 0x05, 0xC8, 0xFC, 0x06, - 0xC3, 0xC0, 0x57, 0x16, 0xA0, 0x43, 0x10, 0xE0, - 0x22, 0x88, 0x0E, 0x00, 0x6C, 0x09, 0x0A, 0x16, - 0x22, 0x88, 0x10, 0x00, 0x6E, 0x09, 0x06, 0x16, - 0x22, 0x88, 0x12, 0x00, 0x70, 0x09, 0x02, 0x16, - 0xA0, 0xE3, 0x10, 0xE0, 0x85, 0x02, 0x09, 0x00, - 0x02, 0x13, 0xA0, 0x06, 0xB8, 0xD7, 0x45, 0xA1, - 0x65, 0xC1, 0xAC, 0xE3, 0x55, 0x04, 0x62, 0xC0, - 0x04, 0x00, 0x22, 0xC8, 0x06, 0x00, 0x6C, 0x01, - 0x82, 0x02, 0x48, 0x04, 0x02, 0x1B, 0xA0, 0x43, - 0x0C, 0xE0, 0x22, 0xC1, 0x0E, 0x00, 0x51, 0x04, - 0x42, 0xC0, 0xE1, 0x04, 0x02, 0x00, 0xA2, 0xC0, - 0x0C, 0x00, 0x22, 0xC1, 0x0A, 0x00, 0x20, 0x21, - 0x18, 0xE0, 0x07, 0x13, 0xA1, 0xC8, 0x0A, 0x00, - 0x0A, 0x00, 0xA1, 0xC8, 0x08, 0x00, 0x08, 0x00, - 0xE2, 0x10, 0x22, 0xC8, 0x06, 0x00, 0x6C, 0x01, - 0xA0, 0x06, 0x66, 0xD6, 0x60, 0x04, 0xB0, 0xCE, - 0x02, 0xC8, 0xD4, 0x06, 0x62, 0xC1, 0x02, 0x00, - 0x65, 0xC1, 0xD8, 0xE3, 0x55, 0x04, 0x0F, 0x10, - 0x0E, 0x10, 0x85, 0x07, 0xF4, 0x03, 0xF5, 0x04, - 0x60, 0xCD, 0xCE, 0xED, 0xA0, 0x06, 0xA2, 0xD8, - 0xA0, 0xE3, 0x0C, 0xE0, 0x20, 0xE8, 0x9E, 0x09, - 0x06, 0x04, 0xA0, 0x2E, 0xF4, 0x03, 0x60, 0x04, - 0xE4, 0xCC, 0xA0, 0x06, 0x26, 0xD5, 0x0C, 0x10, - 0xA0, 0x06, 0x66, 0xD6, 0x09, 0x10, 0xA0, 0x06, - 0x2A, 0xD8, 0x06, 0x10, 0xA0, 0x06, 0x66, 0xD6, - 0x03, 0xC8, 0x2A, 0x09, 0xA0, 0xD2, 0xAA, 0xE3, - 0xA0, 0x06, 0x6E, 0xCF, 0xA0, 0x92, 0x26, 0xE0, - 0x0C, 0x16, 0xE0, 0xD3, 0x26, 0xE0, 0xE0, 0x23, - 0x14, 0xE0, 0x0A, 0x13, 0x0A, 0xC1, 0xC4, 0x83, - 0x07, 0x13, 0xC4, 0xC3, 0x24, 0xC1, 0xDC, 0xE3, - 0x54, 0x04, 0xCA, 0x93, 0xDC, 0x13, 0xCA, 0xD3, - 0xB0, 0x03, 0x0F, 0xD8, 0x59, 0x06, 0x04, 0x71, - 0x24, 0xC1, 0xEC, 0xE3, 0x54, 0x04, 0xA0, 0x23, - 0x0C, 0xE0, 0xD1, 0x13, 0x4D, 0xC3, 0xCF, 0x13, - 0x4D, 0x01, 0x00, 0x04, 0x0B, 0x13, 0x86, 0x07, - 0x02, 0x00, 0x84, 0x07, 0x26, 0x00, 0x46, 0x23, - 0x03, 0x13, 0x44, 0x06, 0x86, 0xA1, 0xFB, 0x10, - 0x46, 0x43, 0xB3, 0x10, 0x84, 0x07, 0x18, 0x00, - 0x8D, 0x01, 0x00, 0x04, 0x85, 0x07, 0xF4, 0x03, - 0xF5, 0x04, 0x60, 0xCD, 0xCE, 0xED, 0xA0, 0x06, - 0xA2, 0xD8, 0x20, 0xE8, 0x9C, 0x09, 0xFE, 0x03, - 0x20, 0xE8, 0x9E, 0x09, 0x06, 0x04, 0xA8, 0x10, - 0x85, 0x07, 0x1C, 0x07, 0x86, 0x07, 0x1A, 0x04, - 0x76, 0x6D, 0x76, 0x6D, 0x76, 0x6D, 0xC6, 0x05, - 0x76, 0x6D, 0x76, 0x6D, 0x76, 0x6D, 0x83, 0x07, - 0x00, 0x90, 0xA9, 0x10, 0x0B, 0xC3, 0x86, 0x07, - 0x00, 0x01, 0x85, 0x07, 0x00, 0x80, 0x20, 0xC1, - 0xD2, 0x06, 0x37, 0x13, 0xC4, 0x04, 0x60, 0xC0, - 0xD2, 0x06, 0x45, 0x20, 0x04, 0x13, 0x84, 0x05, - 0x15, 0x09, 0xF9, 0x16, 0x2E, 0x10, 0xCF, 0xD3, - 0x06, 0x16, 0xE0, 0x23, 0x14, 0xE0, 0x03, 0x16, - 0x0E, 0x01, 0x03, 0x00, 0x03, 0x13, 0xE0, 0x04, - 0xD2, 0x06, 0x23, 0x10, 0x64, 0xD0, 0x1C, 0x07, - 0x46, 0xB0, 0x10, 0x18, 0x01, 0xD9, 0x1C, 0x07, - 0x60, 0x23, 0x20, 0xE0, 0x0B, 0x13, 0x81, 0x07, - 0x18, 0x00, 0x61, 0xC0, 0xFC, 0xE3, 0x11, 0x88, - 0xCE, 0xED, 0x04, 0x13, 0x08, 0x02, 0x18, 0x80, - 0xA0, 0x06, 0xDA, 0xD4, 0x64, 0xD0, 0x28, 0x07, - 0x46, 0xB0, 0x08, 0x18, 0x01, 0xD9, 0x28, 0x07, - 0x46, 0xB0, 0x04, 0x17, 0x83, 0x07, 0x40, 0x80, - 0xA0, 0x06, 0x2A, 0xD8, 0x05, 0x48, 0xD2, 0x06, - 0xCA, 0x16, 0x20, 0xC1, 0x32, 0x09, 0x01, 0x16, - 0x5C, 0x04, 0x04, 0x02, 0x07, 0x00, 0x20, 0x06, - 0x32, 0x09, 0x05, 0x02, 0x00, 0x01, 0xC7, 0x10, - 0x0B, 0xC3, 0xC5, 0x04, 0x42, 0xC0, 0xC7, 0x04, - 0x20, 0xC2, 0x6C, 0x01, 0xE1, 0xA1, 0x04, 0x00, - 0x11, 0xC8, 0x6C, 0x01, 0xFB, 0x16, 0x08, 0xC8, - 0x6C, 0x01, 0xC8, 0x04, 0xA0, 0x43, 0x1A, 0xE0, - 0x22, 0xC1, 0x0E, 0x00, 0x0D, 0x15, 0x0C, 0x13, - 0xA0, 0xE3, 0x1A, 0xE0, 0xA0, 0x06, 0x14, 0xD8, - 0x08, 0xC2, 0x48, 0x13, 0x88, 0x02, 0x12, 0x00, - 0x45, 0x1B, 0x20, 0x22, 0x22, 0xE0, 0x42, 0x13, - 0x02, 0xC1, 0x08, 0xA1, 0x08, 0x05, 0x28, 0x02, - 0xF2, 0xFF, 0x07, 0xA2, 0x83, 0x07, 0x01, 0x80, - 0x88, 0x02, 0x04, 0x00, 0x6E, 0x11, 0x64, 0xC2, - 0x16, 0x00, 0x49, 0xD2, 0x02, 0x16, 0x02, 0x81, - 0x31, 0x16, 0x09, 0x01, 0x00, 0xF0, 0x28, 0x16, - 0x49, 0xC1, 0x45, 0x71, 0xC3, 0x04, 0x85, 0x02, - 0x09, 0x00, 0x7C, 0x13, 0x83, 0x07, 0x02, 0x80, - 0xA4, 0xC1, 0x14, 0x00, 0x88, 0x81, 0x76, 0x16, - 0x83, 0x05, 0x85, 0x02, 0x15, 0x00, 0x13, 0x1B, - 0x83, 0x05, 0x49, 0x99, 0x30, 0xEB, 0x0A, 0x13, - 0x09, 0x98, 0x0E, 0xE0, 0x6B, 0x16, 0x25, 0x98, - 0x30, 0xEB, 0x0C, 0xE0, 0x67, 0x16, 0xE0, 0xC1, - 0xEC, 0x06, 0x64, 0x16, 0xC3, 0x04, 0x52, 0xC2, - 0x0F, 0x13, 0x83, 0x07, 0x09, 0x80, 0xE0, 0xC1, - 0x6A, 0x09, 0x47, 0x01, 0x00, 0x10, 0x5A, 0x16, - 0xA0, 0xC0, 0x6C, 0x01, 0xA0, 0x06, 0xBE, 0xD6, - 0x60, 0x04, 0xB0, 0xCE, 0x60, 0x04, 0xBA, 0xCE, - 0x89, 0x07, 0x0E, 0x07, 0xC7, 0x04, 0xE5, 0xD1, - 0x46, 0xEB, 0x05, 0x13, 0xC7, 0x06, 0x27, 0x02, - 0x5C, 0xEB, 0x77, 0xCE, 0xFE, 0x15, 0x44, 0xC0, - 0x21, 0x02, 0x18, 0x00, 0x28, 0x02, 0xFC, 0xFF, - 0x36, 0x13, 0x91, 0xC1, 0x86, 0xD1, 0x1F, 0x13, - 0xC6, 0x06, 0x87, 0x07, 0x0E, 0x07, 0xF7, 0xC0, - 0x46, 0x02, 0xFF, 0xBF, 0x43, 0x02, 0xFF, 0x3F, - 0xA0, 0x91, 0xF5, 0xED, 0x09, 0x16, 0xB0, 0x03, - 0x20, 0x98, 0x0E, 0xE0, 0x5D, 0x06, 0x0F, 0x16, - 0x21, 0xC8, 0x02, 0x00, 0x0C, 0x07, 0x17, 0x10, - 0x47, 0x82, 0x0C, 0x1B, 0xC6, 0x90, 0xEB, 0x16, - 0x47, 0x06, 0xF7, 0x04, 0xB0, 0x03, 0x20, 0x98, - 0x5D, 0x06, 0x57, 0x06, 0x0C, 0x13, 0x83, 0x07, - 0x05, 0x80, 0x1C, 0x10, 0xD1, 0xC0, 0xE0, 0x20, - 0x16, 0xE0, 0x03, 0x16, 0x83, 0x07, 0x08, 0x80, - 0x15, 0x10, 0x60, 0x44, 0x26, 0xE0, 0x86, 0x71, - 0x46, 0xA0, 0x06, 0x62, 0x83, 0x07, 0x05, 0x80, - 0x08, 0xC2, 0xCB, 0x15, 0x0B, 0x16, 0xC3, 0x04, - 0x87, 0x07, 0x0E, 0x07, 0x77, 0xC0, 0x47, 0x82, - 0x05, 0x1B, 0x60, 0x20, 0x06, 0xE0, 0xFA, 0x16, - 0x83, 0x07, 0x07, 0x80, 0x5C, 0x04, 0xA0, 0x92, - 0x0E, 0xE0, 0x11, 0x16, 0x20, 0xC8, 0x20, 0xE0, - 0x08, 0x07, 0xE0, 0x04, 0x84, 0x01, 0x60, 0x05, - 0x02, 0x07, 0x4B, 0x13, 0x20, 0x48, 0x06, 0xE0, - 0x82, 0x01, 0xA0, 0x06, 0xD0, 0xD4, 0x83, 0x07, - 0x00, 0xC0, 0xA0, 0x06, 0x2A, 0xD8, 0x20, 0xC8, - 0x1E, 0xE0, 0x02, 0x07, 0xA0, 0xE3, 0x04, 0xE0, - 0x08, 0x02, 0x24, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x42, 0x10, 0x20, 0xC1, 0x84, 0x01, 0x44, 0x02, - 0x00, 0x88, 0x2A, 0x13, 0x04, 0x48, 0x84, 0x01, - 0x20, 0x06, 0x02, 0x07, 0xF1, 0x16, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x80, 0x15, 0x13, 0xA0, 0x23, - 0x22, 0xE0, 0x05, 0x16, 0xA0, 0x43, 0x22, 0xE0, - 0xA0, 0xD2, 0x0E, 0xE0, 0xCF, 0x10, 0xE0, 0x23, - 0x14, 0xE0, 0x04, 0x13, 0x20, 0x98, 0xA9, 0xE3, - 0x65, 0x06, 0x0C, 0x16, 0xA0, 0x92, 0x0E, 0xE0, - 0xC5, 0x13, 0xA0, 0xD2, 0xA8, 0xE3, 0xD3, 0x10, - 0x20, 0xC8, 0x20, 0xE0, 0x08, 0x07, 0x83, 0x07, - 0x00, 0xC0, 0x04, 0x10, 0x83, 0x07, 0x02, 0x00, - 0x60, 0x04, 0xCA, 0xCE, 0x60, 0x04, 0xC0, 0xCE, - 0x20, 0xE8, 0x06, 0xE0, 0x82, 0x01, 0xA0, 0x06, - 0xD0, 0xD4, 0x20, 0x07, 0x02, 0x07, 0xA0, 0x43, - 0x04, 0xE0, 0x20, 0xC8, 0xAE, 0xE4, 0x86, 0x01, - 0x20, 0x88, 0x20, 0xE0, 0x08, 0x07, 0x03, 0x16, - 0x20, 0xC8, 0x78, 0xEB, 0x08, 0x07, 0x60, 0x04, - 0xD2, 0xCE, 0x0E, 0x01, 0x03, 0x00, 0x16, 0x13, - 0xCF, 0xD3, 0x08, 0x16, 0xA0, 0x23, 0x20, 0xE0, - 0x03, 0x16, 0xA0, 0xD2, 0xA8, 0xE3, 0x02, 0x10, - 0xA0, 0xD2, 0x0E, 0xE0, 0x8E, 0x01, 0x03, 0x00, - 0x09, 0x10, 0x60, 0xC1, 0x84, 0x01, 0x60, 0x21, - 0x0A, 0xE0, 0x04, 0x16, 0x83, 0x07, 0x00, 0x84, - 0x60, 0x04, 0xCA, 0xCE, 0x20, 0xC8, 0x2E, 0xE0, - 0x84, 0x01, 0x08, 0x02, 0x06, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x60, 0x04, 0xD2, 0xCE, 0x60, 0xE3, - 0x20, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0xE0, 0x93, - 0x26, 0xE0, 0x10, 0x16, 0xA0, 0x23, 0x08, 0xE0, - 0x0D, 0x16, 0xA0, 0x23, 0x06, 0xE0, 0x02, 0x13, - 0x60, 0xE3, 0x1C, 0xE0, 0x60, 0xE3, 0x18, 0xE0, - 0xA0, 0x43, 0x06, 0xE0, 0x08, 0x02, 0x3C, 0x80, - 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, 0xD2, 0xCE, - 0xA0, 0x92, 0xA8, 0xE3, 0x03, 0x13, 0xA0, 0x92, - 0xA9, 0xE3, 0x1E, 0x16, 0xE0, 0x23, 0x14, 0xE0, - 0x08, 0x13, 0x20, 0x98, 0xA9, 0xE3, 0x65, 0x06, - 0x04, 0x13, 0x83, 0x07, 0x07, 0x00, 0x60, 0x04, - 0xCA, 0xCE, 0xA0, 0xD2, 0x0E, 0xE0, 0x20, 0xC8, - 0x20, 0xE0, 0x08, 0x07, 0xA0, 0x27, 0x04, 0xE0, - 0x0B, 0x16, 0x20, 0xC8, 0x1E, 0xE0, 0x08, 0x07, - 0xE0, 0x93, 0xA8, 0xE3, 0x05, 0x16, 0xA0, 0x23, - 0x12, 0xE0, 0x02, 0x13, 0x20, 0x06, 0x08, 0x07, - 0x60, 0x04, 0xD2, 0xCE, 0xE0, 0x23, 0x14, 0xE0, - 0x3E, 0x13, 0xB0, 0x03, 0x20, 0x98, 0x0E, 0xE0, - 0x6F, 0x06, 0x0F, 0x16, 0xCF, 0xD3, 0x37, 0x16, - 0xA0, 0xD2, 0xA8, 0xE3, 0x60, 0x04, 0xD2, 0xCE, - 0xA0, 0x92, 0x0C, 0xE0, 0x30, 0x16, 0xE0, 0x23, - 0x14, 0xE0, 0xF6, 0x13, 0x83, 0x07, 0x06, 0x00, - 0x07, 0x10, 0x83, 0x07, 0x05, 0x00, 0xE0, 0x93, - 0x0E, 0xE0, 0x02, 0x16, 0x83, 0x07, 0x07, 0x00, - 0x60, 0x04, 0xCA, 0xCE, 0x60, 0xE3, 0x12, 0xE0, - 0xE0, 0x23, 0x14, 0xE0, 0x11, 0x13, 0x20, 0x98, - 0x0C, 0xE0, 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, - 0xA9, 0xE3, 0x65, 0x06, 0x14, 0x10, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x80, 0x10, 0x13, 0x20, 0xC1, - 0x84, 0x01, 0x20, 0x21, 0x06, 0xE0, 0xD2, 0x16, - 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x07, 0x13, - 0x20, 0x48, 0x06, 0xE0, 0x84, 0x01, 0x08, 0x02, - 0x30, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, - 0xD2, 0xCE, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x20, - 0xFA, 0x16, 0x08, 0x02, 0x78, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x20, 0xC2, 0xA2, 0x09, 0x03, 0x13, - 0x20, 0x06, 0xA2, 0x09, 0x21, 0x13, 0x20, 0xC2, - 0xA4, 0x09, 0xED, 0x13, 0x20, 0x06, 0xA4, 0x09, - 0xEA, 0x16, 0xA0, 0x07, 0xA4, 0x09, 0x05, 0x00, - 0xCD, 0x01, 0x00, 0x04, 0xE4, 0x10, 0x60, 0x01, - 0x8E, 0x09, 0x80, 0x00, 0x3E, 0x13, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x10, 0x02, 0x16, 0xA0, 0x06, - 0xE6, 0xD5, 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x10, - 0xE0, 0x01, 0x8E, 0x09, 0x80, 0x00, 0x83, 0x07, - 0x00, 0xA8, 0xA0, 0x06, 0x2A, 0xD8, 0x16, 0x10, - 0x60, 0x01, 0x8E, 0x09, 0x00, 0x04, 0x21, 0x13, - 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x10, 0xA0, 0x07, - 0x08, 0x07, 0x05, 0x00, 0x83, 0x07, 0x08, 0xA8, - 0xA0, 0x23, 0x04, 0xE0, 0x05, 0x16, 0x20, 0xC8, - 0x20, 0xE0, 0x08, 0x07, 0x83, 0x07, 0x08, 0xE8, - 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0x01, 0x8E, 0x09, - 0x00, 0x20, 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x01, - 0xE0, 0x01, 0x82, 0x01, 0x00, 0x08, 0xA0, 0xD2, - 0x0E, 0xE0, 0x83, 0x07, 0x10, 0x80, 0x60, 0x04, - 0xC0, 0xCE, 0x08, 0x02, 0x78, 0x00, 0xA0, 0x06, - 0xDA, 0xD4, 0x83, 0x07, 0x00, 0x82, 0x60, 0x04, - 0xCA, 0xCE, 0x60, 0x04, 0xD2, 0xCE, 0x20, 0x06, - 0x90, 0x09, 0x07, 0x15, 0xA0, 0xD2, 0x10, 0xE0, - 0xCA, 0x06, 0xA0, 0xD2, 0x26, 0xE0, 0xCF, 0x04, - 0xF4, 0x10, 0x08, 0x02, 0x7E, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x20, 0xC2, 0x90, 0x09, 0x88, 0x02, - 0x96, 0x00, 0x0D, 0x1B, 0xEA, 0x16, 0x20, 0x48, - 0x08, 0xE0, 0x82, 0x01, 0xA0, 0x01, 0x8E, 0x09, - 0x00, 0x10, 0xA0, 0x06, 0xE6, 0xD5, 0x83, 0x07, - 0x00, 0x28, 0x60, 0x04, 0xC0, 0xCE, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x10, 0xDA, 0x16, 0x84, 0x07, - 0x04, 0x00, 0x85, 0x07, 0xF4, 0x03, 0xF5, 0x04, - 0xB5, 0x07, 0x30, 0x06, 0xA0, 0x06, 0xA2, 0xD8, - 0xA0, 0x07, 0xF8, 0x03, 0x34, 0xD4, 0x60, 0x04, - 0xC0, 0xDB, 0xA0, 0x07, 0x90, 0x09, 0xF4, 0x01, - 0x08, 0x02, 0x7E, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x08, 0x02, 0x36, 0x00, 0xA0, 0x06, 0xDA, 0xD4, - 0x20, 0xE8, 0x0C, 0xE0, 0x82, 0x01, 0xA0, 0x23, - 0x18, 0xE0, 0x06, 0x13, 0xA0, 0xE3, 0x18, 0xE0, - 0xE0, 0x2E, 0x00, 0x00, 0x41, 0xC0, 0xFA, 0x16, - 0xA0, 0x06, 0xE6, 0xD5, 0xB2, 0x10, 0x04, 0x02, - 0x64, 0x00, 0x04, 0x06, 0xFE, 0x16, 0x5B, 0x04, - 0xA0, 0xE3, 0x0A, 0xE0, 0x08, 0xC2, 0x02, 0x11, - 0xA0, 0x43, 0x0A, 0xE0, 0x20, 0x42, 0x04, 0xE0, - 0x28, 0x02, 0xFC, 0xE3, 0x58, 0xC0, 0x02, 0xC0, - 0x11, 0x88, 0xCE, 0xED, 0x03, 0x16, 0xD1, 0x2C, - 0x58, 0xC0, 0xD1, 0x04, 0x80, 0xC0, 0x0E, 0x01, - 0x00, 0x10, 0x0F, 0x13, 0x60, 0xCC, 0xCE, 0xED, - 0xC8, 0x05, 0x78, 0xCC, 0x03, 0x16, 0x41, 0x06, - 0x60, 0xCC, 0xD6, 0x06, 0x58, 0xC4, 0x02, 0x16, - 0x60, 0xC4, 0x00, 0x07, 0x21, 0x02, 0xFA, 0xFF, - 0x91, 0x2C, 0x5B, 0x04, 0x0B, 0xC3, 0xA0, 0x06, - 0xC2, 0xD5, 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, - 0x05, 0x16, 0x62, 0xC2, 0x02, 0x00, 0x60, 0x26, - 0xA8, 0xE4, 0x0D, 0x16, 0x42, 0xC2, 0xC9, 0x05, - 0x60, 0xCE, 0xF2, 0xED, 0x60, 0xC6, 0x7C, 0xEB, - 0xA0, 0x06, 0x10, 0xD6, 0x18, 0xCA, 0x0A, 0x00, - 0x20, 0x46, 0x26, 0xE0, 0x04, 0x16, 0xA0, 0xC0, - 0x6C, 0x01, 0x12, 0x2E, 0x1D, 0x10, 0x12, 0xC1, - 0x05, 0x13, 0x60, 0xC1, 0x6C, 0x01, 0x14, 0x2E, - 0x05, 0xC8, 0x6C, 0x01, 0xD2, 0x04, 0x48, 0x06, - 0x84, 0x07, 0x02, 0x00, 0x48, 0xC1, 0xA0, 0xC0, - 0x6C, 0x01, 0x02, 0xC0, 0xA0, 0x06, 0xA2, 0xD8, - 0x60, 0xC5, 0x02, 0xFC, 0x07, 0x02, 0xA2, 0x06, - 0x25, 0x02, 0xF4, 0xFF, 0x05, 0xC8, 0x02, 0xFC, - 0x20, 0xC2, 0x6C, 0x01, 0xA0, 0x06, 0xFC, 0xB4, - 0x5C, 0x04, 0x42, 0xC2, 0x29, 0x02, 0x08, 0x00, - 0x39, 0xC2, 0x48, 0x02, 0x00, 0xC0, 0x88, 0x02, - 0x00, 0xC0, 0x08, 0x16, 0x60, 0x8E, 0x2E, 0xE0, - 0x05, 0x16, 0x60, 0x86, 0x2E, 0xE0, 0x02, 0x16, - 0xC8, 0x04, 0x5B, 0x04, 0x08, 0x07, 0x5B, 0x04, - 0x20, 0x88, 0x8E, 0xE1, 0x6C, 0x01, 0x02, 0x16, - 0x60, 0x04, 0xBA, 0xCE, 0x5B, 0x04, 0x88, 0x07, - 0xAE, 0x01, 0x20, 0xE8, 0x0E, 0xE0, 0x80, 0x01, - 0x08, 0x06, 0xFE, 0x16, 0x20, 0x48, 0x0E, 0xE0, - 0x80, 0x01, 0x5B, 0x04, 0xC2, 0x04, 0xA0, 0x23, - 0x0C, 0xE0, 0x10, 0x16, 0x20, 0x2F, 0x30, 0x06, - 0x82, 0x07, 0xDF, 0xFF, 0x02, 0x2C, 0x82, 0x02, - 0xF4, 0x03, 0x06, 0x13, 0xE2, 0x04, 0x02, 0x00, - 0xA2, 0xC0, 0x06, 0x00, 0x12, 0x2E, 0xF4, 0x10, - 0xA0, 0x43, 0x0C, 0xE0, 0x5B, 0x04, 0x42, 0xC2, - 0x88, 0x07, 0x0E, 0x00, 0x09, 0xA2, 0x29, 0x02, - 0x08, 0x00, 0x78, 0xCE, 0x78, 0xCE, 0x78, 0xCE, - 0x60, 0xCE, 0x6C, 0x09, 0x60, 0xCE, 0x6E, 0x09, - 0x60, 0xCE, 0x70, 0x09, 0xA0, 0x23, 0x1A, 0xE0, - 0x0F, 0x16, 0x58, 0xC2, 0x49, 0x02, 0x80, 0x1F, - 0x60, 0x2A, 0x14, 0xE0, 0xA0, 0xE8, 0x04, 0xE0, - 0x0E, 0x00, 0x09, 0xC6, 0x49, 0x02, 0x00, 0x1F, - 0xC9, 0x06, 0x09, 0xA2, 0x89, 0xA8, 0x04, 0x00, - 0x28, 0x02, 0x02, 0x00, 0x58, 0xC2, 0x49, 0x0A, - 0x49, 0x02, 0x00, 0xF0, 0x09, 0xD6, 0xE2, 0x04, - 0x06, 0x00, 0x5B, 0x04, 0x00, 0x07, 0x82, 0xC0, - 0x53, 0x13, 0xA0, 0xC0, 0x6C, 0x01, 0xA0, 0xC1, - 0x06, 0xFC, 0x46, 0x02, 0x0F, 0x00, 0x86, 0x02, - 0x01, 0x00, 0x3D, 0x12, 0x06, 0x88, 0xF2, 0x06, - 0x12, 0x16, 0x01, 0x02, 0x0E, 0xFC, 0x31, 0x88, - 0xF4, 0x06, 0x0D, 0x16, 0x31, 0x88, 0xF6, 0x06, - 0x0A, 0x16, 0x31, 0x88, 0xF8, 0x06, 0x07, 0x16, - 0x86, 0x02, 0x02, 0x00, 0x2C, 0x16, 0x20, 0x88, - 0x0A, 0x07, 0xFA, 0x06, 0x28, 0x13, 0x20, 0xC1, - 0x6A, 0x09, 0x44, 0x01, 0x00, 0x08, 0x06, 0x13, - 0x86, 0x02, 0x02, 0x00, 0x20, 0x16, 0x44, 0x01, - 0x80, 0x00, 0x1D, 0x16, 0x00, 0x07, 0xE0, 0x23, - 0x14, 0xE0, 0x19, 0x16, 0x82, 0x02, 0x43, 0x00, - 0x16, 0x13, 0x00, 0x02, 0x02, 0xFC, 0x40, 0xC0, - 0xB0, 0x01, 0x20, 0x00, 0x60, 0x01, 0x6A, 0x09, - 0x01, 0x00, 0x07, 0x16, 0x60, 0xA0, 0x2C, 0x09, - 0x60, 0xCC, 0xEE, 0x05, 0x50, 0xC4, 0x20, 0xC4, - 0x2C, 0x09, 0x80, 0x07, 0x36, 0x07, 0x81, 0x07, - 0x40, 0x00, 0x40, 0x2C, 0xC0, 0x04, 0x84, 0x07, - 0xF2, 0x06, 0x06, 0xCD, 0x01, 0x02, 0x0E, 0xFC, - 0x31, 0xCD, 0x31, 0xCD, 0x31, 0xCD, 0x20, 0xC5, - 0x0A, 0x07, 0x00, 0xC0, 0x01, 0x13, 0x12, 0x2E, - 0xE0, 0x04, 0x6C, 0x01, 0x5B, 0x04, 0x60, 0x01, - 0x8A, 0x09, 0x00, 0x80, 0x12, 0x13, 0x0B, 0xC8, - 0x22, 0x09, 0xA0, 0x06, 0x3E, 0xD7, 0x08, 0x02, - 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x08, 0x02, - 0x30, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xE0, 0xC2, - 0x22, 0x09, 0x5B, 0x04, 0x20, 0x48, 0xAC, 0xE4, - 0x80, 0x01, 0x20, 0x48, 0x7E, 0xEB, 0x82, 0x01, - 0x20, 0x48, 0x22, 0xE0, 0xAE, 0x01, 0x20, 0x48, - 0x22, 0xE0, 0x78, 0x09, 0x60, 0x43, 0x18, 0xE0, - 0xA0, 0x43, 0x08, 0xE0, 0x60, 0x01, 0x8A, 0x09, - 0x00, 0x80, 0xEB, 0x13, 0x0B, 0xC3, 0x08, 0x02, - 0x42, 0x00, 0xA0, 0x06, 0xDA, 0xD4, 0x5C, 0x04, - 0x0B, 0xC3, 0x20, 0xE8, 0x0E, 0xE0, 0x82, 0x01, - 0x20, 0xE8, 0x22, 0xE0, 0xAE, 0x01, 0x20, 0xE8, - 0x22, 0xE0, 0x78, 0x09, 0xA0, 0xE3, 0x08, 0xE0, - 0x60, 0xE3, 0x18, 0xE0, 0xA0, 0x43, 0x06, 0xE0, - 0x08, 0x02, 0x3C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x08, 0x02, 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x5C, 0x04, 0x0B, 0xC3, 0x83, 0x07, 0x00, 0x68, - 0xA0, 0x06, 0x2A, 0xD8, 0x83, 0x07, 0x10, 0x80, - 0xA0, 0x06, 0x2A, 0xD8, 0x5C, 0x04, 0x0B, 0xC3, - 0xA0, 0x06, 0x14, 0xD8, 0x02, 0xA2, 0x68, 0xC2, - 0x14, 0x00, 0x29, 0x02, 0xFC, 0xFF, 0x24, 0x13, - 0x28, 0x02, 0x18, 0x00, 0x87, 0x07, 0x0E, 0x00, - 0x81, 0x07, 0x0E, 0x07, 0xF1, 0x04, 0x47, 0x06, - 0xFD, 0x15, 0x58, 0xC0, 0xB0, 0x03, 0x01, 0x78, - 0x63, 0x06, 0x41, 0x02, 0x3F, 0x00, 0x0E, 0x13, - 0x81, 0x02, 0x1F, 0x00, 0x0B, 0x1B, 0x41, 0xA0, - 0x61, 0xC0, 0x86, 0xE4, 0xF8, 0xC1, 0xC7, 0x06, - 0xC7, 0x71, 0x47, 0x06, 0x78, 0xCC, 0x47, 0x06, - 0xFD, 0x15, 0x04, 0x10, 0x58, 0xC0, 0xC1, 0x06, - 0x41, 0x70, 0x01, 0xA2, 0x49, 0xC2, 0xE5, 0x15, - 0x5C, 0x04, 0xA0, 0x23, 0x1A, 0xE0, 0x02, 0x13, - 0xC8, 0x04, 0x5B, 0x04, 0x22, 0xC2, 0x14, 0x00, - 0x48, 0x02, 0x00, 0x1F, 0xC8, 0x06, 0x5B, 0x04, - 0x83, 0x02, 0x0F, 0x00, 0x17, 0x1B, 0xA0, 0xC1, - 0xD4, 0x06, 0x35, 0x13, 0x26, 0x02, 0x04, 0x00, - 0xA0, 0xCD, 0xCE, 0xED, 0x83, 0xC5, 0x04, 0x13, - 0x4A, 0xC2, 0x39, 0x0A, 0xC9, 0xE0, 0x83, 0xC5, - 0x86, 0x07, 0x36, 0x07, 0x87, 0x07, 0x10, 0x00, - 0x20, 0xC2, 0xD4, 0x06, 0xE0, 0x04, 0xD4, 0x06, - 0x46, 0x2C, 0x5B, 0x04, 0x60, 0xC0, 0xFE, 0x06, - 0x20, 0xC2, 0x6A, 0x09, 0x48, 0x02, 0x00, 0x60, - 0x20, 0x22, 0x06, 0xE0, 0x04, 0x16, 0x20, 0xE2, - 0x0A, 0xE0, 0x20, 0xE2, 0x18, 0xE0, 0x13, 0x0A, - 0x04, 0x18, 0x41, 0x05, 0x03, 0x48, 0xFE, 0x06, - 0x06, 0x10, 0x83, 0x02, 0x02, 0x00, 0x01, 0x16, - 0x13, 0x09, 0x03, 0xE8, 0xFE, 0x06, 0xC8, 0x40, - 0xC1, 0x40, 0x05, 0x13, 0x88, 0x07, 0x36, 0x07, - 0x89, 0x07, 0x00, 0x40, 0x48, 0x2C, 0x5B, 0x04, - 0xC9, 0x04, 0x24, 0xC1, 0x94, 0xEB, 0x84, 0xC1, - 0x86, 0x71, 0x86, 0xA1, 0x26, 0x02, 0x56, 0xEC, - 0xC4, 0x06, 0x04, 0x71, 0x24, 0x02, 0xC2, 0xEB, - 0x14, 0xD2, 0xC8, 0x09, 0x08, 0xA2, 0xB0, 0x03, - 0x34, 0xD8, 0x5F, 0x06, 0x47, 0x02, 0x0F, 0x00, - 0xC7, 0xA1, 0x28, 0xC2, 0x82, 0xEB, 0x58, 0x04, - 0x76, 0xCD, 0x47, 0x06, 0xFD, 0x16, 0x32, 0x10, - 0x36, 0xC2, 0x26, 0x10, 0x17, 0x09, 0x47, 0xA1, - 0x2D, 0x10, 0x17, 0x09, 0x47, 0x61, 0x2A, 0x10, - 0xA0, 0x43, 0x16, 0xE0, 0x5B, 0x04, 0xA0, 0x43, - 0x16, 0xE0, 0x49, 0xC2, 0x03, 0x16, 0x44, 0xC2, - 0x06, 0xC8, 0x22, 0x09, 0x27, 0xC1, 0x8E, 0xED, - 0x84, 0xC1, 0x86, 0x71, 0x26, 0x02, 0xC4, 0xED, - 0xC4, 0x06, 0x04, 0x71, 0x24, 0x02, 0xAA, 0xED, - 0xD3, 0x10, 0x09, 0xC1, 0xA0, 0xC1, 0x22, 0x09, - 0xC9, 0x04, 0x10, 0x10, 0x36, 0xC2, 0x78, 0xD5, - 0x60, 0x41, 0x22, 0xE0, 0xC5, 0x05, 0x0A, 0x10, - 0x78, 0xCD, 0x47, 0x06, 0xFD, 0x15, 0x06, 0x10, - 0xA0, 0x23, 0x16, 0xE0, 0xCD, 0x16, 0x49, 0xC2, - 0xEC, 0x16, 0xD6, 0x10, 0xA0, 0xE3, 0x16, 0xE0, - 0xBB, 0x10, 0x08, 0x02, 0x5A, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x44, 0x10, 0xA0, 0x92, 0x0C, 0xE0, - 0x15, 0x16, 0x44, 0x02, 0x00, 0x5E, 0x14, 0x16, - 0x20, 0x48, 0xAC, 0xE4, 0x80, 0x01, 0xA0, 0x06, - 0x72, 0xD7, 0x20, 0xC8, 0x9E, 0x01, 0x9E, 0x01, - 0xE0, 0x2E, 0x01, 0x00, 0xA0, 0x43, 0x18, 0xE0, - 0xA0, 0xD2, 0x26, 0xE0, 0x83, 0x07, 0x10, 0x00, - 0xA0, 0x06, 0x2A, 0xD8, 0x60, 0x04, 0xD2, 0xCE, - 0x84, 0x07, 0x08, 0x00, 0x60, 0x04, 0x94, 0xCE, - 0x85, 0x07, 0x03, 0x02, 0x05, 0xC8, 0xCE, 0x06, - 0xA0, 0x43, 0x12, 0xE0, 0xE0, 0x04, 0xFA, 0x06, - 0xA0, 0x06, 0xA4, 0xD7, 0x08, 0x02, 0x48, 0x80, - 0xA0, 0x06, 0xDA, 0xD4, 0x17, 0x10, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x80, 0x02, 0x16, 0x60, 0x04, - 0x9C, 0xD4, 0xA0, 0x27, 0x2C, 0xE0, 0x04, 0x16, - 0x08, 0x02, 0x54, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x83, 0x07, 0x00, 0xA8, 0x20, 0x88, 0x08, 0x07, - 0x20, 0xE0, 0x02, 0x16, 0x83, 0x07, 0x00, 0xE8, - 0xA0, 0x06, 0x2A, 0xD8, 0x08, 0x02, 0x36, 0x00, - 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xE8, 0x0C, 0xE0, - 0x82, 0x01, 0xA0, 0x23, 0x18, 0xE0, 0x06, 0x13, - 0xA0, 0xE3, 0x18, 0xE0, 0xE0, 0x2E, 0x00, 0x00, - 0x41, 0xC0, 0xFA, 0x16, 0xA0, 0x06, 0xE6, 0xD5, - 0x82, 0xC0, 0x02, 0x13, 0x4F, 0x02, 0x80, 0xFF, - 0xC4, 0x04, 0x0F, 0xD1, 0xC4, 0x06, 0x60, 0x04, - 0x94, 0xCE, 0xA0, 0x06, 0x32, 0xDA, 0x08, 0x02, - 0x36, 0x80, 0xA0, 0x07, 0xD6, 0x06, 0x20, 0xDA, - 0xA0, 0x06, 0xDA, 0xD4, 0x10, 0x10, 0xA0, 0x06, - 0x32, 0xDA, 0x20, 0xD1, 0xCE, 0x06, 0xE6, 0x13, - 0x20, 0x78, 0x12, 0xE0, 0xCE, 0x06, 0xE2, 0x10, - 0x20, 0xC1, 0x16, 0x04, 0x14, 0x0A, 0xC4, 0x06, - 0x0A, 0x91, 0x01, 0x16, 0x5B, 0x04, 0x60, 0x04, - 0xD2, 0xCE, 0xB0, 0x03, 0x20, 0x98, 0xAB, 0xE3, - 0x65, 0x06, 0x02, 0x13, 0x60, 0x04, 0xBA, 0xCE, - 0x60, 0xC1, 0x94, 0x09, 0x02, 0x13, 0x60, 0x04, - 0x22, 0xDE, 0x60, 0xD1, 0x0E, 0xE0, 0x3D, 0x10, - 0x85, 0x07, 0xBE, 0xEA, 0x35, 0xC8, 0x8A, 0x09, - 0x15, 0xC8, 0x8C, 0x09, 0x0B, 0x10, 0xE0, 0x04, - 0xA0, 0x09, 0x20, 0xD8, 0x2E, 0x09, 0xA6, 0x09, - 0x20, 0xC8, 0xA8, 0x09, 0x8A, 0x09, 0x20, 0xC8, - 0xAA, 0x09, 0x8C, 0x09, 0xE0, 0x04, 0x8E, 0x09, - 0xCA, 0x04, 0xCD, 0x04, 0xCE, 0x04, 0xCF, 0x04, - 0xE0, 0x04, 0xA8, 0x06, 0xE0, 0x04, 0xBA, 0x06, - 0x84, 0x07, 0xA0, 0x01, 0x85, 0x07, 0x10, 0x00, - 0xF4, 0x04, 0x45, 0x06, 0xFD, 0x15, 0x84, 0x07, - 0xD8, 0x06, 0x85, 0x07, 0x34, 0x07, 0x44, 0x61, - 0xF4, 0x04, 0x45, 0x06, 0xFD, 0x15, 0x84, 0x07, - 0xC8, 0x00, 0x04, 0xC8, 0x00, 0x07, 0x84, 0x07, - 0xFF, 0x7F, 0x04, 0xC8, 0xF0, 0x06, 0x84, 0x07, - 0x06, 0x00, 0x04, 0xC8, 0xEE, 0x06, 0x85, 0x07, - 0x02, 0x0C, 0x20, 0xC1, 0x8A, 0x09, 0x01, 0x11, - 0xC5, 0x06, 0xB0, 0x03, 0x05, 0xD8, 0x65, 0x06, - 0x60, 0x04, 0xD2, 0xCE, 0xB0, 0x03, 0x20, 0x98, - 0xAA, 0xE3, 0x65, 0x06, 0x79, 0x16, 0x60, 0xD1, - 0x10, 0xE0, 0xF3, 0x10, 0x60, 0xD1, 0xAB, 0xE3, - 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x02, 0xE0, 0x01, - 0x80, 0x01, 0x00, 0x20, 0xC8, 0x04, 0x20, 0xD2, - 0x80, 0x01, 0x08, 0xC8, 0x9C, 0x09, 0x08, 0xD8, - 0x2E, 0x09, 0xE3, 0x10, 0x20, 0xF8, 0x19, 0xEE, - 0x82, 0x01, 0x20, 0xC8, 0x10, 0xE0, 0xC6, 0x06, - 0x20, 0xC8, 0x20, 0xE0, 0xC8, 0x06, 0x20, 0xC8, - 0xC2, 0xEA, 0x90, 0x09, 0xE0, 0x2E, 0x00, 0x00, - 0xA0, 0x06, 0xE6, 0xD5, 0x20, 0xC8, 0x6C, 0x09, - 0xA0, 0x01, 0x20, 0xC8, 0x6E, 0x09, 0xA2, 0x01, - 0x20, 0xC8, 0x70, 0x09, 0xA4, 0x01, 0x20, 0xC8, - 0x6E, 0x09, 0xB0, 0x01, 0x20, 0xC8, 0x70, 0x09, - 0xB2, 0x01, 0x20, 0xC8, 0x70, 0x09, 0xCC, 0x06, - 0x20, 0xF8, 0x18, 0xEE, 0x80, 0x01, 0xB0, 0x03, - 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x02, 0x20, 0x98, - 0xAA, 0xE3, 0x65, 0x06, 0x3A, 0x13, 0xE0, 0x01, - 0x8E, 0x09, 0x00, 0x02, 0x88, 0x07, 0x56, 0xDF, - 0xE0, 0xC2, 0x8A, 0x09, 0x05, 0x11, 0xA0, 0x01, - 0x8E, 0x09, 0x00, 0x02, 0x88, 0x07, 0x9A, 0xDF, - 0x98, 0x06, 0x08, 0x02, 0x12, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x84, 0x07, 0x0A, 0x00, 0x85, 0x07, - 0xF4, 0x03, 0x20, 0x88, 0xC6, 0x06, 0x20, 0xE0, - 0x08, 0x1B, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, - 0xA5, 0x13, 0x84, 0x07, 0x1C, 0x00, 0x85, 0x07, - 0xF8, 0x03, 0xA0, 0x06, 0xA2, 0xD8, 0x85, 0x07, - 0x42, 0xDC, 0x05, 0xC8, 0xF8, 0x03, 0x20, 0xC8, - 0xA0, 0x09, 0xA0, 0x09, 0x6C, 0x16, 0x20, 0xE8, - 0x9C, 0x09, 0xFE, 0x03, 0x20, 0xE8, 0x9E, 0x09, - 0x06, 0x04, 0xA0, 0x23, 0x0C, 0xE0, 0x32, 0x13, - 0xA0, 0xE3, 0x0C, 0xE0, 0xA0, 0x2E, 0xF4, 0x03, - 0x2D, 0x10, 0xA0, 0x06, 0x56, 0xDF, 0x60, 0x01, - 0x8E, 0x09, 0x00, 0x40, 0x08, 0x13, 0x08, 0x02, - 0x6C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x22, 0x10, - 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x40, 0x08, 0x02, - 0x60, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x84, 0x07, - 0x2A, 0x00, 0x85, 0x07, 0xF4, 0x03, 0xA0, 0x06, - 0xA2, 0xD8, 0xD5, 0x10, 0xB0, 0x03, 0x20, 0x98, - 0xAA, 0xE3, 0x65, 0x06, 0x0F, 0x16, 0x20, 0x06, - 0x90, 0x09, 0x9A, 0x16, 0x60, 0x01, 0x8A, 0x09, - 0x00, 0x40, 0x39, 0x13, 0xE0, 0x04, 0x8A, 0x09, - 0xE0, 0x04, 0x8C, 0x09, 0xE0, 0x04, 0x8E, 0x09, - 0x60, 0x04, 0x62, 0xDA, 0x60, 0x04, 0xB0, 0xCE, - 0xB0, 0x03, 0x20, 0x98, 0x10, 0xE0, 0x65, 0x06, - 0xF9, 0x16, 0x44, 0x02, 0x00, 0x5E, 0x04, 0x16, - 0x20, 0x06, 0xC6, 0x06, 0x9A, 0x16, 0x0A, 0x10, - 0xB0, 0x03, 0x20, 0x98, 0x10, 0xE0, 0x65, 0x06, - 0xED, 0x16, 0x20, 0x06, 0xC8, 0x06, 0x02, 0x13, - 0x60, 0x04, 0x5A, 0xDB, 0x60, 0x01, 0x8E, 0x09, - 0x00, 0x01, 0x02, 0x16, 0xCE, 0x01, 0x03, 0x00, - 0x0E, 0x01, 0x03, 0x00, 0x03, 0x13, 0x83, 0x07, - 0x00, 0x82, 0x07, 0x10, 0x83, 0x07, 0x01, 0x00, - 0xE0, 0x04, 0x8E, 0x09, 0x20, 0xE8, 0x0C, 0xE0, - 0x82, 0x01, 0x60, 0x04, 0xCA, 0xCE, 0x60, 0x01, - 0x8A, 0x09, 0x00, 0x40, 0xC7, 0x16, 0x83, 0x07, - 0x0D, 0x00, 0xF2, 0x10, 0xB0, 0x03, 0x20, 0x98, - 0xAA, 0xE3, 0x65, 0x06, 0xC7, 0x16, 0x20, 0x88, - 0x98, 0x09, 0x20, 0xE0, 0xF0, 0x16, 0x22, 0xC8, - 0x0E, 0x00, 0xDC, 0x06, 0x22, 0xC8, 0x10, 0x00, - 0xDE, 0x06, 0x22, 0xC8, 0x12, 0x00, 0xE0, 0x06, - 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x08, 0x02, - 0x66, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xB2, 0x10, - 0xA0, 0x07, 0x9A, 0x09, 0x5A, 0x00, 0xA0, 0x07, - 0xA2, 0x09, 0x19, 0x00, 0xA0, 0x07, 0xA4, 0x09, - 0x05, 0x00, 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x20, - 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x04, 0x08, 0x02, - 0x78, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xB0, 0x03, - 0x20, 0x98, 0xAB, 0xE3, 0x65, 0x06, 0x9A, 0x16, - 0x08, 0x02, 0x72, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x20, 0xE8, 0x0C, 0xE0, 0x82, 0x01, 0xA0, 0x06, - 0xD0, 0xD5, 0x20, 0x06, 0x9A, 0x09, 0xBF, 0x13, - 0x84, 0x07, 0x2C, 0x00, 0x85, 0x07, 0xF4, 0x03, - 0xA0, 0x06, 0xA2, 0xD8, 0x60, 0x04, 0xC0, 0xDB, - 0x20, 0x48, 0x0C, 0xE0, 0x82, 0x01, 0x82, 0x10, - 0x0E, 0x01, 0x03, 0x00, 0x0A, 0x13, 0x08, 0x02, - 0x0C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xE0, 0xE3, - 0x14, 0xE0, 0x20, 0xC8, 0xAE, 0xE4, 0x86, 0x01, - 0x26, 0x10, 0x20, 0x48, 0x0C, 0xE0, 0x82, 0x01, - 0xE0, 0x2E, 0x01, 0x00, 0x60, 0xC1, 0x1E, 0x09, - 0x35, 0x0A, 0x05, 0xE8, 0x82, 0x01, 0x20, 0xC1, - 0x6A, 0x09, 0x04, 0x01, 0x06, 0x00, 0x06, 0x13, - 0x20, 0xD8, 0xD0, 0xE1, 0x2F, 0x09, 0x20, 0xD8, - 0xD0, 0xE1, 0x83, 0x01, 0x20, 0x21, 0x22, 0xE0, - 0x03, 0x16, 0x20, 0xE8, 0x22, 0xE0, 0x80, 0x01, - 0x20, 0x21, 0x04, 0xE0, 0x04, 0x16, 0xA0, 0xE3, - 0x14, 0xE0, 0x60, 0x04, 0x0A, 0xD3, 0x08, 0x02, - 0x00, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xE8, - 0x08, 0xE0, 0x82, 0x01, 0xE0, 0xC2, 0x8A, 0x09, - 0x02, 0x11, 0x60, 0x04, 0xB0, 0xCE, 0xA0, 0x01, - 0x8E, 0x09, 0x00, 0x04, 0x6B, 0x10, 0x20, 0xC8, - 0xAE, 0xE4, 0x86, 0x01, 0x08, 0x02, 0x00, 0x80, - 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xC2, 0x1E, 0x09, - 0x08, 0xA2, 0x08, 0x05, 0x28, 0xC8, 0x22, 0xE0, - 0xCA, 0x06, 0x20, 0xC8, 0x20, 0xE0, 0xC6, 0x06, - 0x20, 0xC8, 0x20, 0xE0, 0xC8, 0x06, 0x60, 0xE3, - 0x16, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0x44, 0xC1, - 0x44, 0x02, 0x00, 0x5E, 0xF8, 0x16, 0x60, 0x25, - 0xA8, 0xE4, 0x0F, 0x16, 0x20, 0x06, 0xC6, 0x06, - 0xF2, 0x16, 0x20, 0x06, 0xCA, 0x06, 0x03, 0x13, - 0xA0, 0x05, 0xCC, 0x06, 0xE6, 0x10, 0xB0, 0x03, - 0x20, 0xD8, 0x0C, 0xE0, 0x65, 0x06, 0x60, 0x04, - 0xD2, 0xCE, 0x20, 0x06, 0xC8, 0x06, 0xE3, 0x16, - 0x20, 0x88, 0x70, 0x09, 0xCC, 0x06, 0x03, 0x16, - 0x83, 0x07, 0x08, 0x00, 0x02, 0x10, 0x83, 0x07, - 0x0C, 0x00, 0x60, 0x04, 0x8A, 0xDC, 0x60, 0x04, - 0xD2, 0xCE, 0xA0, 0x23, 0x08, 0xE0, 0x03, 0x13, - 0x60, 0x23, 0x12, 0xE0, 0x06, 0x16, 0xB0, 0x03, - 0x20, 0xD8, 0xA9, 0xE3, 0x65, 0x06, 0x60, 0x04, - 0xD2, 0xCE, 0x08, 0x02, 0x00, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x60, 0x04, 0xB0, 0xCE, 0x08, 0x02, - 0x00, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xC8, - 0x1E, 0xE0, 0xC6, 0x06, 0x20, 0xC8, 0x1E, 0xE0, - 0xC8, 0x06, 0x60, 0xE3, 0x10, 0xE0, 0x60, 0x04, - 0xD2, 0xCE, 0xE0, 0x23, 0x14, 0xE0, 0x30, 0x13, - 0x44, 0xC1, 0x44, 0x02, 0x00, 0x1E, 0xF5, 0x16, - 0x60, 0x25, 0xA8, 0xE4, 0x1D, 0x16, 0x20, 0x06, - 0xC8, 0x06, 0xEF, 0x16, 0x60, 0x01, 0x8E, 0x09, - 0x00, 0x80, 0x13, 0x16, 0x60, 0x01, 0x8E, 0x09, - 0x00, 0x01, 0x0C, 0x16, 0xA0, 0x01, 0x8E, 0x09, - 0x00, 0x01, 0xA0, 0x01, 0x8E, 0x09, 0x80, 0x00, - 0xA0, 0x43, 0x04, 0xE0, 0x83, 0x07, 0x18, 0x68, - 0xA0, 0x06, 0x2A, 0xD8, 0x20, 0xC8, 0xAE, 0xE4, - 0x86, 0x01, 0xC2, 0x04, 0x60, 0x04, 0x2C, 0xE4, - 0x08, 0x02, 0x1E, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0x07, 0x10, 0x20, 0x06, 0xC6, 0x06, 0xCD, 0x16, - 0x83, 0x07, 0x09, 0x00, 0xA0, 0x06, 0x8A, 0xDC, - 0x60, 0x04, 0xB0, 0xCE, 0xCE, 0x04, 0xE0, 0x04, - 0x2A, 0x09, 0xE0, 0xD3, 0xAA, 0xE3, 0x8F, 0xC2, - 0x20, 0xC8, 0xB0, 0xE4, 0x86, 0x01, 0x20, 0x48, - 0x08, 0xE0, 0x82, 0x01, 0x86, 0x07, 0x05, 0x00, - 0x84, 0x07, 0x72, 0x06, 0x54, 0xC1, 0x01, 0x13, - 0xD4, 0x2C, 0x24, 0x02, 0x0A, 0x00, 0x06, 0x06, - 0xF9, 0x16, 0x08, 0x02, 0x2A, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x20, 0x2C, 0x1A, 0xE0, 0x60, 0x04, - 0x50, 0xCD, 0xA0, 0x06, 0x3E, 0xD7, 0xCD, 0x04, - 0xA0, 0x23, 0x1C, 0xE0, 0x0D, 0x13, 0x0E, 0x01, - 0x03, 0x00, 0x0A, 0x13, 0xA0, 0xE3, 0x1C, 0xE0, - 0xB0, 0x03, 0x20, 0xD8, 0x10, 0xE0, 0x65, 0x06, - 0xA0, 0xD2, 0x26, 0xE0, 0xCF, 0x04, 0x08, 0x10, - 0x20, 0x2D, 0x01, 0x00, 0xE0, 0xC0, 0x2A, 0x09, - 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0xD2, 0xAB, 0xE3, - 0x60, 0x04, 0xD2, 0xCE, 0xA0, 0x01, 0x80, 0x01, - 0x00, 0x01, 0xE0, 0x01, 0x80, 0x01, 0x00, 0xAC, - 0xA0, 0x01, 0x82, 0x01, 0x00, 0x03, 0xE0, 0x01, - 0x82, 0x01, 0x00, 0x08, 0x88, 0x07, 0xAE, 0x01, - 0x08, 0x06, 0xFE, 0x16, 0x60, 0x01, 0x8E, 0x09, - 0x00, 0x02, 0x03, 0x16, 0xA0, 0x01, 0x80, 0x01, - 0x00, 0x20, 0xC8, 0x04, 0x20, 0xD2, 0x80, 0x01, - 0x08, 0xC8, 0x9C, 0x09, 0x08, 0xD8, 0x2E, 0x09, - 0xA0, 0x07, 0x9E, 0x09, 0x00, 0x10, 0x5B, 0x04, - 0x20, 0xD8, 0xA6, 0x09, 0x2E, 0x09, 0xE0, 0x01, - 0x80, 0x01, 0x00, 0x04, 0xE0, 0x01, 0x82, 0x01, - 0x00, 0x08, 0xA0, 0x01, 0x82, 0x01, 0x00, 0x03, - 0x20, 0xC2, 0x30, 0x09, 0x03, 0x13, 0xE0, 0x01, - 0x82, 0x01, 0x00, 0x03, 0xA0, 0x01, 0x80, 0x01, - 0x00, 0xA1, 0x20, 0xF8, 0x2E, 0x09, 0x80, 0x01, - 0x88, 0x07, 0xAE, 0x01, 0x08, 0x06, 0xFE, 0x16, - 0xA0, 0x01, 0x80, 0x01, 0x00, 0x0C, 0xE0, 0x04, - 0x9E, 0x01, 0xE0, 0x04, 0x9C, 0x09, 0xE0, 0x04, - 0x9E, 0x09, 0x5B, 0x04, 0x20, 0x01, 0xA8, 0x09, - 0x00, 0x80, 0x11, 0x13, 0xE0, 0x93, 0x26, 0xE0, - 0x0E, 0x16, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, - 0x0A, 0x13, 0x08, 0x02, 0x84, 0x80, 0x00, 0x00, - 0x00, 0xE0, 0xDC, 0x0F, 0xA0, 0x06, 0xDA, 0xD4, - 0x20, 0x48, 0x08, 0xE0, 0x82, 0x01, 0x02, 0x10, - 0x60, 0x04, 0x70, 0xDA, 0x60, 0x04, 0xBA, 0xCE, - 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, 0x19, 0x13, - 0x83, 0x07, 0x80, 0x80, 0xE0, 0x23, 0x14, 0xE0, - 0x02, 0x13, 0x83, 0x07, 0x0A, 0x00, 0x60, 0x04, - 0xC6, 0xCE, 0x20, 0xC1, 0x06, 0x06, 0x0D, 0x13, - 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, 0x09, 0x13, - 0x83, 0x07, 0x0B, 0x00, 0xE0, 0x23, 0x14, 0xE0, - 0x02, 0x16, 0x83, 0x07, 0x01, 0x80, 0x60, 0x04, - 0xC6, 0xCE, 0x83, 0x07, 0x0A, 0x80, 0x60, 0x04, - 0xB4, 0xCE, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, - 0x06, 0x16, 0xA0, 0x06, 0xA8, 0xE5, 0x47, 0x10, - 0xD0, 0x03, 0x60, 0x04, 0xB0, 0xD3, 0xE0, 0x93, - 0x0E, 0xE0, 0x5E, 0x13, 0xE0, 0x93, 0x10, 0xE0, - 0x17, 0x13, 0xE0, 0x23, 0x14, 0xE0, 0x04, 0x13, - 0x83, 0x07, 0x07, 0x00, 0x60, 0x04, 0xC6, 0xCE, - 0x83, 0x07, 0x00, 0xA0, 0xA0, 0x06, 0x2A, 0xD8, - 0x83, 0x07, 0x00, 0x48, 0xA0, 0x06, 0x2A, 0xD8, - 0xA0, 0xD2, 0x10, 0xE0, 0x20, 0xC8, 0x1C, 0xE0, - 0xCA, 0x06, 0x20, 0xC8, 0x20, 0xE0, 0xCC, 0x06, - 0xA0, 0x06, 0x3E, 0xD7, 0x08, 0x02, 0x4E, 0x80, - 0xA0, 0x06, 0xDA, 0xD4, 0xA0, 0x23, 0x1C, 0xE0, - 0x20, 0x13, 0x20, 0x88, 0x6C, 0x09, 0x0E, 0x07, - 0x1C, 0x16, 0x20, 0x88, 0x6E, 0x09, 0x10, 0x07, - 0x18, 0x16, 0x20, 0x88, 0x70, 0x09, 0x12, 0x07, - 0x14, 0x16, 0x20, 0x88, 0x0A, 0x07, 0x22, 0xE0, - 0x10, 0x13, 0x20, 0x06, 0xCA, 0x06, 0x38, 0x16, - 0xA0, 0xE3, 0x20, 0xE0, 0x06, 0x10, 0xE0, 0x23, - 0x14, 0xE0, 0xCA, 0x16, 0xA0, 0xE3, 0x22, 0xE0, - 0xC2, 0x04, 0xA0, 0xD2, 0xAA, 0xE3, 0x60, 0x04, - 0xBA, 0xCE, 0x20, 0xC8, 0x1C, 0xE0, 0xCA, 0x06, - 0xA0, 0x88, 0xDC, 0x06, 0x0E, 0x00, 0x10, 0x16, - 0xA0, 0x88, 0xDE, 0x06, 0x10, 0x00, 0x0C, 0x16, - 0xA0, 0x88, 0xE0, 0x06, 0x12, 0x00, 0x08, 0x16, - 0x20, 0x06, 0xCC, 0x06, 0x19, 0x16, 0x20, 0xE8, - 0x0E, 0xE0, 0x82, 0x01, 0xA0, 0xE3, 0x1E, 0xE0, - 0x20, 0xC8, 0x20, 0xE0, 0xCC, 0x06, 0x10, 0x10, - 0xA0, 0x23, 0x10, 0xE0, 0x08, 0x16, 0x64, 0xC1, - 0x06, 0x00, 0x60, 0x21, 0x0C, 0xE0, 0x08, 0x13, - 0xA0, 0xD2, 0xA8, 0xE3, 0x05, 0x10, 0x20, 0x88, - 0x0A, 0x07, 0x08, 0x07, 0x96, 0x12, 0x00, 0x10, - 0x60, 0x04, 0xBA, 0xCE, 0x60, 0x01, 0x8E, 0x09, - 0x00, 0x80, 0x06, 0x16, 0x83, 0x07, 0x00, 0x82, - 0xA0, 0x06, 0x2A, 0xD8, 0x60, 0x04, 0xCA, 0xCE, - 0xE0, 0x93, 0x0E, 0xE0, 0x50, 0x13, 0xE0, 0x93, - 0xA9, 0xE3, 0x4D, 0x13, 0xE0, 0x93, 0xA8, 0xE3, - 0x1C, 0x13, 0xA0, 0x06, 0xA4, 0xD7, 0xA0, 0x23, - 0x10, 0xE0, 0x45, 0x13, 0xA0, 0x23, 0x08, 0xE0, - 0x06, 0x16, 0x60, 0xE3, 0x1E, 0xE0, 0x20, 0xC8, - 0x22, 0xE0, 0x06, 0x07, 0x34, 0x10, 0xE0, 0x23, - 0x14, 0xE0, 0x31, 0x16, 0x60, 0xC1, 0x6A, 0x09, - 0x60, 0x21, 0x12, 0xE0, 0x2C, 0x16, 0xA0, 0x06, - 0x0E, 0xE2, 0x31, 0x10, 0xA0, 0xD2, 0xA8, 0xE3, - 0x2E, 0x10, 0xA0, 0xE3, 0x12, 0xE0, 0xA0, 0x06, - 0x0E, 0xE2, 0x64, 0xC1, 0x06, 0x00, 0x60, 0x21, - 0x0C, 0xE0, 0x25, 0x13, 0x20, 0x88, 0x0E, 0x07, - 0xDC, 0x06, 0x14, 0x16, 0x20, 0x88, 0x10, 0x07, - 0xDE, 0x06, 0x10, 0x16, 0x20, 0x88, 0x12, 0x07, - 0xE0, 0x06, 0x0C, 0x16, 0x20, 0x98, 0xCE, 0x06, - 0xCF, 0x06, 0x15, 0x13, 0x20, 0x06, 0xCE, 0x06, - 0x12, 0x16, 0x60, 0xE3, 0x1A, 0xE0, 0xA0, 0xD2, - 0x0C, 0xE0, 0x0D, 0x10, 0x60, 0xE3, 0x1E, 0xE0, - 0x20, 0xC8, 0x32, 0xE0, 0x06, 0x07, 0xA0, 0x06, - 0x3E, 0xD7, 0x08, 0x02, 0x48, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0xA0, 0xD2, 0xA9, 0xE3, 0x60, 0x04, - 0xBA, 0xCE, 0x22, 0x88, 0x0E, 0x00, 0x6C, 0x09, - 0xC9, 0x1A, 0x0B, 0x1B, 0x22, 0x88, 0x10, 0x00, - 0x6E, 0x09, 0xC4, 0x1A, 0x06, 0x1B, 0x22, 0x88, - 0x12, 0x00, 0x70, 0x09, 0xBF, 0x1A, 0x01, 0x1B, - 0x5B, 0x04, 0x60, 0xC1, 0x6C, 0x01, 0x85, 0x02, - 0x43, 0x00, 0xE1, 0x13, 0xE0, 0x93, 0xA8, 0xE3, - 0xDE, 0x16, 0xA0, 0xC8, 0x00, 0xEE, 0x02, 0x00, - 0x84, 0x07, 0x0E, 0x00, 0x42, 0xC1, 0xA0, 0xC0, - 0x6C, 0x01, 0x02, 0xC0, 0x25, 0x02, 0x48, 0x00, - 0x81, 0x07, 0x60, 0xE2, 0x83, 0x07, 0x14, 0xAE, - 0x60, 0x04, 0x9E, 0xE5, 0x02, 0x02, 0x00, 0xFC, - 0xCA, 0x10, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, - 0x06, 0x16, 0x83, 0x07, 0x00, 0x82, 0xA0, 0x06, - 0x2A, 0xD8, 0x60, 0x04, 0xCA, 0xCE, 0x20, 0x98, - 0x0E, 0xE0, 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, - 0xA8, 0xE3, 0x65, 0x06, 0xE0, 0x93, 0xA9, 0xE3, - 0x0D, 0x13, 0xA0, 0x23, 0x08, 0xE0, 0x19, 0x16, - 0xA0, 0x23, 0x10, 0xE0, 0x16, 0x13, 0x60, 0xE3, - 0x1E, 0xE0, 0x20, 0xC8, 0x20, 0xE0, 0x06, 0x07, - 0xA0, 0x06, 0x3E, 0xD7, 0xA0, 0x43, 0x18, 0xE0, - 0xE0, 0x2E, 0x01, 0x00, 0xA0, 0xD2, 0x26, 0xE0, - 0x83, 0x07, 0x10, 0x00, 0xA0, 0x06, 0x2A, 0xD8, - 0xE0, 0x23, 0x14, 0xE0, 0x02, 0x16, 0xA0, 0x06, - 0x18, 0xD7, 0xA0, 0x43, 0x2C, 0xE0, 0x20, 0xC8, - 0x20, 0xE0, 0x24, 0x09, 0x60, 0x04, 0xBA, 0xCE, - 0xA0, 0x06, 0xA8, 0xE5, 0x01, 0x10, 0x03, 0x10, - 0x20, 0x07, 0xA0, 0x09, 0x03, 0x10, 0xA0, 0x07, - 0xA2, 0x09, 0x19, 0x00, 0x60, 0x04, 0xBA, 0xCE, - 0xA0, 0x43, 0x0E, 0xE0, 0xA0, 0xC1, 0x24, 0x09, - 0x02, 0x13, 0x20, 0x06, 0x24, 0x09, 0xE0, 0x23, - 0x14, 0xE0, 0x03, 0x13, 0xA0, 0x23, 0x08, 0xE0, - 0x29, 0x16, 0x20, 0xC2, 0x8A, 0x09, 0xE4, 0x11, - 0x08, 0x02, 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, - 0xA0, 0x23, 0x08, 0xE0, 0x1F, 0x16, 0xA0, 0x23, - 0x10, 0xE0, 0x0A, 0x16, 0x22, 0xC1, 0x02, 0x00, - 0x20, 0x25, 0xA8, 0xE4, 0x23, 0x16, 0x83, 0x07, - 0x20, 0x80, 0xA0, 0x06, 0x2A, 0xD8, 0x12, 0x10, - 0xA0, 0x06, 0x3E, 0xD7, 0xE0, 0x23, 0x14, 0xE0, - 0x02, 0x16, 0xA0, 0x06, 0x18, 0xD7, 0x60, 0xE3, - 0x1E, 0xE0, 0x20, 0xC8, 0x20, 0xE0, 0x06, 0x07, - 0xA0, 0x23, 0x08, 0xE0, 0x03, 0x16, 0xA0, 0x23, - 0x06, 0xE0, 0x51, 0x13, 0x20, 0x98, 0x0E, 0xE0, - 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, 0xA8, 0xE3, - 0x65, 0x06, 0x22, 0xC1, 0x02, 0x00, 0x20, 0x25, - 0xA8, 0xE4, 0x0E, 0x13, 0x83, 0x07, 0x20, 0x00, - 0xA0, 0x06, 0x2A, 0xD8, 0x22, 0xC8, 0x0E, 0x00, - 0xE6, 0x06, 0x22, 0xC8, 0x10, 0x00, 0xE8, 0x06, - 0x22, 0xC8, 0x12, 0x00, 0xEA, 0x06, 0x37, 0x10, - 0x22, 0x88, 0x0E, 0x00, 0xDC, 0x06, 0x08, 0x16, - 0x22, 0x88, 0x10, 0x00, 0xDE, 0x06, 0x04, 0x16, - 0x22, 0x88, 0x12, 0x00, 0xE0, 0x06, 0x0B, 0x13, - 0x22, 0xC8, 0x0E, 0x00, 0xDC, 0x06, 0x22, 0xC8, - 0x10, 0x00, 0xDE, 0x06, 0x22, 0xC8, 0x12, 0x00, - 0xE0, 0x06, 0x60, 0xE3, 0x14, 0xE0, 0xA0, 0x23, - 0x0E, 0xE0, 0x08, 0x16, 0xA0, 0xC1, 0x24, 0x09, - 0x1A, 0x16, 0x86, 0x07, 0x00, 0x10, 0x06, 0xE8, - 0xD2, 0x06, 0x15, 0x10, 0xA0, 0xE3, 0x0E, 0xE0, - 0xA0, 0x23, 0x08, 0xE0, 0x09, 0x16, 0xA0, 0xE3, - 0x06, 0xE0, 0xE0, 0x04, 0xE6, 0x06, 0xE0, 0x04, - 0xE8, 0x06, 0xE0, 0x04, 0xEA, 0x06, 0x07, 0x10, - 0x08, 0x02, 0x36, 0x80, 0xA0, 0x07, 0xD6, 0x06, - 0x36, 0xD3, 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, - 0xBA, 0xCE, 0x20, 0x98, 0x65, 0x06, 0x10, 0xE0, - 0x03, 0x16, 0x20, 0xD8, 0x0E, 0xE0, 0x65, 0x06, - 0x60, 0x04, 0xBA, 0xCE, 0xE0, 0x23, 0x14, 0xE0, - 0x02, 0x13, 0x60, 0x04, 0xBA, 0xCE, 0x2E, 0x10, - 0xB0, 0x03, 0x20, 0x98, 0xA9, 0xE3, 0x6F, 0x06, - 0x19, 0x16, 0x24, 0xC2, 0x08, 0x00, 0x16, 0x11, - 0xE0, 0xE3, 0x14, 0xE0, 0x83, 0x07, 0x00, 0x00, - 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0x23, 0x14, 0xE0, - 0x04, 0x13, 0x08, 0x02, 0x06, 0x80, 0xA0, 0x06, - 0xDA, 0xD4, 0x08, 0x02, 0x1E, 0x00, 0xA0, 0x06, - 0xDA, 0xD4, 0xA0, 0x23, 0x08, 0xE0, 0x02, 0x13, - 0xA0, 0x06, 0x18, 0xD7, 0x82, 0xC0, 0x02, 0x16, - 0x60, 0x04, 0xD2, 0xCE, 0x20, 0xE8, 0x1C, 0xEE, - 0xF0, 0x06, 0x20, 0x99, 0x0E, 0xE0, 0x16, 0x00, - 0x05, 0x16, 0xE0, 0x04, 0xEC, 0x06, 0x20, 0x48, - 0x14, 0xE0, 0xF0, 0x06, 0x83, 0x07, 0x01, 0x00, - 0x60, 0x04, 0xB4, 0xCE, 0x64, 0xC2, 0x14, 0x00, - 0x24, 0x02, 0x18, 0x00, 0xC4, 0xC1, 0xC2, 0x61, - 0x27, 0x02, 0xFC, 0xFF, 0x74, 0xC1, 0x85, 0xC1, - 0x45, 0x71, 0x85, 0x02, 0x27, 0x00, 0x46, 0x16, - 0x54, 0xC1, 0x45, 0x02, 0xCF, 0xFF, 0x42, 0x16, - 0xC8, 0x04, 0x64, 0xC1, 0x08, 0x00, 0x06, 0x15, - 0x05, 0x13, 0x24, 0xC2, 0x0E, 0x00, 0x48, 0x02, - 0x00, 0x1F, 0xC8, 0x06, 0x28, 0x02, 0x11, 0x00, - 0x04, 0xA2, 0x18, 0x98, 0x21, 0xEE, 0x32, 0x16, - 0x42, 0xC1, 0x25, 0x02, 0x04, 0x00, 0x47, 0x65, - 0x35, 0xC2, 0x74, 0xCD, 0x48, 0x06, 0xFD, 0x15, - 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC1, 0x04, 0xC8, - 0x6C, 0x01, 0xA0, 0xC1, 0x00, 0xFC, 0x05, 0x13, - 0x20, 0xC8, 0x80, 0xEB, 0x02, 0xFC, 0x06, 0xC1, - 0xF6, 0x10, 0x20, 0xC8, 0x00, 0xEE, 0x02, 0xFC, - 0x02, 0xC8, 0x6C, 0x01, 0x81, 0x07, 0x08, 0xE5, - 0x04, 0xC0, 0x83, 0x07, 0x10, 0x02, 0x84, 0x07, - 0x0E, 0x00, 0x3B, 0x10, 0x84, 0x07, 0x0C, 0x00, - 0xE2, 0xC0, 0x08, 0x00, 0x05, 0x02, 0x00, 0xFC, - 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC0, 0x95, 0xC1, - 0x30, 0x13, 0xD5, 0x04, 0x16, 0x2E, 0x02, 0xC8, - 0x6C, 0x01, 0x2B, 0x10, 0xA0, 0xC8, 0x22, 0xEE, - 0x0E, 0x00, 0xA0, 0xC8, 0x24, 0xEE, 0x10, 0x00, - 0xA0, 0xC8, 0x26, 0xEE, 0x12, 0x00, 0x83, 0x07, - 0x06, 0x80, 0x60, 0x04, 0xB4, 0xCE, 0x60, 0x04, - 0xD2, 0xCE, 0x84, 0x07, 0x10, 0x00, 0x85, 0x07, - 0x34, 0x00, 0x09, 0x10, 0x84, 0x07, 0x12, 0x00, - 0x85, 0x07, 0x32, 0x00, 0x04, 0x10, 0x84, 0x07, - 0x14, 0x00, 0x85, 0x07, 0x38, 0x00, 0xA0, 0x06, - 0xC2, 0xD5, 0x85, 0xC8, 0x04, 0x00, 0xA0, 0x06, - 0x10, 0xD6, 0xA0, 0xC8, 0x00, 0xEE, 0x02, 0x00, - 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC0, 0x48, 0x06, - 0x48, 0xC1, 0xA0, 0x06, 0xA2, 0xD8, 0x07, 0x02, - 0xA2, 0x06, 0x60, 0xC5, 0x02, 0xFC, 0x25, 0x02, - 0xF4, 0xFF, 0x05, 0xC8, 0x02, 0xFC, 0x20, 0xC2, - 0x6C, 0x01, 0xA0, 0x06, 0xFC, 0xB4, 0x60, 0x04, - 0xB0, 0xCE, 0xA0, 0x06, 0xA2, 0xD8, 0x07, 0x02, - 0xB4, 0x06, 0xEF, 0x10, 0x22, 0x88, 0x12, 0x00, - 0x70, 0x09, 0x08, 0x16, 0x22, 0x88, 0x10, 0x00, - 0x6E, 0x09, 0x04, 0x16, 0x22, 0x88, 0x0E, 0x00, - 0x6C, 0x09, 0x0E, 0x13, 0x22, 0x88, 0x12, 0x00, - 0xE0, 0x06, 0x08, 0x16, 0x22, 0x88, 0x10, 0x00, - 0xDE, 0x06, 0x04, 0x16, 0x22, 0x88, 0x0E, 0x00, - 0xDC, 0x06, 0x01, 0x13, 0xCB, 0x05, 0xCB, 0x05, - 0x5B, 0x04, 0x0B, 0xC3, 0x00, 0x03, 0x02, 0x00, - 0x82, 0x07, 0xC0, 0x00, 0x20, 0xC8, 0x0C, 0x00, - 0xC0, 0x00, 0x20, 0xC8, 0x0E, 0x00, 0xC2, 0x00, - 0x20, 0xC8, 0x10, 0x00, 0xC4, 0x00, 0x20, 0xC8, - 0x12, 0x00, 0xC6, 0x00, 0x20, 0xC8, 0x14, 0x00, - 0xC8, 0x00, 0x20, 0xC8, 0x16, 0x00, 0xCA, 0x00, - 0x20, 0xC8, 0x04, 0x00, 0xCC, 0x00, 0x20, 0xC8, - 0x06, 0x00, 0xCE, 0x00, 0x02, 0xC8, 0x0C, 0x00, - 0xA0, 0x07, 0x0E, 0x00, 0x7E, 0xE6, 0x02, 0xC8, - 0x10, 0x00, 0xA0, 0x07, 0x12, 0x00, 0x88, 0xE6, - 0x02, 0xC8, 0x14, 0x00, 0xA0, 0x07, 0x16, 0x00, - 0xB8, 0xE6, 0x02, 0xC8, 0x04, 0x00, 0xA0, 0x07, - 0x06, 0x00, 0xCE, 0xE6, 0x60, 0x01, 0x1C, 0x01, - 0x04, 0x00, 0x09, 0x16, 0xE0, 0x01, 0x40, 0x01, - 0x00, 0x08, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, - 0xE0, 0x01, 0x40, 0x01, 0x00, 0x04, 0xA0, 0x06, - 0x8E, 0xE9, 0x05, 0x02, 0x00, 0x80, 0x05, 0xD8, - 0x80, 0x04, 0xC7, 0x04, 0x00, 0x03, 0x0F, 0x00, - 0x88, 0x07, 0x00, 0x10, 0x09, 0x02, 0x00, 0x20, - 0x8A, 0x07, 0xE6, 0xE6, 0x03, 0x02, 0x3E, 0xE6, - 0x5A, 0x04, 0x00, 0x03, 0x00, 0x00, 0x20, 0xD2, - 0x87, 0x01, 0x06, 0x10, 0x00, 0x03, 0x00, 0x00, - 0x20, 0xC2, 0x8A, 0x01, 0x08, 0x02, 0x00, 0x1A, - 0x60, 0xC2, 0xAE, 0x00, 0x48, 0xDA, 0x80, 0x04, - 0x89, 0x05, 0x89, 0x02, 0x06, 0x00, 0x07, 0x15, - 0x88, 0x07, 0x00, 0x80, 0x48, 0xDA, 0x80, 0x04, - 0x09, 0xC8, 0xAE, 0x00, 0x80, 0x03, 0xE0, 0x02, - 0xA0, 0x00, 0x5C, 0x04, 0x00, 0x03, 0x00, 0x00, - 0x60, 0x01, 0x9C, 0x01, 0x20, 0x00, 0xE2, 0x13, - 0x20, 0xC2, 0x8C, 0x01, 0x08, 0x02, 0x00, 0x1C, - 0xE3, 0x10, 0x00, 0x03, 0x00, 0x00, 0x60, 0x01, - 0x40, 0x01, 0x00, 0x40, 0xEC, 0x16, 0xA0, 0x01, - 0x40, 0x01, 0x00, 0x40, 0x08, 0x02, 0x00, 0x02, - 0xD7, 0x10, 0xB3, 0xC0, 0x92, 0x06, 0xFD, 0x10, - 0xB3, 0xC0, 0x48, 0xC0, 0x72, 0xCC, 0x72, 0xCC, - 0x32, 0xC1, 0x44, 0xCC, 0x72, 0xDC, 0x04, 0x06, - 0xFD, 0x16, 0x5B, 0x04, 0x48, 0xC0, 0x02, 0x02, - 0xD0, 0xE9, 0x84, 0x07, 0x06, 0x00, 0xF6, 0x10, - 0x02, 0x02, 0x1E, 0xE6, 0x49, 0xC0, 0x84, 0x07, - 0x06, 0x00, 0xF0, 0x10, 0xB3, 0xC0, 0x32, 0xC1, - 0x01, 0x02, 0x01, 0x00, 0x44, 0xD0, 0xC1, 0x06, - 0x44, 0x02, 0xFF, 0x00, 0xE7, 0x10, 0x33, 0xC1, - 0x73, 0xC0, 0x44, 0xD1, 0x44, 0x02, 0xFF, 0x00, - 0x45, 0xDC, 0x04, 0x06, 0xFD, 0x16, 0x5A, 0x04, - 0xA0, 0x06, 0x0E, 0xE9, 0x33, 0xC8, 0x9E, 0x01, - 0x5A, 0x04, 0xA0, 0x06, 0x0C, 0xE7, 0x89, 0xC1, - 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, - 0x8A, 0x01, 0x88, 0xC1, 0xA6, 0x09, 0x66, 0x02, - 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, 0xC2, 0x04, - 0xC7, 0xC1, 0x03, 0x16, 0x02, 0x06, 0xFC, 0x16, - 0x4D, 0x10, 0x5A, 0x04, 0xA0, 0x06, 0x58, 0xE8, - 0x89, 0xC1, 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, - 0x06, 0xC8, 0x8A, 0x01, 0x88, 0xC1, 0xA6, 0x09, - 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, - 0x33, 0xC8, 0x9E, 0x01, 0xE8, 0x10, 0x33, 0x8A, - 0x02, 0x00, 0x38, 0x16, 0x73, 0x8A, 0x02, 0x00, - 0x35, 0x16, 0x5A, 0x04, 0x20, 0x8A, 0xCA, 0xE9, - 0x02, 0x00, 0x30, 0x16, 0x60, 0x8A, 0xCE, 0xE9, - 0x02, 0x00, 0x2C, 0x16, 0x82, 0x07, 0x74, 0xEA, - 0x01, 0x10, 0xB3, 0xC0, 0x04, 0x02, 0x80, 0x04, - 0x52, 0xD1, 0x03, 0x13, 0x32, 0x9D, 0x22, 0x16, - 0xFB, 0x10, 0x85, 0x07, 0x00, 0x80, 0x05, 0xD8, - 0x80, 0x04, 0xC7, 0x04, 0x5A, 0x04, 0x20, 0xC8, - 0xC0, 0x00, 0x0C, 0x00, 0x20, 0xC8, 0xC2, 0x00, - 0x0E, 0x00, 0x20, 0xC8, 0xC4, 0x00, 0x10, 0x00, - 0x20, 0xC8, 0xC6, 0x00, 0x12, 0x00, 0x20, 0xC8, - 0xC8, 0x00, 0x14, 0x00, 0x20, 0xC8, 0xCA, 0x00, - 0x16, 0x00, 0x20, 0xC8, 0xCC, 0x00, 0x04, 0x00, - 0x20, 0xC8, 0xCE, 0x00, 0x06, 0x00, 0x00, 0x03, - 0x0F, 0x00, 0xCC, 0x05, 0x5C, 0x04, 0xE0, 0x04, - 0x82, 0x01, 0x02, 0x02, 0x18, 0xE6, 0x32, 0xC8, - 0x82, 0x01, 0x32, 0xC8, 0x80, 0x01, 0xA0, 0x06, - 0x24, 0xE8, 0x12, 0xC8, 0x82, 0x01, 0xCA, 0xC2, - 0x84, 0x07, 0xD0, 0x07, 0xE0, 0x04, 0x84, 0x01, - 0x04, 0x06, 0xFC, 0x16, 0x20, 0xC1, 0x84, 0x01, - 0xE9, 0x16, 0x04, 0x02, 0x32, 0x00, 0x85, 0x07, - 0x00, 0x80, 0x05, 0xD8, 0x80, 0x04, 0xC7, 0x04, - 0x60, 0xC1, 0x86, 0x01, 0x04, 0x06, 0xFC, 0x16, - 0x20, 0xC1, 0x84, 0x01, 0x5B, 0x04, 0xB3, 0xC0, - 0xB3, 0xC4, 0x5B, 0x04, 0x48, 0xC0, 0xB3, 0xC0, - 0x73, 0xA0, 0x42, 0xC4, 0x5B, 0x04, 0x33, 0x88, - 0x84, 0x01, 0xE6, 0x16, 0x5A, 0x04, 0x89, 0xC1, - 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, - 0x8A, 0x01, 0x5B, 0x04, 0xC5, 0x04, 0xA0, 0x07, - 0x9C, 0x01, 0x40, 0x00, 0x60, 0x01, 0x9C, 0x01, - 0x40, 0x00, 0x03, 0x13, 0x05, 0x06, 0xF7, 0x16, - 0x5C, 0x04, 0x5B, 0x04, 0xA0, 0x06, 0xAC, 0xE8, - 0x60, 0xC0, 0x40, 0x01, 0x05, 0xC8, 0x40, 0x01, - 0x02, 0xC5, 0x01, 0xC8, 0x40, 0x01, 0x5A, 0x04, - 0xA0, 0x06, 0xAC, 0xE8, 0x08, 0xA1, 0xF4, 0x10, - 0xB3, 0xC0, 0x33, 0xC1, 0x60, 0xC1, 0x40, 0x01, - 0x85, 0x01, 0x00, 0x04, 0xC5, 0x01, 0x00, 0x10, - 0x5B, 0x04, 0x08, 0xC1, 0x09, 0xC2, 0x44, 0xC2, - 0x5B, 0x04, 0x05, 0x02, 0xC8, 0x00, 0x05, 0x06, - 0xFE, 0x16, 0x5B, 0x04, 0x33, 0xC1, 0x03, 0xC0, - 0xC4, 0xC0, 0x5B, 0x04, 0xC0, 0xC0, 0x5B, 0x04, - 0xE0, 0x94, 0x9E, 0x01, 0xC2, 0x16, 0xC3, 0x05, - 0x5B, 0x04, 0x73, 0xC0, 0xA0, 0x06, 0x26, 0xE9, - 0x2D, 0x02, 0x08, 0x00, 0x85, 0x07, 0x08, 0x00, - 0x71, 0x9F, 0xB7, 0x16, 0x05, 0x06, 0xFC, 0x16, - 0x5A, 0x04, 0x02, 0x02, 0x24, 0xE6, 0x60, 0x04, - 0x10, 0xE7, 0xE9, 0x8C, 0x04, 0x00, 0xAD, 0x16, - 0x5B, 0x04, 0x20, 0xC1, 0x80, 0x01, 0x85, 0x07, - 0xD0, 0x07, 0xE0, 0x01, 0x80, 0x01, 0x00, 0x04, - 0x45, 0x06, 0xFE, 0x16, 0x04, 0xC8, 0x80, 0x01, - 0x5B, 0x04, 0x33, 0xC1, 0x48, 0xC3, 0x04, 0xC1, - 0x04, 0x13, 0x2D, 0x02, 0x00, 0x04, 0x04, 0x06, - 0xFC, 0x16, 0x5B, 0x04, 0x8D, 0xC3, 0xA0, 0x06, - 0x26, 0xE9, 0x8D, 0xC1, 0xA6, 0x09, 0x66, 0x02, - 0x40, 0x00, 0x86, 0xC7, 0x5A, 0x04, 0x8D, 0xC1, - 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, - 0x8A, 0x01, 0x5B, 0x04, 0x8D, 0xC1, 0xA6, 0x09, - 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, - 0x5B, 0x04, 0x4D, 0xC0, 0x04, 0x02, 0x28, 0x00, - 0x85, 0x07, 0x00, 0x55, 0x60, 0x04, 0x34, 0xE7, - 0x4D, 0xC0, 0xB3, 0xC0, 0x32, 0xC1, 0x60, 0x04, - 0xF8, 0xE6, 0x33, 0xC1, 0x60, 0x01, 0x1C, 0x01, - 0x04, 0x00, 0x01, 0x16, 0x5B, 0x04, 0xC4, 0xC0, - 0x5B, 0x04, 0x89, 0x07, 0x66, 0xE5, 0x39, 0xC2, - 0x07, 0x13, 0x39, 0xC6, 0x39, 0x86, 0x25, 0x16, - 0x39, 0xC6, 0x39, 0x86, 0x22, 0x16, 0xF7, 0x10, - 0x02, 0x02, 0xAC, 0xE9, 0xC4, 0x04, 0xC5, 0x04, - 0x39, 0xC2, 0x02, 0x13, 0x60, 0x04, 0xE8, 0xE9, - 0x02, 0x02, 0xBA, 0xE9, 0xC4, 0x04, 0x39, 0xC2, - 0x03, 0x13, 0x79, 0xC1, 0x60, 0x04, 0xE8, 0xE9, - 0x02, 0x02, 0xCA, 0xE9, 0xC5, 0x04, 0x39, 0xC2, - 0x03, 0x13, 0x39, 0xC1, 0x60, 0x04, 0xE8, 0xE9, - 0x79, 0xC0, 0xB9, 0xC0, 0x81, 0x60, 0xC2, 0x05, - 0x12, 0x09, 0xF1, 0x04, 0x02, 0x06, 0xFD, 0x16, - 0x5B, 0x04, 0x5C, 0x04, 0x01, 0x02, 0xAA, 0xAA, - 0x01, 0xC6, 0x44, 0xE0, 0x45, 0x40, 0x58, 0x80, - 0xF8, 0x16, 0x01, 0x02, 0x14, 0x00, 0x01, 0x06, - 0xFE, 0x16, 0x01, 0x02, 0x55, 0x55, 0x01, 0xC6, - 0x44, 0xE0, 0x45, 0x40, 0x58, 0x80, 0xED, 0x16, - 0x52, 0x04, 0xE0, 0x02, 0xA0, 0x00, 0x88, 0x07, - 0xC0, 0x00, 0x09, 0x02, 0x62, 0xEA, 0x84, 0x07, - 0x2A, 0xE6, 0x05, 0x02, 0x01, 0x00, 0x8B, 0xC2, - 0xCC, 0x04, 0xA0, 0x06, 0x6C, 0xEA, 0x60, 0x2C, - 0x01, 0x00, 0x99, 0x06, 0xA0, 0x2C, 0x02, 0x00, - 0x99, 0x06, 0x20, 0x2D, 0x04, 0x00, 0x99, 0x06, - 0x20, 0x2E, 0x08, 0x00, 0x99, 0x06, 0xA0, 0x2F, - 0x10, 0x00, 0x8C, 0x05, 0x09, 0x16, 0x80, 0xCC, - 0x81, 0xC4, 0x83, 0x07, 0xB0, 0xEA, 0x88, 0xC0, - 0x02, 0x04, 0x8C, 0x05, 0x01, 0x16, 0x33, 0x10, - 0xE0, 0x02, 0xA0, 0x00, 0x5A, 0x04, 0x8C, 0x05, - 0xFB, 0x16, 0x80, 0xCC, 0x81, 0xC4, 0x15, 0x0A, - 0xB4, 0xC0, 0x12, 0xC0, 0x88, 0xCC, 0x52, 0xC0, - 0xB4, 0xC4, 0x42, 0x06, 0x5B, 0x04, 0x2D, 0x07, - 0x18, 0x00, 0x41, 0x8B, 0x0A, 0x00, 0xEC, 0x16, - 0xC1, 0x82, 0xEA, 0x16, 0xC2, 0x02, 0x42, 0x02, - 0x00, 0x02, 0xE6, 0x16, 0x80, 0x03, 0x81, 0x07, - 0x01, 0x00, 0xF1, 0x10, 0x01, 0x02, 0x02, 0x00, - 0xEE, 0x10, 0x01, 0x02, 0x04, 0x00, 0xEB, 0x10, - 0x01, 0x02, 0x08, 0x00, 0xE8, 0x10, 0x01, 0x02, - 0x10, 0x00, 0xE5, 0x10, 0xA1, 0x02, 0x41, 0x8B, - 0x10, 0x00, 0x02, 0x13, 0x60, 0x04, 0x5C, 0xEA, - 0x2D, 0x07, 0x18, 0x00, 0x80, 0x03, 0x09, 0x02, - 0x00, 0x08, 0x03, 0x02, 0x04, 0x00, 0xC7, 0x04, - 0xA0, 0x06, 0xDC, 0xEB, 0x60, 0x01, 0x1C, 0x01, - 0x04, 0x00, 0x1C, 0x16, 0xA0, 0x01, 0x40, 0x01, - 0x00, 0x08, 0xE0, 0x01, 0x40, 0x01, 0x00, 0x10, - 0x04, 0x02, 0x01, 0x00, 0x44, 0xCE, 0xC4, 0x06, - 0x44, 0xC6, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x10, - 0x49, 0x06, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, - 0xE0, 0x01, 0x40, 0x01, 0x00, 0x04, 0xE0, 0x01, - 0x40, 0x01, 0x00, 0x08, 0xA0, 0x06, 0x7A, 0xEC, - 0xA0, 0x06, 0x7A, 0xEC, 0xC7, 0x05, 0x04, 0x02, - 0xE4, 0xE4, 0xE0, 0x04, 0xD0, 0x03, 0x74, 0xC1, - 0xB4, 0xC1, 0x86, 0x05, 0x1C, 0x13, 0xE0, 0x02, - 0xC0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xC0, - 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC1, 0x40, 0xC1, - 0x80, 0xC1, 0xC0, 0xC1, 0x00, 0xC2, 0x40, 0xC2, - 0x80, 0xC2, 0xC0, 0xC2, 0x00, 0xC3, 0x40, 0xC3, - 0x80, 0xC3, 0xC0, 0xC3, 0xA0, 0x04, 0xAA, 0x00, - 0xD0, 0x03, 0xD0, 0x03, 0x3F, 0x10, 0x85, 0x05, - 0x85, 0x81, 0xE1, 0x13, 0xE4, 0x10, 0xC7, 0x05, - 0x05, 0x02, 0xFF, 0x7F, 0x45, 0xA1, 0xD0, 0x03, - 0xD0, 0x03, 0x34, 0x10, 0xC0, 0xCC, 0xC1, 0xC4, - 0x03, 0x02, 0x28, 0x00, 0xA0, 0x06, 0xDC, 0xEB, - 0xE0, 0x01, 0x42, 0x01, 0x00, 0x10, 0xC7, 0x05, - 0xD0, 0x03, 0xD0, 0x03, 0x27, 0x10, 0xC7, 0x05, - 0xA0, 0xC1, 0x4A, 0x01, 0xA0, 0x07, 0x4A, 0x01, - 0x00, 0x0E, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x02, - 0x20, 0x07, 0x44, 0x01, 0x60, 0xC1, 0x44, 0x01, - 0x85, 0x02, 0x00, 0xFF, 0x17, 0x16, 0xE0, 0x01, - 0x40, 0x01, 0x00, 0x22, 0x05, 0x02, 0xC0, 0x00, - 0x05, 0x06, 0xD0, 0x03, 0xFD, 0x16, 0x60, 0xC1, - 0x46, 0x01, 0x85, 0x02, 0x00, 0xFF, 0x0A, 0x13, - 0x05, 0x02, 0x93, 0x33, 0x05, 0x06, 0x00, 0x10, - 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, - 0xD0, 0x03, 0xF8, 0x16, 0x51, 0x10, 0x06, 0xC8, - 0x4A, 0x01, 0xC0, 0xCC, 0xC1, 0xC4, 0x4B, 0x10, - 0x13, 0xC0, 0xC8, 0xCC, 0x53, 0xC0, 0x02, 0x02, - 0xEC, 0xEB, 0xC2, 0xC4, 0x43, 0x06, 0x5B, 0x04, - 0x60, 0xC0, 0xAE, 0x00, 0xC4, 0x02, 0x44, 0x02, - 0x0F, 0x00, 0x44, 0x88, 0xCA, 0xE4, 0x3C, 0x16, - 0x81, 0x02, 0x08, 0x00, 0x27, 0x13, 0x21, 0xC1, - 0xDC, 0xE4, 0x14, 0xC1, 0x21, 0x21, 0xBA, 0xE4, - 0x33, 0x16, 0x21, 0xC1, 0xC2, 0xE4, 0x81, 0x02, - 0x00, 0x00, 0x0B, 0x13, 0x0D, 0x02, 0xA0, 0x00, - 0x84, 0x83, 0x09, 0x13, 0xC4, 0x05, 0x84, 0x83, - 0x06, 0x13, 0xC4, 0x05, 0x84, 0x83, 0x03, 0x13, - 0x23, 0x10, 0x0E, 0x81, 0x21, 0x16, 0x21, 0xC1, - 0xDC, 0xE4, 0x21, 0x45, 0xBA, 0xE4, 0xE0, 0x01, - 0x42, 0x01, 0x00, 0x10, 0xA0, 0x01, 0x42, 0x01, - 0x00, 0x10, 0xA1, 0xC3, 0xD4, 0xE4, 0x0F, 0x02, - 0x2F, 0x00, 0x80, 0x03, 0xA0, 0x01, 0x40, 0x01, - 0x00, 0x02, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x80, - 0x6D, 0xC0, 0x0A, 0x00, 0x09, 0x13, 0x81, 0x02, - 0x5C, 0x12, 0x06, 0x1B, 0x0E, 0x02, 0xD2, 0xEB, - 0x0F, 0x02, 0x0F, 0x00, 0x80, 0x03, 0xCA, 0x05, - 0xE0, 0x02, 0xA0, 0x00, 0x5A, 0x04, 0x59, 0xCE, - 0x20, 0x88, 0xE4, 0xE4, 0xE4, 0xE4, 0xF8, 0x10, - 0xC1, 0x04, 0x48, 0x62, 0x89, 0x05, 0xA0, 0xC0, - 0x6C, 0x01, 0x08, 0xC8, 0x6C, 0x01, 0x03, 0x02, - 0x00, 0xFC, 0x04, 0x02, 0x00, 0x02, 0x73, 0xA0, - 0x04, 0x06, 0xFD, 0x16, 0x88, 0x05, 0x09, 0x06, - 0xF4, 0x16, 0x02, 0xC8, 0x6C, 0x01, 0x81, 0x86, - 0x02, 0x16, 0xD0, 0x03, 0xCB, 0x05, 0x5B, 0x04, - 0x43, 0x28, 0x31, 0x29, 0x38, 0x39, 0x2D, 0x33, - 0x38, 0x38, 0x42, 0x20, 0x20, 0x59, 0x49, 0x54, - 0x4B, 0xC2, 0xA8, 0x02, 0x98, 0x00, 0x83, 0x07, - 0x02, 0x00, 0x28, 0x02, 0x08, 0x00, 0x23, 0xC6, - 0x36, 0xE5, 0x48, 0x06, 0xC4, 0xC0, 0x73, 0x0A, - 0x65, 0x17, 0xA0, 0x06, 0xAA, 0xED, 0xC8, 0xC1, - 0xC7, 0x05, 0x03, 0x02, 0xA5, 0x00, 0xB0, 0x03, - 0xF8, 0xCD, 0xF8, 0xCD, 0xA6, 0x02, 0x06, 0x62, - 0x88, 0x02, 0x0A, 0x00, 0x57, 0x16, 0x03, 0x29, - 0x55, 0x16, 0x05, 0x29, 0xC4, 0x80, 0x52, 0x16, - 0x15, 0x09, 0x50, 0x17, 0x15, 0x09, 0x4E, 0x18, - 0x85, 0x02, 0x29, 0x00, 0x4B, 0x16, 0xC6, 0x05, - 0x96, 0x00, 0x03, 0x07, 0xC4, 0x04, 0x45, 0x06, - 0x95, 0x00, 0x44, 0x05, 0x43, 0x16, 0x44, 0x81, - 0x41, 0x16, 0x00, 0x03, 0x05, 0x00, 0xC4, 0x02, - 0x00, 0x03, 0x0A, 0x00, 0x44, 0x02, 0x0F, 0x00, - 0x84, 0x02, 0x05, 0x00, 0x37, 0x16, 0xC4, 0x02, - 0x00, 0x03, 0x0F, 0x00, 0x44, 0x02, 0x0F, 0x00, - 0x84, 0x02, 0x0A, 0x00, 0x2F, 0x16, 0x04, 0x02, - 0xFE, 0xFF, 0x2C, 0x13, 0x2B, 0x15, 0x2A, 0x1A, - 0x84, 0x05, 0x28, 0x12, 0x27, 0x15, 0x26, 0x1A, - 0x25, 0x18, 0x84, 0x05, 0x23, 0x16, 0x22, 0x1B, - 0x21, 0x17, 0x84, 0x05, 0x1F, 0x13, 0x1E, 0x1A, - 0x1D, 0x11, 0x04, 0x06, 0x1B, 0x16, 0xA5, 0x02, - 0xC5, 0xC1, 0x25, 0x02, 0x06, 0x00, 0x03, 0x02, - 0xA5, 0xA5, 0x83, 0xC1, 0x95, 0x00, 0x03, 0x38, - 0x94, 0x00, 0x83, 0x02, 0x2E, 0x6B, 0x0E, 0x16, - 0x84, 0x02, 0x59, 0x1C, 0x0B, 0x16, 0x24, 0x02, - 0x69, 0x00, 0x95, 0x00, 0x03, 0x3C, 0x94, 0x00, - 0x83, 0x81, 0x04, 0x16, 0x84, 0x02, 0x69, 0x00, - 0x01, 0x16, 0xC9, 0x05, 0x59, 0x04, 0xC3, 0xD0, - 0xFD, 0x13, 0x01, 0x1C, 0xFB, 0x10, 0xE0, 0x90, - 0x3D, 0xE5, 0xF8, 0x16, 0xC3, 0x06, 0xC3, 0xD0, - 0xF5, 0x1C, 0xF4, 0x16, 0xE0, 0x90, 0x3A, 0xE5, - 0xF1, 0x16, 0x5B, 0x04, 0x0B, 0xC3, 0x09, 0x02, - 0x3E, 0xE5, 0xA0, 0x06, 0x92, 0xE9, 0xCC, 0x05, - 0x5C, 0x04, 0x88, 0x07, 0x00, 0xA0, 0x89, 0x07, - 0xFE, 0xFF, 0xA8, 0x09, 0xA9, 0x09, 0x8A, 0x07, - 0x02, 0xE0, 0xA0, 0x06, 0x84, 0xEC, 0x00, 0x00, - 0x88, 0x07, 0x00, 0x90, 0x89, 0x07, 0xFE, 0x9F, - 0xA8, 0x09, 0xA9, 0x09, 0x8A, 0x07, 0x78, 0xE0, - 0xA0, 0x06, 0x84, 0xEC, 0x00, 0x00, 0xA0, 0x06, - 0xC4, 0xEC, 0x00, 0x00, 0xE6, 0x10, 0xE5, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, - 0x00, 0x08, 0x11, 0xE3, 0x6C, 0xCC, 0x00, 0x80, - 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, - 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0xFF, - 0xFF, 0x00, 0xF0, 0xFF, 0x00, 0xF0, 0x0F, 0x00, - 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0x00, - 0xC3, 0x00, 0xE7, 0xE7, 0xF3, 0xE7, 0xF1, 0xF1, - 0x43, 0x28, 0x20, 0x29, 0x4F, 0x43, 0x59, 0x50, - 0x49, 0x52, 0x48, 0x47, 0x20, 0x54, 0x42, 0x49, - 0x20, 0x4D, 0x39, 0x31, 0x33, 0x38, 0x34, 0x2C, - 0x35, 0x2C, 0x36, 0x2C, 0x43, 0x28, 0x20, 0x29, - 0x4F, 0x43, 0x59, 0x50, 0x49, 0x52, 0x48, 0x47, - 0x20, 0x54, 0x49, 0x54, 0x31, 0x20, 0x38, 0x39, - 0x2D, 0x33, 0x39, 0x38, 0x39, 0x2C, 0x2D, 0x30, - 0x38, 0x39, 0x00, 0x00, 0x61, 0x9B, 0xC4, 0xEC, - 0x0E, 0xEA, 0xDE, 0xE5, 0xC8, 0xED, 0x00, 0x00, - 0xC4, 0x00, 0xB8, 0xAF, 0x4A, 0x06, 0x50, 0x06, - 0x4C, 0x06, 0xDC, 0xCC, 0x4E, 0x06, 0x0F, 0x00, - 0x32, 0x06, 0x01, 0x00, 0x50, 0x07, 0x58, 0x07, - 0x52, 0x07, 0x70, 0xB5, 0x54, 0x07, 0x0F, 0x00, - 0x38, 0x07, 0x01, 0x00, 0xBA, 0x00, 0xA0, 0x00, - 0xBC, 0x00, 0xD6, 0xED, 0xBE, 0x00, 0x0F, 0x00, - 0x5E, 0x07, 0x3A, 0x07, 0x62, 0x07, 0x40, 0x80, - 0x64, 0x07, 0x54, 0xBA, 0x66, 0x07, 0x36, 0xBA, - 0x68, 0x07, 0x40, 0xB8, 0x98, 0x07, 0x00, 0x80, - 0x78, 0x07, 0x00, 0x80, 0xE2, 0x08, 0x04, 0x00, - 0xE4, 0x08, 0x01, 0x00, 0xEC, 0x08, 0x08, 0x00, - 0xF6, 0x08, 0x0A, 0x00, 0xF8, 0x08, 0x06, 0x00, - 0x00, 0x09, 0x0C, 0x00, 0x02, 0x09, 0x04, 0x00, - 0xAE, 0x01, 0x00, 0x00, 0x1E, 0x09, 0x00, 0x00, - 0x66, 0x09, 0x00, 0x00, 0x0C, 0x06, 0x13, 0x00, - 0x0A, 0x06, 0x20, 0x00, 0x00, 0x00, 0xE0, 0x00, - 0x86, 0xA3, 0xE0, 0x00, 0xE6, 0xA2, 0xE0, 0x00, - 0x86, 0xA3, 0xE0, 0x00, 0x02, 0xA5, 0xE0, 0x00, - 0x5E, 0xA6, 0xE0, 0x00, 0x66, 0xA9, 0xE0, 0x00, - 0x12, 0xA4, 0xC0, 0x00, 0x22, 0xA4, 0xE0, 0x00, - 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xC0, 0x00, - 0x74, 0xA4, 0xE0, 0x00, 0x86, 0xA3, 0xE0, 0x00, - 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xE0, 0x00, - 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xC0, 0x00, - 0xDE, 0xAF, 0xC0, 0x00, 0x48, 0xB0, 0xC0, 0x00, - 0x84, 0xB0, 0xC0, 0x00, 0xF4, 0xB0, 0xC0, 0x00, - 0x76, 0xB1, 0xE0, 0x00, 0xE4, 0xB2, 0xE0, 0x00, - 0x8A, 0xB2, 0xE0, 0x00, 0xF4, 0xB3, 0xE0, 0x00, - 0x7C, 0xB3, 0xE0, 0x00, 0xC6, 0xAA, 0xC0, 0x00, - 0x36, 0xAB, 0xC0, 0x00, 0x90, 0xAB, 0xC0, 0x00, - 0xC2, 0xAB, 0xC0, 0x00, 0xEA, 0xAA, 0xC0, 0x00, - 0x80, 0xA3, 0xC0, 0x00, 0x80, 0xA3, 0x00, 0x3F, - 0x00, 0x7F, 0x00, 0x5E, 0x30, 0x00, 0x28, 0x00, - 0x43, 0x00, 0xB6, 0xA6, 0xB6, 0xA6, 0x1C, 0xA5, - 0x14, 0xA5, 0x46, 0xA5, 0x46, 0xA5, 0x62, 0xA5, - 0xB6, 0xA6, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x10, - 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x0E, 0x10, 0x0C, 0x0C, 0x0A, 0x0A, - 0x0A, 0x0A, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x98, 0x07, 0x7E, 0xCA, 0x58, 0x07, - 0xF8, 0xB8, 0x58, 0x07, 0xFE, 0xB7, 0x58, 0x07, - 0x68, 0xB9, 0x58, 0x07, 0xD0, 0xB8, 0x98, 0x07, - 0x5A, 0xC7, 0x98, 0x07, 0x52, 0xC7, 0x78, 0x07, - 0xC2, 0xC1, 0x58, 0x07, 0x30, 0xB9, 0x98, 0x07, - 0x38, 0xCA, 0x78, 0x07, 0x96, 0xC2, 0x58, 0x07, - 0x6A, 0xC7, 0x58, 0x07, 0xE0, 0xB8, 0x58, 0x07, - 0x1E, 0xB9, 0x58, 0x07, 0xE2, 0xB9, 0x98, 0x07, - 0xAE, 0xCB, 0x98, 0x07, 0x8E, 0xC7, 0x78, 0x07, - 0x56, 0xC2, 0xB8, 0x07, 0x14, 0xCC, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xA2, 0xBA, 0x16, 0xC1, - 0xCA, 0xC1, 0xD6, 0xC6, 0x8A, 0xBD, 0xC2, 0xBD, - 0xE0, 0xBD, 0x6A, 0xBE, 0x8E, 0xBE, 0xAA, 0xBE, - 0x22, 0xBF, 0x22, 0xBF, 0x56, 0xBE, 0xC8, 0xBF, - 0x10, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, - 0x00, 0x0C, 0x01, 0x0F, 0xFF, 0xFE, 0x00, 0x58, - 0x00, 0x0E, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x70, - 0x40, 0x80, 0x00, 0x5E, 0xA0, 0xC0, 0xDF, 0xFF, - 0x00, 0x18, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x50, - 0x00, 0x60, 0x00, 0x70, 0x00, 0x0C, 0x06, 0x00, - 0x00, 0x00, 0x84, 0xE3, 0xE6, 0x07, 0xF4, 0x07, - 0x08, 0x00, 0x00, 0x00, 0x8A, 0xE3, 0xEA, 0x07, - 0xF4, 0x07, 0x06, 0x00, 0x40, 0x00, 0x00, 0x0A, - 0xE6, 0x07, 0xEE, 0x07, 0x08, 0x00, 0x40, 0x00, - 0x06, 0x0A, 0xEA, 0x07, 0xEE, 0x07, 0x00, 0x00, - 0xE2, 0xC1, 0x8B, 0xD4, 0xFF, 0xFF, 0xD7, 0xD1, - 0xD9, 0xC5, 0xD4, 0xC3, 0x3B, 0x59, 0x34, 0x09, - 0xFC, 0x05, 0x6C, 0x09, 0xD8, 0x06, 0x06, 0x04, - 0xBA, 0xEA, 0x30, 0x09, 0x48, 0x04, 0x80, 0x08, - 0x06, 0x00, 0x0A, 0x06, 0x0E, 0x0C, 0xBA, 0xCE, - 0x2E, 0xE0, 0x56, 0xE0, 0x50, 0xE1, 0x66, 0xE2, - 0xEC, 0xE2, 0x4C, 0xE3, 0xFE, 0xE3, 0xBA, 0xCE, - 0x80, 0xE4, 0x10, 0xE4, 0x14, 0xE0, 0x1C, 0xE4, - 0x1C, 0xE4, 0x46, 0xE5, 0x50, 0xE5, 0x5A, 0xE5, - 0xBA, 0xCE, 0xA6, 0xDC, 0xBA, 0xCE, 0x44, 0xDA, - 0xE6, 0xDF, 0x70, 0xDA, 0xDE, 0xDE, 0xB0, 0xCE, - 0x16, 0xDB, 0x3A, 0xDD, 0xB8, 0xDD, 0x34, 0xDE, - 0x58, 0xDE, 0x16, 0xDB, 0xDA, 0xDC, 0x08, 0xCF, - 0xB0, 0xCE, 0xA8, 0xD9, 0x8A, 0xD9, 0x44, 0xD9, - 0xB0, 0xCE, 0xEA, 0xDE, 0xB0, 0xCE, 0x72, 0x06, - 0xF6, 0xD2, 0x08, 0x07, 0x72, 0x06, 0x54, 0xD2, - 0xF4, 0x01, 0x72, 0x06, 0x34, 0xD2, 0x08, 0x07, - 0x7C, 0x06, 0x5A, 0xDC, 0x04, 0x00, 0x7C, 0x06, - 0x78, 0xD2, 0x00, 0x00, 0x7C, 0x06, 0xCC, 0xDE, - 0xFA, 0x00, 0x86, 0x06, 0xAC, 0xD1, 0x05, 0x00, - 0x90, 0x06, 0x1C, 0xDF, 0x28, 0x00, 0x90, 0x06, - 0x50, 0xD3, 0x04, 0x01, 0x90, 0x06, 0x00, 0x00, - 0x02, 0x00, 0x90, 0x06, 0x80, 0xD2, 0xBC, 0x02, - 0x9A, 0x06, 0x06, 0xD3, 0xDC, 0x05, 0x9A, 0x06, - 0xAA, 0xD2, 0x64, 0x00, 0x9A, 0x06, 0x0A, 0xD3, - 0x14, 0x00, 0x9A, 0x06, 0xE2, 0xE0, 0x40, 0x06, - 0x9A, 0x06, 0x12, 0xD3, 0x64, 0x00, 0x7C, 0x06, - 0x16, 0xDC, 0x04, 0x00, 0x7C, 0x06, 0xE6, 0xDA, - 0x16, 0x00, 0x7C, 0x06, 0xFA, 0xDB, 0x05, 0x00, - 0x7C, 0x06, 0x00, 0xDD, 0x14, 0x00, 0x9A, 0x06, - 0x7C, 0xD3, 0x14, 0x00, 0x9A, 0x06, 0x38, 0xD4, - 0x02, 0x00, 0x7C, 0x06, 0x0C, 0xE0, 0x19, 0x00, - 0x00, 0x00, 0x0A, 0x07, 0x0E, 0x07, 0x04, 0x07, - 0xD8, 0x06, 0x00, 0x07, 0xF0, 0x06, 0xEE, 0x06, - 0xEC, 0x06, 0x0C, 0x07, 0xE6, 0x06, 0x18, 0x07, - 0x92, 0x09, 0x94, 0x09, 0x96, 0x09, 0x98, 0x09, - 0x00, 0x50, 0xCC, 0x00, 0x03, 0x00, 0x00, 0x84, - 0x00, 0xA8, 0x00, 0xA0, 0x00, 0x20, 0x00, 0x80, - 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, 0x80, - 0x00, 0x40, 0x00, 0x10, 0x82, 0xEC, 0x48, 0xEB, - 0x62, 0xEB, 0x7C, 0xEB, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, 0xEA, 0xEB, - 0x52, 0xEB, 0x68, 0xEB, 0x82, 0xEB, 0x40, 0x01, - 0x42, 0x01, 0x42, 0x01, 0x42, 0x01, 0x00, 0x00, - 0x7F, 0x00, 0xA0, 0x00, 0xFF, 0x00, 0x10, 0x02, - 0x1F, 0x02, 0x30, 0x02, 0x3F, 0x02, 0x50, 0x02, - 0x5F, 0x02, 0x70, 0x02, 0x7F, 0x02, 0x90, 0x02, - 0x9F, 0x02, 0xB0, 0x02, 0xBF, 0x02, 0xD0, 0x02, - 0xDF, 0x02, 0xE1, 0x02, 0xFF, 0x02, 0x01, 0x03, - 0x7F, 0x03, 0x81, 0x03, 0x8F, 0x03, 0x91, 0x03, - 0x9F, 0x03, 0xA1, 0x03, 0xAF, 0x03, 0xB1, 0x03, - 0xBF, 0x03, 0xC1, 0x03, 0xCF, 0x03, 0xE1, 0x03, - 0xFF, 0x03, 0xC0, 0x07, 0xFF, 0x07, 0x00, 0x0C, - 0xFF, 0x0F, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBC, 0xFE, 0x07, 0x00, 0x5E, 0x02, - 0x00, 0x01, 0xFF, 0xBA, 0x80, 0xBA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x0A, 0x01, - 0x0E, 0x01, 0x10, 0x01, 0x14, 0x01, 0x00, 0x00, - 0x12, 0x01, 0x00, 0xF8, 0x16, 0x01, 0x00, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x1C, 0x01, - 0x82, 0x01, 0x66, 0x96, 0x66, 0x96, 0x55, 0x55, - 0x00, 0x00, 0x82, 0x01, 0x2A, 0x8A, 0x2A, 0x8A, - 0x18, 0xC9, 0x18, 0xC9, 0x86, 0x01, 0xAA, 0xA2, - 0x1E, 0xA0, 0x55, 0x55, 0x1E, 0x54, 0x8A, 0x01, - 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, - 0x8C, 0x01, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, - 0x00, 0x00, 0x8E, 0x01, 0x00, 0x50, 0x00, 0x00, - 0x00, 0xA8, 0x00, 0x00, 0x90, 0x01, 0x00, 0x50, - 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x92, 0x01, - 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, - 0x94, 0x01, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, - 0x00, 0x00, 0x96, 0x01, 0x00, 0x50, 0x00, 0x00, - 0x00, 0xA8, 0x00, 0x00, 0x98, 0x01, 0x00, 0x50, - 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x9A, 0x01, - 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, - 0x9C, 0x01, 0x55, 0x55, 0xC0, 0x7F, 0xAA, 0xAA, - 0xC0, 0x7F, 0x00, 0x00, 0xA2, 0x01, 0xA4, 0x01, - 0xA8, 0x01, 0xAA, 0x01, 0xAE, 0x01, 0xB0, 0x01, - 0xB2, 0x01, 0x80, 0x01, 0x00, 0x00, 0x88, 0x01, - 0x00, 0xFF, 0x9E, 0x01, 0xFF, 0x00, 0xA0, 0x01, - 0x00, 0x80, 0xAC, 0x01, 0x00, 0x80, 0x00, 0x00, - 0xA6, 0x01, 0x00, 0x80, 0x00, 0x00, 0x80, 0x01, - 0xBC, 0x01, 0x00, 0x88, 0x00, 0x06, 0x00, 0xC8, - 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x02, 0x00, 0x44, 0x00, 0x92, 0xEA, - 0x48, 0x00, 0x98, 0xEA, 0x50, 0x00, 0x9E, 0xEA, - 0x60, 0x00, 0xA4, 0xEA, 0x78, 0x00, 0xAA, 0xEA, - 0x0A, 0xE8, 0x18, 0xE7, 0x3C, 0xEA, 0x2A, 0xE7, - 0x14, 0x55, 0xA0, 0x01, 0xEC, 0xE6, 0xD0, 0xE9, - 0x46, 0xE7, 0xA0, 0xE7, 0x00, 0xE7, 0x58, 0xE8, - 0x00, 0x00, 0x1E, 0x00, 0x46, 0xE7, 0x92, 0xE7, - 0x00, 0x41, 0x01, 0x41, 0xB6, 0xE7, 0x73, 0xEA, - 0x18, 0xE7, 0x48, 0xEA, 0xEC, 0xE6, 0x04, 0xEA, - 0x56, 0xE7, 0x62, 0xE7, 0xB6, 0xE7, 0x6E, 0xEA, - 0x62, 0xE8, 0x00, 0x00, 0x36, 0xE8, 0xEC, 0xE6, - 0xFA, 0xE9, 0x56, 0xE7, 0x62, 0xE7, 0x36, 0xE8, - 0x62, 0xE8, 0x00, 0x00, 0xEC, 0xE6, 0xF0, 0xE9, - 0x0C, 0xE7, 0x4A, 0xE7, 0x62, 0xE7, 0x36, 0xE8, - 0xEC, 0xE6, 0xFA, 0xE9, 0x56, 0xE7, 0x62, 0xE7, - 0x36, 0xE8, 0x62, 0xE8, 0x00, 0x20, 0x2A, 0xE7, - 0x14, 0x55, 0xA0, 0x01, 0x18, 0xE7, 0x50, 0xEA, - 0xEC, 0xE6, 0xD0, 0xE9, 0x58, 0xE8, 0x50, 0x55, - 0x0C, 0x00, 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x01, - 0x00, 0x00, 0xB6, 0xE7, 0x75, 0xEA, 0x00, 0xE7, - 0x58, 0xE8, 0x55, 0x55, 0x0C, 0x00, 0x56, 0xE7, - 0xA0, 0xE7, 0x00, 0xE7, 0x58, 0xE8, 0xFF, 0xFF, - 0x08, 0x00, 0x58, 0xE8, 0x02, 0x10, 0x06, 0x00, - 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x01, 0x01, 0x01, - 0xB6, 0xE7, 0x80, 0xEA, 0x00, 0xE7, 0x58, 0xE8, - 0x00, 0xC0, 0x08, 0x00, 0x58, 0xE8, 0xFF, 0xFF, - 0x0A, 0x00, 0x58, 0xE8, 0xFF, 0xFF, 0x0C, 0x00, - 0x58, 0xE8, 0x0D, 0x10, 0x06, 0x00, 0x46, 0xE7, - 0x92, 0xE7, 0x00, 0x01, 0x01, 0x01, 0xB6, 0xE7, - 0x74, 0xEA, 0x62, 0xE8, 0x08, 0x20, 0x00, 0xE7, - 0x52, 0xE8, 0x82, 0x01, 0x02, 0xC9, 0x46, 0xE7, - 0xB6, 0xE7, 0x80, 0xEA, 0x62, 0xE8, 0x34, 0x20, - 0x00, 0xE7, 0x58, 0xE8, 0x00, 0x10, 0x06, 0x00, - 0x46, 0xE7, 0xC6, 0xE8, 0xB6, 0xE7, 0x78, 0xEA, - 0x52, 0xE8, 0x9C, 0x01, 0x40, 0x00, 0x18, 0xE7, - 0x50, 0xEA, 0x2A, 0xE7, 0xFF, 0x00, 0x80, 0x07, - 0x26, 0xE9, 0x03, 0x00, 0x66, 0xE9, 0x74, 0xE9, - 0x12, 0xEA, 0x38, 0xE9, 0x00, 0x00, 0x74, 0xE9, - 0x1C, 0xEA, 0x38, 0xE9, 0x04, 0x00, 0x74, 0xE9, - 0x24, 0xEA, 0x38, 0xE9, 0x07, 0x00, 0x74, 0xE9, - 0x2C, 0xEA, 0x26, 0xE9, 0x01, 0x00, 0x74, 0xE9, - 0x34, 0xEA, 0x38, 0xE9, 0x02, 0x00, 0x74, 0xE9, - 0x34, 0xEA, 0x38, 0xE9, 0x06, 0x00, 0x74, 0xE9, - 0x34, 0xEA, 0x38, 0xE9, 0x05, 0x00, 0x74, 0xE9, - 0x34, 0xEA, 0x26, 0xE9, 0x01, 0x00, 0x4A, 0xE9, - 0x26, 0xE9, 0x03, 0x00, 0x58, 0xE9, 0x62, 0xE7, - 0xE6, 0xE8, 0xD8, 0xE9, 0x01, 0x00, 0xE6, 0xE8, - 0x25, 0xEA, 0x02, 0x00, 0xE6, 0xE8, 0x2F, 0xEA, - 0x06, 0x00, 0xE6, 0xE8, 0x3A, 0xEA, 0x05, 0x00, - 0xB6, 0xE7, 0x74, 0xEA, 0x36, 0xE8, 0xEC, 0xE6, - 0xD0, 0xE9, 0x56, 0xE7, 0xC6, 0xE8, 0x0C, 0xE7, - 0x92, 0xE7, 0x00, 0x01, 0x00, 0x80, 0xB6, 0xE7, - 0x78, 0xEA, 0x00, 0xE7, 0xFE, 0xE8, 0x52, 0xE8, - 0x80, 0x01, 0x41, 0x8E, 0x4A, 0xE7, 0x92, 0xE7, - 0x00, 0x01, 0x01, 0x1B, 0x06, 0xE9, 0xE4, 0xFF, - 0xB6, 0xE7, 0x7C, 0xEA, 0xBE, 0xE8, 0x18, 0xE7, - 0x56, 0xEA, 0x0C, 0xE7, 0x6A, 0xE8, 0x3C, 0xE7, - 0x00, 0xE0, 0xC6, 0xE8, 0xB6, 0xE7, 0x86, 0xEA, - 0x3C, 0xE7, 0x00, 0xE8, 0x62, 0xE7, 0xB6, 0xE7, - 0x85, 0xEA, 0x3C, 0xE7, 0x00, 0x08, 0xC6, 0xE8, - 0xB6, 0xE7, 0x86, 0xEA, 0x3C, 0xE7, 0x00, 0xF8, - 0x62, 0xE7, 0xB6, 0xE7, 0x85, 0xEA, 0x52, 0xE8, - 0x80, 0x01, 0x00, 0x02, 0x3C, 0xE7, 0x00, 0xE0, - 0x62, 0xE7, 0xB6, 0xE7, 0x85, 0xEA, 0x52, 0xE8, - 0x84, 0x01, 0x00, 0x00, 0x62, 0xE8, 0x34, 0x00, - 0x3C, 0xE7, 0x00, 0x00, 0xC6, 0xE8, 0x62, 0xE8, - 0x34, 0x60, 0x0E, 0xE9, 0x52, 0xE8, 0x84, 0x01, - 0x00, 0x00, 0xB6, 0xE7, 0x86, 0xEA, 0x52, 0xE8, - 0x82, 0x01, 0x00, 0xC8, 0x3C, 0xE7, 0x00, 0xE0, - 0xC6, 0xE8, 0x3C, 0xE7, 0x00, 0x10, 0xC6, 0xE8, - 0x62, 0xE8, 0x34, 0x60, 0x52, 0xE8, 0x80, 0x01, - 0x00, 0x06, 0x3C, 0xE7, 0x10, 0x00, 0x78, 0xE8, - 0x36, 0xE8, 0x52, 0xE8, 0x84, 0x01, 0x00, 0x00, - 0x62, 0xE8, 0x34, 0x00, 0xEC, 0xE6, 0xD0, 0xE9, - 0x18, 0xE7, 0x5C, 0xEA, 0xD0, 0xE8, 0x92, 0xE9, - 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xF0, - 0x06, 0x00, 0x00, 0xC7, 0xA0, 0xE7, 0xDC, 0xE8, - 0x00, 0xE0, 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, - 0x40, 0xD0, 0x06, 0x00, 0x00, 0xE0, 0xA0, 0xE7, - 0xDC, 0xE8, 0x00, 0xC0, 0x00, 0xE7, 0x0C, 0xE7, - 0x70, 0xE7, 0x40, 0x90, 0x06, 0x00, 0x00, 0xA0, - 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x80, 0x00, 0xE7, - 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x50, 0x06, 0x00, - 0x00, 0x60, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x40, - 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x10, - 0x06, 0x00, 0x00, 0x20, 0xA0, 0xE7, 0xDC, 0xE8, - 0x00, 0x00, 0xD0, 0xE8, 0x92, 0xE9, 0x00, 0xE7, - 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xD0, 0x06, 0x00, - 0x00, 0xA6, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0xC0, - 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x90, - 0x06, 0x00, 0x00, 0xC0, 0xA0, 0xE7, 0xDC, 0xE8, - 0x00, 0x80, 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, - 0x40, 0x50, 0x06, 0x00, 0x00, 0x40, 0xA0, 0xE7, - 0xDC, 0xE8, 0x00, 0x40, 0x00, 0xE7, 0x0C, 0xE7, - 0x70, 0xE7, 0x40, 0x70, 0x06, 0x00, 0x00, 0x60, - 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x60, 0x7E, 0xE9, - 0x90, 0xE9, 0x18, 0xE7, 0x62, 0xEA, 0xEC, 0xE6, - 0xD0, 0xE9, 0xA4, 0xE8, 0x55, 0x55, 0x16, 0x00, - 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x00, 0x00, 0x00, - 0xB6, 0xE7, 0x8B, 0xEA, 0x0A, 0xE8, 0x18, 0xE7, - 0x62, 0xEA, 0x58, 0xE8, 0x55, 0x55, 0x16, 0x00, - 0x00, 0xE7, 0x46, 0xE7, 0xA0, 0xE7, 0x2A, 0xE7, - 0xFF, 0x00, 0x00, 0x08, 0x2A, 0xE7, 0xFF, 0x00, - 0x00, 0x0C, 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x10, - 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x14, 0x2A, 0xE7, - 0xFF, 0x00, 0x00, 0x18, 0x2A, 0xE7, 0xFF, 0x00, - 0x00, 0x1C, 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x20, - 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x24, 0x2A, 0xE7, - 0xFF, 0x00, 0x00, 0x28, 0x2A, 0xE7, 0xFF, 0x00, - 0x00, 0x2C, 0xD2, 0xE7, 0x00, 0xE7, 0x0C, 0xE7, - 0x70, 0xE7, 0x40, 0x30, 0x06, 0x00, 0x00, 0x01, - 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x20, 0x00, 0xE7, - 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x70, 0x06, 0x00, - 0x00, 0x43, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x60, - 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xB0, - 0x06, 0x00, 0x00, 0x85, 0xA0, 0xE7, 0xDC, 0xE8, - 0x00, 0xA0, 0xD8, 0xE8, 0x00, 0x01, 0x03, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x81, 0x1A, 0x00, - 0x40, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x72, 0x82, - 0x4A, 0xA9, 0xA5, 0x5A, 0xDA, 0xE7, 0x03, 0x09, - 0x11, 0x9D, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, - 0xD8, 0x90, 0x00, 0x10, 0x00, 0x00, 0x00, 0x81, - 0x04, 0x00, 0xD8, 0x90, 0xD8, 0xB4, 0x00, 0x00, - 0x00, 0x81, 0x08, 0x00, 0xD8, 0x90, 0x46, 0x16, - 0x00, 0x40, 0xD8, 0xB4, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x13, 0x00, 0x40, 0x10, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x81, 0x0F, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x0A, 0x80, - 0x40, 0x9E, 0x00, 0xC8, 0x00, 0x00, 0x5E, 0x80, - 0x0F, 0x00, 0x06, 0x80, 0x40, 0xFE, 0x00, 0xCC, - 0x00, 0x00, 0x04, 0x80, 0x40, 0x8E, 0x00, 0xC9, - 0x04, 0x80, 0x00, 0x06, 0x00, 0xCC, 0x04, 0x80, - 0x40, 0x0A, 0x00, 0xC8, 0x0A, 0x80, 0x40, 0x8A, - 0x00, 0xC8, 0x00, 0x00, 0x5E, 0x80, 0x0F, 0x00, - 0x0A, 0x08, 0x80, 0x1C, 0x0A, 0x00, 0x1C, 0x1A, - 0x00, 0x80, 0x1C, 0x0C, 0x00, 0x80, 0x1C, 0x1A, - 0x00, 0x80, 0x1A, 0x0E, 0x80, 0x1C, 0x04, 0x00, - 0x00, 0x80, 0x80, 0x02, 0x02, 0x00, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x58, 0x07, 0x0C, 0xB8, - 0x16, 0xE0, 0xE2, 0x08, 0xEC, 0x08, 0xF6, 0x08, - 0x16, 0xE0, 0x00, 0x09, 0x0A, 0x09, 0x00, 0x00, - 0x00, 0x00, 0xE2, 0x08, 0x00, 0x00, 0xEC, 0x08, - 0xF6, 0x08, 0x00, 0x09, 0x00, 0x00, 0xB8, 0x07, - 0xCA, 0xCB, 0x80, 0x02, 0xB8, 0x07, 0xE8, 0xCB, - 0x84, 0xFF, 0xB8, 0x07, 0x0A, 0xCC, 0xB8, 0x07, - 0x84, 0xCC, 0x6E, 0xCD, 0x62, 0xCD, 0x88, 0xCD, - 0x90, 0xCE, 0x84, 0xCD, 0x92, 0xCE, 0x92, 0xCE, - 0x92, 0xCE, 0x8C, 0xCD, 0x96, 0xCD, 0x38, 0xCE, - 0x82, 0xCE, 0x92, 0xCE, 0x92, 0xCE, 0x92, 0xCE, - 0x92, 0xCE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x08, 0x01, 0x05, 0x08, - 0x08, 0x08, 0x03, 0x08, 0x03, 0x03, 0x03, 0x03, - 0x00, 0x00, 0x04, 0x02, 0x04, 0x04, 0x00, 0x04, - 0x0A, 0x08, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x1A, 0x00, 0x00, - 0x04, 0x41, 0x06, 0x0B, 0x08, 0xC2, 0x00, 0xE6, - 0x00, 0xE7, 0x04, 0x06, 0x04, 0x07, 0x04, 0x03, - 0x06, 0x04, 0x04, 0x05, 0x04, 0x88, 0x04, 0xCF, - 0x04, 0xCD, 0x03, 0x00, 0x05, 0x00, 0x1C, 0x00, - 0x00, 0x0C, 0x00, 0x80, 0xD2, 0xD8, 0xDA, 0xD8, - 0x1E, 0xD9, 0xDE, 0xD8, 0xEA, 0xD8, 0xF0, 0xD8, - 0x14, 0xD9, 0xE4, 0xD8, 0x32, 0xD9, 0x00, 0x06, - 0x00, 0x00, 0x03, 0x07, 0x0A, 0x0E, 0x0F, 0x14, - 0x26, 0x2A, 0x52, 0x42, 0x50, 0x48, 0x5D, 0x4D, - 0x62, 0x62, 0x6D, 0x57, 0x46, 0x39, 0x1A, 0x1D, - 0x7C, 0x76, 0x1F, 0x23, 0x15, 0x1D, 0x74, 0x6F, - 0x84, 0x7C, 0x8B, 0x82, 0x92, 0x89, 0x00, 0x00, - 0x32, 0x2F, 0x3F, 0x34, 0x32, 0x01, 0x01, 0x57, - 0x32, 0x11, 0x81, 0x51, 0x02, 0x56, 0x03, 0x55, - 0x54, 0x11, 0x56, 0x81, 0x55, 0x02, 0x54, 0x02, - 0x56, 0x81, 0x01, 0x76, 0x02, 0x34, 0x02, 0x55, - 0x81, 0x54, 0x02, 0x58, 0x02, 0x55, 0x81, 0x54, - 0x02, 0x58, 0x11, 0x12, 0x02, 0x52, 0x58, 0x83, - 0x52, 0x05, 0x83, 0x04, 0x02, 0x58, 0x08, 0x55, - 0x58, 0x83, 0x55, 0x02, 0x81, 0x02, 0x05, 0x58, - 0x03, 0x52, 0x5C, 0x15, 0x53, 0x5B, 0x52, 0x87, - 0x11, 0x03, 0x41, 0x51, 0x78, 0x51, 0x34, 0x11, - 0x81, 0x11, 0x20, 0x31, 0x54, 0x57, 0x01, 0x53, - 0x5A, 0x12, 0x81, 0x51, 0x20, 0x31, 0x5B, 0x57, - 0x01, 0x5A, 0x01, 0x11, 0x51, 0x11, 0x31, 0x81, - 0x57, 0x20, 0x15, 0x01, 0x13, 0x01, 0x11, 0x01, - 0x11, 0x11, 0x81, 0x51, 0x05, 0x58, 0x02, 0x52, - 0x5B, 0x54, 0x5D, 0x81, 0x52, 0x05, 0x54, 0x02, - 0x58, 0x81, 0x50, 0x02, 0x13, 0x03, 0x58, 0x81, - 0x50, 0x02, 0x11, 0x03, 0x81, 0x54, 0x72, 0x5D, - 0x50, 0x03, 0x13, 0x03, 0x13, 0x01, 0x40, 0x54, - 0x0E, 0x00, 0x20, 0x06, 0x56, 0x06, 0x0C, 0xDA, - 0x24, 0x00, 0x02, 0x10, 0x16, 0x00, 0x02, 0x00, - 0x01, 0x04, 0x08, 0x07, 0x0C, 0xDA, 0x20, 0x00, - 0x03, 0x10, 0x12, 0x00, 0x03, 0x00, 0x4E, 0xD9, - 0x14, 0x8E, 0x20, 0x00, 0x04, 0x10, 0x12, 0x00, - 0x04, 0x00, 0xD2, 0xCE, 0x20, 0x00, 0x05, 0xE0, - 0x12, 0x00, 0x05, 0x00, 0xD2, 0xCE, 0x20, 0x00, - 0x06, 0xE0, 0x12, 0x00, 0x06, 0x00, 0xE8, 0xDD, - 0x12, 0x00, 0x01, 0xE0, 0x6C, 0x09, 0xCC, 0x06, - 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x30, 0x06, - 0x42, 0xDC, 0xF0, 0x05, 0x00, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xE2, 0x05, 0x08, 0x00, - 0x26, 0xFF, 0xDC, 0x05, 0x00, 0x00, 0x30, 0x06, - 0xF8, 0xDB, 0x1E, 0x00, 0x01, 0xE0, 0x10, 0x00, - 0x11, 0x30, 0x0C, 0x04, 0x01, 0x00, 0x0E, 0x04, - 0x02, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x32, 0xDD, 0x12, 0x00, 0x01, 0xE0, - 0x04, 0x00, 0x13, 0x30, 0x74, 0xDE, 0x3E, 0x00, - 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x02, 0x00, - 0x30, 0x00, 0x20, 0x50, 0x23, 0x0C, 0xFC, 0x05, - 0x52, 0x06, 0x56, 0x06, 0x00, 0x00, 0x00, 0x81, - 0x16, 0x00, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x2A, 0x40, 0x2A, 0x04, - 0x56, 0x06, 0x26, 0x00, 0x19, 0xED, 0x2B, 0x06, - 0x72, 0x09, 0x22, 0x00, 0x24, 0x00, 0x2F, 0xED, - 0x23, 0x0C, 0xFC, 0x05, 0x28, 0x08, 0x34, 0x09, - 0x29, 0x08, 0x58, 0x07, 0x78, 0x07, 0x98, 0x07, - 0x23, 0x00, 0x2A, 0x00, 0x3D, 0xED, 0x06, 0x04, - 0xF0, 0x06, 0x07, 0x04, 0xEE, 0x06, 0x24, 0x00, - 0xD2, 0xCE, 0x34, 0x00, 0x00, 0xE0, 0x00, 0xC0, - 0x00, 0x00, 0x10, 0x00, 0x26, 0x00, 0x25, 0x40, - 0xD2, 0xCE, 0x20, 0x00, 0x00, 0xE0, 0x00, 0xC0, - 0x00, 0x00, 0x10, 0x00, 0x12, 0x00, 0x26, 0x40, - 0xD2, 0xCE, 0x1A, 0x00, 0x00, 0xE0, 0x0C, 0x00, - 0x27, 0x60, 0x0A, 0x08, 0xE6, 0x06, 0xD2, 0xCE, - 0x24, 0x00, 0x00, 0xE0, 0x16, 0x00, 0x28, 0x60, - 0x30, 0x04, 0x06, 0x07, 0x52, 0xCF, 0x00, 0x81, - 0x30, 0x00, 0x00, 0xE0, 0x22, 0x00, 0x29, 0x60, - 0x2D, 0x08, 0x1C, 0x07, 0x2E, 0x08, 0x22, 0x07, - 0x00, 0x00, 0x08, 0x02, 0x06, 0x01, 0x14, 0x06, - 0x18, 0x08, 0x20, 0x0C, 0x26, 0x0E, 0x30, 0x0F, - 0x34, 0x11, 0x3E, 0x12, 0x42, 0x14, 0x46, 0x16, - 0x1C, 0x0A, 0x4A, 0x18, 0x13, 0x03, 0x11, 0x83, - 0x01, 0x11, 0x11, 0x81, 0x12, 0x81, 0x13, 0x01, - 0x52, 0x83, 0x81, 0x85, 0x85, 0x11, 0x12, 0x81, - 0x12, 0x81, 0x19, 0x81, 0x60, 0x85, 0x00, 0xC0, - 0x00, 0x00, 0x08, 0x00, 0x6C, 0x09, 0x00, 0x00, - 0x30, 0x06, 0x08, 0xE5, 0x54, 0x06, 0x50, 0x06, - 0x38, 0x02, 0x21, 0x04, 0x1E, 0x09, 0x0B, 0x06, - 0xD8, 0x06, 0x02, 0x08, 0xDC, 0x06, 0x00, 0xC0, - 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x41, 0x00, - 0x14, 0xAE, 0x00, 0x00, 0x00, 0x81, 0x09, 0x04, - 0x0C, 0x07, 0x41, 0x00, 0x41, 0x00, 0x14, 0x02, - 0x00, 0x00, 0x00, 0x81, 0x0B, 0x06, 0xD8, 0x06, - 0x2C, 0x06, 0x76, 0x09, 0x22, 0x14, 0x3A, 0x09, - 0x41, 0x00, 0x41, 0x00, 0x54, 0x02, 0x00, 0x00, - 0x00, 0x81, 0xD8, 0x06, 0x00, 0x84, 0x00, 0x48, - 0xFC, 0xFF, 0x09, 0x00, 0x00, 0xC0, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0x20, 0x00, - 0x43, 0x28, 0x31, 0x29, 0x38, 0x39, 0x2D, 0x33, - 0x39, 0x38, 0x39, 0x2C, 0x2D, 0x30, 0x38, 0x39, - 0x54, 0x20, 0x78, 0x65, 0x73, 0x61, 0x49, 0x20, - 0x73, 0x6E, 0x72, 0x74, 0x6D, 0x75, 0x6E, 0x65, - 0x73, 0x74, 0x28, 0x0A, 0x29, 0x43, 0x39, 0x31, - 0x33, 0x38, 0x34, 0x2C, 0x35, 0x2C, 0x36, 0x2C, - 0x49, 0x20, 0x4D, 0x42, 0x43, 0x20, 0x72, 0x6F, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x34, 0x90, - 0x00, 0x00, 0xFA, 0xFF, 0x01, 0x00, 0xB8, 0xFF, - 0x00, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x80, 0x00, - 0x3E, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 -}; -#endif /* CONFIG_SKTR */ diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c new file mode 100644 index 000000000..0a0da8840 --- /dev/null +++ b/drivers/net/tokenring/tms380tr.c @@ -0,0 +1,2749 @@ +/* + * tms380tr.c: A network driver for Texas Instruments TMS380-based + * Token Ring Adapters. + * + * Originally sktr.c: Written 1997 by Christoph Goos + * + * A fine result of the Linux Systems Network Architecture Project. + * http://www.linux-sna.org + * + * This software may be used and distributed according to the terms + * of the GNU Public License, incorporated herein by reference. + * + * This device driver works with the following TMS380 adapters: + * - SysKonnect TR4/16(+) ISA (SK-4190) + * - SysKonnect TR4/16(+) PCI (SK-4590) + * - SysKonnect TR4/16 PCI (SK-4591) + * - Compaq TR 4/16 PCI + * - Thomas-Conrad TC4048 4/16 PCI + * - Any ISA or PCI adapter using only the TMS380 chipset + * + * Sources: + * - The hardware related parts of this driver are take from + * the SysKonnect Token Ring driver for Windows NT. + * - I used the IBM Token Ring driver 'ibmtr.c' as a base for this + * driver, as well as the 'skeleton.c' driver by Donald Becker. + * - Also various other drivers in the linux source tree were taken + * as samples for some tasks. + * - TI TMS380 Second-Generation Token Ring User's Guide + * - TI datasheets for respective chips + * - David Hein at Texas Instruments + * + * Maintainer(s): + * JS Jay Schulist jschlst@samba.anu.edu.au + * CG Christoph Goos cgoos@syskonnect.de + * AF Adam Fritzler mid@auk.cx + * + * Modification History: + * 29-Aug-97 CG Created + * 04-Apr-98 CG Fixed problems caused by tok_timer_check + * 10-Apr-98 CG Fixed lockups at cable disconnection + * 27-May-98 JS Formated to Linux Kernel Format + * 31-May-98 JS Hacked in PCI support + * 16-Jun-98 JS Modulized for multiple cards with one driver + * Sep-99 AF Renamed to tms380tr (supports more than SK's) + * 23-Sep-99 AF Added Compaq and Thomas-Conrad PCI support + * Fixed a bug causing double copies on PCI + * Fixed for new multicast stuff (2.2/2.3) + * 25-Sep-99 AF Uped TPL_NUM from 3 to 9 + * Removed extraneous 'No free TPL' + * + * To do: + * 1. Selectable 16 Mbps or 4Mbps + * 2. Multi/Broadcast packet handling (this may have fixed itself) + * + */ + +static const char *version = "tms380tr.c: v1.03 29/09/1999 by Christoph Goos, Adam Fritzler\n"; + +#ifdef MODULE +#include <linux/module.h> +#include <linux/version.h> +#endif + +#include <linux/kernel.h> +#include <linux/sched.h> +#include <linux/types.h> +#include <linux/fcntl.h> +#include <linux/interrupt.h> +#include <linux/ptrace.h> +#include <linux/ioport.h> +#include <linux/in.h> +#include <linux/malloc.h> +#include <linux/string.h> +#include <linux/time.h> +#include <asm/system.h> +#include <asm/bitops.h> +#include <asm/io.h> +#include <asm/dma.h> +#include <asm/irq.h> +#include <linux/errno.h> +#include <linux/init.h> +#include <linux/pci.h> + +#include <linux/netdevice.h> +#include <linux/etherdevice.h> +#include <linux/skbuff.h> +#include <linux/trdevice.h> + +#include "tms380tr.h" /* Our Stuff */ +#include "tms380tr_microcode.h" /* TI microcode for COMMprocessor */ + +/* A zero-terminated list of I/O addresses to be probed. */ +static unsigned int tms380tr_portlist[] __initdata = { + 0x0A20, 0x1A20, 0x0B20, 0x1B20, 0x0980, 0x1980, 0x0900, 0x1900, + 0 +}; + +/* A zero-terminated list of IRQs to be probed. + * Used again after initial probe for tms380tr_chipset_init, called from tms380tr_open. + */ +static unsigned short tms380tr_irqlist[] = { + 3, 5, 9, 10, 11, 12, 15, + 0 +}; + +/* A zero-terminated list of DMAs to be probed. */ +static int tms380tr_dmalist[] __initdata = { + 5, 6, 7, + 0 +}; + +/* + * Table used for card detection and type determination. + */ +struct cardinfo_table cardinfo[] = { + { 0, 0, 0, + "Unknown TMS380 Token Ring Adapter"}, + { TMS_ISA, 0, 0, + "SK NET TR 4/16 ISA"}, + { TMS_PCI, PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TOKENRING, + "Compaq 4/16 TR PCI"}, + { TMS_PCI, PCI_VENDOR_ID_SK, PCI_DEVICE_ID_SK_TR, + "SK NET TR 4/16 PCI"}, + { TMS_PCI, PCI_VENDOR_ID_TCONRAD, PCI_DEVICE_ID_TCONRAD_TOKENRING, + "Thomas-Conrad TC4048 PCI 4/16"}, + { 0, 0, 0, NULL} +}; + +/* Use 0 for production, 1 for verification, 2 for debug, and + * 3 for very verbose debug. + */ +#ifndef TMS380TR_DEBUG +#define TMS380TR_DEBUG 0 +#endif +static unsigned int tms380tr_debug = TMS380TR_DEBUG; + +/* The number of low I/O ports used by the tokencard. */ +#define TMS380TR_IO_EXTENT 32 + +/* Index to functions, as function prototypes. + * Alphabetical by function name. + */ + +/* "B" */ +static int tms380tr_bringup_diags(struct net_device *dev); +/* "C" */ +static void tms380tr_cancel_tx_queue(struct net_local* tp); +static int tms380tr_chipset_init(struct net_device *dev); +static void tms380tr_chk_irq(struct net_device *dev); +static unsigned char tms380tr_chk_frame(struct net_device *dev, unsigned char *Addr); +static void tms380tr_chk_outstanding_cmds(struct net_device *dev); +static void tms380tr_chk_src_addr(unsigned char *frame, unsigned char *hw_addr); +static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqType); +static int tms380tr_close(struct net_device *dev); +static void tms380tr_cmd_status_irq(struct net_device *dev); +/* "D" */ +static void tms380tr_disable_interrupts(struct net_device *dev); +#if TMS380TR_DEBUG > 0 +static void tms380tr_dump(unsigned char *Data, int length); +#endif +/* "E" */ +static void tms380tr_enable_interrupts(struct net_device *dev); +static void tms380tr_exec_cmd(struct net_device *dev, unsigned short Command); +static void tms380tr_exec_sifcmd(struct net_device *dev, unsigned int WriteValue); +/* "F" */ +/* "G" */ +static struct enet_statistics *tms380tr_get_stats(struct net_device *dev); +/* "H" */ +static void tms380tr_hardware_send_packet(struct net_device *dev, + struct net_local* tp); +/* "I" */ +static int tms380tr_init_adapter(struct net_device *dev); +static int tms380tr_init_card(struct net_device *dev); +static void tms380tr_init_ipb(struct net_local *tp); +static void tms380tr_init_net_local(struct net_device *dev); +static void tms380tr_init_opb(struct net_local *tp); +static void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static int tms380tr_isa_chk_card(struct net_device *dev, int ioaddr, struct cardinfo_table **outcard); +static int tms380tr_isa_chk_ioaddr(int ioaddr); +/* "O" */ +static int tms380tr_open(struct net_device *dev); +static void tms380tr_open_adapter(struct net_device *dev); +/* "P" */ +static int tms380tr_pci_chk_card(struct net_device *dev, struct cardinfo_table **outcard); +int tms380tr_probe(struct net_device *dev); +static int tms380tr_probe1(struct net_device *dev, int ioaddr); +/* "R" */ +static void tms380tr_rcv_status_irq(struct net_device *dev); +static void tms380tr_read_addr(struct net_device *dev, unsigned char *Address); +static int tms380tr_read_ptr(struct net_device *dev); +static void tms380tr_read_ram(struct net_device *dev, unsigned char *Data, + unsigned short Address, int Length); +static int tms380tr_reset_adapter(struct net_device *dev); +static void tms380tr_reset_interrupt(struct net_device *dev); +static void tms380tr_ring_status_irq(struct net_device *dev); +/* "S" */ +static int tms380tr_send_packet(struct sk_buff *skb, struct net_device *dev); +static void tms380tr_set_multicast_list(struct net_device *dev); +/* "T" */ +static void tms380tr_timer_chk(unsigned long data); +static void tms380tr_timer_end_wait(unsigned long data); +static void tms380tr_tx_status_irq(struct net_device *dev); +/* "U" */ +static void tms380tr_update_rcv_stats(struct net_local *tp, + unsigned char DataPtr[], unsigned int Length); +/* "W" */ +static void tms380tr_wait(unsigned long time); +static void tms380tr_write_rpl_status(RPL *rpl, unsigned int Status); +static void tms380tr_write_tpl_status(TPL *tpl, unsigned int Status); + +/* + * Check for a network adapter of this type, and return '0' if one exists. + * If dev->base_addr == 0, probe all likely locations. + * If dev->base_addr == 1, always return failure. + */ +int __init tms380tr_probe(struct net_device *dev) +{ + int i; + int base_addr = dev ? dev->base_addr : 0; + + if(base_addr > 0x1ff) /* Check a single specified location. */ + return (tms380tr_probe1(dev, base_addr)); + else if(base_addr != 0) /* Don't probe at all. */ + return (-ENXIO); + + for(i = 0; tms380tr_portlist[i]; i++) + { + int ioaddr = tms380tr_portlist[i]; + if(check_region(ioaddr, TMS380TR_IO_EXTENT)) + continue; + if(tms380tr_probe1(dev, ioaddr)) + { +#ifndef MODULE + tr_freedev(dev); +#endif + } + else + return (0); + } + + return (-ENODEV); +} + +struct cardinfo_table * __init tms380tr_pci_getcardinfo(unsigned short vendor, + unsigned short device) +{ + int cur; + + for (cur = 1; cardinfo[cur].name != NULL; cur++) { + if (cardinfo[cur].type == 2) /* PCI */ + { + if ((cardinfo[cur].vendor_id == vendor) && (cardinfo[cur].device_id == device)) + return &cardinfo[cur]; + } + } + + return NULL; +} + +/* + * Detect and setup the PCI SysKonnect TR cards in slot order. + */ +static int __init tms380tr_pci_chk_card(struct net_device *dev, + struct cardinfo_table **outcard) +{ + static int pci_index = 0; + unsigned char pci_bus, pci_device_fn; + struct cardinfo_table *card; + int i; + + if(!pci_present()) + return (-1); /* No PCI present. */ + + for(; pci_index < 0xff; pci_index++) + { + unsigned int pci_irq_line; + struct pci_dev *pdev; + unsigned short pci_command, new_command, vendor, device; + unsigned int pci_ioaddr; + + if(pcibios_find_class(PCI_CLASS_NETWORK_TOKEN_RING << 8, + pci_index, &pci_bus, &pci_device_fn) + != PCIBIOS_SUCCESSFUL) + { + break; + } + + pcibios_read_config_word(pci_bus, pci_device_fn, + PCI_VENDOR_ID, &vendor); + pcibios_read_config_word(pci_bus, pci_device_fn, + PCI_DEVICE_ID, &device); + + pdev = pci_find_slot(pci_bus, pci_device_fn); + pci_irq_line = pdev->irq; + pci_ioaddr = pdev->resource[0].start; + + pcibios_read_config_word(pci_bus, pci_device_fn, + PCI_COMMAND, &pci_command); + + /* Remove I/O space marker in bit 0. */ + pci_ioaddr &= ~3; + + if (!(card = tms380tr_pci_getcardinfo(vendor, device))) + return -ENODEV; + + if(check_region(pci_ioaddr, TMS380TR_IO_EXTENT)) + continue; + request_region(pci_ioaddr, TMS380TR_IO_EXTENT, card->name); + if(request_irq(pdev->irq, tms380tr_interrupt, SA_SHIRQ, + card->name, dev)) + return (-ENODEV); /* continue; ?? */ + + new_command = (pci_command|PCI_COMMAND_MASTER|PCI_COMMAND_IO); + + if(pci_command != new_command) + { + printk("The PCI BIOS has not enabled this" + "device! Updating PCI command %4.4x->%4.4x.\n", + pci_command, new_command); + pcibios_write_config_word(pci_bus, pci_device_fn, + PCI_COMMAND, new_command); + } + + /* At this point we have found a valid PCI TR card. */ + dev->base_addr = pci_ioaddr; + dev->irq = pci_irq_line; + dev->dma = 0; + + dev->addr_len = 6; + tms380tr_read_addr(dev, (unsigned char*)dev->dev_addr); + + printk("%s: %s found at %#4x, IRQ %d, ring station ", + dev->name, card->name, pci_ioaddr, dev->irq); + printk("%2.2x", dev->dev_addr[0]); + for (i = 1; i < 6; i++) + printk(":%2.2x", dev->dev_addr[i]); + printk(".\n"); + + if (outcard) + *outcard = card; + + return (0); + } + + return (-1); +} + +/* + * Detect and setup the ISA SysKonnect TR cards. + */ +static int __init tms380tr_isa_chk_card(struct net_device *dev, int ioaddr, + struct cardinfo_table **outcard) +{ + int i, err; + unsigned long flags; + struct cardinfo_table *card = NULL; + + err = tms380tr_isa_chk_ioaddr(ioaddr); + if(err < 0) + return (-ENODEV); + + if(virt_to_bus((void*)((unsigned long)dev->priv+sizeof(struct net_local))) + > ISA_MAX_ADDRESS) + { + printk("%s: Memory not accessible for DMA\n", dev->name); + kfree(dev->priv); + return (-EAGAIN); + } + + /* FIXME */ + card = &cardinfo[1]; + + /* Grab the region so that no one else tries to probe our ioports. */ + request_region(ioaddr, TMS380TR_IO_EXTENT, card->name); + dev->base_addr = ioaddr; + + /* Autoselect IRQ and DMA if dev->irq == 0 */ + if(dev->irq == 0) + { + for(i = 0; tms380tr_irqlist[i] != 0; i++) + { + dev->irq = tms380tr_irqlist[i]; + err = request_irq(dev->irq, &tms380tr_interrupt, 0, card->name, dev); + if(!err) + break; + } + + if(tms380tr_irqlist[i] == 0) + { + printk("%s: AutoSelect no IRQ available\n", dev->name); + return (-EAGAIN); + } + } + else + { + err = request_irq(dev->irq, &tms380tr_interrupt, 0, card->name, dev); + if(err) + { + printk("%s: Selected IRQ not available\n", dev->name); + return (-EAGAIN); + } + } + + /* Always allocate the DMA channel after IRQ and clean up on failure */ + if(dev->dma == 0) + { + for(i = 0; tms380tr_dmalist[i] != 0; i++) + { + dev->dma = tms380tr_dmalist[i]; + err = request_dma(dev->dma, card->name); + if(!err) + break; + } + + if(dev->dma == 0) + { + printk("%s: AutoSelect no DMA available\n", dev->name); + free_irq(dev->irq, NULL); + return (-EAGAIN); + } + } + else + { + err = request_dma(dev->dma, card->name); + if(err) + { + printk("%s: Selected DMA not available\n", dev->name); + free_irq(dev->irq, NULL); + return (-EAGAIN); + } + } + + flags=claim_dma_lock(); + disable_dma(dev->dma); + set_dma_mode(dev->dma, DMA_MODE_CASCADE); + enable_dma(dev->dma); + release_dma_lock(flags); + + printk("%s: %s found at %#4x, using IRQ %d and DMA %d.\n", + dev->name, card->name, ioaddr, dev->irq, dev->dma); + + if (outcard) + *outcard = card; + + return (0); +} + +static int __init tms380tr_probe1(struct net_device *dev, int ioaddr) +{ + static unsigned version_printed = 0; + struct net_local *tp; + int err; + struct cardinfo_table *card = NULL; + + if(tms380tr_debug && version_printed++ == 0) + printk(KERN_INFO "%s", version); + +#ifndef MODULE + dev = init_trdev(dev, 0); + if(dev == NULL) + return (-ENOMEM); +#endif + + err = tms380tr_pci_chk_card(dev, &card); + if(err < 0) + { + err = tms380tr_isa_chk_card(dev, ioaddr, &card); + if(err < 0) + return (-ENODEV); + } + + /* Setup this devices private information structure */ + tp = (struct net_local *)kmalloc(sizeof(struct net_local), GFP_KERNEL | GFP_DMA); + if(tp == NULL) + return (-ENOMEM); + memset(tp, 0, sizeof(struct net_local)); + init_waitqueue_head(&tp->wait_for_tok_int); + tp->CardType = card; + + dev->priv = tp; + dev->init = tms380tr_init_card; + dev->open = tms380tr_open; + dev->stop = tms380tr_close; + dev->hard_start_xmit = tms380tr_send_packet; + dev->get_stats = tms380tr_get_stats; + dev->set_multicast_list = &tms380tr_set_multicast_list; + + return (0); +} + +/* Dummy function */ +static int __init tms380tr_init_card(struct net_device *dev) +{ + if(tms380tr_debug > 3) + printk("%s: tms380tr_init_card\n", dev->name); + + return (0); +} + +/* + * This function tests if an adapter is really installed at the + * given I/O address. Return negative if no adapter at IO addr. + */ +static int __init tms380tr_isa_chk_ioaddr(int ioaddr) +{ + unsigned char old, chk1, chk2; + + old = inb(ioaddr + SIFADR); /* Get the old SIFADR value */ + + chk1 = 0; /* Begin with check value 0 */ + do { + /* Write new SIFADR value */ + outb(chk1, ioaddr + SIFADR); + + /* Read, invert and write */ + chk2 = inb(ioaddr + SIFADD); + chk2 ^= 0x0FE; + outb(chk2, ioaddr + SIFADR); + + /* Read, invert and compare */ + chk2 = inb(ioaddr + SIFADD); + chk2 ^= 0x0FE; + + if(chk1 != chk2) + return (-1); /* No adapter */ + + chk1 -= 2; + } while(chk1 != 0); /* Repeat 128 times (all byte values) */ + + /* Restore the SIFADR value */ + outb(old, ioaddr + SIFADR); + + return (0); +} + +/* + * Open/initialize the board. This is called sometime after + * booting when the 'ifconfig' program is run. + * + * This routine should set everything up anew at each open, even + * registers that "should" only need to be set once at boot, so that + * there is non-reboot way to recover if something goes wrong. + */ +static int tms380tr_open(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + int err; + + /* Reset the hardware here. Don't forget to set the station address. */ + err = tms380tr_chipset_init(dev); + if(err) + { + printk(KERN_INFO "%s: Chipset initialization error\n", + dev->name); + return (-1); + } + + init_timer(&tp->timer); + tp->timer.expires = jiffies + 30*HZ; + tp->timer.function = tms380tr_timer_end_wait; + tp->timer.data = (unsigned long)dev; + tp->timer.next = NULL; + tp->timer.prev = NULL; + add_timer(&tp->timer); + + printk(KERN_INFO "%s: Adapter RAM size: %dK\n", + dev->name, tms380tr_read_ptr(dev)); + tms380tr_enable_interrupts(dev); + tms380tr_open_adapter(dev); + + dev->tbusy = 0; + dev->interrupt = 0; + dev->start = 0; + + /* Wait for interrupt from hardware. If interrupt does not come, + * there will be a timeout from the timer. + */ + tp->Sleeping = 1; + interruptible_sleep_on(&tp->wait_for_tok_int); + del_timer(&tp->timer); + + /* If AdapterVirtOpenFlag is 1, the adapter is now open for use */ + if(tp->AdapterVirtOpenFlag == 0) + { + tms380tr_disable_interrupts(dev); + return (-1); + } + + dev->start = 1; + + tp->StartTime = jiffies; + + /* Start function control timer */ + tp->timer.expires = jiffies + 2*HZ; + tp->timer.function = tms380tr_timer_chk; + tp->timer.data = (unsigned long)dev; + add_timer(&tp->timer); + +#ifdef MODULE + MOD_INC_USE_COUNT; +#endif + + return (0); +} + +/* + * Timeout function while waiting for event + */ +static void tms380tr_timer_end_wait(unsigned long data) +{ + struct net_device *dev = (struct net_device*)data; + struct net_local *tp = (struct net_local *)dev->priv; + + if(tp->Sleeping) + { + tp->Sleeping = 0; + wake_up_interruptible(&tp->wait_for_tok_int); + } + + return; +} + +/* + * Initialize the chipset + */ +static int tms380tr_chipset_init(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned char PosReg, Tmp; + int i, err; + + tms380tr_init_ipb(tp); + tms380tr_init_opb(tp); + tms380tr_init_net_local(dev); + + /* Set pos register: selects irq and dma channel. + * Only for ISA bus adapters. + */ + if(dev->dma > 0) + { + PosReg = 0; + for(i = 0; tms380tr_irqlist[i] != 0; i++) + { + if(tms380tr_irqlist[i] == dev->irq) + break; + } + + /* Choose default cycle time, 500 nsec */ + PosReg |= CYCLE_TIME << 2; + PosReg |= i << 4; + i = dev->dma - 5; + PosReg |= i; + + if(tp->DataRate == SPEED_4) + PosReg |= LINE_SPEED_BIT; + else + PosReg &= ~LINE_SPEED_BIT; + + outb(PosReg, dev->base_addr + POSREG); + Tmp = inb(dev->base_addr + POSREG); + if((Tmp & ~CYCLE_TIME) != (PosReg & ~CYCLE_TIME)) + printk(KERN_INFO "%s: POSREG error\n", dev->name); + } + + err = tms380tr_reset_adapter(dev); + if(err < 0) + return (-1); + + err = tms380tr_bringup_diags(dev); + if(err < 0) + return (-1); + + err = tms380tr_init_adapter(dev); + if(err < 0) + return (-1); + + return (0); +} + +/* + * Initializes the net_local structure. + */ +static void tms380tr_init_net_local(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + int i; + + tp->scb.CMD = 0; + tp->scb.Parm[0] = 0; + tp->scb.Parm[1] = 0; + + tp->ssb.STS = 0; + tp->ssb.Parm[0] = 0; + tp->ssb.Parm[1] = 0; + tp->ssb.Parm[2] = 0; + + tp->CMDqueue = 0; + + tp->AdapterOpenFlag = 0; + tp->AdapterVirtOpenFlag = 0; + tp->ScbInUse = 0; + tp->OpenCommandIssued = 0; + tp->ReOpenInProgress = 0; + tp->HaltInProgress = 0; + tp->TransmitHaltScheduled = 0; + tp->LobeWireFaultLogged = 0; + tp->LastOpenStatus = 0; + tp->MaxPacketSize = DEFAULT_PACKET_SIZE; + + skb_queue_head_init(&tp->SendSkbQueue); + tp->QueueSkb = MAX_TX_QUEUE; + + /* Create circular chain of transmit lists */ + for (i = 0; i < TPL_NUM; i++) + { + tp->Tpl[i].NextTPLAddr = htonl((unsigned long) virt_to_bus(&tp->Tpl[(i+1) % TPL_NUM])); + tp->Tpl[i].Status = 0; + tp->Tpl[i].FrameSize = 0; + tp->Tpl[i].FragList[0].DataCount = 0; + tp->Tpl[i].FragList[0].DataAddr = 0; + tp->Tpl[i].NextTPLPtr = &tp->Tpl[(i+1) % TPL_NUM]; + tp->Tpl[i].MData = NULL; + tp->Tpl[i].TPLIndex = i; + tp->Tpl[i].BusyFlag = 0; + } + + tp->TplFree = tp->TplBusy = &tp->Tpl[0]; + + /* Create circular chain of receive lists */ + for (i = 0; i < RPL_NUM; i++) + { + tp->Rpl[i].NextRPLAddr = htonl((unsigned long) virt_to_bus(&tp->Rpl[(i+1) % RPL_NUM])); + tp->Rpl[i].Status = (RX_VALID | RX_START_FRAME | RX_END_FRAME | RX_FRAME_IRQ); + tp->Rpl[i].FrameSize = 0; + tp->Rpl[i].FragList[0].DataCount = SWAPB(tp->MaxPacketSize); + + /* Alloc skb and point adapter to data area */ + tp->Rpl[i].Skb = dev_alloc_skb(tp->MaxPacketSize); + + /* skb == NULL ? then use local buffer */ + if(tp->Rpl[i].Skb == NULL) + { + tp->Rpl[i].SkbStat = SKB_UNAVAILABLE; + tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[i])); + tp->Rpl[i].MData = tp->LocalRxBuffers[i]; + } + else /* SKB != NULL */ + { + tp->Rpl[i].Skb->dev = dev; + skb_put(tp->Rpl[i].Skb, tp->MaxPacketSize); + + /* data unreachable for DMA ? then use local buffer */ + if(tp->CardType->type == TMS_ISA && virt_to_bus(tp->Rpl[i].Skb->data) + tp->MaxPacketSize > ISA_MAX_ADDRESS) + { + tp->Rpl[i].SkbStat = SKB_DATA_COPY; + tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[i])); + tp->Rpl[i].MData = tp->LocalRxBuffers[i]; + } + else /* DMA directly in skb->data */ + { + tp->Rpl[i].SkbStat = SKB_DMA_DIRECT; + tp->Rpl[i].FragList[0].DataAddr = htonl(virt_to_bus(tp->Rpl[i].Skb->data)); + tp->Rpl[i].MData = tp->Rpl[i].Skb->data; + } + } + + tp->Rpl[i].NextRPLPtr = &tp->Rpl[(i+1) % RPL_NUM]; + tp->Rpl[i].RPLIndex = i; + } + + tp->RplHead = &tp->Rpl[0]; + tp->RplTail = &tp->Rpl[RPL_NUM-1]; + tp->RplTail->Status = (RX_START_FRAME | RX_END_FRAME | RX_FRAME_IRQ); + + return; +} + +/* + * Initializes the initialisation parameter block. + */ +static void tms380tr_init_ipb(struct net_local *tp) +{ + tp->ipb.Init_Options = BURST_MODE; + tp->ipb.CMD_Status_IV = 0; + tp->ipb.TX_IV = 0; + tp->ipb.RX_IV = 0; + tp->ipb.Ring_Status_IV = 0; + tp->ipb.SCB_Clear_IV = 0; + tp->ipb.Adapter_CHK_IV = 0; + tp->ipb.RX_Burst_Size = BURST_SIZE; + tp->ipb.TX_Burst_Size = BURST_SIZE; + tp->ipb.DMA_Abort_Thrhld = DMA_RETRIES; + tp->ipb.SCB_Addr = 0; + tp->ipb.SSB_Addr = 0; + + return; +} + +/* + * Initializes the open parameter block. + */ +static void tms380tr_init_opb(struct net_local *tp) +{ + unsigned long Addr; + unsigned short RplSize = RPL_SIZE; + unsigned short TplSize = TPL_SIZE; + unsigned short BufferSize = BUFFER_SIZE; + + tp->ocpl.OPENOptions = 0; + tp->ocpl.OPENOptions |= ENABLE_FULL_DUPLEX_SELECTION; + tp->ocpl.FullDuplex = 0; + tp->ocpl.FullDuplex |= OPEN_FULL_DUPLEX_OFF; + + /* Fixme: If mac address setable: + * for (i=0; i<LENGTH_OF_ADDRESS; i++) + * mac->Vam->ocpl.NodeAddr[i] = mac->CurrentAddress[i]; + */ + + tp->ocpl.GroupAddr = 0; + tp->ocpl.FunctAddr = 0; + tp->ocpl.RxListSize = SWAPB(RplSize); + tp->ocpl.TxListSize = SWAPB(TplSize); + tp->ocpl.BufSize = SWAPB(BufferSize); + tp->ocpl.Reserved = 0; + tp->ocpl.TXBufMin = TX_BUF_MIN; + tp->ocpl.TXBufMax = TX_BUF_MAX; + + Addr = htonl(virt_to_bus(tp->ProductID)); + + tp->ocpl.ProdIDAddr[0] = LOWORD(Addr); + tp->ocpl.ProdIDAddr[1] = HIWORD(Addr); + + return; +} + +/* + * Send OPEN command to adapter + */ +static void tms380tr_open_adapter(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + if(tp->OpenCommandIssued) + return; + + tp->OpenCommandIssued = 1; + tms380tr_exec_cmd(dev, OC_OPEN); + + return; +} + +/* + * Clear the adapter's interrupt flag. Clear system interrupt enable + * (SINTEN): disable adapter to system interrupts. + */ +static void tms380tr_disable_interrupts(struct net_device *dev) +{ + outb(0, dev->base_addr + SIFACL); + + return; +} + +/* + * Set the adapter's interrupt flag. Set system interrupt enable + * (SINTEN): enable adapter to system interrupts. + */ +static void tms380tr_enable_interrupts(struct net_device *dev) +{ + outb(ACL_SINTEN, dev->base_addr + SIFACL); + + return; +} + +/* + * Put command in command queue, try to execute it. + */ +static void tms380tr_exec_cmd(struct net_device *dev, unsigned short Command) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + tp->CMDqueue |= Command; + tms380tr_chk_outstanding_cmds(dev); + + return; +} + +/* + * Gets skb from system, queues it and checks if it can be sent + */ +static int tms380tr_send_packet(struct sk_buff *skb, struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + if(dev->tbusy) + { + /* + * If we get here, some higher level has decided we are broken. + * There should really be a "kick me" function call instead. + * + * Resetting the token ring adapter takes a long time so just + * fake transmission time and go on trying. Our own timeout + * routine is in tms380tr_timer_chk() + */ + dev->tbusy = 0; + dev->trans_start = jiffies; + return (1); + } + + /* + * If some higher layer thinks we've missed an tx-done interrupt we + * are passed NULL. + */ + if(skb == NULL) + return (0); + + /* + * Block a timer-based transmit from overlapping. This could better be + * done with atomic_swap(1, dev->tbusy), but set_bit() works as well. + */ + if(test_and_set_bit(0, (void*)&dev->tbusy) != 0) + { + printk("%s: Transmitter access conflict.\n", dev->name); + return (1); + } + + if(tp->QueueSkb == 0) + return (1); /* Return with tbusy set: queue full */ + + tp->QueueSkb--; + skb_queue_tail(&tp->SendSkbQueue, skb); + tms380tr_hardware_send_packet(dev, tp); + if(tp->QueueSkb > 0) + dev->tbusy = 0; + + return (0); +} + +/* + * Move frames from internal skb queue into adapter tx queue + */ +static void tms380tr_hardware_send_packet(struct net_device *dev, struct net_local* tp) +{ + TPL *tpl; + short length; + unsigned char *buf, *newbuf; + struct sk_buff *skb; + int i; + + for(;;) + { + /* Try to get a free TPL from the chain. + * + * NOTE: We *must* always leave one unused TPL in the chain, + * because otherwise the adapter might send frames twice. + */ + if(tp->TplFree->NextTPLPtr->BusyFlag) /* No free TPL */ + { + if (tms380tr_debug > 0) + printk(KERN_INFO "%s: No free TPL\n", dev->name); + return; + } + + /* Send first buffer from queue */ + skb = skb_dequeue(&tp->SendSkbQueue); + if(skb == NULL) + return; + + tp->QueueSkb++; + /* Is buffer reachable for Busmaster-DMA? */ + if(tp->CardType->type == TMS_ISA && virt_to_bus((void*)(((long) skb->data) + skb->len)) + > ISA_MAX_ADDRESS) + { + /* Copy frame to local buffer */ + i = tp->TplFree->TPLIndex; + length = skb->len; + buf = tp->LocalTxBuffers[i]; + memcpy(buf, skb->data, length); + newbuf = buf; + } + else + { + /* Send direct from skb->data */ + length = skb->len; + newbuf = skb->data; + } + + /* Source address in packet? */ + tms380tr_chk_src_addr(newbuf, dev->dev_addr); + + tp->LastSendTime = jiffies; + tpl = tp->TplFree; /* Get the "free" TPL */ + tpl->BusyFlag = 1; /* Mark TPL as busy */ + tp->TplFree = tpl->NextTPLPtr; + + /* Save the skb for delayed return of skb to system */ + tpl->Skb = skb; + tpl->FragList[0].DataCount = (unsigned short) SWAPB(length); + tpl->FragList[0].DataAddr = htonl(virt_to_bus(newbuf)); + + /* Write the data length in the transmit list. */ + tpl->FrameSize = (unsigned short) SWAPB(length); + tpl->MData = newbuf; + + /* Transmit the frame and set the status values. */ + tms380tr_write_tpl_status(tpl, TX_VALID | TX_START_FRAME + | TX_END_FRAME | TX_PASS_SRC_ADDR + | TX_FRAME_IRQ); + + /* Let adapter send the frame. */ + tms380tr_exec_sifcmd(dev, CMD_TX_VALID); + } + + return; +} + +/* + * Write the given value to the 'Status' field of the specified TPL. + * NOTE: This function should be used whenever the status of any TPL must be + * modified by the driver, because the compiler may otherwise change the + * order of instructions such that writing the TPL status may be executed at + * an undesireable time. When this function is used, the status is always + * written when the function is called. + */ +static void tms380tr_write_tpl_status(TPL *tpl, unsigned int Status) +{ + tpl->Status = Status; +} + +static void tms380tr_chk_src_addr(unsigned char *frame, unsigned char *hw_addr) +{ + unsigned char SRBit; + + if((((unsigned long)frame[8]) & ~0x80) != 0) /* Compare 4 bytes */ + return; + if((unsigned short)frame[12] != 0) /* Compare 2 bytes */ + return; + + SRBit = frame[8] & 0x80; + memcpy(&frame[8], hw_addr, 6); + frame[8] |= SRBit; + + return; +} + +/* + * The timer routine: Check if adapter still open and working, reopen if not. + */ +static void tms380tr_timer_chk(unsigned long data) +{ + struct net_device *dev = (struct net_device*)data; + struct net_local *tp = (struct net_local*)dev->priv; + + if(tp->HaltInProgress) + return; + + tms380tr_chk_outstanding_cmds(dev); + if(time_before(tp->LastSendTime + SEND_TIMEOUT, jiffies) + && (tp->QueueSkb < MAX_TX_QUEUE || tp->TplFree != tp->TplBusy)) + { + /* Anything to send, but stalled to long */ + tp->LastSendTime = jiffies; + tms380tr_exec_cmd(dev, OC_CLOSE); /* Does reopen automatically */ + } + + tp->timer.expires = jiffies + 2*HZ; + add_timer(&tp->timer); + + if(tp->AdapterOpenFlag || tp->ReOpenInProgress) + return; + tp->ReOpenInProgress = 1; + tms380tr_open_adapter(dev); + + return; +} + +/* + * The typical workload of the driver: Handle the network interface interrupts. + */ +static void tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + struct net_device *dev = dev_id; + struct net_local *tp; + int ioaddr; + unsigned short irq_type; + + if(dev == NULL) + { + printk("%s: irq %d for unknown device.\n", dev->name, irq); + return; + } + + dev->interrupt = 1; + + ioaddr = dev->base_addr; + tp = (struct net_local *)dev->priv; + + irq_type = inw(ioaddr + SIFSTS); + + while(irq_type & STS_SYSTEM_IRQ) + { + irq_type &= STS_IRQ_MASK; + + if(!tms380tr_chk_ssb(tp, irq_type)) + { + printk(KERN_INFO "%s: DATA LATE occurred\n", dev->name); + break; + } + + switch(irq_type) + { + case STS_IRQ_RECEIVE_STATUS: + tms380tr_reset_interrupt(dev); + tms380tr_rcv_status_irq(dev); + break; + + case STS_IRQ_TRANSMIT_STATUS: + /* Check if TRANSMIT.HALT command is complete */ + if(tp->ssb.Parm[0] & COMMAND_COMPLETE) + { + tp->TransmitCommandActive = 0; + tp->TransmitHaltScheduled = 0; + + /* Issue a new transmit command. */ + tms380tr_exec_cmd(dev, OC_TRANSMIT); + } + + tms380tr_reset_interrupt(dev); + tms380tr_tx_status_irq(dev); + break; + + case STS_IRQ_COMMAND_STATUS: + /* The SSB contains status of last command + * other than receive/transmit. + */ + tms380tr_cmd_status_irq(dev); + break; + + case STS_IRQ_SCB_CLEAR: + /* The SCB is free for another command. */ + tp->ScbInUse = 0; + tms380tr_chk_outstanding_cmds(dev); + break; + + case STS_IRQ_RING_STATUS: + tms380tr_ring_status_irq(dev); + break; + + case STS_IRQ_ADAPTER_CHECK: + tms380tr_chk_irq(dev); + break; + + default: + printk(KERN_INFO "Unknown Token Ring IRQ\n"); + break; + } + + /* Reset system interrupt if not already done. */ + if(irq_type != STS_IRQ_TRANSMIT_STATUS + && irq_type != STS_IRQ_RECEIVE_STATUS) + { + tms380tr_reset_interrupt(dev); + } + + irq_type = inw(ioaddr + SIFSTS); + } + + dev->interrupt = 0; + + return; +} + +/* + * Reset the INTERRUPT SYSTEM bit and issue SSB CLEAR command. + */ +static void tms380tr_reset_interrupt(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + SSB *ssb = &tp->ssb; + + /* + * [Workaround for "Data Late"] + * Set all fields of the SSB to well-defined values so we can + * check if the adapter has written the SSB. + */ + + ssb->STS = (unsigned short) -1; + ssb->Parm[0] = (unsigned short) -1; + ssb->Parm[1] = (unsigned short) -1; + ssb->Parm[2] = (unsigned short) -1; + + /* Free SSB by issuing SSB_CLEAR command after reading IRQ code + * and clear STS_SYSTEM_IRQ bit: enable adapter for further interrupts. + */ + tms380tr_exec_sifcmd(dev, CMD_SSB_CLEAR | CMD_CLEAR_SYSTEM_IRQ); + + return; +} + +/* + * Check if the SSB has actually been written by the adapter. + */ +static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqType) +{ + SSB *ssb = &tp->ssb; /* The address of the SSB. */ + + /* C 0 1 2 INTERRUPT CODE + * - - - - -------------- + * 1 1 1 1 TRANSMIT STATUS + * 1 1 1 1 RECEIVE STATUS + * 1 ? ? 0 COMMAND STATUS + * 0 0 0 0 SCB CLEAR + * 1 1 0 0 RING STATUS + * 0 0 0 0 ADAPTER CHECK + * + * 0 = SSB field not affected by interrupt + * 1 = SSB field is affected by interrupt + * + * C = SSB ADDRESS +0: COMMAND + * 0 = SSB ADDRESS +2: STATUS 0 + * 1 = SSB ADDRESS +4: STATUS 1 + * 2 = SSB ADDRESS +6: STATUS 2 + */ + + /* Check if this interrupt does use the SSB. */ + + if(IrqType != STS_IRQ_TRANSMIT_STATUS + && IrqType != STS_IRQ_RECEIVE_STATUS + && IrqType != STS_IRQ_COMMAND_STATUS + && IrqType != STS_IRQ_RING_STATUS) + { + return (1); /* SSB not involved. */ + } + + /* Note: All fields of the SSB have been set to all ones (-1) after it + * has last been used by the software (see DriverIsr()). + * + * Check if the affected SSB fields are still unchanged. + */ + + if(ssb->STS == (unsigned short) -1) + return (0); /* Command field not yet available. */ + if(IrqType == STS_IRQ_COMMAND_STATUS) + return (1); /* Status fields not always affected. */ + if(ssb->Parm[0] == (unsigned short) -1) + return (0); /* Status 1 field not yet available. */ + if(IrqType == STS_IRQ_RING_STATUS) + return (1); /* Status 2 & 3 fields not affected. */ + + /* Note: At this point, the interrupt is either TRANSMIT or RECEIVE. */ + if(ssb->Parm[1] == (unsigned short) -1) + return (0); /* Status 2 field not yet available. */ + if(ssb->Parm[2] == (unsigned short) -1) + return (0); /* Status 3 field not yet available. */ + + return (1); /* All SSB fields have been written by the adapter. */ +} + +/* + * Evaluates the command results status in the SSB status field. + */ +static void tms380tr_cmd_status_irq(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned short ssb_cmd, ssb_parm_0; + unsigned short ssb_parm_1; + char *open_err = "Open error -"; + char *code_err = "Open code -"; + + /* Copy the ssb values to local variables */ + ssb_cmd = tp->ssb.STS; + ssb_parm_0 = tp->ssb.Parm[0]; + ssb_parm_1 = tp->ssb.Parm[1]; + + if(ssb_cmd == OPEN) + { + tp->Sleeping = 0; + if(!tp->ReOpenInProgress) + wake_up_interruptible(&tp->wait_for_tok_int); + + tp->OpenCommandIssued = 0; + tp->ScbInUse = 0; + + if((ssb_parm_0 & 0x00FF) == GOOD_COMPLETION) + { + /* Success, the adapter is open. */ + tp->LobeWireFaultLogged = 0; + tp->AdapterOpenFlag = 1; + tp->AdapterVirtOpenFlag = 1; + tp->TransmitCommandActive = 0; + tms380tr_exec_cmd(dev, OC_TRANSMIT); + tms380tr_exec_cmd(dev, OC_RECEIVE); + + if(tp->ReOpenInProgress) + tp->ReOpenInProgress = 0; + + return; + } + else /* The adapter did not open. */ + { + if(ssb_parm_0 & NODE_ADDR_ERROR) + printk(KERN_INFO "%s: Node address error\n", + dev->name); + if(ssb_parm_0 & LIST_SIZE_ERROR) + printk(KERN_INFO "%s: List size error\n", + dev->name); + if(ssb_parm_0 & BUF_SIZE_ERROR) + printk(KERN_INFO "%s: Buffer size error\n", + dev->name); + if(ssb_parm_0 & TX_BUF_COUNT_ERROR) + printk(KERN_INFO "%s: Tx buffer count error\n", + dev->name); + if(ssb_parm_0 & INVALID_OPEN_OPTION) + printk(KERN_INFO "%s: Invalid open option\n", + dev->name); + if(ssb_parm_0 & OPEN_ERROR) + { + /* Show the open phase. */ + switch(ssb_parm_0 & OPEN_PHASES_MASK) + { + case LOBE_MEDIA_TEST: + if(!tp->LobeWireFaultLogged) + { + tp->LobeWireFaultLogged = 1; + printk(KERN_INFO "%s: %s Lobe wire fault (check cable !).\n", dev->name, open_err); + } + tp->ReOpenInProgress = 1; + tp->AdapterOpenFlag = 0; + tp->AdapterVirtOpenFlag = 1; + tms380tr_open_adapter(dev); + return; + + case PHYSICAL_INSERTION: + printk(KERN_INFO "%s: %s Physical insertion.\n", dev->name, open_err); + break; + + case ADDRESS_VERIFICATION: + printk(KERN_INFO "%s: %s Address verification.\n", dev->name, open_err); + break; + + case PARTICIPATION_IN_RING_POLL: + printk(KERN_INFO "%s: %s Participation in ring poll.\n", dev->name, open_err); + break; + + case REQUEST_INITIALISATION: + printk(KERN_INFO "%s: %s Request initialisation.\n", dev->name, open_err); + break; + + case FULLDUPLEX_CHECK: + printk(KERN_INFO "%s: %s Full duplex check.\n", dev->name, open_err); + break; + + default: + printk(KERN_INFO "%s: %s Unknown open phase\n", dev->name, open_err); + break; + } + + /* Show the open errors. */ + switch(ssb_parm_0 & OPEN_ERROR_CODES_MASK) + { + case OPEN_FUNCTION_FAILURE: + printk(KERN_INFO "%s: %s OPEN_FUNCTION_FAILURE", dev->name, code_err); + tp->LastOpenStatus = + OPEN_FUNCTION_FAILURE; + break; + + case OPEN_SIGNAL_LOSS: + printk(KERN_INFO "%s: %s OPEN_SIGNAL_LOSS\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_SIGNAL_LOSS; + break; + + case OPEN_TIMEOUT: + printk(KERN_INFO "%s: %s OPEN_TIMEOUT\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_TIMEOUT; + break; + + case OPEN_RING_FAILURE: + printk(KERN_INFO "%s: %s OPEN_RING_FAILURE\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_RING_FAILURE; + break; + + case OPEN_RING_BEACONING: + printk(KERN_INFO "%s: %s OPEN_RING_BEACONING\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_RING_BEACONING; + break; + + case OPEN_DUPLICATE_NODEADDR: + printk(KERN_INFO "%s: %s OPEN_DUPLICATE_NODEADDR\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_DUPLICATE_NODEADDR; + break; + + case OPEN_REQUEST_INIT: + printk(KERN_INFO "%s: %s OPEN_REQUEST_INIT\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_REQUEST_INIT; + break; + + case OPEN_REMOVE_RECEIVED: + printk(KERN_INFO "%s: %s OPEN_REMOVE_RECEIVED", dev->name, code_err); + tp->LastOpenStatus = + OPEN_REMOVE_RECEIVED; + break; + + case OPEN_FULLDUPLEX_SET: + printk(KERN_INFO "%s: %s OPEN_FULLDUPLEX_SET\n", dev->name, code_err); + tp->LastOpenStatus = + OPEN_FULLDUPLEX_SET; + break; + + default: + printk(KERN_INFO "%s: %s Unknown open err code", dev->name, code_err); + tp->LastOpenStatus = + OPEN_FUNCTION_FAILURE; + break; + } + } + + tp->AdapterOpenFlag = 0; + tp->AdapterVirtOpenFlag = 0; + + return; + } + } + else + { + if(ssb_cmd != READ_ERROR_LOG) + return; + + /* Add values from the error log table to the MAC + * statistics counters and update the errorlogtable + * memory. + */ + tp->MacStat.line_errors += tp->errorlogtable.Line_Error; + tp->MacStat.burst_errors += tp->errorlogtable.Burst_Error; + tp->MacStat.A_C_errors += tp->errorlogtable.ARI_FCI_Error; + tp->MacStat.lost_frames += tp->errorlogtable.Lost_Frame_Error; + tp->MacStat.recv_congest_count += tp->errorlogtable.Rx_Congest_Error; + tp->MacStat.rx_errors += tp->errorlogtable.Rx_Congest_Error; + tp->MacStat.frame_copied_errors += tp->errorlogtable.Frame_Copied_Error; + tp->MacStat.token_errors += tp->errorlogtable.Token_Error; + tp->MacStat.dummy1 += tp->errorlogtable.DMA_Bus_Error; + tp->MacStat.dummy1 += tp->errorlogtable.DMA_Parity_Error; + tp->MacStat.abort_delimiters += tp->errorlogtable.AbortDelimeters; + tp->MacStat.frequency_errors += tp->errorlogtable.Frequency_Error; + tp->MacStat.internal_errors += tp->errorlogtable.Internal_Error; + } + + return; +} + +/* + * The inverse routine to tms380tr_open(). + */ +static int tms380tr_close(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + dev->tbusy = 1; + dev->start = 0; + + del_timer(&tp->timer); + + /* Flush the Tx and disable Rx here. */ + + tp->HaltInProgress = 1; + tms380tr_exec_cmd(dev, OC_CLOSE); + tp->timer.expires = jiffies + 1*HZ; + tp->timer.function = tms380tr_timer_end_wait; + tp->timer.data = (unsigned long)dev; + add_timer(&tp->timer); + + tms380tr_enable_interrupts(dev); + + tp->Sleeping = 1; + interruptible_sleep_on(&tp->wait_for_tok_int); + tp->TransmitCommandActive = 0; + + del_timer(&tp->timer); + tms380tr_disable_interrupts(dev); + + if(dev->dma > 0) + { + unsigned long flags=claim_dma_lock(); + disable_dma(dev->dma); + release_dma_lock(flags); + } + + outw(0xFF00, dev->base_addr + SIFCMD); + if(dev->dma > 0) + outb(0xff, dev->base_addr + POSREG); + +#ifdef MODULE + MOD_DEC_USE_COUNT; +#endif + + tms380tr_cancel_tx_queue(tp); + + return (0); +} + +/* + * Get the current statistics. This may be called with the card open + * or closed. + */ +static struct enet_statistics *tms380tr_get_stats(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + return ((struct enet_statistics *)&tp->MacStat); +} + +/* + * Set or clear the multicast filter for this adapter. + */ +static void tms380tr_set_multicast_list(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned int OpenOptions; + + OpenOptions = tp->ocpl.OPENOptions & + ~(PASS_ADAPTER_MAC_FRAMES + | PASS_ATTENTION_FRAMES + | PASS_BEACON_MAC_FRAMES + | COPY_ALL_MAC_FRAMES + | COPY_ALL_NON_MAC_FRAMES); + + tp->ocpl.FunctAddr = 0; + + if(dev->flags & IFF_PROMISC) + /* Enable promiscuous mode */ + OpenOptions |= COPY_ALL_NON_MAC_FRAMES | + COPY_ALL_MAC_FRAMES; + else + { + if(dev->flags & IFF_ALLMULTI) + { + /* Disable promiscuous mode, use normal mode. */ + tp->ocpl.FunctAddr = 0xFFFFFFFF; + + } + else + { + int i; + struct dev_mc_list *mclist = dev->mc_list; + for (i=0; i< dev->mc_count; i++) + { + ((char *)(&tp->ocpl.FunctAddr))[0] |= + mclist->dmi_addr[2]; + ((char *)(&tp->ocpl.FunctAddr))[1] |= + mclist->dmi_addr[3]; + ((char *)(&tp->ocpl.FunctAddr))[2] |= + mclist->dmi_addr[4]; + ((char *)(&tp->ocpl.FunctAddr))[3] |= + mclist->dmi_addr[5]; + mclist = mclist->next; + } + } + tms380tr_exec_cmd(dev, OC_SET_FUNCT_ADDR); + } + + tp->ocpl.OPENOptions = OpenOptions; + tms380tr_exec_cmd(dev, OC_MODIFY_OPEN_PARMS); + return; +} + +/* + * Wait for some time (microseconds) + */ +static void tms380tr_wait(unsigned long time) +{ +#if 0 + long tmp; + + tmp = jiffies + time/(1000000/HZ); + do { + current->state = TASK_INTERRUPTIBLE; + tmp = schedule_timeout(tmp); + } while(time_after(tmp, jiffies)); +#else + udelay(time); +#endif + return; +} + +/* + * Write a command value to the SIFCMD register + */ +static void tms380tr_exec_sifcmd(struct net_device *dev, unsigned int WriteValue) +{ + int ioaddr = dev->base_addr; + unsigned short cmd; + unsigned short SifStsValue; + unsigned long loop_counter; + + WriteValue = ((WriteValue ^ CMD_SYSTEM_IRQ) | CMD_INTERRUPT_ADAPTER); + cmd = (unsigned short)WriteValue; + loop_counter = 0,5 * 800000; + do { + SifStsValue = inw(ioaddr + SIFSTS); + } while((SifStsValue & CMD_INTERRUPT_ADAPTER) && loop_counter--); + outw(cmd, ioaddr + SIFCMD); + + return; +} + +/* + * Processes adapter hardware reset, halts adapter and downloads firmware, + * clears the halt bit. + */ +static int tms380tr_reset_adapter(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned short *fw_ptr = (unsigned short *)&tms380tr_code; + unsigned short count, c; + int ioaddr = dev->base_addr; + + /* Hardware adapter reset */ + outw(ACL_ARESET, ioaddr + SIFACL); + tms380tr_wait(40); + + c = inw(ioaddr + SIFACL); + tms380tr_wait(20); + + if(dev->dma == 0) /* For PCI adapters */ + { + c &= ~(ACL_SPEED4 | ACL_SPEED16); /* Clear bits */ + if(tp->DataRate == SPEED_4) + c |= ACL_SPEED4; /* Set 4Mbps */ + else + c |= ACL_SPEED16; /* Set 16Mbps */ + } + + /* In case a command is pending - forget it */ + tp->ScbInUse = 0; + + c &= ~ACL_ARESET; /* Clear adapter reset bit */ + c |= ACL_CPHALT; /* Halt adapter CPU, allow download */ + c &= ~ACL_PSDMAEN; /* Clear pseudo dma bit */ + outw(c, ioaddr + SIFACL); + tms380tr_wait(40); + + /* Download firmware via DIO interface: */ + do { + /* Download first address part */ + outw(*fw_ptr, ioaddr + SIFADX); + fw_ptr++; + + /* Download second address part */ + outw(*fw_ptr, ioaddr + SIFADD); + fw_ptr++; + + if((count = *fw_ptr) != 0) /* Load loop counter */ + { + fw_ptr++; /* Download block data */ + for(; count > 0; count--) + { + outw(*fw_ptr, ioaddr + SIFINC); + fw_ptr++; + } + } + else /* Stop, if last block downloaded */ + { + c = inw(ioaddr + SIFACL); + c &= (~ACL_CPHALT | ACL_SINTEN); + + /* Clear CPHALT and start BUD */ + outw(c, ioaddr + SIFACL); + return (1); + } + } while(count == 0); + + return (-1); +} + +/* + * Starts bring up diagnostics of token ring adapter and evaluates + * diagnostic results. + */ +static int tms380tr_bringup_diags(struct net_device *dev) +{ + int loop_cnt, retry_cnt; + unsigned short Status; + int ioaddr = dev->base_addr; + + tms380tr_wait(HALF_SECOND); + tms380tr_exec_sifcmd(dev, EXEC_SOFT_RESET); + tms380tr_wait(HALF_SECOND); + + retry_cnt = BUD_MAX_RETRIES; /* maximal number of retrys */ + + do { + retry_cnt--; + if(tms380tr_debug > 3) + printk(KERN_INFO "BUD-Status: "); + loop_cnt = BUD_MAX_LOOPCNT; /* maximum: three seconds*/ + do { /* Inspect BUD results */ + loop_cnt--; + tms380tr_wait(HALF_SECOND); + Status = inw(ioaddr + SIFSTS); + Status &= STS_MASK; + + if(tms380tr_debug > 3) + printk(KERN_INFO " %04X \n", Status); + /* BUD successfully completed */ + if(Status == STS_INITIALIZE) + return (1); + /* Unrecoverable hardware error, BUD not completed? */ + } while((loop_cnt > 0) && ((Status & (STS_ERROR | STS_TEST)) + != (STS_ERROR | STS_TEST))); + + /* Error preventing completion of BUD */ + if(retry_cnt > 0) + { + printk(KERN_INFO "%s: Adapter Software Reset.\n", + dev->name); + tms380tr_exec_sifcmd(dev, EXEC_SOFT_RESET); + tms380tr_wait(HALF_SECOND); + } + } while(retry_cnt > 0); + + Status = inw(ioaddr + SIFSTS); + Status &= STS_ERROR_MASK; /* Hardware error occurred! */ + + printk(KERN_INFO "%s: Bring Up Diagnostics Error (%04X) occurred\n", + dev->name, Status); + + return (-1); +} + +/* + * Copy initialisation data to adapter memory, beginning at address + * 1:0A00; Starting DMA test and evaluating result bits. + */ +static int tms380tr_init_adapter(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + const unsigned char SCB_Test[6] = {0x00, 0x00, 0xC1, 0xE2, 0xD4, 0x8B}; + const unsigned char SSB_Test[8] = {0xFF, 0xFF, 0xD1, 0xD7, + 0xC5, 0xD9, 0xC3, 0xD4}; + void *ptr = (void *)&tp->ipb; + unsigned short *ipb_ptr = (unsigned short *)ptr; + unsigned char *cb_ptr = (unsigned char *) &tp->scb; + unsigned char *sb_ptr = (unsigned char *) &tp->ssb; + unsigned short Status; + int i, loop_cnt, retry_cnt; + int ioaddr = dev->base_addr; + + /* Normalize: byte order low/high, word order high/low! (only IPB!) */ + tp->ipb.SCB_Addr = SWAPW(virt_to_bus(&tp->scb)); + tp->ipb.SSB_Addr = SWAPW(virt_to_bus(&tp->ssb)); + + /* Maximum: three initialization retries */ + retry_cnt = INIT_MAX_RETRIES; + + do { + retry_cnt--; + + /* Transfer initialization block */ + outw(0x0001, ioaddr + SIFADX); + + /* To address 0001:0A00 of adapter RAM */ + outw(0x0A00, ioaddr + SIFADD); + + /* Write 11 words to adapter RAM */ + for(i = 0; i < 11; i++) + outw(ipb_ptr[i], ioaddr + SIFINC); + + /* Execute SCB adapter command */ + tms380tr_exec_sifcmd(dev, CMD_EXECUTE); + + loop_cnt = INIT_MAX_LOOPCNT; /* Maximum: 11 seconds */ + + /* While remaining retries, no error and not completed */ + do { + Status = 0; + loop_cnt--; + tms380tr_wait(HALF_SECOND); + + /* Mask interesting status bits */ + Status = inw(ioaddr + SIFSTS); + Status &= STS_MASK; + } while(((Status &(STS_INITIALIZE | STS_ERROR | STS_TEST)) != 0) + && ((Status & STS_ERROR) == 0) && (loop_cnt != 0)); + + if((Status & (STS_INITIALIZE | STS_ERROR | STS_TEST)) == 0) + { + /* Initialization completed without error */ + i = 0; + do { /* Test if contents of SCB is valid */ + if(SCB_Test[i] != *(cb_ptr + i)) + /* DMA data error: wrong data in SCB */ + return (-1); + i++; + } while(i < 6); + + i = 0; + do { /* Test if contents of SSB is valid */ + if(SSB_Test[i] != *(sb_ptr + i)) + /* DMA data error: wrong data in SSB */ + return (-1); + i++; + } while (i < 8); + + return (1); /* Adapter successfully initialized */ + } + else + { + if((Status & STS_ERROR) != 0) + { + /* Initialization error occurred */ + Status = inw(ioaddr + SIFSTS); + Status &= STS_ERROR_MASK; + /* ShowInitialisationErrorCode(Status); */ + return (-1); /* Unrecoverable error */ + } + else + { + if(retry_cnt > 0) + { + /* Reset adapter and try init again */ + tms380tr_exec_sifcmd(dev, EXEC_SOFT_RESET); + tms380tr_wait(HALF_SECOND); + } + } + } + } while(retry_cnt > 0); + + return (-1); +} + +/* + * Check for outstanding commands in command queue and tries to execute + * command immediately. Corresponding command flag in command queue is cleared. + */ +static void tms380tr_chk_outstanding_cmds(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned long Addr = 0; + unsigned char i = 0; + + if(tp->CMDqueue == 0) + return; /* No command execution */ + + /* If SCB in use: no command */ + if(tp->ScbInUse == 1) + return; + + /* Check if adapter is opened, avoiding COMMAND_REJECT + * interrupt by the adapter! + */ + if(tp->AdapterOpenFlag == 0) + { + if(tp->CMDqueue & OC_OPEN) + { + /* Execute OPEN command */ + tp->CMDqueue ^= OC_OPEN; + + /* Copy the 18 bytes of the product ID */ + while((tp->CardType->name[i] != '\0') + && (i < PROD_ID_SIZE)) + { + tp->ProductID[i] = tp->CardType->name[i]; + i++; + } + + Addr = htonl(virt_to_bus(&tp->ocpl)); + tp->scb.Parm[0] = LOWORD(Addr); + tp->scb.Parm[1] = HIWORD(Addr); + tp->scb.CMD = OPEN; + } + else + /* No OPEN command queued, but adapter closed. Note: + * We'll try to re-open the adapter in DriverPoll() + */ + return; /* No adapter command issued */ + } + else + { + /* Adapter is open; evaluate command queue: try to execute + * outstanding commands (depending on priority!) CLOSE + * command queued + */ + if(tp->CMDqueue & OC_CLOSE) + { + tp->CMDqueue ^= OC_CLOSE; + tp->AdapterOpenFlag = 0; + tp->scb.Parm[0] = 0; /* Parm[0], Parm[1] are ignored */ + tp->scb.Parm[1] = 0; /* but should be set to zero! */ + tp->scb.CMD = CLOSE; + if(!tp->HaltInProgress) + tp->CMDqueue |= OC_OPEN; /* re-open adapter */ + else + tp->CMDqueue = 0; /* no more commands */ + } + else + { + if(tp->CMDqueue & OC_RECEIVE) + { + tp->CMDqueue ^= OC_RECEIVE; + Addr = htonl(virt_to_bus(tp->RplHead)); + tp->scb.Parm[0] = LOWORD(Addr); + tp->scb.Parm[1] = HIWORD(Addr); + tp->scb.CMD = RECEIVE; + } + else + { + if(tp->CMDqueue & OC_TRANSMIT_HALT) + { + /* NOTE: TRANSMIT.HALT must be checked + * before TRANSMIT. + */ + tp->CMDqueue ^= OC_TRANSMIT_HALT; + tp->scb.CMD = TRANSMIT_HALT; + + /* Parm[0] and Parm[1] are ignored + * but should be set to zero! + */ + tp->scb.Parm[0] = 0; + tp->scb.Parm[1] = 0; + } + else + { + if(tp->CMDqueue & OC_TRANSMIT) + { + /* NOTE: TRANSMIT must be + * checked after TRANSMIT.HALT + */ + if(tp->TransmitCommandActive) + { + if(!tp->TransmitHaltScheduled) + { + tp->TransmitHaltScheduled = 1; + tms380tr_exec_cmd(dev, OC_TRANSMIT_HALT) ; + } + tp->TransmitCommandActive = 0; + return; + } + + tp->CMDqueue ^= OC_TRANSMIT; + tms380tr_cancel_tx_queue(tp); + Addr = htonl(virt_to_bus(tp->TplBusy)); + tp->scb.Parm[0] = LOWORD(Addr); + tp->scb.Parm[1] = HIWORD(Addr); + tp->scb.CMD = TRANSMIT; + tp->TransmitCommandActive = 1; + } + else + { + if(tp->CMDqueue & OC_MODIFY_OPEN_PARMS) + { + tp->CMDqueue ^= OC_MODIFY_OPEN_PARMS; + tp->scb.Parm[0] = tp->ocpl.OPENOptions; /* new OPEN options*/ + tp->scb.Parm[0] |= ENABLE_FULL_DUPLEX_SELECTION; + tp->scb.Parm[1] = 0; /* is ignored but should be zero */ + tp->scb.CMD = MODIFY_OPEN_PARMS; + } + else + { + if(tp->CMDqueue & OC_SET_FUNCT_ADDR) + { + tp->CMDqueue ^= OC_SET_FUNCT_ADDR; + tp->scb.Parm[0] = LOWORD(tp->ocpl.FunctAddr); + tp->scb.Parm[1] = HIWORD(tp->ocpl.FunctAddr); + tp->scb.CMD = SET_FUNCT_ADDR; + } + else + { + if(tp->CMDqueue & OC_SET_GROUP_ADDR) + { + tp->CMDqueue ^= OC_SET_GROUP_ADDR; + tp->scb.Parm[0] = LOWORD(tp->ocpl.GroupAddr); + tp->scb.Parm[1] = HIWORD(tp->ocpl.GroupAddr); + tp->scb.CMD = SET_GROUP_ADDR; + } + else + { + if(tp->CMDqueue & OC_READ_ERROR_LOG) + { + tp->CMDqueue ^= OC_READ_ERROR_LOG; + Addr = htonl(virt_to_bus(&tp->errorlogtable)); + tp->scb.Parm[0] = LOWORD(Addr); + tp->scb.Parm[1] = HIWORD(Addr); + tp->scb.CMD = READ_ERROR_LOG; + } + else + { + printk(KERN_WARNING "CheckForOutstandingCommand: unknown Command\n"); + tp->CMDqueue = 0; + return; + } + } + } + } + } + } + } + } + } + + tp->ScbInUse = 1; /* Set semaphore: SCB in use. */ + + /* Execute SCB and generate IRQ when done. */ + tms380tr_exec_sifcmd(dev, CMD_EXECUTE | CMD_SCB_REQUEST); + + return; +} + +/* + * IRQ conditions: signal loss on the ring, transmit or receive of beacon + * frames (disabled if bit 1 of OPEN option is set); report error MAC + * frame transmit (disabled if bit 2 of OPEN option is set); open or short + * circuit fault on the lobe is detected; remove MAC frame received; + * error counter overflow (255); opened adapter is the only station in ring. + * After some of the IRQs the adapter is closed! + */ +static void tms380tr_ring_status_irq(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + + tp->CurrentRingStatus = SWAPB(tp->ssb.Parm[0]); + + /* First: fill up statistics */ + if(tp->ssb.Parm[0] & SIGNAL_LOSS) + { + printk(KERN_INFO "%s: Signal Loss\n", dev->name); + tp->MacStat.line_errors++; + } + + /* Adapter is closed, but initialized */ + if(tp->ssb.Parm[0] & LOBE_WIRE_FAULT) + { + printk(KERN_INFO "%s: Lobe Wire Fault, Reopen Adapter\n", + dev->name); + tp->MacStat.line_errors++; + } + + if(tp->ssb.Parm[0] & RING_RECOVERY) + printk(KERN_INFO "%s: Ring Recovery\n", dev->name); + + /* Counter overflow: read error log */ + if(tp->ssb.Parm[0] & COUNTER_OVERFLOW) + { + printk(KERN_INFO "%s: Counter Overflow\n", dev->name); + tms380tr_exec_cmd(dev, OC_READ_ERROR_LOG); + } + + /* Adapter is closed, but initialized */ + if(tp->ssb.Parm[0] & REMOVE_RECEIVED) + printk(KERN_INFO "%s: Remove Received, Reopen Adapter\n", + dev->name); + + /* Adapter is closed, but initialized */ + if(tp->ssb.Parm[0] & AUTO_REMOVAL_ERROR) + printk(KERN_INFO "%s: Auto Removal Error, Reopen Adapter\n", + dev->name); + + if(tp->ssb.Parm[0] & HARD_ERROR) + printk(KERN_INFO "%s: Hard Error\n", dev->name); + + if(tp->ssb.Parm[0] & SOFT_ERROR) + printk(KERN_INFO "%s: Soft Error\n", dev->name); + + if(tp->ssb.Parm[0] & TRANSMIT_BEACON) + printk(KERN_INFO "%s: Transmit Beacon\n", dev->name); + + if(tp->ssb.Parm[0] & SINGLE_STATION) + printk(KERN_INFO "%s: Single Station\n", dev->name); + + /* Check if adapter has been closed */ + if(tp->ssb.Parm[0] & ADAPTER_CLOSED) + { + printk(KERN_INFO "%s: Adapter closed (Reopening)," + "QueueSkb %d, CurrentRingStat %x\n", + dev->name, tp->QueueSkb, tp->CurrentRingStatus); + tp->AdapterOpenFlag = 0; + tms380tr_open_adapter(dev); + } + + return; +} + +/* + * Issued if adapter has encountered an unrecoverable hardware + * or software error. + */ +static void tms380tr_chk_irq(struct net_device *dev) +{ + int i; + unsigned short AdapterCheckBlock[4]; + unsigned short ioaddr = dev->base_addr; + struct net_local *tp = (struct net_local *)dev->priv; + + tp->AdapterOpenFlag = 0; /* Adapter closed now */ + + /* Page number of adapter memory */ + outw(0x0001, ioaddr + SIFADX); + /* Address offset */ + outw(CHECKADDR, ioaddr + SIFADR); + + /* Reading 8 byte adapter check block. */ + for(i = 0; i < 4; i++) + AdapterCheckBlock[i] = inw(ioaddr + SIFINC); + + if(tms380tr_debug > 3) + { + printk("%s: AdapterCheckBlock: ", dev->name); + for (i = 0; i < 4; i++) + printk("%04X", AdapterCheckBlock[i]); + printk("\n"); + } + + switch(AdapterCheckBlock[0]) + { + case DIO_PARITY: + printk(KERN_INFO "%s: DIO parity error\n", dev->name); + break; + + case DMA_READ_ABORT: + printk(KERN_INFO "%s DMA read operation aborted:\n", + dev->name); + switch (AdapterCheckBlock[1]) + { + case 0: + printk(KERN_INFO "Timeout\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + case 1: + printk(KERN_INFO "Parity error\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + case 2: + printk(KERN_INFO "Bus error\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + default: + printk(KERN_INFO "Unknown error.\n"); + break; + } + break; + + case DMA_WRITE_ABORT: + printk(KERN_INFO "%s: DMA write operation aborted: \n", + dev->name); + switch (AdapterCheckBlock[1]) + { + case 0: + printk(KERN_INFO "Timeout\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + case 1: + printk(KERN_INFO "Parity error\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + case 2: + printk(KERN_INFO "Bus error\n"); + printk(KERN_INFO "Address: %04X %04X\n", + AdapterCheckBlock[2], + AdapterCheckBlock[3]); + break; + + default: + printk(KERN_INFO "Unknown error.\n"); + break; + } + break; + + case ILLEGAL_OP_CODE: + printk("%s: Illegal operation code in firmware\n", + dev->name); + /* Parm[0-3]: adapter internal register R13-R15 */ + break; + + case PARITY_ERRORS: + printk("%s: Adapter internal bus parity error\n", + dev->name); + /* Parm[0-3]: adapter internal register R13-R15 */ + break; + + case RAM_DATA_ERROR: + printk("%s: RAM data error\n", dev->name); + /* Parm[0-1]: MSW/LSW address of RAM location. */ + break; + + case RAM_PARITY_ERROR: + printk("%s: RAM parity error\n", dev->name); + /* Parm[0-1]: MSW/LSW address of RAM location. */ + break; + + case RING_UNDERRUN: + printk("%s: Internal DMA underrun detected\n", + dev->name); + break; + + case INVALID_IRQ: + printk("%s: Unrecognized interrupt detected\n", + dev->name); + /* Parm[0-3]: adapter internal register R13-R15 */ + break; + + case INVALID_ERROR_IRQ: + printk("%s: Unrecognized error interrupt detected\n", + dev->name); + /* Parm[0-3]: adapter internal register R13-R15 */ + break; + + case INVALID_XOP: + printk("%s: Unrecognized XOP request detected\n", + dev->name); + /* Parm[0-3]: adapter internal register R13-R15 */ + break; + + default: + printk("%s: Unknown status", dev->name); + break; + } + + if(tms380tr_chipset_init(dev) == 1) + { + /* Restart of firmware successful */ + tp->AdapterOpenFlag = 1; + } + + return; +} + +/* + * Internal adapter pointer to RAM data are copied from adapter into + * host system. + */ +static int tms380tr_read_ptr(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned short adapterram; + + tms380tr_read_ram(dev, (unsigned char *)&tp->intptrs.BurnedInAddrPtr, + ADAPTER_INT_PTRS, 16); + tms380tr_read_ram(dev, (unsigned char *)&adapterram, + (unsigned short)SWAPB(tp->intptrs.AdapterRAMPtr), 2); + + return SWAPB(adapterram); +} + +/* + * Reads a number of bytes from adapter to system memory. + */ +static void tms380tr_read_ram(struct net_device *dev, unsigned char *Data, + unsigned short Address, int Length) +{ + int i; + unsigned short old_sifadx, old_sifadr, InWord; + unsigned short ioaddr = dev->base_addr; + + /* Save the current values */ + old_sifadx = inw(ioaddr + SIFADX); + old_sifadr = inw(ioaddr + SIFADR); + + /* Page number of adapter memory */ + outw(0x0001, ioaddr + SIFADX); + /* Address offset in adapter RAM */ + outw(Address, ioaddr + SIFADR); + + /* Copy len byte from adapter memory to system data area. */ + i = 0; + for(;;) + { + InWord = inw(ioaddr + SIFINC); + + *(Data + i) = HIBYTE(InWord); /* Write first byte */ + if(++i == Length) /* All is done break */ + break; + + *(Data + i) = LOBYTE(InWord); /* Write second byte */ + if (++i == Length) /* All is done break */ + break; + } + + /* Restore original values */ + outw(old_sifadx, ioaddr + SIFADX); + outw(old_sifadr, ioaddr + SIFADR); + + return; +} + +/* + * Reads MAC address from adapter ROM. + */ +static void tms380tr_read_addr(struct net_device *dev, unsigned char *Address) +{ + int i, In; + unsigned short ioaddr = dev->base_addr; + + /* Address: 0000:0000 */ + outw(0, ioaddr + SIFADX); + outw(0, ioaddr + SIFADR); + + /* Read six byte MAC address data */ + for(i = 0; i < 6; i++) + { + In = inw(ioaddr + SIFINC); + *(Address + i) = (unsigned char)(In >> 8); + } + + return; +} + +/* + * Cancel all queued packets in the transmission queue. + */ +static void tms380tr_cancel_tx_queue(struct net_local* tp) +{ + TPL *tpl; + struct sk_buff *skb; + + /* + * NOTE: There must not be an active TRANSMIT command pending, when + * this function is called. + */ + if(tp->TransmitCommandActive) + return; + + for(;;) + { + tpl = tp->TplBusy; + if(!tpl->BusyFlag) + break; + /* "Remove" TPL from busy list. */ + tp->TplBusy = tpl->NextTPLPtr; + tms380tr_write_tpl_status(tpl, 0); /* Clear VALID bit */ + tpl->BusyFlag = 0; /* "free" TPL */ + + printk(KERN_INFO "Cancel tx (%08lXh).\n", (unsigned long)tpl); + + dev_kfree_skb(tpl->Skb); + } + + for(;;) + { + skb = skb_dequeue(&tp->SendSkbQueue); + if(skb == NULL) + break; + tp->QueueSkb++; + dev_kfree_skb(skb); + } + + return; +} + +/* + * This function is called whenever a transmit interrupt is generated by the + * adapter. For a command complete interrupt, it is checked if we have to + * issue a new transmit command or not. + */ +static void tms380tr_tx_status_irq(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned char HighByte, HighAc, LowAc; + TPL *tpl; + + /* NOTE: At this point the SSB from TRANSMIT STATUS is no longer + * available, because the CLEAR SSB command has already been issued. + * + * Process all complete transmissions. + */ + + for(;;) + { + tpl = tp->TplBusy; + if(!tpl->BusyFlag || (tpl->Status + & (TX_VALID | TX_FRAME_COMPLETE)) + != TX_FRAME_COMPLETE) + { + break; + } + + /* "Remove" TPL from busy list. */ + tp->TplBusy = tpl->NextTPLPtr ; + + /* Check the transmit status field only for directed frames*/ + if(DIRECTED_FRAME(tpl) && (tpl->Status & TX_ERROR) == 0) + { + HighByte = GET_TRANSMIT_STATUS_HIGH_BYTE(tpl->Status); + HighAc = GET_FRAME_STATUS_HIGH_AC(HighByte); + LowAc = GET_FRAME_STATUS_LOW_AC(HighByte); + + if((HighAc != LowAc) || (HighAc == AC_NOT_RECOGNIZED)) + { + printk(KERN_INFO "%s: (DA=%08lX not recognized)", + dev->name, + *(unsigned long *)&tpl->MData[2+2]); + } + else + { + if(tms380tr_debug > 3) + printk("%s: Directed frame tx'd\n", + dev->name); + } + } + else + { + if(!DIRECTED_FRAME(tpl)) + { + if(tms380tr_debug > 3) + printk("%s: Broadcast frame tx'd\n", + dev->name); + } + } + + tp->MacStat.tx_packets++; + dev_kfree_skb(tpl->Skb); + tpl->BusyFlag = 0; /* "free" TPL */ + } + + dev->tbusy = 0; + if(tp->QueueSkb < MAX_TX_QUEUE) + tms380tr_hardware_send_packet(dev, tp); + + return; +} + +/* + * Called if a frame receive interrupt is generated by the adapter. + * Check if the frame is valid and indicate it to system. + */ +static void tms380tr_rcv_status_irq(struct net_device *dev) +{ + struct net_local *tp = (struct net_local *)dev->priv; + unsigned char *ReceiveDataPtr; + struct sk_buff *skb; + unsigned int Length, Length2; + RPL *rpl; + RPL *SaveHead; + + /* NOTE: At this point the SSB from RECEIVE STATUS is no longer + * available, because the CLEAR SSB command has already been issued. + * + * Process all complete receives. + */ + + for(;;) + { + rpl = tp->RplHead; + if(rpl->Status & RX_VALID) + break; /* RPL still in use by adapter */ + + /* Forward RPLHead pointer to next list. */ + SaveHead = tp->RplHead; + tp->RplHead = rpl->NextRPLPtr; + + /* Get the frame size (Byte swap for Intel). + * Do this early (see workaround comment below) + */ + Length = (unsigned short)SWAPB(rpl->FrameSize); + + /* Check if the Frame_Start, Frame_End and + * Frame_Complete bits are set. + */ + if((rpl->Status & VALID_SINGLE_BUFFER_FRAME) + == VALID_SINGLE_BUFFER_FRAME) + { + ReceiveDataPtr = rpl->MData; + + /* Workaround for delayed write of FrameSize on ISA + * (FrameSize is false but valid-bit is reset) + * Frame size is set to zero when the RPL is freed. + * Length2 is there because there have also been + * cases where the FrameSize was partially written + */ + Length2 = (unsigned short)SWAPB(rpl->FrameSize); + + if(Length == 0 || Length != Length2) + { + tp->RplHead = SaveHead; + break; /* Return to tms380tr_interrupt */ + } + + /* Drop frames sent by myself */ + if(tms380tr_chk_frame(dev, rpl->MData)) + { + printk(KERN_INFO "%s: Received my own frame\n", + dev->name); + if(rpl->Skb != NULL) + dev_kfree_skb(rpl->Skb); + } + else + { + tms380tr_update_rcv_stats(tp,ReceiveDataPtr,Length); + + if(tms380tr_debug > 3) + printk("%s: Packet Length %04X (%d)\n", + dev->name, Length, Length); + + /* Indicate the received frame to system the + * adapter does the Source-Routing padding for + * us. See: OpenOptions in tms380tr_init_opb() + */ + skb = rpl->Skb; + if(rpl->SkbStat == SKB_UNAVAILABLE) + { + /* Try again to allocate skb */ + skb = dev_alloc_skb(tp->MaxPacketSize); + if(skb == NULL) + { + /* Update Stats ?? */ + } + else + { + skb->dev = dev; + skb_put(skb, tp->MaxPacketSize); + rpl->SkbStat = SKB_DATA_COPY; + ReceiveDataPtr = rpl->MData; + } + } + + if(rpl->SkbStat == SKB_DATA_COPY + || rpl->SkbStat == SKB_DMA_DIRECT) + { + if(rpl->SkbStat == SKB_DATA_COPY) + memmove(skb->data, ReceiveDataPtr, Length); + + /* Deliver frame to system */ + rpl->Skb = NULL; + skb_trim(skb,Length); + skb->protocol = tr_type_trans(skb,dev); + netif_rx(skb); + } + } + } + else /* Invalid frame */ + { + if(rpl->Skb != NULL) + dev_kfree_skb(rpl->Skb); + + /* Skip list. */ + if(rpl->Status & RX_START_FRAME) + /* Frame start bit is set -> overflow. */ + tp->MacStat.rx_errors++; + } + + /* Allocate new skb for rpl */ + rpl->Skb = dev_alloc_skb(tp->MaxPacketSize); + + /* skb == NULL ? then use local buffer */ + if(rpl->Skb == NULL) + { + rpl->SkbStat = SKB_UNAVAILABLE; + rpl->FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[rpl->RPLIndex])); + rpl->MData = tp->LocalRxBuffers[rpl->RPLIndex]; + } + else /* skb != NULL */ + { + rpl->Skb->dev = dev; + skb_put(rpl->Skb, tp->MaxPacketSize); + + /* Data unreachable for DMA ? then use local buffer */ + if(tp->CardType->type == TMS_ISA && virt_to_bus(rpl->Skb->data) + tp->MaxPacketSize + > ISA_MAX_ADDRESS) + { + rpl->SkbStat = SKB_DATA_COPY; + rpl->FragList[0].DataAddr = htonl(virt_to_bus(tp->LocalRxBuffers[rpl->RPLIndex])); + rpl->MData = tp->LocalRxBuffers[rpl->RPLIndex]; + } + else + { + /* DMA directly in skb->data */ + rpl->SkbStat = SKB_DMA_DIRECT; + rpl->FragList[0].DataAddr = htonl(virt_to_bus(rpl->Skb->data)); + rpl->MData = rpl->Skb->data; + } + } + + rpl->FragList[0].DataCount = SWAPB(tp->MaxPacketSize); + rpl->FrameSize = 0; + + /* Pass the last RPL back to the adapter */ + tp->RplTail->FrameSize = 0; + + /* Reset the CSTAT field in the list. */ + tms380tr_write_rpl_status(tp->RplTail, RX_VALID | RX_FRAME_IRQ); + + /* Current RPL becomes last one in list. */ + tp->RplTail = tp->RplTail->NextRPLPtr; + + /* Inform adapter about RPL valid. */ + tms380tr_exec_sifcmd(dev, CMD_RX_VALID); + } + + return; +} + +/* + * This function should be used whenever the status of any RPL must be + * modified by the driver, because the compiler may otherwise change the + * order of instructions such that writing the RPL status may be executed + * at an undesireable time. When this function is used, the status is + * always written when the function is called. + */ +static void tms380tr_write_rpl_status(RPL *rpl, unsigned int Status) +{ + rpl->Status = Status; + + return; +} + +/* + * The function updates the statistic counters in mac->MacStat. + * It differtiates between directed and broadcast/multicast ( ==functional) + * frames. + */ +static void tms380tr_update_rcv_stats(struct net_local *tp, unsigned char DataPtr[], + unsigned int Length) +{ + tp->MacStat.rx_packets++; + tp->MacStat.rx_bytes += Length; + + /* Test functional bit */ + if(DataPtr[2] & GROUP_BIT) + tp->MacStat.multicast++; + + return; +} + +/* + * Check if it is a frame of myself. Compare source address with my current + * address in reverse direction, and mask out the TR_RII. + */ +static unsigned char tms380tr_chk_frame(struct net_device *dev, unsigned char *Addr) +{ + int i; + + for(i = 5; i > 0; i--) + { + if(Addr[8 + i] != dev->dev_addr[i]) + return (0); + } + + /* Mask out RIF bit. */ + if((Addr[8] & ~TR_RII) != (unsigned char)(dev->dev_addr[0])) + return (0); + + return (1); /* It is my frame. */ +} + +#if TMS380TR_DEBUG > 0 +/* + * Dump Packet (data) + */ +static void tms380tr_dump(unsigned char *Data, int length) +{ + int i, j; + + for (i = 0, j = 0; i < length / 8; i++, j += 8) + { + printk(KERN_DEBUG "%02x %02x %02x %02x %02x %02x %02x %02x\n", + Data[j+0],Data[j+1],Data[j+2],Data[j+3], + Data[j+4],Data[j+5],Data[j+6],Data[j+7]); + } + + return; +} +#endif + +#ifdef MODULE + +static struct net_device* dev_tms380tr[TMS380TR_MAX_ADAPTERS]; +static int io[TMS380TR_MAX_ADAPTERS] = { 0, 0 }; +static int irq[TMS380TR_MAX_ADAPTERS] = { 0, 0 }; +static int mem[TMS380TR_MAX_ADAPTERS] = { 0, 0 }; + +MODULE_PARM(io, "1-" __MODULE_STRING(TMS380TR_MAX_ADAPTERS) "i"); +MODULE_PARM(irq, "1-" __MODULE_STRING(TMS380TR_MAX_ADAPTERS) "i"); +MODULE_PARM(mem, "1-" __MODULE_STRING(TMS380TR_MAX_ADAPTERS) "i"); + +int init_module(void) +{ + int i; + + for(i = 0; i < TMS380TR_MAX_ADAPTERS; i++) + { + irq[i] = 0; + mem[i] = 0; + dev_tms380tr[i] = NULL; + dev_tms380tr[i] = init_trdev(dev_tms380tr[i], 0); + if(dev_tms380tr[i] == NULL) + return (-ENOMEM); + + dev_tms380tr[i]->base_addr = io[i]; + dev_tms380tr[i]->irq = irq[i]; + dev_tms380tr[i]->mem_start = mem[i]; + dev_tms380tr[i]->init = &tms380tr_probe; + + if(register_trdev(dev_tms380tr[i]) != 0) + { + kfree_s(dev_tms380tr[i], sizeof(struct net_device)); + dev_tms380tr[i] = NULL; + if(i == 0) + { + printk("tms380tr: register_trdev() returned non-zero.\n"); + return (-EIO); + } + else + return (0); + } + } + + return (0); +} + +void cleanup_module(void) +{ + int i; + + for(i = 0; i < TMS380TR_MAX_ADAPTERS; i++) + { + if(dev_tms380tr[i]) + { + unregister_trdev(dev_tms380tr[i]); + release_region(dev_tms380tr[i]->base_addr, TMS380TR_IO_EXTENT); + if(dev_tms380tr[i]->irq) + free_irq(dev_tms380tr[i]->irq, dev_tms380tr[i]); + if(dev_tms380tr[i]->dma > 0) + free_dma(dev_tms380tr[i]->dma); + if(dev_tms380tr[i]->priv) + kfree_s(dev_tms380tr[i]->priv, sizeof(struct net_local)); + kfree_s(dev_tms380tr[i], sizeof(struct net_device)); + dev_tms380tr[i] = NULL; + } + } +} +#endif /* MODULE */ diff --git a/drivers/net/tokenring/tms380tr.h b/drivers/net/tokenring/tms380tr.h new file mode 100644 index 000000000..7896be0a0 --- /dev/null +++ b/drivers/net/tokenring/tms380tr.h @@ -0,0 +1,1109 @@ +/* tms380tr.h: TI TMS380 Token Ring driver for Linux + * + * Authors: + * - Christoph Goos <cgoos@syskonnect.de> + */ + +#ifndef __LINUX_TMS380TR_H +#define __LINUX_TMS380TR_H + +#ifdef __KERNEL__ + +#define TMS380TR_MAX_ADAPTERS 7 + +#define SEND_TIMEOUT 10*HZ + +#define TR_RCF_LONGEST_FRAME_MASK 0x0070 +#define TR_RCF_FRAME4K 0x0030 + +/*------------------------------------------------------------------*/ +/* Bit order for adapter communication with DMA */ +/* -------------------------------------------------------------- */ +/* Bit 8 | 9| 10| 11|| 12| 13| 14| 15|| 0| 1| 2| 3|| 4| 5| 6| 7| */ +/* -------------------------------------------------------------- */ +/* The bytes in a word must be byte swapped. Also, if a double */ +/* word is used for storage, then the words, as well as the bytes, */ +/* must be swapped. */ +/* Bit order for adapter communication with DIO */ +/* -------------------------------------------------------------- */ +/* Bit 0 | 1| 2| 3|| 4| 5| 6| 7|| 8| 9| 10| 11|| 12| 13| 14| 15| */ +/* -------------------------------------------------------------- */ +/*------------------------------------------------------------------*/ + +/* Swap bytes of a word. */ +#define SWAPB(x) (((unsigned short)((x) << 8)) | ((unsigned short)((x) >> 8))) + +/* Swap words of a long. */ +#define SWAPW(x) (((x) << 16) | ((x) >> 16)) + +/* Get the low byte of a word. */ +#define LOBYTE(w) ((unsigned char)(w)) + +/* Get the high byte of a word. */ +#define HIBYTE(w) ((unsigned char)((unsigned short)(w) >> 8)) + +/* Get the low word of a long. */ +#define LOWORD(l) ((unsigned short)(l)) + +/* Get the high word of a long. */ +#define HIWORD(l) ((unsigned short)((unsigned long)(l) >> 16)) + + + +/* Token ring adapter I/O addresses for normal mode. */ +#define SIFDAT 0L /* SIF/DMA data. */ +#define SIFINC 2L /* IO Word data with auto increment. */ +#define SIFINH 3L /* IO Byte data with auto increment. */ +#define SIFADR 4L /* SIF/DMA Address. */ +#define SIFCMD 6L /* SIF Command. */ +#define SIFSTS 6L /* SIF Status. */ +#define SIFACL 8L /* SIF Adapter Control Register. */ +#define SIFADD 10L /* SIF/DMA Address. */ +#define SIFADX 12L +#define DMALEN 14L /* SIF DMA length. */ +#define POSREG 16L /* Adapter Program Option Select (POS) + * Register: base IO address + 16 byte. + */ +#define POSREG_2 24L /* only for TR4/16+ adapter + * base IO address + 24 byte. + */ + + +/* SIFCMD command codes (high-low) */ +#define CMD_INTERRUPT_ADAPTER 0x8000 /* Cause internal adapter interrupt */ +#define CMD_ADAPTER_RESET 0x4000 /* Hardware reset of adapter */ +#define CMD_SSB_CLEAR 0x2000 /* Acknowledge to adapter to + * system interrupts. + */ +#define CMD_EXECUTE 0x1000 /* Execute SCB command */ +#define CMD_SCB_REQUEST 0x0800 /* Request adapter to interrupt + * system when SCB is available for + * another command. + */ +#define CMD_RX_CONTINUE 0x0400 /* Continue receive after odd pointer + * stop. (odd pointer receive method) + */ +#define CMD_RX_VALID 0x0200 /* Now actual RPL is valid. */ +#define CMD_TX_VALID 0x0100 /* Now actual TPL is valid. (valid + * bit receive/transmit method) + */ +#define CMD_SYSTEM_IRQ 0x0080 /* Adapter-to-attached-system + * interrupt is reset. + */ +#define CMD_CLEAR_SYSTEM_IRQ 0x0080 /* Clear SYSTEM_INTERRUPT bit. + * (write: 1=ignore, 0=reset) + */ +#define EXEC_SOFT_RESET 0xFF00 /* adapter soft reset. (restart + * adapter after hardware reset) + */ + + +/* ACL commands (high-low) */ +#define ACL_SWHLDA 0x0800 /* Software hold acknowledge. */ +#define ACL_SWDDIR 0x0400 /* Data transfer direction. */ +#define ACL_SWHRQ 0x0200 /* Pseudo DMA operation. */ +#define ACL_PSDMAEN 0x0100 /* Enable pseudo system DMA. */ +#define ACL_ARESET 0x0080 /* Adapter hardware reset command. + * (held in reset condition as + * long as bit is set) + */ +#define ACL_CPHALT 0x0040 /* Communication processor halt. + * (can only be set while ACL_ARESET + * bit is set; prevents adapter + * processor from executing code while + * downloading firmware) + */ +#define ACL_BOOT 0x0020 +#define ACL_SINTEN 0x0008 /* System interrupt enable/disable + * (1/0): can be written if ACL_ARESET + * is zero. + */ +#define ACL_SPEED4 0x0003 +#define ACL_SPEED16 0x0001 +#define PS_DMA_MASK (ACL_SWHRQ | ACL_PSDMAEN) + + +/* SIFSTS register return codes (high-low) */ +#define STS_SYSTEM_IRQ 0x0080 /* Adapter-to-attached-system + * interrupt is valid. + */ +#define STS_INITIALIZE 0x0040 /* INITIALIZE status. (ready to + * initialize) + */ +#define STS_TEST 0x0020 /* TEST status. (BUD not completed) */ +#define STS_ERROR 0x0010 /* ERROR status. (unrecoverable + * HW error occurred) + */ +#define STS_MASK 0x00F0 /* Mask interesting status bits. */ +#define STS_ERROR_MASK 0x000F /* Get Error Code by masking the + * interrupt code bits. + */ +#define ADAPTER_INT_PTRS 0x0A00 /* Address offset of adapter internal + * pointers 01:0a00 (high-low) have to + * be read after init and before open. + */ + + +/* Interrupt Codes (only MAC IRQs) */ +#define STS_IRQ_ADAPTER_CHECK 0x0000 /* unrecoverable hardware or + * software error. + */ +#define STS_IRQ_RING_STATUS 0x0004 /* SSB is updated with ring status. */ +#define STS_IRQ_SCB_CLEAR 0x0006 /* SCB clear, following an + * SCB_REQUEST IRQ. + */ +#define STS_IRQ_COMMAND_STATUS 0x0008 /* SSB is updated with command + * status. + */ +#define STS_IRQ_RECEIVE_STATUS 0x000A /* SSB is updated with receive + * status. + */ +#define STS_IRQ_TRANSMIT_STATUS 0x000C /* SSB is updated with transmit + * status + */ +#define STS_IRQ_MASK 0x000F /* = STS_ERROR_MASK. */ + + +/* TRANSMIT_STATUS completion code: (SSB.Parm[0]) */ +#define COMMAND_COMPLETE 0x0080 /* TRANSMIT command completed + * (avoid this!) issue another transmit + * to send additional frames. + */ +#define FRAME_COMPLETE 0x0040 /* Frame has been transmitted; + * INTERRUPT_FRAME bit was set in the + * CSTAT request; indication of possibly + * more than one frame transmissions! + * SSB.Parm[0-1]: 32 bit pointer to + * TPL of last frame. + */ +#define LIST_ERROR 0x0020 /* Error in one of the TPLs that + * compose the frame; TRANSMIT + * terminated; Parm[1-2]: 32 bit pointer + * to TPL which starts the error + * frame; error details in bits 8-13. + * (14?) + */ +#define FRAME_SIZE_ERROR 0x8000 /* FRAME_SIZE does not equal the sum of + * the valid DATA_COUNT fields; + * FRAME_SIZE less than header plus + * information field. (15 bytes + + * routing field) Or if FRAME_SIZE + * was specified as zero in one list. + */ +#define TX_THRESHOLD 0x4000 /* FRAME_SIZE greater than (BUFFER_SIZE + * - 9) * TX_BUF_MAX. + */ +#define ODD_ADDRESS 0x2000 /* Odd forward pointer value is + * read on a list without END_FRAME + * indication. + */ +#define FRAME_ERROR 0x1000 /* START_FRAME bit is (not) anticipated, + * but (not) set. + */ +#define ACCESS_PRIORITY_ERROR 0x0800 /* Access priority requested has not + * been allowed. + */ +#define UNENABLED_MAC_FRAME 0x0400 /* MAC frame has source class of zero + * or MAC frame PCF ATTN field is + * greater than one. + */ +#define ILLEGAL_FRAME_FORMAT 0x0200 /* Bit 0 or FC field was set to one. */ + + +/* + * Since we need to support some functions even if the adapter is in a + * CLOSED state, we have a (pseudo-) command queue which holds commands + * that are outstandig to be executed. + * + * Each time a command completes, an interrupt occurs and the next + * command is executed. The command queue is actually a simple word with + * a bit for each outstandig command. Therefore the commands will not be + * executed in the order they have been queued. + * + * The following defines the command code bits and the command queue: + */ +#define OC_OPEN 0x0001 /* OPEN command */ +#define OC_TRANSMIT 0x0002 /* TRANSMIT command */ +#define OC_TRANSMIT_HALT 0x0004 /* TRANSMIT_HALT command */ +#define OC_RECEIVE 0x0008 /* RECEIVE command */ +#define OC_CLOSE 0x0010 /* CLOSE command */ +#define OC_SET_GROUP_ADDR 0x0020 /* SET_GROUP_ADDR command */ +#define OC_SET_FUNCT_ADDR 0x0040 /* SET_FUNCT_ADDR command */ +#define OC_READ_ERROR_LOG 0x0080 /* READ_ERROR_LOG command */ +#define OC_READ_ADAPTER 0x0100 /* READ_ADAPTER command */ +#define OC_MODIFY_OPEN_PARMS 0x0400 /* MODIFY_OPEN_PARMS command */ +#define OC_RESTORE_OPEN_PARMS 0x0800 /* RESTORE_OPEN_PARMS command */ +#define OC_SET_FIRST_16_GROUP 0x1000 /* SET_FIRST_16_GROUP command */ +#define OC_SET_BRIDGE_PARMS 0x2000 /* SET_BRIDGE_PARMS command */ +#define OC_CONFIG_BRIDGE_PARMS 0x4000 /* CONFIG_BRIDGE_PARMS command */ + +#define OPEN 0x0300 /* C: open command. S: completion. */ +#define TRANSMIT 0x0400 /* C: transmit command. S: completion + * status. (reject: COMMAND_REJECT if + * adapter not opened, TRANSMIT already + * issued or address passed in the SCB + * not word aligned) + */ +#define TRANSMIT_HALT 0x0500 /* C: interrupt TX TPL chain; if no + * TRANSMIT command issued, the command + * is ignored. (completion with TRANSMIT + * status (0x0400)!) + */ +#define RECEIVE 0x0600 /* C: receive command. S: completion + * status. (reject: COMMAND_REJECT if + * adapter not opened, RECEIVE already + * issued or address passed in the SCB + * not word aligned) + */ +#define CLOSE 0x0700 /* C: close adapter. S: completion. + * (COMMAND_REJECT if adapter not open) + */ +#define SET_GROUP_ADDR 0x0800 /* C: alter adapter group address after + * OPEN. S: completion. (COMMAND_REJECT + * if adapter not open) + */ +#define SET_FUNCT_ADDR 0x0900 /* C: alter adapter functional address + * after OPEN. S: completion. + * (COMMAND_REJECT if adapter not open) + */ +#define READ_ERROR_LOG 0x0A00 /* C: read adapter error counters. + * S: completion. (command ignored + * if adapter not open!) + */ +#define READ_ADAPTER 0x0B00 /* C: read data from adapter memory. + * (important: after init and before + * open!) S: completion. (ADAPTER_CHECK + * interrupt if undefined storage area + * read) + */ +#define MODIFY_OPEN_PARMS 0x0D00 /* C: modify some adapter operational + * parameters. (bit correspondend to + * WRAP_INTERFACE is ignored) + * S: completion. (reject: + * COMMAND_REJECT) + */ +#define RESTORE_OPEN_PARMS 0x0E00 /* C: modify some adapter operational + * parameters. (bit correspondend + * to WRAP_INTERFACE is ignored) + * S: completion. (reject: + * COMMAND_REJECT) + */ +#define SET_FIRST_16_GROUP 0x0F00 /* C: alter the first two bytes in + * adapter group address. + * S: completion. (reject: + * COMMAND_REJECT) + */ +#define SET_BRIDGE_PARMS 0x1000 /* C: values and conditions for the + * adapter hardware to use when frames + * are copied for forwarding. + * S: completion. (reject: + * COMMAND_REJECT) + */ +#define CONFIG_BRIDGE_PARMS 0x1100 /* C: .. + * S: completion. (reject: + * COMMAND_REJECT) + */ + +#define SPEED_4 4 +#define SPEED_16 16 /* Default transmission speed */ + + +/* Initialization Parameter Block (IPB); word alignment necessary! */ +#define BURST_SIZE 0x0018 /* Default burst size */ +#define BURST_MODE 0x9F00 /* Burst mode enable */ +#define DMA_RETRIES 0x0505 /* Magic DMA retry number... */ + +#define CYCLE_TIME 3 /* Default AT-bus cycle time: 500 ns + * (later adapter version: fix cycle time!) + */ +#define LINE_SPEED_BIT 0x80 + +/* Macro definition for the wait function. */ +#define ONE_SECOND_TICKS 1000000 +#define HALF_SECOND (ONE_SECOND_TICKS / 2) +#define ONE_SECOND (ONE_SECOND_TICKS) +#define TWO_SECONDS (ONE_SECOND_TICKS * 2) +#define THREE_SECONDS (ONE_SECOND_TICKS * 3) +#define FOUR_SECONDS (ONE_SECOND_TICKS * 4) +#define FIVE_SECONDS (ONE_SECOND_TICKS * 5) + +#define BUFFER_SIZE 2048 /* Buffers on Adapter */ + +#pragma pack(1) +typedef struct { + unsigned short Init_Options; /* Initialize with burst mode; + * LLC disabled. (MAC only) + */ + + /* Interrupt vectors the adapter places on attached system bus. */ + unsigned char CMD_Status_IV; /* Interrupt vector: command status. */ + unsigned char TX_IV; /* Interrupt vector: transmit. */ + unsigned char RX_IV; /* Interrupt vector: receive. */ + unsigned char Ring_Status_IV; /* Interrupt vector: ring status. */ + unsigned char SCB_Clear_IV; /* Interrupt vector: SCB clear. */ + unsigned char Adapter_CHK_IV; /* Interrupt vector: adapter check. */ + + unsigned short RX_Burst_Size; /* Max. number of transfer cycles. */ + unsigned short TX_Burst_Size; /* During DMA burst; even value! */ + unsigned short DMA_Abort_Thrhld; /* Number of DMA retries. */ + + unsigned long SCB_Addr; /* SCB address: even, word aligned, high-low. */ + unsigned long SSB_Addr; /* SSB address: even, word aligned, high-low. */ +} IPB, *IPB_Ptr; +#pragma pack() + +/* + * OPEN Command Parameter List (OCPL) (can be reused, if the adapter has to + * be reopened) + */ +#define BUFFER_SIZE 2048 /* Buffers on Adapter. */ +#define TPL_SIZE 8+6*TX_FRAG_NUM /* Depending on fragments per TPL. */ +#define RPL_SIZE 14 /* (with TI firmware v2.26 handling + * up to nine fragments possible) + */ +#define TX_BUF_MIN 20 /* ??? (Stephan: calculation with */ +#define TX_BUF_MAX 40 /* BUFFER_SIZE and MAX_FRAME_SIZE) ??? + */ +#define DISABLE_EARLY_TOKEN_RELEASE 0x1000 + +/* OPEN Options (high-low) */ +#define WRAP_INTERFACE 0x0080 /* Inserting omitted for test + * purposes; transmit data appears + * as receive data. (usefull for + * testing; change: CLOSE necessary) + */ +#define DISABLE_HARD_ERROR 0x0040 /* On HARD_ERROR & TRANSMIT_BEACON + * no RING.STATUS interrupt. + */ +#define DISABLE_SOFT_ERROR 0x0020 /* On SOFT_ERROR, no RING.STATUS + * interrupt. + */ +#define PASS_ADAPTER_MAC_FRAMES 0x0010 /* Passing unsupported MAC frames + * to system. + */ +#define PASS_ATTENTION_FRAMES 0x0008 /* All changed attention MAC frames are + * passed to the system. + */ +#define PAD_ROUTING_FIELD 0x0004 /* Routing field is padded to 18 + * bytes. + */ +#define FRAME_HOLD 0x0002 /* Adapter waits for entire frame before + * initiating DMA transfer; otherwise: + * DMA transfer initiation if internal + * buffer filled. + */ +#define CONTENDER 0x0001 /* Adapter participates in the monitor + * contention process. + */ +#define PASS_BEACON_MAC_FRAMES 0x8000 /* Adapter passes beacon MAC frames + * to the system. + */ +#define EARLY_TOKEN_RELEASE 0x1000 /* Only valid in 16 Mbps operation; + * 0 = ETR. (no effect in 4 Mbps + * operation) + */ +#define COPY_ALL_MAC_FRAMES 0x0400 /* All MAC frames are copied to + * the system. (after OPEN: duplicate + * address test (DAT) MAC frame is + * first received frame copied to the + * system) + */ +#define COPY_ALL_NON_MAC_FRAMES 0x0200 /* All non MAC frames are copied to + * the system. + */ +#define PASS_FIRST_BUF_ONLY 0x0100 /* Passes only first internal buffer + * of each received frame; FrameSize + * of RPLs must contain internal + * BUFFER_SIZE bits for promiscous mode. + */ +#define ENABLE_FULL_DUPLEX_SELECTION 0x2000 /* Enable the use of full-duplex + * settings with bits in byte 22 in + * ocpl. (new feature in firmware + * version 3.09) + */ + +/* Full-duplex settings */ +#define OPEN_FULL_DUPLEX_OFF 0x0000 +#define OPEN_FULL_DUPLEX_ON 0x00c0 +#define OPEN_FULL_DUPLEX_AUTO 0x0080 + +#define PROD_ID_SIZE 18 /* Length of product ID. */ + +#define TX_FRAG_NUM 3 /* Number of fragments used in one TPL. */ +#define TX_MORE_FRAGMENTS 0x8000 /* Bit set in DataCount to indicate more + * fragments following. + */ + +#define ISA_MAX_ADDRESS 0x00ffffff + +#pragma pack(1) +typedef struct { + unsigned short OPENOptions; + unsigned char NodeAddr[6]; /* Adapter node address; use ROM + * address + */ + unsigned long GroupAddr; /* Multicast: high order + * bytes = 0xC000 + */ + unsigned long FunctAddr; /* High order bytes = 0xC000 */ + unsigned short RxListSize; /* RPL size: 0 (=26), 14, 20 or + * 26 bytes read by the adapter. + * (Depending on the number of + * fragments/list) + */ + unsigned short TxListSize; /* TPL size */ + unsigned short BufSize; /* Is automatically rounded up to the + * nearest nK boundary. + */ + unsigned short FullDuplex; + unsigned short Reserved; + unsigned char TXBufMin; /* Number of adapter buffers reserved + * for transmission a minimum of 2 + * buffers must be allocated. + */ + unsigned char TXBufMax; /* Maximum number of adapter buffers + * for transmit; a minimum of 2 buffers + * must be available for receive. + * Default: 6 + */ + unsigned short ProdIDAddr[2]; /* Pointer to product ID. */ +} OPB, *OPB_Ptr; +#pragma pack() + +/* + * SCB: adapter commands enabled by the host system started by writing + * CMD_INTERRUPT_ADAPTER | CMD_EXECUTE (|SCB_REQUEST) to the SIFCMD IO + * register. (special case: | CMD_SYSTEM_IRQ for initialization) + */ +#pragma pack(1) +typedef struct { + unsigned short CMD; /* Command code */ + unsigned short Parm[2]; /* Pointer to Command Parameter Block */ +} SCB; /* System Command Block (32 bit physical address; big endian)*/ +#pragma pack() + +/* + * SSB: adapter command return status can be evaluated after COMMAND_STATUS + * adapter to system interrupt after reading SSB, the availability of the SSB + * has to be told the adapter by writing CMD_INTERRUPT_ADAPTER | CMD_SSB_CLEAR + * in the SIFCMD IO register. + */ +#pragma pack(1) +typedef struct { + unsigned short STS; /* Status code */ + unsigned short Parm[3]; /* Parameter or pointer to Status Parameter + * Block. + */ +} SSB; /* System Status Block (big endian - physical address) */ +#pragma pack() + +typedef struct { + unsigned short BurnedInAddrPtr; /* Pointer to adapter burned in + * address. (BIA) + */ + unsigned short SoftwareLevelPtr;/* Pointer to software level data. */ + unsigned short AdapterAddrPtr; /* Pointer to adapter addresses. */ + unsigned short AdapterParmsPtr; /* Pointer to adapter parameters. */ + unsigned short MACBufferPtr; /* Pointer to MAC buffer. (internal) */ + unsigned short LLCCountersPtr; /* Pointer to LLC counters. */ + unsigned short SpeedFlagPtr; /* Pointer to data rate flag. + * (4/16 Mbps) + */ + unsigned short AdapterRAMPtr; /* Pointer to adapter RAM found. (KB) */ +} INTPTRS; /* Adapter internal pointers */ + +#pragma pack(1) +typedef struct { + unsigned char Line_Error; /* Line error: code violation in + * frame or in a token, or FCS error. + */ + unsigned char Internal_Error; /* IBM specific. (Reserved_1) */ + unsigned char Burst_Error; + unsigned char ARI_FCI_Error; /* ARI/FCI bit zero in AMP or + * SMP MAC frame. + */ + unsigned char AbortDelimeters; /* IBM specific. (Reserved_2) */ + unsigned char Reserved_3; + unsigned char Lost_Frame_Error; /* Receive of end of transmitted + * frame failed. + */ + unsigned char Rx_Congest_Error; /* Adapter in repeat mode has not + * enough buffer space to copy incoming + * frame. + */ + unsigned char Frame_Copied_Error;/* ARI bit not zero in frame + * addressed to adapter. + */ + unsigned char Frequency_Error; /* IBM specific. (Reserved_4) */ + unsigned char Token_Error; /* (active only in monitor station) */ + unsigned char Reserved_5; + unsigned char DMA_Bus_Error; /* DMA bus errors not exceeding the + * abort thresholds. + */ + unsigned char DMA_Parity_Error; /* DMA parity errors not exceeding + * the abort thresholds. + */ +} ERRORTAB; /* Adapter error counters */ +#pragma pack() + + +/*--------------------- Send and Receive definitions -------------------*/ +#pragma pack(1) +typedef struct { + unsigned short DataCount; /* Value 0, even and odd values are + * permitted; value is unaltered most + * significant bit set: following + * fragments last fragment: most + * significant bit is not evaluated. + * (???) + */ + unsigned long DataAddr; /* Pointer to frame data fragment; + * even or odd. + */ +} Fragment; +#pragma pack() + +#define MAX_FRAG_NUMBERS 9 /* Maximal number of fragments possible to use + * in one RPL/TPL. (depending on TI firmware + * version) + */ +#define MAX_TX_QUEUE 10 /* Maximal number of skb's queued in driver. */ + +/* + * AC (1), FC (1), Dst (6), Src (6), RIF (18), Data (4472) = 4504 + * The packet size can be one of the follows: 548, 1502, 2084, 4504, 8176, + * 11439, 17832. Refer to TMS380 Second Generation Token Ring User's Guide + * Page 2-27. + */ +#define HEADER_SIZE (1 + 1 + 6 + 6) +#define SRC_SIZE 18 +#define MIN_DATA_SIZE 516 +#define DEFAULT_DATA_SIZE 4472 +#define MAX_DATA_SIZE 17800 + +#define DEFAULT_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + DEFAULT_DATA_SIZE) +#define MIN_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + MIN_DATA_SIZE) +#define MAX_PACKET_SIZE (HEADER_SIZE + SRC_SIZE + MAX_DATA_SIZE) + +/* + * Macros to deal with the frame status field. + */ +#define AC_NOT_RECOGNIZED 0x00 +#define GROUP_BIT 0x80 +#define GET_TRANSMIT_STATUS_HIGH_BYTE(Ts) ((unsigned char)((Ts) >> 8)) +#define GET_FRAME_STATUS_HIGH_AC(Fs) ((unsigned char)(((Fs) & 0xC0) >> 6)) +#define GET_FRAME_STATUS_LOW_AC(Fs) ((unsigned char)(((Fs) & 0x0C) >> 2)) +#define DIRECTED_FRAME(Context) (!((Context)->MData[2] & GROUP_BIT)) + + +/*--------------------- Send Functions ---------------------------------*/ +/* define TX_CSTAT _REQUEST (R) and _COMPLETE (C) values (high-low) */ + +#define TX_VALID 0x0080 /* R: set via TRANSMIT.VALID interrupt. + * C: always reset to zero! + */ +#define TX_FRAME_COMPLETE 0x0040 /* R: must be reset to zero. + * C: set to one. + */ +#define TX_START_FRAME 0x0020 /* R: start of a frame: 1 + * C: unchanged. + */ +#define TX_END_FRAME 0x0010 /* R: end of a frame: 1 + * C: unchanged. + */ +#define TX_FRAME_IRQ 0x0008 /* R: request interrupt generation + * after transmission. + * C: unchanged. + */ +#define TX_ERROR 0x0004 /* R: reserved. + * C: set to one if Error occurred. + */ +#define TX_INTERFRAME_WAIT 0x0004 +#define TX_PASS_CRC 0x0002 /* R: set if CRC value is already + * calculated. (valid only in + * FRAME_START TPL) + * C: unchanged. + */ +#define TX_PASS_SRC_ADDR 0x0001 /* R: adapter uses explicit frame + * source address and does not overwrite + * with the adapter node address. + * (valid only in FRAME_START TPL) + * + * C: unchanged. + */ +#define TX_STRIP_FS 0xFF00 /* R: reserved. + * C: if no Transmission Error, + * field contains copy of FS byte after + * stripping of frame. + */ + +/* + * Structure of Transmit Parameter Lists (TPLs) (only one frame every TPL, + * but possibly multiple TPLs for one frame) the length of the TPLs has to be + * initialized in the OPL. (OPEN parameter list) + */ +#define TPL_NUM 3 /* Number of Transmit Parameter Lists. + * !! MUST BE >= 3 !! + */ + +#pragma pack(1) +typedef struct s_TPL TPL; + +struct s_TPL { /* Transmit Parameter List (align on even word boundaries) */ + unsigned long NextTPLAddr; /* Pointer to next TPL in chain; if + * pointer is odd: this is the last + * TPL. Pointing to itself can cause + * problems! + */ + volatile unsigned short Status; /* Initialized by the adapter: + * CSTAT_REQUEST important: update least + * significant bit first! Set by the + * adapter: CSTAT_COMPLETE status. + */ + unsigned short FrameSize; /* Number of bytes to be transmitted + * as a frame including AC/FC, + * Destination, Source, Routing field + * not including CRC, FS, End Delimiter + * (valid only if START_FRAME bit in + * CSTAT nonzero) must not be zero in + * any list; maximum value: (BUFFER_SIZE + * - 8) * TX_BUF_MAX sum of DataCount + * values in FragmentList must equal + * Frame_Size value in START_FRAME TPL! + * frame data fragment list. + */ + + /* TPL/RPL size in OPEN parameter list depending on maximal + * numbers of fragments used in one parameter list. + */ + Fragment FragList[TX_FRAG_NUM]; /* Maximum: nine frame fragments in one + * TPL actual version of firmware: 9 + * fragments possible. + */ +#pragma pack() + + /* Special proprietary data and precalculations */ + + TPL *NextTPLPtr; /* Pointer to next TPL in chain. */ + unsigned char *MData; + struct sk_buff *Skb; + unsigned char TPLIndex; + volatile unsigned char BusyFlag;/* Flag: TPL busy? */ +}; + +/* ---------------------Receive Functions-------------------------------* + * define RECEIVE_CSTAT_REQUEST (R) and RECEIVE_CSTAT_COMPLETE (C) values. + * (high-low) + */ +#define RX_VALID 0x0080 /* R: set; tell adapter with + * RECEIVE.VALID interrupt. + * C: reset to zero. + */ +#define RX_FRAME_COMPLETE 0x0040 /* R: must be reset to zero, + * C: set to one. + */ +#define RX_START_FRAME 0x0020 /* R: must be reset to zero. + * C: set to one on the list. + */ +#define RX_END_FRAME 0x0010 /* R: must be reset to zero. + * C: set to one on the list + * that ends the frame. + */ +#define RX_FRAME_IRQ 0x0008 /* R: request interrupt generation + * after receive. + * C: unchanged. + */ +#define RX_INTERFRAME_WAIT 0x0004 /* R: after receiving a frame: + * interrupt and wait for a + * RECEIVE.CONTINUE. + * C: unchanged. + */ +#define RX_PASS_CRC 0x0002 /* R: if set, the adapter includes + * the CRC in data passed. (last four + * bytes; valid only if FRAME_START is + * set) + * C: set, if CRC is included in + * received data. + */ +#define RX_PASS_SRC_ADDR 0x0001 /* R: adapter uses explicit frame + * source address and does not + * overwrite with the adapter node + * address. (valid only if FRAME_START + * is set) + * C: unchanged. + */ +#define RX_RECEIVE_FS 0xFC00 /* R: reserved; must be reset to zero. + * C: on lists with START_FRAME, field + * contains frame status field from + * received frame; otherwise cleared. + */ +#define RX_ADDR_MATCH 0x0300 /* R: reserved; must be reset to zero. + * C: address match code mask. + */ +#define RX_STATUS_MASK 0x00FF /* Mask for receive status bits. */ + +#define RX_INTERN_ADDR_MATCH 0x0100 /* C: internally address match. */ +#define RX_EXTERN_ADDR_MATCH 0x0200 /* C: externally matched via + * XMATCH/XFAIL interface. + */ +#define RX_INTEXT_ADDR_MATCH 0x0300 /* C: internally and externally + * matched. + */ +#define RX_READY (RX_VALID | RX_FRAME_IRQ) /* Ready for receive. */ + +/* Constants for Command Status Interrupt. + * COMMAND_REJECT status field bit functions (SSB.Parm[0]) + */ +#define ILLEGAL_COMMAND 0x0080 /* Set if an unknown command + * is issued to the adapter + */ +#define ADDRESS_ERROR 0x0040 /* Set if any address field in + * the SCB is odd. (not word aligned) + */ +#define ADAPTER_OPEN 0x0020 /* Command issued illegal with + * open adapter. + */ +#define ADAPTER_CLOSE 0x0010 /* Command issued illegal with + * closed adapter. + */ +#define SAME_COMMAND 0x0008 /* Command issued with same command + * already executing. + */ + +/* OPEN_COMPLETION values (SSB.Parm[0], MSB) */ +#define NODE_ADDR_ERROR 0x0040 /* Wrong address or BIA read + * zero address. + */ +#define LIST_SIZE_ERROR 0x0020 /* If List_Size value not in 0, + * 14, 20, 26. + */ +#define BUF_SIZE_ERROR 0x0010 /* Not enough available memory for + * two buffers. + */ +#define TX_BUF_COUNT_ERROR 0x0004 /* Remaining receive buffers less than + * two. + */ +#define OPEN_ERROR 0x0002 /* Error during ring insertion; more + * information in bits 8-15. + */ + +/* Standard return codes */ +#define GOOD_COMPLETION 0x0080 /* =OPEN_SUCCESSFULL */ +#define INVALID_OPEN_OPTION 0x0001 /* OPEN options are not supported by + * the adapter. + */ + +/* OPEN phases; details of OPEN_ERROR (SSB.Parm[0], LSB) */ +#define OPEN_PHASES_MASK 0xF000 /* Check only the bits 8-11. */ +#define LOBE_MEDIA_TEST 0x1000 +#define PHYSICAL_INSERTION 0x2000 +#define ADDRESS_VERIFICATION 0x3000 +#define PARTICIPATION_IN_RING_POLL 0x4000 +#define REQUEST_INITIALISATION 0x5000 +#define FULLDUPLEX_CHECK 0x6000 + +/* OPEN error codes; details of OPEN_ERROR (SSB.Parm[0], LSB) */ +#define OPEN_ERROR_CODES_MASK 0x0F00 /* Check only the bits 12-15. */ +#define OPEN_FUNCTION_FAILURE 0x0100 /* Unable to transmit to itself or + * frames received before insertion. + */ +#define OPEN_SIGNAL_LOSS 0x0200 /* Signal loss condition detected at + * receiver. + */ +#define OPEN_TIMEOUT 0x0500 /* Insertion timer expired before + * logical insertion. + */ +#define OPEN_RING_FAILURE 0x0600 /* Unable to receive own ring purge + * MAC frames. + */ +#define OPEN_RING_BEACONING 0x0700 /* Beacon MAC frame received after + * ring insertion. + */ +#define OPEN_DUPLICATE_NODEADDR 0x0800 /* Other station in ring found + * with the same address. + */ +#define OPEN_REQUEST_INIT 0x0900 /* RPS present but does not respond. */ +#define OPEN_REMOVE_RECEIVED 0x0A00 /* Adapter received a remove adapter + * MAC frame. + */ +#define OPEN_FULLDUPLEX_SET 0x0D00 /* Got this with full duplex on when + * trying to connect to a normal ring. + */ + +/* SET_BRIDGE_PARMS return codes: */ +#define BRIDGE_INVALID_MAX_LEN 0x4000 /* MAX_ROUTING_FIELD_LENGTH odd, + * less than 6 or > 30. + */ +#define BRIDGE_INVALID_SRC_RING 0x2000 /* SOURCE_RING number zero, too large + * or = TARGET_RING. + */ +#define BRIDGE_INVALID_TRG_RING 0x1000 /* TARGET_RING number zero, too large + * or = SOURCE_RING. + */ +#define BRIDGE_INVALID_BRDGE_NO 0x0800 /* BRIDGE_NUMBER too large. */ +#define BRIDGE_INVALID_OPTIONS 0x0400 /* Invalid bridge options. */ +#define BRIDGE_DIAGS_FAILED 0x0200 /* Diagnostics of TMS380SRA failed. */ +#define BRIDGE_NO_SRA 0x0100 /* The TMS380SRA does not exist in HW + * configuration. + */ + +/* + * Bring Up Diagnostics error codes. + */ +#define BUD_INITIAL_ERROR 0x0 +#define BUD_CHECKSUM_ERROR 0x1 +#define BUD_ADAPTER_RAM_ERROR 0x2 +#define BUD_INSTRUCTION_ERROR 0x3 +#define BUD_CONTEXT_ERROR 0x4 +#define BUD_PROTOCOL_ERROR 0x5 +#define BUD_INTERFACE_ERROR 0x6 + +/* BUD constants */ +#define BUD_MAX_RETRIES 3 +#define BUD_MAX_LOOPCNT 6 +#define BUD_TIMEOUT 3000 + +/* Initialization constants */ +#define INIT_MAX_RETRIES 3 /* Maximum three retries. */ +#define INIT_MAX_LOOPCNT 22 /* Maximum loop counts. */ + +/* RING STATUS field values (high/low) */ +#define SIGNAL_LOSS 0x0080 /* Loss of signal on the ring + * detected. + */ +#define HARD_ERROR 0x0040 /* Transmitting or receiving beacon + * frames. + */ +#define SOFT_ERROR 0x0020 /* Report error MAC frame + * transmitted. + */ +#define TRANSMIT_BEACON 0x0010 /* Transmitting beacon frames on the + * ring. + */ +#define LOBE_WIRE_FAULT 0x0008 /* Open or short circuit in the + * cable to concentrator; adapter + * closed. + */ +#define AUTO_REMOVAL_ERROR 0x0004 /* Lobe wrap test failed, deinserted; + * adapter closed. + */ +#define REMOVE_RECEIVED 0x0001 /* Received a remove ring station MAC + * MAC frame request; adapter closed. + */ +#define COUNTER_OVERFLOW 0x8000 /* Overflow of one of the adapters + * error counters; READ.ERROR.LOG. + */ +#define SINGLE_STATION 0x4000 /* Adapter is the only station on the + * ring. + */ +#define RING_RECOVERY 0x2000 /* Claim token MAC frames on the ring; + * reset after ring purge frame. + */ + +#define ADAPTER_CLOSED (LOBE_WIRE_FAULT | AUTO_REMOVAL_ERROR |\ + REMOVE_RECEIVED) + +/* Adapter_check_block.Status field bit assignments: */ +#define DIO_PARITY 0x8000 /* Adapter detects bad parity + * through direct I/O access. + */ +#define DMA_READ_ABORT 0x4000 /* Aborting DMA read operation + * from system Parm[0]: 0=timeout, + * 1=parity error, 2=bus error; + * Parm[1]: 32 bit pointer to host + * system address at failure. + */ +#define DMA_WRITE_ABORT 0x2000 /* Aborting DMA write operation + * to system. (parameters analogous to + * DMA_READ_ABORT) + */ +#define ILLEGAL_OP_CODE 0x1000 /* Illegal operation code in the + * the adapters firmware Parm[0]-2: + * communications processor registers + * R13-R15. + */ +#define PARITY_ERRORS 0x0800 /* Adapter detects internal bus + * parity error. + */ +#define RAM_DATA_ERROR 0x0080 /* Valid only during RAM testing; + * RAM data error Parm[0-1]: 32 bit + * pointer to RAM location. + */ +#define RAM_PARITY_ERROR 0x0040 /* Valid only during RAM testing; + * RAM parity error Parm[0-1]: 32 bit + * pointer to RAM location. + */ +#define RING_UNDERRUN 0x0020 /* Internal DMA underrun when + * transmitting onto ring. + */ +#define INVALID_IRQ 0x0008 /* Unrecognized interrupt generated + * internal to adapter Parm[0-2]: + * adapter register R13-R15. + */ +#define INVALID_ERROR_IRQ 0x0004 /* Unrecognized error interrupt + * generated Parm[0-2]: adapter register + * R13-R15. + */ +#define INVALID_XOP 0x0002 /* Unrecognized XOP request in + * communication processor Parm[0-2]: + * adapter register R13-R15. + */ +#define CHECKADDR 0x05E0 /* Adapter check status information + * address offset. + */ +#define ROM_PAGE_0 0x0000 /* Adapter ROM page 0. */ + +/* + * RECEIVE.STATUS interrupt result SSB values: (high-low) + * (RECEIVE_COMPLETE field bit definitions in SSB.Parm[0]) + */ +#define RX_COMPLETE 0x0080 /* SSB.Parm[0]; SSB.Parm[1]: 32 + * bit pointer to last RPL. + */ +#define RX_SUSPENDED 0x0040 /* SSB.Parm[0]; SSB.Parm[1]: 32 + * bit pointer to RPL with odd + * forward pointer. + */ + +/* Valid receive CSTAT: */ +#define RX_FRAME_CONTROL_BITS (RX_VALID | RX_START_FRAME | RX_END_FRAME | \ + RX_FRAME_COMPLETE) +#define VALID_SINGLE_BUFFER_FRAME (RX_START_FRAME | RX_END_FRAME | \ + RX_FRAME_COMPLETE) + +typedef enum SKB_STAT SKB_STAT; +enum SKB_STAT { + SKB_UNAVAILABLE, + SKB_DMA_DIRECT, + SKB_DATA_COPY +}; + +/* Receive Parameter List (RPL) The length of the RPLs has to be initialized + * in the OPL. (OPEN parameter list) + */ +#define RPL_NUM 3 + +#define RX_FRAG_NUM 1 /* Maximal number of used fragments in one RPL. + * (up to firmware v2.24: 3, now: up to 9) + */ + +#pragma pack(1) +typedef struct s_RPL RPL; +struct s_RPL { /* Receive Parameter List */ + unsigned long NextRPLAddr; /* Pointer to next RPL in chain + * (normalized = physical 32 bit + * address) if pointer is odd: this + * is last RPL. Pointing to itself can + * cause problems! + */ + volatile unsigned short Status; /* Set by creation of Receive Parameter + * List RECEIVE_CSTAT_COMPLETE set by + * adapter in lists that start or end + * a frame. + */ + volatile unsigned short FrameSize; /* Number of bytes received as a + * frame including AC/FC, Destination, + * Source, Routing field not including + * CRC, FS (Frame Status), End Delimiter + * (valid only if START_FRAME bit in + * CSTAT nonzero) must not be zero in + * any list; maximum value: (BUFFER_SIZE + * - 8) * TX_BUF_MAX sum of DataCount + * values in FragmentList must equal + * Frame_Size value in START_FRAME TPL! + * frame data fragment list + */ + + /* TPL/RPL size in OPEN parameter list depending on maximal numbers + * of fragments used in one parameter list. + */ + Fragment FragList[RX_FRAG_NUM]; /* Maximum: nine frame fragments in + * one TPL. Actual version of firmware: + * 9 fragments possible. + */ +#pragma pack() + + /* Special proprietary data and precalculations. */ + RPL *NextRPLPtr; /* Logical pointer to next RPL in chain. */ + unsigned char *MData; + struct sk_buff *Skb; + SKB_STAT SkbStat; + int RPLIndex; +}; + +#define TMS_ISA 1 +#define TMS_PCI 2 +struct cardinfo_table { + int type; /* 1 = ISA, 2 = PCI */ + int vendor_id; + int device_id; + char *name; +}; + +/* Information that need to be kept for each board. */ +typedef struct net_local { +#pragma pack(1) + IPB ipb; /* Initialization Parameter Block. */ + SCB scb; /* System Command Block: system to adapter + * communication. + */ + SSB ssb; /* System Status Block: adapter to system + * communication. + */ + OPB ocpl; /* Open Options Parameter Block. */ + + ERRORTAB errorlogtable; /* Adapter statistic error counters. + * (read from adapter memory) + */ + unsigned char ProductID[PROD_ID_SIZE + 1]; /* Product ID */ +#pragma pack() + + TPL Tpl[TPL_NUM]; + TPL *TplFree; + TPL *TplBusy; + unsigned char LocalTxBuffers[TPL_NUM][DEFAULT_PACKET_SIZE]; + + RPL Rpl[RPL_NUM]; + RPL *RplHead; + RPL *RplTail; + unsigned char LocalRxBuffers[RPL_NUM][DEFAULT_PACKET_SIZE]; + + int DataRate; + unsigned char ScbInUse; + unsigned short CMDqueue; + + unsigned long AdapterOpenFlag:1; + unsigned long AdapterVirtOpenFlag:1; + unsigned long OpenCommandIssued:1; + unsigned long TransmitCommandActive:1; + unsigned long TransmitHaltScheduled:1; + unsigned long HaltInProgress:1; + unsigned long LobeWireFaultLogged:1; + unsigned long ReOpenInProgress:1; + unsigned long Sleeping:1; + + unsigned long LastOpenStatus; + unsigned short CurrentRingStatus; + unsigned long MaxPacketSize; + + unsigned long StartTime; + unsigned long LastSendTime; + + struct sk_buff_head SendSkbQueue; + unsigned short QueueSkb; + + struct tr_statistics MacStat; /* MAC statistics structure */ + + struct cardinfo_table *CardType; + + struct timer_list timer; + + wait_queue_head_t wait_for_tok_int; + + INTPTRS intptrs; /* Internal adapter pointer. Must be read + * before OPEN command. + */ +} NET_LOCAL; + +#endif /* __KERNEL__ */ +#endif /* __LINUX_TMS380TR_H */ diff --git a/drivers/net/tokenring/tms380tr_microcode.h b/drivers/net/tokenring/tms380tr_microcode.h new file mode 100644 index 000000000..3c03f1f6f --- /dev/null +++ b/drivers/net/tokenring/tms380tr_microcode.h @@ -0,0 +1,3622 @@ +/* + * The firmware this driver downloads into the tokenring card is a + * separate program and is not GPL'd source code, even though the Linux + * side driver and the routine that loads this data into the card are. + * + * This firmware is licensed to you strictly for use in conjunction + * with the use of SysKonnect TokenRing adapters. There is no + * waranty expressed or implied about its fitness for any purpose. + */ + +/* tms380tr_microcode.h: TI TMS380 Token Ring driver COMMprocessor microcode + * + * Notes: + * - Loaded from tms380tr_reset_adapter upon adapter reset. + * + * This microcode is loaded into the TMS380 COMMprocessor during adapter + * initialization. It is copyright Texas Instruments and contains + * intellectual property of both TI and their contractors. + * + * TMS380 COMMprocessor Microcode Version 3.11 for Token Ring. + * + * Available from TI in COFF format (EAGLECAF.OUT). + * + */ + +#include <linux/config.h> + +#if defined(CONFIG_TMS380TR) || defined(CONFIG_TMS380TR_MODULE) + +unsigned char tms380tr_code[] = { + 0x00, 0x00, 0x00, 0xA0, 0x00, 0x20, 0x68, 0x54, + 0x73, 0x69, 0x63, 0x20, 0x64, 0x6F, 0x20, 0x65, + 0x73, 0x69, 0x72, 0x20, 0x6C, 0x65, 0x61, 0x65, + 0x65, 0x73, 0x20, 0x64, 0x6E, 0x75, 0x65, 0x64, + 0x20, 0x72, 0x69, 0x6C, 0x65, 0x63, 0x63, 0x6E, + 0x20, 0x65, 0x6E, 0x4F, 0x79, 0x6C, 0x20, 0x2C, + 0x6C, 0x41, 0x20, 0x6C, 0x69, 0x72, 0x68, 0x67, + 0x73, 0x74, 0x72, 0x20, 0x73, 0x65, 0x72, 0x65, + 0x65, 0x76, 0x2E, 0x64, 0x60, 0x01, 0x42, 0x01, + 0x00, 0x08, 0x08, 0x16, 0xB0, 0x03, 0xE0, 0x04, + 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0x13, 0x80, 0x03, 0xA0, 0x07, 0x42, 0x01, + 0x00, 0x08, 0x20, 0x07, 0x00, 0x00, 0xE0, 0x04, + 0x00, 0x01, 0x8B, 0x07, 0x00, 0x3D, 0x60, 0x01, + 0x42, 0x01, 0x80, 0x00, 0x09, 0x13, 0x8B, 0x07, + 0x00, 0x2D, 0x20, 0xC0, 0x4E, 0x01, 0x80, 0x02, + 0x41, 0x0F, 0x02, 0x11, 0x8B, 0x07, 0x00, 0x3D, + 0x0B, 0xC8, 0x4A, 0x01, 0x00, 0x02, 0x00, 0x90, + 0xA0, 0x09, 0x00, 0xC8, 0x66, 0x01, 0xE0, 0x02, + 0xA0, 0x00, 0xA0, 0x07, 0x04, 0x01, 0x20, 0x00, + 0xA0, 0x01, 0x40, 0x01, 0x00, 0xFE, 0x20, 0x48, + 0x2A, 0xE0, 0x42, 0x01, 0xE0, 0x04, 0x02, 0x01, + 0xE0, 0x04, 0x60, 0x09, 0xE0, 0x04, 0x82, 0x01, + 0x60, 0x01, 0x1C, 0x01, 0x04, 0x00, 0x03, 0x16, + 0xE0, 0x01, 0x40, 0x01, 0x00, 0x0C, 0xA0, 0x06, + 0xBC, 0xA1, 0xA0, 0x07, 0x04, 0x01, 0x2D, 0x00, + 0x20, 0xC2, 0x00, 0xE0, 0x88, 0x02, 0x11, 0xE3, + 0x14, 0x16, 0xA0, 0x07, 0x04, 0x01, 0x2E, 0x00, + 0x60, 0x01, 0x42, 0x01, 0x00, 0x03, 0x0D, 0x16, + 0xA0, 0x07, 0x04, 0x01, 0x21, 0x00, 0x88, 0x07, + 0x00, 0xA0, 0x89, 0x07, 0xFE, 0xFF, 0xA8, 0x09, + 0xA9, 0x09, 0x8A, 0x07, 0x02, 0xE0, 0xA0, 0x06, + 0x84, 0xEC, 0x56, 0x10, 0x88, 0x07, 0x00, 0x90, + 0x89, 0x07, 0xFE, 0x9F, 0xA8, 0x09, 0xA9, 0x09, + 0x8A, 0x07, 0x78, 0xE0, 0xA0, 0x06, 0x84, 0xEC, + 0x4B, 0x10, 0xA0, 0x05, 0x04, 0x01, 0x88, 0x07, + 0x08, 0x00, 0x89, 0x07, 0x7A, 0x00, 0x00, 0x03, + 0x01, 0x00, 0xA0, 0x06, 0xD2, 0xAC, 0x40, 0x10, + 0xA0, 0x06, 0xBC, 0xA1, 0xE0, 0x02, 0xF4, 0x03, + 0x88, 0x07, 0xA0, 0x00, 0x89, 0x07, 0xFE, 0x00, + 0xA0, 0x06, 0xD2, 0xAC, 0x35, 0x10, 0xE0, 0x02, + 0xA0, 0x00, 0xE0, 0x04, 0x7E, 0x01, 0xC8, 0x04, + 0x09, 0x02, 0xF2, 0x03, 0x48, 0x62, 0xE0, 0xC1, + 0x40, 0x01, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, + 0x18, 0xCE, 0x09, 0x06, 0xFD, 0x16, 0xA0, 0x01, + 0x40, 0x01, 0x00, 0x40, 0x07, 0xC8, 0x40, 0x01, + 0x88, 0x07, 0xF4, 0x03, 0x89, 0x07, 0xFE, 0x3F, + 0xA0, 0x06, 0xD2, 0xAC, 0x19, 0x10, 0xE0, 0x02, + 0xA0, 0x00, 0xA0, 0x06, 0xFA, 0xAD, 0x14, 0x10, + 0x08, 0xC8, 0x44, 0x04, 0x09, 0xC8, 0x46, 0x04, + 0xA0, 0x06, 0x28, 0xAD, 0x0D, 0x10, 0x81, 0x07, + 0x7C, 0xE0, 0xB1, 0xC0, 0x26, 0x13, 0x01, 0xC8, + 0xE0, 0x00, 0xA0, 0x05, 0x04, 0x01, 0x92, 0x06, + 0x03, 0x10, 0x60, 0xC0, 0xE0, 0x00, 0xF5, 0x10, + 0xE0, 0x01, 0x04, 0x01, 0x10, 0x00, 0xB0, 0x03, + 0xFF, 0x10, 0xA0, 0x01, 0x04, 0x01, 0x00, 0x80, + 0x80, 0x03, 0x80, 0x07, 0xA0, 0x00, 0xC2, 0x04, + 0x80, 0xCC, 0x81, 0x07, 0xAA, 0xA1, 0x82, 0x02, + 0x1E, 0x00, 0x02, 0x16, 0x81, 0x07, 0xB4, 0xA1, + 0x81, 0xC4, 0x81, 0x8C, 0xE9, 0x16, 0x82, 0x02, + 0x7C, 0x00, 0xF2, 0x16, 0x00, 0x03, 0x0F, 0x00, + 0x5B, 0x04, 0x81, 0x07, 0x08, 0xE1, 0x82, 0x07, + 0x04, 0x00, 0xE0, 0x04, 0x80, 0x01, 0xE0, 0x04, + 0x82, 0x01, 0x91, 0xC4, 0xB1, 0x8C, 0xD8, 0x16, + 0x82, 0x02, 0x7C, 0x00, 0xFA, 0x16, 0x20, 0xC8, + 0x04, 0xE0, 0x82, 0x01, 0x20, 0xE8, 0x0C, 0xE0, + 0x82, 0x01, 0x20, 0xC8, 0x10, 0xE0, 0x80, 0x01, + 0x81, 0x07, 0x86, 0xE0, 0xB1, 0xC0, 0x07, 0x13, + 0xB1, 0xC4, 0xFC, 0x10, 0xA0, 0x07, 0x04, 0x01, + 0x2E, 0x00, 0x60, 0x04, 0xAA, 0xA1, 0x81, 0x07, + 0x34, 0xE0, 0x82, 0x07, 0xFC, 0x05, 0x83, 0x07, + 0x0A, 0x00, 0xB1, 0xCC, 0x43, 0x06, 0xFD, 0x16, + 0x02, 0x02, 0x00, 0x06, 0x60, 0xD0, 0x4E, 0x01, + 0xED, 0x13, 0x21, 0x02, 0x00, 0xF7, 0x21, 0x02, + 0x00, 0xC0, 0x81, 0xDC, 0x60, 0xD0, 0x4F, 0x01, + 0xC1, 0xC0, 0x41, 0x09, 0x21, 0x02, 0x00, 0xF0, + 0x81, 0xDC, 0x43, 0x02, 0x00, 0x0F, 0x23, 0x02, + 0x00, 0xF0, 0x83, 0xDC, 0x01, 0x02, 0x32, 0x0C, + 0xA0, 0xC0, 0x44, 0x04, 0xE0, 0xC0, 0x46, 0x04, + 0x03, 0xC1, 0x02, 0x61, 0x84, 0x05, 0x04, 0xC8, + 0x48, 0x04, 0x03, 0xC1, 0x84, 0x05, 0x04, 0xA1, + 0x01, 0xA1, 0x04, 0xC8, 0x30, 0x0C, 0x03, 0xC1, + 0x84, 0x05, 0xF1, 0x04, 0x04, 0x06, 0xFD, 0x16, + 0x08, 0x02, 0x00, 0xA0, 0xA8, 0x09, 0x60, 0xC2, + 0x30, 0x0C, 0x29, 0x02, 0xFF, 0x03, 0xA9, 0x09, + 0x29, 0x02, 0x40, 0x00, 0x80, 0x07, 0x00, 0x90, + 0xA0, 0x09, 0x8A, 0x07, 0xFE, 0x9F, 0x2A, 0x02, + 0xFF, 0x03, 0xAA, 0x09, 0x01, 0x02, 0x32, 0x0C, + 0x05, 0x02, 0x00, 0x00, 0x03, 0xC1, 0x84, 0x05, + 0x11, 0x07, 0xC1, 0x05, 0x85, 0x05, 0x04, 0x06, + 0x0B, 0x13, 0x85, 0x80, 0xF9, 0x1A, 0x05, 0x80, + 0xF8, 0x1A, 0x85, 0x82, 0xF5, 0x1A, 0x05, 0x82, + 0xF4, 0x1A, 0x45, 0x82, 0xF1, 0x1A, 0xF1, 0x10, + 0x20, 0x2D, 0x02, 0x00, 0x60, 0x01, 0x40, 0x01, + 0x00, 0x40, 0x06, 0x16, 0x8A, 0x07, 0x00, 0x08, + 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, 0x48, 0x10, + 0x60, 0x01, 0x42, 0x01, 0x00, 0x80, 0x06, 0x16, + 0x8A, 0x07, 0x00, 0x10, 0xA0, 0x01, 0x42, 0x01, + 0x00, 0x80, 0x3E, 0x10, 0x60, 0x01, 0x02, 0x01, + 0x00, 0x10, 0x0A, 0x16, 0x60, 0x01, 0x00, 0x01, + 0x00, 0x04, 0x06, 0x16, 0x8A, 0x07, 0x00, 0x80, + 0xA0, 0x01, 0x02, 0x01, 0x00, 0x10, 0x30, 0x10, + 0x60, 0x01, 0x02, 0x01, 0x00, 0x08, 0x0A, 0x16, + 0x60, 0x01, 0x00, 0x01, 0x00, 0x04, 0x06, 0x16, + 0xA0, 0x01, 0x02, 0x01, 0x00, 0x08, 0x0D, 0x02, + 0x01, 0x00, 0x0D, 0x10, 0x60, 0x01, 0x02, 0x01, + 0x00, 0x04, 0x16, 0x16, 0x60, 0x01, 0x00, 0x01, + 0x00, 0x08, 0x12, 0x16, 0xA0, 0x01, 0x02, 0x01, + 0x00, 0x04, 0x0D, 0x02, 0x02, 0x00, 0xA0, 0xC3, + 0x0E, 0x01, 0xE0, 0xC3, 0x10, 0x01, 0x8A, 0x07, + 0x00, 0x20, 0x60, 0x01, 0x00, 0x01, 0x00, 0x80, + 0x0B, 0x13, 0x8A, 0x07, 0x00, 0x40, 0x08, 0x10, + 0x8A, 0x07, 0x04, 0x00, 0x05, 0x10, 0x8A, 0x07, + 0x02, 0x00, 0x02, 0x10, 0x8A, 0x07, 0x08, 0x00, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x04, 0x82, 0x01, + 0x8B, 0x07, 0xE0, 0x05, 0xCA, 0xCE, 0xCD, 0xCE, + 0xCE, 0xCE, 0xCF, 0xC6, 0x20, 0xC3, 0x58, 0x07, + 0x20, 0x23, 0x04, 0xE0, 0x12, 0x13, 0x8B, 0x07, + 0x18, 0xFF, 0x8A, 0x02, 0x00, 0x80, 0x0A, 0x13, + 0x8B, 0x05, 0xCD, 0xA2, 0x8A, 0x02, 0x00, 0x40, + 0x05, 0x13, 0x8A, 0x02, 0x00, 0x20, 0x02, 0x13, + 0x8B, 0x07, 0x1D, 0xFF, 0x0B, 0xC8, 0x04, 0x01, + 0x0D, 0x10, 0x20, 0xD3, 0x05, 0x01, 0xFD, 0x11, + 0x20, 0xD8, 0xDF, 0x07, 0x17, 0x01, 0x8B, 0x07, + 0x80, 0xFF, 0x0B, 0xC8, 0x04, 0x01, 0x20, 0xE8, + 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x04, 0x01, + 0xE0, 0x22, 0x86, 0xE1, 0xFB, 0x16, 0xE0, 0x02, + 0xA0, 0x00, 0xE0, 0x04, 0x82, 0x01, 0x20, 0xE8, + 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x00, 0x01, + 0xE0, 0x22, 0x06, 0xE0, 0xF8, 0x13, 0xA0, 0x01, + 0x40, 0x01, 0x00, 0xF6, 0x60, 0x04, 0x90, 0xA0, + 0x00, 0x03, 0x02, 0x00, 0xA0, 0x07, 0x02, 0x01, + 0xFF, 0xDF, 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, + 0x00, 0x03, 0x02, 0x00, 0x09, 0x07, 0xA0, 0xC2, + 0x04, 0x01, 0x8A, 0x01, 0x80, 0x00, 0x4A, 0x52, + 0x89, 0xD2, 0x0A, 0xC8, 0x04, 0x01, 0xA0, 0xD2, + 0x04, 0x01, 0xF9, 0x16, 0x49, 0x05, 0x89, 0x01, + 0x00, 0x80, 0x49, 0x01, 0x00, 0x40, 0x0E, 0x13, + 0x09, 0xF8, 0x3A, 0x07, 0x60, 0xC2, 0x36, 0x07, + 0x03, 0x16, 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, + 0xE0, 0x04, 0x36, 0x07, 0x54, 0x04, 0x90, 0x03, + 0xFF, 0xFF, 0x80, 0x03, 0x60, 0x22, 0x86, 0xE1, + 0xC2, 0x13, 0xE0, 0x04, 0x82, 0x01, 0x60, 0x04, + 0xE0, 0xA3, 0x00, 0x03, 0x02, 0x00, 0xA0, 0x07, + 0x62, 0x09, 0xE8, 0x03, 0xC9, 0x04, 0xA0, 0xC1, + 0x34, 0x06, 0x04, 0x16, 0xA0, 0x06, 0x50, 0xB5, + 0xE0, 0x04, 0x20, 0x09, 0x86, 0x07, 0xE8, 0x05, + 0xA0, 0x01, 0x40, 0x01, 0x00, 0x80, 0x20, 0xC2, + 0x84, 0x01, 0x20, 0x48, 0x08, 0xE0, 0x84, 0x01, + 0x20, 0x22, 0x08, 0xE0, 0x08, 0x13, 0x60, 0x01, + 0xAE, 0x01, 0x01, 0x00, 0x04, 0x16, 0xE0, 0x01, + 0x34, 0x06, 0x00, 0x80, 0x06, 0x10, 0x20, 0xC2, + 0x32, 0x09, 0x06, 0x13, 0xE0, 0x01, 0x34, 0x06, + 0x00, 0x08, 0xE0, 0x04, 0x30, 0x06, 0x09, 0x07, + 0xA0, 0x05, 0xEE, 0x05, 0x20, 0x06, 0xEC, 0x05, + 0x02, 0x16, 0x16, 0xC2, 0x03, 0x16, 0x49, 0xC2, + 0x12, 0x16, 0x80, 0x03, 0x98, 0xC5, 0xE8, 0xC1, + 0x02, 0x00, 0xE0, 0xE9, 0x14, 0xE0, 0x04, 0x00, + 0xD7, 0x04, 0x27, 0x02, 0x08, 0x00, 0xA0, 0x06, + 0xE6, 0xB4, 0x16, 0xC2, 0x04, 0x13, 0x28, 0xC8, + 0x08, 0x00, 0xEC, 0x05, 0xEF, 0x13, 0x54, 0x04, + 0x00, 0x03, 0x02, 0x00, 0xE0, 0xC1, 0x86, 0x01, + 0x47, 0x02, 0x0E, 0x00, 0xA7, 0xC2, 0x90, 0xE1, + 0x5A, 0x04, 0x8A, 0x07, 0x00, 0xA0, 0x0A, 0xC8, + 0x86, 0x01, 0xC7, 0xA1, 0x27, 0x02, 0x98, 0xE1, + 0x37, 0xE8, 0x34, 0x06, 0x17, 0xE8, 0xD2, 0x06, + 0xE0, 0x04, 0x30, 0x06, 0x60, 0x04, 0xF2, 0xA9, + 0x0A, 0xE8, 0xD2, 0x06, 0xE0, 0x01, 0x34, 0x06, + 0x00, 0x08, 0xE0, 0x04, 0x30, 0x06, 0x20, 0xE0, + 0x18, 0xE0, 0x5B, 0x04, 0xA0, 0x05, 0x20, 0x09, + 0x20, 0x88, 0x20, 0x09, 0x16, 0xE0, 0xE5, 0x1A, + 0xE0, 0x04, 0x20, 0x09, 0xA0, 0x06, 0xD0, 0xD5, + 0x80, 0x03, 0xA0, 0x05, 0x32, 0x09, 0x80, 0x03, + 0x01, 0xC3, 0xFB, 0x13, 0x60, 0x01, 0x6A, 0x09, + 0x01, 0x00, 0x78, 0x13, 0xA0, 0x05, 0x32, 0x09, + 0x75, 0x10, 0x41, 0xC0, 0x06, 0x13, 0x01, 0xC8, + 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, 0x01, 0x11, + 0x7B, 0x10, 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, + 0x79, 0x16, 0x20, 0xD8, 0x2F, 0x09, 0x83, 0x01, + 0x41, 0xC0, 0x04, 0x13, 0x01, 0xC8, 0x8A, 0x01, + 0x01, 0xC8, 0x18, 0x09, 0x86, 0x07, 0x43, 0x00, + 0x06, 0xC8, 0x6C, 0x01, 0x07, 0x02, 0x02, 0xFC, + 0x17, 0xC2, 0x60, 0x04, 0xFA, 0xA6, 0xE0, 0x04, + 0x18, 0x09, 0xC7, 0x61, 0x08, 0x07, 0x60, 0x01, + 0x06, 0xFC, 0x40, 0x00, 0x02, 0x13, 0x08, 0x02, + 0x01, 0x00, 0x09, 0x10, 0x4C, 0xC2, 0x20, 0xC3, + 0x00, 0xFC, 0x2A, 0x13, 0x0C, 0xC8, 0x6C, 0x01, + 0xE0, 0xC2, 0x02, 0xFC, 0x1B, 0x11, 0x4B, 0x01, + 0x00, 0x01, 0xF4, 0x16, 0xC8, 0x22, 0x12, 0x13, + 0xCB, 0x01, 0x00, 0x40, 0x0B, 0xC8, 0x02, 0xFC, + 0x0D, 0x10, 0xE0, 0xC1, 0x18, 0x09, 0x01, 0xC3, + 0x21, 0x13, 0x4C, 0xC2, 0x15, 0x13, 0x0C, 0xC8, + 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, 0x06, 0x11, + 0xCC, 0x81, 0xD5, 0x13, 0x4C, 0xC2, 0x20, 0xC3, + 0x00, 0xFC, 0xF4, 0x10, 0x09, 0xC8, 0x6C, 0x01, + 0xE0, 0xC2, 0x02, 0xFC, 0x1E, 0x16, 0xA0, 0x07, + 0x02, 0xFC, 0x00, 0x80, 0x09, 0xC3, 0x19, 0x10, + 0x09, 0xC8, 0x6C, 0x01, 0xE0, 0xC2, 0x02, 0xFC, + 0x05, 0x16, 0xA0, 0x07, 0x02, 0xFC, 0x00, 0x80, + 0x09, 0xC3, 0x0F, 0x10, 0xE0, 0xC2, 0x02, 0x0C, + 0x01, 0x11, 0x1E, 0x10, 0x20, 0xD8, 0x00, 0xE2, + 0x83, 0x01, 0x8B, 0x09, 0x8B, 0x09, 0x8B, 0x09, + 0x8B, 0x09, 0xA0, 0x07, 0x8A, 0x01, 0x43, 0x00, + 0x13, 0x10, 0x0C, 0xC8, 0x8A, 0x01, 0x0C, 0xC8, + 0x18, 0x09, 0x0E, 0x10, 0x00, 0x03, 0x02, 0x00, + 0xE0, 0xC0, 0x6C, 0x01, 0x20, 0xC3, 0x8A, 0x01, + 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, 0x81, 0x13, + 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, 0xB9, 0x13, + 0x01, 0x83, 0x31, 0x16, 0x03, 0xC8, 0x6C, 0x01, + 0x40, 0x01, 0x10, 0x00, 0x14, 0x16, 0xE0, 0xC2, + 0x2E, 0x06, 0x11, 0x13, 0xE0, 0xC2, 0xF8, 0x05, + 0x0E, 0x13, 0xE0, 0x01, 0x3A, 0x07, 0x00, 0x80, + 0x80, 0x01, 0x10, 0x00, 0xE0, 0xC2, 0x36, 0x07, + 0x06, 0x13, 0xE0, 0x04, 0x36, 0x07, 0x80, 0x01, + 0x20, 0x00, 0x60, 0x04, 0xF2, 0xA9, 0x40, 0x01, + 0x20, 0x00, 0xF9, 0x13, 0x90, 0x03, 0xFF, 0x11, + 0x80, 0x03, 0x08, 0x01, 0x00, 0x04, 0x19, 0x16, + 0x60, 0x01, 0x6A, 0x09, 0x01, 0x00, 0x15, 0x16, + 0x88, 0x01, 0x00, 0x1A, 0xC8, 0x01, 0x00, 0x01, + 0xC8, 0xC5, 0x0F, 0x10, 0xE0, 0x04, 0x18, 0x09, + 0xC0, 0x01, 0x04, 0x00, 0x15, 0x10, 0x81, 0xC1, + 0x01, 0xC8, 0x6C, 0x01, 0x07, 0x02, 0x00, 0xFC, + 0x77, 0xC0, 0x17, 0xC2, 0x48, 0x01, 0x00, 0x18, + 0xE4, 0x13, 0x40, 0x01, 0x40, 0x00, 0x15, 0x16, + 0x80, 0x01, 0x45, 0x00, 0x46, 0xC1, 0x20, 0xD0, + 0x07, 0xFC, 0x60, 0x81, 0x18, 0x09, 0xE6, 0x13, + 0xE0, 0xC2, 0x08, 0xFC, 0x08, 0x11, 0xE0, 0xC2, + 0x0E, 0xFC, 0x07, 0x15, 0x06, 0x13, 0xE0, 0xC2, + 0x14, 0xFC, 0x03, 0x15, 0x02, 0x13, 0xC0, 0x01, + 0x01, 0x00, 0x48, 0x01, 0x00, 0x01, 0x11, 0x13, + 0x40, 0x01, 0x80, 0x40, 0x69, 0x13, 0x60, 0x04, + 0x66, 0xA6, 0x48, 0x01, 0x01, 0x00, 0x03, 0x16, + 0x40, 0x01, 0x00, 0x40, 0x0B, 0x16, 0xC8, 0x01, + 0x00, 0x40, 0xA0, 0x05, 0x32, 0x09, 0xC8, 0xC5, + 0x05, 0x10, 0xC0, 0x01, 0x40, 0x00, 0x40, 0x01, + 0x04, 0x00, 0xEF, 0x13, 0xB7, 0x01, 0x20, 0x00, + 0xD7, 0xC2, 0xC4, 0x62, 0x0B, 0x05, 0x2B, 0x02, + 0xFC, 0xFF, 0xCB, 0xC5, 0x02, 0x15, 0x46, 0x81, + 0x6A, 0x13, 0x08, 0x01, 0x00, 0x5E, 0x67, 0x16, + 0x08, 0x01, 0x88, 0x00, 0x13, 0x16, 0x86, 0x02, + 0x43, 0x00, 0x25, 0x16, 0x40, 0x01, 0x00, 0x40, + 0x0B, 0x13, 0x08, 0x01, 0x03, 0x00, 0x08, 0x13, + 0x84, 0xC2, 0x2A, 0x02, 0xD8, 0xFF, 0x06, 0xC8, + 0x6C, 0x01, 0x0A, 0x68, 0x04, 0xFC, 0x73, 0x10, + 0x60, 0x04, 0xD2, 0xA8, 0x40, 0x01, 0x01, 0x00, + 0xEA, 0x13, 0x08, 0x01, 0x02, 0x00, 0xE7, 0x16, + 0x48, 0x01, 0x01, 0x00, 0xE4, 0x16, 0x40, 0x01, + 0x00, 0x40, 0x04, 0x16, 0x60, 0x01, 0xA8, 0x09, + 0x80, 0x00, 0xDD, 0x13, 0x8A, 0x07, 0x80, 0x00, + 0xA0, 0x06, 0x32, 0xA5, 0xD8, 0x10, 0x00, 0xC0, + 0xE7, 0x11, 0x60, 0xC2, 0x6A, 0x09, 0x40, 0x01, + 0x00, 0x40, 0x0A, 0x13, 0x48, 0x01, 0x01, 0x00, + 0x34, 0x13, 0x48, 0x01, 0x02, 0x00, 0x0A, 0x13, + 0x49, 0x01, 0x04, 0x00, 0xD9, 0x16, 0x06, 0x10, + 0x49, 0x01, 0x02, 0x00, 0x03, 0x13, 0x08, 0x01, + 0x03, 0x00, 0x6E, 0x13, 0x49, 0x01, 0x01, 0x00, + 0x12, 0x13, 0x40, 0x01, 0x80, 0x40, 0x01, 0x16, + 0x46, 0xC1, 0xE0, 0x04, 0x00, 0xFC, 0x87, 0x07, + 0xF8, 0x05, 0x17, 0xC2, 0x14, 0x13, 0xC7, 0x05, + 0x17, 0xC8, 0x6C, 0x01, 0x05, 0xC8, 0x00, 0xFC, + 0xC6, 0xC5, 0x60, 0x04, 0x66, 0xA6, 0x07, 0x02, + 0x02, 0xFC, 0xE0, 0xA1, 0x2C, 0x09, 0xE0, 0xCD, + 0xEE, 0x05, 0xE0, 0xC5, 0x04, 0xFC, 0x20, 0xC8, + 0x2C, 0x09, 0x04, 0xFC, 0xE2, 0x10, 0xC5, 0xCD, + 0xC6, 0xC5, 0x60, 0x04, 0x66, 0xA6, 0x60, 0x04, + 0xB6, 0xA8, 0x06, 0xC8, 0x6C, 0x01, 0x85, 0x81, + 0x1A, 0x13, 0xE0, 0xC2, 0x04, 0xFC, 0x17, 0x15, + 0x86, 0xC2, 0x8A, 0xA2, 0xAA, 0xC1, 0x32, 0x0C, + 0x06, 0xC8, 0x6C, 0x01, 0x0B, 0xA8, 0x04, 0xFC, + 0x1A, 0x09, 0x0A, 0xC8, 0x6C, 0x01, 0xE0, 0xC2, + 0x02, 0xFC, 0xE0, 0x04, 0x00, 0xFC, 0x06, 0xC8, + 0x6C, 0x01, 0x0B, 0xC8, 0x02, 0xFC, 0xA0, 0x06, + 0x3E, 0xB4, 0x06, 0xC8, 0x6C, 0x01, 0xE0, 0x04, + 0x00, 0xFC, 0xA0, 0x01, 0x02, 0xFC, 0x02, 0x00, + 0x87, 0x07, 0x30, 0x06, 0xE7, 0x01, 0x04, 0x00, + 0x40, 0x00, 0xD7, 0x04, 0x27, 0x02, 0x0C, 0x00, + 0x05, 0xC2, 0x60, 0x01, 0x6A, 0x09, 0x04, 0x00, + 0x03, 0x16, 0xE0, 0x01, 0x02, 0xFC, 0x20, 0x00, + 0xA0, 0x06, 0xFC, 0xB4, 0xC0, 0x01, 0x20, 0x00, + 0x60, 0x04, 0x66, 0xA6, 0x48, 0x01, 0x00, 0x18, + 0x03, 0x13, 0x48, 0x01, 0x00, 0x10, 0x02, 0x16, + 0xA0, 0x05, 0x32, 0x09, 0x86, 0x02, 0x43, 0x00, + 0x03, 0x13, 0x40, 0x01, 0x80, 0x40, 0x98, 0x13, + 0x06, 0xC8, 0x6C, 0x01, 0xE0, 0x04, 0x00, 0xFC, + 0x85, 0xC2, 0xA0, 0x06, 0x3E, 0xB4, 0x20, 0x06, + 0x62, 0x09, 0xE6, 0x16, 0xA0, 0x06, 0xD0, 0xD5, + 0xE3, 0x10, 0xA0, 0xC2, 0xF6, 0x05, 0x56, 0x16, + 0x19, 0xC8, 0xF0, 0x05, 0xA9, 0xC2, 0x0A, 0x00, + 0x0D, 0x11, 0xA0, 0xF2, 0x2E, 0x09, 0x0A, 0xD8, + 0x80, 0x01, 0x29, 0xC8, 0x06, 0x00, 0x8C, 0x01, + 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, 0x09, 0xC8, + 0xF4, 0x05, 0x46, 0x10, 0x29, 0xC8, 0x06, 0x00, + 0x6C, 0x01, 0x20, 0xC8, 0x0E, 0xFC, 0xBC, 0x01, + 0x20, 0xC8, 0x10, 0xFC, 0xB0, 0x01, 0x20, 0xC8, + 0x12, 0xFC, 0xB2, 0x01, 0xA0, 0xF2, 0x2E, 0x09, + 0x8A, 0x01, 0x00, 0x10, 0xA0, 0x01, 0x80, 0x01, + 0x00, 0xC4, 0xE1, 0x10, 0x47, 0x01, 0x08, 0x00, + 0x06, 0x16, 0xA8, 0xC2, 0x06, 0x00, 0xA0, 0x06, + 0x3E, 0xB4, 0xE8, 0x04, 0x06, 0x00, 0x07, 0x01, + 0x20, 0x00, 0x31, 0x13, 0xE8, 0x04, 0x02, 0x00, + 0x3B, 0x10, 0xE0, 0x04, 0x00, 0xFC, 0xA0, 0x06, + 0x3E, 0xB4, 0x29, 0x10, 0x00, 0x03, 0x02, 0x00, + 0x20, 0xC2, 0x8C, 0x01, 0xE0, 0xC0, 0x6C, 0x01, + 0x20, 0xC2, 0xF4, 0x05, 0x28, 0xC8, 0x08, 0x00, + 0x6C, 0x01, 0xE8, 0xC1, 0x0A, 0x00, 0x20, 0xC3, + 0x02, 0xFC, 0x8C, 0x01, 0x20, 0x00, 0x0C, 0xC8, + 0x02, 0xFC, 0x0C, 0x01, 0x00, 0xFE, 0x3B, 0x16, + 0x47, 0x01, 0x40, 0x00, 0x50, 0x13, 0x60, 0xC2, + 0xF0, 0x05, 0xA7, 0x16, 0xE0, 0x04, 0xF4, 0x05, + 0x0C, 0xCA, 0x08, 0x00, 0x47, 0x01, 0x80, 0x00, + 0xC9, 0x16, 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, + 0xA0, 0xC2, 0x00, 0xFC, 0xD2, 0x16, 0xE8, 0xC1, + 0x02, 0x00, 0xD7, 0xC2, 0x0F, 0x16, 0x27, 0x02, + 0x10, 0x00, 0xD8, 0x04, 0x57, 0xC2, 0x0E, 0x13, + 0xC7, 0x05, 0x57, 0xC2, 0x48, 0xC6, 0xC8, 0xC5, + 0x03, 0xC8, 0x6C, 0x01, 0x0D, 0x11, 0x90, 0x03, + 0xFF, 0x11, 0x80, 0x03, 0xD7, 0x04, 0xC3, 0x01, + 0x00, 0x80, 0xED, 0x10, 0xE7, 0x01, 0xF4, 0xFF, + 0x20, 0x00, 0xC8, 0xCD, 0xC8, 0xC5, 0xF0, 0x10, + 0x90, 0x03, 0xF8, 0x11, 0xE0, 0x02, 0xC0, 0x00, + 0x60, 0xC3, 0xFA, 0x00, 0xA0, 0xC3, 0xFC, 0x00, + 0xE0, 0xC3, 0xFE, 0x00, 0x54, 0x04, 0xE8, 0xC2, + 0x08, 0x00, 0xA8, 0xC2, 0x06, 0x00, 0x0C, 0xC3, + 0x33, 0x11, 0x20, 0x23, 0x0A, 0xE0, 0x45, 0x13, + 0x20, 0x23, 0x10, 0xE0, 0x46, 0x13, 0x20, 0x23, + 0x0E, 0xE0, 0x13, 0x13, 0xE0, 0x21, 0x16, 0xE0, + 0xB6, 0x16, 0x20, 0x23, 0x06, 0xE0, 0x03, 0x16, + 0x20, 0x27, 0xA8, 0xE4, 0x0A, 0x13, 0xE8, 0xC2, + 0x08, 0x00, 0xA8, 0xC2, 0x06, 0x00, 0x4C, 0x01, + 0x88, 0x00, 0xA9, 0x16, 0x0C, 0x01, 0x44, 0x00, + 0xA6, 0x16, 0x20, 0x06, 0x16, 0x09, 0xA3, 0x13, + 0x0A, 0xC8, 0x6C, 0x01, 0x20, 0xC8, 0x04, 0xE0, + 0x02, 0xFC, 0x0B, 0xC8, 0x6C, 0x01, 0xA0, 0x07, + 0x02, 0xFC, 0x00, 0x81, 0x20, 0xC3, 0x80, 0x01, + 0xA0, 0x01, 0x80, 0x01, 0x00, 0xC4, 0x0C, 0xC8, + 0x80, 0x01, 0x0A, 0xC8, 0x8C, 0x01, 0xAC, 0x10, + 0x0A, 0xC2, 0x0F, 0x13, 0x08, 0xC8, 0x6C, 0x01, + 0xA0, 0xC2, 0x00, 0xFC, 0x20, 0xC3, 0x02, 0xFC, + 0x20, 0x23, 0x12, 0xE0, 0xF5, 0x16, 0x0B, 0xC8, + 0x6C, 0x01, 0x0C, 0xC8, 0x02, 0xFC, 0x60, 0x04, + 0x72, 0xA9, 0x8A, 0x07, 0x00, 0x04, 0x60, 0x04, + 0x8A, 0xA3, 0x8A, 0x07, 0x20, 0x00, 0x60, 0x04, + 0x8A, 0xA3, 0x8A, 0x07, 0x00, 0x02, 0x20, 0x27, + 0x0E, 0xE0, 0x04, 0x16, 0xA0, 0x06, 0x32, 0xA5, + 0xC3, 0x01, 0x00, 0x80, 0xA8, 0xC2, 0x06, 0x00, + 0x60, 0x04, 0x98, 0xA9, 0x00, 0x03, 0x02, 0x00, + 0xC0, 0x01, 0x10, 0x00, 0xE0, 0xC2, 0x2E, 0x06, + 0x08, 0x13, 0xE0, 0xC2, 0xF8, 0x05, 0x05, 0x13, + 0xE0, 0x01, 0x3A, 0x07, 0x00, 0x80, 0x80, 0x01, + 0x10, 0x00, 0x90, 0x03, 0xFF, 0x7F, 0x80, 0x03, + 0x00, 0x03, 0x02, 0x00, 0x20, 0xC2, 0xF6, 0x05, + 0x20, 0xE2, 0xF4, 0x05, 0x0E, 0x16, 0x20, 0xD8, + 0x2E, 0x09, 0x80, 0x01, 0x2B, 0xC8, 0x06, 0x00, + 0x8C, 0x01, 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, + 0x0B, 0xC8, 0xF4, 0x05, 0x90, 0x03, 0xFF, 0xFF, + 0x80, 0x03, 0x87, 0x07, 0xF0, 0x05, 0xDB, 0x04, + 0x57, 0xC2, 0x05, 0x16, 0xCB, 0xCD, 0xCB, 0xC5, + 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, 0xC7, 0x05, + 0x57, 0xC2, 0x4B, 0xC6, 0xCB, 0xC5, 0x90, 0x03, + 0xFF, 0xFF, 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, + 0x0B, 0xC2, 0x20, 0xC3, 0xF4, 0x05, 0x0F, 0x13, + 0xA8, 0xC2, 0x0A, 0x00, 0x4A, 0x01, 0x10, 0x00, + 0x16, 0x16, 0xA0, 0x22, 0x04, 0xE0, 0x1A, 0x16, + 0x08, 0xC3, 0xA0, 0x06, 0x36, 0xAC, 0x0C, 0xC2, + 0x20, 0xC3, 0xF4, 0x05, 0x13, 0x16, 0x68, 0x01, + 0x0A, 0x00, 0x10, 0x00, 0x03, 0x13, 0xE0, 0xC2, + 0xF6, 0x05, 0x05, 0x16, 0xA0, 0x06, 0x78, 0xAC, + 0x90, 0x03, 0xFF, 0xFF, 0x80, 0x03, 0x87, 0x07, + 0xF0, 0x05, 0xA0, 0x06, 0xE6, 0xB4, 0x90, 0x03, + 0xFF, 0xFF, 0x80, 0x03, 0x87, 0x07, 0xF0, 0x05, + 0xA0, 0x06, 0x2C, 0xB5, 0x80, 0x03, 0x00, 0x03, + 0x02, 0x00, 0x87, 0x07, 0xF0, 0x05, 0xCB, 0xC2, + 0x08, 0x16, 0xA0, 0x06, 0x36, 0xAC, 0x20, 0x07, + 0xF6, 0x05, 0x60, 0xCB, 0xF4, 0x05, 0x02, 0x00, + 0x80, 0x03, 0xE0, 0x04, 0xF6, 0x05, 0x20, 0xC2, + 0xF4, 0x05, 0x05, 0x16, 0x17, 0xC2, 0x03, 0x13, + 0xD8, 0xC5, 0xA0, 0x06, 0x78, 0xAC, 0x80, 0x03, + 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC3, 0xA0, 0x06, + 0x36, 0xAC, 0x8C, 0xC2, 0xCC, 0xC1, 0x27, 0x02, + 0x10, 0x00, 0x88, 0x07, 0xF0, 0x05, 0x88, 0xC1, + 0x18, 0xC2, 0x26, 0x13, 0xA8, 0x82, 0x02, 0x00, + 0xFA, 0x16, 0xE8, 0xC2, 0x0A, 0x00, 0xE0, 0x22, + 0x1E, 0xE0, 0xF5, 0x16, 0x98, 0xC5, 0xE0, 0x22, + 0x1C, 0xE0, 0x0B, 0x16, 0x28, 0xC8, 0x06, 0x00, + 0xF4, 0x00, 0xE0, 0x02, 0xE0, 0x00, 0xA0, 0x06, + 0x3E, 0xB4, 0xE0, 0x02, 0xC0, 0x00, 0xE8, 0x04, + 0x06, 0x00, 0xE0, 0x22, 0x18, 0xE0, 0xE4, 0x13, + 0x20, 0xEA, 0x22, 0xE0, 0x0A, 0x00, 0xA0, 0xEA, + 0x18, 0xE0, 0x04, 0x00, 0xDA, 0x04, 0xA0, 0x06, + 0xE6, 0xB4, 0x47, 0x06, 0x06, 0xC2, 0xD8, 0x10, + 0x06, 0xC8, 0xF2, 0x05, 0x60, 0xCB, 0xF4, 0x05, + 0x02, 0x00, 0x54, 0x04, 0x20, 0xC2, 0xF4, 0x05, + 0x13, 0x13, 0xE0, 0x01, 0x9C, 0x01, 0x00, 0x40, + 0x8B, 0x0B, 0x8B, 0x0B, 0x60, 0x01, 0x9C, 0x01, + 0x00, 0x40, 0x0A, 0x16, 0x60, 0xC2, 0x6C, 0x01, + 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, 0xA0, 0xC2, + 0x02, 0xFC, 0x03, 0x11, 0x09, 0xC8, 0x6C, 0x01, + 0x5B, 0x04, 0x09, 0xC8, 0x6C, 0x01, 0x4B, 0xC2, + 0x87, 0x07, 0xF0, 0x05, 0xA0, 0x06, 0x2C, 0xB5, + 0xE0, 0x04, 0xF4, 0x05, 0x59, 0x04, 0xA8, 0xC2, + 0x0A, 0x00, 0x0D, 0x11, 0xA0, 0xF2, 0x2E, 0x09, + 0x0A, 0xD8, 0x80, 0x01, 0x28, 0xC8, 0x06, 0x00, + 0x8C, 0x01, 0xA0, 0x07, 0x16, 0x09, 0x04, 0x00, + 0x08, 0xC8, 0xF4, 0x05, 0x5B, 0x04, 0x20, 0xC3, + 0x6C, 0x01, 0x28, 0xC8, 0x06, 0x00, 0x6C, 0x01, + 0x20, 0xC8, 0x0E, 0xFC, 0xBC, 0x01, 0x20, 0xC8, + 0x10, 0xFC, 0xB0, 0x01, 0x20, 0xC8, 0x12, 0xFC, + 0xB2, 0x01, 0x0C, 0xC8, 0x6C, 0x01, 0xA0, 0xF2, + 0x2E, 0x09, 0x8A, 0x01, 0x00, 0x10, 0xA0, 0x01, + 0x80, 0x01, 0x00, 0xC4, 0xDD, 0x10, 0x48, 0xC0, + 0x89, 0xC0, 0x81, 0x60, 0xC2, 0x05, 0x5B, 0x04, + 0x0B, 0xC3, 0xA0, 0x06, 0xC8, 0xAC, 0x41, 0xCC, + 0x42, 0x06, 0xFD, 0x16, 0xA0, 0x06, 0xC8, 0xAC, + 0x01, 0xC1, 0x44, 0x8C, 0x12, 0x16, 0xC4, 0x05, + 0x42, 0x06, 0xFB, 0x16, 0x04, 0x02, 0x0E, 0xAD, + 0x03, 0x02, 0x01, 0x01, 0x94, 0x06, 0x03, 0x02, + 0x5A, 0x5A, 0x94, 0x06, 0x43, 0x05, 0x94, 0x06, + 0x03, 0x07, 0x94, 0x06, 0xC3, 0x04, 0x94, 0x06, + 0xCC, 0x05, 0x5C, 0x04, 0xCB, 0xC1, 0xA0, 0x06, + 0xC8, 0xAC, 0x43, 0xCC, 0x42, 0x06, 0xFD, 0x16, + 0xA0, 0x06, 0xC8, 0xAC, 0x43, 0x8C, 0xF5, 0x16, + 0x42, 0x06, 0xFC, 0x16, 0x57, 0x04, 0x8B, 0xC2, + 0x08, 0xC0, 0x49, 0xC1, 0x85, 0x05, 0x80, 0x02, + 0x40, 0x00, 0x03, 0x11, 0x80, 0x02, 0x4F, 0x00, + 0x45, 0x12, 0x01, 0x02, 0xC8, 0xAC, 0xA1, 0x09, + 0x01, 0x80, 0x40, 0x13, 0x01, 0x02, 0xF8, 0xAD, + 0xA1, 0x09, 0x01, 0x80, 0x3B, 0x13, 0x60, 0xC0, + 0x06, 0x00, 0xA1, 0x09, 0x01, 0x80, 0x36, 0x13, + 0x81, 0x05, 0x01, 0x80, 0x33, 0x13, 0x4A, 0xC0, + 0xA1, 0x09, 0x01, 0x80, 0x2F, 0x13, 0x00, 0xC8, + 0x6A, 0x01, 0x80, 0x02, 0x80, 0x00, 0x17, 0x14, + 0x01, 0x02, 0x00, 0xF8, 0xA0, 0xC1, 0x40, 0x01, + 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, 0x02, 0x02, + 0x00, 0x10, 0x03, 0x02, 0x00, 0x04, 0xB1, 0xCC, + 0x43, 0x06, 0xFD, 0x16, 0xA0, 0x01, 0x40, 0x01, + 0x00, 0x40, 0x08, 0x02, 0x10, 0xF8, 0x06, 0xC8, + 0x40, 0x01, 0x00, 0xC0, 0x02, 0x13, 0x08, 0x02, + 0x00, 0xF8, 0x09, 0x02, 0xFE, 0xFB, 0xA0, 0x06, + 0xD2, 0xAC, 0x25, 0x10, 0x80, 0x02, 0x80, 0x00, + 0x09, 0x14, 0x01, 0x02, 0x00, 0xF8, 0x02, 0x02, + 0x00, 0x10, 0x03, 0x02, 0x00, 0x04, 0x72, 0xCC, + 0x43, 0x06, 0xFD, 0x16, 0x80, 0x05, 0x80, 0x02, + 0x80, 0x00, 0x04, 0x12, 0x60, 0x01, 0x04, 0x01, + 0x20, 0x00, 0x05, 0x13, 0x40, 0x81, 0xAB, 0x16, + 0x80, 0x02, 0x80, 0x00, 0x0B, 0x14, 0xA0, 0x07, + 0x6A, 0x01, 0x7E, 0x00, 0x02, 0x02, 0x00, 0x10, + 0x03, 0x02, 0x00, 0x04, 0xC1, 0x04, 0x81, 0xCC, + 0x43, 0x06, 0xFD, 0x16, 0xCA, 0x05, 0x5A, 0x04, + 0x00, 0x02, 0xEA, 0xAD, 0x01, 0x02, 0x1A, 0xAF, + 0x40, 0x02, 0x00, 0xFC, 0x41, 0x02, 0x00, 0xFC, + 0x40, 0x80, 0x04, 0x13, 0xA0, 0x07, 0x04, 0x01, + 0x3C, 0x00, 0x5B, 0x04, 0xC0, 0x04, 0x01, 0x02, + 0x08, 0x00, 0x02, 0x02, 0x00, 0x12, 0xE0, 0xC1, + 0x40, 0x01, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x04, + 0x03, 0x02, 0x00, 0x01, 0x00, 0xC8, 0x6A, 0x01, + 0xA0, 0xCC, 0x10, 0xF8, 0x80, 0x05, 0x03, 0x06, + 0xF9, 0x16, 0x22, 0x02, 0x00, 0x02, 0x01, 0x06, + 0xF3, 0x16, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, + 0x07, 0xC8, 0x40, 0x01, 0x00, 0x02, 0x00, 0x08, + 0x40, 0xC0, 0x01, 0x06, 0x01, 0xC8, 0x6A, 0x01, + 0x61, 0x02, 0x00, 0x80, 0x01, 0xC8, 0x10, 0xF8, + 0x00, 0x06, 0xF6, 0x16, 0xC0, 0x04, 0xC8, 0x04, + 0xC9, 0x04, 0x03, 0x02, 0x00, 0x08, 0x00, 0xC8, + 0x6A, 0x01, 0x80, 0xC1, 0x66, 0x02, 0x00, 0x80, + 0x20, 0xC1, 0x10, 0xF8, 0x06, 0x81, 0x15, 0x16, + 0x08, 0xC2, 0x06, 0x13, 0x80, 0x05, 0x03, 0x06, + 0xF2, 0x16, 0x08, 0xC2, 0x0D, 0x13, 0x19, 0x10, + 0xA0, 0x07, 0x10, 0xF8, 0x55, 0x55, 0x20, 0xC1, + 0x10, 0xF8, 0x84, 0x02, 0x55, 0x55, 0x02, 0x16, + 0x06, 0xC2, 0xF0, 0x10, 0x06, 0x81, 0xEE, 0x13, + 0x5B, 0x04, 0xA0, 0x07, 0x10, 0xF8, 0x55, 0x55, + 0x60, 0xC1, 0x10, 0xF8, 0x05, 0x81, 0x03, 0x13, + 0x85, 0x02, 0x55, 0x55, 0xF5, 0x16, 0x08, 0xC2, + 0xE1, 0x13, 0x40, 0xC2, 0x09, 0x06, 0x48, 0x02, + 0xFF, 0x07, 0xC0, 0x04, 0x01, 0x02, 0x08, 0x00, + 0x02, 0x02, 0x00, 0x12, 0x03, 0x02, 0x00, 0x01, + 0x00, 0xC8, 0x6A, 0x01, 0x32, 0xC8, 0x10, 0xF8, + 0x80, 0x05, 0x03, 0x06, 0xF9, 0x16, 0x22, 0x02, + 0x00, 0x02, 0x01, 0x06, 0xF3, 0x16, 0x88, 0x02, + 0x40, 0x00, 0x13, 0x15, 0x89, 0x02, 0x4F, 0x00, + 0x10, 0x11, 0xC0, 0x04, 0x02, 0x02, 0x00, 0x12, + 0x01, 0x02, 0x08, 0x00, 0x03, 0x02, 0x00, 0x01, + 0x80, 0xCC, 0x03, 0x06, 0xFD, 0x16, 0x22, 0x02, + 0x00, 0x02, 0x01, 0x06, 0xF7, 0x16, 0xCB, 0x05, + 0x5B, 0x04, 0xA0, 0x07, 0x04, 0x01, 0x37, 0x00, + 0x5B, 0x04, 0x33, 0x07, 0x33, 0x07, 0x0C, 0x10, + 0x13, 0x07, 0x23, 0x07, 0x02, 0x00, 0xCB, 0xC8, + 0x06, 0x00, 0x23, 0x02, 0x18, 0x00, 0xE0, 0xCC, + 0x6C, 0x01, 0xCD, 0xCC, 0xCE, 0xCC, 0xCF, 0xCC, + 0x83, 0x07, 0x30, 0x06, 0xD3, 0xC1, 0x0A, 0x13, + 0x83, 0x07, 0x36, 0x07, 0xD3, 0xC1, 0x06, 0x13, + 0x83, 0x07, 0xA0, 0x00, 0x93, 0x00, 0x0C, 0xC8, + 0x6C, 0x01, 0x80, 0x03, 0x63, 0x07, 0x02, 0x00, + 0x2A, 0x15, 0x63, 0xC2, 0x04, 0x00, 0x63, 0x42, + 0x06, 0x00, 0xDB, 0x13, 0x63, 0xC3, 0x1A, 0x00, + 0x49, 0xD2, 0x0C, 0x13, 0xC9, 0x06, 0x49, 0x72, + 0x69, 0xD2, 0xC0, 0xE1, 0xC9, 0x06, 0x49, 0x72, + 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, + 0x02, 0x00, 0x52, 0x04, 0x69, 0xC2, 0xC0, 0xE1, + 0x49, 0x72, 0x29, 0x02, 0x10, 0x00, 0xC3, 0xC2, + 0xE9, 0xA2, 0xA8, 0xE1, 0x1B, 0xC3, 0x89, 0x02, + 0x12, 0x00, 0x0F, 0x13, 0xDC, 0xC6, 0x03, 0x16, + 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, + 0x02, 0x00, 0x4C, 0xCB, 0x04, 0x00, 0x90, 0x03, + 0xFF, 0x01, 0x93, 0x00, 0x0C, 0xC8, 0x6C, 0x01, + 0x80, 0x03, 0x0C, 0xC8, 0x6C, 0x01, 0xE0, 0xC6, + 0x00, 0xFC, 0xF1, 0x16, 0xE9, 0x48, 0x04, 0xE0, + 0x04, 0x00, 0x49, 0xCB, 0x02, 0x00, 0x4C, 0xCB, + 0x04, 0x00, 0xED, 0x10, 0x00, 0x03, 0x02, 0x00, + 0xDB, 0xC2, 0x63, 0xC2, 0x04, 0x00, 0x4B, 0x42, + 0x9F, 0x13, 0x49, 0xD2, 0x0E, 0x13, 0xC9, 0x06, + 0x49, 0x72, 0x69, 0xD2, 0xC0, 0xE1, 0xC9, 0x06, + 0x49, 0x72, 0xE9, 0x48, 0x04, 0xE0, 0x04, 0x00, + 0x49, 0xCB, 0x02, 0x00, 0x90, 0x03, 0xFF, 0xFF, + 0x80, 0x03, 0x69, 0xC2, 0xC0, 0xE1, 0x49, 0x72, + 0x29, 0x02, 0x10, 0x00, 0xC3, 0xC2, 0xE9, 0xA2, + 0xA8, 0xE1, 0x1B, 0xC3, 0x89, 0x02, 0x12, 0x00, + 0x0C, 0x13, 0xDC, 0xC6, 0x03, 0x16, 0xE9, 0x48, + 0x04, 0xE0, 0x04, 0x00, 0x49, 0xCB, 0x02, 0x00, + 0x4C, 0xCB, 0x04, 0x00, 0x90, 0x03, 0xFF, 0xFF, + 0x80, 0x03, 0x0C, 0xC8, 0x6C, 0x01, 0xE0, 0xC6, + 0x00, 0xFC, 0xF4, 0x16, 0xF0, 0x10, 0x00, 0x03, + 0x02, 0x00, 0xBB, 0xC2, 0xBB, 0xC1, 0x86, 0xD1, + 0x03, 0x13, 0x86, 0xEA, 0x04, 0x00, 0x13, 0x10, + 0xA6, 0xD1, 0xC0, 0xE1, 0xC6, 0x06, 0x86, 0x71, + 0xCA, 0xC1, 0xE6, 0xA1, 0xB8, 0xE1, 0xA6, 0xEA, + 0x14, 0xE0, 0x04, 0x00, 0x1B, 0xC2, 0x86, 0x02, + 0x02, 0x00, 0x03, 0x16, 0xA0, 0x06, 0x0C, 0xB5, + 0x02, 0x10, 0xA0, 0x06, 0xE6, 0xB4, 0xDA, 0x04, + 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0xAB, 0xC2, + 0x06, 0x00, 0x8C, 0x07, 0xE8, 0x05, 0x5C, 0xC2, + 0x16, 0x13, 0xA0, 0xC1, 0xEC, 0x05, 0x8A, 0x81, + 0x1A, 0x1A, 0xC6, 0xC1, 0x09, 0xC2, 0x59, 0xC2, + 0x20, 0x13, 0xE9, 0xA1, 0x08, 0x00, 0x87, 0x82, + 0xF9, 0x12, 0xA9, 0xA2, 0x08, 0x00, 0x87, 0x62, + 0xCA, 0xCA, 0x08, 0x00, 0x4A, 0x6A, 0x08, 0x00, + 0xC9, 0xC6, 0x0B, 0xC6, 0x80, 0x03, 0xCA, 0xCA, + 0x08, 0x00, 0x0A, 0xC8, 0xEC, 0x05, 0xDB, 0x04, + 0x0B, 0xCF, 0x0B, 0xC7, 0x80, 0x03, 0x8A, 0x61, + 0x46, 0xCA, 0x08, 0x00, 0xCA, 0xCA, 0x08, 0x00, + 0x0A, 0xC8, 0xEC, 0x05, 0xC9, 0xC6, 0x0B, 0xC7, + 0x80, 0x03, 0x87, 0x62, 0xCA, 0xCA, 0x08, 0x00, + 0xDB, 0x04, 0x0B, 0xC6, 0x0B, 0xCB, 0x02, 0x00, + 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0xBB, 0xC1, + 0xDB, 0xC2, 0x8C, 0x07, 0xE8, 0x05, 0x4C, 0xC2, + 0xED, 0x04, 0x02, 0x00, 0x09, 0xC2, 0x59, 0xC2, + 0x18, 0x13, 0xA9, 0x81, 0x02, 0x00, 0xFA, 0x16, + 0xE9, 0x82, 0x04, 0x00, 0xF7, 0x16, 0x49, 0xCB, + 0x04, 0x00, 0x99, 0xC2, 0x0A, 0xC6, 0x0A, 0x13, + 0x08, 0x83, 0x04, 0x13, 0xA9, 0xAA, 0x08, 0x00, + 0x08, 0x00, 0x80, 0x03, 0x2A, 0xA8, 0x08, 0x00, + 0xEC, 0x05, 0x80, 0x03, 0x08, 0xCB, 0x02, 0x00, + 0x80, 0x03, 0x2D, 0x07, 0x02, 0x00, 0x8C, 0x07, + 0x08, 0x00, 0x06, 0xA3, 0x4C, 0xC2, 0x09, 0xC2, + 0x59, 0xC2, 0x13, 0x13, 0xE9, 0x82, 0x04, 0x00, + 0xFA, 0x16, 0xAD, 0x07, 0x02, 0x00, 0x01, 0x00, + 0x49, 0xCB, 0x04, 0x00, 0x19, 0xC6, 0x01, 0x13, + 0x80, 0x03, 0x08, 0x83, 0x04, 0x16, 0xA0, 0x49, + 0x14, 0xE0, 0x04, 0x00, 0x80, 0x03, 0x08, 0xCB, + 0x02, 0x00, 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, + 0x0B, 0x06, 0x1F, 0x11, 0x4D, 0x13, 0x8B, 0x07, + 0x00, 0x4E, 0x60, 0x01, 0x42, 0x01, 0x80, 0x00, + 0x09, 0x13, 0x8B, 0x07, 0x00, 0x3A, 0x20, 0xC1, + 0x4E, 0x01, 0x84, 0x02, 0x41, 0x0F, 0x02, 0x11, + 0x8B, 0x07, 0x00, 0x4E, 0x0B, 0xC8, 0x44, 0x01, + 0xA0, 0x07, 0x62, 0x09, 0xE8, 0x03, 0xE0, 0x01, + 0x40, 0x01, 0x00, 0x02, 0xE0, 0x01, 0x40, 0x01, + 0x00, 0x20, 0x84, 0x07, 0x34, 0xAF, 0x60, 0x04, + 0x42, 0xAF, 0x20, 0xC8, 0x16, 0xE0, 0xE0, 0x00, + 0xE0, 0xC2, 0x6A, 0x09, 0xE0, 0x22, 0x10, 0xE0, + 0x03, 0x13, 0x20, 0xE8, 0x14, 0xE0, 0xE0, 0x00, + 0x20, 0xC8, 0x04, 0xE0, 0x82, 0x01, 0x20, 0xC8, + 0xE2, 0x00, 0x8A, 0x01, 0xE0, 0x04, 0x18, 0x09, + 0xE0, 0x04, 0xF4, 0x05, 0xE0, 0x04, 0xF8, 0x05, + 0xE0, 0x04, 0xF0, 0x05, 0xE0, 0x04, 0x42, 0x07, + 0xA0, 0x07, 0x88, 0x01, 0x20, 0x00, 0xE0, 0xC2, + 0x30, 0x09, 0x09, 0x13, 0xA0, 0x07, 0x88, 0x01, + 0x80, 0x00, 0x20, 0xE8, 0x16, 0xE0, 0x80, 0x01, + 0xE0, 0x01, 0x82, 0x01, 0x00, 0x03, 0x8B, 0x07, + 0x00, 0xA0, 0x0B, 0xE8, 0x86, 0x01, 0x80, 0x03, + 0xE0, 0x04, 0x86, 0x01, 0xE0, 0x01, 0x9C, 0x01, + 0x40, 0x00, 0xE0, 0x01, 0x9C, 0x01, 0x00, 0x40, + 0xCB, 0x04, 0xB0, 0x03, 0x0B, 0x06, 0x04, 0x13, + 0x60, 0x01, 0x9C, 0x01, 0x00, 0x40, 0xF9, 0x16, + 0xE0, 0x04, 0x82, 0x01, 0x20, 0xE8, 0x08, 0xE0, + 0x6A, 0x09, 0x8B, 0x07, 0x00, 0x80, 0x0B, 0xC8, + 0x98, 0x07, 0x0B, 0xC8, 0x78, 0x07, 0x20, 0xC8, + 0x04, 0xE0, 0x82, 0x01, 0x8B, 0x07, 0x6F, 0x87, + 0x0B, 0x48, 0x3A, 0x07, 0xE0, 0xC2, 0x50, 0x07, + 0x8B, 0x02, 0x58, 0x07, 0x10, 0x13, 0x20, 0xE8, + 0x0A, 0xE0, 0x00, 0x01, 0xE0, 0xC2, 0x00, 0x01, + 0xE0, 0x22, 0x06, 0xE0, 0xF8, 0x13, 0x8B, 0x07, + 0x58, 0x07, 0x0B, 0xC8, 0x50, 0x07, 0x8B, 0x07, + 0x0C, 0xB8, 0x0B, 0xC8, 0x52, 0x07, 0x80, 0x03, + 0x00, 0x03, 0x02, 0x00, 0xE0, 0xC2, 0x1A, 0x09, + 0x0C, 0x13, 0x20, 0x06, 0x1C, 0x09, 0x0B, 0xC8, + 0x6C, 0x01, 0x20, 0xC8, 0x00, 0xFC, 0x1A, 0x09, + 0x4B, 0xCB, 0x02, 0x00, 0x90, 0x03, 0xFF, 0xFF, + 0x80, 0x03, 0x41, 0xC0, 0x0F, 0x13, 0x81, 0x80, + 0x0D, 0x13, 0x82, 0xA0, 0xE2, 0xC2, 0x32, 0x0C, + 0x12, 0x09, 0x0B, 0xC8, 0x6C, 0x01, 0xE0, 0x04, + 0x00, 0xFC, 0x20, 0xC3, 0x02, 0xFC, 0x07, 0x11, + 0x02, 0xC8, 0x00, 0xFC, 0xED, 0x04, 0x02, 0x00, + 0xE0, 0x04, 0x6C, 0x01, 0x80, 0x03, 0x42, 0xCB, + 0x02, 0x00, 0x02, 0xC8, 0x6C, 0x01, 0x8B, 0xC0, + 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0x83, 0x07, + 0x00, 0x80, 0x60, 0xC2, 0x7E, 0x09, 0x09, 0xC1, + 0x24, 0x02, 0xF8, 0xFF, 0xA9, 0x08, 0x01, 0x02, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0B, 0x02, + 0x00, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x07, 0x02, + 0x00, 0x00, 0x2C, 0xCB, 0x32, 0x0C, 0x32, 0x0C, + 0x06, 0x13, 0x8B, 0x05, 0xCC, 0x05, 0x0B, 0x88, + 0x46, 0x04, 0x27, 0x1B, 0xF6, 0x10, 0x09, 0xC2, + 0x8B, 0xC2, 0x08, 0x06, 0x0A, 0x13, 0x8B, 0x05, + 0xCC, 0x05, 0x0B, 0x88, 0x46, 0x04, 0x1D, 0x1B, + 0x2C, 0xCB, 0x32, 0x0C, 0x32, 0x0C, 0xED, 0x16, + 0xF4, 0x10, 0x82, 0xC0, 0x14, 0x13, 0x02, 0xC8, + 0x6C, 0x01, 0x0A, 0xC8, 0x00, 0xFC, 0x0A, 0xC8, + 0x6C, 0x01, 0xE0, 0x04, 0x00, 0xFC, 0xA0, 0x07, + 0x02, 0xFC, 0x00, 0x80, 0x04, 0xC8, 0x04, 0xFC, + 0x0A, 0xC2, 0x08, 0xA2, 0x02, 0xCA, 0x32, 0x0C, + 0x8A, 0xC0, 0x87, 0x05, 0xD6, 0x10, 0x4A, 0xC0, + 0xEE, 0x10, 0x47, 0xCB, 0x02, 0x00, 0xE0, 0x04, + 0x6C, 0x01, 0x8B, 0x07, 0x43, 0x00, 0xE0, 0x04, + 0x00, 0x0C, 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC8, + 0x6C, 0x01, 0x8B, 0x02, 0x43, 0x00, 0x04, 0x13, + 0x60, 0x01, 0x02, 0xFC, 0x20, 0x00, 0x06, 0x13, + 0x8B, 0xC2, 0xA0, 0x06, 0x42, 0xB4, 0x90, 0x03, + 0x7F, 0x00, 0x80, 0x03, 0xA0, 0x01, 0x02, 0xFC, + 0x20, 0x00, 0x60, 0x01, 0x6A, 0x09, 0x01, 0x00, + 0x0B, 0x16, 0x0A, 0x02, 0x02, 0xFC, 0xA0, 0xA2, + 0x2C, 0x09, 0xA0, 0xCE, 0xEE, 0x05, 0xA0, 0xC6, + 0x04, 0xFC, 0x20, 0xC8, 0x2C, 0x09, 0x04, 0xFC, + 0x8A, 0x07, 0xF8, 0x05, 0x5A, 0xC2, 0x08, 0x13, + 0xCA, 0x05, 0x5A, 0xC2, 0x09, 0xC8, 0x6C, 0x01, + 0x0B, 0xC8, 0x00, 0xFC, 0x8B, 0xC6, 0x02, 0x10, + 0x8B, 0xCE, 0x8B, 0xC6, 0x20, 0x20, 0x1A, 0xE0, + 0x05, 0x16, 0x20, 0xE8, 0x04, 0xE0, 0x3A, 0x07, + 0xE0, 0x04, 0x36, 0x07, 0x90, 0x03, 0x7F, 0x00, + 0x80, 0x03, 0x00, 0x03, 0x02, 0x00, 0x0B, 0xC8, + 0x6C, 0x01, 0xCC, 0x04, 0xE0, 0x04, 0x00, 0xFC, + 0x8B, 0xC2, 0xA0, 0x06, 0x50, 0xB4, 0x90, 0x03, + 0x7F, 0x00, 0x80, 0x03, 0xA0, 0x07, 0x02, 0xFC, + 0x00, 0x80, 0x20, 0xC8, 0x8C, 0xE1, 0x04, 0xFC, + 0x41, 0xC0, 0x0F, 0x16, 0x20, 0xD8, 0x00, 0xE2, + 0x83, 0x01, 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, + 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, + 0x8B, 0x0B, 0x8B, 0x0B, 0x8B, 0x0B, 0x0A, 0xC8, + 0x8A, 0x01, 0x5B, 0x04, 0x0A, 0xC8, 0x6C, 0x01, + 0x20, 0xC3, 0x00, 0xFC, 0xE0, 0x04, 0x00, 0xFC, + 0x8A, 0x02, 0x43, 0x00, 0xDF, 0x13, 0xA0, 0x07, + 0x02, 0xFC, 0x00, 0x80, 0x04, 0xC8, 0x04, 0xFC, + 0x20, 0x98, 0x84, 0x09, 0x1D, 0x09, 0x0A, 0x13, + 0x20, 0xC8, 0x1A, 0x09, 0x00, 0xFC, 0x0A, 0xC8, + 0x1A, 0x09, 0xA0, 0x05, 0x1C, 0x09, 0x8C, 0xC2, + 0xE5, 0x16, 0x5B, 0x04, 0x41, 0xC0, 0x10, 0x13, + 0x8A, 0xA2, 0x82, 0xCA, 0x32, 0x0C, 0x1A, 0x09, + 0x02, 0xC8, 0x6C, 0x01, 0x0A, 0xC8, 0x00, 0xFC, + 0x8A, 0xC0, 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, + 0x09, 0x13, 0x8C, 0xC2, 0xD3, 0x16, 0x5B, 0x04, + 0x4A, 0xC0, 0x8A, 0xC0, 0x20, 0x98, 0x83, 0x01, + 0x00, 0xE2, 0x1B, 0x16, 0xE0, 0x01, 0x9C, 0x01, + 0x40, 0x00, 0xA0, 0x07, 0x64, 0x09, 0x00, 0x70, + 0x60, 0x01, 0x9C, 0x01, 0x40, 0x00, 0x07, 0x13, + 0x20, 0x06, 0x64, 0x09, 0xF9, 0x16, 0x0A, 0x02, + 0x00, 0x01, 0x60, 0x04, 0x8A, 0xA3, 0x60, 0x01, + 0x02, 0x0C, 0x00, 0x01, 0xE2, 0x13, 0x20, 0xD8, + 0x2F, 0x09, 0x83, 0x01, 0xA0, 0x07, 0x02, 0x0C, + 0x00, 0x80, 0x0A, 0xC8, 0x8A, 0x01, 0x0A, 0xC8, + 0x18, 0x09, 0xD7, 0x10, 0xD8, 0x04, 0x57, 0xC2, + 0x03, 0x16, 0xC8, 0xCD, 0xC8, 0xC5, 0x5B, 0x04, + 0xC7, 0x05, 0x57, 0xC2, 0x48, 0xC6, 0xC8, 0xC5, + 0x5B, 0x04, 0x08, 0xC8, 0x6C, 0x01, 0x08, 0xA2, + 0x20, 0xCA, 0x00, 0xFC, 0x32, 0x0C, 0x18, 0x09, + 0x02, 0x10, 0x08, 0xC8, 0x6C, 0x01, 0xE0, 0x04, + 0x00, 0xFC, 0x57, 0xC2, 0x03, 0x16, 0xC8, 0xCD, + 0xC8, 0xC5, 0x5B, 0x04, 0xC7, 0x05, 0x17, 0xC8, + 0x6C, 0x01, 0x08, 0xC8, 0x00, 0xFC, 0xC8, 0xC5, + 0x5B, 0x04, 0x17, 0xC6, 0x02, 0x16, 0xC8, 0xC9, + 0x02, 0x00, 0xC8, 0xC5, 0x5B, 0x04, 0x17, 0xC2, + 0x08, 0xC8, 0x6C, 0x01, 0x07, 0x13, 0xE0, 0xC5, + 0x00, 0xFC, 0x08, 0xA2, 0x28, 0xC8, 0x32, 0x0C, + 0x00, 0xFC, 0x18, 0x09, 0x5B, 0x04, 0x60, 0x01, + 0x82, 0x01, 0x00, 0x20, 0x0A, 0x16, 0x60, 0xC2, + 0x84, 0x01, 0xA0, 0x01, 0x82, 0x01, 0x00, 0x20, + 0xE0, 0x01, 0x82, 0x01, 0x00, 0x20, 0x09, 0xC8, + 0x84, 0x01, 0xC9, 0x04, 0x5B, 0x04, 0xA0, 0x06, + 0xBE, 0xB7, 0xD3, 0x04, 0xE0, 0x04, 0x02, 0x01, + 0x20, 0xE8, 0x14, 0xE0, 0x00, 0x01, 0x20, 0xC8, + 0x16, 0xE0, 0x04, 0x01, 0x05, 0x2C, 0x20, 0x48, + 0x14, 0xE0, 0x00, 0x01, 0x8C, 0x07, 0x00, 0x0A, + 0x8D, 0x07, 0xD8, 0x07, 0x8E, 0x07, 0x18, 0x00, + 0x7C, 0xCF, 0x4E, 0x06, 0xFD, 0x16, 0xE0, 0x02, + 0xD8, 0x07, 0x8F, 0x07, 0x11, 0xFF, 0x8B, 0x02, + 0x3B, 0x59, 0x21, 0x16, 0x8A, 0x02, 0x3B, 0x59, + 0x1E, 0x13, 0x8F, 0x05, 0x20, 0x20, 0x16, 0xE0, + 0x01, 0x16, 0x19, 0x10, 0x20, 0x20, 0x04, 0xE0, + 0x16, 0x16, 0x00, 0x01, 0xBF, 0x00, 0x13, 0x16, + 0x8B, 0x07, 0xC0, 0x40, 0x00, 0x01, 0x00, 0x60, + 0x10, 0x13, 0x40, 0x01, 0x00, 0x60, 0x0B, 0x16, + 0x8B, 0x07, 0xC4, 0x44, 0xA0, 0xC3, 0x02, 0x01, + 0x0E, 0x48, 0x02, 0x01, 0x4E, 0x01, 0x00, 0x10, + 0x04, 0x16, 0x8F, 0x07, 0x18, 0xFF, 0x60, 0x04, + 0x94, 0xB7, 0x0B, 0xC3, 0x4B, 0xC3, 0x20, 0x20, + 0x0A, 0xE0, 0x02, 0x16, 0x6B, 0x02, 0x20, 0x20, + 0x20, 0x20, 0x0C, 0xE0, 0x02, 0x16, 0x6C, 0x02, + 0x00, 0x20, 0x20, 0x20, 0x0E, 0xE0, 0x02, 0x16, + 0x6C, 0x02, 0x20, 0x00, 0x8F, 0x05, 0x20, 0x20, + 0x10, 0xE0, 0x07, 0x16, 0x6D, 0x02, 0x20, 0x00, + 0x20, 0x21, 0x22, 0xE0, 0xE4, 0x13, 0x04, 0xC1, + 0x02, 0x16, 0x84, 0x07, 0xFE, 0x7F, 0x8F, 0x05, + 0x20, 0x20, 0x12, 0xE0, 0x02, 0x16, 0x6D, 0x02, + 0x00, 0x20, 0x60, 0x21, 0x22, 0xE0, 0xD7, 0x13, + 0x45, 0xC1, 0x02, 0x16, 0x85, 0x07, 0xFE, 0x7F, + 0x8F, 0x05, 0x86, 0xD1, 0x0B, 0x13, 0xA0, 0x25, + 0x26, 0xE0, 0x08, 0x13, 0x8F, 0x05, 0x20, 0x26, + 0x22, 0xE0, 0x04, 0x16, 0x8F, 0x05, 0xA0, 0x26, + 0x22, 0xE0, 0x02, 0x13, 0x60, 0x04, 0x94, 0xB7, + 0x01, 0xD8, 0xEC, 0x08, 0x20, 0xD8, 0xDB, 0x07, + 0x00, 0x09, 0x02, 0xD8, 0xF6, 0x08, 0x20, 0xD8, + 0xDD, 0x07, 0xE2, 0x08, 0xE0, 0x02, 0x58, 0x07, + 0x20, 0xD8, 0xEF, 0x07, 0xF4, 0x07, 0x20, 0xD8, + 0xF1, 0x07, 0xF6, 0x07, 0x20, 0xD8, 0xF3, 0x07, + 0xF8, 0x07, 0x09, 0x02, 0x06, 0x00, 0xCB, 0x04, + 0x0F, 0x02, 0xEE, 0x07, 0x8F, 0x05, 0xCB, 0xDF, + 0x09, 0x06, 0xFC, 0x16, 0xA0, 0x06, 0xBE, 0xB7, + 0x89, 0x07, 0x5C, 0xE3, 0xE0, 0x04, 0x1A, 0x01, + 0x20, 0xC8, 0xE4, 0x07, 0x18, 0x01, 0x19, 0xC8, + 0x0C, 0x01, 0x39, 0xC8, 0x0A, 0x01, 0x39, 0xC8, + 0x12, 0x01, 0x09, 0x16, 0x79, 0xC3, 0x0F, 0x02, + 0x00, 0xE0, 0x4F, 0x63, 0x2D, 0x02, 0x00, 0x90, + 0x0D, 0xC8, 0x14, 0x01, 0x02, 0x10, 0x39, 0xC8, + 0x14, 0x01, 0xF9, 0xC3, 0x3F, 0xC8, 0x0E, 0x01, + 0x1F, 0xC8, 0x10, 0x01, 0xE0, 0x04, 0x14, 0x09, + 0xB9, 0xC2, 0x1A, 0xC8, 0x00, 0x01, 0x96, 0x06, + 0x89, 0x02, 0x84, 0xE3, 0xE0, 0x16, 0x8F, 0x07, + 0x1C, 0xFF, 0x8C, 0x07, 0x00, 0x0A, 0x8D, 0x07, + 0x84, 0xE3, 0x8E, 0x07, 0x10, 0x00, 0x7C, 0x8F, + 0x44, 0x16, 0x4E, 0x06, 0xFC, 0x16, 0xA0, 0xC3, + 0xE2, 0x07, 0xE0, 0xC3, 0xE0, 0x07, 0xCE, 0x83, + 0x01, 0x14, 0xCE, 0xC3, 0x0F, 0xC8, 0x1A, 0x01, + 0x8C, 0x07, 0x94, 0xE3, 0x8D, 0x07, 0x00, 0x0A, + 0x8E, 0x07, 0xA4, 0xE3, 0x8C, 0x63, 0x7C, 0xCF, + 0x4E, 0x06, 0xFD, 0x16, 0xE0, 0x04, 0x30, 0x09, + 0x20, 0x01, 0x42, 0x01, 0x00, 0x04, 0x02, 0x16, + 0x20, 0x07, 0x30, 0x09, 0x60, 0xC2, 0x62, 0x01, + 0xE0, 0x04, 0x62, 0x01, 0x8E, 0x07, 0x00, 0x80, + 0x8C, 0x07, 0x34, 0x09, 0x8D, 0x07, 0x06, 0x00, + 0x3E, 0xDF, 0x8E, 0x05, 0x0D, 0x06, 0xFC, 0x16, + 0xFE, 0xD3, 0xCF, 0x06, 0x8E, 0x05, 0xFE, 0xD3, + 0xCF, 0x06, 0x8C, 0x07, 0x34, 0x09, 0x09, 0xC8, + 0x62, 0x01, 0xC9, 0x04, 0x5C, 0xA3, 0x7C, 0xE2, + 0x5C, 0xA3, 0x7C, 0xE2, 0x5C, 0xA3, 0x7C, 0xE2, + 0x02, 0x13, 0xCD, 0x83, 0x09, 0x13, 0x20, 0x07, + 0x34, 0x09, 0x06, 0x10, 0x8F, 0x07, 0x19, 0xFF, + 0xCD, 0xA3, 0x0F, 0xC8, 0x04, 0x01, 0xFF, 0x10, + 0xA0, 0x01, 0x02, 0x01, 0x00, 0x10, 0xE0, 0xC3, + 0xEE, 0x07, 0xE0, 0x43, 0x06, 0xE0, 0x0F, 0xC8, + 0x00, 0x01, 0x20, 0xC0, 0x04, 0xE0, 0xE0, 0x04, + 0xFE, 0x06, 0xD3, 0x04, 0xE0, 0x04, 0x04, 0x01, + 0x60, 0x04, 0x0C, 0xB8, 0x8C, 0x07, 0x00, 0x0A, + 0x8D, 0x07, 0x18, 0x00, 0x8E, 0x07, 0x3B, 0x59, + 0x0E, 0xCF, 0x4D, 0x06, 0xFD, 0x16, 0x5B, 0x04, + 0x93, 0x01, 0x00, 0x80, 0x20, 0x04, 0xC0, 0xE2, + 0x60, 0xD0, 0x98, 0x07, 0x1C, 0x13, 0x00, 0x03, + 0x02, 0x00, 0xA0, 0xC0, 0x46, 0x07, 0x12, 0xC8, + 0x46, 0x07, 0x02, 0x16, 0x93, 0x01, 0x20, 0x00, + 0x00, 0x03, 0x0F, 0x00, 0x20, 0x04, 0xE8, 0xE2, + 0x93, 0x01, 0x00, 0x20, 0x80, 0x01, 0x00, 0x40, + 0x00, 0x01, 0xFE, 0x00, 0x49, 0x16, 0xC4, 0xC3, + 0x25, 0x16, 0xD3, 0xC3, 0xC5, 0x43, 0x0C, 0x16, + 0xE0, 0xC3, 0x98, 0x07, 0x03, 0x11, 0xE0, 0x02, + 0x98, 0x07, 0x51, 0x04, 0xE0, 0xC3, 0x78, 0x07, + 0x0A, 0x11, 0xE0, 0x02, 0x78, 0x07, 0x51, 0x04, + 0xD3, 0x11, 0x4F, 0x01, 0x00, 0x20, 0xE4, 0x13, + 0x4F, 0x01, 0x20, 0x00, 0xD1, 0x13, 0x05, 0x2C, + 0x41, 0xA0, 0x21, 0x04, 0xC0, 0xE2, 0x8B, 0x07, + 0x0C, 0xB8, 0x00, 0x01, 0x00, 0x40, 0x0F, 0x13, + 0xDD, 0xC3, 0x4F, 0x02, 0x0F, 0x00, 0x2F, 0xE1, + 0x14, 0xE0, 0x5B, 0x04, 0xE4, 0xC3, 0xC0, 0xE1, + 0xCF, 0x73, 0x2F, 0x41, 0x14, 0xE0, 0x6F, 0xC3, + 0xEC, 0xEA, 0x8B, 0x07, 0x0C, 0xB8, 0x4B, 0xC2, + 0xA0, 0xC2, 0xF4, 0x07, 0x8C, 0x07, 0x08, 0x00, + 0xBD, 0xC0, 0xA0, 0xC3, 0xEA, 0x07, 0xE0, 0xC3, + 0xEC, 0x07, 0xA0, 0x06, 0x00, 0xBA, 0xC0, 0x01, + 0x00, 0x40, 0x02, 0xD8, 0x17, 0x01, 0x62, 0x02, + 0x80, 0xFF, 0xA0, 0x06, 0x54, 0xBA, 0x02, 0xC8, + 0x04, 0x01, 0x90, 0x03, 0x3F, 0x60, 0x59, 0x04, + 0xC0, 0xC3, 0xCF, 0x73, 0xEF, 0xC3, 0xC0, 0xE1, + 0xCF, 0x73, 0xAF, 0xC3, 0xDE, 0xEA, 0x9E, 0xC3, + 0x4E, 0x02, 0x0F, 0x00, 0x2E, 0x21, 0x14, 0xE0, + 0x08, 0x13, 0x2F, 0x40, 0x14, 0xE0, 0xCF, 0xA3, + 0x2F, 0x04, 0xF0, 0xE2, 0x40, 0x01, 0x00, 0x40, + 0xA4, 0x13, 0xC4, 0xC3, 0xC7, 0x16, 0x00, 0x01, + 0xFE, 0x00, 0xE6, 0x16, 0x9E, 0x10, 0x40, 0x01, + 0x00, 0x40, 0x05, 0x16, 0x20, 0xE0, 0x14, 0xE0, + 0x65, 0x02, 0x00, 0x58, 0x96, 0x10, 0x20, 0xD8, + 0xDE, 0x07, 0x17, 0x01, 0x8F, 0x07, 0x86, 0xFF, + 0x0F, 0xC8, 0x04, 0x01, 0xC0, 0x01, 0x00, 0x40, + 0x45, 0x02, 0xFF, 0xA7, 0x8A, 0x10, 0x20, 0xC3, + 0xFE, 0x06, 0x20, 0x27, 0x38, 0xE3, 0x07, 0x13, + 0x20, 0x23, 0x22, 0xE0, 0x1A, 0x13, 0x65, 0x02, + 0xFF, 0xDF, 0x20, 0x40, 0x14, 0xE0, 0x20, 0xE0, + 0x16, 0xE0, 0x0C, 0xC8, 0xE6, 0x08, 0x8D, 0x07, + 0xE2, 0x08, 0x58, 0x04, 0x20, 0x48, 0x08, 0xE0, + 0xFE, 0x06, 0x20, 0xC3, 0xE6, 0x08, 0x20, 0x27, + 0x38, 0xE3, 0x19, 0x16, 0x80, 0x03, 0x02, 0xC3, + 0x6C, 0xC2, 0x0A, 0x00, 0x99, 0x06, 0x60, 0x04, + 0x0C, 0xB8, 0xA0, 0xC2, 0xF4, 0x07, 0x8C, 0x07, + 0x01, 0x00, 0x8D, 0x07, 0x06, 0x06, 0xCE, 0x04, + 0xE0, 0xC3, 0x08, 0x06, 0x01, 0x13, 0x97, 0x06, + 0x20, 0xD8, 0x07, 0x06, 0x17, 0x01, 0x8B, 0x07, + 0x82, 0xFF, 0x0B, 0xC8, 0x04, 0x01, 0xA0, 0x06, + 0xB4, 0xBE, 0x60, 0x04, 0x0C, 0xB8, 0xA0, 0xC2, + 0xEE, 0x07, 0x8C, 0x07, 0x06, 0x00, 0x8D, 0x07, + 0xEE, 0x08, 0xA0, 0xC3, 0xE6, 0x07, 0xE0, 0xC3, + 0xE8, 0x07, 0x97, 0x06, 0xA0, 0xC2, 0xF4, 0x07, + 0x8D, 0x07, 0xF4, 0x08, 0xDD, 0x04, 0x8C, 0x07, + 0x02, 0x00, 0x97, 0x06, 0x8D, 0x07, 0x00, 0x80, + 0xA0, 0xC2, 0xEE, 0x08, 0x0A, 0x88, 0x0C, 0x06, + 0x14, 0x1B, 0x82, 0x07, 0xD0, 0xB9, 0xA0, 0xC3, + 0xF0, 0x08, 0xE0, 0xC3, 0xF2, 0x08, 0x8B, 0x07, + 0x0C, 0xE3, 0x8A, 0x02, 0x14, 0x00, 0x04, 0x1A, + 0x8B, 0x07, 0xBA, 0xEA, 0x2A, 0x02, 0xEC, 0xFF, + 0x8A, 0xA2, 0xCA, 0xA2, 0xDB, 0xC2, 0x01, 0x13, + 0x9B, 0x06, 0x20, 0xC8, 0xEE, 0x08, 0xF2, 0x08, + 0x20, 0xC8, 0x20, 0xE0, 0xEE, 0x08, 0x0D, 0xC8, + 0xF0, 0x08, 0x8D, 0x07, 0xEC, 0x08, 0x20, 0xE0, + 0x18, 0xE0, 0x65, 0x02, 0x00, 0x58, 0x58, 0x04, + 0x45, 0x02, 0xFF, 0xA7, 0x80, 0x03, 0x60, 0xC0, + 0xEE, 0x05, 0x21, 0x02, 0xE8, 0x03, 0x20, 0x01, + 0x02, 0x01, 0x06, 0x00, 0x07, 0x16, 0x01, 0x88, + 0xEE, 0x05, 0xF9, 0x16, 0x39, 0x10, 0x60, 0xD0, + 0x03, 0x01, 0xF1, 0x13, 0x01, 0x02, 0x0A, 0x01, + 0x4C, 0xCC, 0x4C, 0xCC, 0x4E, 0xCC, 0x4F, 0xCC, + 0xB1, 0x07, 0x40, 0x00, 0x4D, 0xCC, 0x0A, 0xC8, + 0x00, 0x01, 0x5B, 0x04, 0x60, 0xC0, 0xEE, 0x05, + 0x21, 0x02, 0xE8, 0x03, 0x20, 0x01, 0x02, 0x01, + 0x06, 0x00, 0x07, 0x16, 0x01, 0x88, 0xEE, 0x05, + 0xF9, 0x16, 0x1E, 0x10, 0x60, 0xD0, 0x03, 0x01, + 0xF1, 0x13, 0x01, 0x02, 0x0A, 0x01, 0x4C, 0xCC, + 0x4C, 0xCC, 0x4E, 0xCC, 0x4F, 0xCC, 0xB1, 0x07, + 0x40, 0x00, 0x4D, 0xCC, 0x0A, 0xC8, 0x00, 0x01, + 0xA0, 0x03, 0x60, 0xD0, 0x03, 0x01, 0x01, 0x13, + 0x5B, 0x04, 0x60, 0xC0, 0xEE, 0x05, 0x21, 0x02, + 0xE8, 0x03, 0x20, 0x01, 0x02, 0x01, 0x06, 0x00, + 0xF7, 0x16, 0x01, 0x88, 0xEE, 0x05, 0xF9, 0x16, + 0xCD, 0x04, 0x8A, 0x07, 0x00, 0x40, 0x20, 0xC3, + 0x00, 0x01, 0x0C, 0x01, 0x00, 0x80, 0x02, 0x13, + 0x8A, 0x07, 0x00, 0x20, 0xA0, 0xC3, 0x0E, 0x01, + 0xE0, 0xC3, 0x10, 0x01, 0xB0, 0x03, 0x20, 0xC3, + 0x58, 0x07, 0x20, 0x23, 0x04, 0xE0, 0x02, 0x13, + 0x60, 0x04, 0x8E, 0xB7, 0x60, 0x04, 0x8A, 0xA3, + 0x8D, 0x07, 0x00, 0x20, 0x20, 0x20, 0x0A, 0xE0, + 0x01, 0x16, 0x5B, 0x04, 0x0D, 0x02, 0x32, 0x0C, + 0x5D, 0xC2, 0x01, 0x11, 0xDD, 0x04, 0xCD, 0x05, + 0x0D, 0x88, 0x30, 0x0C, 0xF9, 0x16, 0x60, 0xC2, + 0x0A, 0x06, 0x8D, 0x07, 0x6A, 0x09, 0xA0, 0x06, + 0xF4, 0xBE, 0x09, 0x02, 0x48, 0x00, 0xE0, 0xC3, + 0x30, 0x09, 0x03, 0x16, 0xE0, 0x01, 0x6A, 0x09, + 0x10, 0x00, 0xE0, 0xC2, 0x6A, 0x09, 0x0F, 0x02, + 0x00, 0x01, 0xC9, 0x26, 0x02, 0x13, 0x60, 0x04, + 0x86, 0xBD, 0x09, 0x02, 0x00, 0x12, 0x4B, 0x01, + 0x10, 0x00, 0x02, 0x13, 0x09, 0x02, 0x00, 0x13, + 0x09, 0xD8, 0x2E, 0x09, 0x8F, 0x07, 0x00, 0x40, + 0x89, 0x07, 0x6C, 0x09, 0xCB, 0x04, 0xF9, 0xE2, + 0xF9, 0xE2, 0xF9, 0xE2, 0x07, 0x16, 0x8B, 0x07, + 0x34, 0x09, 0x8C, 0x07, 0x6C, 0x09, 0x3B, 0xCF, + 0x3B, 0xCF, 0x1B, 0xC7, 0x20, 0xC3, 0x6C, 0x09, + 0x19, 0x11, 0x8F, 0x07, 0x00, 0x20, 0x89, 0x07, + 0x7A, 0x09, 0xA0, 0x06, 0x3A, 0xBB, 0xA0, 0x06, + 0x3A, 0xBB, 0x12, 0x10, 0x4C, 0xCE, 0x5B, 0x04, + 0x19, 0xC3, 0x02, 0x16, 0x8C, 0x07, 0x1A, 0x00, + 0x4C, 0xC3, 0x2D, 0x02, 0xF8, 0xFF, 0x0A, 0x02, + 0x09, 0x00, 0x2D, 0x02, 0xFA, 0xFF, 0xF2, 0x13, + 0x0A, 0x06, 0xFB, 0x16, 0x60, 0x04, 0x86, 0xBD, + 0x8F, 0x07, 0x00, 0x10, 0xD9, 0xC2, 0xFA, 0x11, + 0x02, 0x16, 0x8B, 0x07, 0x00, 0x04, 0x4B, 0xC3, + 0x8D, 0x02, 0x20, 0x00, 0x02, 0x14, 0x0D, 0x02, + 0x20, 0x00, 0x8D, 0x02, 0x00, 0x04, 0x02, 0x12, + 0x0D, 0x02, 0x00, 0x04, 0x2D, 0x02, 0xF8, 0xFF, + 0x0D, 0xC8, 0x2C, 0x09, 0x2B, 0x02, 0xFF, 0x03, + 0x8B, 0x01, 0xFF, 0x03, 0x4B, 0xCE, 0x60, 0xC3, + 0x6A, 0x09, 0x60, 0x23, 0x18, 0xE0, 0x0C, 0x16, + 0x49, 0xC3, 0xDD, 0xC2, 0x0F, 0x02, 0x01, 0x01, + 0x8B, 0x01, 0x80, 0xC0, 0xD7, 0x16, 0x8F, 0x05, + 0xED, 0xC2, 0x02, 0x00, 0xD3, 0x16, 0x02, 0x10, + 0x8D, 0x07, 0xBA, 0xEA, 0x3D, 0xC8, 0xA8, 0x09, + 0x1D, 0xC8, 0xAA, 0x09, 0xCB, 0x04, 0xE0, 0x04, + 0xF8, 0x05, 0xE0, 0x04, 0x66, 0x09, 0x20, 0xC8, + 0x30, 0x0C, 0x80, 0x09, 0xA0, 0x07, 0x82, 0x09, + 0xFE, 0xDF, 0x8D, 0x07, 0xFE, 0xDF, 0xE0, 0xC3, + 0xD8, 0x07, 0xE0, 0x23, 0x16, 0xE0, 0x24, 0x16, + 0xE0, 0xC3, 0x30, 0x0C, 0x4F, 0x63, 0xFF, 0x04, + 0xFF, 0x04, 0x4D, 0x06, 0xFD, 0x16, 0x8D, 0x07, + 0xFE, 0xDF, 0x20, 0x04, 0xA2, 0xEA, 0xA0, 0xC3, + 0xA2, 0xEA, 0xEE, 0xC3, 0x12, 0x00, 0xAA, 0x16, + 0x6E, 0xC3, 0x18, 0x00, 0xAD, 0x09, 0x8C, 0x07, + 0x00, 0xE0, 0xAC, 0x09, 0x0D, 0x63, 0x0C, 0x13, + 0x6E, 0xC3, 0x18, 0x00, 0xAD, 0x09, 0x2D, 0x02, + 0x40, 0x00, 0x1D, 0x0A, 0x2D, 0x02, 0x32, 0x0C, + 0xBD, 0x07, 0xFF, 0x7F, 0x0C, 0x06, 0xFC, 0x16, + 0x20, 0xC3, 0x46, 0x04, 0x8C, 0x02, 0x80, 0x00, + 0x13, 0x1A, 0xAC, 0x02, 0x0C, 0xC8, 0x9A, 0x00, + 0xE0, 0x02, 0x80, 0x00, 0x88, 0x07, 0x80, 0x00, + 0x60, 0xC2, 0x46, 0x04, 0xA0, 0x06, 0x28, 0xAD, + 0x02, 0x10, 0x9D, 0x00, 0x05, 0x10, 0x9D, 0x00, + 0x8F, 0x07, 0x00, 0x08, 0x60, 0x04, 0x86, 0xBD, + 0x4B, 0x2D, 0x81, 0xC3, 0xC9, 0x05, 0x8F, 0x07, + 0x00, 0x10, 0x8E, 0x02, 0x02, 0x00, 0xF6, 0x11, + 0x8F, 0x07, 0x00, 0x04, 0xC9, 0x05, 0xD9, 0xC2, + 0xE0, 0x26, 0x26, 0xE0, 0x02, 0x16, 0x2B, 0x02, + 0x06, 0x00, 0x4B, 0xC6, 0x4B, 0xC3, 0xCB, 0x72, + 0x2E, 0x02, 0xFE, 0xFF, 0x8B, 0x83, 0xE6, 0x1B, + 0xCD, 0x06, 0x4D, 0x73, 0xCD, 0x82, 0xE2, 0x1B, + 0xE0, 0x04, 0x1A, 0x09, 0xE0, 0x04, 0x1C, 0x09, + 0x4D, 0xC3, 0x02, 0x13, 0x60, 0x66, 0x12, 0xE0, + 0xC9, 0x05, 0xCF, 0x04, 0x81, 0x2D, 0x01, 0xC8, + 0x6C, 0x01, 0xD4, 0x13, 0x0F, 0xC8, 0x00, 0xFC, + 0xC1, 0xC3, 0x0D, 0x06, 0xF7, 0x15, 0x0D, 0x02, + 0x36, 0x07, 0x0E, 0x02, 0x98, 0x08, 0x0C, 0x02, + 0x03, 0x00, 0x8D, 0xCB, 0x02, 0x00, 0x81, 0x2D, + 0x81, 0xCB, 0x06, 0x00, 0xC3, 0x13, 0xEE, 0x04, + 0x0C, 0x00, 0x2E, 0x02, 0x18, 0x00, 0x0C, 0x06, + 0xF4, 0x16, 0xE0, 0x04, 0x96, 0x08, 0x1F, 0x2E, + 0xB9, 0xC3, 0xD9, 0xC3, 0x89, 0x07, 0x12, 0x00, + 0x8D, 0x07, 0x3A, 0x09, 0xA0, 0x06, 0xF4, 0xBE, + 0x60, 0xC3, 0xD8, 0x07, 0x60, 0x23, 0x16, 0xE0, + 0x09, 0x16, 0x20, 0xE8, 0x10, 0xE0, 0x6A, 0x09, + 0x20, 0xE8, 0x18, 0xE0, 0x98, 0x07, 0x20, 0xE8, + 0x12, 0xE0, 0x78, 0x07, 0x60, 0xC3, 0x6A, 0x09, + 0x60, 0x23, 0x1E, 0xE0, 0x03, 0x16, 0x20, 0x48, + 0xA4, 0xE3, 0x6A, 0x09, 0x60, 0x23, 0x22, 0xE0, + 0x06, 0x13, 0x60, 0x27, 0xA6, 0xE3, 0x03, 0x13, + 0x20, 0xE8, 0x10, 0xE0, 0x6A, 0x09, 0x20, 0x2D, + 0x00, 0x00, 0x8E, 0x07, 0x00, 0x00, 0xA0, 0x06, + 0xD4, 0xBE, 0x4E, 0x05, 0x0E, 0x2C, 0xA0, 0xC0, + 0x04, 0x08, 0xEF, 0xC3, 0x06, 0x00, 0x1B, 0x16, + 0xA0, 0xC3, 0x72, 0x09, 0xE0, 0xC3, 0x74, 0x09, + 0xA0, 0x06, 0xC2, 0xBD, 0xA0, 0xC3, 0x76, 0x09, + 0xE0, 0xC3, 0x78, 0x09, 0xA0, 0x06, 0xE0, 0xBD, + 0x20, 0xE0, 0x0A, 0xE0, 0x60, 0xC3, 0xD8, 0x07, + 0x60, 0x23, 0x16, 0xE0, 0x05, 0x16, 0xE0, 0x04, + 0x2E, 0x06, 0x60, 0x41, 0x04, 0xE0, 0x4D, 0x2E, + 0x8D, 0x07, 0x00, 0x80, 0x52, 0x04, 0xCF, 0x73, + 0x2F, 0x02, 0x00, 0x02, 0x4F, 0xC3, 0x52, 0x04, + 0x20, 0x20, 0x0A, 0xE0, 0x03, 0x13, 0x8D, 0x07, + 0x00, 0x10, 0x5B, 0x04, 0x20, 0x40, 0x0A, 0xE0, + 0x40, 0x02, 0xFF, 0xF0, 0x8E, 0x07, 0x02, 0x00, + 0xA0, 0x06, 0xD4, 0xBE, 0x4E, 0x05, 0x0E, 0x2C, + 0xA0, 0xC0, 0x04, 0x08, 0xA0, 0x06, 0xB4, 0xBE, + 0x60, 0xC3, 0xD8, 0x07, 0x60, 0x23, 0x16, 0xE0, + 0x66, 0x16, 0x20, 0x04, 0xB6, 0xEA, 0x63, 0x10, + 0x6E, 0x02, 0x00, 0x80, 0x8D, 0x07, 0x00, 0xC0, + 0x0D, 0xC8, 0xA6, 0x01, 0x0E, 0xC8, 0x72, 0x09, + 0x0F, 0xC8, 0x74, 0x09, 0x0E, 0xC8, 0xA8, 0x01, + 0x0F, 0xC8, 0xAA, 0x01, 0x12, 0x10, 0x8F, 0x01, + 0x01, 0x00, 0x8A, 0x07, 0x76, 0x09, 0xA0, 0xE3, + 0x4E, 0x09, 0x8E, 0xCE, 0x9A, 0x01, 0xFE, 0xFF, + 0xE0, 0xE3, 0x50, 0x09, 0x8F, 0xE6, 0x8A, 0x07, + 0xAC, 0x01, 0x8E, 0xCE, 0x9A, 0x01, 0xFE, 0xFF, + 0x8F, 0xE6, 0x20, 0x20, 0x0A, 0xE0, 0x3F, 0x13, + 0x8D, 0x07, 0x00, 0x10, 0x5B, 0x04, 0x20, 0x20, + 0x0A, 0xE0, 0x03, 0x13, 0x0D, 0x02, 0x00, 0x10, + 0x5B, 0x04, 0x8E, 0xC3, 0x04, 0x13, 0xE0, 0x01, + 0x50, 0x09, 0x00, 0x01, 0x06, 0x10, 0xA0, 0x01, + 0x50, 0x09, 0x00, 0x01, 0xA0, 0x01, 0x78, 0x09, + 0x00, 0x01, 0xA0, 0xC3, 0x76, 0x09, 0xE0, 0xC3, + 0x78, 0x09, 0xA0, 0xE3, 0x4E, 0x09, 0xE0, 0xE3, + 0x50, 0x09, 0x0E, 0xC8, 0xAC, 0x01, 0x0F, 0xC8, + 0xAE, 0x01, 0x0E, 0xC8, 0x76, 0x09, 0x0F, 0xC8, + 0x78, 0x09, 0x19, 0x10, 0x6E, 0x02, 0x00, 0x80, + 0x0E, 0xC8, 0xA6, 0x01, 0x20, 0x20, 0x0A, 0xE0, + 0x12, 0x13, 0x0D, 0x02, 0x00, 0x10, 0x5B, 0x04, + 0x8D, 0x07, 0x28, 0x07, 0x89, 0x07, 0x0E, 0x00, + 0xA0, 0x06, 0xFA, 0xBE, 0x8D, 0x07, 0x28, 0x07, + 0xFD, 0x04, 0x8D, 0x02, 0x36, 0x07, 0xFC, 0x16, + 0x20, 0x48, 0x14, 0xE0, 0xFE, 0x06, 0x8D, 0x07, + 0x00, 0x80, 0x52, 0x04, 0xA0, 0xC2, 0xEE, 0x07, + 0x8C, 0x07, 0x04, 0x00, 0x8D, 0x07, 0xF0, 0x08, + 0x97, 0x06, 0x7D, 0xC2, 0x5D, 0xC3, 0x60, 0x43, + 0x22, 0xE0, 0xA0, 0x06, 0xFA, 0xBE, 0xEF, 0x10, + 0x0E, 0xC8, 0x06, 0x06, 0x0F, 0xC8, 0x08, 0x06, + 0xEA, 0x10, 0xB0, 0x03, 0xA0, 0x01, 0x60, 0x07, + 0x26, 0x00, 0x40, 0x02, 0x00, 0xC0, 0xE0, 0x04, + 0x06, 0x06, 0x8C, 0x07, 0x10, 0x40, 0xCC, 0x44, + 0xE0, 0x04, 0xFE, 0x06, 0x85, 0x07, 0x40, 0x80, + 0x5B, 0x04, 0x02, 0xC8, 0x04, 0x08, 0x8F, 0x07, + 0xFA, 0x07, 0xCE, 0xCB, 0x02, 0x00, 0x8E, 0x07, + 0x36, 0x07, 0xCE, 0xCB, 0x04, 0x00, 0x8D, 0x07, + 0x30, 0x06, 0x8E, 0x07, 0x10, 0x00, 0x4D, 0x2C, + 0x5B, 0x04, 0xA0, 0xC2, 0xF2, 0x07, 0x02, 0x10, + 0xA0, 0xC2, 0xF8, 0x07, 0x0B, 0xC8, 0xEA, 0x08, + 0x09, 0xC3, 0x0A, 0x13, 0xA0, 0x06, 0x36, 0xBA, + 0xA0, 0xC2, 0x00, 0x01, 0xA0, 0xE2, 0x06, 0xE0, + 0x4C, 0xA3, 0xCC, 0xA3, 0x01, 0x17, 0x8E, 0x05, + 0x4C, 0x62, 0xE0, 0xC2, 0xEA, 0x08, 0x5B, 0x04, + 0x8D, 0x07, 0x00, 0x10, 0x20, 0x20, 0x0A, 0xE0, + 0x01, 0x13, 0x5B, 0x04, 0x0D, 0x02, 0x48, 0x00, + 0xE0, 0xC3, 0x30, 0x09, 0x02, 0x16, 0xCE, 0x01, + 0x10, 0x00, 0x8D, 0x27, 0x03, 0x13, 0x0D, 0x02, + 0x00, 0x01, 0x52, 0x04, 0x00, 0x03, 0x02, 0x00, + 0x60, 0xC3, 0x6A, 0x09, 0x4D, 0x02, 0x08, 0x80, + 0x4E, 0x02, 0xF7, 0x7F, 0x8D, 0xE3, 0xE0, 0xC3, + 0xD8, 0x07, 0xE0, 0x23, 0x16, 0xE0, 0x04, 0x13, + 0x8D, 0x07, 0x06, 0x00, 0x8D, 0x27, 0x02, 0x13, + 0xA0, 0xE3, 0x10, 0xE0, 0x0E, 0xC8, 0x6A, 0x09, + 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x09, 0x13, + 0x0D, 0x02, 0x00, 0x12, 0x4E, 0x01, 0x10, 0x00, + 0x02, 0x13, 0x0D, 0x02, 0x00, 0x13, 0x0D, 0xD8, + 0x2E, 0x09, 0x60, 0xC3, 0x80, 0x01, 0x4E, 0x02, + 0x01, 0x00, 0x4D, 0x02, 0xFE, 0xFF, 0x4E, 0xE3, + 0x0D, 0xC8, 0x80, 0x01, 0x20, 0xD8, 0x40, 0xE2, + 0x2F, 0x09, 0x20, 0x01, 0x6A, 0x09, 0x06, 0x00, + 0x03, 0x13, 0x20, 0xD8, 0xD0, 0xE1, 0x2F, 0x09, + 0x20, 0x98, 0x83, 0x01, 0x00, 0xE2, 0x03, 0x13, + 0x20, 0xD8, 0x2F, 0x09, 0x83, 0x01, 0x00, 0x03, + 0x0F, 0x00, 0x60, 0x04, 0x88, 0xBE, 0x20, 0x20, + 0x0A, 0xE0, 0x03, 0x13, 0x0D, 0x02, 0x00, 0x10, + 0x5B, 0x04, 0x09, 0x02, 0x08, 0x00, 0x0D, 0x02, + 0x58, 0x09, 0xA0, 0x06, 0xF4, 0xBE, 0xA0, 0x07, + 0x02, 0x02, 0x00, 0x00, 0x0D, 0x02, 0x00, 0x04, + 0xE0, 0xC3, 0x58, 0x09, 0x0F, 0x01, 0x00, 0x7C, + 0x01, 0x13, 0x52, 0x04, 0x8F, 0xC3, 0x4E, 0x02, + 0x0F, 0x00, 0xFB, 0x13, 0x8E, 0x02, 0x0F, 0x00, + 0xF8, 0x13, 0x0D, 0x02, 0x00, 0x40, 0x4F, 0xC2, + 0x49, 0x09, 0x49, 0x02, 0x3F, 0x00, 0x09, 0x01, + 0x01, 0x00, 0xEF, 0x16, 0x89, 0x02, 0x06, 0x00, + 0xEC, 0x1A, 0x89, 0x02, 0x20, 0x00, 0xE9, 0x14, + 0xC9, 0x06, 0x1F, 0x09, 0x4F, 0x02, 0x00, 0x40, + 0x4F, 0xE2, 0x69, 0x02, 0x00, 0x80, 0x09, 0xC8, + 0x58, 0x09, 0x0F, 0x02, 0xFF, 0xFF, 0x4E, 0xC2, + 0x1F, 0x09, 0x09, 0x06, 0xFD, 0x16, 0x4F, 0x05, + 0x0D, 0x02, 0x00, 0x20, 0x60, 0xC2, 0x5A, 0x09, + 0xD4, 0x13, 0x4F, 0x26, 0xD2, 0x16, 0x0D, 0x02, + 0x00, 0x10, 0x60, 0xC2, 0x5C, 0x09, 0xCD, 0x13, + 0x4F, 0x26, 0xCB, 0x16, 0x0D, 0x02, 0x00, 0x30, + 0x20, 0x88, 0x5A, 0x09, 0x5C, 0x09, 0xC5, 0x13, + 0xE0, 0xC3, 0x5A, 0x09, 0x4E, 0xC2, 0x1F, 0x0A, + 0x09, 0x06, 0xFD, 0x16, 0xE0, 0xE3, 0x5E, 0x09, + 0x0F, 0xC8, 0x5A, 0x09, 0xE0, 0xC3, 0x5C, 0x09, + 0x4E, 0xC2, 0x1F, 0x0A, 0x09, 0x06, 0xFD, 0x16, + 0xE0, 0xE3, 0x5E, 0x09, 0x0F, 0xC8, 0x5C, 0x09, + 0x0F, 0x02, 0xFF, 0xFF, 0x4E, 0xC2, 0x1F, 0x0A, + 0x09, 0x06, 0xFD, 0x16, 0x0D, 0x02, 0x00, 0x08, + 0x60, 0xC2, 0x5E, 0x09, 0x4F, 0x26, 0xA5, 0x16, + 0x4F, 0x05, 0x0F, 0xC8, 0x5E, 0x09, 0x0F, 0x02, + 0x02, 0x02, 0x0E, 0x02, 0x03, 0x00, 0x60, 0xC3, + 0x40, 0x01, 0x0C, 0x02, 0xFE, 0xC0, 0xA0, 0x01, + 0x40, 0x01, 0x00, 0x04, 0xCF, 0x05, 0x09, 0x02, + 0x55, 0x55, 0x9C, 0x06, 0x49, 0x05, 0x9C, 0x06, + 0x09, 0x07, 0x9C, 0x06, 0x49, 0x05, 0x9C, 0x06, + 0x0E, 0x06, 0xF4, 0x16, 0xA0, 0x01, 0x40, 0x01, + 0x00, 0x40, 0x0D, 0xC8, 0x40, 0x01, 0x09, 0x02, + 0x08, 0x00, 0x0E, 0x02, 0x58, 0x09, 0x0F, 0x02, + 0x02, 0x02, 0xFE, 0xCF, 0x49, 0x06, 0xFD, 0x16, + 0x60, 0x04, 0x88, 0xBE, 0xC9, 0xC7, 0x5F, 0x82, + 0x01, 0x16, 0x5B, 0x04, 0xA0, 0x01, 0x40, 0x01, + 0x00, 0x40, 0x0D, 0xC8, 0x40, 0x01, 0x0D, 0x02, + 0x00, 0x01, 0x52, 0x04, 0x8D, 0x07, 0x00, 0x10, + 0x20, 0x20, 0x0A, 0xE0, 0x0A, 0x16, 0x8D, 0x07, + 0x00, 0x08, 0x20, 0x20, 0x10, 0xE0, 0x05, 0x13, + 0x8D, 0x07, 0x00, 0x40, 0x4F, 0x01, 0x01, 0x00, + 0x01, 0x16, 0x5B, 0x04, 0x20, 0xE0, 0x10, 0xE0, + 0x20, 0x07, 0x9C, 0x08, 0x20, 0x07, 0xB4, 0x08, + 0x20, 0x07, 0xCC, 0x08, 0xA0, 0x07, 0xA2, 0x08, + 0x84, 0x02, 0xA0, 0x07, 0xBA, 0x08, 0x84, 0x02, + 0xA0, 0x07, 0xD2, 0x08, 0x84, 0x02, 0xA0, 0x07, + 0x04, 0x09, 0x00, 0x40, 0xE0, 0x04, 0x06, 0x09, + 0xE0, 0x04, 0x08, 0x09, 0x0E, 0xC8, 0x4C, 0x08, + 0x0F, 0xC8, 0x4E, 0x08, 0x0E, 0xC8, 0x8E, 0x08, + 0x0F, 0xC8, 0x90, 0x08, 0xE0, 0x04, 0x5A, 0x08, + 0xE0, 0x04, 0x60, 0x08, 0xE0, 0x02, 0x78, 0x07, + 0xE0, 0x04, 0x94, 0x08, 0x20, 0x40, 0x40, 0xE3, + 0x20, 0xE0, 0x0C, 0xE0, 0x60, 0x04, 0xBC, 0xC6, + 0x80, 0x01, 0x00, 0xF0, 0xC0, 0x01, 0x00, 0x40, + 0x10, 0x10, 0x80, 0x01, 0x00, 0xF0, 0x0D, 0x10, + 0xC0, 0x01, 0x00, 0xF0, 0x20, 0x40, 0x06, 0xE0, + 0x08, 0x10, 0xC0, 0x01, 0x00, 0xF0, 0x80, 0x01, + 0x00, 0x20, 0xE0, 0xC3, 0x94, 0x08, 0x01, 0x16, + 0x5B, 0x04, 0x4B, 0xC0, 0x20, 0x04, 0xDA, 0xEA, + 0x40, 0x01, 0x00, 0x20, 0xFB, 0x16, 0x51, 0x04, + 0xA0, 0xC2, 0xD8, 0x07, 0x4A, 0x01, 0x40, 0x00, + 0x01, 0x16, 0x5B, 0x04, 0xE0, 0x02, 0x78, 0x07, + 0x20, 0x20, 0x0C, 0xE0, 0xEF, 0x16, 0x43, 0xC2, + 0x02, 0x13, 0xA0, 0x06, 0x1A, 0xC3, 0x20, 0x2F, + 0x36, 0x07, 0x20, 0x40, 0x0C, 0xE0, 0xA0, 0x06, + 0xAC, 0xC1, 0xA0, 0xC3, 0x94, 0x08, 0xFB, 0x16, + 0xA0, 0x06, 0x3A, 0xC2, 0x8E, 0x07, 0x04, 0x09, + 0x9E, 0x07, 0x00, 0x80, 0x20, 0x20, 0x10, 0xE0, + 0x05, 0x16, 0x8F, 0x07, 0x4C, 0x08, 0xBF, 0xCF, + 0xBF, 0xCF, 0x9F, 0xC7, 0xA0, 0x06, 0x5A, 0xC2, + 0x20, 0xE8, 0x3C, 0xE3, 0x62, 0x07, 0xA0, 0x06, + 0x3A, 0xC2, 0x20, 0x48, 0x3C, 0xE3, 0x62, 0x07, + 0x20, 0x40, 0x40, 0xE3, 0x20, 0xE0, 0x04, 0xE0, + 0x20, 0x48, 0x10, 0xE0, 0x58, 0x07, 0x5B, 0x04, + 0x80, 0x01, 0x00, 0xF0, 0x20, 0xE0, 0x04, 0xE0, + 0x60, 0x01, 0x60, 0x07, 0x02, 0x00, 0x02, 0x13, + 0x9B, 0x06, 0xB8, 0x10, 0x20, 0xE8, 0x1E, 0xE0, + 0x58, 0x07, 0xB4, 0x10, 0x9B, 0x06, 0x80, 0x03, + 0xE0, 0x02, 0x58, 0x07, 0x00, 0x01, 0x00, 0x40, + 0x07, 0x16, 0x8D, 0x07, 0x00, 0x09, 0xA0, 0x06, + 0x68, 0xB8, 0xE0, 0x02, 0x78, 0x07, 0x5B, 0x04, + 0xC4, 0x01, 0x02, 0x00, 0xE0, 0x02, 0x78, 0x07, + 0x5B, 0x04, 0x0E, 0x68, 0x96, 0x08, 0xE9, 0x04, + 0x0C, 0x00, 0x11, 0x10, 0x0E, 0x02, 0x00, 0x23, + 0x4E, 0xDB, 0x01, 0x00, 0xCC, 0x01, 0x00, 0x04, + 0x4C, 0xD7, 0x1C, 0x10, 0x60, 0xC2, 0x5C, 0x07, + 0x20, 0x06, 0x94, 0x08, 0xA9, 0xC2, 0x08, 0x00, + 0xA9, 0xC3, 0x0C, 0x00, 0xEA, 0x16, 0x29, 0x07, + 0x04, 0x00, 0x69, 0x01, 0x0A, 0x00, 0x01, 0x00, + 0x2D, 0x13, 0x49, 0xC3, 0x2D, 0x02, 0x0E, 0x00, + 0x0A, 0xC3, 0x1D, 0xD3, 0x8C, 0x01, 0x00, 0x84, + 0xCC, 0x01, 0x00, 0x40, 0x0A, 0x01, 0x00, 0x5E, + 0xDD, 0x16, 0x4C, 0xC7, 0xA9, 0xC3, 0x10, 0x00, + 0xE9, 0xC3, 0x12, 0x00, 0x41, 0xCA, 0x10, 0x00, + 0x2F, 0x02, 0x04, 0x00, 0x01, 0x17, 0x8E, 0x05, + 0x8C, 0x07, 0x02, 0x00, 0xA0, 0xC2, 0xF6, 0x07, + 0xA0, 0x06, 0x00, 0xBA, 0x69, 0xC0, 0x10, 0x00, + 0x29, 0xC8, 0x14, 0x00, 0x06, 0x09, 0x29, 0xC8, + 0x16, 0x00, 0x08, 0x09, 0x69, 0x01, 0x0E, 0x00, + 0x00, 0x08, 0x04, 0x16, 0x90, 0x03, 0x7F, 0x00, + 0xA0, 0x06, 0x5A, 0xC2, 0x40, 0x01, 0x00, 0x40, + 0x01, 0x16, 0x51, 0x04, 0x60, 0x04, 0xBE, 0xC1, + 0xA9, 0xC3, 0x0C, 0x00, 0x0B, 0x13, 0x0E, 0x68, + 0x96, 0x08, 0xE9, 0x04, 0x0C, 0x00, 0x29, 0xC8, + 0x06, 0x00, 0x6C, 0x01, 0xA0, 0xC3, 0x00, 0xFC, + 0x01, 0x13, 0x1E, 0x2E, 0x29, 0x07, 0x04, 0x00, + 0x5B, 0x04, 0x81, 0x07, 0x20, 0x20, 0x89, 0x07, + 0x4C, 0x08, 0x41, 0xCE, 0x63, 0xCE, 0x10, 0x00, + 0x63, 0xC6, 0x12, 0x00, 0xA0, 0x06, 0x54, 0xBA, + 0x43, 0xC2, 0x02, 0x13, 0xA0, 0x06, 0x1A, 0xC3, + 0x20, 0xE0, 0x10, 0xE0, 0x60, 0x04, 0xEC, 0xC1, + 0x40, 0x01, 0x00, 0x04, 0xEA, 0x16, 0xA0, 0x06, + 0xAC, 0xC1, 0xA0, 0xC2, 0xF0, 0x07, 0x8C, 0x07, + 0x04, 0x00, 0x8D, 0x07, 0x4C, 0x08, 0xA0, 0xC3, + 0x8E, 0x08, 0xE0, 0xC3, 0x90, 0x08, 0xA0, 0x06, + 0x36, 0xBA, 0xE0, 0xC3, 0x4E, 0x08, 0x4F, 0x01, + 0x01, 0x00, 0x13, 0x16, 0xE0, 0xC2, 0x94, 0x08, + 0xEA, 0x16, 0x60, 0x04, 0xEC, 0xC1, 0xE0, 0xC3, + 0x4E, 0x08, 0x4F, 0x01, 0x01, 0x00, 0x09, 0x16, + 0x60, 0x04, 0xEC, 0xC1, 0xA0, 0x06, 0x54, 0xBA, + 0xE0, 0xC3, 0x4E, 0x08, 0x4F, 0x01, 0x01, 0x00, + 0xD7, 0x13, 0xA0, 0xC2, 0xF0, 0x07, 0x20, 0xC3, + 0x7C, 0x09, 0x8D, 0x07, 0x4C, 0x08, 0x9D, 0xC3, + 0xA0, 0x06, 0x36, 0xBA, 0xC0, 0x06, 0x20, 0xD0, + 0x50, 0x08, 0xC0, 0x06, 0x40, 0x01, 0x00, 0x04, + 0x0A, 0x16, 0x40, 0x01, 0x80, 0x00, 0x07, 0x13, + 0x0E, 0xC8, 0x4C, 0x08, 0x0F, 0xC8, 0x4E, 0x08, + 0xA0, 0x06, 0xA2, 0xC1, 0xD8, 0x10, 0x0E, 0xC8, + 0x8E, 0x08, 0x0F, 0xC8, 0x90, 0x08, 0x40, 0x01, + 0x00, 0x04, 0x0C, 0x13, 0x40, 0x01, 0x20, 0x00, + 0x58, 0x16, 0x81, 0x07, 0x10, 0x20, 0x9F, 0x10, + 0xA0, 0x06, 0xAC, 0xC1, 0xA0, 0xC3, 0x8E, 0x08, + 0xE0, 0xC3, 0x90, 0x08, 0x83, 0x07, 0x98, 0x08, + 0x63, 0x07, 0x04, 0x00, 0x2D, 0x11, 0x83, 0x07, + 0xB0, 0x08, 0x63, 0x07, 0x04, 0x00, 0x28, 0x11, + 0x83, 0x07, 0xC8, 0x08, 0x63, 0x07, 0x04, 0x00, + 0x23, 0x11, 0xC3, 0x60, 0x60, 0xC2, 0x46, 0x07, + 0xE7, 0x13, 0x69, 0x01, 0x0E, 0x00, 0x00, 0x08, + 0xE3, 0x13, 0x00, 0x03, 0x02, 0x00, 0x19, 0xC8, + 0x46, 0x07, 0x03, 0x16, 0xA0, 0x01, 0x3A, 0x07, + 0x20, 0x00, 0x00, 0x03, 0x0F, 0x00, 0xC0, 0x01, + 0x00, 0xF0, 0x80, 0x01, 0x00, 0x20, 0x01, 0x02, + 0x06, 0xC4, 0x60, 0x04, 0x9A, 0xC2, 0x81, 0x07, + 0x80, 0x20, 0xE0, 0xC8, 0x8E, 0x08, 0x14, 0x00, + 0xE0, 0xC8, 0x90, 0x08, 0x16, 0x00, 0xC7, 0x10, + 0xE0, 0xC8, 0x50, 0x08, 0x0E, 0x00, 0xCE, 0xC8, + 0x10, 0x00, 0xCF, 0xC8, 0x12, 0x00, 0x40, 0x01, + 0x20, 0x00, 0xBB, 0x16, 0xE3, 0xC1, 0x06, 0x00, + 0xC7, 0xC8, 0x08, 0x00, 0x07, 0xC8, 0x6C, 0x01, + 0x07, 0xC8, 0xE0, 0x08, 0x08, 0x02, 0x02, 0xFC, + 0xB8, 0x07, 0x00, 0x81, 0xE0, 0xC1, 0xE8, 0x00, + 0x07, 0xCE, 0x20, 0xC8, 0x52, 0x08, 0x92, 0x08, + 0xDA, 0x13, 0xCE, 0xC8, 0x14, 0x00, 0xCF, 0xC8, + 0x16, 0x00, 0x80, 0x01, 0x00, 0x04, 0x82, 0x07, + 0x54, 0x08, 0x32, 0xC1, 0x08, 0x11, 0x72, 0xC1, + 0x92, 0xC1, 0x82, 0x07, 0x8A, 0x08, 0x04, 0xC1, + 0x07, 0x16, 0x60, 0x04, 0x8E, 0xC5, 0x72, 0xC1, + 0xB2, 0xC1, 0x84, 0x01, 0x00, 0x80, 0xF9, 0x13, + 0x04, 0x68, 0x92, 0x08, 0xC7, 0xC1, 0x37, 0x16, + 0x20, 0x98, 0x97, 0x08, 0x85, 0x09, 0x16, 0x16, + 0x81, 0x07, 0x40, 0x20, 0xE0, 0xC1, 0x94, 0x08, + 0x57, 0x13, 0xA0, 0x06, 0xAC, 0xC1, 0xF4, 0x10, + 0xE0, 0xC2, 0x3A, 0x07, 0xE0, 0x42, 0x62, 0x07, + 0xE0, 0x26, 0x3A, 0xE3, 0x02, 0x13, 0xA0, 0x06, + 0x92, 0xC1, 0xA0, 0x06, 0x54, 0xBA, 0x22, 0x10, + 0xA0, 0x06, 0x9C, 0xC1, 0x81, 0x2D, 0x01, 0xC2, + 0xFB, 0x13, 0xA0, 0x05, 0x96, 0x08, 0x23, 0xC8, + 0x08, 0x00, 0x6C, 0x01, 0xA0, 0x07, 0x02, 0xFC, + 0x00, 0x80, 0xC3, 0xC1, 0x27, 0x02, 0x06, 0x00, + 0xA0, 0x06, 0x0C, 0xB5, 0xA3, 0x05, 0x0C, 0x00, + 0x08, 0xC8, 0x6C, 0x01, 0x08, 0xC8, 0xE0, 0x08, + 0x08, 0x02, 0x02, 0xFC, 0xB8, 0x07, 0x00, 0x81, + 0xF8, 0xC1, 0x04, 0xC1, 0x37, 0x13, 0xE0, 0xD2, + 0x03, 0x01, 0xD2, 0x13, 0x0B, 0x02, 0x0A, 0x01, + 0xC4, 0xCE, 0xC7, 0xCE, 0xC5, 0xCE, 0xC6, 0xCE, + 0xFB, 0x04, 0x09, 0x02, 0x00, 0x04, 0x48, 0xA2, + 0xC9, 0xC6, 0x20, 0xA8, 0xE0, 0x08, 0x12, 0x01, + 0x20, 0xC8, 0xF2, 0x07, 0x00, 0x01, 0x47, 0xC2, + 0xC4, 0x81, 0x01, 0x14, 0x44, 0xC2, 0xC9, 0x61, + 0x09, 0xA2, 0x89, 0xA1, 0x01, 0x17, 0x85, 0x05, + 0x09, 0x61, 0xA8, 0x16, 0x82, 0x02, 0x8A, 0x08, + 0x05, 0x16, 0x40, 0x01, 0x10, 0x00, 0x12, 0x13, + 0x60, 0x04, 0xA6, 0xC3, 0x60, 0x04, 0xBC, 0xC4, + 0x60, 0x04, 0x40, 0xC3, 0x81, 0x07, 0x80, 0x20, + 0xFB, 0x10, 0x81, 0x07, 0x80, 0x20, 0xF8, 0x10, + 0x81, 0x07, 0x02, 0x20, 0xF5, 0x10, 0x81, 0x07, + 0x04, 0x20, 0xF2, 0x10, 0x23, 0xC8, 0x08, 0x00, + 0x6C, 0x01, 0x07, 0x05, 0xE0, 0xA1, 0xE8, 0x00, + 0x0C, 0x02, 0x04, 0xFC, 0x07, 0xCF, 0xE0, 0xC2, + 0x92, 0x08, 0xE8, 0x16, 0xE0, 0xD2, 0x03, 0x01, + 0x10, 0x16, 0xE0, 0xC2, 0x3A, 0x07, 0xE0, 0x42, + 0x62, 0x07, 0xE0, 0x26, 0x3A, 0xE3, 0x07, 0x13, + 0x90, 0x03, 0xC8, 0x2F, 0xA0, 0x06, 0x92, 0xC1, + 0xE0, 0xD2, 0x03, 0x01, 0x02, 0x16, 0xA0, 0x06, + 0x54, 0xBA, 0x23, 0xC8, 0x06, 0x00, 0x6C, 0x01, + 0xA3, 0xC2, 0x0E, 0x00, 0x4A, 0x01, 0x00, 0x01, + 0x0B, 0x13, 0x0C, 0x02, 0x0E, 0xFC, 0x5C, 0xC2, + 0x49, 0x02, 0x00, 0x80, 0x0D, 0x02, 0x6C, 0x09, + 0x7D, 0xE2, 0x09, 0xCF, 0x3D, 0xCF, 0x3D, 0xCF, + 0x0C, 0x02, 0x00, 0xFC, 0x6C, 0xC3, 0x06, 0x00, + 0x4D, 0x02, 0xFF, 0xE0, 0x4A, 0x02, 0x00, 0x02, + 0x8A, 0xA2, 0x8A, 0xA2, 0x4A, 0xE3, 0x60, 0xE3, + 0x9E, 0x09, 0x0D, 0xCB, 0x06, 0x00, 0xCD, 0x06, + 0x0B, 0x02, 0x0F, 0x00, 0xEC, 0x82, 0x04, 0x00, + 0xAD, 0x11, 0xEC, 0xC3, 0x0E, 0x00, 0x11, 0x15, + 0x10, 0x13, 0x6C, 0xC2, 0x14, 0x00, 0x49, 0x02, + 0x00, 0x1F, 0xA7, 0x13, 0xC9, 0x06, 0x89, 0x02, + 0x12, 0x00, 0xA3, 0x1B, 0x49, 0x01, 0x01, 0x00, + 0xA0, 0x13, 0xC9, 0xA2, 0xEC, 0x82, 0x04, 0x00, + 0x9C, 0x11, 0x4D, 0xA3, 0x9D, 0x18, 0x14, 0x11, + 0x60, 0x01, 0x6A, 0x09, 0x00, 0x80, 0x18, 0x13, + 0x1D, 0x09, 0xCC, 0xA2, 0xEB, 0xC2, 0x08, 0x00, + 0x7B, 0x09, 0x4B, 0x02, 0x1E, 0x00, 0xA0, 0xC3, + 0xF0, 0x06, 0xAB, 0x23, 0x04, 0xE0, 0x8F, 0x16, + 0x60, 0x27, 0x3E, 0xE3, 0x8C, 0x16, 0x4D, 0xA3, + 0x4D, 0xA3, 0x4D, 0xA3, 0xCD, 0x06, 0x4D, 0x02, + 0x07, 0x00, 0x0D, 0x88, 0xEE, 0x06, 0x0A, 0x15, + 0x90, 0x03, 0xFF, 0x6F, 0x53, 0x2F, 0xA0, 0x05, + 0x94, 0x08, 0xC3, 0x04, 0xC0, 0x01, 0x00, 0x04, + 0x60, 0x04, 0xAA, 0xC3, 0x60, 0x01, 0x6A, 0x09, + 0x00, 0x80, 0xF2, 0x13, 0x01, 0x02, 0x08, 0x20, + 0x60, 0x04, 0xA2, 0xC5, 0x8D, 0x07, 0x00, 0x10, + 0x20, 0x20, 0x0A, 0xE0, 0x0A, 0x16, 0x8D, 0x07, + 0x00, 0x08, 0x20, 0x20, 0x0E, 0xE0, 0x05, 0x13, + 0x8D, 0x07, 0x00, 0x40, 0x4F, 0x01, 0x01, 0x00, + 0x01, 0x16, 0x5B, 0x04, 0x20, 0xE0, 0x0E, 0xE0, + 0xA0, 0x07, 0xFA, 0x08, 0x00, 0x80, 0x0E, 0xC8, + 0xFA, 0x07, 0x0F, 0xC8, 0xFC, 0x07, 0x0E, 0xC8, + 0x3C, 0x08, 0x0F, 0xC8, 0x3E, 0x08, 0xE0, 0x04, + 0x08, 0x08, 0xE0, 0x04, 0x0E, 0x08, 0xE0, 0x02, + 0x98, 0x07, 0x20, 0x40, 0x4C, 0xE3, 0x20, 0x07, + 0x2E, 0x06, 0x60, 0x04, 0x12, 0xCA, 0x00, 0x70, + 0x4B, 0xC0, 0xE0, 0x04, 0x2E, 0x06, 0x0B, 0x10, + 0x20, 0xF0, 0x4B, 0xE3, 0x02, 0x10, 0x20, 0xF0, + 0x4A, 0xE3, 0x4B, 0xC0, 0xE0, 0x04, 0x2E, 0x06, + 0xE0, 0x01, 0x62, 0x07, 0x40, 0x00, 0x20, 0xE8, + 0x46, 0xE3, 0x62, 0x07, 0x20, 0x04, 0xDA, 0xEA, + 0x40, 0x01, 0x00, 0x20, 0x04, 0x13, 0xFA, 0x10, + 0x40, 0x01, 0x00, 0x40, 0xF7, 0x16, 0x20, 0x07, + 0x2E, 0x06, 0x20, 0x50, 0x50, 0xE3, 0x51, 0x04, + 0xF1, 0x10, 0xE0, 0x02, 0x58, 0x07, 0x00, 0x01, + 0x00, 0x40, 0x07, 0x16, 0x8D, 0x07, 0xF6, 0x08, + 0xA0, 0x06, 0x68, 0xB8, 0xE0, 0x02, 0x98, 0x07, + 0x5B, 0x04, 0xC4, 0x01, 0x04, 0x00, 0xE0, 0x02, + 0x98, 0x07, 0x5B, 0x04, 0x60, 0x01, 0x60, 0x07, + 0x04, 0x00, 0x06, 0x16, 0x20, 0xE8, 0x1C, 0xE0, + 0x58, 0x07, 0x80, 0x03, 0xE0, 0x02, 0x98, 0x07, + 0x20, 0xD8, 0xDC, 0x07, 0x17, 0x01, 0x8F, 0x07, + 0x8E, 0xFF, 0x0F, 0xC8, 0x04, 0x01, 0x20, 0xE8, + 0x06, 0xE0, 0x58, 0x07, 0x80, 0x01, 0x00, 0x80, + 0x5B, 0x04, 0xE0, 0xC2, 0x4A, 0x08, 0xC3, 0x82, + 0x03, 0x13, 0xDB, 0x2D, 0x03, 0xC8, 0x4A, 0x08, + 0x49, 0x01, 0x00, 0x01, 0x02, 0x16, 0x60, 0x04, + 0x52, 0xC9, 0xE0, 0xC0, 0xF8, 0x05, 0xFD, 0x13, + 0x03, 0xC8, 0x6C, 0x01, 0x20, 0xC8, 0x00, 0xFC, + 0xF8, 0x05, 0x88, 0x07, 0x02, 0xFC, 0x78, 0xC2, + 0xF8, 0xC1, 0x28, 0x02, 0x00, 0x04, 0x49, 0x01, + 0x00, 0x01, 0x4D, 0x16, 0x09, 0x01, 0x00, 0x5E, + 0x29, 0x16, 0x49, 0x01, 0x02, 0x00, 0x0B, 0x16, + 0x60, 0x01, 0x46, 0x08, 0x00, 0x02, 0x0A, 0x16, + 0x27, 0x02, 0x04, 0x00, 0x07, 0x88, 0x7E, 0x09, + 0x05, 0x12, 0x27, 0x02, 0xFC, 0xFF, 0xA0, 0x01, + 0x46, 0x08, 0x00, 0x02, 0xC7, 0xC1, 0x37, 0x15, + 0xD3, 0x2D, 0xE0, 0xC0, 0x4A, 0x08, 0x07, 0xA8, + 0x48, 0x08, 0x07, 0xA8, 0x44, 0x08, 0x0C, 0x15, + 0x20, 0xC8, 0x3C, 0x08, 0xFA, 0x07, 0x20, 0xC8, + 0x3E, 0x08, 0xFC, 0x07, 0x20, 0xC8, 0x40, 0x08, + 0x3C, 0x08, 0x20, 0xC8, 0x42, 0x08, 0x3E, 0x08, + 0x60, 0x04, 0x52, 0xC9, 0xA0, 0x06, 0x54, 0xBA, + 0xD3, 0x2D, 0xE0, 0xC2, 0x4A, 0x08, 0xC3, 0x82, + 0x01, 0x13, 0xDB, 0x2D, 0x20, 0x88, 0x3E, 0x08, + 0x3A, 0x08, 0x0D, 0x16, 0x20, 0x88, 0x3C, 0x08, + 0x38, 0x08, 0x09, 0x16, 0xE0, 0x04, 0x44, 0x08, + 0x82, 0x07, 0x02, 0x08, 0x04, 0x61, 0xE0, 0x04, + 0x48, 0x08, 0x60, 0x04, 0x1E, 0xCA, 0x20, 0xC8, + 0x38, 0x08, 0xFA, 0x07, 0x20, 0xC8, 0x3A, 0x08, + 0xFC, 0x07, 0x60, 0x04, 0x12, 0xCA, 0x07, 0xA8, + 0x48, 0x08, 0x04, 0xC1, 0x1B, 0x16, 0x82, 0x02, + 0x38, 0x08, 0x0A, 0x16, 0x60, 0x01, 0xFC, 0x07, + 0x01, 0x00, 0x02, 0x16, 0xA0, 0x06, 0x6E, 0xCB, + 0xA0, 0x06, 0xFC, 0xCA, 0x80, 0x01, 0x10, 0x00, + 0x32, 0xC1, 0x07, 0x11, 0x72, 0xC1, 0x92, 0xC1, + 0x82, 0x07, 0x38, 0x08, 0x04, 0xC1, 0x06, 0x16, + 0xEA, 0x10, 0x72, 0xC1, 0xB2, 0xC1, 0x84, 0x01, + 0x00, 0x80, 0xE5, 0x13, 0xE0, 0xD2, 0x03, 0x01, + 0x34, 0x13, 0x0B, 0x02, 0x0A, 0x01, 0xC4, 0xCE, + 0xC7, 0xCE, 0xC5, 0xCE, 0xC6, 0xCE, 0xFB, 0x04, + 0xC8, 0xC6, 0x03, 0xA8, 0x12, 0x01, 0x20, 0xC8, + 0xF8, 0x07, 0x00, 0x01, 0xC7, 0xC2, 0xC4, 0x81, + 0x01, 0x14, 0xC4, 0xC2, 0x0B, 0xA8, 0x44, 0x08, + 0x0B, 0x61, 0x0B, 0xA2, 0x8B, 0xA1, 0x01, 0x17, + 0x85, 0x05, 0xCB, 0x61, 0xC6, 0x16, 0x40, 0x01, + 0x40, 0x00, 0x15, 0x16, 0x87, 0x07, 0x20, 0x00, + 0xE0, 0x61, 0x44, 0x08, 0xC4, 0x81, 0x08, 0x1A, + 0x07, 0xA8, 0x48, 0x08, 0x07, 0xA8, 0x44, 0x08, + 0x07, 0x61, 0x87, 0xA1, 0x01, 0x17, 0x85, 0x05, + 0x80, 0x01, 0x40, 0x00, 0x03, 0xC8, 0x6C, 0x01, + 0xE0, 0xC1, 0x04, 0xFC, 0xAC, 0x10, 0x60, 0x04, + 0xBC, 0xC7, 0x20, 0x01, 0x3A, 0x07, 0x00, 0x70, + 0x04, 0x13, 0xA0, 0x06, 0x28, 0xC7, 0x20, 0x07, + 0x2E, 0x06, 0xA0, 0x06, 0x54, 0xBA, 0xC1, 0x10, + 0xE0, 0xD2, 0x03, 0x01, 0x0A, 0x16, 0x20, 0x01, + 0x3A, 0x07, 0x00, 0x70, 0x04, 0x13, 0xA0, 0x06, + 0x28, 0xC7, 0x20, 0x07, 0x2E, 0x06, 0xA0, 0x06, + 0x54, 0xBA, 0x90, 0x03, 0xBF, 0x4F, 0xD3, 0x2D, + 0x60, 0x01, 0xFC, 0x07, 0x01, 0x00, 0x02, 0x16, + 0xA0, 0x06, 0x6E, 0xCB, 0x60, 0xD2, 0x46, 0x08, + 0x89, 0x01, 0x00, 0xF1, 0xC9, 0x01, 0x00, 0x70, + 0x40, 0x01, 0x10, 0x00, 0x1C, 0x13, 0x20, 0x88, + 0x3E, 0x08, 0x3A, 0x08, 0x04, 0x16, 0x20, 0x88, + 0x3C, 0x08, 0x38, 0x08, 0x14, 0x13, 0x89, 0x01, + 0x00, 0x10, 0x8D, 0x07, 0x44, 0x08, 0x9D, 0x07, + 0x00, 0x50, 0xA0, 0xC2, 0xF6, 0x07, 0x8C, 0x07, + 0x02, 0x00, 0xA0, 0xC3, 0x3C, 0x08, 0xE0, 0xC3, + 0x3E, 0x08, 0x2F, 0x02, 0x04, 0x00, 0x01, 0x17, + 0x8E, 0x05, 0xA0, 0x06, 0x00, 0xBA, 0x8D, 0x07, + 0x46, 0x08, 0x49, 0xC7, 0xA0, 0xC2, 0xF6, 0x07, + 0x8C, 0x07, 0x04, 0x00, 0xA0, 0xC3, 0x38, 0x08, + 0xE0, 0xC3, 0x3A, 0x08, 0xCC, 0xA3, 0x01, 0x17, + 0x8E, 0x05, 0xA0, 0x06, 0x00, 0xBA, 0x20, 0xC8, + 0x3C, 0x08, 0xFC, 0x08, 0x20, 0xC8, 0x3E, 0x08, + 0xFE, 0x08, 0x09, 0x01, 0x00, 0x0C, 0x0C, 0x13, + 0x49, 0x01, 0x00, 0x04, 0x05, 0x16, 0xA0, 0x06, + 0x6C, 0xC7, 0xA0, 0x06, 0x38, 0xC7, 0x04, 0x10, + 0x90, 0x03, 0x7F, 0x40, 0xA0, 0x06, 0x6C, 0xC7, + 0xC0, 0x01, 0x90, 0x00, 0xA0, 0x06, 0xFC, 0xCA, + 0x0B, 0xC8, 0x46, 0x08, 0xE0, 0xC2, 0x42, 0x07, + 0x2D, 0x13, 0xE0, 0xC2, 0x2E, 0x06, 0x2A, 0x13, + 0xE0, 0x02, 0x58, 0x07, 0x8F, 0x07, 0xBF, 0xFF, + 0x0F, 0x2C, 0xE0, 0x02, 0x98, 0x07, 0xE0, 0xC0, + 0x5C, 0x07, 0x03, 0xC8, 0x4A, 0x08, 0x03, 0xC8, + 0x6C, 0x01, 0xC3, 0xC2, 0xCB, 0xA2, 0xEB, 0xC2, + 0x32, 0x0C, 0x32, 0x13, 0x0B, 0xC8, 0x00, 0xFC, + 0x0B, 0xC3, 0x4B, 0xC3, 0x0B, 0xC8, 0x6C, 0x01, + 0xE0, 0xC2, 0x00, 0xFC, 0xFA, 0x16, 0x00, 0x03, + 0x02, 0x00, 0x20, 0xC8, 0xF8, 0x05, 0x00, 0xFC, + 0x02, 0x16, 0x0D, 0xC8, 0xFA, 0x05, 0x0C, 0xC8, + 0xF8, 0x05, 0x00, 0x03, 0x0F, 0x00, 0x03, 0xC8, + 0x6C, 0x01, 0x1A, 0x10, 0xA0, 0xC3, 0x2E, 0x06, + 0x03, 0x13, 0xE0, 0xC0, 0xF8, 0x05, 0x0D, 0x16, + 0x4F, 0x2E, 0xC0, 0x01, 0x00, 0x80, 0xA0, 0x01, + 0x62, 0x07, 0x00, 0x80, 0x8E, 0xC3, 0x03, 0x13, + 0xA0, 0x01, 0x62, 0x07, 0x40, 0x00, 0x60, 0x04, + 0x4E, 0xC7, 0x03, 0xC8, 0x6C, 0x01, 0x20, 0xC8, + 0x00, 0xFC, 0xF8, 0x05, 0x03, 0xC8, 0x4A, 0x08, + 0x60, 0x01, 0x6A, 0x09, 0x00, 0x04, 0x02, 0x13, + 0x60, 0x04, 0xE4, 0xC7, 0x8C, 0x07, 0x0E, 0x00, + 0x20, 0xC2, 0x0E, 0xFC, 0x0A, 0x15, 0x09, 0x13, + 0x20, 0xC2, 0x14, 0xFC, 0x48, 0x02, 0x00, 0x1F, + 0xC8, 0x06, 0x88, 0x02, 0x12, 0x00, 0xF0, 0x1B, + 0x08, 0xA3, 0x88, 0x07, 0x02, 0xFC, 0x78, 0xC2, + 0xF8, 0xC1, 0x28, 0x02, 0x00, 0x04, 0x07, 0x83, + 0xE7, 0x1A, 0xCC, 0x61, 0x07, 0xC8, 0x04, 0xFC, + 0xCC, 0xC1, 0xC0, 0x01, 0x40, 0x00, 0x60, 0x04, + 0xF0, 0xC7, 0x4B, 0xC1, 0xA0, 0xC2, 0xF0, 0x07, + 0x20, 0xC3, 0x7A, 0x09, 0x8D, 0x07, 0xFA, 0x07, + 0x9D, 0xC3, 0xE0, 0xC3, 0xFC, 0x07, 0xA0, 0x06, + 0x00, 0xBA, 0x20, 0xC8, 0x3C, 0x08, 0x40, 0x08, + 0x20, 0xC8, 0x3E, 0x08, 0x42, 0x08, 0x0E, 0xC8, + 0x3C, 0x08, 0x0F, 0xC8, 0x3E, 0x08, 0xC4, 0x04, + 0x82, 0x07, 0x02, 0x08, 0xE0, 0x04, 0x44, 0x08, + 0x40, 0x01, 0x80, 0x00, 0x06, 0x16, 0x0E, 0xC8, + 0x38, 0x08, 0x0F, 0xC8, 0x3A, 0x08, 0xE0, 0x04, + 0x48, 0x08, 0xA0, 0x06, 0x54, 0xBA, 0xE0, 0xC2, + 0xFE, 0x07, 0x0D, 0x11, 0x0E, 0xC8, 0xFA, 0x07, + 0x0F, 0xC8, 0xFC, 0x07, 0x20, 0xC8, 0x40, 0x08, + 0x3C, 0x08, 0x20, 0xC8, 0x42, 0x08, 0x3E, 0x08, + 0xA0, 0x06, 0x32, 0xC7, 0xCB, 0x10, 0x80, 0x01, + 0x80, 0x00, 0x55, 0x04, 0x8B, 0xC0, 0xA0, 0xC2, + 0xF0, 0x07, 0x8C, 0x07, 0x04, 0x00, 0x8D, 0x07, + 0xFA, 0x07, 0xA0, 0xC3, 0x3C, 0x08, 0xE0, 0xC3, + 0x3E, 0x08, 0xA0, 0x06, 0x36, 0xBA, 0x60, 0x01, + 0xFC, 0x07, 0x01, 0x00, 0x04, 0x13, 0xA0, 0x07, + 0xFA, 0x08, 0x00, 0x80, 0x52, 0x04, 0x60, 0x01, + 0x60, 0x07, 0x04, 0x00, 0x07, 0x16, 0x20, 0xD0, + 0x04, 0xE0, 0x20, 0xE8, 0x1A, 0xE0, 0x58, 0x07, + 0x60, 0x04, 0x3E, 0xC7, 0xA0, 0x07, 0xFA, 0x08, + 0x00, 0x40, 0x20, 0xC8, 0x3C, 0x08, 0xFC, 0x08, + 0x20, 0xC8, 0x3E, 0x08, 0xFE, 0x08, 0xA0, 0x06, + 0x6C, 0xC7, 0xA0, 0x06, 0x38, 0xC7, 0xD3, 0x10, + 0xAD, 0xC2, 0x02, 0x00, 0x6D, 0xC2, 0x00, 0x00, + 0x05, 0x16, 0xAA, 0x07, 0x02, 0x00, 0x36, 0x07, + 0x9A, 0x2C, 0x80, 0x03, 0xEA, 0x2C, 0x02, 0x00, + 0x41, 0xCB, 0x00, 0x00, 0x80, 0x03, 0x2D, 0xC3, + 0x18, 0x00, 0xAC, 0x07, 0x02, 0x00, 0x36, 0x07, + 0x20, 0x4B, 0x06, 0xEB, 0x0A, 0x00, 0x20, 0xEB, + 0x00, 0xEB, 0x0A, 0x00, 0x9C, 0x2E, 0x80, 0x03, + 0xA0, 0xC2, 0x22, 0xE0, 0x60, 0x04, 0x8A, 0xA3, + 0xED, 0xC0, 0x18, 0x00, 0xA0, 0x06, 0x3A, 0xCC, + 0x80, 0x03, 0x44, 0xC2, 0xC3, 0xC0, 0x02, 0x13, + 0xA0, 0x06, 0x3A, 0xCC, 0x19, 0xC3, 0x09, 0xCB, + 0x18, 0x00, 0xC9, 0x05, 0x19, 0xCB, 0x16, 0x00, + 0x4C, 0xC2, 0x2C, 0x02, 0x1A, 0x00, 0x0D, 0xCF, + 0x0E, 0xCF, 0x0F, 0xC7, 0x99, 0x00, 0x5B, 0x04, + 0x8C, 0x07, 0x0A, 0x09, 0x9C, 0xC2, 0xA0, 0x22, + 0x14, 0xE0, 0x06, 0x13, 0xA0, 0xC2, 0x58, 0x07, + 0xA0, 0x22, 0x20, 0xE0, 0x01, 0x16, 0x80, 0x03, + 0x03, 0xC1, 0xC3, 0x04, 0x8A, 0x07, 0x04, 0x00, + 0x84, 0xA2, 0x3A, 0xCF, 0x3A, 0xCF, 0x3A, 0xCF, + 0x3A, 0xCF, 0x3A, 0xCF, 0xE0, 0x02, 0x58, 0x07, + 0x8D, 0x07, 0x0A, 0x09, 0x0B, 0xC8, 0xC2, 0x07, + 0xA0, 0x06, 0x44, 0xB8, 0xE0, 0xC2, 0xC2, 0x07, + 0x20, 0xE0, 0x20, 0xE0, 0xE0, 0x02, 0xB8, 0x07, + 0x5B, 0x04, 0x2D, 0xC3, 0x18, 0x00, 0x8C, 0xC2, + 0x60, 0xC2, 0x6C, 0x01, 0x0A, 0xC8, 0x6C, 0x01, + 0xE0, 0xC2, 0x00, 0xFC, 0x02, 0x13, 0x8B, 0xC2, + 0xF9, 0x10, 0x09, 0xC8, 0x6C, 0x01, 0x8B, 0x07, + 0xF8, 0x05, 0x5B, 0xC2, 0x0C, 0x13, 0xCB, 0x05, + 0x5B, 0xC2, 0xCA, 0xC6, 0xE0, 0xC2, 0x6C, 0x01, + 0x09, 0xC8, 0x6C, 0x01, 0x0C, 0xC8, 0x00, 0xFC, + 0x0B, 0xC8, 0x6C, 0x01, 0x02, 0x10, 0xCC, 0xCE, + 0xCA, 0xC6, 0xA0, 0xC2, 0xE0, 0x00, 0xA0, 0x22, + 0x1A, 0xE0, 0x06, 0x16, 0x20, 0xE8, 0x04, 0xE0, + 0x3A, 0x07, 0x20, 0x48, 0x1A, 0xE0, 0xE0, 0x00, + 0x80, 0x03, 0xE0, 0xD3, 0xAB, 0xE3, 0xE0, 0x04, + 0x8E, 0x09, 0xE0, 0xC1, 0xA8, 0x06, 0x05, 0x16, + 0x07, 0x02, 0xA2, 0x06, 0xA0, 0x06, 0x38, 0xB5, + 0x0B, 0x16, 0xE0, 0xC1, 0xBA, 0x06, 0x23, 0x16, + 0x07, 0x02, 0xB4, 0x06, 0xA0, 0x06, 0x38, 0xB5, + 0x1E, 0x13, 0x07, 0x02, 0xB8, 0x06, 0x02, 0x10, + 0x07, 0x02, 0xA6, 0x06, 0x60, 0xC1, 0x02, 0xFC, + 0x25, 0xC8, 0x0C, 0x00, 0x02, 0xFC, 0xC5, 0xC9, + 0x0C, 0x00, 0xF5, 0xCD, 0xF5, 0xCD, 0xF5, 0xCD, + 0xF5, 0xCD, 0xF5, 0xCD, 0xF5, 0xC5, 0xB7, 0x01, + 0x28, 0x00, 0x27, 0x02, 0xF4, 0xFF, 0xA7, 0x07, + 0x04, 0x00, 0x52, 0xCE, 0x20, 0xE8, 0x9E, 0x09, + 0x06, 0xFC, 0x97, 0x2E, 0xD2, 0x10, 0x00, 0x03, + 0x02, 0x00, 0xA0, 0x06, 0x50, 0xB5, 0x00, 0x03, + 0x0F, 0x00, 0x20, 0x2C, 0xF0, 0xED, 0xE0, 0x93, + 0xAB, 0xE3, 0x03, 0x16, 0x81, 0x02, 0x16, 0x00, + 0xC4, 0x16, 0x21, 0xC1, 0x10, 0xEB, 0x54, 0x04, + 0xE0, 0x93, 0x10, 0xE0, 0x03, 0x16, 0xA0, 0xD2, + 0xA8, 0xE3, 0x0B, 0x10, 0xCF, 0xD3, 0x09, 0x16, + 0xA0, 0x23, 0x08, 0xE0, 0x06, 0x16, 0x84, 0x07, + 0x20, 0x00, 0x04, 0xE8, 0xD2, 0x06, 0xA0, 0xD2, + 0x0C, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0x60, 0x04, + 0x70, 0xD1, 0x22, 0xC1, 0x04, 0x00, 0xE2, 0x04, + 0x02, 0x00, 0x54, 0x04, 0x02, 0xC8, 0x6C, 0x01, + 0x82, 0xA0, 0x22, 0xC8, 0x32, 0x0C, 0x00, 0xFC, + 0x02, 0x02, 0x00, 0xFC, 0xE0, 0x93, 0xAA, 0xE3, + 0x13, 0x16, 0xB0, 0x03, 0x20, 0x98, 0xAA, 0xE3, + 0x65, 0x06, 0x0D, 0x16, 0x8B, 0x07, 0x17, 0xFC, + 0xDB, 0xD2, 0x8B, 0x09, 0x8B, 0x02, 0x15, 0x00, + 0x7B, 0x1B, 0xEB, 0xD2, 0xC4, 0xEA, 0x06, 0x13, + 0x77, 0x15, 0x20, 0x07, 0xA0, 0x09, 0x74, 0x10, + 0xA0, 0x06, 0x02, 0xD0, 0xA0, 0x48, 0x04, 0xE0, + 0x0E, 0x00, 0x85, 0x02, 0x07, 0x00, 0x0E, 0x13, + 0x0E, 0x01, 0x03, 0x00, 0x0B, 0x13, 0xA0, 0x23, + 0x22, 0xE0, 0x03, 0x16, 0xA0, 0xD2, 0x0E, 0xE0, + 0x02, 0x10, 0xA0, 0xD2, 0xA8, 0xE3, 0x8E, 0x01, + 0x03, 0x00, 0x5E, 0x10, 0x05, 0xC8, 0xFC, 0x06, + 0xC3, 0xC0, 0x57, 0x16, 0xA0, 0x43, 0x10, 0xE0, + 0x22, 0x88, 0x0E, 0x00, 0x6C, 0x09, 0x0A, 0x16, + 0x22, 0x88, 0x10, 0x00, 0x6E, 0x09, 0x06, 0x16, + 0x22, 0x88, 0x12, 0x00, 0x70, 0x09, 0x02, 0x16, + 0xA0, 0xE3, 0x10, 0xE0, 0x85, 0x02, 0x09, 0x00, + 0x02, 0x13, 0xA0, 0x06, 0xB8, 0xD7, 0x45, 0xA1, + 0x65, 0xC1, 0xAC, 0xE3, 0x55, 0x04, 0x62, 0xC0, + 0x04, 0x00, 0x22, 0xC8, 0x06, 0x00, 0x6C, 0x01, + 0x82, 0x02, 0x48, 0x04, 0x02, 0x1B, 0xA0, 0x43, + 0x0C, 0xE0, 0x22, 0xC1, 0x0E, 0x00, 0x51, 0x04, + 0x42, 0xC0, 0xE1, 0x04, 0x02, 0x00, 0xA2, 0xC0, + 0x0C, 0x00, 0x22, 0xC1, 0x0A, 0x00, 0x20, 0x21, + 0x18, 0xE0, 0x07, 0x13, 0xA1, 0xC8, 0x0A, 0x00, + 0x0A, 0x00, 0xA1, 0xC8, 0x08, 0x00, 0x08, 0x00, + 0xE2, 0x10, 0x22, 0xC8, 0x06, 0x00, 0x6C, 0x01, + 0xA0, 0x06, 0x66, 0xD6, 0x60, 0x04, 0xB0, 0xCE, + 0x02, 0xC8, 0xD4, 0x06, 0x62, 0xC1, 0x02, 0x00, + 0x65, 0xC1, 0xD8, 0xE3, 0x55, 0x04, 0x0F, 0x10, + 0x0E, 0x10, 0x85, 0x07, 0xF4, 0x03, 0xF5, 0x04, + 0x60, 0xCD, 0xCE, 0xED, 0xA0, 0x06, 0xA2, 0xD8, + 0xA0, 0xE3, 0x0C, 0xE0, 0x20, 0xE8, 0x9E, 0x09, + 0x06, 0x04, 0xA0, 0x2E, 0xF4, 0x03, 0x60, 0x04, + 0xE4, 0xCC, 0xA0, 0x06, 0x26, 0xD5, 0x0C, 0x10, + 0xA0, 0x06, 0x66, 0xD6, 0x09, 0x10, 0xA0, 0x06, + 0x2A, 0xD8, 0x06, 0x10, 0xA0, 0x06, 0x66, 0xD6, + 0x03, 0xC8, 0x2A, 0x09, 0xA0, 0xD2, 0xAA, 0xE3, + 0xA0, 0x06, 0x6E, 0xCF, 0xA0, 0x92, 0x26, 0xE0, + 0x0C, 0x16, 0xE0, 0xD3, 0x26, 0xE0, 0xE0, 0x23, + 0x14, 0xE0, 0x0A, 0x13, 0x0A, 0xC1, 0xC4, 0x83, + 0x07, 0x13, 0xC4, 0xC3, 0x24, 0xC1, 0xDC, 0xE3, + 0x54, 0x04, 0xCA, 0x93, 0xDC, 0x13, 0xCA, 0xD3, + 0xB0, 0x03, 0x0F, 0xD8, 0x59, 0x06, 0x04, 0x71, + 0x24, 0xC1, 0xEC, 0xE3, 0x54, 0x04, 0xA0, 0x23, + 0x0C, 0xE0, 0xD1, 0x13, 0x4D, 0xC3, 0xCF, 0x13, + 0x4D, 0x01, 0x00, 0x04, 0x0B, 0x13, 0x86, 0x07, + 0x02, 0x00, 0x84, 0x07, 0x26, 0x00, 0x46, 0x23, + 0x03, 0x13, 0x44, 0x06, 0x86, 0xA1, 0xFB, 0x10, + 0x46, 0x43, 0xB3, 0x10, 0x84, 0x07, 0x18, 0x00, + 0x8D, 0x01, 0x00, 0x04, 0x85, 0x07, 0xF4, 0x03, + 0xF5, 0x04, 0x60, 0xCD, 0xCE, 0xED, 0xA0, 0x06, + 0xA2, 0xD8, 0x20, 0xE8, 0x9C, 0x09, 0xFE, 0x03, + 0x20, 0xE8, 0x9E, 0x09, 0x06, 0x04, 0xA8, 0x10, + 0x85, 0x07, 0x1C, 0x07, 0x86, 0x07, 0x1A, 0x04, + 0x76, 0x6D, 0x76, 0x6D, 0x76, 0x6D, 0xC6, 0x05, + 0x76, 0x6D, 0x76, 0x6D, 0x76, 0x6D, 0x83, 0x07, + 0x00, 0x90, 0xA9, 0x10, 0x0B, 0xC3, 0x86, 0x07, + 0x00, 0x01, 0x85, 0x07, 0x00, 0x80, 0x20, 0xC1, + 0xD2, 0x06, 0x37, 0x13, 0xC4, 0x04, 0x60, 0xC0, + 0xD2, 0x06, 0x45, 0x20, 0x04, 0x13, 0x84, 0x05, + 0x15, 0x09, 0xF9, 0x16, 0x2E, 0x10, 0xCF, 0xD3, + 0x06, 0x16, 0xE0, 0x23, 0x14, 0xE0, 0x03, 0x16, + 0x0E, 0x01, 0x03, 0x00, 0x03, 0x13, 0xE0, 0x04, + 0xD2, 0x06, 0x23, 0x10, 0x64, 0xD0, 0x1C, 0x07, + 0x46, 0xB0, 0x10, 0x18, 0x01, 0xD9, 0x1C, 0x07, + 0x60, 0x23, 0x20, 0xE0, 0x0B, 0x13, 0x81, 0x07, + 0x18, 0x00, 0x61, 0xC0, 0xFC, 0xE3, 0x11, 0x88, + 0xCE, 0xED, 0x04, 0x13, 0x08, 0x02, 0x18, 0x80, + 0xA0, 0x06, 0xDA, 0xD4, 0x64, 0xD0, 0x28, 0x07, + 0x46, 0xB0, 0x08, 0x18, 0x01, 0xD9, 0x28, 0x07, + 0x46, 0xB0, 0x04, 0x17, 0x83, 0x07, 0x40, 0x80, + 0xA0, 0x06, 0x2A, 0xD8, 0x05, 0x48, 0xD2, 0x06, + 0xCA, 0x16, 0x20, 0xC1, 0x32, 0x09, 0x01, 0x16, + 0x5C, 0x04, 0x04, 0x02, 0x07, 0x00, 0x20, 0x06, + 0x32, 0x09, 0x05, 0x02, 0x00, 0x01, 0xC7, 0x10, + 0x0B, 0xC3, 0xC5, 0x04, 0x42, 0xC0, 0xC7, 0x04, + 0x20, 0xC2, 0x6C, 0x01, 0xE1, 0xA1, 0x04, 0x00, + 0x11, 0xC8, 0x6C, 0x01, 0xFB, 0x16, 0x08, 0xC8, + 0x6C, 0x01, 0xC8, 0x04, 0xA0, 0x43, 0x1A, 0xE0, + 0x22, 0xC1, 0x0E, 0x00, 0x0D, 0x15, 0x0C, 0x13, + 0xA0, 0xE3, 0x1A, 0xE0, 0xA0, 0x06, 0x14, 0xD8, + 0x08, 0xC2, 0x48, 0x13, 0x88, 0x02, 0x12, 0x00, + 0x45, 0x1B, 0x20, 0x22, 0x22, 0xE0, 0x42, 0x13, + 0x02, 0xC1, 0x08, 0xA1, 0x08, 0x05, 0x28, 0x02, + 0xF2, 0xFF, 0x07, 0xA2, 0x83, 0x07, 0x01, 0x80, + 0x88, 0x02, 0x04, 0x00, 0x6E, 0x11, 0x64, 0xC2, + 0x16, 0x00, 0x49, 0xD2, 0x02, 0x16, 0x02, 0x81, + 0x31, 0x16, 0x09, 0x01, 0x00, 0xF0, 0x28, 0x16, + 0x49, 0xC1, 0x45, 0x71, 0xC3, 0x04, 0x85, 0x02, + 0x09, 0x00, 0x7C, 0x13, 0x83, 0x07, 0x02, 0x80, + 0xA4, 0xC1, 0x14, 0x00, 0x88, 0x81, 0x76, 0x16, + 0x83, 0x05, 0x85, 0x02, 0x15, 0x00, 0x13, 0x1B, + 0x83, 0x05, 0x49, 0x99, 0x30, 0xEB, 0x0A, 0x13, + 0x09, 0x98, 0x0E, 0xE0, 0x6B, 0x16, 0x25, 0x98, + 0x30, 0xEB, 0x0C, 0xE0, 0x67, 0x16, 0xE0, 0xC1, + 0xEC, 0x06, 0x64, 0x16, 0xC3, 0x04, 0x52, 0xC2, + 0x0F, 0x13, 0x83, 0x07, 0x09, 0x80, 0xE0, 0xC1, + 0x6A, 0x09, 0x47, 0x01, 0x00, 0x10, 0x5A, 0x16, + 0xA0, 0xC0, 0x6C, 0x01, 0xA0, 0x06, 0xBE, 0xD6, + 0x60, 0x04, 0xB0, 0xCE, 0x60, 0x04, 0xBA, 0xCE, + 0x89, 0x07, 0x0E, 0x07, 0xC7, 0x04, 0xE5, 0xD1, + 0x46, 0xEB, 0x05, 0x13, 0xC7, 0x06, 0x27, 0x02, + 0x5C, 0xEB, 0x77, 0xCE, 0xFE, 0x15, 0x44, 0xC0, + 0x21, 0x02, 0x18, 0x00, 0x28, 0x02, 0xFC, 0xFF, + 0x36, 0x13, 0x91, 0xC1, 0x86, 0xD1, 0x1F, 0x13, + 0xC6, 0x06, 0x87, 0x07, 0x0E, 0x07, 0xF7, 0xC0, + 0x46, 0x02, 0xFF, 0xBF, 0x43, 0x02, 0xFF, 0x3F, + 0xA0, 0x91, 0xF5, 0xED, 0x09, 0x16, 0xB0, 0x03, + 0x20, 0x98, 0x0E, 0xE0, 0x5D, 0x06, 0x0F, 0x16, + 0x21, 0xC8, 0x02, 0x00, 0x0C, 0x07, 0x17, 0x10, + 0x47, 0x82, 0x0C, 0x1B, 0xC6, 0x90, 0xEB, 0x16, + 0x47, 0x06, 0xF7, 0x04, 0xB0, 0x03, 0x20, 0x98, + 0x5D, 0x06, 0x57, 0x06, 0x0C, 0x13, 0x83, 0x07, + 0x05, 0x80, 0x1C, 0x10, 0xD1, 0xC0, 0xE0, 0x20, + 0x16, 0xE0, 0x03, 0x16, 0x83, 0x07, 0x08, 0x80, + 0x15, 0x10, 0x60, 0x44, 0x26, 0xE0, 0x86, 0x71, + 0x46, 0xA0, 0x06, 0x62, 0x83, 0x07, 0x05, 0x80, + 0x08, 0xC2, 0xCB, 0x15, 0x0B, 0x16, 0xC3, 0x04, + 0x87, 0x07, 0x0E, 0x07, 0x77, 0xC0, 0x47, 0x82, + 0x05, 0x1B, 0x60, 0x20, 0x06, 0xE0, 0xFA, 0x16, + 0x83, 0x07, 0x07, 0x80, 0x5C, 0x04, 0xA0, 0x92, + 0x0E, 0xE0, 0x11, 0x16, 0x20, 0xC8, 0x20, 0xE0, + 0x08, 0x07, 0xE0, 0x04, 0x84, 0x01, 0x60, 0x05, + 0x02, 0x07, 0x4B, 0x13, 0x20, 0x48, 0x06, 0xE0, + 0x82, 0x01, 0xA0, 0x06, 0xD0, 0xD4, 0x83, 0x07, + 0x00, 0xC0, 0xA0, 0x06, 0x2A, 0xD8, 0x20, 0xC8, + 0x1E, 0xE0, 0x02, 0x07, 0xA0, 0xE3, 0x04, 0xE0, + 0x08, 0x02, 0x24, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x42, 0x10, 0x20, 0xC1, 0x84, 0x01, 0x44, 0x02, + 0x00, 0x88, 0x2A, 0x13, 0x04, 0x48, 0x84, 0x01, + 0x20, 0x06, 0x02, 0x07, 0xF1, 0x16, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x80, 0x15, 0x13, 0xA0, 0x23, + 0x22, 0xE0, 0x05, 0x16, 0xA0, 0x43, 0x22, 0xE0, + 0xA0, 0xD2, 0x0E, 0xE0, 0xCF, 0x10, 0xE0, 0x23, + 0x14, 0xE0, 0x04, 0x13, 0x20, 0x98, 0xA9, 0xE3, + 0x65, 0x06, 0x0C, 0x16, 0xA0, 0x92, 0x0E, 0xE0, + 0xC5, 0x13, 0xA0, 0xD2, 0xA8, 0xE3, 0xD3, 0x10, + 0x20, 0xC8, 0x20, 0xE0, 0x08, 0x07, 0x83, 0x07, + 0x00, 0xC0, 0x04, 0x10, 0x83, 0x07, 0x02, 0x00, + 0x60, 0x04, 0xCA, 0xCE, 0x60, 0x04, 0xC0, 0xCE, + 0x20, 0xE8, 0x06, 0xE0, 0x82, 0x01, 0xA0, 0x06, + 0xD0, 0xD4, 0x20, 0x07, 0x02, 0x07, 0xA0, 0x43, + 0x04, 0xE0, 0x20, 0xC8, 0xAE, 0xE4, 0x86, 0x01, + 0x20, 0x88, 0x20, 0xE0, 0x08, 0x07, 0x03, 0x16, + 0x20, 0xC8, 0x78, 0xEB, 0x08, 0x07, 0x60, 0x04, + 0xD2, 0xCE, 0x0E, 0x01, 0x03, 0x00, 0x16, 0x13, + 0xCF, 0xD3, 0x08, 0x16, 0xA0, 0x23, 0x20, 0xE0, + 0x03, 0x16, 0xA0, 0xD2, 0xA8, 0xE3, 0x02, 0x10, + 0xA0, 0xD2, 0x0E, 0xE0, 0x8E, 0x01, 0x03, 0x00, + 0x09, 0x10, 0x60, 0xC1, 0x84, 0x01, 0x60, 0x21, + 0x0A, 0xE0, 0x04, 0x16, 0x83, 0x07, 0x00, 0x84, + 0x60, 0x04, 0xCA, 0xCE, 0x20, 0xC8, 0x2E, 0xE0, + 0x84, 0x01, 0x08, 0x02, 0x06, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x60, 0x04, 0xD2, 0xCE, 0x60, 0xE3, + 0x20, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0xE0, 0x93, + 0x26, 0xE0, 0x10, 0x16, 0xA0, 0x23, 0x08, 0xE0, + 0x0D, 0x16, 0xA0, 0x23, 0x06, 0xE0, 0x02, 0x13, + 0x60, 0xE3, 0x1C, 0xE0, 0x60, 0xE3, 0x18, 0xE0, + 0xA0, 0x43, 0x06, 0xE0, 0x08, 0x02, 0x3C, 0x80, + 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, 0xD2, 0xCE, + 0xA0, 0x92, 0xA8, 0xE3, 0x03, 0x13, 0xA0, 0x92, + 0xA9, 0xE3, 0x1E, 0x16, 0xE0, 0x23, 0x14, 0xE0, + 0x08, 0x13, 0x20, 0x98, 0xA9, 0xE3, 0x65, 0x06, + 0x04, 0x13, 0x83, 0x07, 0x07, 0x00, 0x60, 0x04, + 0xCA, 0xCE, 0xA0, 0xD2, 0x0E, 0xE0, 0x20, 0xC8, + 0x20, 0xE0, 0x08, 0x07, 0xA0, 0x27, 0x04, 0xE0, + 0x0B, 0x16, 0x20, 0xC8, 0x1E, 0xE0, 0x08, 0x07, + 0xE0, 0x93, 0xA8, 0xE3, 0x05, 0x16, 0xA0, 0x23, + 0x12, 0xE0, 0x02, 0x13, 0x20, 0x06, 0x08, 0x07, + 0x60, 0x04, 0xD2, 0xCE, 0xE0, 0x23, 0x14, 0xE0, + 0x3E, 0x13, 0xB0, 0x03, 0x20, 0x98, 0x0E, 0xE0, + 0x6F, 0x06, 0x0F, 0x16, 0xCF, 0xD3, 0x37, 0x16, + 0xA0, 0xD2, 0xA8, 0xE3, 0x60, 0x04, 0xD2, 0xCE, + 0xA0, 0x92, 0x0C, 0xE0, 0x30, 0x16, 0xE0, 0x23, + 0x14, 0xE0, 0xF6, 0x13, 0x83, 0x07, 0x06, 0x00, + 0x07, 0x10, 0x83, 0x07, 0x05, 0x00, 0xE0, 0x93, + 0x0E, 0xE0, 0x02, 0x16, 0x83, 0x07, 0x07, 0x00, + 0x60, 0x04, 0xCA, 0xCE, 0x60, 0xE3, 0x12, 0xE0, + 0xE0, 0x23, 0x14, 0xE0, 0x11, 0x13, 0x20, 0x98, + 0x0C, 0xE0, 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, + 0xA9, 0xE3, 0x65, 0x06, 0x14, 0x10, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x80, 0x10, 0x13, 0x20, 0xC1, + 0x84, 0x01, 0x20, 0x21, 0x06, 0xE0, 0xD2, 0x16, + 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x07, 0x13, + 0x20, 0x48, 0x06, 0xE0, 0x84, 0x01, 0x08, 0x02, + 0x30, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, + 0xD2, 0xCE, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x20, + 0xFA, 0x16, 0x08, 0x02, 0x78, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x20, 0xC2, 0xA2, 0x09, 0x03, 0x13, + 0x20, 0x06, 0xA2, 0x09, 0x21, 0x13, 0x20, 0xC2, + 0xA4, 0x09, 0xED, 0x13, 0x20, 0x06, 0xA4, 0x09, + 0xEA, 0x16, 0xA0, 0x07, 0xA4, 0x09, 0x05, 0x00, + 0xCD, 0x01, 0x00, 0x04, 0xE4, 0x10, 0x60, 0x01, + 0x8E, 0x09, 0x80, 0x00, 0x3E, 0x13, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x10, 0x02, 0x16, 0xA0, 0x06, + 0xE6, 0xD5, 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x10, + 0xE0, 0x01, 0x8E, 0x09, 0x80, 0x00, 0x83, 0x07, + 0x00, 0xA8, 0xA0, 0x06, 0x2A, 0xD8, 0x16, 0x10, + 0x60, 0x01, 0x8E, 0x09, 0x00, 0x04, 0x21, 0x13, + 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x10, 0xA0, 0x07, + 0x08, 0x07, 0x05, 0x00, 0x83, 0x07, 0x08, 0xA8, + 0xA0, 0x23, 0x04, 0xE0, 0x05, 0x16, 0x20, 0xC8, + 0x20, 0xE0, 0x08, 0x07, 0x83, 0x07, 0x08, 0xE8, + 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0x01, 0x8E, 0x09, + 0x00, 0x20, 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x01, + 0xE0, 0x01, 0x82, 0x01, 0x00, 0x08, 0xA0, 0xD2, + 0x0E, 0xE0, 0x83, 0x07, 0x10, 0x80, 0x60, 0x04, + 0xC0, 0xCE, 0x08, 0x02, 0x78, 0x00, 0xA0, 0x06, + 0xDA, 0xD4, 0x83, 0x07, 0x00, 0x82, 0x60, 0x04, + 0xCA, 0xCE, 0x60, 0x04, 0xD2, 0xCE, 0x20, 0x06, + 0x90, 0x09, 0x07, 0x15, 0xA0, 0xD2, 0x10, 0xE0, + 0xCA, 0x06, 0xA0, 0xD2, 0x26, 0xE0, 0xCF, 0x04, + 0xF4, 0x10, 0x08, 0x02, 0x7E, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x20, 0xC2, 0x90, 0x09, 0x88, 0x02, + 0x96, 0x00, 0x0D, 0x1B, 0xEA, 0x16, 0x20, 0x48, + 0x08, 0xE0, 0x82, 0x01, 0xA0, 0x01, 0x8E, 0x09, + 0x00, 0x10, 0xA0, 0x06, 0xE6, 0xD5, 0x83, 0x07, + 0x00, 0x28, 0x60, 0x04, 0xC0, 0xCE, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x10, 0xDA, 0x16, 0x84, 0x07, + 0x04, 0x00, 0x85, 0x07, 0xF4, 0x03, 0xF5, 0x04, + 0xB5, 0x07, 0x30, 0x06, 0xA0, 0x06, 0xA2, 0xD8, + 0xA0, 0x07, 0xF8, 0x03, 0x34, 0xD4, 0x60, 0x04, + 0xC0, 0xDB, 0xA0, 0x07, 0x90, 0x09, 0xF4, 0x01, + 0x08, 0x02, 0x7E, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x08, 0x02, 0x36, 0x00, 0xA0, 0x06, 0xDA, 0xD4, + 0x20, 0xE8, 0x0C, 0xE0, 0x82, 0x01, 0xA0, 0x23, + 0x18, 0xE0, 0x06, 0x13, 0xA0, 0xE3, 0x18, 0xE0, + 0xE0, 0x2E, 0x00, 0x00, 0x41, 0xC0, 0xFA, 0x16, + 0xA0, 0x06, 0xE6, 0xD5, 0xB2, 0x10, 0x04, 0x02, + 0x64, 0x00, 0x04, 0x06, 0xFE, 0x16, 0x5B, 0x04, + 0xA0, 0xE3, 0x0A, 0xE0, 0x08, 0xC2, 0x02, 0x11, + 0xA0, 0x43, 0x0A, 0xE0, 0x20, 0x42, 0x04, 0xE0, + 0x28, 0x02, 0xFC, 0xE3, 0x58, 0xC0, 0x02, 0xC0, + 0x11, 0x88, 0xCE, 0xED, 0x03, 0x16, 0xD1, 0x2C, + 0x58, 0xC0, 0xD1, 0x04, 0x80, 0xC0, 0x0E, 0x01, + 0x00, 0x10, 0x0F, 0x13, 0x60, 0xCC, 0xCE, 0xED, + 0xC8, 0x05, 0x78, 0xCC, 0x03, 0x16, 0x41, 0x06, + 0x60, 0xCC, 0xD6, 0x06, 0x58, 0xC4, 0x02, 0x16, + 0x60, 0xC4, 0x00, 0x07, 0x21, 0x02, 0xFA, 0xFF, + 0x91, 0x2C, 0x5B, 0x04, 0x0B, 0xC3, 0xA0, 0x06, + 0xC2, 0xD5, 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, + 0x05, 0x16, 0x62, 0xC2, 0x02, 0x00, 0x60, 0x26, + 0xA8, 0xE4, 0x0D, 0x16, 0x42, 0xC2, 0xC9, 0x05, + 0x60, 0xCE, 0xF2, 0xED, 0x60, 0xC6, 0x7C, 0xEB, + 0xA0, 0x06, 0x10, 0xD6, 0x18, 0xCA, 0x0A, 0x00, + 0x20, 0x46, 0x26, 0xE0, 0x04, 0x16, 0xA0, 0xC0, + 0x6C, 0x01, 0x12, 0x2E, 0x1D, 0x10, 0x12, 0xC1, + 0x05, 0x13, 0x60, 0xC1, 0x6C, 0x01, 0x14, 0x2E, + 0x05, 0xC8, 0x6C, 0x01, 0xD2, 0x04, 0x48, 0x06, + 0x84, 0x07, 0x02, 0x00, 0x48, 0xC1, 0xA0, 0xC0, + 0x6C, 0x01, 0x02, 0xC0, 0xA0, 0x06, 0xA2, 0xD8, + 0x60, 0xC5, 0x02, 0xFC, 0x07, 0x02, 0xA2, 0x06, + 0x25, 0x02, 0xF4, 0xFF, 0x05, 0xC8, 0x02, 0xFC, + 0x20, 0xC2, 0x6C, 0x01, 0xA0, 0x06, 0xFC, 0xB4, + 0x5C, 0x04, 0x42, 0xC2, 0x29, 0x02, 0x08, 0x00, + 0x39, 0xC2, 0x48, 0x02, 0x00, 0xC0, 0x88, 0x02, + 0x00, 0xC0, 0x08, 0x16, 0x60, 0x8E, 0x2E, 0xE0, + 0x05, 0x16, 0x60, 0x86, 0x2E, 0xE0, 0x02, 0x16, + 0xC8, 0x04, 0x5B, 0x04, 0x08, 0x07, 0x5B, 0x04, + 0x20, 0x88, 0x8E, 0xE1, 0x6C, 0x01, 0x02, 0x16, + 0x60, 0x04, 0xBA, 0xCE, 0x5B, 0x04, 0x88, 0x07, + 0xAE, 0x01, 0x20, 0xE8, 0x0E, 0xE0, 0x80, 0x01, + 0x08, 0x06, 0xFE, 0x16, 0x20, 0x48, 0x0E, 0xE0, + 0x80, 0x01, 0x5B, 0x04, 0xC2, 0x04, 0xA0, 0x23, + 0x0C, 0xE0, 0x10, 0x16, 0x20, 0x2F, 0x30, 0x06, + 0x82, 0x07, 0xDF, 0xFF, 0x02, 0x2C, 0x82, 0x02, + 0xF4, 0x03, 0x06, 0x13, 0xE2, 0x04, 0x02, 0x00, + 0xA2, 0xC0, 0x06, 0x00, 0x12, 0x2E, 0xF4, 0x10, + 0xA0, 0x43, 0x0C, 0xE0, 0x5B, 0x04, 0x42, 0xC2, + 0x88, 0x07, 0x0E, 0x00, 0x09, 0xA2, 0x29, 0x02, + 0x08, 0x00, 0x78, 0xCE, 0x78, 0xCE, 0x78, 0xCE, + 0x60, 0xCE, 0x6C, 0x09, 0x60, 0xCE, 0x6E, 0x09, + 0x60, 0xCE, 0x70, 0x09, 0xA0, 0x23, 0x1A, 0xE0, + 0x0F, 0x16, 0x58, 0xC2, 0x49, 0x02, 0x80, 0x1F, + 0x60, 0x2A, 0x14, 0xE0, 0xA0, 0xE8, 0x04, 0xE0, + 0x0E, 0x00, 0x09, 0xC6, 0x49, 0x02, 0x00, 0x1F, + 0xC9, 0x06, 0x09, 0xA2, 0x89, 0xA8, 0x04, 0x00, + 0x28, 0x02, 0x02, 0x00, 0x58, 0xC2, 0x49, 0x0A, + 0x49, 0x02, 0x00, 0xF0, 0x09, 0xD6, 0xE2, 0x04, + 0x06, 0x00, 0x5B, 0x04, 0x00, 0x07, 0x82, 0xC0, + 0x53, 0x13, 0xA0, 0xC0, 0x6C, 0x01, 0xA0, 0xC1, + 0x06, 0xFC, 0x46, 0x02, 0x0F, 0x00, 0x86, 0x02, + 0x01, 0x00, 0x3D, 0x12, 0x06, 0x88, 0xF2, 0x06, + 0x12, 0x16, 0x01, 0x02, 0x0E, 0xFC, 0x31, 0x88, + 0xF4, 0x06, 0x0D, 0x16, 0x31, 0x88, 0xF6, 0x06, + 0x0A, 0x16, 0x31, 0x88, 0xF8, 0x06, 0x07, 0x16, + 0x86, 0x02, 0x02, 0x00, 0x2C, 0x16, 0x20, 0x88, + 0x0A, 0x07, 0xFA, 0x06, 0x28, 0x13, 0x20, 0xC1, + 0x6A, 0x09, 0x44, 0x01, 0x00, 0x08, 0x06, 0x13, + 0x86, 0x02, 0x02, 0x00, 0x20, 0x16, 0x44, 0x01, + 0x80, 0x00, 0x1D, 0x16, 0x00, 0x07, 0xE0, 0x23, + 0x14, 0xE0, 0x19, 0x16, 0x82, 0x02, 0x43, 0x00, + 0x16, 0x13, 0x00, 0x02, 0x02, 0xFC, 0x40, 0xC0, + 0xB0, 0x01, 0x20, 0x00, 0x60, 0x01, 0x6A, 0x09, + 0x01, 0x00, 0x07, 0x16, 0x60, 0xA0, 0x2C, 0x09, + 0x60, 0xCC, 0xEE, 0x05, 0x50, 0xC4, 0x20, 0xC4, + 0x2C, 0x09, 0x80, 0x07, 0x36, 0x07, 0x81, 0x07, + 0x40, 0x00, 0x40, 0x2C, 0xC0, 0x04, 0x84, 0x07, + 0xF2, 0x06, 0x06, 0xCD, 0x01, 0x02, 0x0E, 0xFC, + 0x31, 0xCD, 0x31, 0xCD, 0x31, 0xCD, 0x20, 0xC5, + 0x0A, 0x07, 0x00, 0xC0, 0x01, 0x13, 0x12, 0x2E, + 0xE0, 0x04, 0x6C, 0x01, 0x5B, 0x04, 0x60, 0x01, + 0x8A, 0x09, 0x00, 0x80, 0x12, 0x13, 0x0B, 0xC8, + 0x22, 0x09, 0xA0, 0x06, 0x3E, 0xD7, 0x08, 0x02, + 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x08, 0x02, + 0x30, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xE0, 0xC2, + 0x22, 0x09, 0x5B, 0x04, 0x20, 0x48, 0xAC, 0xE4, + 0x80, 0x01, 0x20, 0x48, 0x7E, 0xEB, 0x82, 0x01, + 0x20, 0x48, 0x22, 0xE0, 0xAE, 0x01, 0x20, 0x48, + 0x22, 0xE0, 0x78, 0x09, 0x60, 0x43, 0x18, 0xE0, + 0xA0, 0x43, 0x08, 0xE0, 0x60, 0x01, 0x8A, 0x09, + 0x00, 0x80, 0xEB, 0x13, 0x0B, 0xC3, 0x08, 0x02, + 0x42, 0x00, 0xA0, 0x06, 0xDA, 0xD4, 0x5C, 0x04, + 0x0B, 0xC3, 0x20, 0xE8, 0x0E, 0xE0, 0x82, 0x01, + 0x20, 0xE8, 0x22, 0xE0, 0xAE, 0x01, 0x20, 0xE8, + 0x22, 0xE0, 0x78, 0x09, 0xA0, 0xE3, 0x08, 0xE0, + 0x60, 0xE3, 0x18, 0xE0, 0xA0, 0x43, 0x06, 0xE0, + 0x08, 0x02, 0x3C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x08, 0x02, 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x5C, 0x04, 0x0B, 0xC3, 0x83, 0x07, 0x00, 0x68, + 0xA0, 0x06, 0x2A, 0xD8, 0x83, 0x07, 0x10, 0x80, + 0xA0, 0x06, 0x2A, 0xD8, 0x5C, 0x04, 0x0B, 0xC3, + 0xA0, 0x06, 0x14, 0xD8, 0x02, 0xA2, 0x68, 0xC2, + 0x14, 0x00, 0x29, 0x02, 0xFC, 0xFF, 0x24, 0x13, + 0x28, 0x02, 0x18, 0x00, 0x87, 0x07, 0x0E, 0x00, + 0x81, 0x07, 0x0E, 0x07, 0xF1, 0x04, 0x47, 0x06, + 0xFD, 0x15, 0x58, 0xC0, 0xB0, 0x03, 0x01, 0x78, + 0x63, 0x06, 0x41, 0x02, 0x3F, 0x00, 0x0E, 0x13, + 0x81, 0x02, 0x1F, 0x00, 0x0B, 0x1B, 0x41, 0xA0, + 0x61, 0xC0, 0x86, 0xE4, 0xF8, 0xC1, 0xC7, 0x06, + 0xC7, 0x71, 0x47, 0x06, 0x78, 0xCC, 0x47, 0x06, + 0xFD, 0x15, 0x04, 0x10, 0x58, 0xC0, 0xC1, 0x06, + 0x41, 0x70, 0x01, 0xA2, 0x49, 0xC2, 0xE5, 0x15, + 0x5C, 0x04, 0xA0, 0x23, 0x1A, 0xE0, 0x02, 0x13, + 0xC8, 0x04, 0x5B, 0x04, 0x22, 0xC2, 0x14, 0x00, + 0x48, 0x02, 0x00, 0x1F, 0xC8, 0x06, 0x5B, 0x04, + 0x83, 0x02, 0x0F, 0x00, 0x17, 0x1B, 0xA0, 0xC1, + 0xD4, 0x06, 0x35, 0x13, 0x26, 0x02, 0x04, 0x00, + 0xA0, 0xCD, 0xCE, 0xED, 0x83, 0xC5, 0x04, 0x13, + 0x4A, 0xC2, 0x39, 0x0A, 0xC9, 0xE0, 0x83, 0xC5, + 0x86, 0x07, 0x36, 0x07, 0x87, 0x07, 0x10, 0x00, + 0x20, 0xC2, 0xD4, 0x06, 0xE0, 0x04, 0xD4, 0x06, + 0x46, 0x2C, 0x5B, 0x04, 0x60, 0xC0, 0xFE, 0x06, + 0x20, 0xC2, 0x6A, 0x09, 0x48, 0x02, 0x00, 0x60, + 0x20, 0x22, 0x06, 0xE0, 0x04, 0x16, 0x20, 0xE2, + 0x0A, 0xE0, 0x20, 0xE2, 0x18, 0xE0, 0x13, 0x0A, + 0x04, 0x18, 0x41, 0x05, 0x03, 0x48, 0xFE, 0x06, + 0x06, 0x10, 0x83, 0x02, 0x02, 0x00, 0x01, 0x16, + 0x13, 0x09, 0x03, 0xE8, 0xFE, 0x06, 0xC8, 0x40, + 0xC1, 0x40, 0x05, 0x13, 0x88, 0x07, 0x36, 0x07, + 0x89, 0x07, 0x00, 0x40, 0x48, 0x2C, 0x5B, 0x04, + 0xC9, 0x04, 0x24, 0xC1, 0x94, 0xEB, 0x84, 0xC1, + 0x86, 0x71, 0x86, 0xA1, 0x26, 0x02, 0x56, 0xEC, + 0xC4, 0x06, 0x04, 0x71, 0x24, 0x02, 0xC2, 0xEB, + 0x14, 0xD2, 0xC8, 0x09, 0x08, 0xA2, 0xB0, 0x03, + 0x34, 0xD8, 0x5F, 0x06, 0x47, 0x02, 0x0F, 0x00, + 0xC7, 0xA1, 0x28, 0xC2, 0x82, 0xEB, 0x58, 0x04, + 0x76, 0xCD, 0x47, 0x06, 0xFD, 0x16, 0x32, 0x10, + 0x36, 0xC2, 0x26, 0x10, 0x17, 0x09, 0x47, 0xA1, + 0x2D, 0x10, 0x17, 0x09, 0x47, 0x61, 0x2A, 0x10, + 0xA0, 0x43, 0x16, 0xE0, 0x5B, 0x04, 0xA0, 0x43, + 0x16, 0xE0, 0x49, 0xC2, 0x03, 0x16, 0x44, 0xC2, + 0x06, 0xC8, 0x22, 0x09, 0x27, 0xC1, 0x8E, 0xED, + 0x84, 0xC1, 0x86, 0x71, 0x26, 0x02, 0xC4, 0xED, + 0xC4, 0x06, 0x04, 0x71, 0x24, 0x02, 0xAA, 0xED, + 0xD3, 0x10, 0x09, 0xC1, 0xA0, 0xC1, 0x22, 0x09, + 0xC9, 0x04, 0x10, 0x10, 0x36, 0xC2, 0x78, 0xD5, + 0x60, 0x41, 0x22, 0xE0, 0xC5, 0x05, 0x0A, 0x10, + 0x78, 0xCD, 0x47, 0x06, 0xFD, 0x15, 0x06, 0x10, + 0xA0, 0x23, 0x16, 0xE0, 0xCD, 0x16, 0x49, 0xC2, + 0xEC, 0x16, 0xD6, 0x10, 0xA0, 0xE3, 0x16, 0xE0, + 0xBB, 0x10, 0x08, 0x02, 0x5A, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x44, 0x10, 0xA0, 0x92, 0x0C, 0xE0, + 0x15, 0x16, 0x44, 0x02, 0x00, 0x5E, 0x14, 0x16, + 0x20, 0x48, 0xAC, 0xE4, 0x80, 0x01, 0xA0, 0x06, + 0x72, 0xD7, 0x20, 0xC8, 0x9E, 0x01, 0x9E, 0x01, + 0xE0, 0x2E, 0x01, 0x00, 0xA0, 0x43, 0x18, 0xE0, + 0xA0, 0xD2, 0x26, 0xE0, 0x83, 0x07, 0x10, 0x00, + 0xA0, 0x06, 0x2A, 0xD8, 0x60, 0x04, 0xD2, 0xCE, + 0x84, 0x07, 0x08, 0x00, 0x60, 0x04, 0x94, 0xCE, + 0x85, 0x07, 0x03, 0x02, 0x05, 0xC8, 0xCE, 0x06, + 0xA0, 0x43, 0x12, 0xE0, 0xE0, 0x04, 0xFA, 0x06, + 0xA0, 0x06, 0xA4, 0xD7, 0x08, 0x02, 0x48, 0x80, + 0xA0, 0x06, 0xDA, 0xD4, 0x17, 0x10, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x80, 0x02, 0x16, 0x60, 0x04, + 0x9C, 0xD4, 0xA0, 0x27, 0x2C, 0xE0, 0x04, 0x16, + 0x08, 0x02, 0x54, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x83, 0x07, 0x00, 0xA8, 0x20, 0x88, 0x08, 0x07, + 0x20, 0xE0, 0x02, 0x16, 0x83, 0x07, 0x00, 0xE8, + 0xA0, 0x06, 0x2A, 0xD8, 0x08, 0x02, 0x36, 0x00, + 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xE8, 0x0C, 0xE0, + 0x82, 0x01, 0xA0, 0x23, 0x18, 0xE0, 0x06, 0x13, + 0xA0, 0xE3, 0x18, 0xE0, 0xE0, 0x2E, 0x00, 0x00, + 0x41, 0xC0, 0xFA, 0x16, 0xA0, 0x06, 0xE6, 0xD5, + 0x82, 0xC0, 0x02, 0x13, 0x4F, 0x02, 0x80, 0xFF, + 0xC4, 0x04, 0x0F, 0xD1, 0xC4, 0x06, 0x60, 0x04, + 0x94, 0xCE, 0xA0, 0x06, 0x32, 0xDA, 0x08, 0x02, + 0x36, 0x80, 0xA0, 0x07, 0xD6, 0x06, 0x20, 0xDA, + 0xA0, 0x06, 0xDA, 0xD4, 0x10, 0x10, 0xA0, 0x06, + 0x32, 0xDA, 0x20, 0xD1, 0xCE, 0x06, 0xE6, 0x13, + 0x20, 0x78, 0x12, 0xE0, 0xCE, 0x06, 0xE2, 0x10, + 0x20, 0xC1, 0x16, 0x04, 0x14, 0x0A, 0xC4, 0x06, + 0x0A, 0x91, 0x01, 0x16, 0x5B, 0x04, 0x60, 0x04, + 0xD2, 0xCE, 0xB0, 0x03, 0x20, 0x98, 0xAB, 0xE3, + 0x65, 0x06, 0x02, 0x13, 0x60, 0x04, 0xBA, 0xCE, + 0x60, 0xC1, 0x94, 0x09, 0x02, 0x13, 0x60, 0x04, + 0x22, 0xDE, 0x60, 0xD1, 0x0E, 0xE0, 0x3D, 0x10, + 0x85, 0x07, 0xBE, 0xEA, 0x35, 0xC8, 0x8A, 0x09, + 0x15, 0xC8, 0x8C, 0x09, 0x0B, 0x10, 0xE0, 0x04, + 0xA0, 0x09, 0x20, 0xD8, 0x2E, 0x09, 0xA6, 0x09, + 0x20, 0xC8, 0xA8, 0x09, 0x8A, 0x09, 0x20, 0xC8, + 0xAA, 0x09, 0x8C, 0x09, 0xE0, 0x04, 0x8E, 0x09, + 0xCA, 0x04, 0xCD, 0x04, 0xCE, 0x04, 0xCF, 0x04, + 0xE0, 0x04, 0xA8, 0x06, 0xE0, 0x04, 0xBA, 0x06, + 0x84, 0x07, 0xA0, 0x01, 0x85, 0x07, 0x10, 0x00, + 0xF4, 0x04, 0x45, 0x06, 0xFD, 0x15, 0x84, 0x07, + 0xD8, 0x06, 0x85, 0x07, 0x34, 0x07, 0x44, 0x61, + 0xF4, 0x04, 0x45, 0x06, 0xFD, 0x15, 0x84, 0x07, + 0xC8, 0x00, 0x04, 0xC8, 0x00, 0x07, 0x84, 0x07, + 0xFF, 0x7F, 0x04, 0xC8, 0xF0, 0x06, 0x84, 0x07, + 0x06, 0x00, 0x04, 0xC8, 0xEE, 0x06, 0x85, 0x07, + 0x02, 0x0C, 0x20, 0xC1, 0x8A, 0x09, 0x01, 0x11, + 0xC5, 0x06, 0xB0, 0x03, 0x05, 0xD8, 0x65, 0x06, + 0x60, 0x04, 0xD2, 0xCE, 0xB0, 0x03, 0x20, 0x98, + 0xAA, 0xE3, 0x65, 0x06, 0x79, 0x16, 0x60, 0xD1, + 0x10, 0xE0, 0xF3, 0x10, 0x60, 0xD1, 0xAB, 0xE3, + 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x02, 0xE0, 0x01, + 0x80, 0x01, 0x00, 0x20, 0xC8, 0x04, 0x20, 0xD2, + 0x80, 0x01, 0x08, 0xC8, 0x9C, 0x09, 0x08, 0xD8, + 0x2E, 0x09, 0xE3, 0x10, 0x20, 0xF8, 0x19, 0xEE, + 0x82, 0x01, 0x20, 0xC8, 0x10, 0xE0, 0xC6, 0x06, + 0x20, 0xC8, 0x20, 0xE0, 0xC8, 0x06, 0x20, 0xC8, + 0xC2, 0xEA, 0x90, 0x09, 0xE0, 0x2E, 0x00, 0x00, + 0xA0, 0x06, 0xE6, 0xD5, 0x20, 0xC8, 0x6C, 0x09, + 0xA0, 0x01, 0x20, 0xC8, 0x6E, 0x09, 0xA2, 0x01, + 0x20, 0xC8, 0x70, 0x09, 0xA4, 0x01, 0x20, 0xC8, + 0x6E, 0x09, 0xB0, 0x01, 0x20, 0xC8, 0x70, 0x09, + 0xB2, 0x01, 0x20, 0xC8, 0x70, 0x09, 0xCC, 0x06, + 0x20, 0xF8, 0x18, 0xEE, 0x80, 0x01, 0xB0, 0x03, + 0xA0, 0x01, 0x8E, 0x09, 0x00, 0x02, 0x20, 0x98, + 0xAA, 0xE3, 0x65, 0x06, 0x3A, 0x13, 0xE0, 0x01, + 0x8E, 0x09, 0x00, 0x02, 0x88, 0x07, 0x56, 0xDF, + 0xE0, 0xC2, 0x8A, 0x09, 0x05, 0x11, 0xA0, 0x01, + 0x8E, 0x09, 0x00, 0x02, 0x88, 0x07, 0x9A, 0xDF, + 0x98, 0x06, 0x08, 0x02, 0x12, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x84, 0x07, 0x0A, 0x00, 0x85, 0x07, + 0xF4, 0x03, 0x20, 0x88, 0xC6, 0x06, 0x20, 0xE0, + 0x08, 0x1B, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, + 0xA5, 0x13, 0x84, 0x07, 0x1C, 0x00, 0x85, 0x07, + 0xF8, 0x03, 0xA0, 0x06, 0xA2, 0xD8, 0x85, 0x07, + 0x42, 0xDC, 0x05, 0xC8, 0xF8, 0x03, 0x20, 0xC8, + 0xA0, 0x09, 0xA0, 0x09, 0x6C, 0x16, 0x20, 0xE8, + 0x9C, 0x09, 0xFE, 0x03, 0x20, 0xE8, 0x9E, 0x09, + 0x06, 0x04, 0xA0, 0x23, 0x0C, 0xE0, 0x32, 0x13, + 0xA0, 0xE3, 0x0C, 0xE0, 0xA0, 0x2E, 0xF4, 0x03, + 0x2D, 0x10, 0xA0, 0x06, 0x56, 0xDF, 0x60, 0x01, + 0x8E, 0x09, 0x00, 0x40, 0x08, 0x13, 0x08, 0x02, + 0x6C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x22, 0x10, + 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x40, 0x08, 0x02, + 0x60, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x84, 0x07, + 0x2A, 0x00, 0x85, 0x07, 0xF4, 0x03, 0xA0, 0x06, + 0xA2, 0xD8, 0xD5, 0x10, 0xB0, 0x03, 0x20, 0x98, + 0xAA, 0xE3, 0x65, 0x06, 0x0F, 0x16, 0x20, 0x06, + 0x90, 0x09, 0x9A, 0x16, 0x60, 0x01, 0x8A, 0x09, + 0x00, 0x40, 0x39, 0x13, 0xE0, 0x04, 0x8A, 0x09, + 0xE0, 0x04, 0x8C, 0x09, 0xE0, 0x04, 0x8E, 0x09, + 0x60, 0x04, 0x62, 0xDA, 0x60, 0x04, 0xB0, 0xCE, + 0xB0, 0x03, 0x20, 0x98, 0x10, 0xE0, 0x65, 0x06, + 0xF9, 0x16, 0x44, 0x02, 0x00, 0x5E, 0x04, 0x16, + 0x20, 0x06, 0xC6, 0x06, 0x9A, 0x16, 0x0A, 0x10, + 0xB0, 0x03, 0x20, 0x98, 0x10, 0xE0, 0x65, 0x06, + 0xED, 0x16, 0x20, 0x06, 0xC8, 0x06, 0x02, 0x13, + 0x60, 0x04, 0x5A, 0xDB, 0x60, 0x01, 0x8E, 0x09, + 0x00, 0x01, 0x02, 0x16, 0xCE, 0x01, 0x03, 0x00, + 0x0E, 0x01, 0x03, 0x00, 0x03, 0x13, 0x83, 0x07, + 0x00, 0x82, 0x07, 0x10, 0x83, 0x07, 0x01, 0x00, + 0xE0, 0x04, 0x8E, 0x09, 0x20, 0xE8, 0x0C, 0xE0, + 0x82, 0x01, 0x60, 0x04, 0xCA, 0xCE, 0x60, 0x01, + 0x8A, 0x09, 0x00, 0x40, 0xC7, 0x16, 0x83, 0x07, + 0x0D, 0x00, 0xF2, 0x10, 0xB0, 0x03, 0x20, 0x98, + 0xAA, 0xE3, 0x65, 0x06, 0xC7, 0x16, 0x20, 0x88, + 0x98, 0x09, 0x20, 0xE0, 0xF0, 0x16, 0x22, 0xC8, + 0x0E, 0x00, 0xDC, 0x06, 0x22, 0xC8, 0x10, 0x00, + 0xDE, 0x06, 0x22, 0xC8, 0x12, 0x00, 0xE0, 0x06, + 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x80, 0x08, 0x02, + 0x66, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xB2, 0x10, + 0xA0, 0x07, 0x9A, 0x09, 0x5A, 0x00, 0xA0, 0x07, + 0xA2, 0x09, 0x19, 0x00, 0xA0, 0x07, 0xA4, 0x09, + 0x05, 0x00, 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x20, + 0xE0, 0x01, 0x8E, 0x09, 0x00, 0x04, 0x08, 0x02, + 0x78, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xB0, 0x03, + 0x20, 0x98, 0xAB, 0xE3, 0x65, 0x06, 0x9A, 0x16, + 0x08, 0x02, 0x72, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x20, 0xE8, 0x0C, 0xE0, 0x82, 0x01, 0xA0, 0x06, + 0xD0, 0xD5, 0x20, 0x06, 0x9A, 0x09, 0xBF, 0x13, + 0x84, 0x07, 0x2C, 0x00, 0x85, 0x07, 0xF4, 0x03, + 0xA0, 0x06, 0xA2, 0xD8, 0x60, 0x04, 0xC0, 0xDB, + 0x20, 0x48, 0x0C, 0xE0, 0x82, 0x01, 0x82, 0x10, + 0x0E, 0x01, 0x03, 0x00, 0x0A, 0x13, 0x08, 0x02, + 0x0C, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0xE0, 0xE3, + 0x14, 0xE0, 0x20, 0xC8, 0xAE, 0xE4, 0x86, 0x01, + 0x26, 0x10, 0x20, 0x48, 0x0C, 0xE0, 0x82, 0x01, + 0xE0, 0x2E, 0x01, 0x00, 0x60, 0xC1, 0x1E, 0x09, + 0x35, 0x0A, 0x05, 0xE8, 0x82, 0x01, 0x20, 0xC1, + 0x6A, 0x09, 0x04, 0x01, 0x06, 0x00, 0x06, 0x13, + 0x20, 0xD8, 0xD0, 0xE1, 0x2F, 0x09, 0x20, 0xD8, + 0xD0, 0xE1, 0x83, 0x01, 0x20, 0x21, 0x22, 0xE0, + 0x03, 0x16, 0x20, 0xE8, 0x22, 0xE0, 0x80, 0x01, + 0x20, 0x21, 0x04, 0xE0, 0x04, 0x16, 0xA0, 0xE3, + 0x14, 0xE0, 0x60, 0x04, 0x0A, 0xD3, 0x08, 0x02, + 0x00, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xE8, + 0x08, 0xE0, 0x82, 0x01, 0xE0, 0xC2, 0x8A, 0x09, + 0x02, 0x11, 0x60, 0x04, 0xB0, 0xCE, 0xA0, 0x01, + 0x8E, 0x09, 0x00, 0x04, 0x6B, 0x10, 0x20, 0xC8, + 0xAE, 0xE4, 0x86, 0x01, 0x08, 0x02, 0x00, 0x80, + 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xC2, 0x1E, 0x09, + 0x08, 0xA2, 0x08, 0x05, 0x28, 0xC8, 0x22, 0xE0, + 0xCA, 0x06, 0x20, 0xC8, 0x20, 0xE0, 0xC6, 0x06, + 0x20, 0xC8, 0x20, 0xE0, 0xC8, 0x06, 0x60, 0xE3, + 0x16, 0xE0, 0x60, 0x04, 0xD2, 0xCE, 0x44, 0xC1, + 0x44, 0x02, 0x00, 0x5E, 0xF8, 0x16, 0x60, 0x25, + 0xA8, 0xE4, 0x0F, 0x16, 0x20, 0x06, 0xC6, 0x06, + 0xF2, 0x16, 0x20, 0x06, 0xCA, 0x06, 0x03, 0x13, + 0xA0, 0x05, 0xCC, 0x06, 0xE6, 0x10, 0xB0, 0x03, + 0x20, 0xD8, 0x0C, 0xE0, 0x65, 0x06, 0x60, 0x04, + 0xD2, 0xCE, 0x20, 0x06, 0xC8, 0x06, 0xE3, 0x16, + 0x20, 0x88, 0x70, 0x09, 0xCC, 0x06, 0x03, 0x16, + 0x83, 0x07, 0x08, 0x00, 0x02, 0x10, 0x83, 0x07, + 0x0C, 0x00, 0x60, 0x04, 0x8A, 0xDC, 0x60, 0x04, + 0xD2, 0xCE, 0xA0, 0x23, 0x08, 0xE0, 0x03, 0x13, + 0x60, 0x23, 0x12, 0xE0, 0x06, 0x16, 0xB0, 0x03, + 0x20, 0xD8, 0xA9, 0xE3, 0x65, 0x06, 0x60, 0x04, + 0xD2, 0xCE, 0x08, 0x02, 0x00, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x60, 0x04, 0xB0, 0xCE, 0x08, 0x02, + 0x00, 0x80, 0xA0, 0x06, 0xDA, 0xD4, 0x20, 0xC8, + 0x1E, 0xE0, 0xC6, 0x06, 0x20, 0xC8, 0x1E, 0xE0, + 0xC8, 0x06, 0x60, 0xE3, 0x10, 0xE0, 0x60, 0x04, + 0xD2, 0xCE, 0xE0, 0x23, 0x14, 0xE0, 0x30, 0x13, + 0x44, 0xC1, 0x44, 0x02, 0x00, 0x1E, 0xF5, 0x16, + 0x60, 0x25, 0xA8, 0xE4, 0x1D, 0x16, 0x20, 0x06, + 0xC8, 0x06, 0xEF, 0x16, 0x60, 0x01, 0x8E, 0x09, + 0x00, 0x80, 0x13, 0x16, 0x60, 0x01, 0x8E, 0x09, + 0x00, 0x01, 0x0C, 0x16, 0xA0, 0x01, 0x8E, 0x09, + 0x00, 0x01, 0xA0, 0x01, 0x8E, 0x09, 0x80, 0x00, + 0xA0, 0x43, 0x04, 0xE0, 0x83, 0x07, 0x18, 0x68, + 0xA0, 0x06, 0x2A, 0xD8, 0x20, 0xC8, 0xAE, 0xE4, + 0x86, 0x01, 0xC2, 0x04, 0x60, 0x04, 0x2C, 0xE4, + 0x08, 0x02, 0x1E, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0x07, 0x10, 0x20, 0x06, 0xC6, 0x06, 0xCD, 0x16, + 0x83, 0x07, 0x09, 0x00, 0xA0, 0x06, 0x8A, 0xDC, + 0x60, 0x04, 0xB0, 0xCE, 0xCE, 0x04, 0xE0, 0x04, + 0x2A, 0x09, 0xE0, 0xD3, 0xAA, 0xE3, 0x8F, 0xC2, + 0x20, 0xC8, 0xB0, 0xE4, 0x86, 0x01, 0x20, 0x48, + 0x08, 0xE0, 0x82, 0x01, 0x86, 0x07, 0x05, 0x00, + 0x84, 0x07, 0x72, 0x06, 0x54, 0xC1, 0x01, 0x13, + 0xD4, 0x2C, 0x24, 0x02, 0x0A, 0x00, 0x06, 0x06, + 0xF9, 0x16, 0x08, 0x02, 0x2A, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x20, 0x2C, 0x1A, 0xE0, 0x60, 0x04, + 0x50, 0xCD, 0xA0, 0x06, 0x3E, 0xD7, 0xCD, 0x04, + 0xA0, 0x23, 0x1C, 0xE0, 0x0D, 0x13, 0x0E, 0x01, + 0x03, 0x00, 0x0A, 0x13, 0xA0, 0xE3, 0x1C, 0xE0, + 0xB0, 0x03, 0x20, 0xD8, 0x10, 0xE0, 0x65, 0x06, + 0xA0, 0xD2, 0x26, 0xE0, 0xCF, 0x04, 0x08, 0x10, + 0x20, 0x2D, 0x01, 0x00, 0xE0, 0xC0, 0x2A, 0x09, + 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0xD2, 0xAB, 0xE3, + 0x60, 0x04, 0xD2, 0xCE, 0xA0, 0x01, 0x80, 0x01, + 0x00, 0x01, 0xE0, 0x01, 0x80, 0x01, 0x00, 0xAC, + 0xA0, 0x01, 0x82, 0x01, 0x00, 0x03, 0xE0, 0x01, + 0x82, 0x01, 0x00, 0x08, 0x88, 0x07, 0xAE, 0x01, + 0x08, 0x06, 0xFE, 0x16, 0x60, 0x01, 0x8E, 0x09, + 0x00, 0x02, 0x03, 0x16, 0xA0, 0x01, 0x80, 0x01, + 0x00, 0x20, 0xC8, 0x04, 0x20, 0xD2, 0x80, 0x01, + 0x08, 0xC8, 0x9C, 0x09, 0x08, 0xD8, 0x2E, 0x09, + 0xA0, 0x07, 0x9E, 0x09, 0x00, 0x10, 0x5B, 0x04, + 0x20, 0xD8, 0xA6, 0x09, 0x2E, 0x09, 0xE0, 0x01, + 0x80, 0x01, 0x00, 0x04, 0xE0, 0x01, 0x82, 0x01, + 0x00, 0x08, 0xA0, 0x01, 0x82, 0x01, 0x00, 0x03, + 0x20, 0xC2, 0x30, 0x09, 0x03, 0x13, 0xE0, 0x01, + 0x82, 0x01, 0x00, 0x03, 0xA0, 0x01, 0x80, 0x01, + 0x00, 0xA1, 0x20, 0xF8, 0x2E, 0x09, 0x80, 0x01, + 0x88, 0x07, 0xAE, 0x01, 0x08, 0x06, 0xFE, 0x16, + 0xA0, 0x01, 0x80, 0x01, 0x00, 0x0C, 0xE0, 0x04, + 0x9E, 0x01, 0xE0, 0x04, 0x9C, 0x09, 0xE0, 0x04, + 0x9E, 0x09, 0x5B, 0x04, 0x20, 0x01, 0xA8, 0x09, + 0x00, 0x80, 0x11, 0x13, 0xE0, 0x93, 0x26, 0xE0, + 0x0E, 0x16, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, + 0x0A, 0x13, 0x08, 0x02, 0x84, 0x80, 0x00, 0x00, + 0x00, 0xE0, 0xDC, 0x0F, 0xA0, 0x06, 0xDA, 0xD4, + 0x20, 0x48, 0x08, 0xE0, 0x82, 0x01, 0x02, 0x10, + 0x60, 0x04, 0x70, 0xDA, 0x60, 0x04, 0xBA, 0xCE, + 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, 0x19, 0x13, + 0x83, 0x07, 0x80, 0x80, 0xE0, 0x23, 0x14, 0xE0, + 0x02, 0x13, 0x83, 0x07, 0x0A, 0x00, 0x60, 0x04, + 0xC6, 0xCE, 0x20, 0xC1, 0x06, 0x06, 0x0D, 0x13, + 0xA0, 0x06, 0x9C, 0xD5, 0x08, 0xC2, 0x09, 0x13, + 0x83, 0x07, 0x0B, 0x00, 0xE0, 0x23, 0x14, 0xE0, + 0x02, 0x16, 0x83, 0x07, 0x01, 0x80, 0x60, 0x04, + 0xC6, 0xCE, 0x83, 0x07, 0x0A, 0x80, 0x60, 0x04, + 0xB4, 0xCE, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, + 0x06, 0x16, 0xA0, 0x06, 0xA8, 0xE5, 0x47, 0x10, + 0xD0, 0x03, 0x60, 0x04, 0xB0, 0xD3, 0xE0, 0x93, + 0x0E, 0xE0, 0x5E, 0x13, 0xE0, 0x93, 0x10, 0xE0, + 0x17, 0x13, 0xE0, 0x23, 0x14, 0xE0, 0x04, 0x13, + 0x83, 0x07, 0x07, 0x00, 0x60, 0x04, 0xC6, 0xCE, + 0x83, 0x07, 0x00, 0xA0, 0xA0, 0x06, 0x2A, 0xD8, + 0x83, 0x07, 0x00, 0x48, 0xA0, 0x06, 0x2A, 0xD8, + 0xA0, 0xD2, 0x10, 0xE0, 0x20, 0xC8, 0x1C, 0xE0, + 0xCA, 0x06, 0x20, 0xC8, 0x20, 0xE0, 0xCC, 0x06, + 0xA0, 0x06, 0x3E, 0xD7, 0x08, 0x02, 0x4E, 0x80, + 0xA0, 0x06, 0xDA, 0xD4, 0xA0, 0x23, 0x1C, 0xE0, + 0x20, 0x13, 0x20, 0x88, 0x6C, 0x09, 0x0E, 0x07, + 0x1C, 0x16, 0x20, 0x88, 0x6E, 0x09, 0x10, 0x07, + 0x18, 0x16, 0x20, 0x88, 0x70, 0x09, 0x12, 0x07, + 0x14, 0x16, 0x20, 0x88, 0x0A, 0x07, 0x22, 0xE0, + 0x10, 0x13, 0x20, 0x06, 0xCA, 0x06, 0x38, 0x16, + 0xA0, 0xE3, 0x20, 0xE0, 0x06, 0x10, 0xE0, 0x23, + 0x14, 0xE0, 0xCA, 0x16, 0xA0, 0xE3, 0x22, 0xE0, + 0xC2, 0x04, 0xA0, 0xD2, 0xAA, 0xE3, 0x60, 0x04, + 0xBA, 0xCE, 0x20, 0xC8, 0x1C, 0xE0, 0xCA, 0x06, + 0xA0, 0x88, 0xDC, 0x06, 0x0E, 0x00, 0x10, 0x16, + 0xA0, 0x88, 0xDE, 0x06, 0x10, 0x00, 0x0C, 0x16, + 0xA0, 0x88, 0xE0, 0x06, 0x12, 0x00, 0x08, 0x16, + 0x20, 0x06, 0xCC, 0x06, 0x19, 0x16, 0x20, 0xE8, + 0x0E, 0xE0, 0x82, 0x01, 0xA0, 0xE3, 0x1E, 0xE0, + 0x20, 0xC8, 0x20, 0xE0, 0xCC, 0x06, 0x10, 0x10, + 0xA0, 0x23, 0x10, 0xE0, 0x08, 0x16, 0x64, 0xC1, + 0x06, 0x00, 0x60, 0x21, 0x0C, 0xE0, 0x08, 0x13, + 0xA0, 0xD2, 0xA8, 0xE3, 0x05, 0x10, 0x20, 0x88, + 0x0A, 0x07, 0x08, 0x07, 0x96, 0x12, 0x00, 0x10, + 0x60, 0x04, 0xBA, 0xCE, 0x60, 0x01, 0x8E, 0x09, + 0x00, 0x80, 0x06, 0x16, 0x83, 0x07, 0x00, 0x82, + 0xA0, 0x06, 0x2A, 0xD8, 0x60, 0x04, 0xCA, 0xCE, + 0xE0, 0x93, 0x0E, 0xE0, 0x50, 0x13, 0xE0, 0x93, + 0xA9, 0xE3, 0x4D, 0x13, 0xE0, 0x93, 0xA8, 0xE3, + 0x1C, 0x13, 0xA0, 0x06, 0xA4, 0xD7, 0xA0, 0x23, + 0x10, 0xE0, 0x45, 0x13, 0xA0, 0x23, 0x08, 0xE0, + 0x06, 0x16, 0x60, 0xE3, 0x1E, 0xE0, 0x20, 0xC8, + 0x22, 0xE0, 0x06, 0x07, 0x34, 0x10, 0xE0, 0x23, + 0x14, 0xE0, 0x31, 0x16, 0x60, 0xC1, 0x6A, 0x09, + 0x60, 0x21, 0x12, 0xE0, 0x2C, 0x16, 0xA0, 0x06, + 0x0E, 0xE2, 0x31, 0x10, 0xA0, 0xD2, 0xA8, 0xE3, + 0x2E, 0x10, 0xA0, 0xE3, 0x12, 0xE0, 0xA0, 0x06, + 0x0E, 0xE2, 0x64, 0xC1, 0x06, 0x00, 0x60, 0x21, + 0x0C, 0xE0, 0x25, 0x13, 0x20, 0x88, 0x0E, 0x07, + 0xDC, 0x06, 0x14, 0x16, 0x20, 0x88, 0x10, 0x07, + 0xDE, 0x06, 0x10, 0x16, 0x20, 0x88, 0x12, 0x07, + 0xE0, 0x06, 0x0C, 0x16, 0x20, 0x98, 0xCE, 0x06, + 0xCF, 0x06, 0x15, 0x13, 0x20, 0x06, 0xCE, 0x06, + 0x12, 0x16, 0x60, 0xE3, 0x1A, 0xE0, 0xA0, 0xD2, + 0x0C, 0xE0, 0x0D, 0x10, 0x60, 0xE3, 0x1E, 0xE0, + 0x20, 0xC8, 0x32, 0xE0, 0x06, 0x07, 0xA0, 0x06, + 0x3E, 0xD7, 0x08, 0x02, 0x48, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0xA0, 0xD2, 0xA9, 0xE3, 0x60, 0x04, + 0xBA, 0xCE, 0x22, 0x88, 0x0E, 0x00, 0x6C, 0x09, + 0xC9, 0x1A, 0x0B, 0x1B, 0x22, 0x88, 0x10, 0x00, + 0x6E, 0x09, 0xC4, 0x1A, 0x06, 0x1B, 0x22, 0x88, + 0x12, 0x00, 0x70, 0x09, 0xBF, 0x1A, 0x01, 0x1B, + 0x5B, 0x04, 0x60, 0xC1, 0x6C, 0x01, 0x85, 0x02, + 0x43, 0x00, 0xE1, 0x13, 0xE0, 0x93, 0xA8, 0xE3, + 0xDE, 0x16, 0xA0, 0xC8, 0x00, 0xEE, 0x02, 0x00, + 0x84, 0x07, 0x0E, 0x00, 0x42, 0xC1, 0xA0, 0xC0, + 0x6C, 0x01, 0x02, 0xC0, 0x25, 0x02, 0x48, 0x00, + 0x81, 0x07, 0x60, 0xE2, 0x83, 0x07, 0x14, 0xAE, + 0x60, 0x04, 0x9E, 0xE5, 0x02, 0x02, 0x00, 0xFC, + 0xCA, 0x10, 0x60, 0x01, 0x8E, 0x09, 0x00, 0x80, + 0x06, 0x16, 0x83, 0x07, 0x00, 0x82, 0xA0, 0x06, + 0x2A, 0xD8, 0x60, 0x04, 0xCA, 0xCE, 0x20, 0x98, + 0x0E, 0xE0, 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, + 0xA8, 0xE3, 0x65, 0x06, 0xE0, 0x93, 0xA9, 0xE3, + 0x0D, 0x13, 0xA0, 0x23, 0x08, 0xE0, 0x19, 0x16, + 0xA0, 0x23, 0x10, 0xE0, 0x16, 0x13, 0x60, 0xE3, + 0x1E, 0xE0, 0x20, 0xC8, 0x20, 0xE0, 0x06, 0x07, + 0xA0, 0x06, 0x3E, 0xD7, 0xA0, 0x43, 0x18, 0xE0, + 0xE0, 0x2E, 0x01, 0x00, 0xA0, 0xD2, 0x26, 0xE0, + 0x83, 0x07, 0x10, 0x00, 0xA0, 0x06, 0x2A, 0xD8, + 0xE0, 0x23, 0x14, 0xE0, 0x02, 0x16, 0xA0, 0x06, + 0x18, 0xD7, 0xA0, 0x43, 0x2C, 0xE0, 0x20, 0xC8, + 0x20, 0xE0, 0x24, 0x09, 0x60, 0x04, 0xBA, 0xCE, + 0xA0, 0x06, 0xA8, 0xE5, 0x01, 0x10, 0x03, 0x10, + 0x20, 0x07, 0xA0, 0x09, 0x03, 0x10, 0xA0, 0x07, + 0xA2, 0x09, 0x19, 0x00, 0x60, 0x04, 0xBA, 0xCE, + 0xA0, 0x43, 0x0E, 0xE0, 0xA0, 0xC1, 0x24, 0x09, + 0x02, 0x13, 0x20, 0x06, 0x24, 0x09, 0xE0, 0x23, + 0x14, 0xE0, 0x03, 0x13, 0xA0, 0x23, 0x08, 0xE0, + 0x29, 0x16, 0x20, 0xC2, 0x8A, 0x09, 0xE4, 0x11, + 0x08, 0x02, 0x42, 0x80, 0xA0, 0x06, 0xDA, 0xD4, + 0xA0, 0x23, 0x08, 0xE0, 0x1F, 0x16, 0xA0, 0x23, + 0x10, 0xE0, 0x0A, 0x16, 0x22, 0xC1, 0x02, 0x00, + 0x20, 0x25, 0xA8, 0xE4, 0x23, 0x16, 0x83, 0x07, + 0x20, 0x80, 0xA0, 0x06, 0x2A, 0xD8, 0x12, 0x10, + 0xA0, 0x06, 0x3E, 0xD7, 0xE0, 0x23, 0x14, 0xE0, + 0x02, 0x16, 0xA0, 0x06, 0x18, 0xD7, 0x60, 0xE3, + 0x1E, 0xE0, 0x20, 0xC8, 0x20, 0xE0, 0x06, 0x07, + 0xA0, 0x23, 0x08, 0xE0, 0x03, 0x16, 0xA0, 0x23, + 0x06, 0xE0, 0x51, 0x13, 0x20, 0x98, 0x0E, 0xE0, + 0x65, 0x06, 0x03, 0x16, 0x20, 0xD8, 0xA8, 0xE3, + 0x65, 0x06, 0x22, 0xC1, 0x02, 0x00, 0x20, 0x25, + 0xA8, 0xE4, 0x0E, 0x13, 0x83, 0x07, 0x20, 0x00, + 0xA0, 0x06, 0x2A, 0xD8, 0x22, 0xC8, 0x0E, 0x00, + 0xE6, 0x06, 0x22, 0xC8, 0x10, 0x00, 0xE8, 0x06, + 0x22, 0xC8, 0x12, 0x00, 0xEA, 0x06, 0x37, 0x10, + 0x22, 0x88, 0x0E, 0x00, 0xDC, 0x06, 0x08, 0x16, + 0x22, 0x88, 0x10, 0x00, 0xDE, 0x06, 0x04, 0x16, + 0x22, 0x88, 0x12, 0x00, 0xE0, 0x06, 0x0B, 0x13, + 0x22, 0xC8, 0x0E, 0x00, 0xDC, 0x06, 0x22, 0xC8, + 0x10, 0x00, 0xDE, 0x06, 0x22, 0xC8, 0x12, 0x00, + 0xE0, 0x06, 0x60, 0xE3, 0x14, 0xE0, 0xA0, 0x23, + 0x0E, 0xE0, 0x08, 0x16, 0xA0, 0xC1, 0x24, 0x09, + 0x1A, 0x16, 0x86, 0x07, 0x00, 0x10, 0x06, 0xE8, + 0xD2, 0x06, 0x15, 0x10, 0xA0, 0xE3, 0x0E, 0xE0, + 0xA0, 0x23, 0x08, 0xE0, 0x09, 0x16, 0xA0, 0xE3, + 0x06, 0xE0, 0xE0, 0x04, 0xE6, 0x06, 0xE0, 0x04, + 0xE8, 0x06, 0xE0, 0x04, 0xEA, 0x06, 0x07, 0x10, + 0x08, 0x02, 0x36, 0x80, 0xA0, 0x07, 0xD6, 0x06, + 0x36, 0xD3, 0xA0, 0x06, 0xDA, 0xD4, 0x60, 0x04, + 0xBA, 0xCE, 0x20, 0x98, 0x65, 0x06, 0x10, 0xE0, + 0x03, 0x16, 0x20, 0xD8, 0x0E, 0xE0, 0x65, 0x06, + 0x60, 0x04, 0xBA, 0xCE, 0xE0, 0x23, 0x14, 0xE0, + 0x02, 0x13, 0x60, 0x04, 0xBA, 0xCE, 0x2E, 0x10, + 0xB0, 0x03, 0x20, 0x98, 0xA9, 0xE3, 0x6F, 0x06, + 0x19, 0x16, 0x24, 0xC2, 0x08, 0x00, 0x16, 0x11, + 0xE0, 0xE3, 0x14, 0xE0, 0x83, 0x07, 0x00, 0x00, + 0xA0, 0x06, 0x2A, 0xD8, 0xA0, 0x23, 0x14, 0xE0, + 0x04, 0x13, 0x08, 0x02, 0x06, 0x80, 0xA0, 0x06, + 0xDA, 0xD4, 0x08, 0x02, 0x1E, 0x00, 0xA0, 0x06, + 0xDA, 0xD4, 0xA0, 0x23, 0x08, 0xE0, 0x02, 0x13, + 0xA0, 0x06, 0x18, 0xD7, 0x82, 0xC0, 0x02, 0x16, + 0x60, 0x04, 0xD2, 0xCE, 0x20, 0xE8, 0x1C, 0xEE, + 0xF0, 0x06, 0x20, 0x99, 0x0E, 0xE0, 0x16, 0x00, + 0x05, 0x16, 0xE0, 0x04, 0xEC, 0x06, 0x20, 0x48, + 0x14, 0xE0, 0xF0, 0x06, 0x83, 0x07, 0x01, 0x00, + 0x60, 0x04, 0xB4, 0xCE, 0x64, 0xC2, 0x14, 0x00, + 0x24, 0x02, 0x18, 0x00, 0xC4, 0xC1, 0xC2, 0x61, + 0x27, 0x02, 0xFC, 0xFF, 0x74, 0xC1, 0x85, 0xC1, + 0x45, 0x71, 0x85, 0x02, 0x27, 0x00, 0x46, 0x16, + 0x54, 0xC1, 0x45, 0x02, 0xCF, 0xFF, 0x42, 0x16, + 0xC8, 0x04, 0x64, 0xC1, 0x08, 0x00, 0x06, 0x15, + 0x05, 0x13, 0x24, 0xC2, 0x0E, 0x00, 0x48, 0x02, + 0x00, 0x1F, 0xC8, 0x06, 0x28, 0x02, 0x11, 0x00, + 0x04, 0xA2, 0x18, 0x98, 0x21, 0xEE, 0x32, 0x16, + 0x42, 0xC1, 0x25, 0x02, 0x04, 0x00, 0x47, 0x65, + 0x35, 0xC2, 0x74, 0xCD, 0x48, 0x06, 0xFD, 0x15, + 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC1, 0x04, 0xC8, + 0x6C, 0x01, 0xA0, 0xC1, 0x00, 0xFC, 0x05, 0x13, + 0x20, 0xC8, 0x80, 0xEB, 0x02, 0xFC, 0x06, 0xC1, + 0xF6, 0x10, 0x20, 0xC8, 0x00, 0xEE, 0x02, 0xFC, + 0x02, 0xC8, 0x6C, 0x01, 0x81, 0x07, 0x08, 0xE5, + 0x04, 0xC0, 0x83, 0x07, 0x10, 0x02, 0x84, 0x07, + 0x0E, 0x00, 0x3B, 0x10, 0x84, 0x07, 0x0C, 0x00, + 0xE2, 0xC0, 0x08, 0x00, 0x05, 0x02, 0x00, 0xFC, + 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC0, 0x95, 0xC1, + 0x30, 0x13, 0xD5, 0x04, 0x16, 0x2E, 0x02, 0xC8, + 0x6C, 0x01, 0x2B, 0x10, 0xA0, 0xC8, 0x22, 0xEE, + 0x0E, 0x00, 0xA0, 0xC8, 0x24, 0xEE, 0x10, 0x00, + 0xA0, 0xC8, 0x26, 0xEE, 0x12, 0x00, 0x83, 0x07, + 0x06, 0x80, 0x60, 0x04, 0xB4, 0xCE, 0x60, 0x04, + 0xD2, 0xCE, 0x84, 0x07, 0x10, 0x00, 0x85, 0x07, + 0x34, 0x00, 0x09, 0x10, 0x84, 0x07, 0x12, 0x00, + 0x85, 0x07, 0x32, 0x00, 0x04, 0x10, 0x84, 0x07, + 0x14, 0x00, 0x85, 0x07, 0x38, 0x00, 0xA0, 0x06, + 0xC2, 0xD5, 0x85, 0xC8, 0x04, 0x00, 0xA0, 0x06, + 0x10, 0xD6, 0xA0, 0xC8, 0x00, 0xEE, 0x02, 0x00, + 0xA0, 0xC0, 0x6C, 0x01, 0x02, 0xC0, 0x48, 0x06, + 0x48, 0xC1, 0xA0, 0x06, 0xA2, 0xD8, 0x07, 0x02, + 0xA2, 0x06, 0x60, 0xC5, 0x02, 0xFC, 0x25, 0x02, + 0xF4, 0xFF, 0x05, 0xC8, 0x02, 0xFC, 0x20, 0xC2, + 0x6C, 0x01, 0xA0, 0x06, 0xFC, 0xB4, 0x60, 0x04, + 0xB0, 0xCE, 0xA0, 0x06, 0xA2, 0xD8, 0x07, 0x02, + 0xB4, 0x06, 0xEF, 0x10, 0x22, 0x88, 0x12, 0x00, + 0x70, 0x09, 0x08, 0x16, 0x22, 0x88, 0x10, 0x00, + 0x6E, 0x09, 0x04, 0x16, 0x22, 0x88, 0x0E, 0x00, + 0x6C, 0x09, 0x0E, 0x13, 0x22, 0x88, 0x12, 0x00, + 0xE0, 0x06, 0x08, 0x16, 0x22, 0x88, 0x10, 0x00, + 0xDE, 0x06, 0x04, 0x16, 0x22, 0x88, 0x0E, 0x00, + 0xDC, 0x06, 0x01, 0x13, 0xCB, 0x05, 0xCB, 0x05, + 0x5B, 0x04, 0x0B, 0xC3, 0x00, 0x03, 0x02, 0x00, + 0x82, 0x07, 0xC0, 0x00, 0x20, 0xC8, 0x0C, 0x00, + 0xC0, 0x00, 0x20, 0xC8, 0x0E, 0x00, 0xC2, 0x00, + 0x20, 0xC8, 0x10, 0x00, 0xC4, 0x00, 0x20, 0xC8, + 0x12, 0x00, 0xC6, 0x00, 0x20, 0xC8, 0x14, 0x00, + 0xC8, 0x00, 0x20, 0xC8, 0x16, 0x00, 0xCA, 0x00, + 0x20, 0xC8, 0x04, 0x00, 0xCC, 0x00, 0x20, 0xC8, + 0x06, 0x00, 0xCE, 0x00, 0x02, 0xC8, 0x0C, 0x00, + 0xA0, 0x07, 0x0E, 0x00, 0x7E, 0xE6, 0x02, 0xC8, + 0x10, 0x00, 0xA0, 0x07, 0x12, 0x00, 0x88, 0xE6, + 0x02, 0xC8, 0x14, 0x00, 0xA0, 0x07, 0x16, 0x00, + 0xB8, 0xE6, 0x02, 0xC8, 0x04, 0x00, 0xA0, 0x07, + 0x06, 0x00, 0xCE, 0xE6, 0x60, 0x01, 0x1C, 0x01, + 0x04, 0x00, 0x09, 0x16, 0xE0, 0x01, 0x40, 0x01, + 0x00, 0x08, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, + 0xE0, 0x01, 0x40, 0x01, 0x00, 0x04, 0xA0, 0x06, + 0x8E, 0xE9, 0x05, 0x02, 0x00, 0x80, 0x05, 0xD8, + 0x80, 0x04, 0xC7, 0x04, 0x00, 0x03, 0x0F, 0x00, + 0x88, 0x07, 0x00, 0x10, 0x09, 0x02, 0x00, 0x20, + 0x8A, 0x07, 0xE6, 0xE6, 0x03, 0x02, 0x3E, 0xE6, + 0x5A, 0x04, 0x00, 0x03, 0x00, 0x00, 0x20, 0xD2, + 0x87, 0x01, 0x06, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x20, 0xC2, 0x8A, 0x01, 0x08, 0x02, 0x00, 0x1A, + 0x60, 0xC2, 0xAE, 0x00, 0x48, 0xDA, 0x80, 0x04, + 0x89, 0x05, 0x89, 0x02, 0x06, 0x00, 0x07, 0x15, + 0x88, 0x07, 0x00, 0x80, 0x48, 0xDA, 0x80, 0x04, + 0x09, 0xC8, 0xAE, 0x00, 0x80, 0x03, 0xE0, 0x02, + 0xA0, 0x00, 0x5C, 0x04, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x01, 0x9C, 0x01, 0x20, 0x00, 0xE2, 0x13, + 0x20, 0xC2, 0x8C, 0x01, 0x08, 0x02, 0x00, 0x1C, + 0xE3, 0x10, 0x00, 0x03, 0x00, 0x00, 0x60, 0x01, + 0x40, 0x01, 0x00, 0x40, 0xEC, 0x16, 0xA0, 0x01, + 0x40, 0x01, 0x00, 0x40, 0x08, 0x02, 0x00, 0x02, + 0xD7, 0x10, 0xB3, 0xC0, 0x92, 0x06, 0xFD, 0x10, + 0xB3, 0xC0, 0x48, 0xC0, 0x72, 0xCC, 0x72, 0xCC, + 0x32, 0xC1, 0x44, 0xCC, 0x72, 0xDC, 0x04, 0x06, + 0xFD, 0x16, 0x5B, 0x04, 0x48, 0xC0, 0x02, 0x02, + 0xD0, 0xE9, 0x84, 0x07, 0x06, 0x00, 0xF6, 0x10, + 0x02, 0x02, 0x1E, 0xE6, 0x49, 0xC0, 0x84, 0x07, + 0x06, 0x00, 0xF0, 0x10, 0xB3, 0xC0, 0x32, 0xC1, + 0x01, 0x02, 0x01, 0x00, 0x44, 0xD0, 0xC1, 0x06, + 0x44, 0x02, 0xFF, 0x00, 0xE7, 0x10, 0x33, 0xC1, + 0x73, 0xC0, 0x44, 0xD1, 0x44, 0x02, 0xFF, 0x00, + 0x45, 0xDC, 0x04, 0x06, 0xFD, 0x16, 0x5A, 0x04, + 0xA0, 0x06, 0x0E, 0xE9, 0x33, 0xC8, 0x9E, 0x01, + 0x5A, 0x04, 0xA0, 0x06, 0x0C, 0xE7, 0x89, 0xC1, + 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, + 0x8A, 0x01, 0x88, 0xC1, 0xA6, 0x09, 0x66, 0x02, + 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, 0xC2, 0x04, + 0xC7, 0xC1, 0x03, 0x16, 0x02, 0x06, 0xFC, 0x16, + 0x4D, 0x10, 0x5A, 0x04, 0xA0, 0x06, 0x58, 0xE8, + 0x89, 0xC1, 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, + 0x06, 0xC8, 0x8A, 0x01, 0x88, 0xC1, 0xA6, 0x09, + 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, + 0x33, 0xC8, 0x9E, 0x01, 0xE8, 0x10, 0x33, 0x8A, + 0x02, 0x00, 0x38, 0x16, 0x73, 0x8A, 0x02, 0x00, + 0x35, 0x16, 0x5A, 0x04, 0x20, 0x8A, 0xCA, 0xE9, + 0x02, 0x00, 0x30, 0x16, 0x60, 0x8A, 0xCE, 0xE9, + 0x02, 0x00, 0x2C, 0x16, 0x82, 0x07, 0x74, 0xEA, + 0x01, 0x10, 0xB3, 0xC0, 0x04, 0x02, 0x80, 0x04, + 0x52, 0xD1, 0x03, 0x13, 0x32, 0x9D, 0x22, 0x16, + 0xFB, 0x10, 0x85, 0x07, 0x00, 0x80, 0x05, 0xD8, + 0x80, 0x04, 0xC7, 0x04, 0x5A, 0x04, 0x20, 0xC8, + 0xC0, 0x00, 0x0C, 0x00, 0x20, 0xC8, 0xC2, 0x00, + 0x0E, 0x00, 0x20, 0xC8, 0xC4, 0x00, 0x10, 0x00, + 0x20, 0xC8, 0xC6, 0x00, 0x12, 0x00, 0x20, 0xC8, + 0xC8, 0x00, 0x14, 0x00, 0x20, 0xC8, 0xCA, 0x00, + 0x16, 0x00, 0x20, 0xC8, 0xCC, 0x00, 0x04, 0x00, + 0x20, 0xC8, 0xCE, 0x00, 0x06, 0x00, 0x00, 0x03, + 0x0F, 0x00, 0xCC, 0x05, 0x5C, 0x04, 0xE0, 0x04, + 0x82, 0x01, 0x02, 0x02, 0x18, 0xE6, 0x32, 0xC8, + 0x82, 0x01, 0x32, 0xC8, 0x80, 0x01, 0xA0, 0x06, + 0x24, 0xE8, 0x12, 0xC8, 0x82, 0x01, 0xCA, 0xC2, + 0x84, 0x07, 0xD0, 0x07, 0xE0, 0x04, 0x84, 0x01, + 0x04, 0x06, 0xFC, 0x16, 0x20, 0xC1, 0x84, 0x01, + 0xE9, 0x16, 0x04, 0x02, 0x32, 0x00, 0x85, 0x07, + 0x00, 0x80, 0x05, 0xD8, 0x80, 0x04, 0xC7, 0x04, + 0x60, 0xC1, 0x86, 0x01, 0x04, 0x06, 0xFC, 0x16, + 0x20, 0xC1, 0x84, 0x01, 0x5B, 0x04, 0xB3, 0xC0, + 0xB3, 0xC4, 0x5B, 0x04, 0x48, 0xC0, 0xB3, 0xC0, + 0x73, 0xA0, 0x42, 0xC4, 0x5B, 0x04, 0x33, 0x88, + 0x84, 0x01, 0xE6, 0x16, 0x5A, 0x04, 0x89, 0xC1, + 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, + 0x8A, 0x01, 0x5B, 0x04, 0xC5, 0x04, 0xA0, 0x07, + 0x9C, 0x01, 0x40, 0x00, 0x60, 0x01, 0x9C, 0x01, + 0x40, 0x00, 0x03, 0x13, 0x05, 0x06, 0xF7, 0x16, + 0x5C, 0x04, 0x5B, 0x04, 0xA0, 0x06, 0xAC, 0xE8, + 0x60, 0xC0, 0x40, 0x01, 0x05, 0xC8, 0x40, 0x01, + 0x02, 0xC5, 0x01, 0xC8, 0x40, 0x01, 0x5A, 0x04, + 0xA0, 0x06, 0xAC, 0xE8, 0x08, 0xA1, 0xF4, 0x10, + 0xB3, 0xC0, 0x33, 0xC1, 0x60, 0xC1, 0x40, 0x01, + 0x85, 0x01, 0x00, 0x04, 0xC5, 0x01, 0x00, 0x10, + 0x5B, 0x04, 0x08, 0xC1, 0x09, 0xC2, 0x44, 0xC2, + 0x5B, 0x04, 0x05, 0x02, 0xC8, 0x00, 0x05, 0x06, + 0xFE, 0x16, 0x5B, 0x04, 0x33, 0xC1, 0x03, 0xC0, + 0xC4, 0xC0, 0x5B, 0x04, 0xC0, 0xC0, 0x5B, 0x04, + 0xE0, 0x94, 0x9E, 0x01, 0xC2, 0x16, 0xC3, 0x05, + 0x5B, 0x04, 0x73, 0xC0, 0xA0, 0x06, 0x26, 0xE9, + 0x2D, 0x02, 0x08, 0x00, 0x85, 0x07, 0x08, 0x00, + 0x71, 0x9F, 0xB7, 0x16, 0x05, 0x06, 0xFC, 0x16, + 0x5A, 0x04, 0x02, 0x02, 0x24, 0xE6, 0x60, 0x04, + 0x10, 0xE7, 0xE9, 0x8C, 0x04, 0x00, 0xAD, 0x16, + 0x5B, 0x04, 0x20, 0xC1, 0x80, 0x01, 0x85, 0x07, + 0xD0, 0x07, 0xE0, 0x01, 0x80, 0x01, 0x00, 0x04, + 0x45, 0x06, 0xFE, 0x16, 0x04, 0xC8, 0x80, 0x01, + 0x5B, 0x04, 0x33, 0xC1, 0x48, 0xC3, 0x04, 0xC1, + 0x04, 0x13, 0x2D, 0x02, 0x00, 0x04, 0x04, 0x06, + 0xFC, 0x16, 0x5B, 0x04, 0x8D, 0xC3, 0xA0, 0x06, + 0x26, 0xE9, 0x8D, 0xC1, 0xA6, 0x09, 0x66, 0x02, + 0x40, 0x00, 0x86, 0xC7, 0x5A, 0x04, 0x8D, 0xC1, + 0xA6, 0x09, 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, + 0x8A, 0x01, 0x5B, 0x04, 0x8D, 0xC1, 0xA6, 0x09, + 0x66, 0x02, 0x40, 0x00, 0x06, 0xC8, 0x8C, 0x01, + 0x5B, 0x04, 0x4D, 0xC0, 0x04, 0x02, 0x28, 0x00, + 0x85, 0x07, 0x00, 0x55, 0x60, 0x04, 0x34, 0xE7, + 0x4D, 0xC0, 0xB3, 0xC0, 0x32, 0xC1, 0x60, 0x04, + 0xF8, 0xE6, 0x33, 0xC1, 0x60, 0x01, 0x1C, 0x01, + 0x04, 0x00, 0x01, 0x16, 0x5B, 0x04, 0xC4, 0xC0, + 0x5B, 0x04, 0x89, 0x07, 0x66, 0xE5, 0x39, 0xC2, + 0x07, 0x13, 0x39, 0xC6, 0x39, 0x86, 0x25, 0x16, + 0x39, 0xC6, 0x39, 0x86, 0x22, 0x16, 0xF7, 0x10, + 0x02, 0x02, 0xAC, 0xE9, 0xC4, 0x04, 0xC5, 0x04, + 0x39, 0xC2, 0x02, 0x13, 0x60, 0x04, 0xE8, 0xE9, + 0x02, 0x02, 0xBA, 0xE9, 0xC4, 0x04, 0x39, 0xC2, + 0x03, 0x13, 0x79, 0xC1, 0x60, 0x04, 0xE8, 0xE9, + 0x02, 0x02, 0xCA, 0xE9, 0xC5, 0x04, 0x39, 0xC2, + 0x03, 0x13, 0x39, 0xC1, 0x60, 0x04, 0xE8, 0xE9, + 0x79, 0xC0, 0xB9, 0xC0, 0x81, 0x60, 0xC2, 0x05, + 0x12, 0x09, 0xF1, 0x04, 0x02, 0x06, 0xFD, 0x16, + 0x5B, 0x04, 0x5C, 0x04, 0x01, 0x02, 0xAA, 0xAA, + 0x01, 0xC6, 0x44, 0xE0, 0x45, 0x40, 0x58, 0x80, + 0xF8, 0x16, 0x01, 0x02, 0x14, 0x00, 0x01, 0x06, + 0xFE, 0x16, 0x01, 0x02, 0x55, 0x55, 0x01, 0xC6, + 0x44, 0xE0, 0x45, 0x40, 0x58, 0x80, 0xED, 0x16, + 0x52, 0x04, 0xE0, 0x02, 0xA0, 0x00, 0x88, 0x07, + 0xC0, 0x00, 0x09, 0x02, 0x62, 0xEA, 0x84, 0x07, + 0x2A, 0xE6, 0x05, 0x02, 0x01, 0x00, 0x8B, 0xC2, + 0xCC, 0x04, 0xA0, 0x06, 0x6C, 0xEA, 0x60, 0x2C, + 0x01, 0x00, 0x99, 0x06, 0xA0, 0x2C, 0x02, 0x00, + 0x99, 0x06, 0x20, 0x2D, 0x04, 0x00, 0x99, 0x06, + 0x20, 0x2E, 0x08, 0x00, 0x99, 0x06, 0xA0, 0x2F, + 0x10, 0x00, 0x8C, 0x05, 0x09, 0x16, 0x80, 0xCC, + 0x81, 0xC4, 0x83, 0x07, 0xB0, 0xEA, 0x88, 0xC0, + 0x02, 0x04, 0x8C, 0x05, 0x01, 0x16, 0x33, 0x10, + 0xE0, 0x02, 0xA0, 0x00, 0x5A, 0x04, 0x8C, 0x05, + 0xFB, 0x16, 0x80, 0xCC, 0x81, 0xC4, 0x15, 0x0A, + 0xB4, 0xC0, 0x12, 0xC0, 0x88, 0xCC, 0x52, 0xC0, + 0xB4, 0xC4, 0x42, 0x06, 0x5B, 0x04, 0x2D, 0x07, + 0x18, 0x00, 0x41, 0x8B, 0x0A, 0x00, 0xEC, 0x16, + 0xC1, 0x82, 0xEA, 0x16, 0xC2, 0x02, 0x42, 0x02, + 0x00, 0x02, 0xE6, 0x16, 0x80, 0x03, 0x81, 0x07, + 0x01, 0x00, 0xF1, 0x10, 0x01, 0x02, 0x02, 0x00, + 0xEE, 0x10, 0x01, 0x02, 0x04, 0x00, 0xEB, 0x10, + 0x01, 0x02, 0x08, 0x00, 0xE8, 0x10, 0x01, 0x02, + 0x10, 0x00, 0xE5, 0x10, 0xA1, 0x02, 0x41, 0x8B, + 0x10, 0x00, 0x02, 0x13, 0x60, 0x04, 0x5C, 0xEA, + 0x2D, 0x07, 0x18, 0x00, 0x80, 0x03, 0x09, 0x02, + 0x00, 0x08, 0x03, 0x02, 0x04, 0x00, 0xC7, 0x04, + 0xA0, 0x06, 0xDC, 0xEB, 0x60, 0x01, 0x1C, 0x01, + 0x04, 0x00, 0x1C, 0x16, 0xA0, 0x01, 0x40, 0x01, + 0x00, 0x08, 0xE0, 0x01, 0x40, 0x01, 0x00, 0x10, + 0x04, 0x02, 0x01, 0x00, 0x44, 0xCE, 0xC4, 0x06, + 0x44, 0xC6, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x10, + 0x49, 0x06, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x40, + 0xE0, 0x01, 0x40, 0x01, 0x00, 0x04, 0xE0, 0x01, + 0x40, 0x01, 0x00, 0x08, 0xA0, 0x06, 0x7A, 0xEC, + 0xA0, 0x06, 0x7A, 0xEC, 0xC7, 0x05, 0x04, 0x02, + 0xE4, 0xE4, 0xE0, 0x04, 0xD0, 0x03, 0x74, 0xC1, + 0xB4, 0xC1, 0x86, 0x05, 0x1C, 0x13, 0xE0, 0x02, + 0xC0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xC0, + 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC1, 0x40, 0xC1, + 0x80, 0xC1, 0xC0, 0xC1, 0x00, 0xC2, 0x40, 0xC2, + 0x80, 0xC2, 0xC0, 0xC2, 0x00, 0xC3, 0x40, 0xC3, + 0x80, 0xC3, 0xC0, 0xC3, 0xA0, 0x04, 0xAA, 0x00, + 0xD0, 0x03, 0xD0, 0x03, 0x3F, 0x10, 0x85, 0x05, + 0x85, 0x81, 0xE1, 0x13, 0xE4, 0x10, 0xC7, 0x05, + 0x05, 0x02, 0xFF, 0x7F, 0x45, 0xA1, 0xD0, 0x03, + 0xD0, 0x03, 0x34, 0x10, 0xC0, 0xCC, 0xC1, 0xC4, + 0x03, 0x02, 0x28, 0x00, 0xA0, 0x06, 0xDC, 0xEB, + 0xE0, 0x01, 0x42, 0x01, 0x00, 0x10, 0xC7, 0x05, + 0xD0, 0x03, 0xD0, 0x03, 0x27, 0x10, 0xC7, 0x05, + 0xA0, 0xC1, 0x4A, 0x01, 0xA0, 0x07, 0x4A, 0x01, + 0x00, 0x0E, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x02, + 0x20, 0x07, 0x44, 0x01, 0x60, 0xC1, 0x44, 0x01, + 0x85, 0x02, 0x00, 0xFF, 0x17, 0x16, 0xE0, 0x01, + 0x40, 0x01, 0x00, 0x22, 0x05, 0x02, 0xC0, 0x00, + 0x05, 0x06, 0xD0, 0x03, 0xFD, 0x16, 0x60, 0xC1, + 0x46, 0x01, 0x85, 0x02, 0x00, 0xFF, 0x0A, 0x13, + 0x05, 0x02, 0x93, 0x33, 0x05, 0x06, 0x00, 0x10, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xD0, 0x03, 0xF8, 0x16, 0x51, 0x10, 0x06, 0xC8, + 0x4A, 0x01, 0xC0, 0xCC, 0xC1, 0xC4, 0x4B, 0x10, + 0x13, 0xC0, 0xC8, 0xCC, 0x53, 0xC0, 0x02, 0x02, + 0xEC, 0xEB, 0xC2, 0xC4, 0x43, 0x06, 0x5B, 0x04, + 0x60, 0xC0, 0xAE, 0x00, 0xC4, 0x02, 0x44, 0x02, + 0x0F, 0x00, 0x44, 0x88, 0xCA, 0xE4, 0x3C, 0x16, + 0x81, 0x02, 0x08, 0x00, 0x27, 0x13, 0x21, 0xC1, + 0xDC, 0xE4, 0x14, 0xC1, 0x21, 0x21, 0xBA, 0xE4, + 0x33, 0x16, 0x21, 0xC1, 0xC2, 0xE4, 0x81, 0x02, + 0x00, 0x00, 0x0B, 0x13, 0x0D, 0x02, 0xA0, 0x00, + 0x84, 0x83, 0x09, 0x13, 0xC4, 0x05, 0x84, 0x83, + 0x06, 0x13, 0xC4, 0x05, 0x84, 0x83, 0x03, 0x13, + 0x23, 0x10, 0x0E, 0x81, 0x21, 0x16, 0x21, 0xC1, + 0xDC, 0xE4, 0x21, 0x45, 0xBA, 0xE4, 0xE0, 0x01, + 0x42, 0x01, 0x00, 0x10, 0xA0, 0x01, 0x42, 0x01, + 0x00, 0x10, 0xA1, 0xC3, 0xD4, 0xE4, 0x0F, 0x02, + 0x2F, 0x00, 0x80, 0x03, 0xA0, 0x01, 0x40, 0x01, + 0x00, 0x02, 0xA0, 0x01, 0x40, 0x01, 0x00, 0x80, + 0x6D, 0xC0, 0x0A, 0x00, 0x09, 0x13, 0x81, 0x02, + 0x5C, 0x12, 0x06, 0x1B, 0x0E, 0x02, 0xD2, 0xEB, + 0x0F, 0x02, 0x0F, 0x00, 0x80, 0x03, 0xCA, 0x05, + 0xE0, 0x02, 0xA0, 0x00, 0x5A, 0x04, 0x59, 0xCE, + 0x20, 0x88, 0xE4, 0xE4, 0xE4, 0xE4, 0xF8, 0x10, + 0xC1, 0x04, 0x48, 0x62, 0x89, 0x05, 0xA0, 0xC0, + 0x6C, 0x01, 0x08, 0xC8, 0x6C, 0x01, 0x03, 0x02, + 0x00, 0xFC, 0x04, 0x02, 0x00, 0x02, 0x73, 0xA0, + 0x04, 0x06, 0xFD, 0x16, 0x88, 0x05, 0x09, 0x06, + 0xF4, 0x16, 0x02, 0xC8, 0x6C, 0x01, 0x81, 0x86, + 0x02, 0x16, 0xD0, 0x03, 0xCB, 0x05, 0x5B, 0x04, + 0x43, 0x28, 0x31, 0x29, 0x38, 0x39, 0x2D, 0x33, + 0x38, 0x38, 0x42, 0x20, 0x20, 0x59, 0x49, 0x54, + 0x4B, 0xC2, 0xA8, 0x02, 0x98, 0x00, 0x83, 0x07, + 0x02, 0x00, 0x28, 0x02, 0x08, 0x00, 0x23, 0xC6, + 0x36, 0xE5, 0x48, 0x06, 0xC4, 0xC0, 0x73, 0x0A, + 0x65, 0x17, 0xA0, 0x06, 0xAA, 0xED, 0xC8, 0xC1, + 0xC7, 0x05, 0x03, 0x02, 0xA5, 0x00, 0xB0, 0x03, + 0xF8, 0xCD, 0xF8, 0xCD, 0xA6, 0x02, 0x06, 0x62, + 0x88, 0x02, 0x0A, 0x00, 0x57, 0x16, 0x03, 0x29, + 0x55, 0x16, 0x05, 0x29, 0xC4, 0x80, 0x52, 0x16, + 0x15, 0x09, 0x50, 0x17, 0x15, 0x09, 0x4E, 0x18, + 0x85, 0x02, 0x29, 0x00, 0x4B, 0x16, 0xC6, 0x05, + 0x96, 0x00, 0x03, 0x07, 0xC4, 0x04, 0x45, 0x06, + 0x95, 0x00, 0x44, 0x05, 0x43, 0x16, 0x44, 0x81, + 0x41, 0x16, 0x00, 0x03, 0x05, 0x00, 0xC4, 0x02, + 0x00, 0x03, 0x0A, 0x00, 0x44, 0x02, 0x0F, 0x00, + 0x84, 0x02, 0x05, 0x00, 0x37, 0x16, 0xC4, 0x02, + 0x00, 0x03, 0x0F, 0x00, 0x44, 0x02, 0x0F, 0x00, + 0x84, 0x02, 0x0A, 0x00, 0x2F, 0x16, 0x04, 0x02, + 0xFE, 0xFF, 0x2C, 0x13, 0x2B, 0x15, 0x2A, 0x1A, + 0x84, 0x05, 0x28, 0x12, 0x27, 0x15, 0x26, 0x1A, + 0x25, 0x18, 0x84, 0x05, 0x23, 0x16, 0x22, 0x1B, + 0x21, 0x17, 0x84, 0x05, 0x1F, 0x13, 0x1E, 0x1A, + 0x1D, 0x11, 0x04, 0x06, 0x1B, 0x16, 0xA5, 0x02, + 0xC5, 0xC1, 0x25, 0x02, 0x06, 0x00, 0x03, 0x02, + 0xA5, 0xA5, 0x83, 0xC1, 0x95, 0x00, 0x03, 0x38, + 0x94, 0x00, 0x83, 0x02, 0x2E, 0x6B, 0x0E, 0x16, + 0x84, 0x02, 0x59, 0x1C, 0x0B, 0x16, 0x24, 0x02, + 0x69, 0x00, 0x95, 0x00, 0x03, 0x3C, 0x94, 0x00, + 0x83, 0x81, 0x04, 0x16, 0x84, 0x02, 0x69, 0x00, + 0x01, 0x16, 0xC9, 0x05, 0x59, 0x04, 0xC3, 0xD0, + 0xFD, 0x13, 0x01, 0x1C, 0xFB, 0x10, 0xE0, 0x90, + 0x3D, 0xE5, 0xF8, 0x16, 0xC3, 0x06, 0xC3, 0xD0, + 0xF5, 0x1C, 0xF4, 0x16, 0xE0, 0x90, 0x3A, 0xE5, + 0xF1, 0x16, 0x5B, 0x04, 0x0B, 0xC3, 0x09, 0x02, + 0x3E, 0xE5, 0xA0, 0x06, 0x92, 0xE9, 0xCC, 0x05, + 0x5C, 0x04, 0x88, 0x07, 0x00, 0xA0, 0x89, 0x07, + 0xFE, 0xFF, 0xA8, 0x09, 0xA9, 0x09, 0x8A, 0x07, + 0x02, 0xE0, 0xA0, 0x06, 0x84, 0xEC, 0x00, 0x00, + 0x88, 0x07, 0x00, 0x90, 0x89, 0x07, 0xFE, 0x9F, + 0xA8, 0x09, 0xA9, 0x09, 0x8A, 0x07, 0x78, 0xE0, + 0xA0, 0x06, 0x84, 0xEC, 0x00, 0x00, 0xA0, 0x06, + 0xC4, 0xEC, 0x00, 0x00, 0xE6, 0x10, 0xE5, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x08, 0x11, 0xE3, 0x6C, 0xCC, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0xF0, 0xFF, 0x00, 0xF0, 0x0F, 0x00, + 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0x00, + 0xC3, 0x00, 0xE7, 0xE7, 0xF3, 0xE7, 0xF1, 0xF1, + 0x43, 0x28, 0x20, 0x29, 0x4F, 0x43, 0x59, 0x50, + 0x49, 0x52, 0x48, 0x47, 0x20, 0x54, 0x42, 0x49, + 0x20, 0x4D, 0x39, 0x31, 0x33, 0x38, 0x34, 0x2C, + 0x35, 0x2C, 0x36, 0x2C, 0x43, 0x28, 0x20, 0x29, + 0x4F, 0x43, 0x59, 0x50, 0x49, 0x52, 0x48, 0x47, + 0x20, 0x54, 0x49, 0x54, 0x31, 0x20, 0x38, 0x39, + 0x2D, 0x33, 0x39, 0x38, 0x39, 0x2C, 0x2D, 0x30, + 0x38, 0x39, 0x00, 0x00, 0x61, 0x9B, 0xC4, 0xEC, + 0x0E, 0xEA, 0xDE, 0xE5, 0xC8, 0xED, 0x00, 0x00, + 0xC4, 0x00, 0xB8, 0xAF, 0x4A, 0x06, 0x50, 0x06, + 0x4C, 0x06, 0xDC, 0xCC, 0x4E, 0x06, 0x0F, 0x00, + 0x32, 0x06, 0x01, 0x00, 0x50, 0x07, 0x58, 0x07, + 0x52, 0x07, 0x70, 0xB5, 0x54, 0x07, 0x0F, 0x00, + 0x38, 0x07, 0x01, 0x00, 0xBA, 0x00, 0xA0, 0x00, + 0xBC, 0x00, 0xD6, 0xED, 0xBE, 0x00, 0x0F, 0x00, + 0x5E, 0x07, 0x3A, 0x07, 0x62, 0x07, 0x40, 0x80, + 0x64, 0x07, 0x54, 0xBA, 0x66, 0x07, 0x36, 0xBA, + 0x68, 0x07, 0x40, 0xB8, 0x98, 0x07, 0x00, 0x80, + 0x78, 0x07, 0x00, 0x80, 0xE2, 0x08, 0x04, 0x00, + 0xE4, 0x08, 0x01, 0x00, 0xEC, 0x08, 0x08, 0x00, + 0xF6, 0x08, 0x0A, 0x00, 0xF8, 0x08, 0x06, 0x00, + 0x00, 0x09, 0x0C, 0x00, 0x02, 0x09, 0x04, 0x00, + 0xAE, 0x01, 0x00, 0x00, 0x1E, 0x09, 0x00, 0x00, + 0x66, 0x09, 0x00, 0x00, 0x0C, 0x06, 0x13, 0x00, + 0x0A, 0x06, 0x20, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0x86, 0xA3, 0xE0, 0x00, 0xE6, 0xA2, 0xE0, 0x00, + 0x86, 0xA3, 0xE0, 0x00, 0x02, 0xA5, 0xE0, 0x00, + 0x5E, 0xA6, 0xE0, 0x00, 0x66, 0xA9, 0xE0, 0x00, + 0x12, 0xA4, 0xC0, 0x00, 0x22, 0xA4, 0xE0, 0x00, + 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xC0, 0x00, + 0x74, 0xA4, 0xE0, 0x00, 0x86, 0xA3, 0xE0, 0x00, + 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xE0, 0x00, + 0x86, 0xA3, 0xE0, 0x00, 0x86, 0xA3, 0xC0, 0x00, + 0xDE, 0xAF, 0xC0, 0x00, 0x48, 0xB0, 0xC0, 0x00, + 0x84, 0xB0, 0xC0, 0x00, 0xF4, 0xB0, 0xC0, 0x00, + 0x76, 0xB1, 0xE0, 0x00, 0xE4, 0xB2, 0xE0, 0x00, + 0x8A, 0xB2, 0xE0, 0x00, 0xF4, 0xB3, 0xE0, 0x00, + 0x7C, 0xB3, 0xE0, 0x00, 0xC6, 0xAA, 0xC0, 0x00, + 0x36, 0xAB, 0xC0, 0x00, 0x90, 0xAB, 0xC0, 0x00, + 0xC2, 0xAB, 0xC0, 0x00, 0xEA, 0xAA, 0xC0, 0x00, + 0x80, 0xA3, 0xC0, 0x00, 0x80, 0xA3, 0x00, 0x3F, + 0x00, 0x7F, 0x00, 0x5E, 0x30, 0x00, 0x28, 0x00, + 0x43, 0x00, 0xB6, 0xA6, 0xB6, 0xA6, 0x1C, 0xA5, + 0x14, 0xA5, 0x46, 0xA5, 0x46, 0xA5, 0x62, 0xA5, + 0xB6, 0xA6, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x10, + 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x10, 0x00, + 0x14, 0x00, 0x0E, 0x10, 0x0C, 0x0C, 0x0A, 0x0A, + 0x0A, 0x0A, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x98, 0x07, 0x7E, 0xCA, 0x58, 0x07, + 0xF8, 0xB8, 0x58, 0x07, 0xFE, 0xB7, 0x58, 0x07, + 0x68, 0xB9, 0x58, 0x07, 0xD0, 0xB8, 0x98, 0x07, + 0x5A, 0xC7, 0x98, 0x07, 0x52, 0xC7, 0x78, 0x07, + 0xC2, 0xC1, 0x58, 0x07, 0x30, 0xB9, 0x98, 0x07, + 0x38, 0xCA, 0x78, 0x07, 0x96, 0xC2, 0x58, 0x07, + 0x6A, 0xC7, 0x58, 0x07, 0xE0, 0xB8, 0x58, 0x07, + 0x1E, 0xB9, 0x58, 0x07, 0xE2, 0xB9, 0x98, 0x07, + 0xAE, 0xCB, 0x98, 0x07, 0x8E, 0xC7, 0x78, 0x07, + 0x56, 0xC2, 0xB8, 0x07, 0x14, 0xCC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA2, 0xBA, 0x16, 0xC1, + 0xCA, 0xC1, 0xD6, 0xC6, 0x8A, 0xBD, 0xC2, 0xBD, + 0xE0, 0xBD, 0x6A, 0xBE, 0x8E, 0xBE, 0xAA, 0xBE, + 0x22, 0xBF, 0x22, 0xBF, 0x56, 0xBE, 0xC8, 0xBF, + 0x10, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, + 0x00, 0x0C, 0x01, 0x0F, 0xFF, 0xFE, 0x00, 0x58, + 0x00, 0x0E, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x70, + 0x40, 0x80, 0x00, 0x5E, 0xA0, 0xC0, 0xDF, 0xFF, + 0x00, 0x18, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x50, + 0x00, 0x60, 0x00, 0x70, 0x00, 0x0C, 0x06, 0x00, + 0x00, 0x00, 0x84, 0xE3, 0xE6, 0x07, 0xF4, 0x07, + 0x08, 0x00, 0x00, 0x00, 0x8A, 0xE3, 0xEA, 0x07, + 0xF4, 0x07, 0x06, 0x00, 0x40, 0x00, 0x00, 0x0A, + 0xE6, 0x07, 0xEE, 0x07, 0x08, 0x00, 0x40, 0x00, + 0x06, 0x0A, 0xEA, 0x07, 0xEE, 0x07, 0x00, 0x00, + 0xE2, 0xC1, 0x8B, 0xD4, 0xFF, 0xFF, 0xD7, 0xD1, + 0xD9, 0xC5, 0xD4, 0xC3, 0x3B, 0x59, 0x34, 0x09, + 0xFC, 0x05, 0x6C, 0x09, 0xD8, 0x06, 0x06, 0x04, + 0xBA, 0xEA, 0x30, 0x09, 0x48, 0x04, 0x80, 0x08, + 0x06, 0x00, 0x0A, 0x06, 0x0E, 0x0C, 0xBA, 0xCE, + 0x2E, 0xE0, 0x56, 0xE0, 0x50, 0xE1, 0x66, 0xE2, + 0xEC, 0xE2, 0x4C, 0xE3, 0xFE, 0xE3, 0xBA, 0xCE, + 0x80, 0xE4, 0x10, 0xE4, 0x14, 0xE0, 0x1C, 0xE4, + 0x1C, 0xE4, 0x46, 0xE5, 0x50, 0xE5, 0x5A, 0xE5, + 0xBA, 0xCE, 0xA6, 0xDC, 0xBA, 0xCE, 0x44, 0xDA, + 0xE6, 0xDF, 0x70, 0xDA, 0xDE, 0xDE, 0xB0, 0xCE, + 0x16, 0xDB, 0x3A, 0xDD, 0xB8, 0xDD, 0x34, 0xDE, + 0x58, 0xDE, 0x16, 0xDB, 0xDA, 0xDC, 0x08, 0xCF, + 0xB0, 0xCE, 0xA8, 0xD9, 0x8A, 0xD9, 0x44, 0xD9, + 0xB0, 0xCE, 0xEA, 0xDE, 0xB0, 0xCE, 0x72, 0x06, + 0xF6, 0xD2, 0x08, 0x07, 0x72, 0x06, 0x54, 0xD2, + 0xF4, 0x01, 0x72, 0x06, 0x34, 0xD2, 0x08, 0x07, + 0x7C, 0x06, 0x5A, 0xDC, 0x04, 0x00, 0x7C, 0x06, + 0x78, 0xD2, 0x00, 0x00, 0x7C, 0x06, 0xCC, 0xDE, + 0xFA, 0x00, 0x86, 0x06, 0xAC, 0xD1, 0x05, 0x00, + 0x90, 0x06, 0x1C, 0xDF, 0x28, 0x00, 0x90, 0x06, + 0x50, 0xD3, 0x04, 0x01, 0x90, 0x06, 0x00, 0x00, + 0x02, 0x00, 0x90, 0x06, 0x80, 0xD2, 0xBC, 0x02, + 0x9A, 0x06, 0x06, 0xD3, 0xDC, 0x05, 0x9A, 0x06, + 0xAA, 0xD2, 0x64, 0x00, 0x9A, 0x06, 0x0A, 0xD3, + 0x14, 0x00, 0x9A, 0x06, 0xE2, 0xE0, 0x40, 0x06, + 0x9A, 0x06, 0x12, 0xD3, 0x64, 0x00, 0x7C, 0x06, + 0x16, 0xDC, 0x04, 0x00, 0x7C, 0x06, 0xE6, 0xDA, + 0x16, 0x00, 0x7C, 0x06, 0xFA, 0xDB, 0x05, 0x00, + 0x7C, 0x06, 0x00, 0xDD, 0x14, 0x00, 0x9A, 0x06, + 0x7C, 0xD3, 0x14, 0x00, 0x9A, 0x06, 0x38, 0xD4, + 0x02, 0x00, 0x7C, 0x06, 0x0C, 0xE0, 0x19, 0x00, + 0x00, 0x00, 0x0A, 0x07, 0x0E, 0x07, 0x04, 0x07, + 0xD8, 0x06, 0x00, 0x07, 0xF0, 0x06, 0xEE, 0x06, + 0xEC, 0x06, 0x0C, 0x07, 0xE6, 0x06, 0x18, 0x07, + 0x92, 0x09, 0x94, 0x09, 0x96, 0x09, 0x98, 0x09, + 0x00, 0x50, 0xCC, 0x00, 0x03, 0x00, 0x00, 0x84, + 0x00, 0xA8, 0x00, 0xA0, 0x00, 0x20, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x10, 0x82, 0xEC, 0x48, 0xEB, + 0x62, 0xEB, 0x7C, 0xEB, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x09, 0x00, 0xEA, 0xEB, + 0x52, 0xEB, 0x68, 0xEB, 0x82, 0xEB, 0x40, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x42, 0x01, 0x00, 0x00, + 0x7F, 0x00, 0xA0, 0x00, 0xFF, 0x00, 0x10, 0x02, + 0x1F, 0x02, 0x30, 0x02, 0x3F, 0x02, 0x50, 0x02, + 0x5F, 0x02, 0x70, 0x02, 0x7F, 0x02, 0x90, 0x02, + 0x9F, 0x02, 0xB0, 0x02, 0xBF, 0x02, 0xD0, 0x02, + 0xDF, 0x02, 0xE1, 0x02, 0xFF, 0x02, 0x01, 0x03, + 0x7F, 0x03, 0x81, 0x03, 0x8F, 0x03, 0x91, 0x03, + 0x9F, 0x03, 0xA1, 0x03, 0xAF, 0x03, 0xB1, 0x03, + 0xBF, 0x03, 0xC1, 0x03, 0xCF, 0x03, 0xE1, 0x03, + 0xFF, 0x03, 0xC0, 0x07, 0xFF, 0x07, 0x00, 0x0C, + 0xFF, 0x0F, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBC, 0xFE, 0x07, 0x00, 0x5E, 0x02, + 0x00, 0x01, 0xFF, 0xBA, 0x80, 0xBA, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x0A, 0x01, + 0x0E, 0x01, 0x10, 0x01, 0x14, 0x01, 0x00, 0x00, + 0x12, 0x01, 0x00, 0xF8, 0x16, 0x01, 0x00, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x1C, 0x01, + 0x82, 0x01, 0x66, 0x96, 0x66, 0x96, 0x55, 0x55, + 0x00, 0x00, 0x82, 0x01, 0x2A, 0x8A, 0x2A, 0x8A, + 0x18, 0xC9, 0x18, 0xC9, 0x86, 0x01, 0xAA, 0xA2, + 0x1E, 0xA0, 0x55, 0x55, 0x1E, 0x54, 0x8A, 0x01, + 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, + 0x8C, 0x01, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, + 0x00, 0x00, 0x8E, 0x01, 0x00, 0x50, 0x00, 0x00, + 0x00, 0xA8, 0x00, 0x00, 0x90, 0x01, 0x00, 0x50, + 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x92, 0x01, + 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, + 0x94, 0x01, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, + 0x00, 0x00, 0x96, 0x01, 0x00, 0x50, 0x00, 0x00, + 0x00, 0xA8, 0x00, 0x00, 0x98, 0x01, 0x00, 0x50, + 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x9A, 0x01, + 0x00, 0x50, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, + 0x9C, 0x01, 0x55, 0x55, 0xC0, 0x7F, 0xAA, 0xAA, + 0xC0, 0x7F, 0x00, 0x00, 0xA2, 0x01, 0xA4, 0x01, + 0xA8, 0x01, 0xAA, 0x01, 0xAE, 0x01, 0xB0, 0x01, + 0xB2, 0x01, 0x80, 0x01, 0x00, 0x00, 0x88, 0x01, + 0x00, 0xFF, 0x9E, 0x01, 0xFF, 0x00, 0xA0, 0x01, + 0x00, 0x80, 0xAC, 0x01, 0x00, 0x80, 0x00, 0x00, + 0xA6, 0x01, 0x00, 0x80, 0x00, 0x00, 0x80, 0x01, + 0xBC, 0x01, 0x00, 0x88, 0x00, 0x06, 0x00, 0xC8, + 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x02, 0x00, 0x44, 0x00, 0x92, 0xEA, + 0x48, 0x00, 0x98, 0xEA, 0x50, 0x00, 0x9E, 0xEA, + 0x60, 0x00, 0xA4, 0xEA, 0x78, 0x00, 0xAA, 0xEA, + 0x0A, 0xE8, 0x18, 0xE7, 0x3C, 0xEA, 0x2A, 0xE7, + 0x14, 0x55, 0xA0, 0x01, 0xEC, 0xE6, 0xD0, 0xE9, + 0x46, 0xE7, 0xA0, 0xE7, 0x00, 0xE7, 0x58, 0xE8, + 0x00, 0x00, 0x1E, 0x00, 0x46, 0xE7, 0x92, 0xE7, + 0x00, 0x41, 0x01, 0x41, 0xB6, 0xE7, 0x73, 0xEA, + 0x18, 0xE7, 0x48, 0xEA, 0xEC, 0xE6, 0x04, 0xEA, + 0x56, 0xE7, 0x62, 0xE7, 0xB6, 0xE7, 0x6E, 0xEA, + 0x62, 0xE8, 0x00, 0x00, 0x36, 0xE8, 0xEC, 0xE6, + 0xFA, 0xE9, 0x56, 0xE7, 0x62, 0xE7, 0x36, 0xE8, + 0x62, 0xE8, 0x00, 0x00, 0xEC, 0xE6, 0xF0, 0xE9, + 0x0C, 0xE7, 0x4A, 0xE7, 0x62, 0xE7, 0x36, 0xE8, + 0xEC, 0xE6, 0xFA, 0xE9, 0x56, 0xE7, 0x62, 0xE7, + 0x36, 0xE8, 0x62, 0xE8, 0x00, 0x20, 0x2A, 0xE7, + 0x14, 0x55, 0xA0, 0x01, 0x18, 0xE7, 0x50, 0xEA, + 0xEC, 0xE6, 0xD0, 0xE9, 0x58, 0xE8, 0x50, 0x55, + 0x0C, 0x00, 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x01, + 0x00, 0x00, 0xB6, 0xE7, 0x75, 0xEA, 0x00, 0xE7, + 0x58, 0xE8, 0x55, 0x55, 0x0C, 0x00, 0x56, 0xE7, + 0xA0, 0xE7, 0x00, 0xE7, 0x58, 0xE8, 0xFF, 0xFF, + 0x08, 0x00, 0x58, 0xE8, 0x02, 0x10, 0x06, 0x00, + 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x01, 0x01, 0x01, + 0xB6, 0xE7, 0x80, 0xEA, 0x00, 0xE7, 0x58, 0xE8, + 0x00, 0xC0, 0x08, 0x00, 0x58, 0xE8, 0xFF, 0xFF, + 0x0A, 0x00, 0x58, 0xE8, 0xFF, 0xFF, 0x0C, 0x00, + 0x58, 0xE8, 0x0D, 0x10, 0x06, 0x00, 0x46, 0xE7, + 0x92, 0xE7, 0x00, 0x01, 0x01, 0x01, 0xB6, 0xE7, + 0x74, 0xEA, 0x62, 0xE8, 0x08, 0x20, 0x00, 0xE7, + 0x52, 0xE8, 0x82, 0x01, 0x02, 0xC9, 0x46, 0xE7, + 0xB6, 0xE7, 0x80, 0xEA, 0x62, 0xE8, 0x34, 0x20, + 0x00, 0xE7, 0x58, 0xE8, 0x00, 0x10, 0x06, 0x00, + 0x46, 0xE7, 0xC6, 0xE8, 0xB6, 0xE7, 0x78, 0xEA, + 0x52, 0xE8, 0x9C, 0x01, 0x40, 0x00, 0x18, 0xE7, + 0x50, 0xEA, 0x2A, 0xE7, 0xFF, 0x00, 0x80, 0x07, + 0x26, 0xE9, 0x03, 0x00, 0x66, 0xE9, 0x74, 0xE9, + 0x12, 0xEA, 0x38, 0xE9, 0x00, 0x00, 0x74, 0xE9, + 0x1C, 0xEA, 0x38, 0xE9, 0x04, 0x00, 0x74, 0xE9, + 0x24, 0xEA, 0x38, 0xE9, 0x07, 0x00, 0x74, 0xE9, + 0x2C, 0xEA, 0x26, 0xE9, 0x01, 0x00, 0x74, 0xE9, + 0x34, 0xEA, 0x38, 0xE9, 0x02, 0x00, 0x74, 0xE9, + 0x34, 0xEA, 0x38, 0xE9, 0x06, 0x00, 0x74, 0xE9, + 0x34, 0xEA, 0x38, 0xE9, 0x05, 0x00, 0x74, 0xE9, + 0x34, 0xEA, 0x26, 0xE9, 0x01, 0x00, 0x4A, 0xE9, + 0x26, 0xE9, 0x03, 0x00, 0x58, 0xE9, 0x62, 0xE7, + 0xE6, 0xE8, 0xD8, 0xE9, 0x01, 0x00, 0xE6, 0xE8, + 0x25, 0xEA, 0x02, 0x00, 0xE6, 0xE8, 0x2F, 0xEA, + 0x06, 0x00, 0xE6, 0xE8, 0x3A, 0xEA, 0x05, 0x00, + 0xB6, 0xE7, 0x74, 0xEA, 0x36, 0xE8, 0xEC, 0xE6, + 0xD0, 0xE9, 0x56, 0xE7, 0xC6, 0xE8, 0x0C, 0xE7, + 0x92, 0xE7, 0x00, 0x01, 0x00, 0x80, 0xB6, 0xE7, + 0x78, 0xEA, 0x00, 0xE7, 0xFE, 0xE8, 0x52, 0xE8, + 0x80, 0x01, 0x41, 0x8E, 0x4A, 0xE7, 0x92, 0xE7, + 0x00, 0x01, 0x01, 0x1B, 0x06, 0xE9, 0xE4, 0xFF, + 0xB6, 0xE7, 0x7C, 0xEA, 0xBE, 0xE8, 0x18, 0xE7, + 0x56, 0xEA, 0x0C, 0xE7, 0x6A, 0xE8, 0x3C, 0xE7, + 0x00, 0xE0, 0xC6, 0xE8, 0xB6, 0xE7, 0x86, 0xEA, + 0x3C, 0xE7, 0x00, 0xE8, 0x62, 0xE7, 0xB6, 0xE7, + 0x85, 0xEA, 0x3C, 0xE7, 0x00, 0x08, 0xC6, 0xE8, + 0xB6, 0xE7, 0x86, 0xEA, 0x3C, 0xE7, 0x00, 0xF8, + 0x62, 0xE7, 0xB6, 0xE7, 0x85, 0xEA, 0x52, 0xE8, + 0x80, 0x01, 0x00, 0x02, 0x3C, 0xE7, 0x00, 0xE0, + 0x62, 0xE7, 0xB6, 0xE7, 0x85, 0xEA, 0x52, 0xE8, + 0x84, 0x01, 0x00, 0x00, 0x62, 0xE8, 0x34, 0x00, + 0x3C, 0xE7, 0x00, 0x00, 0xC6, 0xE8, 0x62, 0xE8, + 0x34, 0x60, 0x0E, 0xE9, 0x52, 0xE8, 0x84, 0x01, + 0x00, 0x00, 0xB6, 0xE7, 0x86, 0xEA, 0x52, 0xE8, + 0x82, 0x01, 0x00, 0xC8, 0x3C, 0xE7, 0x00, 0xE0, + 0xC6, 0xE8, 0x3C, 0xE7, 0x00, 0x10, 0xC6, 0xE8, + 0x62, 0xE8, 0x34, 0x60, 0x52, 0xE8, 0x80, 0x01, + 0x00, 0x06, 0x3C, 0xE7, 0x10, 0x00, 0x78, 0xE8, + 0x36, 0xE8, 0x52, 0xE8, 0x84, 0x01, 0x00, 0x00, + 0x62, 0xE8, 0x34, 0x00, 0xEC, 0xE6, 0xD0, 0xE9, + 0x18, 0xE7, 0x5C, 0xEA, 0xD0, 0xE8, 0x92, 0xE9, + 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xF0, + 0x06, 0x00, 0x00, 0xC7, 0xA0, 0xE7, 0xDC, 0xE8, + 0x00, 0xE0, 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, + 0x40, 0xD0, 0x06, 0x00, 0x00, 0xE0, 0xA0, 0xE7, + 0xDC, 0xE8, 0x00, 0xC0, 0x00, 0xE7, 0x0C, 0xE7, + 0x70, 0xE7, 0x40, 0x90, 0x06, 0x00, 0x00, 0xA0, + 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x80, 0x00, 0xE7, + 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x50, 0x06, 0x00, + 0x00, 0x60, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x40, + 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x10, + 0x06, 0x00, 0x00, 0x20, 0xA0, 0xE7, 0xDC, 0xE8, + 0x00, 0x00, 0xD0, 0xE8, 0x92, 0xE9, 0x00, 0xE7, + 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xD0, 0x06, 0x00, + 0x00, 0xA6, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0xC0, + 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x90, + 0x06, 0x00, 0x00, 0xC0, 0xA0, 0xE7, 0xDC, 0xE8, + 0x00, 0x80, 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, + 0x40, 0x50, 0x06, 0x00, 0x00, 0x40, 0xA0, 0xE7, + 0xDC, 0xE8, 0x00, 0x40, 0x00, 0xE7, 0x0C, 0xE7, + 0x70, 0xE7, 0x40, 0x70, 0x06, 0x00, 0x00, 0x60, + 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x60, 0x7E, 0xE9, + 0x90, 0xE9, 0x18, 0xE7, 0x62, 0xEA, 0xEC, 0xE6, + 0xD0, 0xE9, 0xA4, 0xE8, 0x55, 0x55, 0x16, 0x00, + 0x46, 0xE7, 0x92, 0xE7, 0x00, 0x00, 0x00, 0x00, + 0xB6, 0xE7, 0x8B, 0xEA, 0x0A, 0xE8, 0x18, 0xE7, + 0x62, 0xEA, 0x58, 0xE8, 0x55, 0x55, 0x16, 0x00, + 0x00, 0xE7, 0x46, 0xE7, 0xA0, 0xE7, 0x2A, 0xE7, + 0xFF, 0x00, 0x00, 0x08, 0x2A, 0xE7, 0xFF, 0x00, + 0x00, 0x0C, 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x10, + 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x14, 0x2A, 0xE7, + 0xFF, 0x00, 0x00, 0x18, 0x2A, 0xE7, 0xFF, 0x00, + 0x00, 0x1C, 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x20, + 0x2A, 0xE7, 0xFF, 0x00, 0x00, 0x24, 0x2A, 0xE7, + 0xFF, 0x00, 0x00, 0x28, 0x2A, 0xE7, 0xFF, 0x00, + 0x00, 0x2C, 0xD2, 0xE7, 0x00, 0xE7, 0x0C, 0xE7, + 0x70, 0xE7, 0x40, 0x30, 0x06, 0x00, 0x00, 0x01, + 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x20, 0x00, 0xE7, + 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0x70, 0x06, 0x00, + 0x00, 0x43, 0xA0, 0xE7, 0xDC, 0xE8, 0x00, 0x60, + 0x00, 0xE7, 0x0C, 0xE7, 0x70, 0xE7, 0x40, 0xB0, + 0x06, 0x00, 0x00, 0x85, 0xA0, 0xE7, 0xDC, 0xE8, + 0x00, 0xA0, 0xD8, 0xE8, 0x00, 0x01, 0x03, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x81, 0x1A, 0x00, + 0x40, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x72, 0x82, + 0x4A, 0xA9, 0xA5, 0x5A, 0xDA, 0xE7, 0x03, 0x09, + 0x11, 0x9D, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, + 0xD8, 0x90, 0x00, 0x10, 0x00, 0x00, 0x00, 0x81, + 0x04, 0x00, 0xD8, 0x90, 0xD8, 0xB4, 0x00, 0x00, + 0x00, 0x81, 0x08, 0x00, 0xD8, 0x90, 0x46, 0x16, + 0x00, 0x40, 0xD8, 0xB4, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x13, 0x00, 0x40, 0x10, 0x16, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x15, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x15, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x0F, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x0A, 0x80, + 0x40, 0x9E, 0x00, 0xC8, 0x00, 0x00, 0x5E, 0x80, + 0x0F, 0x00, 0x06, 0x80, 0x40, 0xFE, 0x00, 0xCC, + 0x00, 0x00, 0x04, 0x80, 0x40, 0x8E, 0x00, 0xC9, + 0x04, 0x80, 0x00, 0x06, 0x00, 0xCC, 0x04, 0x80, + 0x40, 0x0A, 0x00, 0xC8, 0x0A, 0x80, 0x40, 0x8A, + 0x00, 0xC8, 0x00, 0x00, 0x5E, 0x80, 0x0F, 0x00, + 0x0A, 0x08, 0x80, 0x1C, 0x0A, 0x00, 0x1C, 0x1A, + 0x00, 0x80, 0x1C, 0x0C, 0x00, 0x80, 0x1C, 0x1A, + 0x00, 0x80, 0x1A, 0x0E, 0x80, 0x1C, 0x04, 0x00, + 0x00, 0x80, 0x80, 0x02, 0x02, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x58, 0x07, 0x0C, 0xB8, + 0x16, 0xE0, 0xE2, 0x08, 0xEC, 0x08, 0xF6, 0x08, + 0x16, 0xE0, 0x00, 0x09, 0x0A, 0x09, 0x00, 0x00, + 0x00, 0x00, 0xE2, 0x08, 0x00, 0x00, 0xEC, 0x08, + 0xF6, 0x08, 0x00, 0x09, 0x00, 0x00, 0xB8, 0x07, + 0xCA, 0xCB, 0x80, 0x02, 0xB8, 0x07, 0xE8, 0xCB, + 0x84, 0xFF, 0xB8, 0x07, 0x0A, 0xCC, 0xB8, 0x07, + 0x84, 0xCC, 0x6E, 0xCD, 0x62, 0xCD, 0x88, 0xCD, + 0x90, 0xCE, 0x84, 0xCD, 0x92, 0xCE, 0x92, 0xCE, + 0x92, 0xCE, 0x8C, 0xCD, 0x96, 0xCD, 0x38, 0xCE, + 0x82, 0xCE, 0x92, 0xCE, 0x92, 0xCE, 0x92, 0xCE, + 0x92, 0xCE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x08, 0x01, 0x05, 0x08, + 0x08, 0x08, 0x03, 0x08, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x00, 0x04, 0x02, 0x04, 0x04, 0x00, 0x04, + 0x0A, 0x08, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x1A, 0x00, 0x00, + 0x04, 0x41, 0x06, 0x0B, 0x08, 0xC2, 0x00, 0xE6, + 0x00, 0xE7, 0x04, 0x06, 0x04, 0x07, 0x04, 0x03, + 0x06, 0x04, 0x04, 0x05, 0x04, 0x88, 0x04, 0xCF, + 0x04, 0xCD, 0x03, 0x00, 0x05, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0x80, 0xD2, 0xD8, 0xDA, 0xD8, + 0x1E, 0xD9, 0xDE, 0xD8, 0xEA, 0xD8, 0xF0, 0xD8, + 0x14, 0xD9, 0xE4, 0xD8, 0x32, 0xD9, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x07, 0x0A, 0x0E, 0x0F, 0x14, + 0x26, 0x2A, 0x52, 0x42, 0x50, 0x48, 0x5D, 0x4D, + 0x62, 0x62, 0x6D, 0x57, 0x46, 0x39, 0x1A, 0x1D, + 0x7C, 0x76, 0x1F, 0x23, 0x15, 0x1D, 0x74, 0x6F, + 0x84, 0x7C, 0x8B, 0x82, 0x92, 0x89, 0x00, 0x00, + 0x32, 0x2F, 0x3F, 0x34, 0x32, 0x01, 0x01, 0x57, + 0x32, 0x11, 0x81, 0x51, 0x02, 0x56, 0x03, 0x55, + 0x54, 0x11, 0x56, 0x81, 0x55, 0x02, 0x54, 0x02, + 0x56, 0x81, 0x01, 0x76, 0x02, 0x34, 0x02, 0x55, + 0x81, 0x54, 0x02, 0x58, 0x02, 0x55, 0x81, 0x54, + 0x02, 0x58, 0x11, 0x12, 0x02, 0x52, 0x58, 0x83, + 0x52, 0x05, 0x83, 0x04, 0x02, 0x58, 0x08, 0x55, + 0x58, 0x83, 0x55, 0x02, 0x81, 0x02, 0x05, 0x58, + 0x03, 0x52, 0x5C, 0x15, 0x53, 0x5B, 0x52, 0x87, + 0x11, 0x03, 0x41, 0x51, 0x78, 0x51, 0x34, 0x11, + 0x81, 0x11, 0x20, 0x31, 0x54, 0x57, 0x01, 0x53, + 0x5A, 0x12, 0x81, 0x51, 0x20, 0x31, 0x5B, 0x57, + 0x01, 0x5A, 0x01, 0x11, 0x51, 0x11, 0x31, 0x81, + 0x57, 0x20, 0x15, 0x01, 0x13, 0x01, 0x11, 0x01, + 0x11, 0x11, 0x81, 0x51, 0x05, 0x58, 0x02, 0x52, + 0x5B, 0x54, 0x5D, 0x81, 0x52, 0x05, 0x54, 0x02, + 0x58, 0x81, 0x50, 0x02, 0x13, 0x03, 0x58, 0x81, + 0x50, 0x02, 0x11, 0x03, 0x81, 0x54, 0x72, 0x5D, + 0x50, 0x03, 0x13, 0x03, 0x13, 0x01, 0x40, 0x54, + 0x0E, 0x00, 0x20, 0x06, 0x56, 0x06, 0x0C, 0xDA, + 0x24, 0x00, 0x02, 0x10, 0x16, 0x00, 0x02, 0x00, + 0x01, 0x04, 0x08, 0x07, 0x0C, 0xDA, 0x20, 0x00, + 0x03, 0x10, 0x12, 0x00, 0x03, 0x00, 0x4E, 0xD9, + 0x14, 0x8E, 0x20, 0x00, 0x04, 0x10, 0x12, 0x00, + 0x04, 0x00, 0xD2, 0xCE, 0x20, 0x00, 0x05, 0xE0, + 0x12, 0x00, 0x05, 0x00, 0xD2, 0xCE, 0x20, 0x00, + 0x06, 0xE0, 0x12, 0x00, 0x06, 0x00, 0xE8, 0xDD, + 0x12, 0x00, 0x01, 0xE0, 0x6C, 0x09, 0xCC, 0x06, + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x30, 0x06, + 0x42, 0xDC, 0xF0, 0x05, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE2, 0x05, 0x08, 0x00, + 0x26, 0xFF, 0xDC, 0x05, 0x00, 0x00, 0x30, 0x06, + 0xF8, 0xDB, 0x1E, 0x00, 0x01, 0xE0, 0x10, 0x00, + 0x11, 0x30, 0x0C, 0x04, 0x01, 0x00, 0x0E, 0x04, + 0x02, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x32, 0xDD, 0x12, 0x00, 0x01, 0xE0, + 0x04, 0x00, 0x13, 0x30, 0x74, 0xDE, 0x3E, 0x00, + 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x02, 0x00, + 0x30, 0x00, 0x20, 0x50, 0x23, 0x0C, 0xFC, 0x05, + 0x52, 0x06, 0x56, 0x06, 0x00, 0x00, 0x00, 0x81, + 0x16, 0x00, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x2A, 0x40, 0x2A, 0x04, + 0x56, 0x06, 0x26, 0x00, 0x19, 0xED, 0x2B, 0x06, + 0x72, 0x09, 0x22, 0x00, 0x24, 0x00, 0x2F, 0xED, + 0x23, 0x0C, 0xFC, 0x05, 0x28, 0x08, 0x34, 0x09, + 0x29, 0x08, 0x58, 0x07, 0x78, 0x07, 0x98, 0x07, + 0x23, 0x00, 0x2A, 0x00, 0x3D, 0xED, 0x06, 0x04, + 0xF0, 0x06, 0x07, 0x04, 0xEE, 0x06, 0x24, 0x00, + 0xD2, 0xCE, 0x34, 0x00, 0x00, 0xE0, 0x00, 0xC0, + 0x00, 0x00, 0x10, 0x00, 0x26, 0x00, 0x25, 0x40, + 0xD2, 0xCE, 0x20, 0x00, 0x00, 0xE0, 0x00, 0xC0, + 0x00, 0x00, 0x10, 0x00, 0x12, 0x00, 0x26, 0x40, + 0xD2, 0xCE, 0x1A, 0x00, 0x00, 0xE0, 0x0C, 0x00, + 0x27, 0x60, 0x0A, 0x08, 0xE6, 0x06, 0xD2, 0xCE, + 0x24, 0x00, 0x00, 0xE0, 0x16, 0x00, 0x28, 0x60, + 0x30, 0x04, 0x06, 0x07, 0x52, 0xCF, 0x00, 0x81, + 0x30, 0x00, 0x00, 0xE0, 0x22, 0x00, 0x29, 0x60, + 0x2D, 0x08, 0x1C, 0x07, 0x2E, 0x08, 0x22, 0x07, + 0x00, 0x00, 0x08, 0x02, 0x06, 0x01, 0x14, 0x06, + 0x18, 0x08, 0x20, 0x0C, 0x26, 0x0E, 0x30, 0x0F, + 0x34, 0x11, 0x3E, 0x12, 0x42, 0x14, 0x46, 0x16, + 0x1C, 0x0A, 0x4A, 0x18, 0x13, 0x03, 0x11, 0x83, + 0x01, 0x11, 0x11, 0x81, 0x12, 0x81, 0x13, 0x01, + 0x52, 0x83, 0x81, 0x85, 0x85, 0x11, 0x12, 0x81, + 0x12, 0x81, 0x19, 0x81, 0x60, 0x85, 0x00, 0xC0, + 0x00, 0x00, 0x08, 0x00, 0x6C, 0x09, 0x00, 0x00, + 0x30, 0x06, 0x08, 0xE5, 0x54, 0x06, 0x50, 0x06, + 0x38, 0x02, 0x21, 0x04, 0x1E, 0x09, 0x0B, 0x06, + 0xD8, 0x06, 0x02, 0x08, 0xDC, 0x06, 0x00, 0xC0, + 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x41, 0x00, + 0x14, 0xAE, 0x00, 0x00, 0x00, 0x81, 0x09, 0x04, + 0x0C, 0x07, 0x41, 0x00, 0x41, 0x00, 0x14, 0x02, + 0x00, 0x00, 0x00, 0x81, 0x0B, 0x06, 0xD8, 0x06, + 0x2C, 0x06, 0x76, 0x09, 0x22, 0x14, 0x3A, 0x09, + 0x41, 0x00, 0x41, 0x00, 0x54, 0x02, 0x00, 0x00, + 0x00, 0x81, 0xD8, 0x06, 0x00, 0x84, 0x00, 0x48, + 0xFC, 0xFF, 0x09, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0x20, 0x00, + 0x43, 0x28, 0x31, 0x29, 0x38, 0x39, 0x2D, 0x33, + 0x39, 0x38, 0x39, 0x2C, 0x2D, 0x30, 0x38, 0x39, + 0x54, 0x20, 0x78, 0x65, 0x73, 0x61, 0x49, 0x20, + 0x73, 0x6E, 0x72, 0x74, 0x6D, 0x75, 0x6E, 0x65, + 0x73, 0x74, 0x28, 0x0A, 0x29, 0x43, 0x39, 0x31, + 0x33, 0x38, 0x34, 0x2C, 0x35, 0x2C, 0x36, 0x2C, + 0x49, 0x20, 0x4D, 0x42, 0x43, 0x20, 0x72, 0x6F, + 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x34, 0x90, + 0x00, 0x00, 0xFA, 0xFF, 0x01, 0x00, 0xB8, 0xFF, + 0x00, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x80, 0x00, + 0x3E, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif /* CONFIG_TMS380TR */ |